aboutsummaryrefslogtreecommitdiff
path: root/setup.py
diff options
context:
space:
mode:
authorMatthew Poletiek <matthew.poletiek@gmail.com>2020-12-08 21:03:16 -0600
committerMatthew Poletiek <matthew.poletiek@gmail.com>2020-12-08 21:03:16 -0600
commite99416456afd4aa8bde42016826f9a345291cbf3 (patch)
treea7a95639cd1cb5dbe2d91a2ca8e8defafac4296d /setup.py
parent194cf4e5e0b6a2811103a9b739a72b9afe2b886c (diff)
downloadchirp-e99416456afd4aa8bde42016826f9a345291cbf3.tar.gz
chirp-e99416456afd4aa8bde42016826f9a345291cbf3.tar.xz
Initial Commit
Diffstat (limited to 'setup.py')
-rw-r--r--setup.py163
1 files changed, 163 insertions, 0 deletions
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000..e403d91
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,163 @@
+from __future__ import print_function
+
+import sys
+import glob
+import os
+
+from chirp import CHIRP_VERSION
+import chirp
+from chirp import directory
+
+directory.safe_import_drivers()
+
+
+def staticify_chirp_module():
+ import chirp
+
+ 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)
+
+ print("Set chirp/__init__.py::__all__ = %s" % str(chirp.__all__))
+
+
+def staticify_drivers_module():
+ import chirp.drivers
+
+ with file("chirp/drivers/__init__.py", "w") as init:
+ print("__all__ = %s\n" % str(chirp.drivers.__all__), file=init)
+
+ print("Set chirp/drivers/__init__.py::__all__ = %s" % str(
+ chirp.drivers.__all__))
+
+
+def win32_build():
+ from distutils.core import setup
+ import py2exe
+
+ 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)
+ for extra in ["win32com.shell"]: # ,"win32com.mapi"
+ __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
+
+ staticify_chirp_module()
+ staticify_drivers_module()
+
+ opts = {
+ "py2exe": {
+ "includes": "pango,atk,gobject,cairo,pangocairo," +
+ "win32gui,win32com,win32com.shell," +
+ "email.iterators,email.generator,gio",
+
+ "compressed": 1,
+ "optimize": 2,
+ "bundle_files": 3,
+ # "packages": ""
+ }
+ }
+
+ mods = []
+ for mod in chirp.__all__:
+ mods.append("chirp.%s" % mod)
+ for mod in chirp.drivers.__all__:
+ mods.append("chirp.drivers.%s" % mod)
+ opts["py2exe"]["includes"] += ("," + ",".join(mods))
+
+ setup(
+ zipfile=None,
+ windows=[{'script': "chirpw",
+ 'icon_resources': [(0x0004, 'share/chirp.ico')],
+ }],
+ options=opts)
+
+
+def macos_build():
+ from setuptools import setup
+ import shutil
+
+ APP = ['chirp-%s.py' % CHIRP_VERSION]
+ shutil.copy("chirpw", APP[0])
+ DATA_FILES = [('../Frameworks', ['/opt/local/lib/libpangox-1.0.dylib']),
+ ('../Resources/', ['/opt/local/lib/pango']),
+ ]
+ OPTIONS = {'argv_emulation': True, "includes": "gtk,atk,pangocairo,cairo"}
+
+ setup(
+ app=APP,
+ data_files=DATA_FILES,
+ options={'py2app': OPTIONS},
+ setup_requires=['py2app'],
+ )
+
+ EXEC = 'bash ./build/macos/make_pango.sh ' + \
+ '/opt/local dist/chirp-%s.app' % CHIRP_VERSION
+ # print "exec string: %s" % EXEC
+ os.system(EXEC)
+
+
+def default_build():
+ from distutils.core import setup
+ from glob import glob
+
+ os.system("make -C locale clean all")
+
+ desktop_files = glob("share/*.desktop")
+ # form_files = glob("forms/*.x?l")
+ image_files = glob("images/*")
+ _locale_files = glob("locale/*/LC_MESSAGES/CHIRP.mo")
+ stock_configs = glob("stock_configs/*")
+
+ locale_files = []
+ for f in _locale_files:
+ locale_files.append(("share/chirp/%s" % os.path.dirname(f), [f]))
+
+ print("LOC: %s" % str(locale_files))
+
+ xsd_files = glob("chirp*.xsd")
+
+ setup(
+ name="chirp",
+ packages=["chirp", "chirp.drivers", "chirp.ui", "tests", "tests.unit",
+ "chirp.wxui"],
+ version=CHIRP_VERSION,
+ scripts=["chirpw", "rpttool", "chirpwx.py"],
+ 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),
+ ] + locale_files)
+
+
+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:
+ print(fn, file=f)
+ f.close()
+
+
+if sys.platform == "darwin":
+ macos_build()
+elif sys.platform == "win32":
+ win32_build()
+else:
+ default_build()