[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)
Bye,
--
Oron Peled
More information about the asterisk-dev
mailing list