GPL Software in the Base System
One of the ongoing goals for the FreeBSD base system is a migration to modern, more permissively licensed components. This page aims to summarise the aged or unmaintained GPL components in the base system, the potential replacements, and the progress.
Sunset Components
The following have no (identified) permissive replacement, or no concrete plan for replacement:
Name |
Comment |
Ports Impact |
libgnuregex |
Used by GNU diff, gdb and grep |
|
This is dependency of other components, and may be removed when no longer needed. If you know of a possible replacement for this, please add it in the section below.
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 |
diff |
See GSoC 2012: BSD-licensed Text-Processing Tools and GSoC 2010: BSD-licensed Text-Processing Tools |
|
rcs |
OpenRCS or GNU RCS pkg available (devel/rcs57) |
OpenRCS needs bug fixes before becoming an option. |
Works in Progress
Name |
Replacement |
Percent Complete |
Comment |
Responsible |
binutils |
ELF Toolchain, various |
50% |
Most components can be imported from the ELF Toolchain project. Clang provides an integrated assembler - an as tool would be simple to write using the same libraries, if one doesn't already exist. Progress is being made on options for a BSD licensed ELF linker. |
jkoshy@, kaiw@ |
dtc |
dtc2 |
50% |
From-scratch reimplementation of the functionality of dtc required to build the base system in base and built by default. Requires updates as of DTS import in r271133 (partially complete). Since this is only the compiler (the rest of the device tree stuff is BSDL'd), it could be just not compiled by default since typically only the firmware maker, and not the kernel, needs this. |
theraven@ |
libgomp |
15% |
Reported to be production quality as of LLVM 3.5+ |
emaste@ |
|
gcc |
90% |
Now the default compiler for tier 1, needs external toolchain support before gcc can be removed from tier 2. See PortsAndClang. |
dim@ |
|
gcov |
llvm-cov |
|
|
emaste@ |
gdb |
75% |
Basic functionality works for amd64 targets. See GdbRetirement and lldb. |
emaste@ |
|
gperf |
|
90% |
Not installed (for non-gcc architectures) as of 272849 |
emaste@ |
grep |
90% |
BSD grep has been imported into HEAD, but GNU grep is still default. Use WITH_BSD_GREP to test. Some optimization and bugfixing needed. |
gabor@ |
|
groff |
75% |
mdocml has been imported into HEAD and mandoc is now used by default. groff is still in base. The remaining parts depend mostly on a couple of choices that need to be made. See Notes below. |
uqs@, joel@, bapt@ |
|
libgcc |
compiler-rt and either HP libunwind or LLVM libunwind (src) |
75% |
Compiler-rt is used for libgcc.a. Either unwinder provides most of the remaining functionality required for libgcc_s. Also need to replace gcc-provided crtbegin/crtend. |
ed@ |
libreadline |
- |
90% |
Only [k]gdb uses libreadline as an internallib, and kept as long as gdb is in the tree. |
bapt@ |
Binutils and related detail
Name |
Replacement |
Percent Complete |
Comment |
Responsible |
addr2line |
100% |
emaste@ |
||
as |
new llvm-based as, or just remove |
|
|
|
c++filt |
100% |
emaste@ |
||
ld |
25% |
|
davide@ |
|
nm |
100% |
emaste@ |
||
objcopy |
elftoolchain elfcopy |
75% |
|
emaste@ |
objdump |
llvm-objdump |
|
|
|
readelf |
100% |
emaste@ |
||
size |
100% |
emaste@ |
||
strings |
100% |
emaste@ |
||
strip |
100% |
emaste@ |
See also the BSDToolchain page for more information.
Notes
groff
- "old" roff'ed papers need to go to the doc repository (or remove them like OpenBSD did?)
- how to handle ports' manpages
- install catpages for base?
- make all ports (some ports?) depend on textproc/groff? Render them to catpages on install?
- have man(1) test the page with mandoc -Tlint, on error fall back to groff from ports?
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 |
cpio |
Replaced with bsd-cpio |
cvs |
Removed in r251794 |
gnu-sort |
Replaced with bsdsort, and removed in r241511 |
libf2c |
Was unused, removed in HEAD in r212592 |
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 |
patch |
Replaced with an enhanced variant of Larry Wall's patch from the other BSDs |
ranlib |
Replaced with one based on libarchive |
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 |