Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
cubicweb
cubes
email
Commits
af0bee5495e4
Commit
36be6030
authored
Jul 07, 2010
by
Sylvain Thénault
Browse files
pkginfo cleanup, setuptools support
parent
090fc60bb09b
Changes
5
Hide whitespace changes
Inline
Side-by-side
__pkginfo__.py
View file @
af0bee54
...
...
@@ -8,28 +8,10 @@ numversion = (1, 7, 1)
version
=
'.'
.
join
(
str
(
num
)
for
num
in
numversion
)
license
=
'LGPL'
author
=
"Logilab"
author_email
=
"contact@logilab.fr"
web
=
'http://www.cubicweb.org/project/%s'
%
distname
short_desc
=
"email component for the CubicWeb framework"
long_desc
=
"""
\
This cube models multipart email messages (`Emails` and `EmailPart`) and
provides tools to import your mail box into a cubicweb instance.
Email are automatically stored into`EmailThreads`.
"""
# used packages
__depends__
=
{
'cubicweb'
:
'>= 3.6.0'
,
'cubicweb-file'
:
'>= 1.6.0'
}
__recommends__
=
{
'cubicweb-comment'
:
None
}
# XXX cw < 3.8 bw compat
__use__
=
(
'file'
,)
__recommend__
=
(
'comment'
,)
description
=
"email component for the CubicWeb framework"
classifiers
=
[
'Environment :: Web Environment'
,
'Framework :: CubicWeb'
,
...
...
@@ -37,31 +19,33 @@ classifiers = [
'Programming Language :: JavaScript'
,
]
# used packages
__depends__
=
{
'cubicweb'
:
'>= 3.9.0'
,
'cubicweb-file'
:
'>= 1.6.0'
}
__recommends__
=
{
'cubicweb-comment'
:
None
}
# packaging ###
from
os
import
listdir
as
_listdir
from
os.path
import
join
,
isdir
from
glob
import
glob
THIS_CUBE_DIR
=
join
(
'share'
,
'cubicweb'
,
'cubes'
,
modname
)
def
listdir
(
dirpath
):
return
[
join
(
dirpath
,
fname
)
for
fname
in
_listdir
(
dirpath
)
if
fname
[
0
]
!=
'.'
and
not
fname
.
endswith
(
'.pyc'
)
and
not
fname
.
endswith
(
'~'
)]
CUBES_DIR
=
join
(
'share'
,
'cubicweb'
,
'cubes'
)
THIS_CUBE_DIR
=
join
(
CUBES_DIR
,
modname
)
try
:
data_files
=
[
# common files
[
THIS_CUBE_DIR
,
[
fname
for
fname
in
glob
(
'*.py'
)
if
fname
!=
'setup.py'
]],
]
# check for possible extended cube layout
for
dirname
in
(
'entities'
,
'views'
,
'sobjects'
,
'hooks'
,
'schema'
,
'data'
,
'i18n'
,
'migration'
):
if
isdir
(
dirname
):
data_files
.
append
([
join
(
THIS_CUBE_DIR
,
dirname
),
listdir
(
dirname
)])
# Note: here, you'll need to add subdirectories if you want
# them to be included in the debian package
except
OSError
:
# we are in an installed directory
pass
and
not
fname
.
endswith
(
'~'
)
and
not
isdir
(
join
(
dirpath
,
fname
))]
data_files
=
[
# common files
[
THIS_CUBE_DIR
,
[
fname
for
fname
in
glob
(
'*.py'
)
if
fname
!=
'setup.py'
]],
]
# check for possible extended cube layout
for
dirname
in
(
'entities'
,
'views'
,
'sobjects'
,
'hooks'
,
'schema'
,
'data'
,
'i18n'
,
'migration'
,
'wdoc'
):
if
isdir
(
dirname
):
data_files
.
append
([
join
(
THIS_CUBE_DIR
,
dirname
),
listdir
(
dirname
)])
# Note: here, you'll need to add subdirectories if you want
# them to be included in the debian package
debian/control
View file @
af0bee54
...
...
@@ -9,7 +9,7 @@ Homepage: http://www.cubicweb.org/project/cubicweb-email
Package: cubicweb-email
Architecture: all
Depends: cubicweb-common (>= 3.
6
.0), cubicweb-file (>= 1.6.0)
Depends: cubicweb-common (>= 3.
9
.0), cubicweb-file (>= 1.6.0)
Description: email component for the CubicWeb framework
This CubicWeb component models email messages.
.
...
...
debian/rules
View file @
af0bee54
...
...
@@ -7,7 +7,7 @@
build: build-stamp
build-stamp:
dh_testdir
python setup.py -q build
NO_SETUPTOOLS=1
python setup.py -q build
touch build-stamp
clean:
...
...
@@ -24,7 +24,7 @@ install: build
dh_testroot
dh_clean -k
dh_installdirs -i
python setup.py -q install --no-compile --prefix=debian/cubicweb-email/usr/
NO_SETUPTOOLS=1
python setup.py -q install --no-compile --prefix=debian/cubicweb-email/usr/
cp doc/*.html doc/*.txt debian/cubicweb-email/usr/share/doc/cubicweb-email/
rm -rf debian/cubicweb-email/usr/lib/python*
...
...
schema.py
View file @
af0bee54
...
...
@@ -31,7 +31,7 @@ class Email(EntityType):
cc
=
SubjectRelation
(
'EmailAddress'
)
parts
=
SubjectRelation
(
'EmailPart'
,
cardinality
=
'*1'
,
composite
=
'subject'
)
attachment
=
SubjectRelation
(
'File'
)
# XXX Image should be there until it inherits from File
attachment
=
SubjectRelation
(
'File'
)
reply_to
=
SubjectRelation
(
'Email'
,
cardinality
=
'?*'
)
cites
=
SubjectRelation
(
'Email'
)
...
...
setup.py
View file @
af0bee54
#!/usr/bin/env python
# pylint: disable-msg=W0404,W0622,W0704,W0613,W0152
# Copyright (c) 2003-2004 LOGILAB S.A. (Paris, FRANCE).
# http://www.logilab.fr/ -- mailto:contact@logilab.fr
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation; either version 2 of the License, or (at your option) any later
# version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along with
# this program; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
""" Generic Setup script, takes package info from __pkginfo__.py file """
from
distutils.core
import
setup
# copyright 2003-2010 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
__docformat__
=
"restructuredtext en"
import
os
import
sys
import
shutil
from
os.path
import
isdir
,
exists
,
join
,
walk
try
:
if
os
.
environ
.
get
(
'NO_SETUPTOOLS'
):
raise
ImportError
()
from
setuptools
import
setup
from
setuptools.command
import
install_lib
USE_SETUPTOOLS
=
1
except
ImportError
:
from
distutils.core
import
setup
from
distutils.command
import
install_lib
USE_SETUPTOOLS
=
0
sys
.
modules
.
pop
(
'__pkginfo__'
,
None
)
# import required features
from
__pkginfo__
import
dist
name
,
version
,
license
,
short_desc
,
long_desc
,
\
from
__pkginfo__
import
mod
name
,
version
,
license
,
description
,
\
web
,
author
,
author_email
# import optional features
try
:
from
__pkginfo__
import
data_files
except
ImportError
:
data_files
=
None
try
:
from
__pkginfo__
import
include_dirs
except
ImportError
:
include_dirs
=
[]
import
__pkginfo__
distname
=
getattr
(
__pkginfo__
,
'distname'
,
modname
)
scripts
=
getattr
(
__pkginfo__
,
'scripts'
,
[])
data_files
=
getattr
(
__pkginfo__
,
'data_files'
,
None
)
include_dirs
=
getattr
(
__pkginfo__
,
'include_dirs'
,
[])
ext_modules
=
getattr
(
__pkginfo__
,
'ext_modules'
,
None
)
dependency_links
=
getattr
(
__pkginfo__
,
'dependency_links'
,
[])
STD_BLACKLIST
=
(
'CVS'
,
'.svn'
,
'.hg'
,
'debian'
,
'dist'
,
'build'
)
IGNORED_EXTENSIONS
=
(
'.pyc'
,
'.pyo'
,
'.elc'
,
'~'
)
if
exists
(
'README'
):
long_description
=
file
(
'README'
).
read
()
else
:
long_description
=
''
if
USE_SETUPTOOLS
:
requires
=
{}
for
entry
in
(
"__depends__"
,
"__recommends__"
):
requires
.
update
(
getattr
(
__pkginfo__
,
entry
,
{}))
install_requires
=
[(
"%s %s"
%
(
d
,
v
and
v
or
""
)).
strip
()
for
d
,
v
in
requires
.
iteritems
()]
else
:
install_requires
=
[]
def
ensure_scripts
(
linux_scripts
):
"""Creates the proper script names required for each platform
(taken from 4Suite)
"""
from
distutils
import
util
if
util
.
get_platform
()[:
3
]
==
'win'
:
scripts_
=
[
script
+
'.bat'
for
script
in
linux_scripts
]
else
:
scripts_
=
linux_scripts
return
scripts_
def
get_packages
(
directory
,
prefix
):
"""return a list of subpackages for the given directory"""
result
=
[]
for
package
in
os
.
listdir
(
directory
):
absfile
=
join
(
directory
,
package
)
if
isdir
(
absfile
):
if
exists
(
join
(
absfile
,
'__init__.py'
))
or
\
package
in
(
'test'
,
'tests'
):
if
prefix
:
result
.
append
(
'%s.%s'
%
(
prefix
,
package
))
else
:
result
.
append
(
package
)
result
+=
get_packages
(
absfile
,
result
[
-
1
])
return
result
def
export
(
from_dir
,
to_dir
,
blacklist
=
STD_BLACKLIST
,
ignore_ext
=
IGNORED_EXTENSIONS
,
verbose
=
True
):
"""make a mirror of from_dir in to_dir, omitting directories and files
listed in the black list
"""
def
make_mirror
(
arg
,
directory
,
fnames
):
"""walk handler"""
for
norecurs
in
blacklist
:
try
:
fnames
.
remove
(
norecurs
)
except
ValueError
:
pass
for
filename
in
fnames
:
# don't include binary files
if
filename
[
-
4
:]
in
ignore_ext
:
continue
if
filename
[
-
1
]
==
'~'
:
continue
src
=
join
(
directory
,
filename
)
dest
=
to_dir
+
src
[
len
(
from_dir
):]
if
verbose
:
print
>>
sys
.
stderr
,
src
,
'->'
,
dest
if
os
.
path
.
isdir
(
src
):
if
not
exists
(
dest
):
os
.
mkdir
(
dest
)
else
:
if
exists
(
dest
):
os
.
remove
(
dest
)
shutil
.
copy2
(
src
,
dest
)
try
:
os
.
mkdir
(
to_dir
)
except
OSError
,
ex
:
# file exists ?
import
errno
if
ex
.
errno
!=
errno
.
EEXIST
:
raise
walk
(
from_dir
,
make_mirror
,
None
)
class
MyInstallLib
(
install_lib
.
install_lib
):
"""extend install_lib command to handle package __init__.py and
include_dirs variable if necessary
"""
def
run
(
self
):
"""overridden from install_lib class"""
install_lib
.
install_lib
.
run
(
self
)
# manually install included directories if any
if
include_dirs
:
base
=
modname
for
directory
in
include_dirs
:
dest
=
join
(
self
.
install_dir
,
base
,
directory
)
export
(
directory
,
dest
,
verbose
=
False
)
def
install
(
**
kwargs
):
"""setup entry point"""
#kwargs['distname'] = modname
return
setup
(
name
=
distname
,
version
=
version
,
license
=
license
,
description
=
short_desc
,
long_description
=
long_desc
,
author
=
author
,
author_email
=
author_email
,
url
=
web
,
data_files
=
data_files
,
**
kwargs
)
if
USE_SETUPTOOLS
:
if
'--force-manifest'
in
sys
.
argv
:
sys
.
argv
.
remove
(
'--force-manifest'
)
# install-layout option was introduced in 2.5.3-1~exp1
elif
sys
.
version_info
<
(
2
,
5
,
4
)
and
'--install-layout=deb'
in
sys
.
argv
:
sys
.
argv
.
remove
(
'--install-layout=deb'
)
kwargs
[
'package_dir'
]
=
{
modname
:
'.'
}
packages
=
[
modname
]
+
get_packages
(
os
.
getcwd
(),
modname
)
if
USE_SETUPTOOLS
and
install_requires
:
kwargs
[
'install_requires'
]
=
install_requires
kwargs
[
'dependency_links'
]
=
dependency_links
kwargs
[
'packages'
]
=
packages
return
setup
(
name
=
distname
,
version
=
version
,
license
=
license
,
description
=
description
,
long_description
=
long_description
,
author
=
author
,
author_email
=
author_email
,
url
=
web
,
scripts
=
ensure_scripts
(
scripts
),
data_files
=
data_files
,
ext_modules
=
ext_modules
,
cmdclass
=
{
'install_lib'
:
MyInstallLib
},
**
kwargs
)
if
__name__
==
'__main__'
:
install
()
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment