[asterisk-dev] Removing configure from tree

Oron Peled oron.peled at xorcom.com
Tue May 9 18:32:03 CDT 2023

On Thu, 2023-05-04 at 14:31 -0400, James Cloos wrote:
> > > > > > "DB" == Dennis Buteyn <dennis.buteyn at xorcom.com> writes:
> DB> Many Automake/Autotools projects provide some bootstrap script to
> DB> generate configure from configure.ac, with step-by-step instructions
> DB> on how to build (bootstrap, configure, make).
> asterisk does have a bootstrap.sh, so the instructions for making from
> git should include running that.
> like most packages do.

First, asterisk is untypical (although valid) autotools project:
* It use autoconf, but not really automake (no Makefile.am)
* However, its "bootstrap.sh" does run automake
  (to copy things like "config.{guess,sub}"
* It has its own linking methodology (not using libtool directly)

It's important to note that Autotools consider two categories of "builders":
* Those that just want to build the code as is -- for using the results.
* Developers that need full control of the build (e.g: adding new source)
* The principal difference between those groups are the requirements:
  - Regular "builders" are expected to have compiler, make, etc.
    But not necessarily autotools (or a specific version of autotools)
  - Developers should have a compatible version of autotools as well.
* As a result:
  - The "make dist" target of typical automake project generates a tarball
    that is *ALREADY BOOTSTRAPPED* (with "configure" and other generated files)
  - But those generated files are not committed to Git, so developers
    need to have autotools to do the bootstrap.
    (in full autotools project, running "autoreconf -fvi" does the Right-Thing)

Now let's look at the concrete Asterisk case:
* Even just a clean build require tons of libraries for useful result
* IMO, adding a requirement for autoconf/automake/etc... is a drop in the ocean.
* I.e: even for simple build we can require and assume a full "developer" build
* So building from git should be:
  - autoreconf -fvi       # <-- can be in "bootstrap.sh"
  - ./configure ...
  - make
  - make install
* OTOH, a release tarball should imitate "make dist" (for consistency):
  (i.e: with all files generated by bootstrap)


Oron Peled

More information about the asterisk-dev mailing list