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

OpenBSD diff, diff3 and sdiff

See GSoC 2012: BSD-licensed Text-Processing Tools and GSoC 2010: BSD-licensed Text-Processing Tools

libgomp

LLVM libiomp

Reported to be production quality as of LLVM 3.5+

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. 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@

gcc

clang

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

lldb

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

BSDgrep

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

mdocml

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

elftoolchain addr2line

100%

D1224

emaste@

as

new llvm-based as, or just remove

c++filt

elftoolchain cxxfilt

100%

D2408

emaste@

ld

lld

5%

davide@

nm

elftoolchain nm

100%

D1224

emaste@

objcopy

elftoolchain elfcopy?

50%

emaste@

objdump

llvm-objdump

readelf

elftoolchain readelf

100%

D2156

emaste@

size

elftoolchain size

100%

D1224

emaste@

strings

elftoolchain strings

100%

D1224

emaste@

strip

elftoolchain elfcopy

100%

D1224

emaste@

See also the BSDToolchain page for more information.

Notes

groff

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

GPLinBase (last edited 2015-08-04 21:10:06 by EdMaste)