Subject: Introducing autoconf-policy

From: Ariadne Conill <[email-masked]>
Date: Fri, 12 Jun 2020 13:48:18 -0600

Hello,

I have been working on a helper package[1] based on autoconf's config.site[2] 
functionality.  This package can be used to do a few things that are useful to 
the Alpine ecosystem:

* Enforcing a specific layout (e.g. FHS) in a centralized place.

Much as like how we now have abuild-meson, it is possible for us to use 
autoconf-policy to enforce a specific layout, using the CONFIG_SITE 
environmental variable.  This particular functionality is not yet enabled, as 
we need to make some changes to how builders are configured before it will work 
(declaring the CONFIG_SITE env variable, since the default CONFIG_SITE is 
$prefix/share/config.site), but once we decide to proceed it can be trivially 
implemented.  This will allow for ./configure in abuild environment to pick up 
the site configuration, and accordingly, the desired layout for packaging, 
without having to specify --prefix and so on.

* Bypassing broken tests.

Right now, we are using GNU libiconv and GNU libintl primarily because 
autoconf's tests look for internal symbols in both to see if the libiconv and 
libintl implementations are "good enough."  By implementing autoconf-policy, 
we have the capability of skipping these broken tests.

* Improving configure script runtimes.

Most autoconf scripts do the same basic checks.  By supplying the appropriate 
answers for each architecture, we can reduce the number of checks that the 
script does.  This improves configure script runtime by an order of magnitude 
already[3] and also improves cross-compilation.

My plan is to implement the layout stuff in autoconf-policy 0.2 and promote it 
to main, adding it as a dependency of alpine-sdk.  Why not build-base?  The 
build-base package is for the toolchain itself, this is an alpine thing.

The autoconf-policy package is likely useful to other apk-based distributions, 
contributions and usage are welcome there, feel free to contribute!  Also, 
thanks to the Sabotage and Void distributions for doing a lot of the work on 
finding the right autoconf variables to override.

Ariadne

[1]: https://gitlab.alpinelinux.org/kaniini/autoconf-policy
[2]: https://www.gnu.org/software/automake/manual/html_node/
config_002esite.html
[3]: binutils configure phase runtime on dabuild+qemu setup is cut by ~40%.