[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: bootstrap vs. autogen.sh
From: |
Daniel J Sebald |
Subject: |
Re: bootstrap vs. autogen.sh |
Date: |
Wed, 19 Sep 2012 00:11:19 -0500 |
User-agent: |
Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.24) Gecko/20111108 Fedora/3.1.16-1.fc14 Thunderbird/3.1.16 |
On 09/18/2012 02:55 PM, Rik wrote:
On 09/18/2012 12:02 PM, John W. Eaton wrote:
On 14-Sep-2012, Rik wrote:
| We might consider renaming the autogen.sh script to bootstrap. According to
| the GNU Automake manual, bootstrap is preferred these days although plenty of
| projects are still using the old name.
Our autogen.sh calls the gnulib bootstrap script. Will there be
confusion if we have a top-level bootstrap script and a
build-aux/bootstrap script?
I wouldn't necessarily think so. People are much more likely to encounter
bootstrap at the top-level then to go searching in build-aux and find that
one. And we do have repeating names such as the operators/ directories in
libinterp and in liboctave. It is understood that they are different
because they are in different places in the hierarchy. In that sense I
don't think people would be confused by having two bootstraps. Another
option, since we manually update the bootstrap script in build-aux, would
be to rename it to something explicit such as bootstrap_gnulib. Our
bootstrap script would then call bootstrap_gnulib and it would be quite
clear what is happening.
I don't think we can use the gnulib
bootstrap script by itself since our autogen.sh does more than the
gnulib bootstrap script alone.
I agree. We need to keep our script in addition to the gnulib one.
Both bootstrap and autogen.sh are fine. "prepare" (what gnuplot uses)
is pretty good too. "bootstrap" is the more specific of the three, sort
of hardware/firmware-ish. Maybe think it over a bit though given what
John said about having two forms of bootstrap and the potential
confusion, particularly with the documentation that already exists.
Below is a grep of the word "bootstrap" in the source repository. There
are a lot of historical comments referring to bootstrap which might
confuse someone who doesn't realize "bootstrap" was not the ./bootstrap
at the time the comments were made. Given that, renaming "bootstrap" to
"bootstrap_gnulib" is probably the greater concern. That being said,
notice one of the instances is:
etc/README.MinGW: 'autogen.sh' (bootstrap) before running configure and
so someone had "bootstrap" in mind already in the past.
Dan
aclocal.m4:# need in order to bootstrap the dependency handling code.
autogen.sh:## gnulib/doc/INSTALL by the bootstrap script.
autogen.sh:echo "bootstrapping..."
autogen.sh:build-aux/bootstrap "$@"
Makefile.am: build-aux/bootstrap \
Makefile.am: build-aux/bootstrap.conf \
Makefile.in: NEWS README autogen.sh build-aux/bootstrap \
Makefile.in: build-aux/bootstrap.conf build-aux/mk-opts.pl \
build-aux/bootstrap:# script is maintained as build-aux/bootstrap in
gnulib, however, to
[snip]
etc/HACKING:fragments and then runs the bootstrap script. The bootstrap
script comes
etc/HACKING:updated from the gnulib sources as necssary. The bootstrap
script takes
etc/HACKING:to the bootstrap script using the option:
etc/HACKING:they will be forwarded without modification to the bootstrap
script.
etc/HACKING:Once the autogen.sh and bootstrap scripts complete
successfully, you may
etc/HACKING: build-aux/bootstrap script that is run by the
etc/README.MinGW: 'autogen.sh' (bootstrap) before running configure and
make. This requires
gnulib/ChangeLog: * build-aux/gnu-web-doc-update (find_tool): Import
from bootstrap.
[snip]
gnulib/users.txt: febootstrap
http://people.redhat.com/~rjones/febootstrap/
m4/lt~obsolete.m4:# These exist entirely to fool aclocal when
bootstrapping libtool.
etc/OLD-ChangeLogs/ChangeLog: * bootstrap.conf (gnulib_modules): Include
nproc in the list.
etc/OLD-ChangeLogs/ChangeLog: * bootstrap: Update from gnulib sources.
[snip]
gnulib/build-aux/announce-gen: --bootstrap-tools=TOOL_LIST a
comma-separated list of tools, e.g.,
gnulib/build-aux/announce-gen: my $bootstrap_tools;
gnulib/build-aux/announce-gen: 'bootstrap-tools=s' =>
\$bootstrap_tools,
gnulib/build-aux/announce-gen: my @tool_list = split ',', $bootstrap_tools;
gnulib/build-aux/announce-gen: and print "\nThis release was
bootstrapped with the following tools:",
gnulib/build-aux/bootstrap:# script is maintained as build-aux/bootstrap
in gnulib, however, to
gnulib/build-aux/bootstrap:# intent is that all customization can be
done with a bootstrap.conf
[snip]
gnulib/build-aux/gnu-web-doc-update:# FIXME: code duplication, see also
bootstrap.
gnulib/build-aux/gnu-web-doc-update:# Requirements: everything required
to bootstrap your package, plus
gnulib/build-aux/gnu-web-doc-update:./bootstrap
gnulib/doc/gnulib-tool.texi:control, such as @file{autogen.sh},
@file{bootstrap},
gnulib/doc/gnulib-tool.texi:@file{bootstrap.conf}, or similar, simply
invoke @command{gnulib-tool}
gnulib/doc/gnulib-tool.texi:is done for you if you use gnulib's
@file{bootstrap} script).
gnulib/doc/gnulib-tool.texi:infrastructure (gnulib's @file{bootstrap}
script follows these rules):
gnulib/doc/gnulib-tool.texi:@file{autogen.sh}, @file{bootstrap},
@file{bootstrap.conf}, or similar,
gnulib/doc/gnulib-tool.texi:Gnulib includes the file
@file{build-aux/bootstrap} to aid a developer
gnulib/doc/gnulib-tool.texi:running @file{bootstrap} will get the same
version of all
gnulib/doc/gnulib-tool.texi:Thereafter, @file{bootstrap} can run this
command to update the
gnulib/doc/gnulib-tool.texi:$ ./bootstrap
gnulib/doc/standards.texi:bootstrap the GNU compilation facilities. If
these require the GNU
gnulib/modules/readme-release:to autogen.sh or bootstrap.conf's epilogue
function to patch the
gnulib/top/maint.mk:bootstrap-tools ?= autoconf,automake,gnulib
gnulib/top/maint.mk: --bootstrap-tools=$(bootstrap-tools)
\
gnulib/top/maint.mk: $$(case ,$(bootstrap-tools), in (*,gnulib,*)
\
gnulib/top/maint.mk:# a gnulib patch directory whose default name is gl/
(defined in bootstrap
gnulib/top/maint.mk:# gnulib patch directory via bootstrap.conf, this
rule detects that name.
gnulib/top/maint.mk: if test -f bootstrap.conf; then
\
gnulib/top/maint.mk: -e 'END{defined $$d and print $$d}'
bootstrap.conf); \
gnulib/top/README-release: are in your PATH. See the buildreq list in
bootstrap.conf for
gnulib/top/README-release: ./bootstrap && ./configure