Komplexe Setups bauen nicht

Moin,

kann mir jemand erklären, was bei komplexeren Gluon-Builds aus der Reihe tanzt?

ffgt@kaos:~/build$ git clone https://github.com/ffac/site.git ffac-site -b v2023.2.x
ffgt@kaos:~/build$ cd ffac-site/
ffgt@kaos:~/build/ffac-site$ export GLUON_RELEASE=1.6.0~11
ffgt@kaos:~/build/ffac-site$ make manifest
[…]
Updating Gluon modules…
make -C gluon-build update
[…]
Installing all packages from feed luci.
Installing all packages from feed telephony.

Building target ath79-generic
[…]
#
# configuration written to .config
#
[…]
time: target/linux/prereq#1.17#0.04#1.20
 make[3] tools/install
 make[4] -C tools/flock compile
 make[4] -C tools/xz compile

OS des Buildhosts: Debian GNU/Linux 11 (bullseye).

Und bei „tools/xz compile“ hängt es dann bis zum CTRL-C/kill — WTF‽

ffgt@kaos:~/build$ date ; ps -Aelf | grep xz
Fri 13 Oct 2023 04:20:09 AM UTC
0 S ffgt     3389221 3389137  0  80   0 -   955 -      04:09 pts/6    00:00:00 bash -c /home/ffgt/build/ffac-site/gluon-build/openwrt/scripts/time.pl "time: tools/xz/compile" make  -r -C tools/xz BUILD_SUBDIR="tools/xz" BUILD_VARIANT="" ALL_VARIANTS="" compile  || ?(?printf "\\033[33m%s\\033[m\n" "    ERROR: tools/xz failed to build." >&8;   exit 1;) 
0 S ffgt     3389222 3389221  0  80   0 -  2130 -      04:09 pts/6    00:00:00 perl /home/ffgt/build/ffac-site/gluon-build/openwrt/scripts/time.pl time: tools/xz/compile make -r -C tools/xz BUILD_SUBDIR=tools/xz BUILD_VARIANT= ALL_VARIANTS= compile
0 S ffgt     3389223 3389222  0  80   0 -   728 -      04:09 pts/6    00:00:00 make -r -C tools/xz BUILD_SUBDIR=tools/xz BUILD_VARIANT= ALL_VARIANTS= compile
0 S ffgt     3395293 3064656  0  80   0 -  1646 -      04:20 pts/4    00:00:00 grep xz

Hi Wusel,

grundsätzlich handhabst du unsere Site so schon richtig.
Dass dieses Setup verschachtelt make ausführt hat bisher auch keine Probleme gemacht.

Ich würde mal gucken, ob du

  1. tatsächlich alle Dependencies installiert genannten hast: Getting Started — Gluon 2023.2.2 documentation
    Allerdings würde ich mich eher auf diese
    gluon/contrib/docker/Dockerfile at master · freifunk-gluon/gluon · GitHub
    bzw diese List verlassen…
    ff-supernode/playbooks/roles/ff.buildserver/tasks/main.yml at main · ffac/ff-supernode · GitHub

Warum die eine zlib1g-dev hat und die andere bzip2 weiß ich so aus dem Stehgreif nicht. Im zweifel schadet beides sicher nicht.

  1. aktuell baust du ja mit unserem v2023.2.x bereits Gluon vom master und somit mit openwrt 23.05-rc4 - an den build-dependencies hat sich eigentlich nichts geändert, aber vielleicht kannst du mal validieren, dass v2023.1.x (welches gluon v2023.1.1 baut - siehe release.mk) zumindest tut?

Ich hoffe, dass dir das weiter hilft

Diese Probleme habe ich unabhängig auf zwei Debian-Boxen, weiß der Henker, was da schief läuft. Mit unserem älteren, FFMUC-basierten Build-via-site-Setup hängt hingegen der Bau, wenn schon einmal gebaut wurde. Keine Fehlermeldung – demnach kann IMHO auch nix fehlen –, es hängt in irgendeinem gmake-Aufruf.

Merkwürdig, daß dies Problem bislang sonst niemand hat(te), es ist bei mir nicht das erste Mal, daß sich der Bau irgendwo in den Fuß schießt (unter Ubuntu als auch Debian), wobei der Buildhost jeweils auch Hypervisor bei uns ist, also definitiv keine Minimalinstallation.

