poezio/setup.py

114 lines
4.1 KiB
Python
Raw Normal View History

#!/usr/bin/env python3
try:
from setuptools import setup, Extension
except ImportError:
print('\nSetuptools was not found. Install setuptools for python 3.\n')
import sys
sys.exit(1)
from os.path import basename, dirname, exists, join
from os import link, walk, unlink
2011-09-09 16:46:42 +00:00
current_dir = dirname(__file__)
2011-09-09 16:46:42 +00:00
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'])
# 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'))
# 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'],
2015-01-21 13:47:10 +00:00
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'
with open('README.rst', encoding='utf-8') as readme_fd:
LONG_DESCRIPTION = readme_fd.read()
setup(name="poezio",
2015-08-01 18:31:46 +00:00
version="1.0" + 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 (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'))