GPL Software in the Base System
One of the ongoing goals for the FreeBSD base system is a migration to modern, copyfree or at least more permissively licensed components. This page aims to summarise the aged or unmaintained GPL components in the base system, potential replacements, and progress.
Unowned Components
The following have potential replacements but integrating them is not yet planned. If you are looking for a project, please evaluate how feasible the replacement is, or if there are any other alternatives.
Name |
Replacement |
Comment |
as |
create new llvm-based as, create new elftoolchain as, or just remove |
Was not required for amd64 buildworld but now is for skein_block_asm.s. On i386 as is used for secure/lib/libcrypto/i386/*.s. 11 ports fail to build when /usr/bin/as does not exist: PR205250 llvm-mc is a very basic assembler driver |
dialog |
LGPL. WITHOUT_DIALOG added in r306375 but removes bsdinstall, bsdconfig, dpv |
|
libssp |
|
Part of GCC: we may be using it in libc(?). |
Works in Progress
Name |
Replacement |
Percent Complete |
Comment |
Responsible |
crt |
60% |
crtbegin / crtend, not needed on arm64 |
emaste@ |
|
diff3 |
OpenBSD diff3 |
40% |
See GSoC 2012: BSD-licensed Text-Processing Tools and GSoC 2010: BSD-licensed Text-Processing Tools |
bapt@ |
dtc |
dtc2 |
90% |
Switched to BSDL reimplementation by theraven@ in r320127 when compiler supports C++11 |
theraven@, emaste@ |
ld |
80% |
Is the default on arm64. Can build all of the amd64 base system and about 20000 ports. Other archs less well supported. See LLVM PR23214 for details. |
davide@, emaste@ |
|
libgomp |
70% |
Reported to be production quality as of LLVM 3.5+ |
dim@, emaste@ |
|
gcc |
90% |
Default compiler for tier 1, other archs in progress, needs external toolchain support before gcc can be removed from tier 2. See PortsAndClang. |
dim@ |
|
gcov |
llvm-cov |
|
|
emaste@ |
gdb |
lldb, ports gdb |
80% |
Basic functionality works for amd64 and arm targets. See GdbRetirement and lldb. Ports gdb includes kgdb. |
emaste@, jhb@ |
grep |
80% |
BSD grep has been imported into HEAD, but GNU grep is still default. Use WITH_BSD_GREP to test. Optimization and bugfixing needed. |
gabor@, KyleEvans |
|
objdump |
llvm-objdump |
75% |
Some differences from GNU objdump including formatting, but broadly compatible. Not required by the build. |
dim@, emaste@ |
Sunset Components
The following are dependencies of other components, and will be removed when all dependent components are removed.
Name |
Comment |
Ports Impact |
gperf |
Not installed (for non-gcc architectures) as of 272849 |
|
libgnuregex |
Used by GNU gdb and grep |
|
libreadline |
Only [k]gdb uses libreadline as an internallib, and kept as long as gdb is in the tree. |
|
Reviews / Call for Testing
These changes are available for review and testing:
Description |
Review Link |
Retire WITHOUT_ELFCOPY_AS_OBJCOPY option |
|
Disconnect objdump from the build |
|
Switch to LLVM libgcc_eh, libgcc_s |
See also the BSDToolchain page for more information.
Notes
Completed
Name |
Comment |
addr2line |
Switched to ELF Tool Chain in r276796 |
ar |
Replaced with one based on libarchive |
bc |
GNU version replaced with OpenBSD's bc |
c++filt |
Switched to ELF Tool Chain in r282285 |
cpio |
Replaced with bsd-cpio |
cvs |
Removed in r251794 |
diff |
Switch to a BSD licensed version in r317209 |
diff3 |
Imported from OpenBSD in r318888 |
gnu-sort |
Replaced with bsdsort, and removed in r241511 |
groff |
Removed in r319664 |
ident |
Replaced by a bsd licensed version in r285890 |
libf2c |
Was unused, removed in HEAD in r212592 |
libgcc |
Replaced by a combination of compiler-rt and LLVM libunwind in r308308 |
libobjc |
libobjc2 is MIT licensed, but in the absence of any Objective-C code in base it was removed |
libodialog |
Remaining libodialog users (tzsetup, sade) converted to new libdialog |
libstdc++ |
libc++ was imported and newer versions of libstdc++ are available in the ports tree |
nm |
Switched to ELF Tool Chain in r276796 |
objcopy |
Switched to ELF Tool Chain in r296096, backwards compat removed in r306649 |
patch |
Replaced with an enhanced variant of Larry Wall's patch from the other BSDs |
ranlib |
Replaced with one based on libarchive |
rcs |
Removed from base in r307351 |
readelf |
Switched to ELF Tool Chain in r280859 |
reiserfs |
Removed in r300062 |
sdiff |
Switch to a BSD compatible version in r298823 |
send-pr |
Obsoleted by Bugzilla migration |
size |
Switched to ELF Tool Chain in r276796 |
strings |
Switched to ELF Tool Chain in r276796 |
strip |
Switched to ELF Tool Chain in r276796 |
texinfo |
Removed in r268496 |