Obskure Fehler beim Bau von v2023.2.x

Moin,

ein erster Bauversuch von Gluon v2023.2.5 bricht wieder ins Essen, weil die Build-Umgebung autoconf 2.0.0 installiert anstelle des benötigten 2.64+:

make[5]: Entering directory '/home/ffgt/build/gluon-ffgt-v2023.2/site-ffgt/gluon-build/openwrt/tools/libtool'
(cd /home/ffgt/build/gluon-ffgt-v2023.2/site-ffgt/gluon-build/openwrt/staging_dir/host/share/aclocal/ && rm -f libtool.m4 ltdl.m4 lt~obsolete.m4 ltoptions.m4 ltsugar.m4 ltversion.m4)
( cd /home/ffgt/build/gluon-ffgt-v2023.2/site-ffgt/gluon-build/openwrt/build_dir/host/libtool-2.4.7; AUTOM4TE=/home/ffgt/build/gluon-ffgt-v2023.2/site-ffgt/gluon-build/openwrt/staging_dir/host/bin/autom4te AUTOCONF=/home/ffgt/build/gluon-ffgt-v2023.2/site-ffgt/gluon-build/openwrt/staging_dir/host/bin/autoconf AUTOMAKE=/home/ffgt/build/gluon-ffgt-v2023.2/site-ffgt/gluon-build/openwrt/staging_dir/host/bin/automake ACLOCAL=/home/ffgt/build/gluon-ffgt-v2023.2/site-ffgt/gluon-build/openwrt/staging_dir/host/bin/aclocal AUTOHEADER=/home/ffgt/build/gluon-ffgt-v2023.2/site-ffgt/gluon-build/openwrt/staging_dir/host/bin/autoheader LIBTOOLIZE=/home/ffgt/build/gluon-ffgt-v2023.2/site-ffgt/gluon-build/openwrt/staging_dir/host/bin/libtoolize LIBTOOL=/home/ffgt/build/gluon-ffgt-v2023.2/site-ffgt/gluon-build/openwrt/staging_dir/host/bin/libtool M4=/home/ffgt/build/gluon-ffgt-v2023.2/site-ffgt/gluon-build/openwrt/staging_dir/host/bin/m4 AUTOPOINT=true GTKDOCIZE=true ./bootstrap --copy --force --skip-git --skip-po --gnulib-srcdir=/home/ffgt/build/gluon-ffgt-v2023.2/site-ffgt/gluon-build/openwrt/staging_dir/host/share/gnulib )
bootstrap:   error:   '/home/ffgt/build/gluon-ffgt-v2023.2/site-ffgt/gluon-build/openwrt/staging_dir/host/bin/autoconf' version == 2.0.0 is too old
bootstrap:            '/home/ffgt/build/gluon-ffgt-v2023.2/site-ffgt/gluon-build/openwrt/staging_dir/host/bin/autoconf' version >= 2.64 is required
bootstrap:   error: Program    Min_version Homepage                            
bootstrap:          -----------------------------------------------------------
bootstrap:          help2man   1.29        http://www.gnu.org/s/help2man       
bootstrap:          make       3.81        http://www.gnu.org/s/make           
bootstrap:          makeinfo   4.8         http://www.gnu.org/s/texinfo        
bootstrap:          xz         4.999.8beta http://tukaani.org/xz               
bootstrap:          autoconf   2.64        http://www.gnu.org/s/autoconf       
bootstrap:          automake   1.11.1      http://www.gnu.org/s/automake       
bootstrap:          -----------------------------------------------------------
make[5]: *** [Makefile:70: /home/ffgt/build/gluon-ffgt-v2023.2/site-ffgt/gluon-build/openwrt/build_dir/host/libtool-2.4.7/.prepared311513ab5946190f622dc6d757eb627d_6664517399ebbbc92a37c5bb081b5c53] Error 1
make[5]: Leaving directory '/home/ffgt/build/gluon-ffgt-v2023.2/site-ffgt/gluon-build/openwrt/tools/libtool'
time: tools/libtool/compile#0.36#0.03#0.36
    ERROR: tools/libtool failed to build.
make[4]: *** [tools/Makefile:227: tools/libtool/compile] Error 1
make[3]: *** [/home/ffgt/build/gluon-ffgt-v2023.2/site-ffgt/gluon-build/openwrt/include/toplevel.mk:233: tools/install] Error 2
make[2]: *** [Makefile:179: openwrt/staging_dir/hostpkg/bin/lua] Error 2
make[1]: *** [Makefile:58: manifest] Error 2
make[1]: Leaving directory '/home/ffgt/build/gluon-ffgt-v2023.2/site-ffgt'
make: *** [Makefile:36: all] Error 2
mk-skript done in /home/ffgt/build/gluon-ffgt-v2023.2/site-ffgt with RC 2 ...
Error making patches ...

