licencias: la cola de pendientes también se escribe — «lo que falta y por qué» es dato
Las 33 que quedan sólo existían en la salida del script, o sea que se perdían al cerrar la terminal. Para quien tiene que decidirlas —y son decisiones legales, no mecánicas— «qué falta y POR QUÉ no se puede afirmar» es tan dato como los veredictos. `docs/licencias-pendientes.tsv` las deja listadas con su motivo: cuáles traen varios ficheros de licencia que dicen cosas distintas (gmp, ffmpeg, clang18, llvm18, los `gi-*`), cuáles tienen un LICENSE que no reconozco y con qué frase empieza (fuse3, lsof), y cuáles no traen nada en el árbol (boost, pigz, sqlite-shared). Al revés que `licencias-evidencia.tsv`, ésta se REGENERA entera en cada corrida. No es un registro de lo que se probó sino una foto de lo que queda, y una pendiente resuelta tiene que DESAPARECER de acá —si se acumulara, la lista de trabajo mentiría hacia arriba para siempre.
This commit is contained in:
@@ -32,6 +32,7 @@ mtdev MIT COPYING (texto de MIT)
|
||||
nano GPL-3.0-or-later COPYING + concesión en NEWS: …Finally, nano is now licensed under the GNU GPL version 3 or later, and its documentat…
|
||||
nghttp2 MIT COPYING (texto de MIT)
|
||||
pcre2-shared BSD-3-Clause LICENCE.md (texto de BSD-3-Clause)
|
||||
perl-xml-parser Artistic-2.0 LICENSE es el texto íntegro de "The Artistic License 2.0" (8937 bytes, Copyright 1998-2000 Larry Wall y Clark Cooper)
|
||||
portal-probe MIT el repo es el propio hammer: LICENSE (MIT License) + Cargo.toml: license = "MIT"
|
||||
scdoc MIT COPYING (texto de MIT)
|
||||
seatd MIT meson.build: license: 'MIT'
|
||||
@@ -40,6 +41,5 @@ sourceview-hello LGPL-2.1-or-later meson.build: license: 'LGPL-2.1-or-later'
|
||||
speexdsp BSD-3-Clause COPYING (texto de BSD-3-Clause)
|
||||
tea MIT LICENSE (texto de MIT)
|
||||
tllist MIT meson.build: license: 'MIT'
|
||||
wpa_supplicant BSD-3-Clause COPYING dice "the project has chosen to use only the BSD license option for future distribution" y remite al README, que trae las 3 cláusulas clásicas (incl. "Neither the name(s) ... endorse or promote")
|
||||
when Artistic-1.0-Perl OR GPL-1.0-or-later LICENSE: "This free software is copyleft licensed under the same terms as Perl, or, at your option, under version 2 of the GPL license" — «los mismos términos que Perl» es esa disyunción, y la opción GPL-2 ya queda cubierta por GPL-1.0-or-later
|
||||
perl-xml-parser Artistic-2.0 LICENSE es el texto íntegro de "The Artistic License 2.0" (8937 bytes, Copyright 1998-2000 Larry Wall y Clark Cooper)
|
||||
wpa_supplicant BSD-3-Clause COPYING dice "the project has chosen to use only the BSD license option for future distribution" y remite al README, que trae las 3 cláusulas clásicas (incl. "Neither the name(s) ... endorse or promote")
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 19 and column 88.
|
@@ -0,0 +1,32 @@
|
||||
# licencias-pendientes.tsv — lo que NO alcanza para afirmar una licencia, y por qué.
|
||||
# Lo regenera entero scripts/licencias-fuente.py en cada corrida: es la foto de lo
|
||||
# que queda, no un registro. Los veredictos van en licencias-evidencia.tsv.
|
||||
#
|
||||
# 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
|
||||
gi-girepository-typelib 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
|
||||
gsd-schemas la raíz dice 2 licencias distintas (GPL-2.0 en COPYING, LGPL-2.1 en COPYING.LIB): la expresión la compone un humano
|
||||
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
|
||||
sqlite-shared sin COPYING ni declaración en el árbol
|
||||
vulkan-headers REUSE con varias licencias: Apache-2.0,MIT
|
||||
xz-shared la raíz dice 4 licencias distintas (0BSD en COPYING.0BSD, GPL-2.0 en COPYING.GPLv2, GPL-3.0 en COPYING.GPLv3, LGPL-2.1 en COPYING.LGPLv2.1): la expresión la co…
|
||||
amp fuente git (probá --fetch)
|
||||
cargo-binstall fuente git (probá --fetch)
|
||||
duplicacy fuente git (probá --fetch)
|
||||
gmp tarball no cacheado (probá --fetch)
|
||||
leptonica tarball no cacheado (probá --fetch)
|
||||
libcanberra tarball no cacheado (probá --fetch)
|
||||
tzdata fuente git (probá --fetch)
|
||||
waybackurls fuente git (probá --fetch)
|
||||
|
Can't render this file because it contains an unexpected character in line 10 and column 62.
|
@@ -57,6 +57,7 @@ import tomllib
|
||||
RAIZ = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
CACHE = os.path.join(RAIZ, "work", "tarballs")
|
||||
SALIDA = os.path.join(RAIZ, "docs", "licencias-evidencia.tsv")
|
||||
COLA = os.path.join(RAIZ, "docs", "licencias-pendientes.tsv")
|
||||
|
||||
# Cada licencia se reconoce por una frase que no aparece en las demás. El texto se NORMALIZA
|
||||
# (espacios colapsados) antes de buscar, porque el mismo texto viene con saltos de línea distintos
|
||||
@@ -545,7 +546,21 @@ def main():
|
||||
print(f"\n==> sin tarball que mirar: {len(sin_tar)}")
|
||||
for n, c in sin_tar:
|
||||
print(f" {n:28s} {c}")
|
||||
print(f"\n==> escrito {os.path.relpath(SALIDA, RAIZ)} · NADA se tocó en recipes/")
|
||||
# La cola de lo que NO se pudo afirmar también se escribe. Vivía sólo en la salida del script,
|
||||
# o sea que se perdía al cerrar la terminal: para el humano que tiene que decidir, «lo que falta
|
||||
# y por qué» es tan dato como los veredictos. Ésta SÍ se regenera entera en cada corrida —al
|
||||
# revés que la de evidencia, que acumula— porque es una foto de lo que queda, no un registro de
|
||||
# lo que se probó: una pendiente resuelta tiene que DESAPARECER de acá.
|
||||
with open(COLA, "w") as fh:
|
||||
fh.write("# licencias-pendientes.tsv — lo que NO alcanza para afirmar una licencia, y por qué.\n")
|
||||
fh.write("# Lo regenera entero scripts/licencias-fuente.py en cada corrida: es la foto de lo\n")
|
||||
fh.write("# que queda, no un registro. Los veredictos van en licencias-evidencia.tsv.\n")
|
||||
fh.write("#\n# paquete<TAB>por qué no se puede afirmar\n")
|
||||
for n, c in sorted(set(pendientes)) + sorted(set(sin_tar)):
|
||||
fh.write(f"{n}\t{una_linea(c)}\n")
|
||||
|
||||
print(f"\n==> escrito {os.path.relpath(SALIDA, RAIZ)} y {os.path.relpath(COLA, RAIZ)}"
|
||||
f" · NADA se tocó en recipes/")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
Reference in New Issue
Block a user