GNU/Linux >> Belajar Linux >  >> Ubuntu

Kompilasi M4 1.4.10 Sampai 1.4.18 Gagal Karena “Tolong Port Gnulib Freadahead.c Ke Platform Anda!” Di Ubuntu 18.10?

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.


Ubuntu
  1. Cara Memeriksa Versi Ubuntu Anda

  2. Cara Memeriksa Versi Ubuntu Anda

  3. Pemindai Port Teratas di Ubuntu Linux

  1. Cara memperbaiki Grub 2 Anda di Ubuntu

  2. Cara menyesuaikan prompt terminal Ubuntu Anda

  3. Cara Menemukan alamat IP Anda di Ubuntu 20.04 LTS

  1. Cara Menginstal OpenLiteSpeed ​​Webserver di Ubuntu 20.04

  2. Cara Membuka Port di Ubuntu 20.04

  3. Cara menguji Mikrofon Anda di Ubuntu