diff --git a/README b/README index 0c26618f06f86b13a66292564f586e98b52ca68c_UkVBRE1F..a78e7ba718a2a6708c05e65b2d1b61167cb4d327_UkVBRE1F 100644 --- a/README +++ b/README @@ -3,6 +3,33 @@ The `comment` cube provides threadable comments feature. +It is a CubicWeb component. CubicWeb is a semantic web application +framework, see http://www.cubicweb.org + + +Install +------- + +Auto-install from sources prefered with *pip/Distribute*:: + + pip install cubicweb-comment + +If you have troubles, use *easy_install/setuptools* and eggs:: + + easy_install cubicweb-comment + +You can install the package manually from the uncompressed +`tarball <http://www.cubicweb.org/project/cubicweb-comment>`_:: + + python setup.py install # auto-install dependencies + +If you don't want the dependancies to be installed automaticly, you +can force the setup to use the standard library *distutils*:: + + NO_SETUPTOOLS=1 python setup.py install + +More details at http://www.cubicweb.org/doc/en/admin/setup + Usage ----- @@ -26,3 +53,9 @@ Once this relation is defined, you can post comments and view threadable comments automatically on blog entry's primary view. + +Documentation +------------- + +Look in the ``doc/`` subdirectory or read +http://www.cubicweb.org/doc/en/ diff --git a/setup.py b/setup.py index 0c26618f06f86b13a66292564f586e98b52ca68c_c2V0dXAucHk=..a78e7ba718a2a6708c05e65b2d1b61167cb4d327_c2V0dXAucHk= 100644 --- a/setup.py +++ b/setup.py @@ -1,4 +1,5 @@ #!/usr/bin/env python -# pylint: disable-msg=W0404,W0622,W0704,W0613,W0152 +# 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 @@ -3,6 +4,22 @@ # 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. +# +# 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. +# +# CubicWeb 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 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 +""" __docformat__ = "restructuredtext en" import os @@ -12,6 +29,6 @@ try: if os.environ.get('NO_SETUPTOOLS'): - raise ImportError() + raise ImportError() # do as there is no setuptools from setuptools import setup from setuptools.command import install_lib @@ -16,6 +33,6 @@ from setuptools import setup from setuptools.command import install_lib - USE_SETUPTOOLS = 1 + USE_SETUPTOOLS = True except ImportError: from distutils.core import setup from distutils.command import install_lib @@ -19,5 +36,6 @@ except ImportError: from distutils.core import setup from distutils.command import install_lib - USE_SETUPTOOLS = 0 + USE_SETUPTOOLS = False +from distutils.command import install_data @@ -23,4 +41,2 @@ - -sys.modules.pop('__pkginfo__', None) # import required features @@ -26,20 +42,8 @@ # import required features -from __pkginfo__ import modname, version, license, description, \ - web, author, author_email -# import optional features -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', '~') +from __pkginfo__ import modname, version, license, description, web, \ + author, author_email if exists('README'): long_description = file('README').read() else: long_description = '' @@ -41,6 +45,9 @@ if exists('README'): long_description = file('README').read() else: long_description = '' + +# import optional features +import __pkginfo__ if USE_SETUPTOOLS: @@ -46,7 +53,7 @@ if USE_SETUPTOOLS: - requires = {} - for entry in ("__depends__", "__recommends__"): - requires.update(getattr(__pkginfo__, entry, {})) - install_requires = [("%s %s" % (d, v and v or "")).strip() + 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: @@ -51,6 +58,16 @@ for d, v in requires.iteritems()] else: - install_requires = [] + 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): @@ -54,7 +71,8 @@ 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 @@ -64,19 +82,4 @@ 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, @@ -82,5 +85,5 @@ def export(from_dir, to_dir, - blacklist=STD_BLACKLIST, + blacklist=BASE_BLACKLIST, ignore_ext=IGNORED_EXTENSIONS, verbose=True): """make a mirror of from_dir in to_dir, omitting directories and files @@ -134,6 +137,35 @@ 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: @@ -142,6 +174,6 @@ # 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') - if USE_SETUPTOOLS and install_requires: + if USE_SETUPTOOLS: kwargs['install_requires'] = install_requires kwargs['dependency_links'] = dependency_links @@ -146,5 +178,6 @@ kwargs['install_requires'] = install_requires kwargs['dependency_links'] = dependency_links + kwargs['zip_safe'] = False return setup(name = distname, version = version, license = license, @@ -156,7 +189,8 @@ scripts = ensure_scripts(scripts), data_files = data_files, ext_modules = ext_modules, - cmdclass = {'install_lib': MyInstallLib}, + cmdclass = {'install_lib': MyInstallLib, + 'install_data':MyInstallData}, **kwargs )