patches/glibc/ports-2.12.1/360-tests-sandbox-libdl-paths.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Tue Aug 02 18:28:10 2011 +0200 (2011-08-02)
changeset 2590 b64cfb67944e
permissions -rw-r--r--
scripts/functions: svn retrieval first tries the mirror for tarballs

The svn download helper looks for the local tarballs dir to see if it
can find a pre-downloaded tarball, and if it does not find it, does
the actual fetch to upstream via svn.

In the process, it does not even try to get a tarball from the local
mirror, which can be useful if the mirror has been pre-populated
manually (or with a previously downloaded tree).

Fake a tarball get with the standard tarball-download helper, but
without specifying any upstream URL, which makes the helper directly
try the LAN mirror.

Of course, if no mirror is specified, no URL wil be available, and
the standard svn retrieval will kick in.

Reported-by: ANDY KENNEDY <ANDY.KENNEDY@adtran.com>
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
yann@2437
     1
when glibc runs its tests, it does so by invoking the local library loader.
yann@2437
     2
in Gentoo, we build/run inside of our "sandbox" which itself is linked against
yann@2437
     3
libdl (so that it can load libraries and pull out symbols).  the trouble
yann@2437
     4
is that when you upgrade from an older glibc to the new one, often times
yann@2437
     5
internal symbols change name or abi.  this is normally OK as you cannot use
yann@2437
     6
libc.so from say version 2.3.6 but libpthread.so from say version 2.5, so
yann@2437
     7
we always say "keep all of the glibc libraries from the same build".  but
yann@2437
     8
when glibc runs its tests, it uses dynamic paths to point to its new local
yann@2437
     9
copies of libraries.  if the test doesnt use libdl, then glibc doesnt add
yann@2437
    10
its path, and when sandbox triggers the loading of libdl, glibc does so
yann@2437
    11
from the host system system.  this gets us into the case of all libraries
yann@2437
    12
are from the locally compiled version of glibc except for libdl.so.
yann@2437
    13
yann@2437
    14
Fix by Wormo
yann@2437
    15
yann@2437
    16
http://bugs.gentoo.org/56898
yann@2437
    17
yann@2437
    18
diff -durN glibc-2.12.1.orig/grp/tst_fgetgrent.sh glibc-2.12.1/grp/tst_fgetgrent.sh
yann@2437
    19
--- glibc-2.12.1.orig/grp/tst_fgetgrent.sh	2001-07-06 06:54:46.000000000 +0200
yann@2437
    20
+++ glibc-2.12.1/grp/tst_fgetgrent.sh	2009-11-13 00:50:37.000000000 +0100
yann@2437
    21
@@ -24,7 +24,8 @@
yann@2437
    22
 rtld_installed_name=$1; shift
yann@2437
    23
 
yann@2437
    24
 testout=${common_objpfx}/grp/tst_fgetgrent.out
yann@2437
    25
-library_path=${common_objpfx}
yann@2437
    26
+# make sure libdl is also in path in case sandbox is in use
yann@2437
    27
+library_path=${common_objpfx}:${common_objpfx}/dlfcn
yann@2437
    28
 
yann@2437
    29
 result=0
yann@2437
    30
 
yann@2437
    31
diff -durN glibc-2.12.1.orig/iconvdata/run-iconv-test.sh glibc-2.12.1/iconvdata/run-iconv-test.sh
yann@2437
    32
--- glibc-2.12.1.orig/iconvdata/run-iconv-test.sh	2008-05-15 03:59:44.000000000 +0200
yann@2437
    33
+++ glibc-2.12.1/iconvdata/run-iconv-test.sh	2009-11-13 00:50:37.000000000 +0100
yann@2437
    34
@@ -34,7 +34,7 @@
yann@2437
    35
 export GCONV_PATH
yann@2437
    36
 
yann@2437
    37
 # We have to have some directories in the library path.
yann@2437
    38
-LIBPATH=$codir:$codir/iconvdata
yann@2437
    39
+LIBPATH=$codir:$codir/iconvdata:$codir/dlfcn
yann@2437
    40
 
yann@2437
    41
 # How the start the iconv(1) program.
yann@2437
    42
 ICONV='$codir/elf/ld.so --library-path $LIBPATH --inhibit-rpath ${from}.so \
yann@2437
    43
