You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Thom May <th...@planetarytramp.net> on 2002/03/02 00:09:10 UTC

[PATCH] Enable layouts and configure arguments to coexist.

Right then. So after a fair amount of discussion on IRC, this is hopefully
the solution to all the configuration issues people have been hitting.
The only issue now is that this code is distributed as part of the "data"
part of autoconf. The license for autoconf _appears_ to say that the "data"
section of autoconf (which is defined as stuff that gets put into configure
scripts) is under no restrictions and is freely available to use, modify 
and distribute - in other words, exempt from the GPL. The license is pasted below.
Huge thanks to Aaron and Justin for this. (Esp. to Justin for not taking out
a contract on my life).
Cheers,
-Thom

Upstream copyright notice:
----------------------------------------------------------------------
Copyright (C) 1992, 1993, 1994, 1995, 1996 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, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
USA.     

As a special exception, the Free Software Foundation gives unlimited
permission to copy, distribute and modify the configure scripts that
are the output of Autoconf.  You need not follow the terms of the GNU
General Public License when using or distributing such scripts, even
though portions of the text of Autoconf appear in them.  The GNU
General Public License (GPL) does govern all other use of the material
that constitutes the Autoconf program.

Certain portions of the Autoconf source text are designed to be copied
(in certain cases, depending on the input) into the output of
Autoconf.  We call these the "data" portions.  The rest of the
Autoconf source text consists of comments plus executable code that
decides which of the data portions to output in any given case.  We
call these comments and executable code the "non-data" portions.
Autoconf never copies any of the non-data portions into its output.

This special exception to the GPL applies to versions of Autoconf
released by the Free Software Foundation.  When you make and
distribute a modified version of Autoconf, you may extend this special
exception to the GPL to apply to your modified version as well,
*unless* your modified version has the potential to copy into its
output some of the text that was the non-data portion of the version
that you started with.  (In other words, unless your change moves or
copies text from the non-data portions to the data portions.)  If your
modification has such potential, you must delete any notice of this
special exception to the GPL from your modified version.
----------------------------------------------------------------------

-- 

Index: acinclude.m4
===================================================================
RCS file: /home/cvspublic/httpd-2.0/acinclude.m4,v
retrieving revision 1.113
diff -u -u -r1.113 acinclude.m4
--- acinclude.m4	28 Feb 2002 01:38:11 -0000	1.113
+++ acinclude.m4	1 Mar 2002 22:57:44 -0000
@@ -350,6 +350,24 @@
 ])dnl
 
 dnl
+dnl APACHE_ENABLE_LAYOUT
+dnl
+AC_DEFUN(APACHE_ENABLE_LAYOUT,[
+AC_ARG_ENABLE(layout,
+[  --enable-layout=LAYOUT],[
+  LAYOUT=$enableval
+])
+
+if test -z "$LAYOUT"; then
+  LAYOUT="Apache"
+fi
+APACHE_LAYOUT($srcdir/config.layout, $LAYOUT)
+
+AC_MSG_CHECKING(for chosen layout)
+AC_MSG_RESULT($layout_name)
+])
+
+dnl
 dnl APACHE_ENABLE_MODULES
 dnl
 AC_DEFUN(APACHE_ENABLE_MODULES,[
@@ -497,3 +515,124 @@
 fi
 ])
 
+dnl
+dnl APACHE_PARSE_ARGUMENTS
+dnl a reimplementation of autoconf's argument parser,
+dnl used here to allow us to co-exist layouts and argument based
+dnl set ups.
+AC_DEFUN(APACHE_PARSE_ARGUMENTS,[
+ac_prev=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval "$ac_prev=\$ac_option"
+    ac_prev=
+    continue
+  fi
+
+  ac_optarg=`expr "x$ac_option" : 'x[[^=]]*=\(.*\)'`
+
+  case $ac_option in
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+  | --da=*)
+    datadir=$ac_optarg ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst \
+  | --locals | --local | --loca | --loc | --lo)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+  | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  esac
+done
+
+# Be sure to have absolute paths.
+for ac_var in exec_prefix prefix
+do
+  eval ac_val=$`echo $ac_var`
+  case $ac_val in
+    [[\\/$]]* | ?:[[\\/]]* | NONE | '' ) ;;
+    *)  AC_MSG_ERROR([expected an absolute path for --$ac_var: $ac_val]);;
+  esac
+done
+
+])dnl
Index: configure.in
===================================================================
RCS file: /home/cvspublic/httpd-2.0/configure.in,v
retrieving revision 1.205
diff -u -u -r1.205 configure.in
--- configure.in	28 Feb 2002 15:44:43 -0000	1.205
+++ configure.in	1 Mar 2002 22:57:50 -0000
@@ -24,17 +24,10 @@
 AC_PREFIX_DEFAULT(/usr/local/apache2)
 
 dnl Get the layout here, so we can pass the required variables to apr
