219 lines
6.2 KiB
Python
Executable file
219 lines
6.2 KiB
Python
Executable file
#! /usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
# Copyright(C) 2010-2011 Christophe Benz
|
|
#
|
|
# This file is part of weboob.
|
|
#
|
|
# weboob is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU Affero General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# weboob is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU Affero General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU Affero General Public License
|
|
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
from __future__ import with_statement
|
|
|
|
from setuptools import find_packages, setup
|
|
|
|
import glob
|
|
import os
|
|
import subprocess
|
|
import sys
|
|
|
|
|
|
def check_executable_win(executable, error):
|
|
pathsrc = "PATH" # Where to get the path
|
|
pathextsrc = "PATHEXT" # Where to get the extension list
|
|
dotfirst = 1 # Should we look in the current directory also?
|
|
|
|
path = os.environ[pathsrc]
|
|
path = filter(None, path.split(";"))
|
|
|
|
if dotfirst:
|
|
path = ["."]+path
|
|
|
|
pathext = os.environ[pathextsrc]
|
|
pathext = filter(None, pathext.split(";"))
|
|
|
|
# The command name we are looking for
|
|
cmdName = executable
|
|
|
|
# Is the command name really a file name?
|
|
if '.' in cmdName:
|
|
# Fake it by making pathext a list of one empty string.
|
|
pathext = ['']
|
|
|
|
# Loop over the directories on the path, looking for the file.
|
|
for d in path:
|
|
for e in pathext:
|
|
filePath = os.path.join(d, cmdName + e)
|
|
if os.path.exists(filePath):
|
|
return filePath.replace( '\\', '/' )
|
|
|
|
print >>sys.stderr, 'Error: %s is not installed on your system.' % executable
|
|
if error:
|
|
print >>sys.stderr, error
|
|
sys.exit(1)
|
|
|
|
def check_executable_unix(executable, error):
|
|
with open('/dev/null', 'w') as devnull:
|
|
process = subprocess.Popen(['which', executable], stdout=devnull)
|
|
return_code = process.wait()
|
|
if return_code == 0:
|
|
return executable
|
|
else:
|
|
print >>sys.stderr, 'Error: %s is not installed on your system.' % executable
|
|
if error:
|
|
print >>sys.stderr, error
|
|
sys.exit(1)
|
|
|
|
if sys.platform == 'win32':
|
|
check_executable = check_executable_win
|
|
else:
|
|
check_executable = check_executable_unix
|
|
|
|
def build_qt():
|
|
print 'Building Qt applications'
|
|
pyuic4 = check_executable('pyuic4', 'To disable Qt applications, use --no-qt.')
|
|
|
|
if sys.platform == 'win32':
|
|
env={ 'PYUIC' : pyuic4, 'PATH':os.environ['PATH']}
|
|
extraMakeFlag = ['-e']
|
|
else:
|
|
env = None
|
|
extraMakeFlag = []
|
|
|
|
subprocess.check_call(['make']+extraMakeFlag+['-C','weboob/applications/qboobmsg/ui'], env=env )
|
|
subprocess.check_call(['make']+extraMakeFlag+['-C','weboob/applications/qhavesex/ui'], env=env )
|
|
if sys.platform != 'win32':
|
|
subprocess.check_call(['make']+extraMakeFlag+['-C','weboob/applications/qvideoob/ui'], env=env )
|
|
subprocess.check_call(['make']+extraMakeFlag+['-C','weboob/applications/qwebcontentedit/ui'], env=env )
|
|
subprocess.check_call(['make']+extraMakeFlag+['-C','weboob/tools/application/qt'], env=env )
|
|
|
|
class Options:
|
|
pass
|
|
|
|
options = Options()
|
|
options.hildon = False
|
|
options.qt = True
|
|
options.xdg = True
|
|
|
|
args = list(sys.argv)
|
|
if '--hildon' in args and '--no-hildon' in args:
|
|
print '--hildon and --no-hildon options are incompatible'
|
|
sys.exit(1)
|
|
if '--qt' in args and '--no-qt' in args:
|
|
print '--qt and --no-qt options are incompatible'
|
|
sys.exit(1)
|
|
if '--xdg' in args and '--no-xdg' in args:
|
|
print '--xdg and --no-xdg options are incompatible'
|
|
sys.exit(1)
|
|
|
|
if '--hildon' in args or os.environ.get('HILDON') == 'true':
|
|
options.hildon = True
|
|
if '--hildon' in args:
|
|
args.remove('--hildon')
|
|
elif '--no-hildon' in args:
|
|
options.hildon = False
|
|
args.remove('--no-hildon')
|
|
|
|
if '--qt' in args:
|
|
options.qt = True
|
|
args.remove('--qt')
|
|
elif '--no-qt' in args:
|
|
options.qt = False
|
|
args.remove('--no-qt')
|
|
|
|
if '--xdg' in args:
|
|
options.xdg = True
|
|
args.remove('--xdg')
|
|
elif '--no-xdg' in args:
|
|
options.xdg = False
|
|
args.remove('--no-xdg')
|
|
|
|
sys.argv = args
|
|
|
|
scripts = set(os.listdir('scripts'))
|
|
packages = set(find_packages())
|
|
|
|
hildon_scripts = set(('masstransit',))
|
|
qt_scripts = set(('qboobmsg', 'qhavesex', 'qvideoob', 'weboob-config-qt', 'qwebcontentedit'))
|
|
|
|
if not options.hildon:
|
|
scripts = scripts - hildon_scripts
|
|
if options.qt:
|
|
build_qt()
|
|
else:
|
|
scripts = scripts - qt_scripts
|
|
|
|
hildon_packages = set((
|
|
'weboob.applications.masstransit',
|
|
),)
|
|
qt_packages = set((
|
|
'weboob.applications.qboobmsg',
|
|
'weboob.applications.qboobmsg.ui',
|
|
'weboob.applications.qhavesex',
|
|
'weboob.applications.qhavesex.ui',
|
|
'weboob.applications.qvideoob',
|
|
'weboob.applications.qvideoob.ui',
|
|
'weboob.applications.qweboobcfg',
|
|
'weboob.applications.qweboobcfg.ui',
|
|
'weboob.applications.qwebcontentedit',
|
|
'weboob.applications.qwebcontentedit.ui'
|
|
))
|
|
|
|
if not options.hildon:
|
|
packages = packages - hildon_packages
|
|
if not options.qt:
|
|
packages = packages - qt_packages
|
|
|
|
data_files = [
|
|
('share/man/man1', glob.glob('man/*')),
|
|
]
|
|
if options.xdg:
|
|
data_files.extend([
|
|
('share/applications', glob.glob('desktop/*')),
|
|
('share/icons/hicolor/64x64/apps', glob.glob('icons/*')),
|
|
])
|
|
|
|
setup(
|
|
name='weboob',
|
|
version='0.8',
|
|
description='Weboob, Web Out Of Browsers',
|
|
author='Romain Bignon',
|
|
author_email='weboob@weboob.org',
|
|
maintainer='Christophe Benz',
|
|
maintainer_email='christophe.benz@gmail.com',
|
|
license='GPLv3',
|
|
url='http://www.weboob.org',
|
|
packages=packages,
|
|
scripts=[os.path.join('scripts', script) for script in scripts],
|
|
|
|
data_files=data_files,
|
|
|
|
install_requires=[
|
|
'ClientForm',
|
|
'elementtidy',
|
|
'FeedParser',
|
|
'gdata',
|
|
'html5lib',
|
|
'lxml',
|
|
'Mako',
|
|
'mechanize',
|
|
'PIL',
|
|
'PyQt',
|
|
'python-dateutil',
|
|
'PyYAML',
|
|
'Routes',
|
|
'simplejson',
|
|
'WebOb',
|
|
],
|
|
)
|