Nachdem es aber testweise auf einer ziemlich minimalen Debian-11-VM dieses Problem nicht gab,
habe ich den gesamten Bauprozeß nun in einen Docker-Container verlagert (nach Vorbild von FFIN), das scheint besser zu funktionieren. Jedenfalls purzeln da funktionsfähige Images bei raus, auch nicht deutlich langsamer als nativ gebaut. Macht den Bauprozeß nicht gerade übersichtlicher, aber wichtig ist nur, was hinten rauskommt :wink:

Zu früh gefreut.

ffgt@kaos:~/build$ rm -rf ffbog-v2023.1/site-ffgt/gluon-build/
ffgt@kaos:~/build$ time ./mk-ffbog-2023_2-docker.sh
[…]
Updating Gluon modules…
make V=sc -C gluon-build update
[…]
Building target ath79-generic
[…]
+ wget --tries=5 --timeout=20 --output-document=- https://mirror.csclub.uwaterloo.ca/gnu/autoconf-archive/autoconf-archive-2023.02.20.tar.xz
--2023-10-15 22:22:03--  https://mirror.csclub.uwaterloo.ca/gnu/autoconf-archive/autoconf-archive-2023.02.20.tar.xz
Resolving mirror.csclub.uwaterloo.ca (mirror.csclub.uwaterloo.ca)... 129.97.134.71, 2620:101:f000:4901:c5c:0:f:1055
Connecting to mirror.csclub.uwaterloo.ca (mirror.csclub.uwaterloo.ca)|129.97.134.71|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 678184 (662K) [text/plain]
Saving to: 'STDOUT'
[…]

+ wget --tries=5 --timeout=20 --output-document=- https://mirror.csclub.uwaterloo.ca/gnu/autoconf/autoconf-2.71.tar.xz
--2023-10-15 22:22:32--  https://mirror.csclub.uwaterloo.ca/gnu/autoconf/autoconf-2.71.tar.xz
Resolving mirror.csclub.uwaterloo.ca (mirror.csclub.uwaterloo.ca)... 129.97.134.71, 2620:101:f000:4901:c5c:0:f:1055
Connecting to mirror.csclub.uwaterloo.ca (mirror.csclub.uwaterloo.ca)|129.97.134.71|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1292296 (1.2M) [text/plain]
Saving to: 'STDOUT'
[…]

+ wget --tries=5 --timeout=20 --output-document=- https://mirror.csclub.uwaterloo.ca/gnu/libtool/libtool-2.4.7.tar.xz
--2023-10-15 22:22:50--  https://mirror.csclub.uwaterloo.ca/gnu/libtool/libtool-2.4.7.tar.xz
Resolving mirror.csclub.uwaterloo.ca (mirror.csclub.uwaterloo.ca)... 129.97.134.71, 2620:101:f000:4901:c5c:0:f:1055
Connecting to mirror.csclub.uwaterloo.ca (mirror.csclub.uwaterloo.ca)|129.97.134.71|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1016040 (992K) [text/plain]
Saving to: 'STDOUT'
[…]
2023-10-15 22:22:51 (1.71 MB/s) - written to stdout [1016040/1016040]

There seems to be no Makefile in this directory.
You must run ./configure before running 'make'.
make[5]: *** [GNUmakefile:108: abort-due-to-no-makefile] Error 1
make[4]: [Makefile:67: /home/ffgt/build/ffbog-v2023.1/site-ffgt/gluon-build/openwrt/build_dir/host/libtool-2.4.7/.prepared3d3df29a2c452ea2cc5066c854e40944_6664517399ebbbc92a37c5bb081b5c53] Error 2 (ignored)
ar: `u' modifier ignored since `D' is the default (see `U')
ar: `u' modifier ignored since `D' is the default (see `U')
bootstrap:   error:   '/home/ffgt/build/ffbog-v2023.1/site-ffgt/gluon-build/openwrt/staging_dir/host/bin/autoconf' version == 1.6.0 is too old
bootstrap:            '/home/ffgt/build/ffbog-v2023.1/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[4]: *** [Makefile:69: /home/ffgt/build/ffbog-v2023.1/site-ffgt/gluon-build/openwrt/build_dir/host/libtool-2.4.7/.prepared3d3df29a2c452ea2cc5066c854e40944_6664517399ebbbc92a37c5bb081b5c53] Error 1
make[3]: *** [tools/Makefile:226: tools/libtool/compile] Error 1
make[3]: *** Waiting for unfinished jobs....

FTR:

