Bug#636192: make fakeroot multiarch
On 2014-04-25 16:07 -0400, Frédéric Brière wrote: > Package: fakeroot > Version: 1.20-3 > Followup-For: Bug #636192 > > Forgive me if I'm mistaken, but fakeroot still does not appear to work > across architectures (at least the i386 version): > > $ dpkg -s fakeroot | grep ^Arch > Architecture: i386 > $ dpkg -s ascii | grep ^Arch > Architecture: amd64 > $ fakeroot-sysv ascii -v > ERROR: ld.so: object 'libfakeroot-sysv.so' from LD_PRELOAD cannot be > preloaded: ignored. > ascii 3.14 > > > Maybe I'm wrong, but I think that the invocation of find in the > assignment to $PATH was meant to be at runtime, but was instead done at > compile-time. Indeed, that is the problem. > Replacing the hardcoded path list with the `find` command > from Hilko's patch did the trick for me: > > $ fakeroot-sysv ascii -v > ascii 3.14 To recap on that patch: On 2013-05-20 16:52 +0200, Hilko Bengen wrote: > The attached set of patches splits off the shared libraries into > libfakeroot which is made Multi-Arch: same. A change to the fakeroot > script causes all paths of the co-installed libfakeroot libraries to be > found and put into the LD_LIBRARY_PATH. > > I have successfully tested that this works correctly on an amd64 system > with both i386 and amd64 binaries. (With version 1.19-2, the i386 > binaries would not get fakerooted.) > > With my patch, this is how fakeroot finds the different multiarch paths: > > find /usr/lib -mindepth 1 -maxdepth 1 -type d -name '*-*-gnu*'| sed > 's,$,/libfakeroot,' | tr '\n' ':' Clint's objection was that running find could be rather expensive. > I consider this to be somewhat of a hack. Perhaps something along the > lines of > > ( dpkg --print-architecture; dpkg --print-foreign-architectures ) |\ > xargs -i dpkg-architecture -a{} -qDEB_HOST_MULTIARCH > > would be more appropriate... Well, it would make fakeroot depend on dpkg-dev which is rather undesirable. I think the solution is for each libfakeroot:$ARCH to add its directory to fakeroot's search path via a configuration file. Actually, those already exist, namely the /etc/ld.so.conf.d/fakeroot-*.conf files. So how about the patch below? >From 603feb8d60d41f0eb0f80dfba684051e12bb8129 Mon Sep 17 00:00:00 2001 From: Sven Joachim Date: Wed, 15 Aug 2018 10:14:13 +0200 Subject: [PATCH] Make fakeroot multi-arch aware Each libfakeroot:$ARCH package already adds an entry to /etc/ld.so.conf.d/, reuse that for fakeroot's own search path. Remove the lib{64,32}/fakeroot directories from the search path, since those do not exist anymore. Closes: #636192 --- scripts/fakeroot.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/fakeroot.in b/scripts/fakeroot.in index eaf3f56..b740b4a 100755 --- a/scripts/fakeroot.in +++ b/scripts/fakeroot.in @@ -35,7 +35,7 @@ FAKEROOT_BINDIR=@bindir@ USEABSLIBPATH=@LDPRELOADABS@ LIB=lib@fakeroot_transformed@@DLSUFFIX@ -PATHS=@libdir@:${FAKEROOT_PREFIX}/lib64/libfakeroot:${FAKEROOT_PREFIX}/lib32/libfakeroot +PATHS=@libdir@:$(echo $(grep -h ^/ /etc/ld.so.conf.d/fakeroot-*.conf) | sed -e 's/ /:/g') FAKED=${FAKEROOT_BINDIR}/@faked_transformed@ FAKED_MODE="unknown-is-root" -- 2.18.0 I have left the directory for the native architecture at the front which causes a duplicate entry. That should be harmless, but if it is considered undesirable, it would also be possible to drop @libdir@: from $PATHS. In that case fakeroot could even become an arch:all package. Cheers, Sven
Bug#636192: make fakeroot multiarch
* Frédéric Brière: Package: fakeroot Version: 1.20-3 Followup-For: Bug #636192 Forgive me if I'm mistaken, but fakeroot still does not appear to work across architectures (at least the i386 version): $ dpkg -s fakeroot | grep ^Arch Architecture: i386 $ dpkg -s ascii | grep ^Arch Architecture: amd64 $ fakeroot-sysv ascii -v ERROR: ld.so: object 'libfakeroot-sysv.so' from LD_PRELOAD cannot be preloaded: ignored. ascii 3.14 You will also need libfakeroot:amd64. Cheers, -Hilko -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Bug#636192: make fakeroot multiarch
On Sat, Apr 26, 2014 at 02:00:11PM +0200, Hilko Bengen wrote: You will also need libfakeroot:amd64. $ dpkg -s libfakeroot:amd64 | grep ^Status Status: install ok installed The library is there; its directory is simply not present in the list assigned to $PATHS (line 38): PATHS=/usr/lib/i386-linux-gnu/libfakeroot:${FAKEROOT_PREFIX}/lib64/libfakeroot:${FAKEROOT_PREFIX}/lib32/libfakeroot -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Bug#636192: make fakeroot multiarch
Package: fakeroot Version: 1.20-3 Followup-For: Bug #636192 Forgive me if I'm mistaken, but fakeroot still does not appear to work across architectures (at least the i386 version): $ dpkg -s fakeroot | grep ^Arch Architecture: i386 $ dpkg -s ascii | grep ^Arch Architecture: amd64 $ fakeroot-sysv ascii -v ERROR: ld.so: object 'libfakeroot-sysv.so' from LD_PRELOAD cannot be preloaded: ignored. ascii 3.14 Maybe I'm wrong, but I think that the invocation of find in the assignment to $PATH was meant to be at runtime, but was instead done at compile-time. Replacing the hardcoded path list with the `find` command from Hilko's patch did the trick for me: $ fakeroot-sysv ascii -v ascii 3.14 -- System Information: Debian Release: jessie/sid APT prefers unstable APT policy: (500, 'unstable') Architecture: i386 (x86_64) Foreign Architectures: amd64 Kernel: Linux 3.13-1-amd64 (SMP w/3 CPU cores) Locale: LANG=en_CA.UTF-8, LC_CTYPE=en_CA.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Versions of packages fakeroot depends on: ii libc62.18-4 ii libfakeroot 1.20-3 fakeroot recommends no packages. fakeroot suggests no packages. -- no debconf information -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Bug#636192: make fakeroot multiarch
block 694827 by 636192 thanks As far as fakeroot doesn't support multiarch, this bug for fakechroot can't be fixed. fakechroot supported multiarch for long time. I'm wondering why author of fakeroot can't implement it for a months even if he'd got a proper patch in this bug report #636192 Regards, -- .''`.Piotr Roszatycki : :' :mailto:piotr.roszaty...@gmail.com `. `' mailto:dex...@debian.org `- -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Bug#636192: make fakeroot multiarch
On Wed, Nov 27, 2013 at 04:26:12PM +0100, Piotr Roszatycki wrote: fakechroot supported multiarch for long time. I'm wondering why author of fakeroot can't implement it for a months even if he'd got a proper patch in this bug report #636192 Running find on every invocation is pretty annoying, but I'll take a look shortly. -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Bug#636192: Bug#694827: Bug#636192: make fakeroot multiarch
2013/11/27 Clint Adams cl...@debian.org: Running find on every invocation is pretty annoying, but I'll take a look shortly. There is another possibility: use the default dynamic linker feature and simply add the path to fakeroot library to /etc/ld.so.conf.d so it should work with empty LD_LIBRARY_PATH binary_arch: # ... echo /usr/lib/$(DEB_HOST_MULTIARCH)/libfakeroot debian/libfakeroot/etc/ld.so.conf.d/fakeroot-$(DEB_HOST_MULTIARCH).conf You can see the difference between fakeroot and fakechroot: (sid)dexter@sony-vaio-sve1112m1ep:/$ fakeroot env | grep LD | sort LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/libfakeroot:/usr/lib64/libfakeroot:/usr/lib32/libfakeroot LD_PRELOAD=libfakeroot-sysv.so (sid)dexter@sony-vaio-sve1112m1ep:/$ fakechroot env | grep LD | sort LD_LIBRARY_PATH= LD_PRELOAD=libfakechroot.so (sid)dexter@sony-vaio-sve1112m1ep:/$ cat /etc/ld.so.conf.d/fakechroot-x86_64-linux-gnu.conf /usr/lib/x86_64-linux-gnu/fakechroot (sid)dexter@sony-vaio-sve1112m1ep:/$ cat /etc/ld.so.conf.d/fakechroot-i386-linux-gnu.conf /usr/lib/i386-linux-gnu/fakechroot Each architecture adds own ld.so.conf config so dynamic linker can load proper file by itself. Regards, -- .''`.Piotr Roszatycki : :' :mailto:piotr.roszaty...@gmail.com `. `' mailto:dex...@debian.org `- -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Bug#636192: Bug#694827: Bug#636192: make fakeroot multiarch
On Wed, Nov 27, 2013 at 07:08:56PM +0100, Piotr Roszatycki wrote: There is another possibility: use the default dynamic linker feature and simply add the path to fakeroot library to /etc/ld.so.conf.d so it should work with empty LD_LIBRARY_PATH Doesn't that defeat the purpose of having a separate directory? If so we might as well put libfakeroot into /usr/lib/$triple and be done with it. -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Bug#636192: Bug#694827: Bug#636192: make fakeroot multiarch
2013/11/27 Clint Adams cl...@debian.org: On Wed, Nov 27, 2013 at 07:08:56PM +0100, Piotr Roszatycki wrote: There is another possibility: use the default dynamic linker feature and simply add the path to fakeroot library to /etc/ld.so.conf.d so it should work with empty LD_LIBRARY_PATH Doesn't that defeat the purpose of having a separate directory? If so we might as well put libfakeroot into /usr/lib/$triple and be done with it. There is a reason to put it separately. I think it doesn't mess with gcc because libfakeroot.so or libfakechroot.so are not intended to linking by compile time. I'm afraid that such shared library in standard directory would also violate the Debian Policy because it hadn't proper symlink (libfakeroot.so.0 or something) and archive file (libfakechroot.a). -- .''`.Piotr Roszatycki : :' :mailto:piotr.roszaty...@gmail.com `. `' mailto:dex...@debian.org `- -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Bug#636162: Bug#636192: make fakeroot multiarch
reopen 636192 thanks 1.18.2-1 did not actually add multiarch support; it only moved the libraries around. And because the biarch libraries were removed, it’s also a regression over 1.18.1-1. $ sudo apt-get install fakeroot:amd64 fakeroot:i386 … The following packages have unmet dependencies: fakeroot : Conflicts: fakeroot:i386 but 1.18.2-1 is to be installed fakeroot:i386 : Conflicts: fakeroot but 1.18.2-1 is to be installed E: Unable to correct problems, you have held broken packages. The package needs to be marked ‘Multi-Arch: same’ before dpkg will even consider installing multiple architectures of the package together on the same system. But that won’t work yet for this package, because most of the files are different on different architectures: $ dpkg -x fakeroot_1.18.2-1_amd64.deb amd64 $ dpkg -x fakeroot_1.18.2-1_i386.deb i386 $ diff -qr amd64 i386 Files amd64/usr/bin/faked-sysv and i386/usr/bin/faked-sysv differ Files amd64/usr/bin/faked-tcp and i386/usr/bin/faked-tcp differ Files amd64/usr/bin/fakeroot-sysv and i386/usr/bin/fakeroot-sysv differ Files amd64/usr/bin/fakeroot-tcp and i386/usr/bin/fakeroot-tcp differ Only in i386/usr/lib: i386-linux-gnu Only in amd64/usr/lib: x86_64-linux-gnu Files amd64/usr/share/man/de/man1/faked-sysv.1.gz and i386/usr/share/man/de/man1/faked-sysv.1.gz differ Files amd64/usr/share/man/de/man1/faked-tcp.1.gz and i386/usr/share/man/de/man1/faked-tcp.1.gz differ Files amd64/usr/share/man/de/man1/fakeroot-sysv.1.gz and i386/usr/share/man/de/man1/fakeroot-sysv.1.gz differ Files amd64/usr/share/man/de/man1/fakeroot-tcp.1.gz and i386/usr/share/man/de/man1/fakeroot-tcp.1.gz differ Files amd64/usr/share/man/es/man1/faked-sysv.1.gz and i386/usr/share/man/es/man1/faked-sysv.1.gz differ Files amd64/usr/share/man/es/man1/faked-tcp.1.gz and i386/usr/share/man/es/man1/faked-tcp.1.gz differ Files amd64/usr/share/man/es/man1/fakeroot-sysv.1.gz and i386/usr/share/man/es/man1/fakeroot-sysv.1.gz differ Files amd64/usr/share/man/es/man1/fakeroot-tcp.1.gz and i386/usr/share/man/es/man1/fakeroot-tcp.1.gz differ Files amd64/usr/share/man/fr/man1/faked-sysv.1.gz and i386/usr/share/man/fr/man1/faked-sysv.1.gz differ Files amd64/usr/share/man/fr/man1/faked-tcp.1.gz and i386/usr/share/man/fr/man1/faked-tcp.1.gz differ Files amd64/usr/share/man/fr/man1/fakeroot-sysv.1.gz and i386/usr/share/man/fr/man1/fakeroot-sysv.1.gz differ Files amd64/usr/share/man/fr/man1/fakeroot-tcp.1.gz and i386/usr/share/man/fr/man1/fakeroot-tcp.1.gz differ Files amd64/usr/share/man/man1/faked-sysv.1.gz and i386/usr/share/man/man1/faked-sysv.1.gz differ Files amd64/usr/share/man/man1/faked-tcp.1.gz and i386/usr/share/man/man1/faked-tcp.1.gz differ Files amd64/usr/share/man/man1/fakeroot-sysv.1.gz and i386/usr/share/man/man1/fakeroot-sysv.1.gz differ Files amd64/usr/share/man/man1/fakeroot-tcp.1.gz and i386/usr/share/man/man1/fakeroot-tcp.1.gz differ Files amd64/usr/share/man/nl/man1/faked-sysv.1.gz and i386/usr/share/man/nl/man1/faked-sysv.1.gz differ Files amd64/usr/share/man/nl/man1/faked-tcp.1.gz and i386/usr/share/man/nl/man1/faked-tcp.1.gz differ Files amd64/usr/share/man/nl/man1/fakeroot-sysv.1.gz and i386/usr/share/man/nl/man1/fakeroot-sysv.1.gz differ Files amd64/usr/share/man/nl/man1/fakeroot-tcp.1.gz and i386/usr/share/man/nl/man1/fakeroot-tcp.1.gz differ Files amd64/usr/share/man/sv/man1/faked-sysv.1.gz and i386/usr/share/man/sv/man1/faked-sysv.1.gz differ Files amd64/usr/share/man/sv/man1/faked-tcp.1.gz and i386/usr/share/man/sv/man1/faked-tcp.1.gz differ Files amd64/usr/share/man/sv/man1/fakeroot-sysv.1.gz and i386/usr/share/man/sv/man1/fakeroot-sysv.1.gz differ Files amd64/usr/share/man/sv/man1/fakeroot-tcp.1.gz and i386/usr/share/man/sv/man1/fakeroot-tcp.1.gz differ These conflicting files either need to be made identical somehow (e.g. the manpages could be gzipped with -n), or moved into a separate non-multiarch package. Alternatively, the libraries could be moved into a separate multiarch package while the main fakeroot package remains non-multiarch. Anders -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Bug#636162: Bug#636192: make fakeroot multiarch
On Fri, 23 Dec 2011, Anders Kaseorg wrote: 1.18.2-1 did not actually add multiarch support; Oops, wrong bug number. Sorry! Anders -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Bug#636192: make fakeroot multiarch
1.18.2-1 did not actually add multiarch support; it only moved the libraries around. And because the biarch libraries were removed, it’s also a regression over 1.18.1-1. $ sudo apt-get install fakeroot:amd64 fakeroot:i386 … The following packages have unmet dependencies: fakeroot : Conflicts: fakeroot:i386 but 1.18.2-1 is to be installed fakeroot:i386 : Conflicts: fakeroot but 1.18.2-1 is to be installed E: Unable to correct problems, you have held broken packages. The package needs to be marked ‘Multi-Arch: same’ before dpkg will even consider installing multiple architectures of the package together on the same system. But that won’t work yet for this package, because most of the files are different on different architectures: $ dpkg -x fakeroot_1.18.2-1_amd64.deb amd64 $ dpkg -x fakeroot_1.18.2-1_i386.deb i386 $ diff -qr amd64 i386 Files amd64/usr/bin/faked-sysv and i386/usr/bin/faked-sysv differ Files amd64/usr/bin/faked-tcp and i386/usr/bin/faked-tcp differ Files amd64/usr/bin/fakeroot-sysv and i386/usr/bin/fakeroot-sysv differ Files amd64/usr/bin/fakeroot-tcp and i386/usr/bin/fakeroot-tcp differ Only in i386/usr/lib: i386-linux-gnu Only in amd64/usr/lib: x86_64-linux-gnu Files amd64/usr/share/man/de/man1/faked-sysv.1.gz and i386/usr/share/man/de/man1/faked-sysv.1.gz differ Files amd64/usr/share/man/de/man1/faked-tcp.1.gz and i386/usr/share/man/de/man1/faked-tcp.1.gz differ Files amd64/usr/share/man/de/man1/fakeroot-sysv.1.gz and i386/usr/share/man/de/man1/fakeroot-sysv.1.gz differ Files amd64/usr/share/man/de/man1/fakeroot-tcp.1.gz and i386/usr/share/man/de/man1/fakeroot-tcp.1.gz differ Files amd64/usr/share/man/es/man1/faked-sysv.1.gz and i386/usr/share/man/es/man1/faked-sysv.1.gz differ Files amd64/usr/share/man/es/man1/faked-tcp.1.gz and i386/usr/share/man/es/man1/faked-tcp.1.gz differ Files amd64/usr/share/man/es/man1/fakeroot-sysv.1.gz and i386/usr/share/man/es/man1/fakeroot-sysv.1.gz differ Files amd64/usr/share/man/es/man1/fakeroot-tcp.1.gz and i386/usr/share/man/es/man1/fakeroot-tcp.1.gz differ Files amd64/usr/share/man/fr/man1/faked-sysv.1.gz and i386/usr/share/man/fr/man1/faked-sysv.1.gz differ Files amd64/usr/share/man/fr/man1/faked-tcp.1.gz and i386/usr/share/man/fr/man1/faked-tcp.1.gz differ Files amd64/usr/share/man/fr/man1/fakeroot-sysv.1.gz and i386/usr/share/man/fr/man1/fakeroot-sysv.1.gz differ Files amd64/usr/share/man/fr/man1/fakeroot-tcp.1.gz and i386/usr/share/man/fr/man1/fakeroot-tcp.1.gz differ Files amd64/usr/share/man/man1/faked-sysv.1.gz and i386/usr/share/man/man1/faked-sysv.1.gz differ Files amd64/usr/share/man/man1/faked-tcp.1.gz and i386/usr/share/man/man1/faked-tcp.1.gz differ Files amd64/usr/share/man/man1/fakeroot-sysv.1.gz and i386/usr/share/man/man1/fakeroot-sysv.1.gz differ Files amd64/usr/share/man/man1/fakeroot-tcp.1.gz and i386/usr/share/man/man1/fakeroot-tcp.1.gz differ Files amd64/usr/share/man/nl/man1/faked-sysv.1.gz and i386/usr/share/man/nl/man1/faked-sysv.1.gz differ Files amd64/usr/share/man/nl/man1/faked-tcp.1.gz and i386/usr/share/man/nl/man1/faked-tcp.1.gz differ Files amd64/usr/share/man/nl/man1/fakeroot-sysv.1.gz and i386/usr/share/man/nl/man1/fakeroot-sysv.1.gz differ Files amd64/usr/share/man/nl/man1/fakeroot-tcp.1.gz and i386/usr/share/man/nl/man1/fakeroot-tcp.1.gz differ Files amd64/usr/share/man/sv/man1/faked-sysv.1.gz and i386/usr/share/man/sv/man1/faked-sysv.1.gz differ Files amd64/usr/share/man/sv/man1/faked-tcp.1.gz and i386/usr/share/man/sv/man1/faked-tcp.1.gz differ Files amd64/usr/share/man/sv/man1/fakeroot-sysv.1.gz and i386/usr/share/man/sv/man1/fakeroot-sysv.1.gz differ Files amd64/usr/share/man/sv/man1/fakeroot-tcp.1.gz and i386/usr/share/man/sv/man1/fakeroot-tcp.1.gz differ These conflicting files either need to be made identical somehow (e.g. the manpages could be gzipped with -n), or moved into a separate non-multiarch package. Alternatively, the libraries could be moved into a separate multiarch package while the main fakeroot package remains non-multiarch. Anders -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Bug#636192: make fakeroot multiarch
Hi, I attached a tarball of my ./debian directory which converts the package to multiarch but still uses debhelper. I didnt come to converting this to not require debhelper yet but thought it would make sense to document my current status anyway. cheers, josch debian.tar.gz Description: Binary data
Bug#636192: make fakeroot multiarch
Package: fakeroot Version: 1.16-1 Severity: wishlist Hi, when using fakeroot (and fakechroot) to execute foreign binaries with qemu user mode emulation, a foreign libfakeroot-sysv.so is required as well. multiarch would be an easy way to install such a foreign shared library, given that additionally to the original fakeroot package (containing the /usr/bin scripts and manpages and by that being Architecture: all) a libfakeroot package is created (containing the shared library only and marked as Multi-Arch: same) making fakeroot multiarch would also remove all of the mess that is currently going on in debian/rules which does lib32 and lib64 builds. I can prepare a patch for you that converts fakeroot to multiarch if you like/want me to and dont have time? making fakeroot multiarch would also solve #624724 cheers, josch -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Bug#636192: make fakeroot multiarch
On Mon, Aug 01, 2011 at 10:39:42AM +0200, Johannes Schauer wrote: I can prepare a patch for you that converts fakeroot to multiarch if you like/want me to and dont have time? Yes. Just keep in mind that the fakeroot source should still be functional on other platforms, please. -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org