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.

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

as

create new llvm-based as, create new elftoolchain as, or just remove

Not required for amd64 buildworld. 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

diff

OpenBSD diff, diff3 / Perforce p4diff

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

libssp

Apparently MUSL doesn't require it.

It is part of GCC: some part of it(?) is used for stack protection in libc/secure. Safestack on LLVM 3.8+ could obviate the need of stack protection but we may still need compatibility.

Works in Progress

Name

Replacement

Percent Complete

Comment

Responsible

crt

NetBSD csu

60%

crtbegin / crtend, not needed on arm64

emaste@

dtc

dtc2

80%

From-scratch reimplementation of the functionality of dtc required to build the base system in base and built by default. 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@

ld

lld

75%

Outstanding issues with boot and rescue on amd64 and arm64, other archs less well supported. See LLVM PR23214 for details.

davide@, emaste@

libgomp

LLVM libomp

70%

Reported to be production quality as of LLVM 3.5+

dim@, emaste@

gcc

clang

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

60%

Basic functionality works for amd64 targets. See GdbRetirement and lldb.

emaste@

gperf

-

95%

Not installed (for non-gcc architectures) as of 272849

emaste@

grep

BSDgrep

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@

groff

mdocml

90%

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@

libreadline

-

90%

Only [k]gdb uses libreadline as an internallib, and kept as long as gdb is in the tree.

bapt@

objdump

llvm-objdump

75%

Some differences from GNU objdump including formatting, but broadly compatible. Not required by the build.

dim@, emaste@

Reviews / Call for Testing

These changes are available for review and testing:

Description

Review Link

Retire WITHOUT_ELFCOPY_AS_OBJCOPY option

D7337

Disconnect objdump from the build

D7338

Switch to LLVM libgcc_eh, libgcc_s

D8189

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

c++filt

Switched to ELF Tool Chain in r282285

cpio

Replaced with bsd-cpio

cvs

Removed in r251794

gnu-sort

Replaced with bsdsort, and removed in r241511

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

GPLinBase (last edited 2016-12-01 21:22:22 by EdMaste)