diff -durN glibc-2.12.1.orig/iconvdata/tst-table.sh glibc-2.12.1/iconvdata/tst-table.sh
yann@2437
    44
--- glibc-2.12.1.orig/iconvdata/tst-table.sh	2002-04-24 23:39:35.000000000 +0200
yann@2437
    45
+++ glibc-2.12.1/iconvdata/tst-table.sh	2009-11-13 00:50:37.000000000 +0100
yann@2437
    46
@@ -59,8 +59,11 @@
yann@2437
    47
   irreversible=${charset}.irreversible
yann@2437
    48
 fi
yann@2437
    49
 
yann@2437
    50
+# make sure libdl is also in path in case sandbox is in use
yann@2437
    51
+library_path=${common_objpfx}:${common_objpfx}/dlfcn
yann@2437
    52
+
yann@2437
    53
 # iconv in one direction.
yann@2437
    54
-${common_objpfx}elf/ld.so --library-path $common_objpfx \
yann@2437
    55
+${common_objpfx}elf/ld.so --library-path $library_path \
yann@2437
    56
 ${objpfx}tst-table-from ${charset} \
yann@2437
    57
   > ${objpfx}tst-${charset}.table
yann@2437
    58
 
yann@2437
    59
diff -durN glibc-2.12.1.orig/intl/tst-codeset.sh glibc-2.12.1/intl/tst-codeset.sh
yann@2437
    60
--- glibc-2.12.1.orig/intl/tst-codeset.sh	2005-04-06 04:18:35.000000000 +0200
yann@2437
    61
+++ glibc-2.12.1/intl/tst-codeset.sh	2009-11-13 00:50:37.000000000 +0100
yann@2437
    62
@@ -37,6 +37,9 @@
yann@2437
    63
 LOCPATH=${common_objpfx}localedata
yann@2437
    64
 export LOCPATH
yann@2437
    65
 
yann@2437
    66
+# make sure libdl is also in path in case sandbox is in use
yann@2437
    67
+library_path=${common_objpfx}:${common_objpfx}/dlfcn
yann@2437
    68
+
yann@2437
    69
 ${common_objpfx}elf/ld.so --library-path $common_objpfx \
yann@2437
    70
 ${objpfx}tst-codeset > ${objpfx}tst-codeset.out
yann@2437
    71
 
yann@2437
    72
diff -durN glibc-2.12.1.orig/intl/tst-gettext.sh glibc-2.12.1/intl/tst-gettext.sh
yann@2437
    73
--- glibc-2.12.1.orig/intl/tst-gettext.sh	2004-08-15 21:28:18.000000000 +0200
yann@2437
    74
+++ glibc-2.12.1/intl/tst-gettext.sh	2009-11-13 00:50:37.000000000 +0100
yann@2437
    75
@@ -51,9 +51,12 @@
yann@2437
    76
 LOCPATH=${common_objpfx}localedata
yann@2437
    77
 export LOCPATH
yann@2437
    78
 
yann@2437
    79
+# make sure libdl is also in path in case sandbox is in use
yann@2437
    80
+library_path=${common_objpfx}:${common_objpfx}/dlfcn
yann@2437
    81
+
yann@2437
    82
 # Now run the test.
yann@2437
    83
 MALLOC_TRACE=$malloc_trace LOCPATH=${objpfx}localedir:$LOCPATH \
yann@2437
    84
-${common_objpfx}elf/ld.so --library-path $common_objpfx \
yann@2437
    85
+${common_objpfx}elf/ld.so --library-path $library_path \
yann@2437
    86
 ${objpfx}tst-gettext > ${objpfx}tst-gettext.out ${objpfx}domaindir
yann@2437
    87
 
yann@2437
    88
 exit $?
yann@2437
    89
diff -durN glibc-2.12.1.orig/intl/tst-gettext2.sh glibc-2.12.1/intl/tst-gettext2.sh
yann@2437
    90
--- glibc-2.12.1.orig/intl/tst-gettext2.sh	2005-05-04 19:54:48.000000000 +0200
yann@2437
    91
+++ glibc-2.12.1/intl/tst-gettext2.sh	2009-11-13 00:50:37.000000000 +0100
yann@2437
    92
@@ -65,8 +65,11 @@
yann@2437
    93
 LOCPATH=${objpfx}domaindir
