diff options
author | 2016-08-06 08:47:53 +0200 | |
---|---|---|
committer | 2016-08-06 09:05:08 +0200 | |
commit | 288a728fc408f7a20cff8422f4660749eaf1091f (patch) | |
tree | 656222cb63270a7e56cef27aac317df7e6c4af5a /dev-util/meson/files | |
parent | app-text/calibre: version bump to 2.63.0 (diff) | |
download | gentoo-288a728fc408f7a20cff8422f4660749eaf1091f.tar.gz gentoo-288a728fc408f7a20cff8422f4660749eaf1091f.tar.bz2 gentoo-288a728fc408f7a20cff8422f4660749eaf1091f.zip |
dev-util/meson: new package needed by gst-transcoder (and probably needed by more gstreamer stuff in the future).
Package-Manager: portage-2.3.0
Diffstat (limited to 'dev-util/meson/files')
-rw-r--r-- | dev-util/meson/files/meson-0.33.0-runpath.patch | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/dev-util/meson/files/meson-0.33.0-runpath.patch b/dev-util/meson/files/meson-0.33.0-runpath.patch new file mode 100644 index 000000000000..2081cd3a8fbe --- /dev/null +++ b/dev-util/meson/files/meson-0.33.0-runpath.patch @@ -0,0 +1,96 @@ +From b42c0555ca35ebf6e97438ef414a3de62eaa2ced Mon Sep 17 00:00:00 2001 +From: Jussi Pakkanen <jpakkane@gmail.com> +Date: Tue, 2 Aug 2016 21:45:45 +0300 +Subject: [PATCH] Handle both DT_RPATH as well as DT_RUNPATH when fixing rpath + settings. + +--- + mesonbuild/scripts/depfixer.py | 30 +++++++++++++++++++++++------- + 1 file changed, 23 insertions(+), 7 deletions(-) + +diff --git a/mesonbuild/scripts/depfixer.py b/mesonbuild/scripts/depfixer.py +index 8ff0dd1..cb136f4 100644 +--- a/mesonbuild/scripts/depfixer.py ++++ b/mesonbuild/scripts/depfixer.py +@@ -20,6 +20,7 @@ + SHT_STRTAB = 3 + DT_NEEDED = 1 + DT_RPATH = 15 ++DT_RUNPATH = 29 + DT_STRTAB = 5 + DT_SONAME = 14 + +@@ -211,21 +212,29 @@ def print_soname(self): + self.bf.seek(strtab.val + soname.val) + print(self.read_str()) + +- def get_rpath_offset(self): ++ def get_entry_offset(self, entrynum): + sec = self.find_section(b'.dynstr') + for i in self.dynamic: +- if i.d_tag == DT_RPATH: ++ if i.d_tag == entrynum: + return sec.sh_offset + i.val + return None + + def print_rpath(self): +- offset = self.get_rpath_offset() ++ offset = self.get_entry_offset(DT_RPATH) + if offset is None: + print("This file does not have an rpath.") + else: + self.bf.seek(offset) + print(self.read_str()) + ++ def print_runpath(self): ++ offset = self.get_entry_offset(DT_RUNPATH) ++ if offset is None: ++ print("This file does not have a runpath.") ++ else: ++ self.bf.seek(offset) ++ print(self.read_str()) ++ + def print_deps(self): + sec = self.find_section(b'.dynstr') + deps = [] +@@ -257,9 +266,15 @@ def fix_deps(self, prefix): + self.bf.write(newname) + + def fix_rpath(self, new_rpath): ++ # The path to search for can be either rpath or runpath. ++ # Fix both of them to be sure. ++ self.fix_rpathtype_entry(new_rpath, DT_RPATH) ++ self.fix_rpathtype_entry(new_rpath, DT_RUNPATH) ++ ++ def fix_rpathtype_entry(self, new_rpath, entrynum): + if isinstance(new_rpath, str): + new_rpath = new_rpath.encode('utf8') +- rp_off = self.get_rpath_offset() ++ rp_off = self.get_entry_offset(entrynum) + if rp_off is None: + if self.verbose: + print('File does not have rpath. It should be a fully static executable.') +@@ -272,12 +287,12 @@ def fix_rpath(self, new_rpath): + self.bf.write(new_rpath) + self.bf.write(b'\0'*(len(old_rpath) - len(new_rpath) + 1)) + if len(new_rpath) == 0: +- self.remove_rpath_entry() ++ self.remove_rpath_entry(entrynum) + +- def remove_rpath_entry(self): ++ def remove_rpath_entry(self, entrynum): + sec = self.find_section(b'.dynamic') + for (i, entry) in enumerate(self.dynamic): +- if entry.d_tag == DT_RPATH: ++ if entry.d_tag == entrynum: + rpentry = self.dynamic[i] + rpentry.d_tag = 0 + self.dynamic = self.dynamic[:i] + self.dynamic[i+1:] + [rpentry] +@@ -296,6 +311,7 @@ def run(args): + e = Elf(args[0]) + if len(args) == 1: + e.print_rpath() ++ e.print_runpath() + else: + new_rpath = args[1] + e.fix_rpath(new_rpath) |