[PATCH] Fix tst-ldconfig-ld_so_conf-update and tst-glibc-hwcaps-prepend-cache with custom configure prefix value
Adhemerval Zanella
adhemerval.zanella@linaro.org
Thu Aug 19 12:29:59 GMT 2021
On 09/08/2021 18:26, Romain GEISSLER via Libc-alpha wrote:
> Hi,
>
> I have build a recent glibc 2.34 with some non default --prefix value at
> configure time, and I have two new tests failing:
> tst-ldconfig-ld_so_conf-update and tst-glibc-hwcaps-prepend-cache. Both
> hardcodes the patch /etc/ld.so.conf which should take ${prefix} into
> account. Fixed thusly.
>
> I tested this successfully on x86-64.
>
> Cheers,
> Romain
The patch looks ok, just split the patch to make the libsupport
change its own patch.
>
> From 8005e062750421f44ab9f5c22243f70185a2b682 Mon Sep 17 00:00:00 2001
> From: Romain Geissler <romain.geissler@amadeus.com>
> Date: Mon, 9 Aug 2021 20:11:47 +0000
> Subject: [PATCH] Fix tst-ldconfig-ld_so_conf-update and
> tst-glibc-hwcaps-prepend-cache with custom configure prefix value.
>
> ---
> elf/tst-glibc-hwcaps-prepend-cache.c | 10 +++++++---
> elf/tst-ldconfig-ld_so_conf-update.c | 13 ++++++++-----
> support/Makefile | 3 ++-
> support/support.h | 2 ++
> support/support_paths.c | 7 +++++++
> 5 files changed, 26 insertions(+), 9 deletions(-)
>
> diff --git a/elf/tst-glibc-hwcaps-prepend-cache.c b/elf/tst-glibc-hwcaps-prepend-cache.c
> index 153408e14d3..1f0872b918a 100644
> --- a/elf/tst-glibc-hwcaps-prepend-cache.c
> +++ b/elf/tst-glibc-hwcaps-prepend-cache.c
> @@ -44,9 +44,13 @@ do_test (void)
> if (dlopen (SONAME, RTLD_NOW) != NULL)
> FAIL_EXIT1 (SONAME " is already on the search path");
>
> - /* Install the default implementation of libmarkermod1.so. */
> - xmkdirp ("/etc", 0777);
> - support_write_file_string ("/etc/ld.so.conf", "/glibc-test/lib\n");
> + {
> + /* Install the default implementation of libmarkermod1.so. */
> + char *conf_path = xasprintf ("%s/ld.so.conf", support_sysconfdir_prefix);
> + xmkdirp (support_sysconfdir_prefix, 0777);
> + support_write_file_string (conf_path, "/glibc-test/lib\n");
> + free (conf_path);
> + }
> xmkdirp ("/glibc-test/lib/glibc-hwcaps/prepend2", 0777);
> xmkdirp ("/glibc-test/lib/glibc-hwcaps/prepend3", 0777);
> {
Ok.
> diff --git a/elf/tst-ldconfig-ld_so_conf-update.c b/elf/tst-ldconfig-ld_so_conf-update.c
> index e8bd4c35986..842ab8e25b0 100644
> --- a/elf/tst-ldconfig-ld_so_conf-update.c
> +++ b/elf/tst-ldconfig-ld_so_conf-update.c
> @@ -33,7 +33,6 @@
>
> #define DSO "libldconfig-ld-mod.so"
> #define DSO_DIR "/tmp/tst-ldconfig"
> -#define CONF "/etc/ld.so.conf"
>
>
> static void
> @@ -64,6 +63,8 @@ do_test (void)
> {
> struct support_capture_subprocess result;
>
> + char *conf_path = xasprintf ("%s/ld.so.conf", support_sysconfdir_prefix);
> +
> /* Create the needed directories. */
> xmkdirp ("/var/cache/ldconfig", 0777);
> xmkdirp (DSO_DIR, 0777);
Ok.
> @@ -82,9 +83,9 @@ do_test (void)
> is not searched. */
> TEST_VERIFY_EXIT (dlopen (DSO, RTLD_NOW | RTLD_GLOBAL) == NULL);
>
> - FILE *fp = xfopen (CONF, "a+");
> + FILE *fp = xfopen (conf_path, "a+");
> if (!fp)
> - FAIL_EXIT1 ("creating /etc/ld.so.conf failed: %m");
> + FAIL_EXIT1 ("creating %s failed: %m", conf_path);
> xfclose (fp);
>
> /* Run ldconfig. */
Ok.
> @@ -95,9 +96,9 @@ do_test (void)
> TEST_VERIFY_EXIT (dlopen (DSO, RTLD_NOW | RTLD_GLOBAL) == NULL);
>
> /* Add tst-ldconfig directory to /etc/ld.so.conf. */
> - fp = xfopen (CONF, "w");
> + fp = xfopen (conf_path, "w");
> if (!(fwrite (DSO_DIR, 1, sizeof (DSO_DIR), fp)))
> - FAIL_EXIT1 ("updating /etc/ld.so.conf failed: %m");
> + FAIL_EXIT1 ("updating %s failed: %m", conf_path);
> xfclose (fp);
>
> /* Try to dlopen the same DSO again, we expect this to still fail. */
> @@ -111,6 +112,8 @@ do_test (void)
> /* Finally, we expect dlopen to pass now. */
> TEST_VERIFY_EXIT (dlopen (DSO, RTLD_NOW | RTLD_GLOBAL) != NULL);
>
> + free (conf_path);
> +
> return 0;
> }
>
Ok.
> diff --git a/support/Makefile b/support/Makefile
> index a4627817184..af086788527 100644
> --- a/support/Makefile
> +++ b/support/Makefile
> @@ -219,7 +219,8 @@ CFLAGS-support_paths.c = \
> -DSBINDIR_PATH=\"$(sbindir)\" \
> -DSLIBDIR_PATH=\"$(slibdir)\" \
> -DROOTSBINDIR_PATH=\"$(rootsbindir)\" \
> - -DCOMPLOCALEDIR_PATH=\"$(complocaledir)\"
> + -DCOMPLOCALEDIR_PATH=\"$(complocaledir)\" \
> + -DSYSCONFDIR_PATH=\"$(sysconfdir)\"
>
> # In support_timespec_check_in_range we may be passed a very tight
> # range for which we should produce a correct result for expected
Ok.
> diff --git a/support/support.h b/support/support.h
> index 834dba90977..2be56f20e64 100644
> --- a/support/support.h
> +++ b/support/support.h
> @@ -132,6 +132,8 @@ extern const char support_slibdir_prefix[];
> extern const char support_install_rootsbindir[];
> /* Corresponds to the install's compiled locale directory. */
> extern const char support_complocaledir_prefix[];
> +/* Corresponds to the install's etc/ directory. */
> +extern const char support_sysconfdir_prefix[];
>
> /* Copies the file at the path FROM to TO. If TO does not exist, it
> is created. If TO is a regular file, it is truncated before
> diff --git a/support/support_paths.c b/support/support_paths.c
> index d18e71e38bb..a0921ce7e90 100644
> --- a/support/support_paths.c
> +++ b/support/support_paths.c
> @@ -92,3 +92,10 @@ const char support_complocaledir_prefix[] = COMPLOCALEDIR_PATH;
> #else
> # error please -DCOMPLOCALEDIR_PATH=something in the Makefile
> #endif
> +
> +#ifdef SYSCONFDIR_PATH
> +/* Corresponds to the install's etc/ directory. */
> +const char support_sysconfdir_prefix[] = SYSCONFDIR_PATH;
> +#else
> +# error please -DSYSCONFDIR_PATH=something in the Makefile
> +#endif
>
The usual way is to split the libsupport patch on its own patch.
The change is ok.
More information about the Libc-alpha
mailing list