Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
fresh
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
cubicweb
cubes
fresh
Commits
2d0870c9ceea
Commit
2d0870c9ceea
authored
14 years ago
by
Sylvain Thénault
Browse files
Options
Downloads
Patches
Plain Diff
pkginfo cleanup, enable setuptools, bump cw dependency
parent
016c22579175
No related branches found
No related tags found
No related merge requests found
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
__pkginfo__.py
+17
-38
17 additions, 38 deletions
__pkginfo__.py
debian/control
+1
-3
1 addition, 3 deletions
debian/control
debian/rules
+2
-2
2 additions, 2 deletions
debian/rules
setup.py
+174
-40
174 additions, 40 deletions
setup.py
with
194 additions
and
83 deletions
__pkginfo__.py
+
17
−
38
View file @
2d0870c9
...
...
@@ -8,9 +8,6 @@
version
=
'
.
'
.
join
(
str
(
num
)
for
num
in
numversion
)
license
=
'
LGPL
'
copyright
=
'''
Copyright (c) 2008-2010 LOGILAB S.A. (Paris, FRANCE).
http://www.logilab.fr/ -- mailto:contact@logilab.fr
'''
author
=
'
Logilab
'
author_email
=
'
contact@logilab.fr
'
...
...
@@ -14,12 +11,7 @@
author
=
'
Logilab
'
author_email
=
'
contact@logilab.fr
'
short_desc
=
'
expense tracking application built on the CubicWeb framework
'
long_desc
=
'''
\
This cube provides a full-featured expense tracking application.
'''
ftp
=
''
description
=
'
expense tracking application built on the CubicWeb framework
'
web
=
'
http://www.cubicweb.org/project/%s
'
%
distname
classifiers
=
[
...
...
@@ -29,16 +21,10 @@
'
Programming Language :: JavaScript
'
,
]
pyversions
=
[
'
2.4
'
]
__depends_cubes__
=
{
'
expense
'
:
'
>= 0.4.4
'
,
'
workcase
'
:
None
,
}
__depends__
=
{
'
cubicweb
'
:
'
>= 3.6.0
'
}
for
key
,
value
in
__depends_cubes__
.
items
():
__depends__
[
'
cubicweb-
'
+
key
]
=
value
__use__
=
tuple
(
__depends_cubes__
)
__recommend__
=
()
__depends__
=
{
'
cubicweb
'
:
'
>= 3.10.0
'
,
'
cubicweb-expense
'
:
'
>= 0.4.4
'
,
'
cubicweb-workcase
'
:
None
,
}
# packaging ###
...
...
@@ -42,6 +28,5 @@
# packaging ###
from
glob
import
glob
from
os
import
listdir
as
_listdir
from
os.path
import
join
,
isdir
...
...
@@ -46,3 +31,4 @@
from
os
import
listdir
as
_listdir
from
os.path
import
join
,
isdir
from
glob
import
glob
...
...
@@ -48,7 +34,5 @@
#from cubicweb.devtools.pkginfo import get_distutils_datafiles
CUBES_DIR
=
join
(
'
share
'
,
'
cubicweb
'
,
'
cubes
'
)
THIS_CUBE_DIR
=
join
(
CUBES_DIR
,
modname
)
THIS_CUBE_DIR
=
join
(
'
share
'
,
'
cubicweb
'
,
'
cubes
'
,
modname
)
def
listdir
(
dirpath
):
return
[
join
(
dirpath
,
fname
)
for
fname
in
_listdir
(
dirpath
)
...
...
@@ -56,18 +40,13 @@
and
not
fname
.
endswith
(
'
~
'
)
and
not
isdir
(
join
(
dirpath
,
fname
))]
from
glob
import
glob
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
'
,
'
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
except
OSError
:
# we are in an installed directory
pass
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
This diff is collapsed.
Click to expand it.
debian/control
+
1
−
3
View file @
2d0870c9
...
...
@@ -9,9 +9,7 @@
Package: cubicweb-fresh
Architecture: all
Conflicts: cubicweb-fresh, erudi-fresh-client, erudi-fresh-server, erudi-fresh-comp
Replaces: cubicweb-fresh, erudi-fresh-client, erudi-fresh-server, erudi-fresh-comp
Depends: cubicweb-common (>= 3.6.0), cubicweb-expense (>= 0.4.4), cubicweb-workcase
Depends: cubicweb-common (>= 3.10.0), cubicweb-expense (>= 0.4.4), cubicweb-workcase
Description: expense tracking application built on the CubicWeb framework
This CubicWeb component provides an expense tracking application.
.
...
...
This diff is collapsed.
Click to expand it.
debian/rules
+
2
−
2
View file @
2d0870c9
...
...
@@ -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:
...
...
@@ -23,7 +23,7 @@
dh_testroot
dh_clean -k
dh_installdirs -i
python setup.py -q install --no-compile --prefix=debian/cubicweb-fresh/usr/
NO_SETUPTOOLS=1
python setup.py -q install --no-compile --prefix=debian/cubicweb-fresh/usr/
# remove generated .egg-info file
rm -rf debian/cubicweb-comment/usr/lib/python*
...
...
This diff is collapsed.
Click to expand it.
setup.py
+
174
−
40
View file @
2d0870c9
#!/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
# pylint: disable=W0142,W0403,W0404,W0613,W0622,W0622,W0704,R0904,C0103,E0611
#
# copyright 2003-2010 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
#
# This file is part of CubicWeb tag cube.
#
...
...
@@ -5,6 +8,6 @@
#
#
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.
#
CubicWeb
is free software
:
you can redistribute it and/or modify it under
the
# terms of the GNU
Lesser
General Public License as published by the Free
#
Software
Foundation
,
either version 2
.1
of the License, or (at your option)
#
any later
version.
#
...
...
@@ -10,3 +13,3 @@
#
#
This program
is distributed in the hope that it will be useful, but WITHOUT
#
CubicWeb
is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
...
...
@@ -12,3 +15,4 @@
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
# details.
#
...
...
@@ -14,9 +18,10 @@
#
# 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
"""
# You should have received a copy of the GNU Lesser General Public License along
# with CubicWeb. If not, see <http://www.gnu.org/licenses/>.
"""
Generic Setup script, takes package info from __pkginfo__.py file
"""
__docformat__
=
"
restructuredtext en
"
import
os
import
sys
import
shutil
...
...
@@ -19,9 +24,6 @@
import
os
import
sys
import
shutil
from
distutils.core
import
setup
from
distutils
import
command
from
distutils.command
import
install_lib
from
os.path
import
isdir
,
exists
,
join
,
walk
...
...
@@ -26,3 +28,15 @@
from
os.path
import
isdir
,
exists
,
join
,
walk
try
:
if
os
.
environ
.
get
(
'
NO_SETUPTOOLS
'
):
raise
ImportError
()
# do as there is no setuptools
from
setuptools
import
setup
from
setuptools.command
import
install_lib
USE_SETUPTOOLS
=
True
except
ImportError
:
from
distutils.core
import
setup
from
distutils.command
import
install_lib
USE_SETUPTOOLS
=
False
from
distutils.command
import
install_data
# import required features
...
...
@@ -28,13 +42,32 @@
# import required features
from
__pkginfo__
import
distname
,
version
,
license
,
short_desc
,
long_desc
,
\
web
,
author
,
author_email
try
:
from
__pkginfo__
import
scripts
except
ImportError
:
scripts
=
[]
try
:
from
__pkginfo__
import
data_files
except
ImportError
:
data_files
=
None
from
__pkginfo__
import
modname
,
version
,
license
,
description
,
web
,
\
author
,
author_email
if
exists
(
'
README
'
):
long_description
=
file
(
'
README
'
).
read
()
else
:
long_description
=
''
# import optional features
import
__pkginfo__
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
=
[]
distname
=
getattr
(
__pkginfo__
,
'
distname
'
,
modname
)
scripts
=
getattr
(
__pkginfo__
,
'
scripts
'
,
())
include_dirs
=
getattr
(
__pkginfo__
,
'
include_dirs
'
,
())
data_files
=
getattr
(
__pkginfo__
,
'
data_files
'
,
None
)
ext_modules
=
getattr
(
__pkginfo__
,
'
ext_modules
'
,
None
)
dependency_links
=
getattr
(
__pkginfo__
,
'
dependency_links
'
,
())
BASE_BLACKLIST
=
(
'
CVS
'
,
'
.svn
'
,
'
.hg
'
,
'
debian
'
,
'
dist
'
,
'
build
'
)
IGNORED_EXTENSIONS
=
(
'
.pyc
'
,
'
.pyo
'
,
'
.elc
'
,
'
~
'
)
def
ensure_scripts
(
linux_scripts
):
...
...
@@ -40,5 +73,6 @@
def
ensure_scripts
(
linux_scripts
):
"""
creates the proper script names required for each platform
"""
Creates the proper script names required for each platform
(taken from 4Suite)
"""
from
distutils
import
util
...
...
@@ -48,5 +82,89 @@
scripts_
=
linux_scripts
return
scripts_
def
export
(
from_dir
,
to_dir
,
blacklist
=
BASE_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
)
# re-enable copying data files in sys.prefix
old_install_data
=
install_data
.
install_data
if
USE_SETUPTOOLS
:
# overwrite InstallData to use sys.prefix instead of the egg directory
class
MyInstallData
(
old_install_data
):
"""
A class that manages data files installation
"""
def
run
(
self
):
_old_install_dir
=
self
.
install_dir
if
self
.
install_dir
.
endswith
(
'
egg
'
):
self
.
install_dir
=
sys
.
prefix
old_install_data
.
run
(
self
)
self
.
install_dir
=
_old_install_dir
try
:
import
setuptools.command.easy_install
# only if easy_install avaible
# monkey patch: Crack SandboxViolation verification
from
setuptools.sandbox
import
DirectorySandbox
as
DS
old_ok
=
DS
.
_ok
def
_ok
(
self
,
path
):
"""
Return True if ``path`` can be written during installation.
"""
out
=
old_ok
(
self
,
path
)
# here for side effect from setuptools
realpath
=
os
.
path
.
normcase
(
os
.
path
.
realpath
(
path
))
allowed_path
=
os
.
path
.
normcase
(
sys
.
prefix
)
if
realpath
.
startswith
(
allowed_path
):
out
=
True
return
out
DS
.
_ok
=
_ok
except
ImportError
:
pass
def
install
(
**
kwargs
):
"""
setup entry point
"""
...
...
@@ -51,16 +169,32 @@
def
install
(
**
kwargs
):
"""
setup entry point
"""
return
setup
(
name
=
distname
,
version
=
version
,
license
=
license
,
description
=
short_desc
,
long_description
=
long_desc
,
author
=
author
,
author_email
=
author_email
,
url
=
web
,
scripts
=
ensure_scripts
(
scripts
),
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
'
)
cmdclass
=
{
'
install_lib
'
:
MyInstallLib
}
if
USE_SETUPTOOLS
:
kwargs
[
'
install_requires
'
]
=
install_requires
kwargs
[
'
dependency_links
'
]
=
dependency_links
kwargs
[
'
zip_safe
'
]
=
False
cmdclass
[
'
install_data
'
]
=
MyInstallData
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
=
cmdclass
,
**
kwargs
)
if
__name__
==
'
__main__
'
:
install
()
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment