glibc/scripts
Joseph Myers 14f95a4203 Add script to build many glibc configurations.
This patch adds a Python (3.5 or later) script to build many different
configurations of glibc, including building the required cross
compilers first.  It's not intended to change any patch testing
requirements, although some people may wish to use it for high-risk
patches such as adding warning options (and it can also be used to
test building, including compiling tests, for an individual
configuration, if e.g. you wish to do such a compilation test of a
patch for an architecture it touches).

The configurations include all the GNU/Linux ABI variants in
<https://sourceware.org/glibc/wiki/ABIList> (although some do not yet
build cleanly) and it would be desirable to cover enough other
variants e.g. for CPUs using different sysdeps directories to test
building each piece of code in glibc at least once.  It would also be
desirable to extend it to cover Hurd and NaCl, which might best be
done by people familiar with those configurations.

You call the script as

build-many-glibcs.py /some/where thing-to-do <other-arguments>

where /some/where is a working directory for the script.  It will
create and use subdirectories build, install, logs therein.  You can
use it with thing-to-do being "checkout" to create a subdirectory src
therein, with subdirectories binutils, gcc, glibc, gmp, linux, mpc,
mpfr with the sources of those components, or create those directories
manually (all except glibc can be symlinks to sources elsewhere).  In
the checkout case, by default it checks out GCC 6 branch, binutils
2.27 branch, glibc mainline and releases of other components.  You can
specify <component>-<version> to choose a version to check out, where
<version> is "vcs-mainline" or "vcs-<branch>" to check out from
version control (only supported for gcc, binutils, glibc) and
otherwise a release version number to download and use a tarball;
components not specified on the command line have default versions
checked out.  If you rerun "checkout" (with the same version
specifications) it will update checkouts from version control, but
will not detect cases where the location something is expected to be
checked out from has changed.

Other than "checkout", thing-to-do is one of host-libraries,
compilers, glibcs.  So you run, in that order:

build-many-glibcs.py /some/where host-libraries
build-many-glibcs.py /some/where compilers
build-many-glibcs.py /some/where glibcs

host-libraries is run once and then those libraries are used for all
the compilers.  compilers can be run once and then used many times for
testing different glibc versions (so a bot only needs to update glibc
and rerun the glibcs task, if using stable GCC / binutils; if testing
the latest versions of the whole toolchain together including mainline
GCC, it would probably want to update everything and rerun both
compilers and glibcs).  You can also name particular variants after
"compilers" or "glibcs" to build just those variants (the possible
variants are hardcoded in the script).

I may add support for allowing the set of configurations to depend on
the GCC version (to get cleaner default results), and optionally
looping over architecture-independent glibc variants of CFLAGS and
configure options as well, for every glibc configuration listed
(e.g. -Os).

GCC versions before 4.9 are not expected to work (the code uses
--with-glibc-version to get the bootstrap GCC appropriately
configured).  There are various problems for particular configurations
as well.

Command-line options to the script: -jN to run N jobs in parallel
(default the number of CPU cores reported by the system); --keep=all
or --keep=failed to control keeping around build directories (default
--keep=none).

	* scripts/build-many-glibcs.py: New file.
2016-11-11 21:07:08 +00:00
..
abi-versions.awk Remove bitrotten --enable-oldest-abi (bug 6652). 2014-09-16 17:45:03 +00:00
abilist.awk Simplify the abilist format 2015-11-06 13:58:53 +01:00
begin-end-check.pl Add rules to run scripts/begin-end-check.pl. 2005-09-17 17:15:50 +00:00
build-many-glibcs.py Add script to build many glibc configurations. 2016-11-11 21:07:08 +00:00
check-c++-types.sh Make shebang interpreter directives consistent 2016-01-07 04:03:21 -05:00
check-execstack.awk Do check-execstack test using readelf rather than a build-time C program. 2012-05-01 13:27:52 -07:00
check-installed-headers.sh Make check-installed-headers.sh ignore sys/sysctl.h for x32. 2016-11-07 23:32:17 +00:00
check-local-headers.sh mach: Add more allowed external headers 2016-08-21 03:24:55 +02:00
check-localplt.awk Extend local PLT reference check 2015-07-29 11:58:06 -07:00
check-textrel.awk Do check-textrel test using readelf rather than a build-time C program. 2012-05-01 13:27:11 -07:00
config-uname.sh Rejigger header generation for default uname implementation. 2010-08-24 11:56:52 -07:00
config.guess Make shebang interpreter directives consistent 2016-01-08 14:09:06 -05:00
config.sub Make shebang interpreter directives consistent 2016-01-08 14:09:06 -05:00
cpp Make shebang interpreter directives consistent 2016-01-07 04:03:21 -05:00
cross-test-ssh.sh Make shebang interpreter directives consistent 2016-01-07 04:03:21 -05:00
documented.sh Make shebang interpreter directives consistent 2016-01-07 04:03:21 -05:00
evaluate-test.sh Make shebang interpreter directives consistent 2016-01-07 04:03:21 -05:00
firstversions.awk Fix bug in firstversions.awk version range handling. 2012-01-28 12:02:44 -05:00
gen-as-const.awk Fix 64-bit platform handling in test cases for generated headers with constants. 2009-08-16 00:39:43 -07:00
gen-libc-abis Make shebang interpreter directives consistent 2016-01-07 04:03:21 -05:00
gen-libc-modules.awk Auto-generate libc-modules.h 2014-11-19 12:16:00 +05:30
gen-posix-conf-vars.awk Remove uses of sprintf in gen-posix-conf-vars.awk 2015-01-02 11:16:35 +05:30
gen-sorted.awk Make shebang interpreter directives consistent 2016-01-07 04:03:21 -05:00
install-sh Update miscellaneous files from upstream sources. 2014-06-26 20:13:44 +00:00
lib-names.awk Clean up gnu/lib-names.h generation (bug 14171). 2014-09-26 17:33:04 +00:00
list-fixed-bugs.py Make shebang interpreter directives consistent 2016-01-07 04:03:21 -05:00
list-sources.sh Update scripts/list-sources.sh for ports repository merge. 2014-06-26 21:30:07 +00:00
localplt.awk Support PLT and GOT references in local PIC check 2015-10-14 06:00:02 -07:00
merge-test-results.sh Make shebang interpreter directives consistent 2016-01-07 04:03:21 -05:00
mkinstalldirs Make shebang interpreter directives consistent 2016-01-08 14:09:06 -05:00
move-if-change Update miscellaneous files from upstream sources. 2016-01-05 18:04:06 +00:00
output-format.sed 2004-08-13 Daniel Jacobowitz <dan@debian.org> 2004-08-14 06:54:39 +00:00
pylint Implement benchmarking script in python 2014-03-21 17:32:50 +05:30
pylintrc pylintrc: disable reports 2015-11-11 13:41:57 -05:00
rellns-sh Make shebang interpreter directives consistent 2016-01-07 04:03:21 -05:00
soversions.awk Remove bitrotten --enable-oldest-abi (bug 6652). 2014-09-16 17:45:03 +00:00
sysd-rules.awk sysd-rules: Cut down the number of rtld-% pattern rules 2016-09-20 10:41:05 +02:00
test-installation.pl Make shebang interpreter directives consistent 2016-01-07 04:03:21 -05:00
update-abilist.sh Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
update-copyrights Make shebang interpreter directives consistent 2016-01-07 04:03:21 -05:00
versionlist.awk Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
versions.awk Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00