On Fri, Nov 16, 2018 at 12:04:36AM +0100, Bruno Haible wrote:
> Hi Richard,
>
> > After upgrading to Fedora 29, the glibc-langpack-fr locale is no
> > longer installed by default. This causes many tests to fail silently:
> >
> > ./gnulib/tests/test-suite.log:FAIL: test-btowc1.sh
> > ./gnulib/tests/test-suite.log:FAIL: test-btowc2.sh
> > ./gnulib/tests/test-suite.log:FAIL: test-c-strcase.sh
> > ./gnulib/tests/test-suite.log:FAIL: test-mbrtowc1.sh
> > ./gnulib/tests/test-suite.log:FAIL: test-mbrtowc2.sh
> > ./gnulib/tests/test-suite.log:FAIL: test-mbrtowc3.sh
> > ./gnulib/tests/test-suite.log:FAIL: test-mbrtowc4.sh
> > ./gnulib/tests/test-suite.log:FAIL: test-mbsrtowcs1.sh
> > ./gnulib/tests/test-suite.log:FAIL: test-mbsrtowcs2.sh
> > ./gnulib/tests/test-suite.log:FAIL: test-mbsrtowcs3.sh
> > ./gnulib/tests/test-suite.log:FAIL: test-mbsrtowcs4.sh
> > ./gnulib/tests/test-suite.log:FAIL: test-setlocale1.sh
> > ./gnulib/tests/test-suite.log:FAIL: test-wcrtomb.sh
> >
> > The failures are completely silent. It seems as if about
> > 6 months ago it used to print an error message:
> >
> > Skipping test: no traditional french locale is installed
> >
> > But for some reason that is no longer printed:
> >
> > $ LC_ALL=fr_FR ./test-btowc 1
> > $ echo $?
> > 1
>
> I cannot reproduce this. Just installed a Fedora 29, configured and
> ran a gnulib testdir created through
> $ ./gnulib-tool --create-testdir --dir=../testdir-posix --with-tests
> --single-configure `./posix-modules`
> and all tests pass, including these that you listed.
>
> Can you provide these infos?
>
> $ yum list --installed | grep glibc-langpack-fr
$ yum list --installed | grep glibc-langpack
glibc-langpack-en.x86_64 2.28-17.fc29
@updates
glibc-langpack-fr.x86_64 2.28-17.fc29
@updates
glibc-langpack-ja.x86_64 2.28-17.fc29
@updates
glibc-langpack-tr.x86_64 2.28-17.fc29
@updates
glibc-langpack-zh.x86_64 2.28-17.fc29
@updates
These were installed on the machine (to fix the tests).
I have uninstalled glibc-langpack-{fr,ja,tr,zh} and the tests are
silently failing again. After uninstallation:
$ yum list --installed | grep glibc-langpack
glibc-langpack-en.x86_64 2.28-17.fc29
@updates
> Expected: empty
>
> $ locale -a | grep ^fr_FR
>
> Expected:
> fr_FR
> fr_FR@euro
> fr_FR.iso88591
> fr_FR.iso88591@euro
> fr_FR.utf8
There is _no_ output from the above command.
In fact the full locale -a output is:
C
C.utf8
en_AG
en_AU
en_AU.utf8
en_BW
en_BW.utf8
en_CA
en_CA.utf8
en_DK
en_DK.utf8
en_GB
en_GB.iso885915
en_GB.utf8
en_HK
en_HK.utf8
en_IE
en_IE@euro
en_IE.utf8
en_IL
en_IN
en_NG
en_NZ
en_NZ.utf8
en_PH
en_PH.utf8
en_SC.utf8
en_SG
en_SG.utf8
en_US
en_US.iso885915
en_US.utf8
en_ZA
en_ZA.utf8
en_ZM
en_ZW
en_ZW.utf8
POSIX
> $ grep LOCALE_FR config.status
>
> S["LOCALE_FR_UTF8"]="fr_FR.UTF-8"
> S["LOCALE_FR"]="fr_FR"
Since I'm using gnulib from libguestfs, here's what's in the
libguestfs config.status:
$ grep LOCALE_FR config.status
S["LOCALE_FR"]="fr_FR"
S["LOCALE_FR_UTF8"]="fr_FR.UTF-8"
> $ ldd test-btowc
>
> Expected:
> linux-vdso.so.1
> libc.so.6 => /lib64/libc.so.6
> /lib64/ld-linux-x86-64.so.2
$ ldd test-btowc
linux-vdso.so.1 (0x00007ffe6fdcf000)
libc.so.6 => /lib64/libc.so.6 (0x00007f8d5402f000)
/lib64/ld-linux-x86-64.so.2 (0x00007f8d54225000)
> $ LC_ALL=fr_FR strace ./test-btowc 1
Attached as ‘strace.log’.
> $ LC_ALL=fr_FR ltrace ./test-btowc 1
Just:
+++ exited (status 1) +++
Is my ltrace broken?
> And of course the GCC command line options and relevant environment
> variables that you used during the configure step.
export CFLAGS="$(rpm --eval '%{optflags}')"
export CXXFLAGS="$(rpm --eval '%{optflags}')"
export LDFLAGS="$(rpm --eval '%{__global_ldflags}')"
./autogen.sh \
--prefix /usr \
--libdir /usr/lib64 \
--disable-static \
--with-default-backend=libvirt \
--with-extra="local,libvirt" \
--enable-werror \
--disable-golang \
--with-gtk=2 \
-C
The CFLAGS etc expand to:
CFLAGS="-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2
-Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong
-grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1
-specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic
-fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection"
LDFLAGS="-Wl,-z,relro -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld"
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-df lists disk usage of guests without needing to install any
software inside the virtual machine. Supports Linux and Windows.
http://people.redhat.com/~rjones/virt-df/
execve("./test-btowc", ["./test-btowc", "1"], 0x7ffd2453c778 /* 62 vars */) = 0
brk(NULL) = 0x563f0be82000
arch_prctl(0x3001 /* ARCH_??? */, 0x7ffd6bada7d0) = -1 EINVAL (Invalid argument)
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=165199, ...}) = 0
mmap(NULL, 165199, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f494c7b3000
close(3) = 0
openat(AT_FDCWD, "/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 E\2\0\0\0\0\0"..., 832)
= 832
lseek(3, 792, SEEK_SET) = 792
read(3,
"\4\0\0\0\24\0\0\0\3\0\0\0GNU\0\206UJ\207\352\2651YC\35_O\220\306K\215"..., 68)
= 68
fstat(3, {st_mode=S_IFREG|0755, st_size=2786376, ...}) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0x7f494c7b1000
lseek(3, 792, SEEK_SET) = 792
read(3,
"\4\0\0\0\24\0\0\0\3\0\0\0GNU\0\206UJ\207\352\2651YC\35_O\220\306K\215"..., 68)
= 68
lseek(3, 864, SEEK_SET) = 864
read(3, "\4\0\0\0\20\0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0", 32)
= 32
mmap(NULL, 1857568, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f494c5eb000
mprotect(0x7f494c60d000, 1679360, PROT_NONE) = 0
mmap(0x7f494c60d000, 1363968, PROT_READ|PROT_EXEC,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x22000) = 0x7f494c60d000
mmap(0x7f494c75a000, 311296, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3,
0x16f000) = 0x7f494c75a000
mmap(0x7f494c7a7000, 24576, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1bb000) = 0x7f494c7a7000
mmap(0x7f494c7ad000, 14368, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f494c7ad000
close(3) = 0
arch_prctl(ARCH_SET_FS, 0x7f494c7b2500) = 0
mprotect(0x7f494c7a7000, 16384, PROT_READ) = 0
mprotect(0x563f0a9d0000, 4096, PROT_READ) = 0
mprotect(0x7f494c806000, 4096, PROT_READ) = 0
munmap(0x7f494c7b3000, 165199) = 0
openat(AT_FDCWD, "/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = -1
ENOENT (No such file or directory)
brk(NULL) = 0x563f0be82000
brk(0x563f0bea3000) = 0x563f0bea3000
brk(NULL) = 0x563f0bea3000
openat(AT_FDCWD, "/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=2997, ...}) = 0
read(3, "# Locale name alias data base.\n#"..., 4096) = 2997
read(3, "", 4096) = 0
close(3) = 0
openat(AT_FDCWD, "/usr/lib/locale/fr_FR/LC_IDENTIFICATION", O_RDONLY|O_CLOEXEC)
= -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/locale/fr/LC_IDENTIFICATION", O_RDONLY|O_CLOEXEC) =
-1 ENOENT (No such file or directory)
exit_group(1) = ?
+++ exited with 1 +++