From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ej1-x62f.google.com (mail-ej1-x62f.google.com [IPv6:2a00:1450:4864:20::62f]) by sourceware.org (Postfix) with ESMTPS id 5F4AB3858D32 for ; Mon, 15 Apr 2024 12:52:26 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 5F4AB3858D32 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linaro.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 5F4AB3858D32 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::62f ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1713185549; cv=none; b=uNv7totAlQLjyo7H9O01MKG0xCdAIoFxVSWg6ENjDUevTdwPnoorGapk2hzj8QIO6yABZeaiJXq9uYRxCMNGsDs+2SB8acySEaj0aU+Hq89EuGWaZcjLOehAIWAaycmzCPDEnNf2kpTR1N8LBiP0mEcIXrn1KrYcn034MSMrnIY= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1713185549; c=relaxed/simple; bh=i3jutC5AuDrVTBQNJyYLBG3zssW75zim5w5mnXxaGsU=; h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To; b=AE3fEDkCiayR4tbeDdmQDZI/BPIN2heFD71hUiSPZi14wia0+63/w49oNCUZ+VpDgHDcNKknAcr8rZOMs8zyBncecfmHwBLUH8VjEACZcAJv8j6OLlRpS6h9nEd23kd+TS+94FdL5CQwArf3Qfny01lkOLaicd2b8YTH0dhl8Oo= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-ej1-x62f.google.com with SMTP id a640c23a62f3a-a5200afe39eso396143666b.1 for ; Mon, 15 Apr 2024 05:52:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1713185545; x=1713790345; darn=sourceware.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=BRvJtTM2q3gW2BnAOCT/uCil9ty+bn8np83iyJrzvGk=; b=H7E7b0kfNQ1S6Xu0XzooqMiSkc+/9NTXVm/wwykarB64UOdzCrD1qNuTJmLy4aUjZS YX8thieL8XV9AdQun0JRcYc0bcB//t5wk+J/np0xVIkPZ2Yv5LR4M/Z58dA3TI0YoC3s a1r+CuugQabDZqlJT3DReAnSOP0I5E5xvrWtOfM+oT/diOwz3dkA6fVzeaZC+CPFDmER 1rTBcChKWe46CPCyQVp2/NyRCrymozU2pGo3FygAEhYp3JPW60nrBHReBG4cq73SZuWC 5Tt0/5fxs+GsDUa3gUTPWjUSGaHvTLHhxgzUK/1kXY0MvJ9tA2tOlz4wLjbf/9poU7mx qH6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713185545; x=1713790345; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=BRvJtTM2q3gW2BnAOCT/uCil9ty+bn8np83iyJrzvGk=; b=Th62KcfxD/i6dOtou9gQfdLDOE+osdVu5YXNKyvMoHLeSPeyPa8eLppV11bG/o3sw+ p33hMnPh976HRc+oC6k0q55LGysYP6TsMhfuUIFY+166WqRYpMGiuiuTnJgKuZjTMysC c2yxrGHo3BJOD9ioF0muHRYOCKY6idtbeUGE6+rA7tPThrCnQ26q1palJN8innpPHrTl 3OV3JoXURneuMyeNEZG34DrPza2qsKMJ+1rqGTN2Rs4978dHpkS1kg1YCEHXAN58E8no 2eJLIOfs2zvb3A1yyXswYmQlb6HaLBEtwU2a/gja3FOKY4nALV04Nwpyv5dz8nN5R27P bQpg== X-Gm-Message-State: AOJu0YzXdOcecM+/RfXJicjoDJVX7TZfP+QJsJ3OTaRwOLU5Z3ueE84D 0SEX2irLuQW+gcioRHnu7lFezY8RU8ccw+0bK3maRuxDL5iGLhzFEiUdNhpSFGf0ZlkgD0ZDhbA C3ThLOMxCnceI5PBXS/MGmp9RFB0FbcNMTSkMRg6joGMKxpCOpiobdA== X-Google-Smtp-Source: AGHT+IGQGni+lyvkw/9chOEI+1znwDZQk96xiWUMKKhROocwl73EGetJMYAaVxjiB1RnTHrM3Gajn7tdr54leeps6/I= X-Received: by 2002:a17:907:5c1:b0:a51:d611:cd5e with SMTP id wg1-20020a17090705c100b00a51d611cd5emr9590836ejb.57.1713185544986; Mon, 15 Apr 2024 05:52:24 -0700 (PDT) MIME-Version: 1.0 References: <20240412200559.1649050-1-christophe.lyon@linaro.org> <20240412200559.1649050-5-christophe.lyon@linaro.org> In-Reply-To: From: Christophe Lyon Date: Mon, 15 Apr 2024 14:52:19 +0200 Message-ID: Subject: Re: [PATCH 4/6] autoregen.py: Use autoreconf in most GCC directories To: Simon Marchi Cc: buildbot@sourceware.org Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-10.2 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On Mon, 15 Apr 2024 at 05:07, Simon Marchi wrote: > > > > On 2024-04-12 16:05, Christophe Lyon wrote: > > Add most of GCC's subdirectories to AUTORECONF_DIRS, since 'autoreconf > > -f' works for them. > > > > A few subdirs still need to be regenerated "manually", because they do > > not have Makefile.am which autoreconf uses to determine which aclocal > > flags to use. > > gdb, for instance, doesn't use Makefile.am, and yet autoreconf works. It > finds the aclocal include paths from the AC_CONFIG_MACRO_DIRS macro in > configure.ac. If the remaining subdirs that still need to be manually > handled used AC_CONFIG_MACRO_DIRS, would autoreconf work in them? that's because gdb's aclocal.m4 is generated with 'aclocal' without anyflag. If you look at gcc/gcc/Makefile.in, you'll see: ACLOCAL_AMFLAGS = -I ../config -I .. So to regenerate gcc/gcc/aclocal.m4, we need to call aclocal -I ../config -I .. but autoreconf looks for this info in Makefile.am which does not exist in this case. (see line 410 and below in autoreconf 2.69) I don't know how AC_CONFIG_MACRO_DIRS would help, maybe it would... > Out of the directories you commented out from AUTORECONF_DIRS, the > following re-generated cleanly with autoreconf for me: > > - libdecnumber So -I ../config is not needed by aclocal? > - gcc as mentioned above, here we have ACLOCAL_AMFLAGS = -I ../config -I .. so it's surprising it works without these flags? > - libiberty > - libobjc same as for gcc. > So I would suggest adding them to AUTORECONF_DIRS. Well, maybe :-) I must confess the doc for autoconf is not clear enough for me :-) https://www.gnu.org/software/autoconf/manual/autoconf-2.69/html_node/Input.html does not mention AC_CONFIG_MACRO_DIRS, only AC_CONFIG_MACRO_DIR And the "Note that if you use aclocal from Automake to generate aclocal.m4[...]" does not clearly say that AC_CONFIG_MACRO_DIR[S] is enough. (and the code I saw in autoreconf only checks /^ACLOCAL_[A-Z_]*FLAGS\s*=\s*(.*) in Makefile.am. https://www.gnu.org/software/autoconf/manual/autoconf-2.70/html_node/Input.html is more verbose and does mention AC_CONFIG_MACRO_DIRS, but we still use 2.69 so I prefered to stay on the "safe" side. Maybe worth asking on the autoconf/automake list? > > Most use our default aclocal -I../config, but a few need special > > flags, which I copied from the corresponding Makefile.in: > > * fixincludes: -I.. -I../config > > * gcc, libiberty, libobjc: -I../config -I.. > > * libgm2: -I../config -I.. although Makefile.in says otherwise. Using > > what Makefile.in defines results in generating aclocal.m4 with a > > different contents than what it is in the repo. The repo is > > presumably wrong, but use this until this is fixed. > > > > Note that we do not regenerate > > libvtv/testsuite/other-tests/Makefile.in, because > > libvtv/testsuite/other-tests/ has no configure.ac. > > > > Running this script over GCC's repository generates quite a few > > warnings, which are the same as before this patch. Namely, these > > subdirs seem to have incorrect autotools files (at least partially): > > * libgfortran > > * libgomp > > * libsanitizer > > > > This patch does not support regenerating gcc/m2/gm2-libs/config-host > > and gcc/m2/gm2-libs/gm2-libs-host.h.in because I didn't manage to > > regenerate them with the exact same content. FTR I tried: > > autoconf -f config-host.in > config-host > > autoheader config-host.in > > as described in gcc/m2/Make-maintainer.in > > > > Similarly, we skip libcpp because the files we regenerate have small > > differences with the current versions. > > libcpp's files appear to be in an invalid state in the repo itself. > According to libcpp/Makefile.in line 123, aclocal.m4 should be > regenerated with `aclocal -I ../config`. When I use that, I get the > same results as what autoreconf would give me. For that one, I think > you could send a patch to gcc to fix it in the repo, after which we can > switch it to use autoreconf. Yes I noticed a discrepancy about override.m4, but I thought this is too late in GCC stage4 to fix it. Maybe I'm wrong on this assumption though :-) > > > Tested by removing all aclocal.m4 files, Makefile.in files derived > > from Makefile.am, configure files derived from configure.ac and > > checking they are correctly regenerated (that is, 'git status' does > > not report deleted nor modified files). > > --- > > builder/containers/autoregen.py | 60 ++++++++++++++++++++++++++++++++- > > 1 file changed, 59 insertions(+), 1 deletion(-) > > > > diff --git a/builder/containers/autoregen.py b/builder/containers/autoregen.py > > index c52a524..4731a87 100755 > > --- a/builder/containers/autoregen.py > > +++ b/builder/containers/autoregen.py > > @@ -40,15 +40,56 @@ SKIP_DIRS = [ > > # readline and minizip are maintained with different autotools versions > > "readline", > > "minizip", > > + > > + # aclocal.m4 gets an additional ../config/override.m4, > > + # and config.in gets a few more empty lines. > > + "libcpp", > > ] > > > > # these directories are known to can be re-generatable with a simple autoreconf > > # without special -I flags > > AUTORECONF_DIRS = [ > > + # binutils-gdb subdirs > > "gdb", > > "gdbserver", > > "gdbsupport", > > "gnulib", > > + > > + # gcc subdirs > > + "c++tools", # No aclocal.m4 > > + #"gcc", # No Makefile.am > > + #"fixincludes", # autoreconf complains about GCC_AC_FUNC_MMAP_BLACKLIST > > + "gnattools", # No aclocal.m4 > > + "gotools", > > + "libada", # No aclocal.m4 > > + "libatomic", > > + "libbacktrace", > > + "libcc1", > > + "libcody", # No aclocal.m4 > > + #"libcpp", # No Makefile.am > > + #"libdecnumber", # No Makefile.am > > + "libffi", > > + "libgcc", # No aclocal.m4 > > + "libgfortran", > > + # Hack: ACLOCAL_AMFLAGS = -I .. -I ../config in Makefile.in but we > > + # apply -I../config -I.. otherwise we do not match the current > > + # contents > > + #"libgm2", > > + "libgo", > > + "libgomp", > > + "libgrust", > > + #"libiberty", # No Makefile.am > > + "libitm", > > + #"libobjc", # No Makefile.am > > + "libphobos", > > + "libquadmath", > > + "libsanitizer", > > + "libssp", > > + "libstdc++-v3", > > + # This does not cover libvtv/testsuite/other-tests/Makefile.in > > + "libvtv", > > + "lto-plugin", > > + "zlib", > > If you really want to make the distinction between binutils-gdb and gcc > subdirs, perhaps add a "common" section for those directories that > appear in both repos? OK > > > ] > > > > > > @@ -71,7 +112,9 @@ def regenerate_with_autoreconf(): > > > > def regenerate_manually(): > > configure_lines = open("configure.ac").read().splitlines() > > - if any(True for line in configure_lines if line.startswith("AC_CONFIG_MACRO_DIR")): > > + if folder.stem == "fixincludes" or folder.stem == "libgm2" or any( > > + True for line in configure_lines if line.startswith("AC_CONFIG_MACRO_DIR") > > + ): > > include_arg = "" > > include_arg2 = "" > > if (folder / ".." / "config").is_dir(): > > @@ -83,6 +126,14 @@ def regenerate_manually(): > > include_arg = "-I../.." > > include_arg2 = "-I../../config" > > > > + if folder.stem == "fixincludes": > > + include_arg = "-I.." > > + include_arg2 = "-I../config" > > + > > + if folder.stem == "libgm2" or folder.stem == "gcc" or folder.stem == "libiberty" or folder.stem == "libobjc": > > This could be a bit shorter: > > if folder.stem in ["libgm2", "gcc", "libiberty", "libobjc"]: Thanks, too late I think Mark has already pushed my patch as-is :-) But this can be fixed later. Thanks, Christophe > > Simon