Update setup.py to use distutils
(use new default directory, install the plugins as a separate python module…)
This commit is contained in:
parent
1b9dc72d14
commit
2b42c6a3ea
9 changed files with 82 additions and 40 deletions
3
MANIFEST.in
Normal file
3
MANIFEST.in
Normal file
|
@ -0,0 +1,3 @@
|
|||
include data/default_config.cfg
|
||||
include data/poezio.1
|
||||
recursive-include data/ *
|
20
Makefile
20
Makefile
|
@ -7,7 +7,7 @@ LOCALEDIR=$(DATADIR)/locale
|
|||
MANDIR=$(DATADIR)/man
|
||||
|
||||
all: Makefile
|
||||
cd src/ && python3 ../setup.py build_ext --inplace
|
||||
python3 setup.py build_ext --inplace
|
||||
|
||||
clean:
|
||||
find ./ -name \*.pyc -delete
|
||||
|
@ -17,26 +17,12 @@ clean:
|
|||
rm -r doc/build/
|
||||
|
||||
install: all
|
||||
mkdir -p $(DESTDIR)$(prefix)
|
||||
install -d $(DESTDIR)$(LOCALEDIR) $(DESTDIR)$(BINDIR) $(DESTDIR)$(DATADIR)/poezio $(DESTDIR)$(DATADIR)/poezio/data $(DESTDIR)$(DATADIR)/poezio/src/ $(DESTDIR)$(DATADIR)/poezio/src $(DESTDIR)$(DATADIR)/poezio/data/themes $(DESTDIR)$(MANDIR)/man1 $(DESTDIR)$(DOCDIR)/poezio $(DESTDIR)$(DATADIR)/poezio/plugins
|
||||
|
||||
cp -R data/* $(DESTDIR)$(DATADIR)/poezio/data/
|
||||
rm $(DESTDIR)$(DATADIR)/poezio/data/poezio.1
|
||||
|
||||
cp -R plugins/* $(DESTDIR)$(DATADIR)/poezio/plugins
|
||||
mkdir -p $(DESTDIR)$(prefix) $(DESTDIR)$(DOCDIR)/poezio/ $(DESTDIR)$(LOCALEDIR) $(DESTDIR)$(BINDIR)
|
||||
|
||||
cp -R doc/* $(DESTDIR)$(DOCDIR)/poezio/
|
||||
|
||||
cp README CHANGELOG COPYING $(DESTDIR)$(DOCDIR)/poezio/
|
||||
|
||||
install -m644 data/poezio.1 $(DESTDIR)$(MANDIR)/man1/
|
||||
for sourcefile in `ls -1 src/*.py src/*.so` ; do \
|
||||
install -m644 $$sourcefile $(DESTDIR)$(DATADIR)/poezio/src; \
|
||||
done
|
||||
|
||||
echo "#!/usr/bin/env sh" > $(DESTDIR)$(BINDIR)/poezio
|
||||
echo "python3 $(DATADIR)/poezio/src/poezio.py \$$@" >> $(DESTDIR)$(BINDIR)/poezio
|
||||
chmod 755 $(DESTDIR)$(BINDIR)/poezio
|
||||
|
||||
uninstall:
|
||||
rm -f $(DESTDIR)$(BINDIR)/poezio
|
||||
rm -rf $(DESTDIR)$(DATADIR)/poezio
|
||||
|
|
0
plugins/__init__.py
Normal file
0
plugins/__init__.py
Normal file
4
scripts/poezio
Executable file
4
scripts/poezio
Executable file
|
@ -0,0 +1,4 @@
|
|||
#!/usr/bin/python3
|
||||
|
||||
from poezio import main
|
||||
main()
|
44
setup.py
44
setup.py
|
@ -1,16 +1,40 @@
|
|||
from distutils.core import setup, Extension
|
||||
|
||||
module_poopt = Extension('poopt',
|
||||
sources = ['pooptmodule.c'])
|
||||
module_poopt = Extension('poezio.poopt',
|
||||
sources = ['src/pooptmodule.c'])
|
||||
|
||||
setup (name = 'BuildLines',
|
||||
version = '0.0.1',
|
||||
description = 'Poezio Optimizations',
|
||||
setup(name="poezio",
|
||||
version="0.8-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.
|
||||
""",
|
||||
ext_modules = [module_poopt],
|
||||
url = 'http://poezio.eu/',
|
||||
license = 'zlib',
|
||||
|
||||
author = 'Florent Le Coz',
|
||||
author_email = 'louiz@louiz.org',
|
||||
long_description = """
|
||||
a python3 module for poezio, used to replace some time-critical
|
||||
python functions that are too slow. If compiled, poezio will use this module,
|
||||
otherwise it will just use the equivalent python functions.
|
||||
""")
|
||||
|
||||
maintainer = 'Mathieu Pasquet',
|
||||
maintainer_email = 'mathieui@mathieui.net',
|
||||
|
||||
classifiers = ['Development Status :: 4 - Beta',
|
||||
'Environment :: Console :: Curses',
|
||||
'Intended Audience :: End Users/Desktop',
|
||||
'License :: OSI Approved :: zlib/libpng License',
|
||||
'Natural Language :: English',
|
||||
'Operating System :: Unix',
|
||||
'Topic :: Communications :: Chat',
|
||||
'Programming Language :: Python :: 3',
|
||||
],
|
||||
keywords = ['xmpp', 'chat', 'im', 'console'],
|
||||
packages = ['poezio', 'poezio_plugins'],
|
||||
package_dir = {'poezio': 'src', 'poezio_plugins': 'plugins'},
|
||||
scripts = ['scripts/poezio'],
|
||||
data_files = [('/etc/poezio/', ['data/default_config.cfg']),
|
||||
('share/poezio/themes/', ['data/themes/dark.py']),
|
||||
('share/man/man1/', ['data/poezio.1'])],
|
||||
)
|
||||
|
|
1
src/__init__.py
Normal file
1
src/__init__.py
Normal file
|
@ -0,0 +1 @@
|
|||
from poezio.poezio import main
|
|
@ -251,7 +251,12 @@ options = parse_args(CONFIG_PATH)
|
|||
|
||||
# Copy a default file if none exists
|
||||
if not path.isfile(options.filename):
|
||||
copy2(path.join(path.dirname(__file__), '../data/default_config.cfg'), options.filename)
|
||||
default = path.join(path.dirname(__file__), '../data/default_config.cfg')
|
||||
other = '/etc/poezio/default_config.cfg'
|
||||
if path.isfile(default):
|
||||
copy2(default, options.filename)
|
||||
elif path.isfile(other):
|
||||
copy2(other, options.filename)
|
||||
firstrun = True
|
||||
|
||||
config = Config(options.filename)
|
||||
|
|
|
@ -20,6 +20,8 @@ from config import config
|
|||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
load_path = []
|
||||
|
||||
plugins_dir = config.get('plugins_dir', '')
|
||||
plugins_dir = plugins_dir or\
|
||||
os.path.join(os.environ.get('XDG_DATA_HOME') or\
|
||||
|
@ -39,6 +41,8 @@ try:
|
|||
os.makedirs(plugins_dir)
|
||||
except OSError:
|
||||
pass
|
||||
else:
|
||||
load_path.append(plugins_dir)
|
||||
|
||||
try:
|
||||
os.makedirs(plugins_conf_dir)
|
||||
|
@ -47,14 +51,23 @@ except OSError:
|
|||
|
||||
default_plugin_path = path.join(path.dirname(path.dirname(__file__)), 'plugins')
|
||||
|
||||
sys.path.append(plugins_dir)
|
||||
sys.path.append(default_plugin_path)
|
||||
if os.path.exists(default_plugin_path):
|
||||
load_path.append(default_plugin_path)
|
||||
|
||||
try:
|
||||
import poezio_plugins
|
||||
except:
|
||||
pass
|
||||
else:
|
||||
if poezio_plugins.__path__:
|
||||
load_path.append(poezio_plugins.__path__[0])
|
||||
|
||||
sys.path.extend(load_path)
|
||||
|
||||
if version_info[1] >= 3: # 3.3 & >
|
||||
from importlib import machinery
|
||||
finder = machinery.PathFinder()
|
||||
|
||||
|
||||
class PluginManager(object):
|
||||
"""
|
||||
Plugin Manager
|
||||
|
@ -94,7 +107,7 @@ class PluginManager(object):
|
|||
imp.acquire_lock()
|
||||
module = imp.reload(self.modules[name])
|
||||
else:
|
||||
file, filename, info = imp.find_module(name, [plugins_dir, default_plugin_path])
|
||||
file, filename, info = imp.find_module(name, load_path)
|
||||
imp.acquire_lock()
|
||||
module = imp.load_module(name, file, filename, info)
|
||||
else: # 3.3 & >
|
||||
|
@ -288,15 +301,19 @@ class PluginManager(object):
|
|||
all .py files in plugins_dir
|
||||
"""
|
||||
try:
|
||||
try:
|
||||
names = set(os.listdir(default_plugin_path))
|
||||
except:
|
||||
names = set()
|
||||
names |= set(os.listdir(plugins_dir))
|
||||
names = set()
|
||||
for path in load_path:
|
||||
try:
|
||||
add = set(os.listdir(path))
|
||||
names |= add
|
||||
except:
|
||||
pass
|
||||
except OSError as e:
|
||||
self.core.information(_('Completion failed: %s' % e), 'Error')
|
||||
return
|
||||
plugins_files = [name[:-3] for name in names if name.endswith('.py')]
|
||||
plugins_files = [name[:-3] for name in names if name.endswith('.py')
|
||||
and name != '__init__.py' and not name.startswith('.')]
|
||||
plugins_files.sort()
|
||||
return the_input.auto_completion(plugins_files, '', quotify=False)
|
||||
|
||||
def completion_unload(self, the_input):
|
||||
|
|
|
@ -12,11 +12,13 @@ Starting point of poezio. Launches both the Connection and Gui
|
|||
|
||||
import sys
|
||||
import os
|
||||
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
|
||||
|
||||
import signal
|
||||
import logging
|
||||
from logger import logger
|
||||
|
||||
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
|
||||
|
||||
from logger import logger
|
||||
from config import options
|
||||
import singleton
|
||||
import core
|
||||
|
|
Loading…
Reference in a new issue