-dnl APACHE_ENABLE_LAYOUT
-AC_MSG_CHECKING(for chosen layout)
-AC_ARG_ENABLE(layout,
-APACHE_HELP_STRING(--enable-layout=LAYOUT,Default file layout),[
-  LAYOUT=$enableval
-  APACHE_LAYOUT($srcdir/config.layout, $LAYOUT)
-  AC_MSG_RESULT($LAYOUT)
-], [
-  APACHE_LAYOUT_DEFAULTS
-  AC_MSG_RESULT([Autoconf Defaults])
-])
+APACHE_ENABLE_LAYOUT
+
+dnl reparse the configure arguments.
+APACHE_PARSE_ARGUMENTS
 
 dnl Save user-defined environment settings for later restoration
 dnl

Re: [PATCH] Enable layouts and configure arguments to coexist.

Posted by Aaron Bannert <aa...@clove.org>.
On Fri, Mar 01, 2002 at 08:20:34PM -0800, Justin Erenkrantz wrote:
> On Fri, Mar 01, 2002 at 11:09:10PM +0000, Thom May wrote:
> > Right then. So after a fair amount of discussion on IRC, this is hopefully
> > the solution to all the configuration issues people have been hitting.
> > The only issue now is that this code is distributed as part of the "data"
> > part of autoconf. The license for autoconf _appears_ to say that the "data"
> > section of autoconf (which is defined as stuff that gets put into configure
> > scripts) is under no restrictions and is freely available to use, modify 
> > and distribute - in other words, exempt from the GPL. The license is pasted below.
> > Huge thanks to Aaron and Justin for this. (Esp. to Justin for not taking out
> > a contract on my life).
> 
> +1 - works here - we *need* this soon as our tree is broken now.

I just want to clarify that the only place where our tree is actually
broken is in the bad assumptions we make in our build/install system
(which all assume an Apache-style layout and usually fail on any other
layout). This patch will give us back the Apace-style layout by default,
but we still have to fix the bad assumptions.

> However, I can't commit without the PMC signing off on this first due
> to the licensing questions.  -- justin

The code gets a +1 from me too, but I'm concerned about licensing issues
as well.

-aaron

p.s. This patch lets us keep the best of both worlds: --enable-layout
works with default of Apache-style layout, other layouts can be enabled
too (not sure if our build/install system works yet, but the paths seem
to be set correctly), --prefix-like params can override they layout (all
of them, not just --prefix and --exec-prefix), and now we can start to
actually go through and fix the bugs where non-Apache layouts wouldn't
work before. :)


Re: [PATCH] Enable layouts and configure arguments to coexist.

Posted by Justin Erenkrantz <je...@ebuilt.com>.
On Fri, Mar 01, 2002 at 11:09:10PM +0000, Thom May wrote:
> Right then. So after a fair amount of discussion on IRC, this is hopefully
> the solution to all the configuration issues people have been hitting.
> The only issue now is that this code is distributed as part of the "data"
> part of autoconf. The license for autoconf _appears_ to say that the "data"
> section of autoconf (which is defined as stuff that gets put into configure
> scripts) is under no restrictions and is freely available to use, modify 
> and distribute - in other words, exempt from the GPL. The license is pasted below.
> Huge thanks to Aaron and Justin for this. (Esp. to Justin for not taking out
> a contract on my life).

+1 - works here - we *need* this soon as our tree is broken now.

However, I can't commit without the PMC signing off on this first due
to the licensing questions.  -- justin


Re: [PATCH] Enable layouts and configure arguments to coexist.

