Create /{bin,lib,lib64,sbin} as symbolic links in test-container

This brings the test container in line with Fedora's filesystem layout
and avoids some test failures.  For example, because Fedora's CS_PATH is
/usr/bin, tst-vfork3 will try to execute /usr/bin/echo in the container.
Without this change the container installs `echo' in /bin not /usr/bin,
causing the test to fail.

Reviewed-by: DJ Delorie <dj@redhat.com>
This commit is contained in:
Arjun Shankar 2021-11-16 00:31:11 +01:00
parent e879893635
commit b96753c45b
2 changed files with 40 additions and 8 deletions

View File

@ -1,15 +1,44 @@
Short description: Adjust CS_PATH return value. Short description: Adjust CS_PATH and the test container layout.
Author(s): Fedora glibc team <glibc@lists.fedoraproject.org> Author(s): Fedora glibc team <glibc@lists.fedoraproject.org>
Origin: PATCH Origin: PATCH
Upstream status: not-needed Upstream status: not-needed
In Fedora we should return only /usr/bin because /bin is just a symlink In Fedora we should return only /usr/bin as CS_PATH because /bin is just
to /usr/bin after MoveToUsr transition (which glibc has not really a symlink to /usr/bin after MoveToUsr transition (which glibc has not
completed). really completed).
diff -pruN a/sysdeps/unix/confstr.h b/sysdeps/unix/confstr.h We also create /{bin,lib,lib64,sbin} in the test container as symbolic
--- a/sysdeps/unix/confstr.h 2012-12-25 08:32:13.000000000 +0530 links. This brings the test container in line with Fedora's filesystem
+++ b/sysdeps/unix/confstr.h 2014-09-05 20:02:55.698275219 +0530 layout and avoids some test failures. For example, because Fedora's
CS_PATH is /usr/bin, tst-vfork3 will try to execute /usr/bin/echo in the
container. Without this change the container installs `echo' in /bin
not /usr/bin, causing the test to fail.
diff --git a/Makefile b/Makefile
index a49870d3d1e636a9..feb2599203b10098 100644
--- a/Makefile
+++ b/Makefile
@@ -598,9 +598,13 @@ $(tests-container) $(addsuffix /tests,$(subdirs)) : \
$(objpfx)testroot.pristine/install.stamp :
test -d $(objpfx)testroot.pristine || \
mkdir $(objpfx)testroot.pristine
- # We need a working /bin/sh for some of the tests.
- test -d $(objpfx)testroot.pristine/bin || \
- mkdir $(objpfx)testroot.pristine/bin
+ # Set up symlinks to directories whose contents got moved to /usr
+ for moved in bin lib lib64 sbin; do \
+ test -d $(objpfx)testroot.pristine/usr/$$moved || \
+ mkdir -p $(objpfx)testroot.pristine/usr/$$moved ;\
+ test -e $(objpfx)testroot.pristine/$$moved || \
+ ln -s usr/$$moved $(objpfx)testroot.pristine/$$moved ;\
+ done
# We need the compiled locale dir for localedef tests.
test -d $(objpfx)testroot.pristine/$(complocaledir) || \
mkdir -p $(objpfx)testroot.pristine/$(complocaledir)
diff --git a/sysdeps/unix/confstr.h b/sysdeps/unix/confstr.h
index 15859c3b2759878e..9b63b7f8069866fd 100644
--- a/sysdeps/unix/confstr.h
+++ b/sysdeps/unix/confstr.h
@@ -1 +1 @@ @@ -1 +1 @@
-#define CS_PATH "/bin:/usr/bin" -#define CS_PATH "/bin:/usr/bin"
+#define CS_PATH "/usr/bin" +#define CS_PATH "/usr/bin"

View File

@ -151,7 +151,7 @@ end \
Summary: The GNU libc libraries Summary: The GNU libc libraries
Name: glibc Name: glibc
Version: %{glibcversion} Version: %{glibcversion}
Release: 19%{?dist} Release: 20%{?dist}
# In general, GPLv2+ is used by programs, LGPLv2+ is used for # In general, GPLv2+ is used by programs, LGPLv2+ is used for
# libraries. # libraries.
@ -2260,6 +2260,9 @@ fi
%files -f compat-libpthread-nonshared.filelist -n compat-libpthread-nonshared %files -f compat-libpthread-nonshared.filelist -n compat-libpthread-nonshared
%changelog %changelog
* Tue Nov 16 2021 Arjun Shankar <arjun@redhat.com> - 2.34.9000-20
- Create /{bin,lib,lib64,sbin} as symbolic links in test-container
* Wed Nov 10 2021 Arjun Shankar <arjun@redhat.com> - 2.34.9000-19 * Wed Nov 10 2021 Arjun Shankar <arjun@redhat.com> - 2.34.9000-19
- Auto-sync with upstream branch master, - Auto-sync with upstream branch master,
commit 0bd356df1afb0591470499813d4ebae9bcedd6a6: commit 0bd356df1afb0591470499813d4ebae9bcedd6a6: