[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Still unable to build trunk

From: Jim Meyering
Subject: Re: Still unable to build trunk
Date: Sun, 23 Jan 2011 18:35:17 +0100

Eli Zaretskii wrote:
>> From: Jim Meyering <address@hidden>
>> Cc: Paul Eggert <address@hidden>, address@hidden,
>> address@hidden, address@hidden
>> Date: Sun, 23 Jan 2011 16:33:00 +0100
>> In many gnulib-using projects, we address two types of
>> users who build from source:
>>   - those who build from a distribution tarball
>>   - those who build from upstream clone/checkout
>> Obviously, when building from a tarball, there are only the usual, minimal
>> requirements specified in the GCS.  E.g., use of autoconf, automake, 
>> makeinfo,
>> etc. are not required.
>> However, those who build from the latest sources, as checked out
>> from version control must have tools that meet certain standards.
>> [...]
>> and an automated check for the presence and minimal-acceptable versions
>> of build-related tools (this is from bootstrap.conf):
>>   # Build prerequisites
>>   buildreq="\
>>   autoconf   2.62
>>   automake   1.11.1
>>   autopoint  -
>>   bison      -
>>   gettext    0.17
>>   git        1.4.4
>>   gperf      -
>>   gzip       -
>>   makeinfo   -
>>   patch      -
>>   perl       5.5
>>   rsync      -
>>   tar        -
>>   xz         -
>>   "
> It sounds harsh to me to ask every one who builds out of VCS to have
> to climb such a steep curve.  If you read the reports in this forum,

Requiring the installation of a few commonly-used and very portable tools
does not make a steep curve.  It's more of a small, one-time investment.

Imposing new requirements like this is not harsh when you also
provide adequate instructions for meeting them.

Also, realize that if you're able to build-from-clone on at least one
system and want to build occasionally on another system that lacks some of
the required tools, one work-around is to build a tarball of your working
sources, copy that to the constrained system and just run ./configure &&
make as usual.  Of course, this is impractical if you have to do it more
than occasionally.

> you will see that many of those who do that are no more knowledgeable
> in build tools than those who build distribution tarballs.  A person
> who installs bzr does not necessarily know about autotools.  She is
> not necessarily a "developer" of Emacs, just someone who wants the
> latest and the greatest.

The build-from-clone process does not require knowing anything more
about autotools than the package names -- and that is only to install
the packages if they're not already available.

> Even core Emacs maintainers have trouble with these prerequisites, for
> any number of reasons (e.g., Autoconf installed on fencepost is too
> old for what Paul added to the Emacs tree, so until the GNU admins
> upgrade that at my request, I cannot build the current tree).

Run the script below on fencepost, following the instructions
in its --help, and you should be good to go.

> Imagine
> what will happen to people with less experience and grey hair,
> especially if they do that on systems they don't own.

It is most definitely a trade-off, but afaik, one that we have
managed well with coreutils, diffutils, gzip, grep, parted, etc.
On those projects, no one has reported trouble with the build process
for some time.

You have to balance the needs of the many (to be able to build
conveniently from the latest, cloned sources) against the desire of
the developers not to waste time with complications involved in using
version-controlled, yet generated, source files.

For those who are unable to install the required packages on a system
they use for development, I wrote a script that automates the process
of downloading and building-from source a few of the required packages:


Here's its --help output:

    Usage: autotools-install [OPTION]...

    Download, build, and install some tools.

     --prefix=PREFIX    install tools under specified directory
     --skip-check       do not run make check (this can save 50+ min)
     --help             display this help and exit

    For example, to install programs into $HOME/autotools/bin, run this command:

      autotools-install --prefix=$HOME/autotools

    If you've already verified that your system/environment can build working
    versions of these tools, you can make this script complete in just a
    minute or two (rather than about an hour if you let all make check
    tests run) by invoking it like this:

      autotools-install --prefix=$HOME/autotools --skip-check

reply via email to

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