From 1505bfad7870c1893c878b4c093fec45745dd20c Mon Sep 17 00:00:00 2001 From: Sergio Date: Sat, 5 Sep 2026 21:26:53 +0000 Subject: [PATCH] =?UTF-8?q?licencias:=20ffmpeg=20y=20LLVM=20salen=20del=20?= =?UTF-8?q?=C3=A1rbol=20=E2=80=94=20=C2=ABlo=20decide=20un=20humano=C2=BB?= =?UTF-8?q?=20era=20=C2=ABlo=20decide=20la=20receta=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- docs/licencias-evidencia.tsv | 3 +++ docs/licencias-pendientes.tsv | 3 --- licenses/LLVM-exception.txt | 15 +++++++++++++++ recipes/clang18.toml | 1 + recipes/ffmpeg.toml | 1 + recipes/llvm18.toml | 1 + 6 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 licenses/LLVM-exception.txt 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 @@ # paquetepor 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"