automake-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[automake-commit] branch master updated: automake: allow required files


From: Mike Frysinger
Subject: [automake-commit] branch master updated: automake: allow required files to be in subdirs
Date: Wed, 23 Feb 2022 23:45:17 -0500

This is an automated email from the git hooks/post-receive script.

vapier pushed a commit to branch master
in repository automake.

View the commit online:
https://git.savannah.gnu.org/gitweb/?p=automake.git;a=commitdiff;h=c62e723015d00ade6a37fcb91ca0f39c87868665

The following commit(s) were added to refs/heads/master by this push:
     new c62e72301 automake: allow required files to be in subdirs
c62e72301 is described below

commit c62e723015d00ade6a37fcb91ca0f39c87868665
Author: Mike Frysinger <vapier@gentoo.org>
AuthorDate: Sun Feb 20 23:30:39 2022 -0500

    automake: allow required files to be in subdirs
    
    Fixes automake bug https://bugs.gnu.org/20300.
    
    The internal method for caching path lookups expects the $filename to
    only be a filename.  If it's actually a subdir/file itself, then the
    cache logic gets confused, and it never matches.  This manifests as
    AC_REQUIRE_AUX_FILE([subdir/file]) claiming that the subdir/file path
    doesn't exist even when it does.
    
    Before we process any required files, since we already construct the
    full path locally, reset the dir & file inputs to the final values.
    
    * bin/automake.in: Split dir & file name back out from the constructed
    required file path.
    * t/auxdir-subsubdir.sh: New test.
    * t/list-of-tests.mk: Add t/auxdir-subsubdir.sh.
---
 bin/automake.in       |  7 +++++++
 t/auxdir-subsubdir.sh | 40 ++++++++++++++++++++++++++++++++++++++++
 t/list-of-tests.mk    |  1 +
 3 files changed, 48 insertions(+)

diff --git a/bin/automake.in b/bin/automake.in
index 6d5588402..9747510f9 100644
--- a/bin/automake.in
+++ b/bin/automake.in
@@ -7623,6 +7623,13 @@ sub required_file_check_or_copy
   my ($where, $dir, $file) = @_;
 
   my $fullfile = "$dir/$file";
+  # In cases where $file is actually a subdir/filename, split the full path 
back
+  # into dir & file names.  The FileUtils (e.g. dir_has_case_matching_file) do
+  # not handle this scenario at all and expect $file to only be a filename.
+  # https://bugs.gnu.org/20300
+  $dir = dirname ($fullfile);
+  $file = basename ($fullfile);
+
   my $found_it = 0;
   my $dangling_sym = 0;
 
diff --git a/t/auxdir-subsubdir.sh b/t/auxdir-subsubdir.sh
new file mode 100644
index 000000000..18132ec4c
--- /dev/null
+++ b/t/auxdir-subsubdir.sh
@@ -0,0 +1,40 @@
+#! /bin/sh
+# Copyright (C) 2022 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <https://www.gnu.org/licenses/>.
+
+# Make sure auxdir with subdir aux files works.
+# https://bugs.gnu.org/20300
+
+. test-init.sh
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AC_CONFIG_AUX_DIR([build-aux])
+AC_REQUIRE_AUX_FILE([top-file])
+AC_REQUIRE_AUX_FILE([subdir/file])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES(Makefile)
+END
+
+touch Makefile.am
+
+mkdir -p build-aux/subdir
+: >build-aux/top-file
+: >build-aux/subdir/file
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+
+:
diff --git a/t/list-of-tests.mk b/t/list-of-tests.mk
index 6bb6bef95..d959b68db 100644
--- a/t/list-of-tests.mk
+++ b/t/list-of-tests.mk
@@ -188,6 +188,7 @@ t/auxdir-computed.tap \
 t/auxdir-misplaced.sh \
 t/auxdir-nonexistent.sh \
 t/auxdir-pr19311.sh \
+t/auxdir-subsubdir.sh \
 t/auxdir-unportable.tap \
 t/backcompat.sh \
 t/backcompat2.sh \



reply via email to

[Prev in Thread] Current Thread [Next in Thread]