real    8m37.958s
user    28m30.685s
sys     2m54.950s

In der Tat:

ffgt@kaos:~/build$ /home/ffgt/build/gluon-ffgt-v2023.2/site-ffgt/gluon-build/openwrt/staging_dir/host/bin/autoconf --version
autoconf (GNU Autoconf) 2.0.0~0
[…]

Wie kann das sein? Und vor allem, wie verhindert man dies‽

WTF‽

ffgt@kaos:~/build$ grep ^VERSION gluon-ffgt-v2023.2/site-ffgt/gluon-build/openwrt/build_dir/host/autoconf-2.71/Makefile
VERSION = 2.71
ffgt@kaos:~/build$ ls -la gluon-ffgt-v2023.2/site-ffgt/gluon-build/openwrt/build_dir/host/autoconf-2.71/bin/autoconf 
-r-xr-xr-x 1 ffgt ffgt 15530 Jul 19 14:25 gluon-ffgt-v2023.2/site-ffgt/gluon-build/openwrt/build_dir/host/autoconf-2.71/bin/autoconf
ffgt@kaos:~/build$ gluon-ffgt-v2023.2/site-ffgt/gluon-build/openwrt/build_dir/host/autoconf-2.71/bin/autoconf --version
autoconf (GNU Autoconf) 2.0.0~0
Copyright (C) 2021 Free Software Foundation, Inc.
License GPLv3+/Autoconf: GNU GPL version 3 or later
<https://gnu.org/licenses/gpl.html>, <https://gnu.org/licenses/exceptions.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by David J. MacKenzie and Akim Demaille.

Aus autoconf 2.7.1-Source fällt autoconf 2.0.0 raus?

Hast du mal versucht eine neue Umgebung mit frischem Checkout zu machen? Bei mir Läuft 2023.2.5 Problemlos durch.

Auf zwei Blechen, Debian 11-basiert (kaos) und unter Debian 12. Gleiches Ergebnis. (Es gibt ein „mk-ffgt-v20xy.z.sh“, das legt das Verzeichnis (hier gluon-ffgt-v2023.2) an, klont darein dann das Site-Repo (bzw. macht bei Vorhandensein stash & pull), geht in das Verzeichnis und startet dann make 2>&1 | tee make.out, also das Makefile im Site-Repo. D. h. ich schmeiße gluon-ffgt-v2023.2 weg und habe einen sauberen Start.) Und beide Male war in gluon-ffgt-v2023.2/site-ffgt/gluon-build/openwrt/build_dir/host/autoconf-2.71/bin/autoconf ein 2.0.0er Binary drin.

Durchsichtig ist der Buildprozeß ja schon länger nicht mehr, mit OpenWrt, was Sourcecodes patcht, Gluon, was OpenWrt patcht und dazu noch ggf. Patches gegen Gluon (ggf. bis runter ins OpenWrt) aus dem Site-Repo — aber wieso in einem 2.71er autoconf-Source nach make ein 2.0.0er Binary im bin-Verzeichnis langen kann, erschließt sich mir nicht :wink:

sudo apt install autoconf && cp -p /usr/bin/autoconf /home/ffgt/build/gluon-ffgt-v2023.2/site-ffgt/gluon-build/openwrt/staging_dir/host/bin/autoconf ermöglicht dann den Bau, aber eben nicht from Scratch. Kann OpenWrt dazu gebracht werden, über Paketabhängigkeiten verschiedenen autoconf-Versionen zu installieren? Unsere Pakete haben ihre Urspünge teils in 2016 und wurden so modifiziert, daß es mit der jeweiligen Gluon-Version kompiliert; ggf. ziehen wir da irgendwie das alte autoconf mit rein?

Irgendwas ist bei dir anders als bei mir.

/ffpi-firmware/gluon/openwrt/build_dir/host/autoconf-2.71/bin$ autoconf --version
autoconf (GNU Autoconf) 2.71
Copyright (C) 2021 Free Software Foundation, Inc.
License GPLv3+/Autoconf: GNU GPL version 3 or later
<https://gnu.org/licenses/gpl.html>, <https://gnu.org/licenses/exceptions.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by David J. MacKenzie and Akim Demaille.
gluon$ git status
HEAD losgelöst bei v2023.2.5

Mit wievielen Prozessen baust Du? In 2022.1.2 wurden ja Probleme behoben:

  • Various build-errors which sporadically occur when building with a large thread-count have been fixed

Ich baue mit 24/12 Prozessen auf AMD Ryzen 5 3600 6-Core Processor bzw.
112/56 Prozessen auf Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz. IIRC war der erste Lauf mit -j 1 schon bei v2021 ein Garant, daß die Host-Umgebung korrekt gebaut wurde, aber dann dauert der Bau auch Tage statt Stunden, das kann nicht die Lösung sein.

