Yeni Paket Derleme
Sistemi
Ilker Mustafa Manap
Scania, Stokholm
ilker.manap@scania.com
Konular
- Eski yapı, eksiklikleri
- Yeni yapı, sağladıkları
Eski Yapi
- Eski, ama hala kullanımda, 1.2 sürümü için kullanılıyor.
- Tek sunucu üzerinde, bütün paketler derlenmeye çalışılıyor.
- Paket geliştiriciler, kendi sistemlerinde de paket oluşturuyorlar.
- Basit bir paketin derlenmesi için bile, bütün system.devel grubu kurulmak zorunda.
Eski Yapı, sorunlar...
- Tek sunucunun derleme hızı ile sınırlıyız.
- Paketçilerin kendi sistemlerinde oluşturdukları paketlerde uyum sorunu oluyor.
- Paketçinin sisteminde bulunan kütüphanelerle yeni paket oluşuyor.
- Eğer denemek için kendi depomuzda bulunmayan bir kütüphane sürümü yüklü ise, paketin içindeki dosyalar da o kütüphane ile derlenmiş oluyor.
- Sonuç, sistemle uyumsuz paket.
Eski Yapı, sorunlar...
- Eski farm bilgisayarında tüm paketler kurulu oluyor.
- Paketçide farm bilgisayarındaki paketlerin hepsi olmuyor.
- Paketçi ile farm bilgisayarı hiçbir zaman özdeş olmuyor.
- Paketlerin bağımlılık bilgileri yetersiz.
- System.devel grubunun tümünün kurulması, bağımlılıkların tespitini güçleştiriyor.
- Bir paket değiştiğinde, onun hangi paketleri etkilediğini bulmak zorlaşıyor.
Yeni Sistem
- Eski sistemin yetersiz kaldığı noktaları kapatacak.
- Steril derleme ortamı.
- Bağımlılıkların tam tespiti.
- Github ile entegrasyon.
- Dağıtık derleme sistemi
Yeni Sistem, Steril Derleme Ortamı
- 2.0 sürümüne baştan başladık.
- Chroot içinde pisi çalıştırma ve paket derleme.
- 75 paketle pisi çalışır hale gelebiliyor, 183 MB.
- Ek 21 paketle derleme yapabilecek duruma geliyor.
- İlerleyen aşamada, docker kullanmaya başladık.
- ertugerata/pisi-chroot-base
- ertugerata/pisi-chroot-farm
Yeni Sistem, Bagımlılıklar
- Her paket için bütün bağımlılıkların tespiti
- acl derlemek için 170 tane başka devel paketi gerekmiyor. Eski yapıda gerekiyor.
- Her bir paket tek tek ele alınıp bağımlılıkları bulunuyor.
Yeni Sistem, Github Entegrasyonu...
- Veriler veritabanına aktarılıyor.
- Derlenmesi gereken paketler tespit edilip derleme kuyruğuna ekleniyor.
- Farklı paket grupları için farklı docker imajları kullanmak mümkün.
- Farklı mimariler için derleme imkanı (i386, arm, vs.)
- Gönüllüler derliyor.
Dağıtık Derleme Sistemi, Gönüllüler
- Gönüllünün özel bir şey yapması gerekmiyor.
- Tek uygulama, derleme sisteminden gerekli bilgileri alıyor.
- Hangi docker imajı kullanılacak?
- Hangi paket derlenecek?
- kernel gerekiyor mu?
- Kullanıcının sistemi üzerinde docker imajı içinde (steril ortamda) derleme gerçekleşir.
- Paketler ve log dosyaları geri gönderilir.
Dağıtık Derleme Sistemi, Merkez
- Merkezde, hangi paketin hangi sırayla derleneceğini belirleyeceğiz. (çalışma devam ediyor)
- Eksik bağımlılığı olan paketler bekletilir.
- Derlenen paketler otomatik olarak test deposuna aktarılır.
- Otomatik olarak yapılabilecek testler konusunda çalışıyoruz.
Sonuç
- Paket hazırlama aşamalarında, geliştiriciye esneklik kazandırdık.
- Sistemi kıracak paket oluşturma ihtimali çok azaldı.
- Çok sayıda paket hızlıca derlenebiliyor.
- Farklı mimarilere de destek verebilecek esnek bir altyapı hazır.
Pisilinux Derleme Sistemi
By Ilker Manap
Pisilinux Derleme Sistemi
Pisilinux Derleme Sistemi
- 696