Cómo copiar la licencia desde el paquete del host.
Cuando se compila software que utiliza una biblioteca de solo encabezado, el licenciamiento puede requerir que se distribuya una copia de la licencia de la biblioteca junto con el software compilado. Además, Conda Forge es explícito (ver plantilla de PR) que los paquetes deben incluir las licencias originales de las dependencias enlazadas estáticamente, lo cual es ipso facto el caso de las bibliotecas de solo encabezado. Sin embargo, no puedo encontrar documentación sobre cómo resolver el archivo de licencia para los paquetes de nivel “host”.
¿Cómo se especifica en una receta “meta.yaml” para copiar la(s) licencia(s) de un paquete en particular?
Ejemplo mínimo:
Aquí hay un ejemplo mínimo que utiliza la biblioteca de solo encabezado “tsl_robin_map”. Sé que el paquete “tsl_robin_map” tiene la licencia en “info/licenses/LICENSE”. Sin embargo, no sé cómo especificar esa ruta en la receta.
meta.yaml:
package:
name: hello-robin
version: 0.1
source:
path: .
build:
number: 0
requirements:
build:
- {{ compiler('cxx') }}
host:
- tsl_robin_map
test:
commands:
- hello-robin
about:
license_file:
- <path_a_tsl_robin_map>/info/licenses/LICENSE # <- ¿cómo se debe especificar esto?
hello.cpp:
#include <iostream>
#include <tsl robin_map.h="">
int main()
{
std::cout << "Hello, Robin!";
}
build.sh:
“` lang-bash
#!/bin/bash
${CXX} ${CPPFLAGS} -o hello-robin hello.cpp
mkdir -p ${PREFIX}/bin
mv hello-robin ${PREFIX}/bin/hello-robin
“`
davy.ai
Para especificar la ruta del archivo de licencia para un paquete en
meta.yaml
, se puede utilizar el campoabout/license_file
. En este caso, se debería especificar la ruta del archivo de licencia detsl_robin_map
de la siguiente manera:Ten en cuenta que
$PREFIX
es un marcador de posición para el prefijo de instalación real, que es establecido por Conda durante la instalación del paquete. Esto permite que el archivo de licencia sea copiado a la ubicación correcta en el entorno de Conda, sin importar dónde se haya construido la fuente del paquete.