ffgt@kaos:~/build/ffbog-v2023.1/site-ffgt$ grep /autoconf make.log
Collecting package info: done
+ wget --tries=5 --timeout=20 --output-document=- https://mirror.csclub.uwaterloo.ca/gnu/autoconf-archive/autoconf-archive-2023.02.20.tar.xz
--2023-10-15 22:48:14--  https://mirror.csclub.uwaterloo.ca/gnu/autoconf-archive/autoconf-archive-2023.02.20.tar.xz
+ wget --tries=5 --timeout=20 --output-document=- https://mirror.csclub.uwaterloo.ca/gnu/autoconf/autoconf-2.71.tar.xz
--2023-10-15 22:48:43--  https://mirror.csclub.uwaterloo.ca/gnu/autoconf/autoconf-2.71.tar.xz
bootstrap:   error:   '/home/ffgt/build/ffbog-v2023.1/site-ffgt/gluon-build/openwrt/staging_dir/host/bin/autoconf' version == 1.6.0 is too old
bootstrap:            '/home/ffgt/build/ffbog-v2023.1/site-ffgt/gluon-build/openwrt/staging_dir/host/bin/autoconf' version >= 2.64 is required
bootstrap:          autoconf   2.64        http://www.gnu.org/s/autoconf       
autoreconf: running: /home/ffgt/build/ffbog-v2023.1/site-ffgt/gluon-build/openwrt/staging_dir/host/bin/autoconf --include=m4 --include=. --prepend-include=/home/ffgt/build/ffbog-v2023.1/site-ffgt/gluon-build/openwrt/staging_dir/host/share/aclocal --force
ffgt@kaos:~/build/ffbog-v2023.1/site-ffgt$ /home/ffgt/build/ffbog-v2023.1/site-ffgt/gluon-build/openwrt/staging_dir/host/bin/autoconf --version
autoconf (GNU Autoconf) 1.6.0~59
[…]
ffgt@kaos:~/build/ffbog-v2023.1/site-ffgt$ docker run -it --hostname build.container --mount type=bind,source=/home/ffgt/build,target=/home/ffgt/build 01393e7e667f
ffgt@build:/$ /home/ffgt/build/ffbog-v2023.1/site-ffgt/gluon-build/openwrt/staging_dir/host/bin/autoconf --version
autoconf (GNU Autoconf) 1.6.0~59
[…]

Und:

ffgt@kaos:~/build/ffbog-v2023.1/site-ffgt$ autoconf --version
autoconf (GNU Autoconf) 2.69

Wieso wird plötzlich wieder autoconf 1.6.0 installiert, und woher? Warum gibt’s kein Makefile für libtool? Der Bauprozeß findet doch komplett unter gluon-build statt, wie kann derlei passieren bei Kram, der sämtlich erst aus dem Netz gezogen wird (und in der richtigen Version AFAICS)?

Autoconf wird ja über das OpenWrt-Buildsystem installiert, und ich installiere keinen Patch, der die Version downgraded:

ffgt@build:~/build/ffbog-v2023.1/site-ffgt$ rm -rf gluon-build/
ffgt@build:~/build/ffbog-v2023.1/site-ffgt$ rm *.log
ffgt@build:~/build/ffbog-v2023.1/site-ffgt$ grep -r autoconf .

Was muß ich noch wipen für einen sauberen, immer korrekten Build?

1 „Gefällt mir“

was für ein Dockerfile benutzt du da, das was Gluon passend zum jeweiligen Branch mitbringt?

gluon-build ist eigentlich alles, sofern dein Build-Setup nix abweichendes tut…

diese Aussage sagt doch aber irgendwie schon, dass etwas am Host-System falsch ist, wenn es in einem minimalen geht, oder?

1 „Gefällt mir“

mk-ffbog-2023_2-docker.sh soll from scratch funktionieren. Daher wird – wenn ich ein paar Klippen bei Docker umschifft habe – das Dockerimage zum Bau von Gluon in dem Skript erstellt werden — vorzugsweise würde ich ohne Docker auskommen wollen … Derzeit nutze ich ein „extern“ erstelltes Image per docker build --no-cache -f ./Dockerfile-Gluon-Build:

ffgt@kaos:~/build$ cat docker/Dockerfile-Gluon-Build
FROM debian:12

RUN apt-get update \
  && apt-get install -y ca-certificates \
    file \
    git \
    subversion \
    python3 \
    python3-distutils \
    build-essential \
    gawk \
    unzip \
    libncurses5-dev \
    zlib1g-dev \
    libssl-dev \
    libelf-dev \
    wget \
    rsync \
    time \
    qemu-utils \
    ecdsautils \
    lua-check \
    shellcheck \
    jq \
    rsync \
  && apt-get clean

