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
from glob import glob
CHIRP_VERSION = "0.3.0dev"
CHIRP_VERSION = "py3dev"
module_dir = os.path.dirname(sys.modules["chirp"].__file__)
__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
import argparse
import gettext
import os
import sys
import wx
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
from chirp.wxui import chirpmain
if __name__ == '__main__':
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.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()
sys.exit(chirpmain())

View File

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

163
setup.py
View File

@ -1,166 +1,27 @@
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():
try:
from setuptools import setup
except ImportError:
from distutils.core import setup
from glob import glob
from setuptools import find_packages
os.system("make -C locale clean all")
from chirp import CHIRP_VERSION
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"],
setup(name='chirp',
descrption='A cross-platform cross-radio programming tool',
packages=find_packages(),
version=CHIRP_VERSION,
scripts=["chirpw", "rpttool", "chirpwx.py"],
url='https://chirp.danplanet.com',
python_requires=">=3.3,<4",
install_required=['wxPython', 'serial'],
entry_points={
'console_scripts': ["chirp=chirp.wxui:chirpmain"],
},
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()
])