Mercurial > gub
changeset 488:da9ffb48edd8
Linux Framework relocation using rpath.
author | janneke <janneke@gnu.org> |
---|---|
date | Fri, 30 Dec 2005 08:54:17 +0100 |
parents | 2cbfd0935051 |
children | 902905826f1b |
files | driver.py specs/framework.py specs/gub.py specs/lilypond.apspec.in xpm-apt.py |
diffstat | 5 files changed, 57 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/driver.py Thu Dec 29 13:41:09 2005 +0100 +++ b/driver.py Fri Dec 30 08:54:17 2005 +0100 @@ -127,6 +127,8 @@ % settings.__dict__) settings.framework_root = ('%(installer_root)s/usr/%(framework_dir)s' % settings.__dict__) + # This works, but better avoid depending on autopackage. + # os.environ['APBUILD_PROJECTNAME'] = 'lilypond/framework/0.0.0/usr/lib' def get_cli_parser (): p = optparse.OptionParser (usage="""driver.py [OPTION]... COMMAND [PACKAGE]...
--- a/specs/framework.py Thu Dec 29 13:41:09 2005 +0100 +++ b/specs/framework.py Fri Dec 30 08:54:17 2005 +0100 @@ -378,6 +378,7 @@ return LilyPond.configure_command (self) + gub.join_lines (''' --enable-static-gxx --disable-optimising +--with-framework-dir=../%(framework_dir)s/usr ''') def compile_command (self): @@ -388,21 +389,22 @@ def install (self): LilyPond.install (self) + # handle framework dir in relocate.cc? + # self.wrap_framework_program ('lilypond') for i in ( 'abc2ly', 'convert-ly', 'etf2ly', - 'lilypond', 'lilypond-book', 'lilypond-invoke-editor', 'midi2ly', 'mup2ly', 'musicxml2ly' ): - self.wrap_framework_program (i) + self.wrap_interpreter (i, 'python') + self.wrap_interpreter (i, 'guile') def wrap_framework_program (self, name): - # handle framework dir in relocate.cc? wrapper = name program = '.%(name)s-wrapped' % locals () self.system (''' @@ -410,7 +412,7 @@ ''', locals ()) self.dump ('''#! /bin/sh -# Not using Python, as python itself might need a relocation wrapper +# Not using Python/Guile, as those also need a relocation wrapper FRAMEWORK_DIR="${FRAMEWORK_DIR-/%(framework_dir)s}" if [ ! -d "$FRAMEWORK_DIR" ]; then if expr "$0" : '/' > /dev/null 2>&1; then @@ -433,7 +435,8 @@ GUILE_LOAD_PATH=$FRAMEWORK_DIR/usr/share/guile/%(guile_version)s:$GUILE_LOAD_PATH \\ GS_FONTPATH=$FRAMEWORK_DIR/usr/share/ghostscript/%(ghostscript_version)s/fonts:$GS_FONTPATH \\ GS_LIB=$FRAMEWORK_DIR/usr/share/ghostscript/%(ghostscript_version)s/lib:$GS_LIB \\ -LD_LIBRARY_PATH=$FRAMEWORK_DIR/usr/lib:$LD_LIBRARY_PATH \\ +USING_RPATH_LD_LIBRARY_PATH=$FRAMEWORK_DIR/usr/lib:$LD_LIBRARY_PATH \\ +LD_LIBRARY_PATH= \\ LILYPONDPREFIX=$prefix/share/lilypond/%(version)s/ \\ PANGO_PREFIX=${PANGO_PREFIX-$FRAMEWORK_DIR/usr} \\ PANGO_RC_FILE=${PANGO_RC_FILE-$FRAMEWORK_DIR/usr/etc/pango/pangorc} \\ @@ -449,6 +452,46 @@ os.chmod (self.expand ('%(install_root)s/usr/bin/%(name)s', locals ()), 0755) + def wrap_interpreter (self, name, interpreter): + wrapper = name + program = '.%(name)s-wrapped' % locals () + self.system (''' +cd %(install_root)s/usr/bin && mv %(wrapper)s %(program)s +''', + locals ()) + self.dump ('''#! /bin/sh +FRAMEWORK_DIR="${FRAMEWORK_DIR-/%(framework_dir)s}" +if [ ! -d "$FRAMEWORK_DIR" ]; then + if expr "$0" : '/' > /dev/null 2>&1; then + bindir=$(cd $(dirname $0); pwd) + elif [ "$(basename $0)" != "$0" ]; then + bindir=$PWD/$(dirname $0) + else + (IFS=:; for d in $PATH; do + if [ -x $d/%(program)s ]; then + bindir=$d + break + fi + done) + bindir=/usr/bin + fi + prefix=$(dirname $bindir) + FRAMEWORK_DIR="$prefix/%(framework_dir)s" +fi +GUILE_LOAD_PATH=$FRAMEWORK_DIR/usr/share/guile/%(guile_version)s:$GUILE_LOAD_PATH \\ +LD_LIBRARY_PATH=$FRAMEWORK_DIR/usr/lib:$LD_LIBRARY_PATH \\ +LILYPONDPREFIX=$prefix/share/lilypond/%(bundle_version)s/ \\ +PATH=$FRAMEWORK_DIR/usr/bin:$PATH \\ +PYTHONPATH=$FRAMEWORK_DIR/../python:$PYTHONPATH \\ +PYTHONPATH=$FRAMEWORK_DIR/usr/lib/python%(python_version)s:$PYTHONPATH \\ +%(interpreter)s %(program)s "$@" +''' +, + '%(install_root)s/usr/bin/%(name)s', + env=locals ()) + os.chmod (self.expand ('%(install_root)s/usr/bin/%(name)s', + locals ()), 0755) + class LilyPond__darwin (LilyPond): def __init__ (self, settings): LilyPond.__init__ (self, settings)
--- a/specs/gub.py Thu Dec 29 13:41:09 2005 +0100 +++ b/specs/gub.py Fri Dec 30 08:54:17 2005 +0100 @@ -435,7 +435,11 @@ dict['CXX'] = self.settings.gxx if self.settings.__dict__.has_key ('ld'): dict['LD'] = self.settings.ld - + if self.settings.platform.startswith ('linux'): + # Moved to lilypond/configure.in +# # FIXME: what happens when LD="ld $(LDFLAGS)"? + #dict['LDFLAGS'] = """-Wl,--rpath,'${ORIGIN}/../%(framework_dir)s/usr/lib'""" + dict['LDFLAGS'] = '-Wl,--as-needed' dict.update (env) return dict
--- a/specs/lilypond.apspec.in Thu Dec 29 13:41:09 2005 +0100 +++ b/specs/lilypond.apspec.in Fri Dec 30 08:54:17 2005 +0100 @@ -31,7 +31,7 @@ rm share/lilypond/@VERSION@/dvips/ps rm share/lilypond/@VERSION@/dvips/map -rm bin/.fonts.cache-1 +rm bin/fonts.cache-1 echo '*' | import
--- a/xpm-apt.py Thu Dec 29 13:41:09 2005 +0100 +++ b/xpm-apt.py Fri Dec 30 08:54:17 2005 +0100 @@ -220,6 +220,7 @@ #URG import buildnumber settings.build_number_db = buildnumber.Build_number_db (settings.topdir) + settings.framework_dir = 'FUBAR' tool_manager, target_manager = xpm.get_managers (settings)