RUN id ; echo build.container >/etc/hostname
# gluon build fails when running as root
RUN adduser --quiet --disabled-login --gecos '' ffgt
USER ffgt:ffgt
# workaround for fatal: detected dubious ownership in repository at '/builds/firmware/site-ffs'
# https://gitlab.com/gitlab-org/gitlab-runner/-/issues/29022
RUN git config --global --add safe.directory '*'
RUN git config --global user.email "technik@guetersloh.freifunk.net"
RUN git config --global user.name "FFGT Admins"
RUN mkdir /home/ffgt/build

Aufgerufen wie folgt:

[…]
cat <<EOF >docker-build-env
export RELEASE=${RELEASE}
export GLUON_RELEASE=${RELEASE}
export GLUON_AUTOUPDATER_BRANCH=stable
export GLUON_AUTOUPDATER_ENABLED=1
export GLUON_LANGS="de en"
export USEnCORES=${USEnCORES}
export JOBS=${USEnCORES}
EOF

cat <<EOF >docker-build.sh
#!/bin/bash

cd $(pwd)
. docker-build-env
make manifest 2>&1 | tee make.log
EOF
chmod +x docker-build.sh

docker run -it --hostname build.container --mount type=bind,source=/home/ffgt/build,target=/home/ffgt/build 591ce42538ff $(pwd)/docker-build
.sh
RC=$?
[…]

Das tat mal (i. e. alle Crosscompiler und Firmwares wurden gebaut), siehe Post; nach dem Löschen von gluon-build wegen neuer Gluon-Basis bricht das jetzt mal wieder ins Essen. Auch Neubau des Containers und entsprechender Austausch der ID im Aufruf ändert daran … nix.

Tja. Danke für die Bestätigung, allein …

ffgt@kaos:~/build$ rm -rf ffbog-v2023.1/site-ffgt/
ffgt@kaos:~/build$ time ./mk-ffbog-2023_2-docker.sh
[…]
There seems to be no Makefile in this directory.
You must run ./configure before running 'make'.
make[5]: *** [GNUmakefile:108: abort-due-to-no-makefile] Error 1
make[4]: [Makefile:67: /home/ffgt/build/ffbog-v2023.1/site-ffgt/gluon-build/openwrt/build_dir/host/libtool-2.4.7/.preparedaa6be7a7b08f4fe6b24e6b6fce189705_6664517399ebbbc92a37c5bb081b5c53] Error 2 (ignored)
ar: `u' modifier ignored since `D' is the default (see `U')
bootstrap:   error:   '/home/ffgt/build/ffbog-v2023.1/site-ffgt/gluon-build/openwrt/staging_dir/host/bin/autoconf' version == 1.6.0 is too old
bootstrap:            '/home/ffgt/build/ffbog-v2023.1/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[4]: *** [Makefile:69: /home/ffgt/build/ffbog-v2023.1/site-ffgt/gluon-build/openwrt/build_dir/host/libtool-2.4.7/.preparedaa6be7a7b08f4fe6b24e6b6fce189705_6664517399ebbbc92a37c5bb081b5c53] Error 1
make[3]: *** [tools/Makefile:226: tools/libtool/compile] Error 1
make[3]: *** Waiting for unfinished jobs....
[…]

Jein. Das initiale Problem mit ffac/site.git konnte ich auf zwei unabhängigen Debian-Installationen erleben (1x Debian 11 (bullseye), 1x LMDE 5 (elsie)), auf 'ner Debian-11-VM lief der Build über „make[4] -C tools/xz compile“ hinaus — einen kompletten Bau auf einer lahmen 2-CPU-VM habe ich nicht abgewartet, auch meine Lebenszeit ist endlich. Daher der Ansatz mit Docker — da habe ich ja eine kontrolierte Umgebung und der Overhead ist relativ gering.

Aber jetzt bricht auch docker run -it --hostname build.container --mount type=bind,source=/home/ffgt/build,target=/home/ffgt/build 591ce42538ff $(pwd)/docker-build.sh ins Essen beim Bau der OpenWrt-Buildroot — auch, wenn nur ein Patch aus dem originalen FFAC-Patchset angewendet wird. Irgendwas mit Firetruck?

ich habe nun GitHub - ffac/site at v2023.2.x erfolgreich in einer frischen Debian 11 VM gebaut (das hätte bei dir ja anscheinend auch geklappt wenn ich es richtig verstehe, du wolltest nur nicht abwarten)

