2019-02-07 16:38:38 +00:00
|
|
|
from __future__ import print_function
|
2009-03-03 23:09:16 +00:00
|
|
|
|
2019-02-07 16:38:38 +00:00
|
|
|
import sys
|
|
|
|
import glob
|
2009-03-03 23:09:16 +00:00
|
|
|
import os
|
|
|
|
|
2009-03-19 23:46:29 +00:00
|
|
|
from chirp import CHIRP_VERSION
|
2019-02-07 16:38:38 +00:00
|
|
|
# FIXME: Not all drivers are py3 compatible in syntax, so punt on this
|
|
|
|
# until that time, and defer to the safe import loop below.
|
|
|
|
# from chirp.drivers import *
|
2012-02-20 20:53:56 +00:00
|
|
|
import chirp
|
|
|
|
|
2019-02-07 16:38:38 +00:00
|
|
|
# Safe import of everything in chirp/drivers
|
|
|
|
driver_files = glob.glob('chirp/drivers/*.py')
|
|
|
|
for driver_file in driver_files:
|
|
|
|
module, _ = os.path.splitext(driver_file)
|
2019-02-08 02:24:01 +00:00
|
|
|
module = module.replace('/', '.')
|
2019-02-07 16:38:38 +00:00
|
|
|
try:
|
|
|
|
__import__(module)
|
2019-02-08 02:24:01 +00:00
|
|
|
except Exception as e:
|
2019-02-07 16:38:38 +00:00
|
|
|
print('Failed to import %s: %s' % (module, e))
|
|
|
|
|
2015-02-27 23:55:58 +00:00
|
|
|
|
2012-02-20 20:53:56 +00:00
|
|
|
def staticify_chirp_module():
|
|
|
|
import chirp
|
|
|
|
|
2019-02-07 16:38:38 +00:00
|
|
|
with open("chirp/__init__.py", "w") as init:
|
|
|
|
print("CHIRP_VERSION = \"%s\"" % CHIRP_VERSION, file=init)
|
|
|
|
print("__all__ = %s\n" % str(chirp.__all__), file=init)
|
2015-02-27 23:55:58 +00:00
|
|
|
|
2019-02-07 16:38:38 +00:00
|
|
|
print("Set chirp/__init__.py::__all__ = %s" % str(chirp.__all__))
|
2012-02-20 20:53:56 +00:00
|
|
|
|
2009-03-03 23:09:16 +00:00
|
|
|
|
2015-03-03 15:09:37 +00:00
|
|
|
def staticify_drivers_module():
|
2015-03-04 15:14:55 +00:00
|
|
|
import chirp.drivers
|
2015-03-03 15:09:37 +00:00
|
|
|
|
|
|
|
with file("chirp/drivers/__init__.py", "w") as init:
|
2019-02-07 16:38:38 +00:00
|
|
|
print("__all__ = %s\n" % str(chirp.drivers.__all__), file=init)
|
2015-03-03 15:09:37 +00:00
|
|
|
|
2019-02-07 16:38:38 +00:00
|
|
|
print("Set chirp/drivers/__init__.py::__all__ = %s" % str(
|
|
|
|
chirp.drivers.__all__))
|
2015-03-03 15:09:37 +00:00
|
|
|
|
|
|
|
|
2009-03-03 23:09:16 +00:00
|
|
|
def win32_build():
|
|
|
|
from distutils.core import setup
|
2008-12-05 19:40:02 +00:00
|
|
|
import py2exe
|
2009-03-03 23:09:16 +00:00
|
|
|
|
|
|
|
try:
|
|
|
|
# if this doesn't work, try import modulefinder
|
|
|
|
import py2exe.mf as modulefinder
|
|
|
|
import win32com
|
|
|
|
for p in win32com.__path__[1:]:
|
|
|
|
modulefinder.AddPackagePath("win32com", p)
|
2015-02-27 23:55:58 +00:00
|
|
|
for extra in ["win32com.shell"]: # ,"win32com.mapi"
|
2009-03-03 23:09:16 +00:00
|
|
|
__import__(extra)
|
|
|
|
m = sys.modules[extra]
|
|
|
|
for p in m.__path__[1:]:
|
|
|
|
modulefinder.AddPackagePath(extra, p)
|
|
|
|
except ImportError:
|
|
|
|
# no build path setup, no worries.
|
|
|
|
pass
|
|
|
|
|
2012-02-20 20:53:56 +00:00
|
|
|
staticify_chirp_module()
|
2015-03-03 15:09:37 +00:00
|
|
|
staticify_drivers_module()
|
2009-03-03 23:09:16 +00:00
|
|
|
|
2008-12-05 19:40:02 +00:00
|
|
|
opts = {
|
2015-02-27 23:55:58 +00:00
|
|
|
"py2exe": {
|
|
|
|
"includes": "pango,atk,gobject,cairo,pangocairo," +
|
|
|
|
"win32gui,win32com,win32com.shell," +
|
|
|
|
"email.iterators,email.generator,gio",
|
|
|
|
|
|
|
|
"compressed": 1,
|
|
|
|
"optimize": 2,
|
|
|
|
"bundle_files": 3,
|
|
|
|
# "packages": ""
|
2008-12-05 19:40:02 +00:00
|
|
|
}
|
2008-07-19 13:45:37 +00:00
|
|
|
}
|
|
|
|
|
2012-02-20 20:53:56 +00:00
|
|
|
mods = []
|
2015-03-04 15:14:55 +00:00
|
|
|
for mod in chirp.__all__:
|
2012-02-20 20:53:56 +00:00
|
|
|
mods.append("chirp.%s" % mod)
|
2015-03-04 15:14:55 +00:00
|
|
|
for mod in chirp.drivers.__all__:
|
|
|
|
mods.append("chirp.drivers.%s" % mod)
|
2012-02-20 20:53:56 +00:00
|
|
|
opts["py2exe"]["includes"] += ("," + ",".join(mods))
|
|
|
|
|
2009-03-03 23:09:16 +00:00
|
|
|
setup(
|
2012-12-23 15:46:12 +00:00
|
|
|
zipfile=None,
|
2015-02-27 23:55:58 +00:00
|
|
|
windows=[{'script': "chirpw",
|
2011-03-23 01:23:23 +00:00
|
|
|
'icon_resources': [(0x0004, 'share/chirp.ico')],
|
2015-02-27 23:55:58 +00:00
|
|
|
}],
|
2009-03-03 23:09:16 +00:00
|
|
|
options=opts)
|
|
|
|
|
2015-02-27 23:55:58 +00:00
|
|
|
|
2009-03-03 23:09:16 +00:00
|
|
|
def macos_build():
|
|
|
|
from setuptools import setup
|
|
|
|
import shutil
|
|
|
|
|
|
|
|
APP = ['chirp-%s.py' % CHIRP_VERSION]
|
|
|
|
shutil.copy("chirpw", APP[0])
|
2015-02-27 23:55:58 +00:00
|
|
|
DATA_FILES = [('../Frameworks', ['/opt/local/lib/libpangox-1.0.dylib']),
|
|
|
|
('../Resources/', ['/opt/local/lib/pango']),
|
2009-03-03 23:09:16 +00:00
|
|
|
]
|
2015-02-27 23:55:58 +00:00
|
|
|
OPTIONS = {'argv_emulation': True, "includes": "gtk,atk,pangocairo,cairo"}
|
2009-03-03 23:09:16 +00:00
|
|
|
|
|
|
|
setup(
|
|
|
|
app=APP,
|
|
|
|
data_files=DATA_FILES,
|
|
|
|
options={'py2app': OPTIONS},
|
|
|
|
setup_requires=['py2app'],
|
|
|
|
)
|
|
|
|
|
2015-02-27 23:55:58 +00:00
|
|
|
EXEC = 'bash ./build/macos/make_pango.sh ' + \
|
|
|
|
'/opt/local dist/chirp-%s.app' % CHIRP_VERSION
|
2015-03-01 00:29:01 +00:00
|
|
|
# print "exec string: %s" % EXEC
|
2015-02-27 23:55:58 +00:00
|
|
|
os.system(EXEC)
|
|
|
|
|
2009-03-05 15:48:56 +00:00
|
|
|
|
2009-03-03 23:09:16 +00:00
|
|
|
def default_build():
|
|
|
|
from distutils.core import setup
|
|
|
|
from glob import glob
|
|
|
|
|
2012-03-23 18:48:57 +00:00
|
|
|
os.system("make -C locale clean all")
|
|
|
|
|
2009-03-03 23:09:16 +00:00
|
|
|
desktop_files = glob("share/*.desktop")
|
2015-03-01 00:29:01 +00:00
|
|
|
# form_files = glob("forms/*.x?l")
|
2009-03-03 23:09:16 +00:00
|
|
|
image_files = glob("images/*")
|
2012-03-23 18:48:57 +00:00
|
|
|
_locale_files = glob("locale/*/LC_MESSAGES/CHIRP.mo")
|
2012-02-10 19:25:58 +00:00
|
|
|
stock_configs = glob("stock_configs/*")
|
2009-03-03 23:09:16 +00:00
|
|
|
|
|
|
|
locale_files = []
|
|
|
|
for f in _locale_files:
|
2012-03-23 18:55:12 +00:00
|
|
|
locale_files.append(("share/chirp/%s" % os.path.dirname(f), [f]))
|
2009-03-03 23:09:16 +00:00
|
|
|
|
2019-02-07 16:38:38 +00:00
|
|
|
print("LOC: %s" % str(locale_files))
|
2009-03-03 23:09:16 +00:00
|
|
|
|
2011-08-24 13:40:22 +00:00
|
|
|
xsd_files = glob("chirp*.xsd")
|
|
|
|
|
2009-03-03 23:09:16 +00:00
|
|
|
setup(
|
|
|
|
name="chirp",
|
2015-03-03 15:15:38 +00:00
|
|
|
packages=["chirp", "chirp.drivers", "chirp.ui"],
|
2009-03-03 23:09:16 +00:00
|
|
|
version=CHIRP_VERSION,
|
2017-10-12 01:39:17 +00:00
|
|
|
scripts=["chirpw", "rpttool"],
|
2012-03-23 18:55:12 +00:00
|
|
|
data_files=[('share/applications', desktop_files),
|
|
|
|
('share/chirp/images', image_files),
|
|
|
|
('share/chirp', xsd_files),
|
|
|
|
('share/doc/chirp', ['COPYING']),
|
|
|
|
('share/pixmaps', ['share/chirp.png']),
|
|
|
|
('share/man/man1', ["share/chirpw.1"]),
|
|
|
|
('share/chirp/stock_configs', stock_configs),
|
2009-03-03 23:09:16 +00:00
|
|
|
] + locale_files)
|
2009-04-25 18:06:21 +00:00
|
|
|
|
2015-02-27 23:55:58 +00:00
|
|
|
|
2009-04-25 18:06:21 +00:00
|
|
|
def nuke_manifest(*files):
|
|
|
|
for i in ["MANIFEST", "MANIFEST.in"]:
|
|
|
|
if os.path.exists(i):
|
|
|
|
os.remove(i)
|
|
|
|
|
|
|
|
if not files:
|
|
|
|
return
|
|
|
|
|
|
|
|
f = file("MANIFEST.in", "w")
|
|
|
|
for fn in files:
|
2019-02-07 16:38:38 +00:00
|
|
|
print(fn, file=f)
|
2009-04-25 18:06:21 +00:00
|
|
|
f.close()
|
2015-02-27 23:55:58 +00:00
|
|
|
|
|
|
|
|
2009-03-03 23:09:16 +00:00
|
|
|
if sys.platform == "darwin":
|
|
|
|
macos_build()
|
|
|
|
elif sys.platform == "win32":
|
|
|
|
win32_build()
|
2008-12-06 16:23:16 +00:00
|
|
|
else:
|
2017-10-12 01:39:17 +00:00
|
|
|
default_build()
|