From 14b58c528e630ad8528099525f59e896a1cdaec2 Mon Sep 17 00:00:00 2001 From: mathieui Date: Tue, 10 Feb 2015 17:40:53 +0100 Subject: Update setup files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - remove “make uninstall” target which was broken a long time ago - move very install action to the setup.py (alias “make install” to “python setup.py install” - add some stuff to “make clean” - update the config.py to search the default config file using pkg_resources (more reliable than dirname(__file__)) - install the html doc only if available - use README.rst for the setup.py long_description - also, update the copyright notice to 2015 --- COPYING | 2 +- MANIFEST.in | 4 -- Makefile | 11 ++--- setup.py | 126 ++++++++++++++++++++++++++++++++++------------------------ src/config.py | 6 +-- 5 files changed, 82 insertions(+), 67 deletions(-) delete mode 100644 MANIFEST.in diff --git a/COPYING b/COPYING index 21ac6185..820f7fba 100644 --- a/COPYING +++ b/COPYING @@ -1,4 +1,4 @@ -Copyright (c) 2010-2014 Florent Le Coz and Mathieu Pasquet +Copyright (c) 2010-2015 Florent Le Coz and Mathieu Pasquet This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/MANIFEST.in b/MANIFEST.in deleted file mode 100644 index c52d5166..00000000 --- a/MANIFEST.in +++ /dev/null @@ -1,4 +0,0 @@ -include src/default_config.cfg -include data/default_config.cfg -include data/poezio.1 -recursive-include data/ * diff --git a/Makefile b/Makefile index d9f4df85..a9f8dd62 100644 --- a/Makefile +++ b/Makefile @@ -14,21 +14,16 @@ clean: find ./ -name \*.pyc -delete find ./ -name \*.pyo -delete find ./ -name \*~ -delete + find ./ -type d -name __pycache__ -delete find ./ -name "#*#" -delete rm -rf doc/build/ + rm -rf poezio.egg-info + rm -rf dist rm -rf build rm -f src/*.so install: all python3 setup.py install --root=$(DESTDIR) --optimize=1 - mkdir -p $(DESTDIR)$(prefix) $(DESTDIR)$(DOCDIR)/poezio/ $(DESTDIR)$(LOCALEDIR) $(DESTDIR)$(BINDIR) - cp -R doc/* $(DESTDIR)$(DOCDIR)/poezio/ - cp README.rst CHANGELOG COPYING $(DESTDIR)$(DOCDIR)/poezio/ - -uninstall: - rm -f $(DESTDIR)$(BINDIR)/poezio - rm -rf $(DESTDIR)$(DOCDIR)/poezio/ - rm -rf $(DESTDIR)$(MANDIR)/man1/poezio.1 doc: make -C doc/ html diff --git a/setup.py b/setup.py index 97ae2a53..bc9c218b 100755 --- a/setup.py +++ b/setup.py @@ -7,23 +7,47 @@ except ImportError: import sys sys.exit(1) -import os +from os.path import basename, dirname, exists, join +from os import link, walk, unlink -module_poopt = Extension('poezio.poopt', - extra_compile_args=['-Wno-declaration-after-statement'], - sources = ['src/pooptmodule.c']) +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 '' -current_dir = os.path.dirname(__file__) +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 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')) +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 = os.path.join(current_dir, '.git') -if os.path.exists(git_dir): +git_dir = join(current_dir, '.git') +if exists(git_dir): try: import subprocess result = subprocess.Popen(['git', '--git-dir', git_dir, 'describe'], @@ -37,51 +61,51 @@ if os.path.exists(git_dir): else: version = '.dev1' -setup(name="poezio", - version="0.9" + version, - 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/.", - - ext_modules = [module_poopt], - url = 'http://poez.io/', - license = 'zlib', - download_url = 'https://dev.louiz.org/projects/poezio/files', +with open('README.rst', encoding='utf-8') as readme_fd: + LONG_DESCRIPTION = readme_fd.read() - author = 'Florent Le Coz', - author_email = 'louiz@louiz.org', +setup(name="poezio", + 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', - maintainer = 'Mathieu Pasquet', - maintainer_email = 'mathieui@mathieui.net', + author='Florent Le Coz', + author_email='louiz@louiz.org', - 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'])], + maintainer='Mathieu Pasquet', + maintainer_email='mathieui@mathieui.net', - install_requires = ['slixmpp', - 'aiodns'], - extras_require = {'OTR plugin': 'python-potr>=1.0', - 'Screen autoaway plugin': 'pyinotify==0.9.4'} -) + 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/html', 'source') + + find_doc('share/doc/poezio/source', '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')): + unlink(join(current_dir, 'src', 'default_config.cfg')) diff --git a/src/config.py b/src/config.py index 43b88c98..2980e50b 100644 --- a/src/config.py +++ b/src/config.py @@ -15,6 +15,7 @@ DEFSECTION = "Poezio" import logging.config import os import sys +import pkg_resources from gettext import gettext as _ from configparser import RawConfigParser, NoOptionError, NoSectionError @@ -527,9 +528,8 @@ def run_cmdline_args(CONFIG_PATH): # Copy a default file if none exists if not path.isfile(options.filename): - default = path.join(path.dirname(__file__), - '../data/default_config.cfg') - other = path.join(path.dirname(__file__), 'default_config.cfg') + default = path.join(path.dirname(__file__), '../data/default_config.cfg') + other = pkg_resources.resource_filename('poezio', 'default_config.cfg') if path.isfile(default): copy2(default, options.filename) elif path.isfile(other): -- cgit v1.2.3