diff mbox

fakeroot: fix spurious message "undefined symbol"

Message ID 20161004150530.12197-1-maxime.hadjinlian@gmail.com
State Changes Requested
Headers show

Commit Message

Maxime Hadjinlian Oct. 4, 2016, 3:05 p.m. UTC
Since the glibc 2.24-3, and this commit:
https://sourceware.org/git/?p=glibc.git;a=commit;h=80f87443eed17838fe453f1f5406ccf5d3698c25
fakeroot will print spurious message about symbols not being found.

[...]
dlsym(acl_get_fd): /usr/lib/libfakeroot/libfakeroot.so: undefined symbol: acl_get_fd
dlsym(acl_get_file): /usr/lib/libfakeroot/libfakeroot.so: undefined symbol: acl_get_file
dlsym(acl_set_fd): /usr/lib/libfakeroot/libfakeroot.so: undefined symbol: acl_set_fd
dlsym(acl_set_file): /usr/lib/libfakeroot/libfakeroot.so: undefined symbol: acl_set_file
dlsym(acl_get_fd): /usr/lib/libfakeroot/libfakeroot.so: undefined symbol: acl_get_fd
dlsym(acl_get_file): /usr/lib/libfakeroot/libfakeroot.so: undefined symbol: acl_get_file
[...]

It doesn't seem to impair the behavior of fakeroot, it's simply annoying
for the user.

Debian (which is the creator of fakeroot) has a patch which is a
workaround: simply don't display the message.

Note if you wish to bump fakeroot:
A new version is available but the release tarball doesn't include the
'configure' and 'Makefile' pre-generated.
This means that if we were to bump, the package would need to run its
own 'bootstrap' script which will add dependencies to
host-{automake,autoconf,...} which would be annoying (since almost every
build runs fakeroot).

Signed-off-by: Maxime Hadjinlian <maxime.hadjinlian@gmail.com>
---
 package/fakeroot/hide-dlsym-error.patch | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)
 create mode 100644 package/fakeroot/hide-dlsym-error.patch

Comments

Thomas Petazzoni Oct. 5, 2016, 8:02 a.m. UTC | #1
Hello,

On Tue,  4 Oct 2016 17:05:30 +0200, Maxime Hadjinlian wrote:

> diff --git a/package/fakeroot/hide-dlsym-error.patch b/package/fakeroot/hide-dlsym-error.patch
> new file mode 100644
> index 0000000..3fd34c8
> --- /dev/null
> +++ b/package/fakeroot/hide-dlsym-error.patch

This is not a proper name for a patch, it should have a sequence number.

> @@ -0,0 +1,32 @@
> +Description: Hide error from dlsym()
> + dlsym(), starting in glibc 2.24 actually reports errors. In our case,
> + we try to get ACL functions which are not in the glibc. This causes
> + failures in test suites, so hide those messages for non-debugging
> + purposes for now. It also makes the build logs annoying to read.
> +Author: Julian Andres Klode <juliank@ubuntu.com>
> +Origin: vendor
> +Bug-Debian: https://bugs.debian.org/830912
> +Forwarded: no
> +Last-Update: 2016-08-12

This lacks your Signed-off-by line.

Thanks,

Thomas
diff mbox

Patch

diff --git a/package/fakeroot/hide-dlsym-error.patch b/package/fakeroot/hide-dlsym-error.patch
new file mode 100644
index 0000000..3fd34c8
--- /dev/null
+++ b/package/fakeroot/hide-dlsym-error.patch
@@ -0,0 +1,32 @@ 
+Description: Hide error from dlsym()
+ dlsym(), starting in glibc 2.24 actually reports errors. In our case,
+ we try to get ACL functions which are not in the glibc. This causes
+ failures in test suites, so hide those messages for non-debugging
+ purposes for now. It also makes the build logs annoying to read.
+Author: Julian Andres Klode <juliank@ubuntu.com>
+Origin: vendor
+Bug-Debian: https://bugs.debian.org/830912
+Forwarded: no
+Last-Update: 2016-08-12
+
+--- a/libfakeroot.c
++++ b/libfakeroot.c
+@@ -256,10 +256,16 @@ void load_library_symbols(void){
+  /* clear dlerror() just in case dlsym() legitimately returns NULL */
+     msg = dlerror();
+     *(next_wrap[i].doit)=dlsym(get_libc(), next_wrap[i].name);
++
+     if ( (msg = dlerror()) != NULL){
+-      fprintf (stderr, "dlsym(%s): %s\n", next_wrap[i].name, msg);
+-/*    abort ();*/
++#ifdef LIBFAKEROOT_DEBUGGING
++      if (fakeroot_debug) {
++        fprintf (stderr, "dlsym(%s): %s\n", next_wrap[i].name, msg);
++/*      abort ();*/
++      }
++#endif
+     }
++
+   }
+ }
+