gnu: glibc: Really disable 'ldconfig' and /etc/ld.so.cache.

* gnu/packages/base.scm (glibc): Add 'snippet' to set use_ldconfig=no.
  Remove "glibc-no-ld-so-cache.patch"; that patch would still build
  'ldconfig', and ld.so would still contain ld.so.cache-related code,
  and would look for info in /etc/etc/ld.so.cache (sic).
* gnu/packages/patches/glibc-no-ld-so-cache.patch: Remove.
* gnu-system.am (dist_patch_DATA): Adjust accordingly.
This commit is contained in:
Ludovic Courtès 2013-11-16 23:14:28 +01:00
parent 127ed6a9dd
commit 13990c7343
3 changed files with 10 additions and 56 deletions

View File

@ -232,7 +232,6 @@ dist_patch_DATA = \
gnu/packages/patches/glibc-bootstrap-system.patch \ gnu/packages/patches/glibc-bootstrap-system.patch \
gnu/packages/patches/glibc-ldd-x86_64.patch \ gnu/packages/patches/glibc-ldd-x86_64.patch \
gnu/packages/patches/glibc-make-4.0.patch \ gnu/packages/patches/glibc-make-4.0.patch \
gnu/packages/patches/glibc-no-ld-so-cache.patch \
gnu/packages/patches/grub-gets-undeclared.patch \ gnu/packages/patches/grub-gets-undeclared.patch \
gnu/packages/patches/gstreamer-0.10-bison3.patch \ gnu/packages/patches/gstreamer-0.10-bison3.patch \
gnu/packages/patches/gstreamer-0.10-silly-test.patch \ gnu/packages/patches/gstreamer-0.10-silly-test.patch \

View File

@ -365,9 +365,17 @@ archives.")
(sha256 (sha256
(base32 (base32
"18spla703zav8dq9fw7rbzkyv9qfisxb26p7amg1x3wjh7iy3d1c")) "18spla703zav8dq9fw7rbzkyv9qfisxb26p7amg1x3wjh7iy3d1c"))
(snippet
;; Disable 'ldconfig' and /etc/ld.so.cache. The latter is
;; required on LFS distros to avoid loading the distro's libc.so
;; instead of ours.
'(substitute* "sysdeps/unix/sysv/linux/configure"
(("use_ldconfig=yes")
"use_ldconfig=no")))
(modules '((guix build utils)))
(imported-modules modules)
(patches (map search-patch (patches (map search-patch
'("glibc-no-ld-so-cache.patch" '("glibc-ldd-x86_64.patch"
"glibc-ldd-x86_64.patch"
"glibc-make-4.0.patch"))))) "glibc-make-4.0.patch")))))
(build-system gnu-build-system) (build-system gnu-build-system)

View File

@ -1,53 +0,0 @@
Disable attempts to use the system-wide /etc/ld.so.cache. This is
required on LFS distros to avoid loading the distro's libc.so instead
of ours.
Patch from Nixpkgs. Idea by Eelco Dolstra, initial patch by Jack
Cummings, minor fixups by Shea Levy.
diff -Naur glibc-2.13-orig/elf/ldconfig.c glibc-2.13/elf/ldconfig.c
--- glibc-2.13-orig/elf/ldconfig.c 2011-01-17 23:34:07.000000000 -0500
+++ glibc-2.13/elf/ldconfig.c 2012-04-10 23:28:45.957492340 -0400
@@ -51,7 +51,7 @@
#endif
#ifndef LD_SO_CONF
-# define LD_SO_CONF SYSCONFDIR "/ld.so.conf"
+# define LD_SO_CONF PREFIX "/etc/ld.so.conf"
#endif
/* Get libc version number. */
--- glibc-2.16.0/elf/Makefile 2012-06-30 21:12:34.000000000 +0200
+++ glibc-2.16.0/elf/Makefile 2012-11-12 23:52:21.000000000 +0100
@@ -415,12 +415,12 @@ $(objpfx)ldconfig: $(ldconfig-modules:%=
$(objpfx)pldd: $(pldd-modules:%=$(objpfx)%.o)
-SYSCONF-FLAGS := -D'SYSCONFDIR="$(sysconfdir)"'
-CFLAGS-ldconfig.c = $(SYSCONF-FLAGS) -D'LIBDIR="$(libdir)"' \
+PREFIX-FLAGS := -D'PREFIX="$(sysconfdir)"'
+CFLAGS-ldconfig.c = $(PREFIX-FLAGS) -D'LIBDIR="$(libdir)"' \
-D'SLIBDIR="$(slibdir)"' -DIS_IN_ldconfig=1
-CFLAGS-dl-cache.c = $(SYSCONF-FLAGS)
-CFLAGS-cache.c = $(SYSCONF-FLAGS)
-CFLAGS-rtld.c = $(SYSCONF-FLAGS)
+CFLAGS-dl-cache.c = $(PREFIX-FLAGS)
+CFLAGS-cache.c = $(PREFIX-FLAGS)
+CFLAGS-rtld.c = $(PREFIX-FLAGS)
CPPFLAGS-.os += $(if $(filter $(@F),$(patsubst %,%.os,$(all-rtld-routines))),\
-DNOT_IN_libc=1 -DIS_IN_rtld=1 -DIN_LIB=rtld)
diff -Naur glibc-2.13-orig/sysdeps/generic/dl-cache.h glibc-2.13/sysdeps/generic/dl-cache.h
--- glibc-2.13-orig/sysdeps/generic/dl-cache.h 2011-01-17 23:34:07.000000000 -0500
+++ glibc-2.13/sysdeps/generic/dl-cache.h 2012-04-10 23:28:20.077488815 -0400
@@ -29,7 +29,7 @@
#endif
#ifndef LD_SO_CACHE
-# define LD_SO_CACHE SYSCONFDIR "/ld.so.cache"
+# define LD_SO_CACHE PREFIX "/etc/ld.so.cache"
#endif
#ifndef add_system_dir