ich baue mit 6 Prozessen.

Sehr seltsam. Bei mir steht in ./build_dir/host/autoconf-2.71/bin/autoconf (welches ein Shell Skript ist):

...
version="\
autoconf (GNU Autoconf) 2.71
...

Und das müsste aus ./build_dir/host/autoconf-2.71/configure kommen, da steht bei mir auch:

...
PACKAGE_VERSION='2.71'
PACKAGE_STRING='GNU Autoconf 2.71'
...

Und dann hab’ ich noch eine ./build_dir/host/autoconf-2.71/.version mit 2.71.

Hat ein grep -r "2\.71" ./build_dir/host/autoconf-2.71 irgendwelche Treffer bei dir?

Und ich frage mich, ob es einen Unterschied bei dir machen würde, um zu versuchen das Problem einzugrenzen, wenn du zum Ausprobieren mal das Makefile aus eurer site weglassen würdest und stattdessen aus einem frischen checkout die minimalen Schritte manuell probieren würdest. Also „git clone“ vom Gluon repo, dann die gewünschte Gluon Version auschecken. Da dann den site Ordner mit eurer site hinzufügen. Und dann „make update && make GLUON_TARGET=ath79-generic“. Ist es dann auch kaputt bei dir?

Danke! Nice find!

ffgt@kaos:~/build$ grep -A1 '^version=' gluon-ffgt-v2023.2/site-ffgt/gluon-build/openwrt/build_dir/host/autoconf-2.71/bin/autoconf
version="\
autoconf (GNU Autoconf) 2.0.0~0

Aber:

ffgt@kaos:~/build$ grep PACKAGE_ gluon-ffgt-v2023.2/site-ffgt/gluon-build/openwrt/build_dir/host/autoconf-2.71/configure | head -5
PACKAGE_NAME='GNU Autoconf'
PACKAGE_TARNAME='autoconf'
PACKAGE_VERSION='2.71'
PACKAGE_STRING='GNU Autoconf 2.71'
PACKAGE_BUGREPORT='bug-autoconf@gnu.org'

Yepp, 182.

ffgt@kaos:~/build$ grep -r "2\.71" gluon-ffgt-v2023.2/site-ffgt/gluon-build/openwrt/build_dir/host/autoconf-2.71 | wc -l
182

Da ich das Problem seit ca. v2022.1 habe, habe ich das auch schon mal probiert — und IIRC trat das nicht auf, wenn ich unsere Patches/Packages nicht drin hatte. Bis einschließlich v2021.x haben wir ja Gluon geforkt, gepacht, und auf Basis dieses gepatchten Forks gearbeitet — die Patches-per-Site-Lösung ist da deutlich eleganter.

Aber die Frage ist ja, wie ausgerechnet/ausschließlich in openwrt/build_dir/host/autoconf-2.71/bin/autoconf ein autoconf (GNU Autoconf) 2.0.0~0 landen kann. Über Gluon-Pakete, that is …

Wenn nicht, was ist dann gewonnen? Ich habe eine Latte an Änderungen, ohne die die FW keinen Sinn macht. Und Änderungen auf Ebene Gluon dürften den OpenWrt-Build-Prozeß nicht beeinflussen?

Wenn man dann einen funktionierenden und einen nicht funktionierenden Stand hat, könnte man dann systematisch per Divide & Conquer sich dem Problem annähern.

Beim Überfliegen eurer site frage mich, ob da noch was mit „make -C“ war, ob da evtl. was mit den environment Variablen durcheinander kam oder so. Glaube die meisten machen es umgekehrt wie ihr: Nämlich „cd“ ins Gluon directory und dann den site Ordner per GLUON_SITEDIR angeben: Getting Started — Gluon 2023.2.5 documentation. (Aber nur ein wild guess - daher mag ich eigentlich divide & conquer lieber, weil man da nicht so viel im Dunkeln rumstochern muss :slight_smile: )

Wir haben damals FFAC und/oder FFMUC als Basis genommen, für den 2023.2er Build wieder FFACs site-Repo als Basis, aber das bisherige Makefile aus unseren v2022/v2023-Vorversionen.

Letzten Endes scheint das ein Layer-8-Problem zu sein, da es ja augenscheinlich nur bei mir passiert; aber wie zum Henker das passiert, würde mich schon mal interessieren :wink:

Im damaligen Thread war mein autoconf-Problem ja 1.6.0 vs. 2.64 — und immer nur beim Bauen der OpenWrt-Host-Umgebung. Wenn das von unseren Patches ausginge – die Packages kommen ja erst später zum Tragen – müßten wir ja einen Gluon-Patch haben, der bzgl. autoconf OpenWrt patcht; anders kann doch bei einem Build, der auf git-Checkouts basiert, nix ›Fremdes‹ reinkommen? Einfach nur sehr merkwürdig …