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
awstats
Commits
65b21e042ed3
Commit
803b32b7
authored
Jul 20, 2017
by
Adrien Di Mascio
Browse files
[pkg] new-style cube packaging
parent
6401affb0d06
Changes
28
Hide whitespace changes
Inline
Side-by-side
debian/changelog
View file @
65b21e04
cubicweb-awstats (0.3.0-1) unstable; urgency=medium
* new upstream release
* update debian packaging to dh_python
--
cubicweb-awstats (0.2.0-1) unstable; urgency=low
* new upstream release
...
...
debian/compat
View file @
65b21e04
5
9
debian/control
View file @
65b21e04
...
...
@@ -2,15 +2,23 @@ Source: cubicweb-awstats
Section: web
Priority: optional
Maintainer: Logilab S.A. <contact@logilab.fr>
Uploaders: Julien Jehannet <julien.jehannet@logilab.fr>
Build-Depends: debhelper (>= 5.0.37.1), python (>=2.4), python-dev (>=2.4)
Standards-Version: 3.8.0
Build-Depends:
debhelper (>= 9),
dh-python,
python-all,
python-setuptools,
Standards-Version: 3.9.6
X-Python-Version: >= 2.7
Homepage: http://www.cubicweb.org/project/awstats
Package: cubicweb-awstats
Architecture: all
Depends: cubicweb-common (>= 3.20.0)
Depends:
python-cubicweb (>= 3.24),
python-six,
${python:Depends},
${misc:Depends},
Recommends: cubicweb-raphael
Description: cubicweb integrated awstats frontend
CubicWeb is a semantic web application framework.
...
...
debian/cubicweb-awstats.prerm
deleted
100644 → 0
View file @
6401affb
#!/bin/sh -e
delete_pyo_pyc
()
{
find /usr/share/cubicweb/cubes/awstats
-name
"*.pyc"
| xargs
rm
-f
find /usr/share/cubicweb/cubes/awstats
-name
"*.pyo"
| xargs
rm
-f
}
case
"
$1
"
in
failed-upgrade|abort-install|abort-upgrade|disappear
)
;;
upgrade
)
delete_pyo_pyc
;;
remove
)
delete_pyo_pyc
;;
purge
)
;;
*
)
echo
"postrm called with unknown argument
\`
$1
'"
>
&2
exit
1
esac
#DEBHELPER#
debian/rules
View file @
65b21e04
#!/usr/bin/make -f
# Sample debian/rules that uses debhelper.
# GNU copyright 1997 to 1999 by Joey Hess.
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
build: build-stamp
build-stamp:
dh_testdir
NO_SETUPTOOLS=1 python setup.py -q build
touch build-stamp
clean:
dh_testdir
dh_testroot
rm -f build-stamp configure-stamp
rm -rf build
find . -name "*.pyc" | xargs rm -f
dh_clean
install: build
dh_testdir
dh_testroot
dh_clean -k
dh_installdirs -i
NO_SETUPTOOLS=1 python setup.py -q install --no-compile --prefix=debian/cubicweb-awstats/usr/
# remove generated .egg-info file
rm -rf debian/cubicweb-awstats/usr/lib/python*
# Build architecture-independent files here.
binary-indep: build install
dh_testdir
dh_testroot
dh_install -i
dh_installchangelogs -i
dh_installexamples -i
dh_installdocs -i
dh_installman -i
dh_link -i
dh_compress -i -X.py -X.ini -X.xml -Xtest
dh_fixperms -i
dh_installdeb -i
dh_gencontrol -i
dh_md5sums -i
dh_builddeb -i
# Build architecture-dependent files here.
binary-arch:
binary: binary-indep
.PHONY: build clean binary-arch binary-indep binary
%:
dh $@ --with python2
setup.py
View file @
65b21e04
#!/usr/bin/env python
# pylint: disable=W0142,W0403,W0404,W0613,W0622,W0622,W0704,R0904,C0103,E0611
#
# copyright 2003-201
1
LOGILAB S.A. (Paris, FRANCE), all rights reserved.
# copyright 2003-201
7
LOGILAB S.A. (Paris, FRANCE), all rights reserved.
# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
#
# This file is part of
C
ubic
W
eb
tag cube
.
# This file is part of
a c
ubic
w
eb
-awstats
.
#
# 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
...
...
@@ -16,186 +16,62 @@
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
# details.
#
# 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
# You should have received a copy of the GNU Lesser General Public License
# along with CubicWeb. If not, see <http://www.gnu.org/licenses/>.
"""cubicweb_awstats setup module using data from
cubicweb_awstats/__pkginfo__.py file
"""
__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
()
# 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
from
__pkginfo__
import
modname
,
version
,
license
,
description
,
web
,
\
author
,
author_email
,
classifiers
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
):
"""
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
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"""
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
,
classifiers
=
classifiers
,
**
kwargs
)
if
__name__
==
'__main__'
:
install
()
from
os.path
import
join
,
dirname
from
setuptools
import
find_packages
,
setup
here
=
dirname
(
__file__
)
# load metadata from the __pkginfo__.py file so there is no risk of conflict
# see https://packaging.python.org/en/latest/single_source_version.html
pkginfo
=
join
(
here
,
'cubicweb_awstats'
,
'__pkginfo__.py'
)
__pkginfo__
=
{}
with
open
(
pkginfo
)
as
f
:
exec
(
f
.
read
(),
__pkginfo__
)
# get required metadatas
distname
=
__pkginfo__
[
'distname'
]
version
=
__pkginfo__
[
'version'
]
license
=
__pkginfo__
[
'license'
]
description
=
__pkginfo__
[
'description'
]
web
=
__pkginfo__
[
'web'
]
author
=
__pkginfo__
[
'author'
]
author_email
=
__pkginfo__
[
'author_email'
]
classifiers
=
__pkginfo__
[
'classifiers'
]
with
open
(
join
(
here
,
'README'
))
as
f
:
long_description
=
f
.
read
()
# get optional metadatas
data_files
=
__pkginfo__
.
get
(
'data_files'
,
None
)
dependency_links
=
__pkginfo__
.
get
(
'dependency_links'
,
())
requires
=
{}
for
entry
in
(
"__depends__"
,
):
# "__recommends__"):
requires
.
update
(
__pkginfo__
.
get
(
entry
,
{}))
install_requires
=
[
"{0} {1}"
.
format
(
d
,
v
and
v
or
""
).
strip
()
for
d
,
v
in
requires
.
items
()
]
setup
(
name
=
distname
,
version
=
version
,
license
=
license
,
description
=
description
,
long_description
=
long_description
,
author
=
author
,
author_email
=
author_email
,
url
=
web
,
classifiers
=
classifiers
,
packages
=
find_packages
(
exclude
=
[
'test'
]),
install_requires
=
install_requires
,
include_package_data
=
True
,
entry_points
=
{
'cubicweb.cubes'
:
[
'awstats=cubicweb_awstats'
,
],
},
zip_safe
=
False
)
test/test_compress.py
View file @
65b21e04
...
...
@@ -5,7 +5,7 @@ import random
from
cubicweb.devtools.testlib
import
CubicWebTC
from
logilab.common
import
date
from
cub
es.
awstats.utils
import
compress_old_hits
from
cub
icweb_
awstats.utils
import
compress_old_hits
class
CompressTest
(
CubicWebTC
):
...
...
tox.ini
0 → 100644
View file @
65b21e04
[tox]
envlist
=
py27,flake8
[testenv]
deps
=
pytest
webtest
commands
=
{envpython}
-m
pytest
{posargs:test}
[testenv:flake8]
skip_install
=
true
deps
=
flake8
commands
=
flake8
[flake8]
exclude
=
cubicweb_awstats/migration/*,test/data/*,.tox/*
max-line-length
=
100
[testenv:check-manifest]
skip_install
=
true
deps
=
check-manifest
commands
=
{envpython}
-m
check_manifest
{toxinidir}
Prev
1
2
Next
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