octave-maintainers
[Top][All Lists]
Advanced

[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


reply via email to

[Prev in Thread] Current Thread [Next in Thread]