ich habe euer GitHub - ffgtso/site-ffbog-v2023.1 erfolgreich mit dem Gluon-Dockerfile gebaut - das Script mk-ffbog-2023_2-docker.sh habe ich leider nirgends gefunden, also einfach die Gluon-Standard-Build-Befehle benutzt.

Zeit verbraten, Fehler bisher trotzdem leider nicht reproduzierbar.

Ich sehe folgende unabhängigen möglichen Ansätze zur Lösungsfindung:
a) frisches Setup benutzen
b) original-Methoden statt (too) custom stuff
c) oder alle custom-Dinge im Detail benennen/verlinken, jedes ausgeführte Kommando und insbesondere vollständige logs bereitstellen, idealerweise mit den make Parametern --output-sync=recurse V=s

Es lief über tools/zx (oder whatever) hinaus, wo der Aufruf direkt auf dem Buildhost und auch meinem Desktop hängenblieb. Bau in einer VM macht das Ganze ja nicht schneller, daher reichte das zumindest als Pointer, es mal mit 'nem Container zu versuchen.

Ja, das habe ich auch ein oder zweimal geschafft, siehe oben. Nach eimem „rm -rf gluon-build“ allerdings war kein Bau mehr möglich, ich lande immer wieder beim „autoconf“-Problem.

Jenes bereitet auch nur die Umgebung vor; für Docker sind doch nur die darin erzeugten docker-build-env & docker-build.sh sowie der Docker-Aufruf relevant? Anyway, ich hab’s mal um Pfadabhängigkeiten weiter bereingt und hochgeladen — enter at your own risk.

Frisch ausprobiert:

Build log
wusel@cohen:/media/wusel/temp-20230713/wusel/build$ git clone https://github.com/ffgtso/gln-bld-env.git
wusel@cohen:/media/wusel/temp-20230713/wusel/build$ cd gln-bld-env/
wusel@cohen:/media/wusel/temp-20230713/wusel/build/gln-bld-env$ cd docker
wusel@cohen:/media/wusel/temp-20230713/wusel/build/gln-bld-env/docker$ docker build --no-cache --force-rm --quiet --file ./Dockerfile_v2023.1 -t gluon-docker:v2023.1 .
wusel@cohen:/media/wusel/temp-20230713/wusel/build/gln-bld-env/docker$ cd ..
wusel@cohen:/media/wusel/temp-20230713/wusel/build/gln-bld-env$ cd ..
wusel@cohen:/media/wusel/temp-20230713/wusel/build$ time gln-bld-env/mk-ffbog-2023_2-docker.sh
[…]
There seems to be no Makefile in this directory.
You must run ./configure before running 'make'.
make[5]: *** [GNUmakefile:108: abort-due-to-no-makefile] Error 1
make[4]: [Makefile:67: /gluon/ffbog-v2023.1/site-ffgt/gluon-build/openwrt/build_dir/host/libtool-2.4.7/.prepared5eeca6933dbb4a5b9720f5f45dbcd718_6664517399ebbbc92a37c5bb081b5c53] Error 2 (ignored)
bootstrap:   error:   '/gluon/ffbog-v2023.1/site-ffgt/gluon-build/openwrt/staging_dir/host/bin/autoconf' version == 1.6.0 is too old
bootstrap:            '/gluon/ffbog-v2023.1/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[4]: *** [Makefile:69: /gluon/ffbog-v2023.1/site-ffgt/gluon-build/openwrt/build_dir/host/libtool-2.4.7/.prepared5eeca6933dbb4a5b9720f5f45dbcd718_6664517399ebbbc92a37c5bb081b5c53] Error 1
make[3]: *** [tools/Makefile:226: tools/libtool/compile] Error 1
make[3]: *** Waiting for unfinished jobs....
make[2]: *** [/gluon/ffbog-v2023.1/site-ffgt/gluon-build/openwrt/include/toplevel.mk:232: tools/install] Error 2
make[1]: *** [Makefile:169: openwrt/staging_dir/hostpkg/bin/lua] Error 2
Done building target ath79-generic with RC 2
*** Bailing out.
Copying new opkg keys to /gluon/build/.key-build
cp: cannot stat 'gluon-build/openwrt/key-build*': No such file or directory
make: *** [Makefile:150: build] Error 1

real	17m48,781s
user	0m0,499s
sys 	0m0,207s

