summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPacho Ramos <pacho@gentoo.org>2016-08-06 08:47:53 +0200
committerPacho Ramos <pacho@gentoo.org>2016-08-06 09:05:08 +0200
commit288a728fc408f7a20cff8422f4660749eaf1091f (patch)
tree656222cb63270a7e56cef27aac317df7e6c4af5a /dev-util/meson/files
parentapp-text/calibre: version bump to 2.63.0 (diff)
downloadgentoo-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.patch96
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)