Start fresh with setup.py

This commit is contained in:
Dan Smith 2022-11-23 15:37:49 -08:00 committed by Dan Smith
parent 7286a14c9e
commit d246d705aa
5 changed files with 86 additions and 225 deletions

View File

@ -17,7 +17,7 @@ import os
import sys import sys
from glob import glob from glob import glob
CHIRP_VERSION = "0.3.0dev" CHIRP_VERSION = "py3dev"
module_dir = os.path.dirname(sys.modules["chirp"].__file__) module_dir = os.path.dirname(sys.modules["chirp"].__file__)
__all__ = [] __all__ = []

View File

@ -0,0 +1,59 @@
import argparse
import gettext
import os
import sys
from chirp import directory
from chirp import logger
def chirpmain():
import wx
from chirp.ui import config
from chirp.wxui import main
directory.import_drivers()
gettext.install('CHIRP')
parser = argparse.ArgumentParser()
parser.add_argument("files", metavar="file", nargs='*',
help="File to open")
parser.add_argument("--module", metavar="module",
help="Load module on startup")
logger.add_version_argument(parser)
parser.add_argument("--profile", action="store_true",
help="Enable profiling")
parser.add_argument("--onlydriver", nargs="+",
help="Include this driver while loading")
parser.add_argument("--inspect", action="store_true",
help="Show wxPython inspector")
if sys.platform == 'linux':
parser.add_argument('--no-linux-gdk-backend', action='store_true',
help='Do not force GDK_BACKEND=x11')
logger.add_arguments(parser)
args = parser.parse_args()
logger.handle_options(args)
directory.import_drivers(limit=args.onlydriver)
CONF = config.get()
if CONF.get('developer', 'state'):
from chirp.drivers import fake
fake.register_fakes()
# wxGTK on Wayland seems to have problems. Override GDK_BACKEND to
# use X11, unless we were asked not to
if sys.platform == 'linux' and not args.no_linux_gdk_backend:
os.putenv('GDK_BACKEND', 'x11')
app = wx.App()
mainwindow = main.ChirpMain(None, title='CHIRP')
mainwindow.Show()
for fn in args.files:
mainwindow.open_file(fn, select=False)
if args.inspect:
from wx.lib import inspection
inspection.InspectionTool().Show()
app.MainLoop()

View File

@ -1,67 +1,8 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
import argparse
import gettext
import os
import sys import sys
import wx from chirp.wxui import chirpmain
import wx.aui
import wx.grid
import wx.lib.newevent
# Import the drivers module before directory for frozen builds
from chirp import drivers
from chirp import directory
from chirp import logger
from chirp.ui import config
from chirp.wxui import main
if __name__ == '__main__': if __name__ == '__main__':
gettext.install('CHIRP') sys.exit(chirpmain())
parser = argparse.ArgumentParser()
parser.add_argument("files", metavar="file", nargs='*',
help="File to open")
parser.add_argument("--module", metavar="module",
help="Load module on startup")
logger.add_version_argument(parser)
parser.add_argument("--profile", action="store_true",
help="Enable profiling")
parser.add_argument("--onlydriver", nargs="+",
help="Include this driver while loading")
parser.add_argument("--inspect", action="store_true",
help="Show wxPython inspector")
if sys.platform == 'linux':
parser.add_argument('--no-linux-gdk-backend', action='store_true',
help='Do not force GDK_BACKEND=x11')
logger.add_arguments(parser)
args = parser.parse_args()
logger.handle_options(args)
directory.safe_import_drivers(limit=args.onlydriver)
CONF = config.get()
if CONF.get('developer', 'state'):
from chirp.drivers import fake
fake.register_fakes()
# wxGTK on Wayland seems to have problems. Override GDK_BACKEND to
# use X11, unless we were asked not to
if sys.platform == 'linux' and not args.no_linux_gdk_backend:
os.putenv('GDK_BACKEND', 'x11')
app = wx.App()
mainwindow = main.ChirpMain(None, title='CHIRP')
mainwindow.Show()
for fn in args.files:
mainwindow.open_file(fn, select=False)
if args.inspect:
import wx.lib.inspection
wx.lib.inspection.InspectionTool().Show()
app.MainLoop()

View File

@ -1,5 +1,5 @@
six six
wxPython==4.2.0 wxPython>=4.0,<4.2.0 # See https://github.com/wxWidgets/Phoenix/issues/2225
pyserial pyserial
future future
requests requests

185
setup.py
View File

@ -1,166 +1,27 @@
from __future__ import print_function from distutils.core import setup
from glob import glob
import sys from setuptools import find_packages
import glob
import os
from chirp import CHIRP_VERSION from chirp import CHIRP_VERSION
import chirp
from chirp import directory
directory.safe_import_drivers() desktop_files = glob("share/*.desktop")
image_files = glob("images/*")
stock_configs = glob("stock_configs/*")
setup(name='chirp',
def staticify_chirp_module(): descrption='A cross-platform cross-radio programming tool',
import chirp packages=find_packages(),
version=CHIRP_VERSION,
with open("chirp/__init__.py", "w") as init: url='https://chirp.danplanet.com',
print("CHIRP_VERSION = \"%s\"" % CHIRP_VERSION, file=init) python_requires=">=3.3,<4",
print("__all__ = %s\n" % str(chirp.__all__), file=init) install_required=['wxPython', 'serial'],
entry_points={
print("Set chirp/__init__.py::__all__ = %s" % str(chirp.__all__)) 'console_scripts': ["chirp=chirp.wxui:chirpmain"],
},
data_files=[('share/applications', desktop_files),
def staticify_drivers_module(): ('share/chirp/images', image_files),
import chirp.drivers ('share/doc/chirp', ['COPYING']),
('share/pixmaps', ['share/chirp.png']),
with file("chirp/drivers/__init__.py", "w") as init: ('share/man/man1', ["share/chirpw.1"]),
print("__all__ = %s\n" % str(chirp.drivers.__all__), file=init) ('share/chirp/stock_configs', stock_configs),
])
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():
try:
from setuptools import setup
except ImportError:
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()