Posted by Thom May <th...@planetarytramp.net>.
To clarify where the code comes from, it is taken from an autoconf generated
configure script.
Cheers,
-Thom
* Thom May (thom@planetarytramp.net) wrote :
> Right then. So after a fair amount of discussion on IRC, this is hopefully
> the solution to all the configuration issues people have been hitting.
> The only issue now is that this code is distributed as part of the "data"
> part of autoconf. The license for autoconf _appears_ to say that the "data"
> section of autoconf (which is defined as stuff that gets put into configure
> scripts) is under no restrictions and is freely available to use, modify 
> and distribute - in other words, exempt from the GPL. The license is pasted below.
> Huge thanks to Aaron and Justin for this. (Esp. to Justin for not taking out
> a contract on my life).
> Cheers,
> -Thom


Index: acinclude.m4
===================================================================
RCS file: /home/cvspublic/httpd-2.0/acinclude.m4,v
retrieving revision 1.113
diff -u -u -r1.113 acinclude.m4
--- acinclude.m4	28 Feb 2002 01:38:11 -0000	1.113
+++ acinclude.m4	1 Mar 2002 22:57:44 -0000
@@ -350,6 +350,24 @@
 ])dnl
 
 dnl
+dnl APACHE_ENABLE_LAYOUT
+dnl
+AC_DEFUN(APACHE_ENABLE_LAYOUT,[
+AC_ARG_ENABLE(layout,
+[  --enable-layout=LAYOUT],[
+  LAYOUT=$enableval
+])
+
+if test -z "$LAYOUT"; then
+  LAYOUT="Apache"
+fi
+APACHE_LAYOUT($srcdir/config.layout, $LAYOUT)
+
+AC_MSG_CHECKING(for chosen layout)
+AC_MSG_RESULT($layout_name)
+])
+
+dnl
 dnl APACHE_ENABLE_MODULES
 dnl
 AC_DEFUN(APACHE_ENABLE_MODULES,[
@@ -497,3 +515,124 @@
 fi
 ])
 
+dnl
+dnl APACHE_PARSE_ARGUMENTS
+dnl a reimplementation of autoconf's argument parser,
+dnl used here to allow us to co-exist layouts and argument based
+dnl set ups.
+AC_DEFUN(APACHE_PARSE_ARGUMENTS,[
+ac_prev=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval "$ac_prev=\$ac_option"
+    ac_prev=
+    continue
+  fi
+
+  ac_optarg=`expr "x$ac_option" : 'x[[^=]]*=\(.*\)'`
+
+  case $ac_option in
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+  | --da=*)
+    datadir=$ac_optarg ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst \
+  | --locals | --local | --loca | --loc | --lo)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+  | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  esac
+done
+
+# Be sure to have absolute paths.
+for ac_var in exec_prefix prefix
+do
+  eval ac_val=$`echo $ac_var`
+  case $ac_val in
+    [[\\/$]]* | ?:[[\\/]]* | NONE | '' ) ;;
+    *)  AC_MSG_ERROR([expected an absolute path for --$ac_var: $ac_val]);;
+  esac
+done
+
+])dnl
Index: configure.in
===================================================================
RCS file: /home/cvspublic/httpd-2.0/configure.in,v
retrieving revision 1.205
diff -u -u -r1.205 configure.in
--- configure.in	28 Feb 2002 15:44:43 -0000	1.205
+++ configure.in	1 Mar 2002 22:57:50 -0000
@@ -24,17 +24,10 @@
 AC_PREFIX_DEFAULT(/usr/local/apache2)
 
 dnl Get the layout here, so we can pass the required variables to apr
-dnl APACHE_ENABLE_LAYOUT
-AC_MSG_CHECKING(for chosen layout)
-AC_ARG_ENABLE(layout,
-APACHE_HELP_STRING(--enable-layout=LAYOUT,Default file layout),[
-  LAYOUT=$enableval
-  APACHE_LAYOUT($srcdir/config.layout, $LAYOUT)
-  AC_MSG_RESULT($LAYOUT)
-], [
-  APACHE_LAYOUT_DEFAULTS
-  AC_MSG_RESULT([Autoconf Defaults])
-])
+APACHE_ENABLE_LAYOUT
+
+dnl reparse the configure arguments.
+APACHE_PARSE_ARGUMENTS
 
 dnl Save user-defined environment settings for later restoration
 dnl