Hi! On Mon, 4 Mar 2024 at 10:36, Thomas Schwinge <tschwi...@baylibre.com> wrote: > > Hi! > > On 2024-03-04T00:30:05+0000, Sam James <s...@gentoo.org> wrote: > > Mark Wielaard <m...@klomp.org> writes: > >> On Fri, Mar 01, 2024 at 05:32:15PM +0100, Christophe Lyon wrote: > >>> [...], I read > >>> https://gcc.gnu.org/wiki/Regenerating_GCC_Configuration > >>> which basically says "run autoreconf in every dir where there is a > >>> configure script" > >>> but this is not exactly what autoregen.py is doing. IIRC it is based > >>> on a script from Martin Liska, do you know/remember why it follows a > >>> different process? > >> > >> CCing Sam and Arsen who helped refine the autoregen.py script, who > >> might remember more details. We wanted a script that worked for both > >> gcc and binutils-gdb. And as far as I know autoreconf simply didn't > >> work in all directories. We also needed to skip some directories that > >> did contain a configure script, but that were imported (gotools, > >> readline, minizip). > > > > What we really need to do is, for a start, land tschwinge/aoliva's patches > > [0] > > for AC_CONFIG_SUBDIRS. > > Let me allocate some time this week to get that one completed. > > > Right now, the current situation is janky and it's nowhere near > > idiomatic autotools usage. It is not a comfortable experience > > interacting with it even as someone who is familiar and happy with using > > autotools otherwise. > > > > I didn't yet play with maintainer-mode myself but I also didn't see much > > point given I knew of more fundamental problems like this. > > > > [0] > > https://inbox.sourceware.org/gcc-patches/oril72c4yh....@lxoliva.fsfla.org/ >
Thanks for the background. I didn't follow that discussion at that time :-) So... I was confused because I noticed many warnings when doing a simple find . -name configure |while read f; do echo $f;d=$(dirname $f) && autoreconf -f $d && echo $d; done as suggested by https://gcc.gnu.org/wiki/Regenerating_GCC_Configuration Then I tried with autoregen.py, and saw the same.... and now just checked Sourceware's bot logs and saw the same numerous warnings at least in GCC (didn't check binutils yet). Looks like this is "expected" .... I started looking at auto-regenerating these files in our CI a couple of weeks ago, after we received several "complaints" from contributors saying that our precommit CI was useless / bothering since it didn't regenerate files, leading to false alarms. But now I'm wondering how such contributors regenerate the files impacted by their patches before committing, they probably just regenerate things in their subdir of interest, not noticing the whole picture :-( As a first step, we can probably use autoregen.py too, and declare maintainer-mode broken. However, I do notice that besides the rules about regenerating configure/Makefile.in/..., maintainer-mode is also used to update some files. In gcc: fixincludes: fixincl.x libffi: doc/version.texi libgfortran: some stuff :-) libiberty: functions.texi in binutils/bfd: gdb/sim bfd/po/SRC-POTFILES.in bfd/po/BLD-POTFILES.in bfd/bfd-in2.h bfd/libbfd.h bfd/libcoff.h binutils/po/POTFILES.in gas/po/POTFILES.in opcodes/i386*.h gdb/copying.c gdb/data-directory/*.xml gold/po/POTFILES.in gprof/po/POTFILES.in gfprofng/doc/version.texi ld/po/SRC-POTFILES.in ld/po/BLD-POTFILES.in ld: ldgram/ldlex... and all emulation sources libiberty/functions.texi opcodes/po/POTFILES.in opcodes/aarch64-{asm,dis,opc}-2.c opcodes/ia64 msp430 rl78 rx z8k decoders How are these files "normally" expected to be updated? Do people just manually uncomment the corresponding maintainer lines in the Makefiles and update manually? In particular we hit issues several times with files under opcodes, that we don't regenerate currently. Maybe we could build binutils in maintainer-mode at -j1 but, well.... README-maintainer-mode in binutils/gdb only mentions a problem with 'make distclean' and maintainer mode binutils/README-how-to-make-a-release indicates to use --enable-maintainer-mode, and the sample 'make' invocations do not include any -j flag, is that an indication that only -j1 is supposed to work? Similarly, the src-release.sh script does not use -j. Thanks, Christophe > > Grüße > Thomas