yann@2437
    94
 export LOCPATH
yann@2437
    95
 
yann@2437
    96
+# make sure libdl is also in path in case sandbox is in use
yann@2437
    97
+library_path=${common_objpfx}:${common_objpfx}/dlfcn
yann@2437
    98
+
yann@2437
    99
 # Now run the test.
yann@2437
   100
-${common_objpfx}elf/ld.so --library-path $common_objpfx \
yann@2437
   101
+${common_objpfx}elf/ld.so --library-path $library_path \
yann@2437
   102
 ${objpfx}tst-gettext2 > ${objpfx}tst-gettext2.out ${objpfx}domaindir &&
yann@2437
   103
 cmp ${objpfx}tst-gettext2.out - <<EOF
yann@2437
   104
 String1 - Lang1: 1st string
yann@2437
   105
diff -durN glibc-2.12.1.orig/intl/tst-translit.sh glibc-2.12.1/intl/tst-translit.sh
yann@2437
   106
--- glibc-2.12.1.orig/intl/tst-translit.sh	2005-05-04 19:56:10.000000000 +0200
yann@2437
   107
+++ glibc-2.12.1/intl/tst-translit.sh	2009-11-13 00:50:37.000000000 +0100
yann@2437
   108
@@ -36,7 +36,10 @@
yann@2437
   109
 LOCPATH=${common_objpfx}localedata
yann@2437
   110
 export LOCPATH
yann@2437
   111
 
yann@2437
   112
-${common_objpfx}elf/ld.so --library-path $common_objpfx \
yann@2437
   113
+# make sure libdl is also in path in case sandbox is in use
yann@2437
   114
+library_path=${common_objpfx}:${common_objpfx}/dlfcn
yann@2437
   115
+
yann@2437
   116
+${common_objpfx}elf/ld.so --library-path $library_path \
yann@2437
   117
 ${objpfx}tst-translit > ${objpfx}tst-translit.out ${objpfx}domaindir
yann@2437
   118
 
yann@2437
   119
 exit $?
yann@2437
   120
diff -durN glibc-2.12.1.orig/malloc/tst-mtrace.sh glibc-2.12.1/malloc/tst-mtrace.sh
yann@2437
   121
--- glibc-2.12.1.orig/malloc/tst-mtrace.sh	2005-10-15 01:40:35.000000000 +0200
yann@2437
   122
+++ glibc-2.12.1/malloc/tst-mtrace.sh	2009-11-13 00:50:37.000000000 +0100
yann@2437
   123
@@ -24,9 +24,12 @@
yann@2437
   124
 status=0
yann@2437
   125
 trap "rm -f ${common_objpfx}malloc/tst-mtrace.leak; exit 1" 1 2 15
yann@2437
   126
 
yann@2437
   127
+# make sure libdl is also in path in case sandbox is in use
yann@2437
   128
+library_path=${common_objpfx}:${common_objpfx}/dlfcn
yann@2437
   129
+
yann@2437
   130
 MALLOC_TRACE=${common_objpfx}malloc/tst-mtrace.leak \
yann@2437
   131
 LOCPATH=${common_objpfx}localedata GCONV_PATH=${common_objpfx}iconvdata \
yann@2437
   132
-${common_objpfx}elf/ld.so --library-path $common_objpfx \
yann@2437
   133
+${common_objpfx}elf/ld.so --library-path $library_path \
yann@2437
   134
   ${common_objpfx}malloc/tst-mtrace || status=1
yann@2437
   135
 
yann@2437
   136
 if test $status -eq 0 && test -f ${common_objpfx}malloc/mtrace; then
yann@2437
   137
diff -durN glibc-2.12.1.orig/nptl/tst-tls6.sh glibc-2.12.1/nptl/tst-tls6.sh
yann@2437
   138
--- glibc-2.12.1.orig/nptl/tst-tls6.sh	2003-09-03 00:02:59.000000000 +0200
yann@2437
   139
+++ glibc-2.12.1/nptl/tst-tls6.sh	2009-11-13 00:50:37.000000000 +0100
yann@2437
   140
@@ -5,8 +5,8 @@
yann@2437
   141
 rtld_installed_name=$1; shift
yann@2437
   142
 logfile=$common_objpfx/nptl/tst-tls6.out
