licencias: ffmpeg y LLVM salen del árbol — «lo decide un humano» era «lo decide la receta»

Tres que había clasificado como decisión legal y no lo eran. Las dos causas son distintas y las dos
me las estaba perdiendo por mirar sólo el árbol:

**ffmpeg → LGPL-2.1-or-later.** Su raíz trae cuatro COPYING.* y por eso el detector se planta, con
razón: el árbol solo no puede decidir. Pero el `LICENSE.md` del propio ffmpeg explica la regla —«In
combination the LGPL v2.1+ applies to FFmpeg» y «None of these parts are used by default, you have to
explicitly pass `--enable-gpl`… In this case, FFmpeg's license changes to GPL v2+»— y la respuesta la
da NUESTRA receta: no pasa `--enable-gpl` ni `--enable-version3`, y encima va con
`--disable-autodetect`. O sea que la licencia sale de cruzar el árbol con los flags, no de elegir uno
de los cuatro ficheros.

**llvm18 y clang18 → Apache-2.0 WITH LLVM-exception.** Acá el detector veía «tres licencias
distintas» en un solo `LICENSE.TXT` y se plantaba, pero el fichero ABRE diciendo «The LLVM Project is
under the Apache License v2.0 with LLVM Exceptions»: lo demás es la sección legada. La regla de
«varias licencias ⇒ decide un humano» es correcta como default y aquí el humano sólo tuvo que leer la
primera línea.

`licenses/` pasa de 48 a 49 textos: `LLVM-exception` hacía falta para poder declararla, que es el
lazo de siempre —no se declara lo que no se puede entregar—. El único sin texto canónico sigue siendo
`LicenseRef-qorpa-ajena-no-enumerable`, que es identificador nuestro y SPDX no publica.

