mirror of
https://gitlab.com/openlp/packaging.git
synced 2024-12-22 21:12:50 +00:00
Link mudraw binary to bundled libraries on Mac OS X
Add Retina support for Mac Add bzrignore bzr-revno: 12
This commit is contained in:
commit
d4844ce03b
36
.bzrignore
Normal file
36
.bzrignore
Normal file
@ -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
|
@ -1,8 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?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">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
|
|
||||||
<key>CFBundleDocumentTypes</key>
|
<key>CFBundleDocumentTypes</key>
|
||||||
<array>
|
<array>
|
||||||
<dict>
|
<dict>
|
||||||
@ -46,7 +45,6 @@
|
|||||||
</array>
|
</array>
|
||||||
</dict>
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
|
|
||||||
<key>UTExportedTypeDeclarations</key>
|
<key>UTExportedTypeDeclarations</key>
|
||||||
<array>
|
<array>
|
||||||
<dict>
|
<dict>
|
||||||
@ -94,32 +92,33 @@
|
|||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
|
<key>CFBundleIdentifier</key>
|
||||||
<key>CFBundleIdentifier</key>
|
<string>org.openlp</string>
|
||||||
<string>org.openlp</string>
|
<key>CFBundleShortVersionString</key>
|
||||||
<key>CFBundleShortVersionString</key>
|
<string>%(openlp_version)s</string>
|
||||||
<string>%(openlp_version)s</string>
|
<key>CFBundleVersion</key>
|
||||||
<key>CFBundleVersion</key>
|
<string>%(openlp_version)s</string>
|
||||||
<string>%(openlp_version)s</string>
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
<key>CFBundleInfoDictionaryVersion</key>
|
<string>6.0</string>
|
||||||
<string>6.0</string>
|
<key>CFBundleDisplayName</key>
|
||||||
<key>CFBundleDisplayName</key>
|
<string>OpenLP</string>
|
||||||
<string>OpenLP</string>
|
<key>CFBundleIconFile</key>
|
||||||
<key>CFBundleIconFile</key>
|
<string>OpenLP.icns</string>
|
||||||
<string>OpenLP.icns</string>
|
<key>CFBundleExecutable</key>
|
||||||
<key>CFBundleExecutable</key>
|
<string>MacOS/OpenLP</string>
|
||||||
<string>MacOS/OpenLP</string>
|
<key>CFBundleName</key>
|
||||||
<key>CFBundleName</key>
|
<string>OpenLP</string>
|
||||||
<string>OpenLP</string>
|
<key>CFBundleGetInfoString</key>
|
||||||
<key>CFBundleGetInfoString</key>
|
<string>OpenLP %(openlp_version)s</string>
|
||||||
<string>OpenLP %(openlp_version)s</string>
|
<key>LSHasLocalizedDisplayName</key>
|
||||||
<key>LSHasLocalizedDisplayName</key>
|
<false/>
|
||||||
<false/>
|
<key>NSAppleScriptEnabled</key>
|
||||||
<key>NSAppleScriptEnabled</key>
|
<false/>
|
||||||
<false/>
|
<key>CFBundlePackageType</key>
|
||||||
<key>CFBundlePackageType</key>
|
<string>APPL</string>
|
||||||
<string>APPL</string>
|
<key>LSBackgroundOnly</key>
|
||||||
<key>LSBackgroundOnly</key>
|
<true/>
|
||||||
<false/>
|
<key>NSHighResolutionCapable</key>
|
||||||
|
<true/>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
@ -93,6 +93,11 @@ MuPDF
|
|||||||
Required for PDF support in OpenLP. Install using macports, or use the
|
Required for PDF support in OpenLP. Install using macports, or use the
|
||||||
'--mudraw-bin' option of this script to point to the mudraw binary.
|
'--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
|
config.ini.default
|
||||||
The configuration file contains settings of the version string to include
|
The configuration file contains settings of the version string to include
|
||||||
in the bundle as well as directory and file settings for different
|
in the bundle as well as directory and file settings for different
|
||||||
@ -126,6 +131,9 @@ from subprocess import Popen, PIPE
|
|||||||
from configparser import ConfigParser
|
from configparser import ConfigParser
|
||||||
from argparse import ArgumentParser
|
from argparse import ArgumentParser
|
||||||
|
|
||||||
|
from macholib.MachO import MachO
|
||||||
|
from macholib.util import flipwritable, in_system_path
|
||||||
|
|
||||||
|
|
||||||
def _which(command):
|
def _which(command):
|
||||||
"""
|
"""
|
||||||
@ -451,9 +459,58 @@ class MacosxBuilder(object):
|
|||||||
self._print_verbose('... mudraw')
|
self._print_verbose('... mudraw')
|
||||||
if self.mudraw_bin and os.path.isfile(self.mudraw_bin):
|
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'))
|
copy(os.path.join(self.mudraw_bin), os.path.join(self.dist_path, 'mudraw'))
|
||||||
|
self.relink_mudraw()
|
||||||
else:
|
else:
|
||||||
self._print('... WARNING: mudraw not found')
|
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):
|
def update_translations(self):
|
||||||
"""
|
"""
|
||||||
Update the translations.
|
Update the translations.
|
||||||
|
Loading…
Reference in New Issue
Block a user