On Mon, 4 Mar 2024 at 16:41, Richard Earnshaw <richard.earns...@arm.com> wrote:
>
>
>
> On 04/03/2024 15:36, Richard Earnshaw (lists) wrote:
> > On 04/03/2024 14:46, Christophe Lyon via Gcc wrote:
> >> On Mon, 4 Mar 2024 at 12:25, Jonathan Wakely <jwakely....@gmail.com> wrote:
> >>>
> >>> On Mon, 4 Mar 2024 at 10:44, Christophe Lyon via Gcc <gcc@gcc.gnu.org> 
> >>> wrote:
> >>>>
> >>>> 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 
> >>>>>>>> <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/
> >>>>>>  
> >>>>>> <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 
> >>>> <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
> >>>
> >>> My recently proposed patch adds the first of those to gcc_update, the
> >>> other should be done too.
> >>> https://gcc.gnu.org/pipermail/gcc-patches/2024-March/647027.html 
> >>> <https://gcc.gnu.org/pipermail/gcc-patches/2024-March/647027.html>
> >>>
> >>
> >> This script touches files such that they appear more recent than their
> >> dependencies,
> >> so IIUC even if one uses --enable-maintainer-mode, it will have no effect.
> >> For auto* files, this is "fine" as we can run autoreconf or
> >> autoregen.py before starting configure+build, but what about other
> >> files?
> >> For instance, if we have to test a patch which implies changes to
> >> fixincludes/fixincl.x, how should we proceed?
> >> 1- git checkout (with possibly "wrong" timestamps)
> >> 2- apply patch-to-test
> >> 3- contrib/gcc_update -t
> >> 4- configure --enable-maintainer-mode
> >
> > If you ran
> >
> > git reset --hard master // restore state to 'master'
> > contrib/gcc_update // pull latest code
> >
> > then anything coming from upstream will be touched automatically.  You 
> > really don't want to re-touch the files after patching unless you're sure 
> > they've all been patched correctly, it will break if there's anything 
> > regenerated that's missing.
> >
> > R.
>
> Alternatively, if you did
>
> git reset --hard master // restore state to 'master'
> contrib/gcc_update // pull latest code
> patch
> contrib/gcc_update -t
>
> and the second command touched files that weren't listed in the patches, then 
> you'd know that there was something missing from the patch set.  You'd 
> probably still need to go back to the pristine trunk version though, to get 
> the state into something that could be maintainer-mode regenerated.
>

We have been using contrib/gcc_update -t for years (even before the
public CI) because we noticed random timestamp problems after 'git
clone/checkout'. Maybe that was caused by our mirror, I don't
remember.  Anyway after a fresh clone/checkout, we had some random
build failures because the build process was failing to update some
files; probably trying to run the host's too recent autoconf...
Actually I'm not sure about the original purpose of gcc_summary, it
dates back to 1999 and the commit message is a bit... short :-)

The "pull latest code" step you mention is part of what I call "git
clone/checkout".

Anyway, this doesn't fix the problem that --enable-maintainer-mode is broken :-)

Thanks,

Christophe

> R.
>
> >
> >>
> >> I guess --enable-maintainer-mode would be largely (if not completely)
> >> disabled by step 3 above?
> >> And we should probably swap steps 2 and 3, so that the effects of
> >> patch-to-test are handled by make?
> >>
> >> Thanks,
> >>
> >> Christophe
> >>
> >>>
> >>>
> >>>>
> >>>> 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
> >

Reply via email to