Danke dafür; ich kämpfe damit leider schon Wochen. Spätenstens mit Docker sehe ich den Grund aber nicht mehr bei mir … Ok, vieleicht halte ich es falsch (aber auch mit 1x statt 3x soviele Jobs wie Cores besteht das Problem auch), aber sauber reproduzierbar ist der Imagebau für mich nicht, es ist eher eine Wundertüte :frowning:

Mit time gln-bld-env/mk-ffbog-2023_2-docker.sh bei mir leider bislang zu100%.

Build log
ffgt@fflip-ber02:/var/lib/one/datastores/build$ (cd gln-bld-env/docker/ ; docker build --no-cache --force-rm --quiet --file ./Dockerfile_v2023.1 -t gluon-docker:v2023.1 .)
sha256:daeafe893e8bc5a207c73f7bb8e8535707c3adc7dcf8ebdec666172237b3c1b5
ffgt@fflip-ber02:/var/lib/one/datastores/build$ echo "72" >buildnumber.txt
ffgt@fflip-ber02:/var/lib/one/datastores/build$ time gln-bld-env/mk-ffbog-2023_2-docker.sh
Cloning into 'site-ffgt'...
remote: Enumerating objects: 2027, done.
remote: Counting objects: 100% (2027/2027), done.
remote: Compressing objects: 100% (873/873), done.
remote: Total 2027 (delta 1193), reused 1968 (delta 1134), pack-reused 0
Receiving objects: 100% (2027/2027), 510.15 KiB | 5.31 MiB/s, done.
Resolving deltas: 100% (1193/1193), done.
Cloning into 'ffgt_packages-v2020.1'...
remote: Enumerating objects: 4896, done.
remote: Counting objects: 100% (258/258), done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 4896 (delta 252), reused 245 (delta 245), pack-reused 4638
Receiving objects: 100% (4896/4896), 508.45 KiB | 6.69 MiB/s, done.
Resolving deltas: 100% (1604/1604), done.

#########################
# 4830 Firmware build
# building release '1.6.0~72'
#########################
# MAKEFLAGS:
# -j72 --no-print-directory --output-sync
#########################
# git url: https://github.com/freifunk-gluon/gluon.git
# git ref: 1b6ddac3c608961399c4877198dd552c12c3f07b 
#########################
# Found 27 patches
#########################

mkdir -p gluon-build

