GNU/Linux >> Znalost Linux >  >> Ubuntu

Kompilace M4 1.4.10 až 1.4.18 se nezdaří kvůli „portu Gnulib Freadahead.c na vaši platformu!“ Na Ubuntu 18.10?

Sestavení tarballových vydání GNU m4 1.4.10 až 1.4.18 (netestovalo všechny verze opravy hotfix, ale předpokládám, že chyba je v tomto rozsahu konzistentní) s ./configure && make -j1 a git git úložiště http://git.savannah.gnu.org/r/m4.git s ./bootstrap && ./configure && make -j1 (zavázat cvs-readonly-359-gd69fa528 tj. HEAD z master ) selže z důvodu

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'

Jsem z této chyby velmi zmatený a podle povrchního vyhledávání Google je problém důsledkem příliš dlouhé ignorované upstream aktualizace, viz např. https://bugzilla.redhat.com/show_bug.cgi?id=1573342 s geniální dokumentací opravy „Díky za hlášení o chybě, opraveno!“ – pokud to ostatním nepomůže…

Zkusil jsem sestavit glibc ze zdrojového kódu a nainstalovat jej do vlastní předpony[1]. 2.28 a 2.27 vykazují stejný problém a 2.26 selhává z důvodu

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

a 2.25 kvůli

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

což mě přimělo k rozhodnutí nezkoušet další verzi.

Související:Softwarové centrum prázdné „Žádná užitečnost ze serveru“ „Žádné uživatelské jméno v konfiguračním souboru“ v Ubuntu?

[Diskuse o zprávě o podobném problému ve findutils] navrhuje přepsat freadahead.{c,h} z aktuálního kořenového zdroje gnulib. To způsobuje řetězec problémů, které zde není nutné dokumentovat, protože nevím, co dělám.

Jak začít s opravou, hlášením a/nebo řešením tohoto problému?

Vytvářím m4 ze zdroje pro bootstrap skript pro systémy, kde uživatel nemá oprávnění používat správce balíčků. Opravdu mě zajímá jen sestavení původního GNU m4 ze zdrojových tarballů vydání.

Přehled výsledků sestavení na jiných podobně holých systémech je uveden na https://gitlab.com/krichter/m4/pipelines/36977411.

[1] V případě, že to zkoumáte, vždy nainstalujte glibc do vlastní předpony, protože instalace s výchozí předponou /usr/local zcela jistě zničí váš systém. Zvažte použití checkinstall pro jistotu.

Přijatá odpověď:

Zkuste použít tento patch. Je to OpenEmbedded generovaný backport upstream patche.


Ubuntu
  1. Jak zkontrolovat verzi Ubuntu

  2. Jak zkontrolovat verzi Ubuntu

  3. Nejlepší skenery portů na Ubuntu Linux

  1. Jak opravit Grub 2 na Ubuntu

  2. Jak přizpůsobit výzvu terminálu Ubuntu

  3. Jak najít svou IP adresu v Ubuntu 20.04 LTS

  1. Jak nainstalovat OpenLiteSpeed ​​Webserver na Ubuntu 20.04

  2. Jak otevřít port na Ubuntu 20.04

  3. Jak otestovat svůj mikrofon v Ubuntu