| Status | Action needed | Meaning |
|---|---|---|
| mismatch | manual review | The actual license text doesn't match what's declared at all -- it verbatim-matches (or closely resembles) a different SPDX license entirely. LICENSE= is very likely wrong. |
| undeclared | manual review | LICENSE= isn't set on this port at all. Needs a license identifier added before anything else here is possible. |
| no match | manual review | The license text doesn't resemble any license in the SPDX corpus closely enough to identify. Could be a heavily modified license, a custom license, or extraction picked up the wrong file. |
| unresolved | manual review | No license file could be located at all (no LICENSE_FILE set, and nothing matching LICENSE*/COPYING*/COPYRIGHT* found by searching the extracted source). Add LICENSE_FILE, or investigate why none exists. |
| extra license | manual review | The declared license's own text checks out, but the port's source also contains SPDX-License-Identifier tags for a different license nowhere reflected in LICENSE=. Check whether LICENSE= needs to become a multi-license declaration. |
| close | manual review | Same license family as declared, but the text doesn't verbatim-match the canonical SPDX wording (drifted, or has minor unauthorized changes). Compare against "Detected SPDX" and decide whether to fix the text or the tag. |
| retag | easy fix | License text is verbatim-correct, but LICENSE= still uses FreeBSD's old-style token instead of the SPDX identifier shown in "Declared SPDX". Just update the Makefile -- no text investigation needed. |
| exact | none | Verbatim match against the SPDX canonical text, and LICENSE= already uses the correct SPDX spelling. Nothing to do. |
| Port | FreeBSD LICENSE | Declared SPDX | Detected SPDX | Status | SPDX tags in source | |
|---|---|---|---|---|---|---|
| archivers/py-lzma | LGPL21 | LGPL-2.1-only | LGPL-2.1-or-later | 99.9% | mismatch | |
| comms/py-pyserial | BSD3CLAUSE | BSD-3-Clause | BSD-3-Clause-Attribution | 90.7% | mismatch | BSD-3-Clause,BSD-3-Clause^M |
| devel/9base | MIT | MIT | EPL-2.0 | 93.0% | mismatch | |
| devel/elfkickers | GPLv2 | GPL-2.0-only | GPL-2.0-only | 99.9% | retag | |
| devel/libixp | MIT | MIT | MIT | exact | ||
| devel/pep8 | MIT | MIT | unresolved | |||
| devel/py-bitarray | PSFL | PSF-2.0 | no match | 0BSD | ||
| devel/py-bitstring | MIT | MIT | MIT | exact | ||
| devel/py-phabricator | APACHE20 | Apache-2.0 | Apache-2.0 | 98.1% | retag | |
| devel/py-pyusb | BSD3CLAUSE | BSD-3-Clause | BSD-3-Clause | 100.0% | retag | |
| devel/py-setproctitle | BSD3CLAUSE | BSD-3-Clause | BSD-3-Clause | 100.0% | retag | |
| devel/py-testinfra | APACHE20 | Apache-2.0 | Apache-2.0 | 98.1% | retag | |
| dns/dns2tcp | GPLv2 | GPL-2.0-only | GPL-2.0+ | 99.7% | mismatch | |
| graphics/py-gvgen | GPLv2 | GPL-2.0-only | MIT | 100.0% | mismatch | |
| irc/ii | MIT | MIT | MIT | exact | ||
| net/hexinject | BSD2CLAUSE | BSD-2-Clause | unresolved | |||
| net/py-dpkt | BSD3CLAUSE | BSD-3-Clause | BSD-3-Clause-HP | 95.5% | mismatch | |
| security/dsniff | BSD3CLAUSE | BSD-3-Clause | unresolved | |||
| security/honggfuzz | APACHE20 | Apache-2.0 | Apache-2.0 | 98.1% | retag | |
| security/knock | GPLv2 | GPL-2.0-only | GPL-2.0+ | 99.9% | mismatch | |
| security/knocker | GPLv2 | GPL-2.0-only | GPL-2.0+ | 99.7% | mismatch | |
| security/libssh2 | BSD3CLAUSE | BSD-3-Clause | BSD-3-Clause | 98.8% | close | BSD-2-Clause,BSD-3-Clause,FSFULLR,MIT,SAX-PD-2.0 |
| security/p5-Net-SinFP | ART10 | Artistic-1.0 | Artistic-dist | 94.0% | mismatch | |
| security/py-paramiko | LGPL21 | LGPL-2.1-only | LGPL-2.1-or-later | 99.9% | mismatch | |
| sysutils/archey4 | GPLv3 | GPL-3.0-only | GPL-3.0-only | 99.5% | retag | |
| sysutils/ldapvi | GPLv2 | GPL-2.0-only | GPL-2.0+ | 99.7% | mismatch | |
| sysutils/ltrace | GPLv2 | GPL-2.0-only | GPL-2.0+ | 99.8% | mismatch | |
| sysutils/pax-utils | GPLv2 | GPL-2.0-only | GPL-2.0+ | 99.8% | mismatch | |
| textproc/jid | MIT | MIT | MIT | exact | ||
| x11/arandr | GPLv3 | GPL-3.0-only | GPL-3.0-only | 99.5% | retag |