Pembuatan rilis tarball GNU m4 1.4.10 hingga 1.4.18 (tidak menguji semua versi hotfix, tetapi saya menganggap kesalahan konsisten di antara rentang ini) dengan ./configure && make -j1
dan git git
repositori http://git.savannah.gnu.org/r/m4.git dengan ./bootstrap && ./configure && make -j1
(komit cvs-readonly-359-gd69fa528
yaitu HEAD
dari master
) gagal karena
freadahead.c: In function 'freadahead':
freadahead.c:92:3: error: #error "Please port gnulib freadahead.c to your platform! Look at the definition of fflush, fread, ungetc on your system, then report this to bug-gnulib."
#error "Please port gnulib freadahead.c to your platform! Look at the definition of fflush, fread, ungetc on your system, then report this to bug-gnulib."
^~~~~
make[3]: *** [Makefile:1910: freadahead.o] Error 1
make[3]: Leaving directory '/mnt/data/sources/m4-1.4.18/lib'
Saya sangat bingung dengan kesalahan ini dan menurut pencarian google yang dangkal, masalahnya adalah konsekuensi dari pembaruan hulu yang terlalu lama diabaikan, lihat mis. https://bugzilla.redhat.com/show_bug.cgi?id=1573342 dengan dokumentasi jenius dari perbaikan "Terima kasih atas laporan bug, diperbaiki!" – jika itu tidak membantu orang lain…
Saya mencoba membangun glibc dari sumber dan menginstalnya ke awalan khusus[1]. 2.28 dan 2.27 menunjukkan masalah yang sama dan 2.26 gagal karena
make[2]: Verzeichnis „/mnt/data/sources/glibc-2.26/inet“ wird betreten
gcc ../sysdeps/unix/sysv/linux/if_index.c -c -std=gnu11 -fgnu89-inline -O2 -Wall -Werror -Wundef -Wwrite-strings -fmerge-all-constants -fno-stack-protector -frounding-math -g -Wstrict-prototypes -Wold-style-definition -ftls-model=initial-exec -U_FORTIFY_SOURCE -I../include -I/mnt/data/sources/glibc-2.26-build/inet -I/mnt/data/sources/glibc-2.26-build -I../sysdeps/unix/sysv/linux/x86_64/64 -I../sysdeps/unix/sysv/linux/x86_64 -I../sysdeps/unix/sysv/linux/x86 -I../sysdeps/x86/nptl -I../sysdeps/unix/sysv/linux/wordsize-64 -I../sysdeps/x86_64/nptl -I../sysdeps/unix/sysv/linux/include -I../sysdeps/unix/sysv/linux -I../sysdeps/nptl -I../sysdeps/pthread -I../sysdeps/gnu -I../sysdeps/unix/inet -I../sysdeps/unix/sysv -I../sysdeps/unix/x86_64 -I../sysdeps/unix -I../sysdeps/posix -I../sysdeps/x86_64/64 -I../sysdeps/x86_64/fpu/multiarch -I../sysdeps/x86_64/fpu -I../sysdeps/x86/fpu/include -I../sysdeps/x86/fpu -I../sysdeps/x86_64/multiarch -I../sysdeps/x86_64 -I../sysdeps/x86 -I../sysdeps/ieee754/float128 -I../sysdeps/ieee754/ldbl-96/include -I../sysdeps/ieee754/ldbl-96 -I../sysdeps/ieee754/dbl-64/wordsize-64 -I../sysdeps/ieee754/dbl-64 -I../sysdeps/ieee754/flt-32 -I../sysdeps/wordsize-64 -I../sysdeps/ieee754 -I../sysdeps/generic -I.. -I../libio -I. -D_LIBC_REENTRANT -include /mnt/data/sources/glibc-2.26-build/libc-modules.h -DMODULE_NAME=libc -include ../include/libc-symbols.h -DPIC -DTOP_NAMESPACE=glibc -o /mnt/data/sources/glibc-2.26-build/inet/if_index.o -MD -MP -MF /mnt/data/sources/glibc-2.26-build/inet/if_index.o.dt -MT /mnt/data/sources/glibc-2.26-build/inet/if_index.o
../sysdeps/unix/sysv/linux/if_index.c: In function ‘__if_nametoindex’:
../sysdeps/unix/sysv/linux/if_index.c:46:3: error: ‘strncpy’ specified bound 16 equals destination size [-Werror=stringop-truncation]
strncpy (ifr.ifr_name, ifname, sizeof (ifr.ifr_name));
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
make[2]: *** [/mnt/data/sources/glibc-2.26-build/sysd-rules:213: /mnt/data/sources/glibc-2.26-build/inet/if_index.o] Fehler 1
make[2]: Verzeichnis „/mnt/data/sources/glibc-2.26/inet“ wird verlassen
make[1]: *** [Makefile:215: inet/subdir_lib] Fehler 2
make[1]: Verzeichnis „/mnt/data/sources/glibc-2.26“ wird verlassen
make: *** [Makefile:9: all] Fehler 2
dan 2,25 karena
strftime_l.c: In function ‘__strftime_internal’:
strftime_l.c:719:4: error: macro expands to multiple statements [-Werror=multistatement-macros]
digits = d > width ? d : width;
^~~~~~
strftime_l.c:1260:6: note: in expansion of macro ‘DO_NUMBER’
DO_NUMBER (1, tp->tm_year + TM_YEAR_BASE);
^~~~~~~~~
strftime_l.c:1259:4: note: some parts of macro expansion are not guarded by this ‘else’ clause
else
^~~~
In file included from wcsftime_l.c:23:
strftime_l.c: In function ‘__strftime_internal’:
strftime_l.c:719:4: error: macro expands to multiple statements [-Werror=multistatement-macros]
digits = d > width ? d : width;
^~~~~~
strftime_l.c:1260:6: note: in expansion of macro ‘DO_NUMBER’
DO_NUMBER (1, tp->tm_year + TM_YEAR_BASE);
^~~~~~~~~
strftime_l.c:1259:4: note: some parts of macro expansion are not guarded by this ‘else’ clause
else
^~~~
cc1: all warnings being treated as errors
make[2]: *** [../o-iterator.mk:9: /mnt/data/sources/glibc-2.25-build/time/strftime_l.os] Fehler 1
yang membuat saya memutuskan untuk tidak mencoba versi selanjutnya.
Terkait:Pusat Perangkat Lunak Kosong "Tidak Ada Kegunaan Dari Server" "Tidak Ada Nama Pengguna di File Konfigurasi" di Ubuntu?
[Diskusi tentang laporan tentang masalah serupa di findutils] menyarankan untuk menimpa freadahead.{c,h}
dari root sumber gnulib terbaru. Ini menyebabkan rantai masalah yang tidak perlu didokumentasikan di sini karena saya tidak tahu apa yang saya lakukan.
Bagaimana cara memulai memperbaiki, melaporkan, dan/atau mengatasi masalah ini?
Saya sedang membangun m4 dari sumber untuk skrip bootstrap untuk sistem di mana pengguna tidak memiliki hak istimewa untuk menggunakan manajer paket. Saya benar-benar hanya tertarik untuk membuat GNU m4 asli dari tarball sumber rilis.
Ikhtisar hasil build pada sistem lain yang serupa tersedia di https://gitlab.com/krichter/m4/pipelines/36977411.
[1] Jika Anda sedang menyelidiki ini, selalu instal glibc ke awalan khusus karena penginstalan di awalan default /usr/local
pasti akan merusak sistem Anda. Pertimbangkan untuk menggunakan checkinstall
untuk memastikannya.
Jawaban yang Diterima:
Coba terapkan tambalan ini. Ini adalah backport patch upstream yang dibuat oleh OpenEmbedded.