gioser

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

TOML 1572Shell 203Rust 109Markdown 993728 Definiciones

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.

1505bfad7870c1893c878b4c093fec45745dd20c · por Sergio · (hace 1 mes) · padre a48885e14 · ver el árbol en este commit

Delta semántico

Ninguna definición cambió: el cambio es de texto, documentación o datos.

6 archivos · +21 −3

diff --git a/docs/licencias-evidencia.tsv b/docs/licencias-evidencia.tsv
index d32520c7..b700ad9d 100644
--- a/docs/licencias-evidencia.tsv
+++ b/docs/licencias-evidencia.tsv
@@ -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)
diff --git a/docs/licencias-pendientes.tsv b/docs/licencias-pendientes.tsv
index 5a868cce..72bbfa9f 100644
--- a/docs/licencias-pendientes.tsv
+++ b/docs/licencias-pendientes.tsv
@@ -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
diff --git a/licenses/LLVM-exception.txt b/licenses/LLVM-exception.txt
new file mode 100644
index 00000000..fa4b725a
--- /dev/null
+++ b/licenses/LLVM-exception.txt
@@ -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.
diff --git a/recipes/clang18.toml b/recipes/clang18.toml
index 961639ad..a3185482 100644
--- a/recipes/clang18.toml
+++ b/recipes/clang18.toml
@@ -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"
diff --git a/recipes/ffmpeg.toml b/recipes/ffmpeg.toml
index 2fa53f71..90a51a68 100644
--- a/recipes/ffmpeg.toml
+++ b/recipes/ffmpeg.toml
@@ -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"
diff --git a/recipes/llvm18.toml b/recipes/llvm18.toml
index b066c852..19e80c06 100644
--- a/recipes/llvm18.toml
+++ b/recipes/llvm18.toml
@@ -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"