summaryrefslogtreecommitdiff
path: root/setup.py
diff options
context:
space:
mode:
Diffstat (limited to 'setup.py')
-rwxr-xr-xsetup.py154
1 files changed, 96 insertions, 58 deletions
diff --git a/setup.py b/setup.py
index eaa0b253..5ea97cdc 100755
--- a/setup.py
+++ b/setup.py
@@ -3,73 +3,111 @@
try:
from setuptools import setup, Extension
except ImportError:
- print('Setuptools was not found.\n'
- 'This script will use distutils instead, which will NOT'
- ' be able to install a `poezio` executable.\nIf you are '
- 'using it to build a package or install poezio, please '
- 'install setuptools.\n\nYou will also see a few warnings.\n')
- from distutils.core import setup, Extension
+ print('\nSetuptools was not found. Install setuptools for python 3.\n')
+ import sys
+ sys.exit(1)
-import os
+from os.path import basename, dirname, exists, join
+from os import link, walk, unlink
+
+current_dir = dirname(__file__)
+
+def get_relative_dir(folder, stopper):
+ """
+ Find the path from a directory to a pseudo-root in order to recreate
+ the filetree.
+ """
+ acc = []
+ last = basename(folder)
+ while last != stopper:
+ acc.append(last)
+ folder = dirname(folder)
+ last = basename(folder)
+ return join(*acc[::-1]) if acc else ''
+
+def find_doc(before, path):
+ _files = []
+ stop = basename(path)
+ for root, dirs, files in walk(join(current_dir, 'doc', path)):
+ files_path = []
+ relative_root = get_relative_dir(root, stop)
+ for name in files:
+ files_path.append(join(root, name))
+ _files.append((join(before, relative_root), files_path))
+ return _files
module_poopt = Extension('poezio.poopt',
extra_compile_args=['-Wno-declaration-after-statement'],
- sources = ['src/pooptmodule.c'])
+ sources=['src/pooptmodule.c'])
+# Create a link to the config file (for packaging purposes)
+if not exists(join(current_dir, 'src', 'default_config.cfg')):
+ link(join(current_dir, 'data', 'default_config.cfg'),
+ join(current_dir, 'src', 'default_config.cfg'))
-current_dir = os.path.dirname(__file__)
+# identify the git version
+git_dir = join(current_dir, '.git')
+if exists(git_dir):
+ try:
+ import subprocess
+ result = subprocess.Popen(['git', '--git-dir', git_dir, 'describe'],
+ stdout=subprocess.PIPE,
+ stderr=subprocess.DEVNULL)
+ result.wait()
+ data = result.stdout.read().decode('utf-8', errors='ignore')
+ version = '.dev' + data.split('-')[1]
+ except:
+ version = '.dev1'
+else:
+ version = '.dev1'
-# Create a link to the config file (for packaging purposes)
-if not os.path.exists(os.path.join(current_dir, 'src', 'default_config.cfg')):
- os.link(os.path.join(current_dir, 'data', 'default_config.cfg'),
- os.path.join(current_dir, 'src', 'default_config.cfg'))
+with open('README.rst', encoding='utf-8') as readme_fd:
+ LONG_DESCRIPTION = readme_fd.read()
setup(name="poezio",
- version="0.8.3-dev",
- description="A console XMPP client",
- long_description=
- "Poezio is a Free chat client aiming to reproduce the ease of use of most "
- "IRC clients (e.g. weechat, irssi) while using the XMPP network."
- "\n"
- "Documentation is available at http://doc.poez.io/0.8.",
-
-
- ext_modules = [module_poopt],
- url = 'http://poez.io/',
- license = 'zlib',
- download_url = 'https://dev.louiz.org/projects/poezio/files',
-
- author = 'Florent Le Coz',
- author_email = 'louiz@louiz.org',
-
- maintainer = 'Mathieu Pasquet',
- maintainer_email = 'mathieui@mathieui.net',
-
- classifiers = ['Development Status :: 2 - Pre-Alpha',
- 'Topic :: Communications :: Chat',
- 'Environment :: Console :: Curses',
- 'Intended Audience :: End Users/Desktop',
- 'License :: OSI Approved :: zlib/libpng License',
- 'Natural Language :: English',
- 'Operating System :: Unix',
- 'Programming Language :: Python :: 3'
- ],
- keywords = ['jabber', 'xmpp', 'client', 'chat', 'im', 'console'],
- packages = ['poezio', 'poezio.core', 'poezio.tabs', 'poezio.windows',
- 'poezio_plugins', 'poezio_plugins.gpg', 'poezio_themes'],
- package_dir = {'poezio': 'src', 'poezio_plugins': 'plugins', 'poezio_themes': 'data/themes'},
- package_data = {'poezio': ['default_config.cfg']},
- scripts = ['scripts/poezio_gpg_export'],
- entry_points={ 'console_scripts': [ 'poezio = poezio:main' ] },
- data_files = [('share/man/man1/', ['data/poezio.1'])],
-
- install_requires = ['slixmpp',
- 'aiodns'],
- extras_require = {'OTR plugin': 'python-potr>=1.0',
- 'Screen autoaway plugin': 'pyinotify==0.9.4'}
-)
+ version="0.9" + version,
+ description="A console XMPP client",
+ long_description=LONG_DESCRIPTION,
+ ext_modules=[module_poopt],
+ url='http://poez.io/',
+ license='zlib',
+ download_url='https://dev.louiz.org/projects/poezio/files',
+
+ author='Florent Le Coz',
+ author_email='louiz@louiz.org',
+
+ maintainer='Mathieu Pasquet',
+ maintainer_email='mathieui@mathieui.net',
+
+ classifiers=['Development Status :: 2 - Pre-Alpha',
+ 'Topic :: Communications :: Chat',
+ 'Environment :: Console :: Curses',
+ 'Intended Audience :: End Users/Desktop',
+ 'License :: OSI Approved :: zlib/libpng License',
+ 'Natural Language :: English',
+ 'Operating System :: Unix',
+ 'Programming Language :: Python :: 3.4',
+ 'Programming Language :: Python :: 3 :: Only'],
+ keywords=['jabber', 'xmpp', 'client', 'chat', 'im', 'console'],
+ packages=['poezio', 'poezio.core', 'poezio.tabs', 'poezio.windows',
+ 'poezio_plugins', 'poezio_plugins.gpg', 'poezio_themes'],
+ package_dir={'poezio': 'src',
+ 'poezio_plugins': 'plugins',
+ 'poezio_themes': 'data/themes'},
+ package_data={'poezio': ['default_config.cfg']},
+ scripts=['scripts/poezio_gpg_export'],
+ entry_points={'console_scripts': ['poezio = poezio:main']},
+ data_files=([('share/man/man1/', ['data/poezio.1']),
+ ('share/poezio/', ['README.rst', 'COPYING', 'CHANGELOG'])]
+ + find_doc('share/doc/poezio/source', 'source')
+ + find_doc('share/doc/poezio/html', 'build/html')),
+ install_requires=['slixmpp', 'aiodns'],
+ extras_require={'OTR plugin': 'python-potr>=1.0',
+ 'Screen autoaway plugin': 'pyinotify==0.9.4'})
# Remove the link afterwards
-if os.path.exists(os.path.join(current_dir, 'src', 'default_config.cfg')):
- os.unlink(os.path.join(current_dir, 'src', 'default_config.cfg'))
+if (exists(join(current_dir, 'src', 'default_config.cfg')) and
+ exists(join(current_dir, 'data', 'default_config.cfg'))):
+
+ unlink(join(current_dir, 'src', 'default_config.cfg'))