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',
+      )