Initialized empty Git repository in /gluon/ffbog-v2023.1/site-ffgt/gluon-build/.git/
mkdir -p output/
rm -rf output/*
for target in ath79-generic ath79-nand ath79-mikrotik bcm27xx-bcm2708 bcm27xx-bcm2709 ipq40xx-generic ipq40xx-mikrotik ipq806x-generic lantiq-xrx200 lantiq-xway mediatek-mt7622 mpc85xx-p1010 mpc85xx-p1020 ramips-mt7620 ramips-mt7621 ramips-mt76x8 rockchip-armv8 sunxi-cortexa7 x86-generic x86-geode x86-legacy x86-64 mediatek-filogic; do touch build_${target}.log ; rm build_${target}.log ; done
[…]
curve25519/curve25519.c:3498:57: warning: argument 2 of type 'const uint8_t *' {aka 'const unsigned char *'} declared as a pointer [-Warray-parameter=]
 3498 | void x25519_ge_scalarmult_base(ge_p3 *h, const uint8_t *a) {
      |                                          ~~~~~~~~~~~~~~~^
There seems to be no Makefile in this directory.
In file included from curve25519/curve25519.c:34:
curve25519/curve25519_internal.h:85:56: note: previously declared as an array 'const uint8_t[32]' {aka 'const unsigned char[32]'}
   85 | void x25519_ge_scalarmult_base(ge_p3 *h, const uint8_t a[32]);
      |                                          ~~~~~~~~~~~~~~^~~~~
You must run ./configure before running 'make'.
make[5]: *** [GNUmakefile:108: abort-due-to-no-makefile] Error 1
make[4]: [Makefile:67: /gluon/ffbog-v2023.1/site-ffgt/gluon-build/openwrt/build_dir/host/libtool-2.4.7/.preparedba7aa0ac530c32267d6766958a176b01_6664517399ebbbc92a37c5bb081b5c53] Error 2 (ignored)
bootstrap:   error:   '/gluon/ffbog-v2023.1/site-ffgt/gluon-build/openwrt/staging_dir/host/bin/autoconf' version == 1.6.0 is too old
bootstrap:            '/gluon/ffbog-v2023.1/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[4]: *** [Makefile:69: /gluon/ffbog-v2023.1/site-ffgt/gluon-build/openwrt/build_dir/host/libtool-2.4.7/.preparedba7aa0ac530c32267d6766958a176b01_6664517399ebbbc92a37c5bb081b5c53] Error 1
make[3]: *** [tools/Makefile:226: tools/libtool/compile] Error 1
make[3]: *** Waiting for unfinished jobs....
[…]
/usr/bin/ld: netcat.o: in function `main':
netcat.c:(.text.startup+0x15e1): warning: the use of `mktemp' is dangerous, better use `mkstemp' or `mkdtemp'
make[2]: *** [/gluon/ffbog-v2023.1/site-ffgt/gluon-build/openwrt/include/toplevel.mk:232: tools/install] Error 2
make[1]: *** [Makefile:169: openwrt/staging_dir/hostpkg/bin/lua] Error 2
Done building target ath79-generic with RC 2
*** Bailing out.
Copying new opkg keys to /gluon/build/.key-build
cp: cannot stat 'gluon-build/openwrt/key-build*': No such file or directory
make: *** [Makefile:150: build] Error 1

real	11m34.517s
user	0m0.739s
sys 	0m0.367s

Wieso '/gluon/ffbog-v2023.1/site-ffgt/gluon-build/openwrt/staging_dir/host/bin/autoconf' version == 1.6.0 is too old aber autoconf 2.64? Race condition bei zuvielen Jobs? Würde zumindest auch »There seems to be no Makefile in this directory.« erklären?

EDIT: Nope. Auch bei nur 4 Jobs bricht das ins Essen.

FTR:

OpenWrt 'make world' tut
ffgt@fflip-ber02:~/build$ docker run -it --hostname gluon.docker --rm -u "$(id -u):$(id -g)" --volume="$(pwd):/gluon" -e HOME=/gluon  gluon-docker:v2023.1
uid-1000@gluon:~$ cd ffbog-v2023.1/site-ffgt/gluon-build/openwrt
uid-1000@gluon:~/ffbog-v2023.1/site-ffgt/gluon-build/openwrt$ make -j24 V=sc world
[…]
make[2]: Entering directory '/gluon/ffbog-v2023.1/site-ffgt/gluon-build/openwrt'
make[2]: Leaving directory '/gluon/ffbog-v2023.1/site-ffgt/gluon-build/openwrt'
make[1]: Leaving directory '/gluon/ffbog-v2023.1/site-ffgt/gluon-build/openwrt'
uid-1000@gluon:~/ffbog-v2023.1/site-ffgt/gluon-build/openwrt$ echo $?
0
uid-1000@gluon:~/ffbog-v2023.1/site-ffgt/gluon-build/openwrt$ exit

Ein darauf folgendes time gln-bld-env/mk-ffbog-2023_2-docker.sh baut dann Images (oder auch nicht: * pkg_hash_check_unresolved: cannot find dependency ucode for wpad-basic-mbedtls, aber das ist dann eher eine andere Ebene) — ist also irgendwas beim ›delegierten‹ Bau der OpenWrt-Build-Umgebung fischig?

EDIT: Oder ist das wpad-basic-mbedtls-Problem Auswuchs des „make world“?

./openwrt/tmp/.diffconfig.stage1:CONFIG_DEFAULT_wpad-basic-mbedtls=y
./openwrt/tmp/.diffconfig.stage1:CONFIG_MODULE_DEFAULT_wpad-basic-mbedtls=y

Hi rotanid,

Die Spezialität beider Sites, sind die site-repo-contained-patches - was bei FFMUC abgeguckt wurde und hier etwas ausführlicher erklärt wurde:

So baust du mit „Standard-Build-Befehlen“ eben das Gluon ohne Anwendung der Patches - da kommt dann auch was anderes raus.
Nur so zur Info, damit du darüber Bescheid weißt.

Um korrekt zu bauen (also mit angewendeten Patches und passendem gluon-checkout) sollte es reichen:

git clone https://github.com/ffac/site.git ffac-site
cd ffac-site
make manifest

oder eben make build - wenn man keine Manifests braucht - oder eben make build GLUON_TARGETS=ipq40xx-generic um ein einzelnes Target zu bauen.

Das dürfte mit entsprechenden Dependencies auch direkt durchlaufen.
@wusel - funktioniert das denn bei dir so direkt?

So ähnlich klappt das bei mir auch mit deiner Site:

git clone https://github.com/ffgtso/site-ffbog-v2023.2.git
cd site-ffbog-v2023.2
export GLUON_RELEASE=v2023.2.0-ffbog-test
make manifest
# remove patches which error - you should reapply them
rm patches/0009-ffgt-Show-online-status.patch_
rm patches/0010-ffgt-Show-online-status-fix.patch
rm patches/0011-ffgt-Add-community-name.patch

make manifest GLUON_TARGETS=ipq40xx-generic

# to build debug run
make build JOBS=1 V=sc GLUON_TARGETS=ipq40xx-generic

Ich lass das grad mal laufen.
Dann braucht man den Docker und sonst wie auch nicht mehr (darf es natürlich trotzdem nutzen zwecks CI und co).

In unserem (FFAC) Makefile gab es aber für den beständigen opkg key-build noch einen kleinen Fehler, den ich hier behoben habe (hier nicht die ursache, ist mir in deinen Logs aufgefallen):

Das solltest du auch in deinem Makefile übernehmen

Ich hoffe, dass so etwas Licht ins Dunkle kommt.
Viele Grüße
Florian

Bei mir kommt dabei dann das hier raus:

/soc/i2c@78b7000/led-controller: I2C bus unit address format error, expected "62"
Collected errors:
 * check_conflicts_for: The following packages conflict with wpad-basic-openssl:
 * check_conflicts_for:         hostapd-mini * 
 * opkg_install_cmd: Cannot install package wpad-basic-openssl.
 * check_conflicts_for: The following packages conflict with wpa-supplicant-mini:
 * check_conflicts_for:         wpad-basic-openssl * 
 * opkg_install_cmd: Cannot install package ffac-autoupdater-wifi-fallback.
make[7]: *** [/mnt/site-ffbog-v2023.2/gluon-build/openwrt/include/image.mk:328: target-dir-00f37722] Error 255
make[7]: *** Waiting for unfinished jobs....
Collected errors:
 * check_conflicts_for: The following packages conflict with wpad-basic-openssl:
 * check_conflicts_for:         hostapd-mini * 
 * opkg_install_cmd: Cannot install package wpad-basic-openssl.
 * check_conflicts_for: The following packages conflict with wpa-supplicant-mini:
 * check_conflicts_for:         wpad-basic-openssl * 
 * opkg_install_cmd: Cannot install package ffac-autoupdater-wifi-fallback.
make[7]: *** [/mnt/site-ffbog-v2023.2/gluon-build/openwrt/include/image.mk:328: target-dir-1a783b19] Error 255

Das kommt bekannt vor: wpa-supplicant-mini wird nun leider vom ffac-autoupdater-wifi-fallback benötigt (funktioniert sonst nicht mit v23.05 - ffac-autoupdater-wifi-fallback: add fallback wifi autoupdater by maurerle · Pull Request #33 · freifunk-gluon/community-packages · GitHub ) - wpa-supplicant-mini ist irgendwie inkompatibel mit wpad-basic-openssl (das eine relied on hostapd-common - das andere on hostapd-mini oder so).

Ich hab jetzt mal den ffac-autoupdater-wifi-fallback in site.mk entfernt.

Langfristig wäre es besser statt openssl auf mbedtls umzustellen.

EDIT: auf einem aktuellen Stand gibts den Fehler wohl nicht (in FFAC klappts mit openssl und ffac-autoupdater-wifi-fallback) - gluon-master/openwrt zu aktualisieren würde also auch helfen - oder wpad-basic-openssl zu entfernen… :slight_smile:

Tat mal, heute bricht der site-tools-Bau in OpenWrt ins Essen, siehe oben (libtool(?) meckert über fehlendes Makefile und am Ende wird über falsche automake(?)-Version gemeckert, obwohl die richtige geholt und installiert wurde) — das Problem hatte ich schon mit v2022 oder gar v2021 mal, wegwerfen und from scratch Neubauen half da — scheint aber eher Zufall zu sein.

Ich geh’ jetzt wieder zu pre-patched Repos zurück, KISS.

EDIT: das mit dem fehlenden Keys-Verzeichnis hatte ich bemerkt und lokal gefixt.

Also nachdem ich wpad-basic-openssl entfernt hatte lief der build durch und ich hab passende images in output/images/sysupgrade.

Das wird auch mit Docker usw so funktionieren.
Die kaputten patches müssten bei dir aber auch sichtbar sein - vielleicht wird der fehler-output irgendwie unterdrückt und du siehst nur die Folgefehler (keine makefile in gluon-build/openwrt weil openwrt nicht ordentlich ausgecheckt wurde, weil Patches nicht applicable sind)?