openlp-core team mailing list archive
-
openlp-core team
-
Mailing list archive
-
Message #23765
[Merge] lp:~springermac/openlp/packaging-mac into lp:openlp/packaging
Jonathan Springer has proposed merging lp:~springermac/openlp/packaging-mac into lp:openlp/packaging.
Requested reviews:
OpenLP Core (openlp-core)
For more details, see:
https://code.launchpad.net/~springermac/openlp/packaging-mac/+merge/223145
Link mudraw binary to bundled libraries on Mac OS X
Add Retina support for Mac
Add bzrignore
--
https://code.launchpad.net/~springermac/openlp/packaging-mac/+merge/223145
Your team OpenLP Core is requested to review the proposed merge of lp:~springermac/openlp/packaging-mac into lp:openlp/packaging.
=== added file '.bzrignore'
--- .bzrignore 1970-01-01 00:00:00 +0000
+++ .bzrignore 2014-06-14 03:50:20 +0000
@@ -0,0 +1,36 @@
+*.pyc
+*.*~
+\#*\#
+*.eric4project
+*.eric5project
+*.ropeproject
+*.e4*
+.eric4project
+.komodotools
+*.komodoproject
+list
+openlp.org 2.0.e4*
+documentation/build/html
+documentation/build/doctrees
+*.log*
+dist
+OpenLP.egg-info
+build
+resources/innosetup/Output
+_eric4project
+.pylint.d
+*.qm
+openlp/core/resources.py.old
+*.qm
+resources/windows/warnOpenLP.txt
+openlp.cfg
+.idea
+openlp.pro
+.kdev4
+tests.kdev4
+*.nja
+*.orig
+__pycache__
+*.dll
+*.DS_Store
+config.ini
=== modified file 'osx/Info.plist'
--- osx/Info.plist 2012-06-09 19:02:47 +0000
+++ osx/Info.plist 2014-06-14 03:50:20 +0000
@@ -1,125 +1,124 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
-
- <key>CFBundleDocumentTypes</key>
- <array>
- <dict>
- <key>CFBundleTypeExtension</key>
- <array>
- <string>osz</string>
- </array>
- <key>CFBundleTypeIconFiles</key>
- <array>
- <string>OpenLP.icns</string>
- </array>
- <key>CFBundleTypeName</key>
- <string>OpenLP Service</string>
- <key>CFBundleTypeRole</key>
- <string>Viewer</string>
- <key>LSHandlerRank</key>
- <string>Owner</string>
- <key>LSItemContentTypes</key>
- <array>
- <string>org.openlp.osz</string>
- </array>
- </dict>
- <dict>
- <key>CFBundleTypeExtension</key>
- <array>
- <string>otz</string>
- </array>
- <key>CFBundleTypeIconFiles</key>
- <array>
- <string>OpenLP.icns</string>
- </array>
- <key>CFBundleTypeName</key>
- <string>OpenLP Theme</string>
- <key>CFBundleTypeRole</key>
- <string>Viewer</string>
- <key>LSHandlerRank</key>
- <string>Owner</string>
- <key>LSItemContentTypes</key>
- <array>
- <string>org.openlp.otz</string>
- </array>
- </dict>
- </array>
-
- <key>UTExportedTypeDeclarations</key>
- <array>
- <dict>
- <key>UTTypeIdentifier</key>
- <string>org.openlp.osz</string>
- <key>UTTypeDescription</key>
- <string>OpenLP Service</string>
- <key>UTTypeConformsTo</key>
- <array>
- <string>public.data</string>
- <string>public.content</string>
- </array>
- <key>UTTypeTagSpecification</key>
- <dict>
- <key>public.filename-extension</key>
- <array>
- <string>osz</string>
- </array>
- <key>public.mime-type</key>
- <array>
- <string>application/x-openlp-service</string>
- </array>
- </dict>
- </dict>
- <dict>
- <key>UTTypeIdentifier</key>
- <string>org.openlp.otz</string>
- <key>UTTypeDescription</key>
- <string>OpenLP Theme</string>
- <key>UTTypeConformsTo</key>
- <array>
- <string>public.data</string>
- <string>public.content</string>
- </array>
- <key>UTTypeTagSpecification</key>
- <dict>
- <key>public.filename-extension</key>
- <array>
- <string>otz</string>
- </array>
- <key>public.mime-type</key>
- <array>
- <string>application/x-openlp-theme</string>
- </array>
- </dict>
- </dict>
- </array>
-
-<key>CFBundleIdentifier</key>
-<string>org.openlp</string>
-<key>CFBundleShortVersionString</key>
-<string>%(openlp_version)s</string>
-<key>CFBundleVersion</key>
-<string>%(openlp_version)s</string>
-<key>CFBundleInfoDictionaryVersion</key>
-<string>6.0</string>
-<key>CFBundleDisplayName</key>
-<string>OpenLP</string>
-<key>CFBundleIconFile</key>
-<string>OpenLP.icns</string>
-<key>CFBundleExecutable</key>
-<string>MacOS/OpenLP</string>
-<key>CFBundleName</key>
-<string>OpenLP</string>
-<key>CFBundleGetInfoString</key>
-<string>OpenLP %(openlp_version)s</string>
-<key>LSHasLocalizedDisplayName</key>
-<false/>
-<key>NSAppleScriptEnabled</key>
-<false/>
-<key>CFBundlePackageType</key>
-<string>APPL</string>
-<key>LSBackgroundOnly</key>
-<false/>
+ <key>CFBundleDocumentTypes</key>
+ <array>
+ <dict>
+ <key>CFBundleTypeExtension</key>
+ <array>
+ <string>osz</string>
+ </array>
+ <key>CFBundleTypeIconFiles</key>
+ <array>
+ <string>OpenLP.icns</string>
+ </array>
+ <key>CFBundleTypeName</key>
+ <string>OpenLP Service</string>
+ <key>CFBundleTypeRole</key>
+ <string>Viewer</string>
+ <key>LSHandlerRank</key>
+ <string>Owner</string>
+ <key>LSItemContentTypes</key>
+ <array>
+ <string>org.openlp.osz</string>
+ </array>
+ </dict>
+ <dict>
+ <key>CFBundleTypeExtension</key>
+ <array>
+ <string>otz</string>
+ </array>
+ <key>CFBundleTypeIconFiles</key>
+ <array>
+ <string>OpenLP.icns</string>
+ </array>
+ <key>CFBundleTypeName</key>
+ <string>OpenLP Theme</string>
+ <key>CFBundleTypeRole</key>
+ <string>Viewer</string>
+ <key>LSHandlerRank</key>
+ <string>Owner</string>
+ <key>LSItemContentTypes</key>
+ <array>
+ <string>org.openlp.otz</string>
+ </array>
+ </dict>
+ </array>
+ <key>UTExportedTypeDeclarations</key>
+ <array>
+ <dict>
+ <key>UTTypeIdentifier</key>
+ <string>org.openlp.osz</string>
+ <key>UTTypeDescription</key>
+ <string>OpenLP Service</string>
+ <key>UTTypeConformsTo</key>
+ <array>
+ <string>public.data</string>
+ <string>public.content</string>
+ </array>
+ <key>UTTypeTagSpecification</key>
+ <dict>
+ <key>public.filename-extension</key>
+ <array>
+ <string>osz</string>
+ </array>
+ <key>public.mime-type</key>
+ <array>
+ <string>application/x-openlp-service</string>
+ </array>
+ </dict>
+ </dict>
+ <dict>
+ <key>UTTypeIdentifier</key>
+ <string>org.openlp.otz</string>
+ <key>UTTypeDescription</key>
+ <string>OpenLP Theme</string>
+ <key>UTTypeConformsTo</key>
+ <array>
+ <string>public.data</string>
+ <string>public.content</string>
+ </array>
+ <key>UTTypeTagSpecification</key>
+ <dict>
+ <key>public.filename-extension</key>
+ <array>
+ <string>otz</string>
+ </array>
+ <key>public.mime-type</key>
+ <array>
+ <string>application/x-openlp-theme</string>
+ </array>
+ </dict>
+ </dict>
+ </array>
+ <key>CFBundleIdentifier</key>
+ <string>org.openlp</string>
+ <key>CFBundleShortVersionString</key>
+ <string>%(openlp_version)s</string>
+ <key>CFBundleVersion</key>
+ <string>%(openlp_version)s</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleDisplayName</key>
+ <string>OpenLP</string>
+ <key>CFBundleIconFile</key>
+ <string>OpenLP.icns</string>
+ <key>CFBundleExecutable</key>
+ <string>MacOS/OpenLP</string>
+ <key>CFBundleName</key>
+ <string>OpenLP</string>
+ <key>CFBundleGetInfoString</key>
+ <string>OpenLP %(openlp_version)s</string>
+ <key>LSHasLocalizedDisplayName</key>
+ <false/>
+ <key>NSAppleScriptEnabled</key>
+ <false/>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>LSBackgroundOnly</key>
+ <true/>
+ <key>NSHighResolutionCapable</key>
+ <true/>
</dict>
</plist>
=== modified file 'osx/macosx-builder.py'
--- osx/macosx-builder.py 2014-05-30 08:59:26 +0000
+++ osx/macosx-builder.py 2014-06-14 03:50:20 +0000
@@ -93,6 +93,11 @@
Required for PDF support in OpenLP. Install using macports, or use the
'--mudraw-bin' option of this script to point to the mudraw binary.
+MachOLib
+ Python library to analyze and edit Mach-O headers, the executable format
+ used by Mac OS X. Used to relink the mudraw binary from MuPDF to the bundled
+ libraries. Install using macports or pip.
+
config.ini.default
The configuration file contains settings of the version string to include
in the bundle as well as directory and file settings for different
@@ -126,6 +131,9 @@
from configparser import ConfigParser
from argparse import ArgumentParser
+from macholib.MachO import MachO
+from macholib.util import flipwritable, in_system_path
+
def _which(command):
"""
@@ -451,9 +459,58 @@
self._print_verbose('... mudraw')
if self.mudraw_bin and os.path.isfile(self.mudraw_bin):
copy(os.path.join(self.mudraw_bin), os.path.join(self.dist_path, 'mudraw'))
+ self.relink_mudraw()
else:
self._print('... WARNING: mudraw not found')
+ def relink_mudraw(self):
+ """
+ Relink mudraw to bundled libraries
+ """
+ self._print('Linking mudraw with bundled libraries...')
+ libname = os.path.join(self.dist_path, 'mudraw')
+ distname = os.path.relpath(self.dist_path, libname)
+ self._print_verbose('... mudraw path %s', libname)
+
+ # Determine how many directories up is the directory with shared
+ # dynamic libraries. '../'
+ # E.g. ./qt4_plugins/images/ -> ./../../
+ parent_dir = ''
+ # Check if distname is not only base filename.
+ if os.path.dirname(distname):
+ parent_level = len(os.path.dirname(distname).split(os.sep))
+ parent_dir = parent_level * (os.pardir + os.sep)
+
+ def match_func(pth):
+ """
+ For system libraries leave path unchanged.
+ """
+ # Match non system dynamic libraries.
+ if not in_system_path(pth):
+ # Use relative path to dependend dynamic libraries bases on
+ # location of the executable.
+ pth = os.path.join('@loader_path', parent_dir, os.path.basename(pth))
+ self._print_verbose('... %s', pth)
+ return pth
+
+ # Rewrite mach headers with @loader_path.
+ dll = MachO(libname)
+ dll.rewriteLoadCommands(match_func)
+
+ # Write changes into file.
+ # Write code is based on macholib example.
+ try:
+ self._print_verbose('... writing new library paths')
+ f = open(dll.filename, 'rb+')
+ for header in dll.headers:
+ f.seek(0)
+ dll.write(f)
+ f.seek(0, 2)
+ f.flush()
+ f.close()
+ except Exception:
+ pass
+
def update_translations(self):
"""
Update the translations.
Follow ups