diff options
author | Jesús Eduardo <heckyel@hyperbola.info> | 2017-05-31 18:08:31 -0500 |
---|---|---|
committer | Jesús Eduardo <heckyel@hyperbola.info> | 2017-05-31 18:08:31 -0500 |
commit | e1180428ed3e7634fe1596103511fbb1da05f228 (patch) | |
tree | 13de9592bcde7050b089b9644839668024c518b3 /setup-files/osx/setup.py | |
download | librevideoconverter-e1180428ed3e7634fe1596103511fbb1da05f228.tar.lz librevideoconverter-e1180428ed3e7634fe1596103511fbb1da05f228.tar.xz librevideoconverter-e1180428ed3e7634fe1596103511fbb1da05f228.zip |
first commit
Diffstat (limited to 'setup-files/osx/setup.py')
-rw-r--r-- | setup-files/osx/setup.py | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/setup-files/osx/setup.py b/setup-files/osx/setup.py new file mode 100644 index 0000000..cddca4c --- /dev/null +++ b/setup-files/osx/setup.py @@ -0,0 +1,123 @@ +""" +This is a setup.py script generated by py2applet + +Usage: + python2.7 setup.py py2app +""" +import sys +if sys.version < '2.7': + raise RuntimeError('MVC requires Python 2.7') +import glob +import os +import plistlib +import shutil +import subprocess + +from setuptools import setup +from setuptools.extension import Extension + +from distutils.file_util import copy_file +from distutils.dir_util import mkpath + +from py2app.build_app import py2app as py2app_cmd + +APP = ['mvc/osx/app_main.py'] +DATA_FILES = ['mvc/widgets/osx/Resources-Widgets/MainMenu.nib'] +OPTIONS = { + 'iconfile': os.path.join(SETUP_DIR, 'mvc3.icns'), + 'excludes': ['mvc.widgets.gtk'], + 'includes': ['mvc.widgets.osx.fasttypes'], + 'packages': ['mvc', 'mvc.widgets', 'mvc.widgets.osx', 'mvc.ui', + 'mvc.qtfaststart', 'mvc.resources'] +} + +# this should work if run from build.sh +BKIT_DIR = os.environ['BKIT_PATH'] + +def copy_binaries(source, target, binaries): + mkpath(target) + for mem in binaries: + src = os.path.join(BKIT_DIR, source, mem) + if os.path.islink(src): + dst = os.path.join(target, mem) + linkto = os.readlink(src) + if os.path.exists(dst): + os.remove(dst) + os.symlink(linkto, dst) + else: + copy_file(src, target, update=True) + +def extract_tarball(tar_file, target_directory): + subprocess.check_call(["tar", "-C", target_directory, "-zxf", tar_file]) + +class py2app_mvc(py2app_cmd): + def run(self): + py2app_cmd.run(self) + self.setup_directories() + self.copy_ffmpeg() + self.copy_sparkle() + self.copy_update_public_key() + self.delete_site_py() + + def setup_directories(self): + self.bundle_root = os.path.join(self.dist_dir, + 'Miro Video Converter.app/Contents') + self.helpers_root = os.path.join(self.bundle_root, 'Helpers') + self.frameworks_root = os.path.join(self.bundle_root, 'Frameworks') + self.resources_root = os.path.join(self.bundle_root, 'Resources') + self.python_lib_root = os.path.join(self.resources_root, 'lib', + 'python2.7') + + if os.path.exists(self.helpers_root): + shutil.rmtree(self.helpers_root) + os.mkdir(self.helpers_root) + + def copy_ffmpeg(self): + ffmpeg_files = ["ffmpeg"] + lib_paths = glob.glob(os.path.join(BKIT_DIR, "ffmpeg", "bin", "*.dylib")) + ffmpeg_files.extend(os.path.basename(p) for p in lib_paths) + copy_binaries('ffmpeg/bin/', self.helpers_root, ffmpeg_files) + + def copy_sparkle(self): + tarball = os.path.join(BKIT_DIR, "frameworks", "sparkle.1.5b6.tar.gz") + extract_tarball(tarball, self.frameworks_root) + + def copy_update_public_key(self): + src = os.path.join(SETUP_DIR, "sparkle-keys", "dsa_pub.pem") + target = os.path.join(self.resources_root, 'dsa_pub.pem') + copy_file(src, target, update=True) + + def delete_site_py(self): + """Delete the site.py symlink. + + This causes issues with codesigning on 10.8 -- possibly because it's a + symlink that links to a location outside the resources dir. In any + case, it's not needed, so let's just nuke it. + """ + os.unlink(os.path.join(self.python_lib_root, 'site.py')) + +plist = plistlib.readPlist(os.path.join(SETUP_DIR, 'Info.plist')) +plist['NSHumanReadableCopyright'] = 'Copyright (C) Participatory Culture Foundation' +plist['CFBundleGetInfoString'] = 'Miro Video Converter' +plist['CFBundleIdentifier'] = 'org.participatoryculture.MiroVideoConverter' +plist['CFBundleShortVersionString'] = '3.0' +plist['CFBundleExecutable'] = 'Miro Video Converter' +plist['CFBundleName'] = 'Miro Video Converter' +plist['CFBundleVersion'] = '3.0' +plist['SUFeedURL'] = ('http://miro-updates.participatoryculture.org/' + 'mvc-appcast-osx.xml') +plist['SUPublicDSAKeyFile'] = 'dsa_pub.pem' + +OPTIONS['plist'] = plist + +setup( + app=APP, + data_files=DATA_FILES, + options={'py2app': OPTIONS}, + setup_requires=['py2app'], + cmdclass={'py2app': py2app_mvc}, + ext_modules=[ + Extension("mvc.widgets.osx.fasttypes", + [os.path.join(ROOT_DIR, 'mvc', 'widgets', 'osx', 'fasttypes.c')])], + **SETUP_ARGS + ) |