On 3/9/24 6:28 PM, Collin Funk wrote:
> I think that should be a pretty easy change so I will try to get it
> done sometime today.

Not the cleanest code I have ever written but it seems to work. :)

Here is a test case:

gnulib-tool.py --create-testdir --dir test-python dummy
gnulib-tool --create-testdir --dir test-shell dummy
# Copied from Coreutils configure.ac
sed -i -e 's/AM_INIT_AUTOMAKE/AM_INIT_AUTOMAKE([1.11.2 dist-xz color-tests 
parallel-tests subdir-objects])/g' test-python/configure.ac 
test-shell/configure.ac
(cd test-python && gnulib-tool.py --import --automake-subdir --with-tests 
alloca-opt alloca)
(cd test-shell && gnulib-tool --import --automake-subdir --with-tests 
alloca-opt alloca)
git diff --no-index test-python test-shell

Now gnulib-tool.py will see subdir-objects in Coreutil's configure.ac.
It still fails to bootstrap because of the @NMD@ magic:

autoreconf: running: automake --add-missing --copy --force-missing
lib/gnulib.mk:2011: error: bad characters in variable name '@!NMD@gl_V_at'
Makefile.am:212:   'lib/local.mk' included from here
lib/local.mk:1:   'lib/gnulib.mk' included from here
gnulib-tests/gnulib.mk:1384: error: bad characters in variable name 
'@!NMD@gl_V_at'
gnulib-tests/Makefile.am:1:   'gnulib-tests/gnulib.mk' included from here
autoreconf: error: automake failed with exit status: 1
./bootstrap: autoreconf failed

I don't remember those changes looking too hard, so _hopefully_ I can
get them done soon.

Collin
From 081643519481b02362cbc5a9530e13aba2bfcb9b Mon Sep 17 00:00:00 2001
From: Collin Funk <collin.fu...@gmail.com>
Date: Sat, 9 Mar 2024 20:05:10 -0800
Subject: [PATCH 2/2] gnulib-tool.py: Follow gnulib-tool changes, part 52.

Follow gnulib-tool change
2021-12-15  Bruno Haible  <br...@clisp.org>
automake-subdir support: Look for 'subdir-objects' also in configure.ac.

* pygnulib/GLImport.py (GLImport.__init__): Check for 'subdir-objects'
in the AM_INIT_AUTOMAKE macro of configure.ac.
---
 ChangeLog            |  9 +++++++++
 gnulib-tool.py.TODO  | 11 -----------
 pygnulib/GLImport.py | 12 ++++++++++--
 3 files changed, 19 insertions(+), 13 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index f13d759bb4..8dda625922 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2024-03-09  Collin Funk  <collin.fu...@gmail.com>
+
+	gnulib-tool.py: Follow gnulib-tool changes, part 52.
+	Follow gnulib-tool change
+	2021-12-15  Bruno Haible  <br...@clisp.org>
+	automake-subdir support: Look for 'subdir-objects' also in configure.ac.
+	* pygnulib/GLImport.py (GLImport.__init__): Check for 'subdir-objects'
+	in the AM_INIT_AUTOMAKE macro of configure.ac.
+
 2024-03-09  Collin Funk  <collin.fu...@gmail.com>
 
 	gnulib-tool.py: Follow gnulib-tool changes, part 51.
diff --git a/gnulib-tool.py.TODO b/gnulib-tool.py.TODO
index 51e6cd9e18..e6c94c8bb8 100644
--- a/gnulib-tool.py.TODO
+++ b/gnulib-tool.py.TODO
@@ -305,17 +305,6 @@ Date:   Sun Dec 19 12:49:16 2021 +0100
 
 --------------------------------------------------------------------------------
 
-commit b8124d982f454b8526b5e11934a2f71faac2b600
-Author: Bruno Haible <br...@clisp.org>
-Date:   Wed Dec 15 21:49:41 2021 +0100
-
-    automake-subdir support: Look for 'subdir-objects' also in configure.ac.
-
-    * gnulib-tool: Look for the automake options also in the first argument
-    of the AM_INIT_AUTOMAKE invocation in configure.ac.
-
---------------------------------------------------------------------------------
-
 commit 4b071c115309079528db7b60e8d2ffb22b129088
 Author: Paul Eggert <egg...@cs.ucla.edu>
 Date:   Mon Apr 26 23:31:29 2021 -0700
diff --git a/pygnulib/GLImport.py b/pygnulib/GLImport.py
index 2ebad91da5..ed0139fe3c 100644
--- a/pygnulib/GLImport.py
+++ b/pygnulib/GLImport.py
@@ -260,9 +260,17 @@ class GLImport(object):
             self.config.setModules(modules)
 
         if self.config['automake_subdir']:
-            found_subdir_objects = False
+            automake_options = set()
+            if self.config['configure_ac']:
+                pattern = re.compile(r'^.*AM_INIT_AUTOMAKE\([\[ ]*([^\]\)]*).*$', re.MULTILINE)
+                with open(self.config['configure_ac'], encoding='utf-8') as file:
+                    data = file.read()
+                configure_ac_automake_options = pattern.findall(data)
+                if configure_ac_automake_options:
+                    automake_options = {x for y in configure_ac_automake_options for x in y.split()}
+            found_subdir_objects = 'subdir-objects' in automake_options
             base = self.config['destdir'] if self.config['destdir'] else '.'
-            if isfile(joinpath(base, 'Makefile.am')):
+            if not found_subdir_objects and isfile(joinpath(base, 'Makefile.am')):
                 pattern = re.compile(r'^AUTOMAKE_OPTIONS[\t| ]*=(.*)$', re.MULTILINE)
                 with open(joinpath(base, 'Makefile.am'), encoding='utf-8') as file:
                     data = file.read()
-- 
2.44.0

Reply via email to