yann@2437
   143
 
yann@2437
   144
-# We have to find libc and nptl
yann@2437
   145
-library_path=${common_objpfx}:${common_objpfx}nptl
yann@2437
   146
+# We have to find libc and nptl (also libdl in case sandbox is in use)
yann@2437
   147
+library_path=${common_objpfx}:${common_objpfx}nptl:${common_objpfx}/dlfcn
yann@2437
   148
 tst_tls5="${elf_objpfx}${rtld_installed_name} --library-path ${library_path} \
yann@2437
   149
 	  ${common_objpfx}/nptl/tst-tls5"
yann@2437
   150
 
yann@2437
   151
diff -durN glibc-2.12.1.orig/posix/globtest.sh glibc-2.12.1/posix/globtest.sh
yann@2437
   152
--- glibc-2.12.1.orig/posix/globtest.sh	2008-12-06 07:05:39.000000000 +0100
yann@2437
   153
+++ glibc-2.12.1/posix/globtest.sh	2009-11-13 00:50:37.000000000 +0100
yann@2437
   154
@@ -18,7 +18,7 @@
yann@2437
   155
 esac
yann@2437
   156
 
yann@2437
   157
 # We have to find the libc and the NSS modules.
yann@2437
   158
-library_path=${common_objpfx}:${common_objpfx}nss:${common_objpfx}nis:${common_objpfx}db2:${common_objpfx}hesiod
yann@2437
   159
+library_path=${common_objpfx}:${common_objpfx}nss:${common_objpfx}nis:${common_objpfx}db2:${common_objpfx}hesiod:${common_objpfx}/dlfcn
yann@2437
   160
 
yann@2437
   161
 # Since we use `sort' we must make sure to use the same locale everywhere.
yann@2437
   162
 LC_ALL=C
yann@2437
   163
diff -durN glibc-2.12.1.orig/posix/tst-getconf.sh glibc-2.12.1/posix/tst-getconf.sh
yann@2437
   164
--- glibc-2.12.1.orig/posix/tst-getconf.sh	2002-09-01 13:11:25.000000000 +0200
yann@2437
   165
+++ glibc-2.12.1/posix/tst-getconf.sh	2009-11-13 00:50:37.000000000 +0100
yann@2437
   166
@@ -10,7 +10,10 @@
yann@2437
   167
 else
yann@2437
   168
   rtld_installed_name=$1; shift
yann@2437
   169
   runit() {
yann@2437
   170
-    ${elf_objpfx}${rtld_installed_name} --library-path ${common_objpfx} "$@"
yann@2437
   171
+    
yann@2437
   172
+  # make sure libdl is also in path in case sandbox is in use
yann@2437
   173
+  library_path=${common_objpfx}:${common_objpfx}/dlfcn
yann@2437
   174
+    ${elf_objpfx}${rtld_installed_name} --library-path ${library_path} "$@"
yann@2437
   175
   }
yann@2437
   176
 fi
yann@2437
   177
 
yann@2437
   178
diff -durN glibc-2.12.1.orig/posix/wordexp-tst.sh glibc-2.12.1/posix/wordexp-tst.sh
yann@2437
   179
--- glibc-2.12.1.orig/posix/wordexp-tst.sh	2000-10-20 18:23:30.000000000 +0200
yann@2437
   180
+++ glibc-2.12.1/posix/wordexp-tst.sh	2009-11-13 00:50:37.000000000 +0100
yann@2437
   181
@@ -19,8 +19,11 @@
yann@2437
   182
 "
yann@2437
   183
 export IFS
yann@2437
   184
 
yann@2437
   185
+# make sure libdl is also in path in case sandbox is in use
yann@2437
   186
+library_path=${common_objpfx}:${common_objpfx}/dlfcn
yann@2437
   187
+
yann@2437
   188
 failed=0
yann@2437
   189
-${elf_objpfx}${rtld_installed_name} --library-path ${common_objpfx} \
yann@2437
   190
+${elf_objpfx}${rtld_installed_name} --library-path ${library_path} \
yann@2437
   191
 ${common_objpfx}posix/wordexp-test '$*' > ${testout}1
yann@2437
   192
 cat <<"EOF" | cmp - ${testout}1 >> $logfile || failed=1
yann@2437
   193
 wordexp returned 0