حالة البناء:
يحتوي هذا المستودع على وصفات لبناء الثنائيات لحزم جوليا باستخدام BinaryBuilder.jl.
للمساهمة في وصفة جديدة ، يمكنك أيضًا
BinaryBuilder.run_wizard()
، والذي سيفتح تلقائيًا طلب سحب لهذا المستودع بعد بناء ناجح لجميع المنصات المطلوبة يبني Yggdrasil كرات القطران باستخدام الإصدار master
من BinaryBuilder.jl ، والذي يتطلب إصدارات Julia 1.3.0 أو الأحدث. لاحظ أن إصدار BinaryBuilder.jl يحتوي على بعض الاختلافات مقارنة بـ V0.1.4 وأن البنائين الذين تم إنشاؤهم مختلفون قليلاً. اهلا وسهلا بكم في المساهمة بناة المكتوبة لـ BinaryBuilder.jl v0.1.4 ، لكن من المحتمل أن يحتاجوا إلى تعديلات طفيفة.
يتم استخدام BuildKite CI لاختبار أن البناة يمكنهم إنتاج كرات القطران بنجاح.
إذا كنت تفضل اختبار BuildScript اليدوي قبل فتح طلب السحب ، فإننا نقترح تثبيت BinaryBuilder.jl
على Julia 1.3 أو أي إصدار يلي وتشغيل julia --color=yes build_tarballs.jl --verbose --debug
محليًا. على MacOS ، ستحتاج إلى تثبيت docker
لهذا العمل.
لتشغيل بناء إصدار جديد من حزمة المنبع ، ببساطة افتح طلب سحب لتحديث المنشئ حسب الضرورة. عادةً ما يتلخص هذا في تحديث رقم الإصدار والمصدر فقط (على سبيل المثال ، URL و Hash لأرشيف ، أو مراجعة مستودع GIT) ، ولكن في بعض الحالات قد تكون هناك حاجة إلى مزيد من التغييرات.
تستفيد الإصدارات الأخيرة من BinaryBuilder من شحن نظام Artifacts
في جوليا 1.3. هذا يعني أن BinaryBuilder لم يعد ينشئ ملفات build.jl
التي يتم وضعها في deps/
مجلد حزمة Julia الخاص بك ، ولكن بدلاً من ذلك يولد حزم Julia بالكامل (المعروفة بالعامية باسم "JLL") التي يتم وضعها داخل منظمة JuliabinaryWrappers. تؤدي طلبات السحب المدمجة إلى yggdrasil إلى إصدارات جديدة من حزم التفاف هذه التي يتم إنشاؤها وتحميلها وتسجيلها ، مما يتيح لك رمز العميل Julia للاستدعاء ببساطة using LibFoo_jll
للحصول على ثنائيات الخاصة بك دون الحاجة إلى خطوة Pkg.build()
. (سيكون هذا ، بالطبع ، هو الحال فقط لجوليا 1.3+).
نشجع مطوري جوليا على استخدام حزم JLL لمكتباتهم. اقرأ documention of BinaryBuilder لمعرفة كيفية استخدامها.
فيما يلي بعض الأمثلة على طلبات سحب حزم جوليا التي تتحول إلى استخدام حزمة JLL لتوفير الثنائيات المسبقة للمستخدمين:
يمكنك قراءة المزيد حول نظام Artifacts
وكيف مهم للاستنساخ في هذا المنشور على مدونة جوليا "PKG + BinaryBuilder - الجيل القادم".
نأمل أن نقنعك بالسبب في أنه من المهم التبديل إلى حزم JLL. ومع ذلك ، إذا كنت بحاجة حقًا إلى دعم Julia v1.2 أو الإصدارات السابقة ، فيجب عليك الاستمرار في استخدام binaryprovider.jl. كما هو موضح في القسم السابق ، لم يتم إنشاء ملف build.jl
بعد الإنشاء بعد الآن لأنه لم يتم استخدامه في حزم JLL ، بدلاً من ذلك ستحتاج إلى توليده بنفسك: في الدليل الأعلى لـ Yggdrasil ، يوجد نص للقيام به هذا: generate_buildjl.jl
. يستغرق ثلاث حجج موضعية:
build_tarballs.jl
owner/name
المستودع حيث تم تحميل كرات القطران. إذا تم حذفه ، فإن هذا الافتراضيات لـ JuliaBinaryWrappers/BuilderName_jll.jl
على سبيل المثال ، للحصول على ملف build.jl
لأحدث إصدار من Zlib ، يمكنك تشغيل الأمر التالي:
julia --color=yes generate_buildjl.jl Z/Zlib/build_tarballs.jl
إذا كنت ترغب بدلاً من ذلك في الحصول على ملف build_tarballs.jl
للعلامة المسماة Zlib-V1.2.11+6 عليك تشغيل الأمر
julia --color=yes generate_buildjl.jl Z/Zlib/build_tarballs.jl JuliaBinaryWrappers/Zlib_jll.jl Zlib-v1.2.11+6
ملاحظة : يجب عليك إضافة prefix
يدويًا كوسيطة أول لجميع منشئي Product
في ملفات build.jl
التي تم إنشاؤها. هذا ضروري لأن بناء الجملة بين BinaryBuilder v0.2+
و BinaryProvider
تباعدت.
تذكر أنك ستحتاج أيضًا إلى ملفات build.jl
لجميع التبعيات المباشرة وغير المباشرة.
فيما يلي بعض الأمثلة على الحزم باستخدام هذا النظام لتثبيت مكتباتها:
build.jl
Scripts مع BinaryProvider.jl
للإصدارات السابقة.