From fedee23596530a646421a1144ad1ef445f8905fa Mon Sep 17 00:00:00 2001 From: Pavel Raiskup Date: Sat, 9 Feb 2013 08:04:08 +0100 Subject: [PATCH] The 'aclocal -I non-existent' should not fail Version: 1.13.1-5 Resolves: #901333 --- automake-1.13.1-non-existing-m4-dir.patch | 159 ++++++++++++++++++++++ automake.spec | 11 +- 2 files changed, 169 insertions(+), 1 deletion(-) create mode 100644 automake-1.13.1-non-existing-m4-dir.patch diff --git a/automake-1.13.1-non-existing-m4-dir.patch b/automake-1.13.1-non-existing-m4-dir.patch new file mode 100644 index 0000000..ad4ef66 --- /dev/null +++ b/automake-1.13.1-non-existing-m4-dir.patch @@ -0,0 +1,159 @@ +diff --git a/aclocal.in b/aclocal.in +index b51c09d..29be10e 100644 +--- a/aclocal.in ++++ b/aclocal.in +@@ -165,6 +165,11 @@ my @ac_config_macro_dirs; + # If set, names a temporary file that must be erased on abnormal exit. + my $erase_me; + ++# constants for scan_m4_dirs($ERR_LEVEL) parameter ++use constant SCAN_M4_DIRS_SILENT => 0; ++use constant SCAN_M4_DIRS_WARN => 1; ++use constant SCAN_M4_DIRS_ERROR => 2; ++ + ################################################################ + + # Prototypes for all subroutines. +@@ -355,21 +360,29 @@ sub list_compare (\@\@) + + ################################################################ + +-# scan_m4_dirs($TYPE, $ERR_ON_NONEXISTING, @DIRS) ++# scan_m4_dirs($TYPE, $ERR_LEVEL, @DIRS) + # ----------------------------------------------- + # Scan all M4 files installed in @DIRS for new macro definitions. + # Register each file as of type $TYPE (one of the FT_* constants). ++# Fail without discussion on non-existing include directory when the ++# $ERR_LEVEL parameter equals to SCAN_M4_DIRS_ERROR, just print warning ++# when it equals to SCAN_M4_DIRS_WARN and don't complain at all when ++# it is set to SCAN_M4_DIRS_SILENT. + sub scan_m4_dirs ($$@) + { +- my ($type, $err_on_nonexisting, @dirlist) = @_; ++ my ($type, $err_level, @dirlist) = @_; + + foreach my $m4dir (@dirlist) + { + if (! opendir (DIR, $m4dir)) + { + # TODO: maybe avoid complaining only if errno == ENONENT? +- next unless $err_on_nonexisting; +- fatal "couldn't open directory '$m4dir': $!"; ++ my $message = "couldn't open directory '$m4dir': $!"; ++ ++ fatal $message if $err_level == SCAN_M4_DIRS_ERROR; ++ msg ('unsupported', $message) if $err_level == SCAN_M4_DIRS_WARN; ++ # don't complain if $err_level == SCAN_M4_DIRS_SILENT ++ next + } + + # We reverse the directory contents so that foo2.m4 gets +@@ -406,13 +419,25 @@ sub scan_m4_files () + + if (@user_includes) + { ++ # Don't explore the same directory multiple times. This is here not ++ # only for speedup purposes. We need this when the user has e.g. ++ # specified 'ACLOCAL_AMFLAGS = -I m4' and has also set ++ # AC_CONFIG_MACRO_DIR[S]([m4]) in configure.ac. This makes the 'm4' ++ # directory to occur twice here and fail on the second call to ++ # scan_m4_dirs([m4]) when the 'm4' directory doesn't exist. ++ # TODO: Shouldn't there be rather a check in scan_m4_dirs for ++ # @user_includes[0]? ++ @user_includes = uniq @user_includes; ++ + # Don't complain if the first user directory doesn't exist, in case + # we need to create it later (can happen if '--install' was given). +- scan_m4_dirs (FT_USER, !$install, $user_includes[0]); +- scan_m4_dirs (FT_USER, 1, @user_includes[1..$#user_includes]); ++ my $first_dir_lvl = $install ? SCAN_M4_DIRS_SILENT : SCAN_M4_DIRS_WARN; ++ scan_m4_dirs (FT_USER, $first_dir_lvl, $user_includes[0]); ++ scan_m4_dirs (FT_USER, SCAN_M4_DIRS_ERROR, ++ @user_includes[1..$#user_includes]); + } +- scan_m4_dirs (FT_AUTOMAKE, 1, @automake_includes); +- scan_m4_dirs (FT_SYSTEM, 1, @system_includes); ++ scan_m4_dirs (FT_AUTOMAKE, SCAN_M4_DIRS_ERROR, @automake_includes); ++ scan_m4_dirs (FT_SYSTEM, SCAN_M4_DIRS_ERROR, @system_includes); + + # Construct a new function that does the searching. We use a + # function (instead of just evaluating $search in the loop) so that +diff --git a/t/aclocal-macrodir.tap b/t/aclocal-macrodir.tap +index 3c66e53..bdeb30d 100755 +--- a/t/aclocal-macrodir.tap ++++ b/t/aclocal-macrodir.tap +@@ -20,7 +20,7 @@ + am_create_testdir=empty + . test-init.sh + +-plan_ 6 ++plan_ 7 + + ocwd=$(pwd) || fatal_ "getting current working directory" + ACLOCAL_PATH=; unset ACLOCAL_PATH +@@ -105,7 +105,9 @@ mkdir sys-dir the-dir + echo 'AC_DEFUN([THE_MACRO], [:])' > sys-dir/my.m4 + + test ! -r the-dir/my.m4 \ +- && $ACLOCAL --install --system-acdir ./sys-dir \ ++ && $ACLOCAL --install --system-acdir ./sys-dir 2>stderr \ ++ && cat stderr >&2 \ ++ && not grep "couldn't open directory" stderr \ + && diff sys-dir/my.m4 the-dir/my.m4 \ + || r='not ok' + +@@ -149,7 +151,9 @@ mkdir acdir + echo 'AC_DEFUN([MY_MACRO], [:])' > acdir/bar.m4 + + test ! -d foo \ +- && $ACLOCAL --install --system-acdir ./acdir \ ++ && $ACLOCAL --install --system-acdir ./acdir 2>stderr \ ++ && cat stderr >&2 \ ++ && not grep "couldn't open directory" stderr \ + && diff acdir/bar.m4 foo/bar.m4 \ + || r='not ok' + +@@ -157,14 +161,14 @@ test_end + + #--------------------------------------------------------------------------- + +-test_begin "AC_CONFIG_MACRO_DIR([non-existent]) errors out (1)" ++test_begin "AC_CONFIG_MACRO_DIR([non-existent]) warns but succeeds" + + cat > configure.ac << 'END' + AC_INIT([oops], [1.0]) + AC_CONFIG_MACRO_DIR([non-existent]) + END + +-not $ACLOCAL -Wnone 2>stderr \ ++$ACLOCAL -Wno-error 2>stderr \ + && cat stderr >&2 \ + && grep "couldn't open directory 'non-existent'" stderr \ + || r='not ok' +@@ -173,6 +177,26 @@ test_end + + #--------------------------------------------------------------------------- + ++test_begin "AC_CONFIG_MACRO_DIR([not-exist]) and ACLOCAL_AMFLAGS = -I not-exist" ++ ++cat > configure.ac << 'END' ++AC_INIT([oops], [1.0]) ++AC_CONFIG_MACRO_DIR([not-exist]) ++END ++ ++cat > Makefile.am << 'END' ++ACLOCAL_AMFLAGS = -I not-exist ++END ++ ++$ACLOCAL -Wno-error 2>stderr \ ++ && cat stderr >&2 \ ++ && grep "couldn't open directory 'not-exist'" stderr \ ++ || r='not ok' ++ ++test_end ++ ++#--------------------------------------------------------------------------- ++ + # Avoid spurious failures with pre-2.70 autoconf. + # FIXME: remove this in automake 1.14, once we require Autoconf 2.70. + if echo 'AC_INIT AC_CONFIG_MACRO_DIRS' | $AUTOCONF -o/dev/null -; then diff --git a/automake.spec b/automake.spec index cf2b970..fb211ff 100644 --- a/automake.spec +++ b/automake.spec @@ -3,7 +3,7 @@ Summary: A GNU tool for automatically creating Makefiles Name: automake Version: %{api_version}.1 -Release: 4%{?dist} +Release: 5%{?dist} License: GPLv2+ and GFDL Group: Development/Tools Source: ftp://ftp.gnu.org/gnu/automake/automake-%{version}.tar.xz @@ -11,6 +11,10 @@ Source: ftp://ftp.gnu.org/gnu/automake/automake-%{version}.tar.xz # autoreconf run is not safe) Patch0: automake-1.13.1-reenable-disabled-macros.patch Patch1: automake-1.13.1-disable-tests.patch +# 'aclocal -I m4' should not fail when m4 does not exist (#901333) +# Upstream ticket (not yet upstream): +# +Patch2: %{name}-%{version}-non-existing-m4-dir.patch URL: http://www.gnu.org/software/automake/ Requires: autoconf >= 2.65 BuildRequires: autoconf >= 2.65 @@ -53,6 +57,7 @@ Makefiles. %setup -q -n automake-%{version} %patch0 -p1 -b .reenable_macros %patch1 -p1 -b .disable_tests +%patch2 -p1 -b .non_existing_m4_dir autoreconf -i -f %build @@ -90,6 +95,10 @@ fi %{_mandir}/man1/* %changelog +* Thu Feb 14 2013 Pavel Raiskup - 1.13.1-5 +- Do not fail in aclocal when the first include directory does not exist + (#901333) + * Wed Feb 13 2013 Fedora Release Engineering - 1.13.1-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild