buildworld: Add support to skip toolchain if requested.These two new features are mainly aimed at developers, to speed up theirrebuilds on development branches. Often there are no changes that wou
buildworld: Add support to skip toolchain if requested.These two new features are mainly aimed at developers, to speed up theirrebuilds on development branches. Often there are no changes that wouldinfluence the toolchain components in any way. So it is reasonable toskip rebuild of certain parts (mostly to avoid building c++ sources).Previously we were rebuilding both main and alternative compilers twiceduring buildworld for a full bootstrap that allowed us to avoid certainbreakages and not to keep adding lots of backwards compatibility hacks.The new additions: * -DNO_CROSSTOOLS - skip compiler and binutils bootstrap; * -DNO_TOOLCHAINS - do not build compilers/binutils for installworld.Both features are aimed for testing DESTDIR targets. Decision toactivate any of these features is left to the user's own discretionbased on reviewing the commits to the git repository or local clone.The NO_CROSSTOOLS feature is implemented by installing the shell scriptwrappers that add a sysroot and patch the specs. Idea is not to disturbin any way the Makefile.inc1 or objformat logic at this moment. Sinceall the main toolchain tools are installed as shell scripts this has anice bonus for quick hooks/probes and other hacky/pretty stuff withoutdisturbing the rest of the buildworld. You can even add your favoritestatic analyser tool, just don't forget to change default include pathto /usr/obj/../world_x86_64/usr/include for it.The objformat changes for sysroot would only make sense when we make aport for another architecture. None of the new features are consideredto be guessTM enabled automatically at this moment. To be sure thatnothing has changed since previous buildworld from other changes in thesource tree one would have to compile and hex-diff the final products.Keep in mind that libraries coming with the compilers will be rebuilteven with both knobs passed. This should help catching most of theissues before installworld step and not on the next {build,quick}world.Both knobs are not documented in make.conf(5) on purpose. It is highlyadvised *not* adding any of these knobs into make.conf, sooner or lateryou will forget it and *will* get yourself in world recovery situation: a) world backup machinery (unless you had NO_BACKUP=true in make.conf); b) perform manual bootstrap to fix up the breakage; c) restore from H1/H2 snapshots (toolchain components are located in /usr/libexec/* and /usr/lib/${CCVER}/ directories); d) clean overwrite by mounting from other system (like usb img stick).Features should work with quickworld too.To put things in perspective here is a little chart of the cleanedfresh 'make -jX buildworld' times impact on few setups: netbook: hw.model: Intel(R) Core(TM) i3 CPU U380 @ 1.33GHz compiler: gcc50 as cc(1) (4gb usb stick for /, ironlake cpu) make -j3 buildworld [-DNO_CROSSTOOLS] [-DNO_TOOLCHAIN] min:sec | STANDARD | NO_C | NO_T | NO_C/NO_T | ---------------------------------------------------------------- gcc50 | 73:56 | 59:57 | 54:11 | 39:38 | gcc47 (host+world)| N/I | N/I | N/I | 37:51 | ---------------------------------------------------------------- laptop setup: hw.model: Intel(R) Core(TM) i7-4712MQ CPU @ 2.30GHz compiler: gcc50 as cc(1) (default) make -j9 buildworld [-DNO_CROSSTOOLS] [-DNO_TOOLCHAIN] min:sec | STANDARD | NO_C | NO_T | NO_C/NO_T | ---------------------------------------------------------------- gcc50 | 17:06 | 13:57 | 12:58 | 09:42 | gcc50 gcc47 (def) | 20:18 | 16:03 | 14:58 | 10:37 | gcc50 gcc80 | 24:24 | 18:06 | 17:31 | 11:23 | gcc50 gcc47 gcc80 | 27:47 | 20:17 | 19:23 | 12:00 | ---------------------------------------------------------------- blade setup: dual hw.model: Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz compiler: gcc80 as cc(1) (soon gcc80 will replace gcc50 in master) make -j32 buildworld [-DNO_CROSSTOOLS] [-DNO_TOOLCHAIN] min:sec | STANDARD | NO_C | NO_T | NO_C/NO_T | ---------------------------------------------------------------- gcc80 | 06:58 | 05:19 | 05:33 | 03:51 | gcc80 gcc47 (def*)| 08:03 | 06:06 | 06:02 | 04:05 | gcc80 gcc50 | 08:23 | 06:12 | 06:19 | 04:08 | gcc80 gcc47 gcc50 | 09:24 | 06:59 | 06:51 | 04:21 | ----------------------------------------------------------------
show more ...
libmpfr: Trim sources that create empty objects.
libmpfr: Update from version 3.1.0 to 3.1.2Changes from version 3.1.0 to version 3.1.1:- Improved MPFR manual.- Test coverage: 96.5% lines of code.- Bug fixes, see <http://www.mpfr.org/mpfr-3.1.
libmpfr: Update from version 3.1.0 to 3.1.2Changes from version 3.1.0 to version 3.1.1:- Improved MPFR manual.- Test coverage: 96.5% lines of code.- Bug fixes, see <http://www.mpfr.org/mpfr-3.1.0/#fixed>Changes from version 3.1.1 to version 3.1.2:- Bug fixes, see <http://www.mpfr.org/mpfr-3.1.1/#fixed>
Relocate libgmp and libmpfr world makefilesThis action prepares for the import of GCC 4.7 into base.GCC 4.4, unlike GCC 4.1, requires gmp and mpfr, and these librarieswere part of the GCC 4.4 wor
Relocate libgmp and libmpfr world makefilesThis action prepares for the import of GCC 4.7 into base.GCC 4.4, unlike GCC 4.1, requires gmp and mpfr, and these librarieswere part of the GCC 4.4 world makefile set. GCC 4.7 also needsthese libraries, so rather than build them twice, they are moved outto a common area where both compilers can use them.