Subject: bug#10473: [PATCH] automake: new option to print locations of scripts and data files (was: Re: bug#10473: Run automake to create config.sub without any Makefile.am)

From: Stefano Lattarini <[email-masked]>
Date: Sun, 19 Feb 2012 18:45:15 +0100

retitle 10473 get directory holding automake-provided scripts and data files
severity 10473 wishlist
tags 10473 patch
thanks

[dropping [email-masked]]

On 01/10/2012 10:57 PM, Mike Frysinger wrote:
> On Tuesday 10 January 2012 16:10:29 Nick Bowler wrote:
>> On 2012-01-10 15:41 -0500, Mike Frysinger wrote:
>>> On Monday 09 January 2012 18:49:28 Eric Blake wrote:
>>>> On 01/09/2012 03:46 PM, Roger Pau Monné wrote:
>>>>> It creates the needed files, but exits with status 1. Is there anyway
>>>>> to generate config.sub without relying on Automake,
>>>>
>>>> Use 'cp'.  That's all the more automake was doing when it outputs lines
>>>> about installing helper files.
>>>
>>> i wish automake (and gettext) had modes where you could say "i just want
>>> you to install XXX helpers for me)".  copying things by hand is error
>>> prone due to changing install paths across versions and distros.
>>>
>>> automake --foreign -c -f --tools="config.sub config.guess"
>>
>> CCing bug-automake.  This feature would be generally useful: another
>> example for automake-using packages is that at "foreign" strictness the
>> INSTALL file is not copied, but maintainers may still want to include it.
>>
>> Perhaps a simpler and more flexible option is to add an option to
>> automake which prints out the location where it finds these files,
>> similar to aclocal --print-ac-dir.  Something like (for example)
>>
>>  % automake --print-snippet-dir
>>  /usr/share/automake-1.11
> 
> i'd be OK with that too if the assumption is that all relevant files people 
> want to manually copy would be in there (INSTALL, config.sub, etc...).
> 
Here is a patch adding a new "--print-libdir" option (naming selected for
consistency with the "--libdir=DIR" option).  I will push it by tomorrow if
there is no objection.

Regards,
  Stefano

>From d2d0564ee78c58c2a22fdb1af56787fa9e5b05f9 Mon Sep 17 00:00:00 2001
Message-Id: <d2d0564ee[email-masked]>
From: Stefano Lattarini <[email-masked]>
Date: Sun, 19 Feb 2012 18:43:28 +0100
Subject: [PATCH] automake: new option to print locations of scripts and data
 files

With this change, we add a new automake option '--print-libdir'
that prints (on stdout) the path of the directory containing the
Automake-provided scripts (e.g., 'missing' and 'install-sh') and
data files (e.g., INSTALL or texinfo.tex).

Suggestion by Nick Bowler.  See also automake bug#10473.

* automake.in (parse_arguments): Handle the new option.
(usage): Mention it.
* doc/automake.texi (automake Invocation): Document it.
* NEWS: Update.
* tests/print-dir.test: New test.
* tests/list-of-tests.mk: Add it.
---
 NEWS                    |    3 +++
 automake.in             |    4 +++-
 doc/automake.texi       |    6 ++++++
 tests/list-of-tests.mk  |    1 +
 tests/print-libdir.test |   46 ++++++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 59 insertions(+), 1 deletions(-)
 create mode 100755 tests/print-libdir.test

diff --git a/NEWS b/NEWS
index c1de9b2..14aae55 100644
--- a/NEWS
+++ b/NEWS
@@ -116,6 +116,9 @@ New in 1.11a:
 
 * Miscellaneous changes:
 
+  - Automake has a new option '--print-lidir' that prints the path of the
+    directory containing the Automake-provided scripts and data files.
+
   - The `dist' and `dist-all' targets now can run compressors in parallel.
 
   - Automake can now generate silenced rules for texinfo outputs.
diff --git a/automake.in b/automake.in
index 5ee9f8a..13e65df 100644
--- a/automake.in
+++ b/automake.in
@@ -8268,7 +8268,8 @@ Flavors:
 
 Library files:
   -a, --add-missing      add missing standard files to package
-      --libdir=DIR       directory storing library files
+      --libdir=DIR       set directory storing library files
+      --print-libdir     print directory storing library files
   -c, --copy             with -a, copy missing files (default is symlink)
   -f, --force-missing    force update of standard files
 
@@ -8327,6 +8328,7 @@ sub parse_arguments ()
      'version' => \&version,
      'help'    => \&usage,
      'libdir=s'	=> \$libdir,
+     'print-libdir'     => sub { print "$libdir\n"; exit 0; },
      'gnu'		=> sub { $strict = 'gnu'; },
      'gnits'		=> sub { $strict = 'gnits'; },
      'foreign'		=> sub { $strict = 'foreign'; },
diff --git a/doc/automake.texi b/doc/automake.texi
index ef094c0..f342686 100644
--- a/doc/automake.texi
+++ b/doc/automake.texi
@@ -2587,6 +2587,12 @@ for more information.
 Look for Automake data files in directory @var{dir} instead of in the
 installation directory.  This is typically used for debugging.
 
+@item --print-libdir
+@opindex --print-libdir
+Print the path of the installation directory containing Automake-provided
+scripts and data files (like e.g., @file{texinfo.texi} and
+@file{install-sh}).
+
 @item -c
 @opindex -c
 @itemx --copy
diff --git a/tests/list-of-tests.mk b/tests/list-of-tests.mk
index a80879f..d10f585 100644
--- a/tests/list-of-tests.mk
+++ b/tests/list-of-tests.mk
@@ -813,6 +813,7 @@ primary-prefix-invalid-couples.tap \
 primary-prefix-valid-couples.test \
 primary-prefix-couples-force-valid.test \
 primary-prefix-couples-documented-valid.test \
+print-libdir.test \
 proginst.test \
 programs-primary-rewritten.test \
 py-compile-basic.test \
diff --git a/tests/print-libdir.test b/tests/print-libdir.test
new file mode 100755
index 0000000..f5764b3
--- /dev/null
+++ b/tests/print-libdir.test
@@ -0,0 +1,46 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 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 <http://www.gnu.org/licenses/>.
+
+# Test on automake options '--print-data-dir' and '--print-script-dir'.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+libdir=`$AUTOMAKE --print-libdir` || Exit 1
+case $libdir in /*);; *) Exit 1;; esac
+test -d "$libdir"
+test "$libdir" = "$am_pkgvdatadir"
+test "$libdir" = "$am_scriptdir"
+
+: > Makefile.am
+
+cat > configure.ac <<END
+AC_INIT([$me], [1.0])
+AC_CONFIG_AUX_DIR([.])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([Makefile])
+END
+
+touch ChangeLog README NEWS AUTHORS COPYING
+
+$ACLOCAL
+$AUTOMAKE --gnu --add-missing
+ls -l
+
+diff missing "$libdir"/missing
+diff INSTALL "$libdir"/INSTALL
+
+:
-- 
1.7.9