Mercurial > libervia-pubsub
diff setup.py @ 405:c56a728412f1
file organisation + setup refactoring:
- `/src` has been renamed to `/sat_pubsub`, this is the recommended naming convention
- revamped `setup.py` on the basis of SàT's `setup.py`
- added a `VERSION` which is the unique place where version number will now be set
- use same trick as in SàT to specify dev version (`D` at the end)
- use setuptools_scm to retrieve Mercurial hash when in dev version
author | Goffi <goffi@goffi.org> |
---|---|
date | Fri, 16 Aug 2019 12:00:02 +0200 |
parents | 26e46a3043e5 |
children | a58610ab2983 |
line wrap: on
line diff
--- a/setup.py Wed Jul 24 19:26:43 2019 +0200 +++ b/setup.py Fri Aug 16 12:00:02 2019 +0200 @@ -1,8 +1,9 @@ -#!/usr/bin/python -#-*- coding: utf-8 -*- +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- -# Copyright (c) 2003-2011 Ralph Meijer -# Copyright (C) 2011-2014 Jérôme Poisson <goffi@goffi.org> +# SAT: an XMPP client +# Copyright (C) 2009-2016 Jérôme Poisson (goffi@goffi.org) +# Copyright (C) 2013-2016 Adrien Cossa (souliane@mailoo.org) # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by @@ -17,85 +18,60 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -# This program is based on Idavoll (http://idavoll.ik.nu/), -# originaly written by Ralph Meijer (http://ralphm.net/blog/) -# It is sublicensed under AGPL v3 (or any later version) as allowed -# by the original license. - -# Here is a copy of the original license: - -# Copyright (c) 2003-2011 Ralph Meijer - -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: - -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. +from setuptools import setup, find_packages +import os -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -import sys -from setuptools import setup -from src import __version__ - - -# seen here: http://stackoverflow.com/questions/7275295 -try: - from setuptools.command import egg_info - egg_info.write_toplevel_names -except (ImportError, AttributeError): - pass -else: - def _top_level_package(name): - return name.split('.', 1)[0] - - def _hacked_write_toplevel_names(cmd, basename, filename): - pkgs = dict.fromkeys( - [_top_level_package(k) - for k in cmd.distribution.iter_distribution_names() - if _top_level_package(k) != "twisted" - ] - ) - cmd.write_file("top-level names", filename, '\n'.join(pkgs) + '\n') - - egg_info.write_toplevel_names = _hacked_write_toplevel_names - +NAME = 'sat_pubsub' install_requires = [ 'wokkel >= 0.7.1', + 'psycopg2', 'simplejson', + 'uuid', + 'sat_tmp', ] -if sys.version_info < (2, 5): - install_requires.append('uuid') + +with open(os.path.join(NAME, 'VERSION')) as f: + VERSION = f.read().strip() +is_dev_version = VERSION.endswith('D') + + +def sat_dev_version(): + """Use mercurial data to compute version""" + def version_scheme(version): + return VERSION.replace('D', '.dev0') + + def local_scheme(version): + return "+{rev}.{distance}".format( + rev=version.node[1:], + distance=version.distance) + + return {'version_scheme': version_scheme, + 'local_scheme': local_scheme} + -setup(name='sat_pubsub', - version=__version__, - description=u'XMPP Publish-Subscribe Service Component, build for the need of the « Salut à Toi » project', - maintainer='Jérôme Poisson', - maintainer_email='goffi@goffi.org', - url='http://repos.goffi.org/sat_pubsub', - license='AGPLv3+', - package_dir={'sat_pubsub': 'src', - 'twisted': 'src/twisted'}, - packages=[ - 'sat_pubsub', - 'sat_pubsub.test', - 'twisted.plugins', - ], - package_data={'twisted.plugins': ['src/twisted/plugins/pubsub.py']}, - data_files=[('share/sat_pubsub', ['db/pubsub.sql'])], - zip_safe=False, +setup(name=NAME, + version=VERSION, + description=u'XMPP Publish-Subscribe Service Component, build for the need of ' + u'the « Salut à Toi » project', + author='Association « Salut à Toi »', + author_email='goffi@goffi.org', + url='https://salut-a-toi.org', + classifiers=['Development Status :: 5', + 'Framework :: Twisted', + 'License :: OSI Approved :: GNU Affero General Public License v3 ' + 'or later (AGPLv3+)', + 'Operating System :: POSIX :: Linux', + 'Topic :: Communications :: Chat'], + packages=find_packages() + ['twisted.plugins'], + data_files=[(os.path.join('share/doc', NAME), + ['CHANGELOG', 'COPYING', 'README']), + ], + zip_safe=True, + setup_requires=['setuptools_scm'] if is_dev_version else [], + use_scm_version=sat_dev_version if is_dev_version else False, install_requires=install_requires, -) + package_data={'sat_pubsub': ['VERSION']}, + python_requires='~=2.7', + )