John Marino has accomplished the difficult task of putting gcc 4.7 into DragonFly. Version 4.4 is still the default, and the older 4.1 version has been disabled. If you want to try this newer version, setting WORLD_CCVER=gcc47 will build kernel and world that way too. If you’re curious about what’s different in this version of gcc, there’s a 4.7 changelog.
Are we the only BSD with this new a version in base? I think so.
P.S.: You’ll want to do a full buildworld if you’re running DragonFly 3.1
P.P.S.: you may need to put ‘NO_GCC47=true’ in make.conf, going from IRC comments.
P.P.P.S.: Nope, now it’s fine.
Why does DragonFly include GPLv3 code in base? 4.2.1 was the last GPLv2 version IIRC.
Because newer versions of gcc offer features older ones do not? Because DragonFly as a whole project tends to be focused on utility rather than license? Because that’s what someone was willing to put the effort into for upgrading?
Those answers are kind of flippant, though maybe not the last one. More seriously, if you can point at a documented restriction on what DragonFly users can do because of the different license on the compiler, I’d like to see it.
Other BSD’s spend their time on other compilers, some of which are BSD licensed. From day 1, DragonFlyBSD has been more focused on conceiving and proving deep operating system innovations, rather than license purity. It is what it is, there are BSD’s for many tastes. Its the beauty of a completely free market.
There’s no policy to ban GPLv3 licenced software from base in DragonFly. My interpretation is that the best tool wins, but if all things are equal between two candidates, take the one with the BSD-like license. However, tools are rarely equal.
Justin: CCVER and WORLD_CCVER must be capitalized. You have listed them as lower case in the post.
Ah, you know I think you misunderstand how CCVER and WORLD_CCVER works.
Both are environment variables. If the environment variable CCVER equals “gcc47” then “cc”, “gcc”, “c++”, “g++” etc all refer to /usr/libexec/gcc47/ versions rather than /usr/libexec/gcc44 versions. You can use this at will, e.g.
> env CCVER=gcc47 cc –version should return version information for gcc47.
The only script that uses WORLD_CCVER variable is the global makefile. If WORLD_CCVER is set to “gcc47” then that script makes sure CCVER is set everywhere during the build. It applies to both world and kernel.
To recap: Use CCVER for everything except world and kernel, use WORLD_CCVER for world and kernel.
Not “misunderstand” so much as “never had it explained to me before”. Thank you for the description; I was inferring the usage from conversation rather than from having used it. Post corrected.