97% (1135/1165); la cola baja de 27 a 24. Los 3 ArtifactHash, idénticos.
This commit is contained in:
Sergio
2026-09-05 21:26:53 +00:00
parent a48885e143
commit 1505bfad78
6 changed files with 21 additions and 3 deletions
+3
View File
@@ -3,12 +3,14 @@
# decidió. REVISAR A MANO antes de sembrar: es evidencia, no un veredicto firmado.
# Se ACUMULA: las filas de lo ya sembrado se conservan como rastro de auditoría.
adwaita-hello LGPL-2.1-or-later meson.build: license: 'LGPL-2.1-or-later'
clang18 Apache-2.0 WITH LLVM-exception mismo LICENSE.TXT que llvm18 (los dos salen de llvm-project-18.1.8.src)
dav1d BSD-2-Clause COPYING (texto de BSD-2-Clause)
dwarves GPL-2.0-only COPYING + concesión en btf_encoder.c: …/* SPDX-License-Identifier: GPL-2.0-only Copyright (C) 20…
elfutils GPL-3.0-or-later COPYING + concesión en tests/run-eu-search-die.sh: …ion; either version 3 of the License, or # (at your option) any later version. # # elfutils is di…
elfutils-libdw GPL-3.0-or-later COPYING + concesión en tests/run-eu-search-die.sh: …ion; either version 3 of the License, or # (at your option) any later version. # # elfutils is di…
exiv2 GPL-2.0-or-later COPYING + concesión en README.md: …ation; either version 2 of the License, or (at your option) any later version. Exiv2 program is…
fcft MIT meson.build: license: 'MIT'
ffmpeg LGPL-2.1-or-later su LICENSE.md: "In combination the LGPL v2.1+ applies to FFmpeg" y "None of these parts are used by default, you have to explicitly pass --enable-gpl ... In this case FFmpeg's license changes to GPL v2+". Nuestra receta NO pasa --enable-gpl ni --enable-version3, y va con --disable-autodetect
file BSD-2-Clause COPYING (texto de BSD-2-Clause)
foot MIT meson.build: license: 'MIT'
giflib MIT COPYING (texto de MIT)
@@ -26,6 +28,7 @@ libssh2 BSD-3-Clause COPYING (texto de BSD-3-Clause)
libuv MIT LICENSE (texto de MIT)
libvorbis BSD-3-Clause COPYING (texto de BSD-3-Clause)
libzip BSD-3-Clause LICENSE (texto de BSD-3-Clause)
llvm18 Apache-2.0 WITH LLVM-exception LICENSE.TXT abre con "The LLVM Project is under the Apache License v2.0 with LLVM Exceptions" (el resto del fichero es la sección legada, por eso el detector veía tres licencias)
mesa-llvmpipe MIT meson.build: license: 'MIT'
mesa-swrast MIT meson.build: license: 'MIT'
mtdev MIT COPYING (texto de MIT)
Can't render this file because it contains an unexpected character in line 13 and column 41.
-3
View File
@@ -5,8 +5,6 @@
# paquete<TAB>por qué no se puede afirmar
boost sin COPYING ni declaración en el árbol
cargo-audit sin COPYING ni declaración en el árbol
clang18 la raíz dice 3 licencias distintas (Apache-2.0 en LICENSE.TXT, BSD-3-Clause en LICENSE.TXT, MIT en LICENSE.TXT): la expresión la compone un humano
ffmpeg la raíz dice 4 licencias distintas (GPL-2.0 en COPYING.GPLv2, GPL-3.0 en COPYING.GPLv3, LGPL-2.1 en COPYING.LGPLv2.1, LGPL-3.0 en COPYING.LGPLv3): la expresión…
fuse3 LICENSE existe pero no reconozco su texto — empieza: "The following files may be used under the terms of the GNU Lesser"
gi-foreign-girs la raíz dice 2 licencias distintas (GPL-2.0 en COPYING.GPL, LGPL-2.0 en COPYING.LGPL): la expresión la compone un humano
gi-foreign-typelibs la raíz dice 2 licencias distintas (GPL-2.0 en COPYING.GPL, LGPL-2.0 en COPYING.LGPL): la expresión la compone un humano
@@ -15,7 +13,6 @@ gsd-schemas la raíz dice 2 licencias distintas (GPL-2.0 en COPYING, LGPL-2.1 en
hwdata GPL-2.0 ambigua · sin concesión fuera del COPYING
libgdm el autor declara «GPL2+», que no es un SPDX del que tengamos texto en licenses/ (meson.build: license: 'GPL2+')
libical la raíz dice 2 licencias distintas (LGPL-2.1 en LICENSE.LGPL21.txt, MPL-2.0 en LICENSE.MPL2.txt): la expresión la compone un humano
llvm18 la raíz dice 3 licencias distintas (Apache-2.0 en LICENSE.TXT, BSD-3-Clause en LICENSE.TXT, MIT en LICENSE.TXT): la expresión la compone un humano
lsof COPYING existe pero no reconozco su texto — empieza: "Copyright 2002 Purdue Research Foundation, West Lafayette,"
openssh la raíz dice 2 licencias distintas (BSD-3-Clause en LICENCE, MIT en LICENCE): la expresión la compone un humano
pigz sin COPYING ni declaración en el árbol
Can't render this file because it contains an unexpected character in line 10 and column 62.
+15
View File
@@ -0,0 +1,15 @@
---- LLVM Exceptions to the Apache 2.0 License ----
As an exception, if, as a result of your compiling your source code, portions
of this Software are embedded into an Object form of such source code, you
may redistribute such embedded portions in such Object form without complying
with the conditions of Sections 4(a), 4(b) and 4(d) of the License.
In addition, if you combine or link compiled forms of this Software with
software that is licensed under the GPLv2 ("Combined Software") and if a
court of competent jurisdiction determines that the patent provision (Section
3), the indemnity provision (Section 9) or other Section of the License
conflicts with the conditions of the GPLv2, you may retroactively and
prospectively choose to deem waived or otherwise exclude such Section(s) of
the License, but only in their entirety and only with respect to the Combined
Software.
+1
View File
@@ -48,6 +48,7 @@
# laptop pide horas y decenas de GB de `/home`.
name = "clang18"
version = "18.1.8"
license = "Apache-2.0 WITH LLVM-exception"
[source]
tarball = "https://github.com/llvm/llvm-project/releases/download/llvmorg-18.1.8/llvm-project-18.1.8.src.tar.xz"
+1
View File
@@ -39,6 +39,7 @@
# Sin programas (ffmpeg/ffplay/ffprobe) ni doc: kpipewire sólo consume las libs.
name = "ffmpeg"
version = "7.1"
license = "LGPL-2.1-or-later"
[source]
tarball = "https://ffmpeg.org/releases/ffmpeg-7.1.tar.xz"
+1
View File
@@ -11,6 +11,7 @@
# Worker GORDO (TYPE=ccx63): LLVM es de las compilaciones más pesadas; el link del DYLIB pide MUCHA RAM.
name = "llvm18"
version = "18.1.8"
license = "Apache-2.0 WITH LLVM-exception"
[source]
tarball = "https://github.com/llvm/llvm-project/releases/download/llvmorg-18.1.8/llvm-project-18.1.8.src.tar.xz"