[PATCH] AC_INIT: add --runstatedir option to configure

Eric Blake <[email protected]>
Newsgroups gmane.comp.sysutils.autoconf.patches,gmane.comp.sysutils.autoconf.bugs
Message-ID <[email protected]>
http://lwn.net/Articles/436012/ documents that many distros
are now preferring to use /run rather than /var/run for
storage of pid files and other per-process temporary files
that must not be cleaned out during arbitrary TMPDIR sweeps.
As such, the GNU Coding Standards were recently changed to
recommend a new configure option to make it easy to choose
this directory at configure time.  This patch adds support
for the option to all configure scripts built by autoconf.

* general.m4 (_AC_INIT_PARSE_ARGS): Add new directory option.
(_AC_INIT_HELP): Document it.
* doc/autoconf.texi (Installation Directory Variables): Document
new option.
(Site Defaults): Mention typical use within a distro.
* NEWS: Mention the addition.

Signed-off-by: Eric Blake <[email protected]>
---

I don't plan to push this until the make-stds.texi changes actually
go live (particarly in case we change our minds on what to name it,
but also to give a chance for anyone to review the wording used in
my documentation below).  But this is all the more autoconf has to
do in order to support the new option.

 NEWS                    |  5 +++++
 doc/autoconf.texi       | 14 +++++++++++++-
 lib/autoconf/general.m4 | 13 ++++++++++++-
 3 files changed, 30 insertions(+), 2 deletions(-)

diff --git a/NEWS b/NEWS
index de9d915..130cf3b 100644
--- a/NEWS
+++ b/NEWS
@@ -2,6 +2,11 @@ GNU Autoconf NEWS - User visible changes.

 * Noteworthy changes in release ?.? (????-??-??) [?]

+** Configure scripts now supports a '--runstatedir' option, which
+   defaults to '${localstatedir}/run', but can be used to place
+   per-process temporary runtime files (such as pid files) into '/run'
+   instead of '/var/run'.
+
 ** The use of the long-deprecated name 'configure.in' for the autoconf
    input file now elicits a warning in the 'obsolete' category.

diff --git a/doc/autoconf.texi b/doc/autoconf.texi
index 26e7b17..4932067 100644
--- a/doc/autoconf.texi
+++ b/doc/autoconf.texi
@@ -2826,7 +2826,18 @@ Installation Directory Variables

 @defvar localstatedir
 @ovindex localstatedir
-The directory for installing modifiable single-machine data.
+The directory for installing modifiable single-machine data.  Content in
+this directory typically survives a reboot.
+@end defvar
+
+@defvar runstatedir
+@ovindex runstatedir
+The directory for installing temporary modifiable single-machine data.
+Content in this directory survives as long as the process is running
+(such as pid files), as contrasted with @file{/tmp} that may be
+periodically cleaned.  Conversely, this directory is typically cleaned
+on a reboot.  By default, this is a subdirectory of
+@code{localstatedir}.
 @end defvar

 @defvar mandir
@@ -22606,6 +22617,7 @@ Site Defaults
 test "$exec_prefix" = NONE && exec_prefix=/usr/local/gnu
 test "$sharedstatedir" = '$@{prefix@}/com' && sharedstatedir=/var
 test "$localstatedir" = '$@{prefix@}/var' && localstatedir=/var
+test "$runstatedir" = '$@{localstatedir@}/run' && runstatedir=/run

 # Give Autoconf 2.x generated configure scripts a shared default
 # cache file for feature test results, architecture-specific.
diff --git a/lib/autoconf/general.m4 b/lib/autoconf/general.m4
index 70b0168..1ce9922 100644
--- a/lib/autoconf/general.m4
+++ b/lib/autoconf/general.m4
@@ -586,6 +586,7 @@ AC_SUBST([datadir],        ['${datarootdir}'])dnl
 AC_SUBST([sysconfdir],     ['${prefix}/etc'])dnl
 AC_SUBST([sharedstatedir], ['${prefix}/com'])dnl
 AC_SUBST([localstatedir],  ['${prefix}/var'])dnl
+AC_SUBST([runstatedir],    ['${localstatedir}/run'])dnl
 AC_SUBST([includedir],     ['${prefix}/include'])dnl
 AC_SUBST([oldincludedir],  ['/usr/include'])dnl
 AC_SUBST([docdir],         [m4_ifset([AC_PACKAGE_TARNAME],
@@ -812,6 +813,15 @@ do
   | -silent | --silent | --silen | --sile | --sil)
     silent=yes ;;

+  -runstatedir | --runstatedir | --runstatedi | --runstated \
+  | --runstate | --runstat | --runsta | --runst | --runs \
+  | --run | --ru | --r)
+    ac_prev=runstatedir ;;
+  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
+  | --run=* | --ru=* | --r=*)
+    runstatedir=$ac_optarg ;;
+
   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
     ac_prev=sbindir ;;
   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -921,7 +931,7 @@ fi
 for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
 		datadir sysconfdir sharedstatedir localstatedir includedir \
 		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-		libdir localedir mandir
+		libdir localedir mandir runstatedir
 do
   eval ac_val=\$$ac_var
   # Remove trailing slashes.
@@ -1058,6 +1068,7 @@ Fine tuning of the installation directories:
   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
   --libdir=DIR            object code libraries [EPREFIX/lib]
   --includedir=DIR        C header files [PREFIX/include]
   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
-- 
1.8.3.1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.