Status Bangun:
Repositori ini berisi resep untuk membangun binari untuk paket Julia menggunakan BinaryBuilder.jl.
Untuk menyumbangkan resep baru, Anda juga bisa
BinaryBuilder.run_wizard()
, yang secara otomatis akan membuka permintaan tarik ke repositori ini setelah bangunan yang berhasil untuk semua platform yang diminta Yggdrasil membangun tarball menggunakan versi master
BinaryBuilder.jl, yang membutuhkan julia 1.3.0 atau versi yang lebih baru. Perhatikan bahwa versi BinaryBuilder.jl ini memiliki beberapa perbedaan dibandingkan dengan V0.1.4 dan pembangun yang dihasilkan sedikit berbeda. Anda dipersilakan untuk menyumbangkan pembangun yang ditulis untuk BinaryBuilder.jl v0.1.4, tetapi mereka mungkin akan membutuhkan penyesuaian kecil.
Buildkite CI digunakan untuk menguji bahwa pembangun dapat berhasil menghasilkan tarball.
Jika Anda lebih suka menguji manual buildscript manual Anda sebelum membuka permintaan tarik, kami sarankan untuk menginstal BinaryBuilder.jl
di Julia 1.3 atau rilis berikut dan menjalankan julia --color=yes build_tarballs.jl --verbose --debug
secara lokal. Pada macOS, Anda harus menginstal docker
agar ini berfungsi.
Untuk memicu build versi baru dari paket hulu cukup buka permintaan tarik untuk memperbarui pembangun seperlunya. Ini biasanya bermuara untuk hanya memperbarui nomor versi dan sumber (misalnya, URL dan hash untuk arsip, atau revisi untuk repositori git), tetapi dalam beberapa kasus lebih banyak perubahan mungkin diperlukan.
Versi terakhir BinaryBuilder memanfaatkan pengiriman sistem Artifacts
di Julia 1.3. Ini berarti bahwa BinaryBuilder tidak lagi menghasilkan file build.jl
yang ditempatkan ke dalam deps/
Folder Paket Julia Anda, tetapi sebaliknya menghasilkan seluruh paket Julia (dikenal secara bahasa sehari -hari sebagai paket "JLL") yang ditempatkan di dalam organisasi Juliabinarywrappers. Permintaan tarik yang digabungkan ke yggdrasil menghasilkan versi baru dari paket pembungkus ini yang dihasilkan, diunggah dan terdaftar, memungkinkan klien Anda kode Julia untuk hanya using LibFoo_jll
untuk mendapatkan langkah binari Anda tanpa perlu langkah Pkg.build()
. (Ini, tentu saja, hanya akan menjadi kasus untuk Julia 1.3+).
Kami mendorong pengembang Julia untuk menggunakan paket JLL untuk perpustakaan mereka. Baca dokumen BinaryBuilder untuk mempelajari cara menggunakannya.
Berikut adalah beberapa contoh permintaan tarik paket Julia yang beralih untuk menggunakan paket JLL untuk menyediakan binari prebuilt kepada pengguna:
Anda dapat membaca lebih lanjut tentang sistem Artifacts
dan bagaimana penting untuk reproduktifitas dalam posting ini di blog Julia "PKG + BinaryBuilder - The Next Generation".
Kami harap kami meyakinkan Anda tentang mengapa penting untuk beralih ke paket JLL. Namun, jika Anda benar -benar perlu mendukung Julia v1.2 atau versi sebelumnya, Anda harus terus menggunakan BinaryProvider.jl. Seperti yang dijelaskan di bagian sebelumnya, file build.jl
tidak dihasilkan setelah build lagi karena itu tidak digunakan untuk paket JLL, sebaliknya Anda perlu menghasilkannya sendiri: di sutradara top yggdrasil ada skrip yang harus dilakukan Ini: generate_buildjl.jl
. Dibutuhkan tiga argumen posisi:
build_tarballs.jl
owner/name
repositori tempat tarball telah diunggah. Jika dihilangkan, ini default untuk JuliaBinaryWrappers/BuilderName_jll.jl
Misalnya, untuk mendapatkan file build.jl
untuk versi terbaru Zlib Anda dapat menjalankan perintah berikut:
julia --color=yes generate_buildjl.jl Z/Zlib/build_tarballs.jl
Jika sebaliknya Anda ingin mendapatkan file build_tarballs.jl
untuk tag bernama Zlib-V1.2.11+6 Anda harus menjalankan perintah
julia --color=yes generate_buildjl.jl Z/Zlib/build_tarballs.jl JuliaBinaryWrappers/Zlib_jll.jl Zlib-v1.2.11+6
Catatan : Anda harus menambahkan prefix
secara manual sebagai argumen pertama untuk semua konstruktor Product
dalam file build.jl
yang dihasilkan. Ini diperlukan karena sintaksis antara BinaryBuilder v0.2+
dan BinaryProvider
telah menyimpang.
Ingatlah bahwa Anda juga akan membutuhkan file build.jl
untuk semua dependensi langsung dan tidak langsung.
Berikut adalah beberapa contoh paket menggunakan sistem ini untuk menginstal perpustakaan mereka:
build.jl
skrip dengan BinaryProvider.jl
untuk rilis sebelumnya.