mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-06-23 15:30:45 -04:00
Script to fix install names in ICU libs on OS X
This commit is contained in:
parent
1b06bfe756
commit
e64d92bd9a
40
setup/installer/osx/fix_icu.py
Normal file
40
setup/installer/osx/fix_icu.py
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
# vim:fileencoding=utf-8
|
||||||
|
from __future__ import (unicode_literals, division, absolute_import,
|
||||||
|
print_function)
|
||||||
|
|
||||||
|
__license__ = 'GPL v3'
|
||||||
|
__copyright__ = '2014, Kovid Goyal <kovid at kovidgoyal.net>'
|
||||||
|
|
||||||
|
# The ICU build system does not put correct install names in the dylibs it
|
||||||
|
# generates. This script will fix that.
|
||||||
|
|
||||||
|
import os, glob, subprocess, re
|
||||||
|
|
||||||
|
SW = os.environ['SW']
|
||||||
|
cc = subprocess.check_call
|
||||||
|
|
||||||
|
icu_libs = {os.path.abspath(os.path.realpath(x)) for x in glob.glob(os.path.join(SW, 'lib', 'libicu*.dylib'))}
|
||||||
|
|
||||||
|
def get_install_name(lib):
|
||||||
|
return subprocess.check_output(['otool', '-D', lib]).decode('utf-8').splitlines()[-1]
|
||||||
|
|
||||||
|
def get_dependencies(lib):
|
||||||
|
return [x.strip().partition(' ')[0] for x in
|
||||||
|
subprocess.check_output(['otool', '-L', lib]).decode('utf-8').splitlines()[2:]]
|
||||||
|
|
||||||
|
for lib in icu_libs:
|
||||||
|
install_name = os.path.basename(lib)
|
||||||
|
print ('Fixing install names in', install_name)
|
||||||
|
m = re.match(r'libicu[a-z0-9]+\.\d+', install_name)
|
||||||
|
install_name = m.group() + '.dylib' # We only want the major version in the install name
|
||||||
|
new_install_name = os.path.join(os.path.dirname(lib), install_name)
|
||||||
|
cc(['install_name_tool', '-id', new_install_name, lib])
|
||||||
|
for dep in get_dependencies(lib):
|
||||||
|
name = os.path.basename(dep)
|
||||||
|
if name.startswith('libicu'):
|
||||||
|
ndep = os.path.join(SW, 'lib', name)
|
||||||
|
if ndep != dep:
|
||||||
|
cc(['install_name_tool', '-change', dep, ndep, lib])
|
||||||
|
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user