include: autotools: do not symlink files in autoreconf
authorMatthias Schiffer <mschiffer@universe-factory.net>
Thu, 29 Aug 2024 18:04:02 +0000 (20:04 +0200)
committerMatthias Schiffer <mschiffer@universe-factory.net>
Thu, 29 Aug 2024 18:06:02 +0000 (20:06 +0200)
In Gluon's Github Actions CI, we were occasionally seeing bizarre build
errors that looked like a config.sub file had been corrupted, or changed
while it was being executed.

The cause turned out to be an interaction of the symlinks created by
autoreconf (pointing from individual tools' build dirs into
`staging_dir/host/share/automake-1.16`) and OpenWrt's host-build.mk,
which replaced config.guess and config.sub *after* autoreconf. The
result was that the replacement of these files ended up following the
symlinks and writing the files in `staging_dir/host/share/automake-1.16`
instead of a package's build dir. This could cause other packages' builds
to fail if they were currently executing the scripts while they were
being written.

To fix this, disable autoreconf's symlinking feature, so that modifying
these files in a package's build directory can't accidentally affect the
staged versions.

Link: https://github.com/openwrt/openwrt/pull/15825
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
(cherry picked from commit c364cb8e469f9a7de1ed8960163c90e26b2df1ad)

include/autotools.mk

index d0e4b3642f5371a7418578e9eb761a1ba5461966..7fc6f371750160535da459bca9d3b1c3c6a797b1 100644 (file)
@@ -44,7 +44,7 @@ define autoreconf
                                touch NEWS AUTHORS COPYING ABOUT-NLS ChangeLog; \
                                $(AM_TOOL_PATHS) \
                                        LIBTOOLIZE='$(STAGING_DIR_HOST)/bin/libtoolize --install' \
-                                       $(STAGING_DIR_HOST)/bin/autoreconf -v -f -i -s \
+                                       $(STAGING_DIR_HOST)/bin/autoreconf -v -f -i \
                                        $(if $(word 2,$(3)),--no-recursive) \
                                        -B $(STAGING_DIR_HOST)/share/aclocal \
                                        $(patsubst %,-I %,$(5)) \