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.
_______________________________________________ Mailing list: https://launchpad.net/~openlp-core Post to : [email protected] Unsubscribe : https://launchpad.net/~openlp-core More help : https://help.launchpad.net/ListHelp

