fah-control/SConstruct
Kevin Bernhagen 2d272e2e53 osx updates
Delete build/pkg before building.
Make build files python3-ready.
Update osx installer scripts.
Add osx/themes directory with gtk2 themes.
Add sandbox entitlements.
Do not access themes dirs not allowed by sandbox.
Disable sandbox for now, as it interferes with passing args to FAHViewer. Probably need app groups entitlement and drop an args.json file in group container.
2021-08-04 16:38:19 -07:00

117 lines
3.4 KiB
Python

# Setup
import os
env = Environment(ENV = os.environ)
try:
env.Tool('config', toolpath = [os.environ.get('CBANG_HOME')])
except Exception as e:
raise Exception('CBANG_HOME not set?\n' + str(e))
env.CBLoadTools('packager run_distutils osx fah-client-version')
env.CBAddVariables(
BoolVariable('cross_mingw', 'Build with mingw cross compiler', 0))
conf = env.CBConfigure()
# Version
try:
version = env.FAHClientVersion()
except Exception as e:
print(e)
version = '0.0.0'
env.Replace(PACKAGE_VERSION = version)
f = open('version.txt', 'w')
f.write(version)
f.close()
if env['PLATFORM'] != 'darwin': env['package_arch'] = 'noarch'
# Build
target_dir = None
if env['PLATFORM'] == 'darwin':
env['RUN_DISTUTILSOPTS'] = 'py2app'
target_dir = 'dist/FAHControl.app'
import shutil
# rm old pkg dir so osx fah installer won't bundle an old build
shutil.rmtree('build/pkg', True)
elif env['PLATFORM'] == 'win32' or int(env.get('cross_mingw', 0)):
env['RUN_DISTUTILSOPTS'] = 'build'
target_dir = 'gui'
target_pat = '' # Not packaged here
elif env.GetPackageType() == 'deb':
env['RUN_DISTUTILSOPTS'] = ['--command-packages=stdeb.command', 'bdist_deb']
target_dir = 'deb_dist'
target_pat = 'deb_dist/fahcontrol_%s-*.deb' % version
# Run distutils
gui = None
if env.GetPackageType() != 'rpm':
# Cleanup old GUI build
# Note: py2app does not work correctly if the old .app is still around
import shutil
shutil.rmtree(target_dir, True)
if int(env.get('cross_mingw', 0)):
# Use the cross compiled Python
gui = env.Command(target_dir, 'setup.py', 'python2.exe setup.py build')
else:
gui = env.RunDistUtils(Dir(target_dir), 'setup.py')
Default(gui)
AlwaysBuild(gui)
# Package
if env['PLATFORM'] == 'darwin' or env.GetPackageType() == 'rpm':
pkg = env.Packager(
'FAHControl',
version = version,
maintainer = 'Joseph Coffland <joseph@cauldrondevelopment.com>',
vendor = 'Folding@home',
url = 'https://foldingathome.org/',
license = 'LICENSE.txt',
bug_url = 'https://apps.foldingathome.org/bugs/',
summary = 'Folding@home Control',
description = \
'Control and monitor local and remote Folding@home clients',
prefix = '/usr',
documents = ['README.md', 'CHANGELOG.md', 'LICENSE.txt'],
desktop_menu = ['FAHControl.desktop'],
icons = ['images/FAHControl.png'],
rpm_license = 'GPL v3+',
rpm_group = 'Applications/Internet',
rpm_requires = 'python, pygtk2',
rpm_build = 'rpm/build',
rpm_filelist = 'filelist.txt',
pkg_id = 'org.foldingathome.fahcontrol.pkg',
pkg_resources = 'osx/Resources',
pkg_apps = [['dist/FAHControl.app', 'Folding@home/FAHControl.app']],
pkg_scripts = 'osx/scripts',
pkg_target = '10.6',
pkg_distribution = 'osx/distribution.xml',
)
AlwaysBuild(pkg)
env.Alias('package', pkg)
if gui is not None: Depends(pkg, gui)
else:
# Write package.txt
def write_filename(target, source, env):
import glob
filename = str(Glob(target_pat)[0])
open(str(target[0]), 'w').write(filename)
bld = Builder(action = write_filename)
env.Append(BUILDERS = {'WriteFilename' : bld})
cmd = env.WriteFilename('package.txt', [])
AlwaysBuild(cmd)
if gui is not None: Depends(cmd, gui)
env.Alias('package', [cmd])