Estado de construcción:
Este repositorio contiene recetas para construir binarios para paquetes de Julia utilizando binaryBuilder.jl.
Para contribuir con una nueva receta, puede
BinaryBuilder.run_wizard()
, que abrirá automáticamente una solicitud de extracción a este repositorio después de una compilación exitosa para todas las plataformas solicitadas Yggdrasil construye los tarballs utilizando la versión master
de BinaryBuilder.jl, que requiere versiones Julia 1.3.0 o posteriores. Tenga en cuenta que esta versión binarybuilder.jl tiene algunas diferencias en comparación con V0.1.4 y los constructores generados son ligeramente diferentes. Puede contribuir a los constructores escritos para BinaryBuilder.jl V0.1.4, pero es probable que necesiten ajustes menores.
Buildkite CI se usa para probar que los constructores pueden producir con éxito los tarballs.
Si prefiere probar su buildscript manual antes de abrir la solicitud de extracción, sugerimos instalar BinaryBuilder.jl
en Julia 1.3 o cualquier lanzamiento y ejecución julia --color=yes build_tarballs.jl --verbose --debug
localmente. En MacOS, deberá tener docker
instalado para que esto funcione.
Para activar la compilación de una nueva versión del paquete ascendente, simplemente abra una solicitud de extracción para actualizar el constructor según sea necesario. Esto generalmente se reduce solo para actualizar el número de versión y la fuente (por ejemplo, URL y hash para un archivo, o la revisión para un repositorio GIT), pero en algunos casos se pueden necesitar más cambios.
Las últimas versiones de BinaryBuilder utilizan el envío del sistema Artifacts
en Julia 1.3. Esto significa que BinaryBuilder ya no genera archivos build.jl
que se colocan en la carpeta deps/
de su paquete Julia, sino que genera paquetes de Julia enteros (conocidos coloquialmente como paquetes "jll") que se colocan dentro de la organización JuliAbinaryWrappers. Las solicitudes de extracción fusionada a Yggdrasil dan como resultado nuevas versiones de estos paquetes de envoltorio generados, cargados y registrados, lo que permite que el código Julia de su cliente simplemente invoque using LibFoo_jll
para obtener un paso de sus binarios sin necesidad de un paso Pkg.build()
. (Este, por supuesto, será el caso de Julia 1.3+).
Alentamos a los desarrolladores de Julia a usar paquetes JLL para sus bibliotecas. Lea la documentación de BinaryBuilder para aprender a usarlos.
Aquí hay algunos ejemplos de solicitudes de extracción de paquetes Julia que cambian a usar el paquete JLL para proporcionar los binarios prebuilados a los usuarios:
Puede leer más sobre el sistema Artifacts
y cómo es importante para la reproducibilidad en esta publicación en el blog de Julia "PKG + BinaryBuilder - la próxima generación".
Esperamos que te convencamos de por qué es importante cambiar a los paquetes JLL. Sin embargo, si realmente necesita apoyar a Julia V1.2 o versiones anteriores, debe seguir usando BinaryProvider.jl. Como se explica en la sección anterior, un archivo build.jl
ya no se genera después de la compilación, ya que no se usa para los paquetes JLL, en su lugar, necesitaría generarlo usted mismo: en el directorio superior de Yggdrasil hay un script que hacer esto: generate_buildjl.jl
. Se necesitan tres argumentos posicionales:
build_tarballs.jl
owner/name
del repositorio donde se han subido los tarballs. Si se omite, este valor predeterminado a JuliaBinaryWrappers/BuilderName_jll.jl
Por ejemplo, para obtener el archivo build.jl
para la última versión de ZLIB, puede ejecutar el siguiente comando:
julia --color=yes generate_buildjl.jl Z/Zlib/build_tarballs.jl
Si, en su lugar, desea obtener el archivo build_tarballs.jl
para la etiqueta llamada zlib-v1.2.11+6 debe ejecutar el comando
julia --color=yes generate_buildjl.jl Z/Zlib/build_tarballs.jl JuliaBinaryWrappers/Zlib_jll.jl Zlib-v1.2.11+6
Nota : Debe agregar manualmente prefix
como primer argumento a todos los constructores Product
en los archivos build.jl
generados. Esto es necesario porque la sintaxis entre BinaryBuilder v0.2+
y BinaryProvider
se ha divergido.
Recuerde que también necesitará los archivos build.jl
para todas las dependencias directas e indirectas.
Aquí hay algunos ejemplos de paquetes que usan este sistema para instalar sus bibliotecas:
build.jl
scripts con BinaryProvider.jl
para lanzamientos anteriores.