aboutsummaryrefslogtreecommitdiffstats
path: root/setup-files/osx/setup.py
diff options
context:
space:
mode:
authorJesús Eduardo <heckyel@hyperbola.info>2017-05-31 18:08:31 -0500
committerJesús Eduardo <heckyel@hyperbola.info>2017-05-31 18:08:31 -0500
commite1180428ed3e7634fe1596103511fbb1da05f228 (patch)
tree13de9592bcde7050b089b9644839668024c518b3 /setup-files/osx/setup.py
downloadlibrevideoconverter-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.py123
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
+ )