Remove groff from base. There is a dports package available for people who need it. Also, for some manual pages in dports, man(1) will report that mandoc(1) cannot render them, and advise to install groff too, which man(1) will then use. Also remove vgrind(1) and the old base me(7) macros. Disable the groff part of manlint for now, also mandiff. I will decide later if it should be made to work with dports groff. There are a number of related utilities, like colcrt, checknr etc. that I have not touched yet. Their fate will be decided later. There are also some references to these tools left in existing manual pages.
Switch to the new man(1) command. * Exchange our old GNU man(1) command with the one from FreeBSD that I recently imported. It uses mandoc(1) by default. If mandoc(1) reports that it cannot render a page, man(1) will fall back to groff (right now our base groff, later the groff pkg when we remove it). * Install mandoc(1) as apropos(1) and makewhatis(8). This means makewhatis moves from /usr/sbin to /usr/bin. * Use mandoc(1) instead of groff for most purposes of bsd.man.mk. * Remove /usr/share/man/cat*. It's not necessary anymore to cache formatted manual pages.
World - Change default compiler from gcc-5 to gcc-8 * Change the default compiler from gcc-5 to gcc-8. gcc-5 will no longer be built by default. Setting WORLD_ALTCOMPILER=all will build all three as before. * Create CC hardlink for gcc80 so dports picks it up. gcc80 is now the default for dports instead of 50. * Adjust the Makefile's to make things easier the next time, though they could still use more work.
Revamp alt compiler handling for clang 3.9.1 import. Many users are still constantly asking weather llvm/clang compiler could be added into a base as an alternative to current used ones (gcc50 and gcc47). There are few issues in doing that: * It is very hard to keep both compiler flavors in harmony while one or the other is being updated. There were always two base compilers in base system in DragonFly and common practice still is to replace previous alternative compiler with an updated version, performing tests and then flip them up. * With clang introduction, this scheme would break badly due to both using slightly different c++ capabilities, flags support (WARNS mechanism), etc. * Different incompatible libraries libLLVM + libc++ vs libstdc++, also clang requiring a lot of effort to rewrite cmake logic into Makefiles for make(1). * SBU costs, gcc47 only has ~4min buildtime overhead at -j5 level(i7 laptop) while even clang38 tests has shown two-fold increase in buildworld time. * How DPorts infrastructure would handle both flavors? License roadmap? So to make compromise it was chosen to provide a way for users and developers to select the alternative compiler they like while keeping all groups happy, ones continuing to enjoy the very fast world rebuilds and others having a way to further develop and integrate clang into the infrastructure. Since DragonFly is currently x86_64 only, we might as well experiment more with compilers. This changeset adds some flexibility when it comes to handling base system compilers. Even if it would be decided that clang does not fit very well in DragonFly base system (due to complexities, updating/patching problems and compilation times), we at least will have a very clean way for adding, testing and finally making base default upcoming gcc70 and later. All of this would be possible without disturbing both primary and alternative default compilers, while developers and users will be testing both base and dports. Also as a bonus we will be able to add compilers like pcc and scc that have no native c++ frontend support too while reusing default compiler parts. For now I am keeping this expansion undocumented and candidate for a revert. While there mark few places for further work to reduce amount of ORDER: for faster/better parallelism in btools/ctools bootstrapping stages. Bootstrap is still fine from DragonFly 4.0.6-RELEASE.
Set gcc50 as the primary compiler, gcc47 as secondary Per request, rather than define NO_GCC47 to prevent the building of the secondary compiler, the new variable is called NO_ALTCOMPILER. This will avoid some disruption in the future where the actual version is not important, only the desire to avoid the secondary compiler.
Hook gcc 5.0 (pre-release) in build, unhook gcc 4.4 Effectively replace GCC 4.4 with the 1 February 2015 snapshot of the pre-release GCC 5.0. This compiler is in pretty good shape, but it is not perfect. It cannot fully build world if WORLD_CCCVER is set to GCC50. This compiler import is a work in progress. * The old compiler has been unhooked. * The gcc44 sources may be removed soon * Obviously NO_GCC44 doesn't work anymore * NO_GCC50 has been created and should work * NO_CXX was never documented and has been removed * NO_OBJC was not deemed worthwhile and it has been removed * man pages have been updated accordingly * default make.conf has been updated accordingly * Per bsd.sys.mk, gcc50 behaves just like gcc47 * Actually, all CCVER starting with "gcc" now behave like gcc47 * The proper CCVER value is "gcc50". If "gcc5" is specified, the dports compiler lang/gcc5 will be used. Iterating: THIS IS AN EXPERIMENTAL COMPILER! It's not ready for prime-time yet. Do NOT set WORLD_CCVER to "gcc50".
Rename binutils221 to binutils224 as a new makefile base * This immediately breaks binutils221 which will be removed imminently * This temporarily breaks the build completely * Makefile.buo was realigned to respect 75 characters * Makefile.buo was tweaked to minimum necessary updates by using :S modifier * Makefile.buo extra ".else" branches were removed * NO_BINUTILS221 will be replaced with NO_ALTBINUTILS, this is first step
Promote GCC 4.7 to be the default compiler This commit causes world and kernel to be built by GCC 4.7 if the compiler is not specified. As a side effect, the make variable "NO_GCC47" no longer functions. GCC 4.7 will always be built. In addition to changing the default of WORLD_CCVER, the CCVER variable also defaults to "gcc47" now. The variable "NO_GCC44" has been resurrected to prevent GCC 4.4 from being built. As noted in the UPDATING file, using this option is highly discouraged. GCC 4.4 is very useful in building some packages in pkgsrc that fail to build with GCC 4.7's stricter standards. The new DPorts system is designed to use GCC 4.4 by default, regardless of the base's default compiler setting. If at all possible, build *both* compilers for the maximum flexibility to build packages.
Switch on gcc47 and switch off gcc41 Replace GCC 4.1 with GCC 4.7. The primary compiler remains GCC 4.4 and the source and makefiles for GCC 4.1 remain intact so it can be brought back if necessary. All references to GCC 4.1 in documentation where updated to reflect version 4.7. A full world build is probably required after this point.
Relocate libgmp and libmpfr world makefiles This action prepares for the import of GCC 4.7 into base. GCC 4.4, unlike GCC 4.1, requires gmp and mpfr, and these libraries were part of the GCC 4.4 world makefile set. GCC 4.7 also needs these libraries, so rather than build them twice, they are moved out to a common area where both compilers can use them.
binutils: Make manpage handling generic to ease maintenance DragonFly has two sets of binutils with one designated as primary and the other is the backup. In the recent past, every time these designation were switched or a new binutils was brought in, around 30 makefiles had to be manually and tediously updated in at least 3 places per file. This commit implements common variables that will make future primary designation changes not require changes to individual makefiles, but rather limit the update to a couple of commons ones.
build - Significantly improve parallel buildworld times * Change the serialized command sequence used for bootstrap tools, btools, and ctools into dependencies so buildworld can build them concurrently. * Utilize the new SUBDIR concurrent build feature by specifying a SUBDIR_ORDERED make variable (usually empty) in various high-level Makefile's.