SDK Bileşenleri
sudo apt install libfmt-dev
komutuyla
fmt isimli kütüphaneyi kurduğunuzda sisteminizde bulunacak versiyon ile
Fedora’da sudo dnf install libfmt-dev
komutu ile kurulan farklı olabilir. Dolayısıyla sizler yazılım geliştirirken
kodlarınızı indirip derleyen kişilerin uygun versiyonları temin etmesi gerekir.sdk/devbox.json
dosyasında hangi yazılımların kullanıldığı yazılıdır.
Distrobox: Docker gibi konteynır teknolojilerinden faydalanarak farklı GNU/Linux
dağıtımlarının istenilen versiyonunu yine kullandığınız GNU/Linux üzerinde çalıştırmayı sağlar.
(Örneğin Fedora 42 kullanarak Distrobox aracılığıyla Terminal üzerinen Ubuntu 22.04 kullanabilirsiniz)
Taskfile: Betik komutları çalıştırırken çoğu zaman .sh uzantılı script adı verilen
küçük uygulamalar kullanılmaktadır. Zaman içerisinde bu betik/shell script’lerinin artması ile karmaşıklık oluşmakta ve
kullanım zorluğu meydana gelmektedir. Bu gibi zorlukları azaltmak için Task (Go-Task/Task veya Taskfile olarak
adlandırılmaktadır) isimli araç kullanılmıştır ve çalıştırılacak scriptleri .yml uzantılı dosyalara küçük
parçalar halinde yazmaya, sınıflandırmaya, Terminal’den <tab>
tuşuna basıldığında otomatik
tamamlama gibi ek özellikleri kullanmaya imkan sağlar. sdk/Taskfile.yml
dosyasında
SDK’nın temel Taskfile dosyası bulunmaktadır.
Klasör | Açıklama |
---|---|
/build | Yocto, Debos ve diğer derleme araçlarının ürettiği bütün çıktıların bulunduğu klasördür |
/distro | Gemstone’nun Desktop, Minimal gibi farklı imajlarının nasıl derleneceğini belirten konfigürasyonların, özelleştirme dosyalarının bulunduğu klasördür |
/yocto | Gemstone projesine ait yocto çalışmalarıdır |
/src | Texas Instruments gibi çipleri içeren geliştirme kartına ait Firmware’lerin veya harici projelerin kaynak kodlarının bulunduğu klasördür |
Dosya | Açıklama |
---|---|
repos.yml | Gemstone SDK’sının ihtiyaç duyduğu bütün harici projelerin kaynak kodlarının git vb. repo adreslerini içeren dosyadır. vcstool ismi verilen bir uygulama ile fetch işlemi yapılarak kaynak kodlar bu klasöre indirilir |
distrobox.ini | Distrobox isimli araç ile Ubuntu 22.04 docker konteynırını oluşturan konfigürasyon dosyasıdır |
Taskfile.yml | Her klasörde bulunan taskfile dosyası task klasor:komut biçiminde betik komutları çalıştırmayı sağlar |
devbox.json | Devbox’ın konfigürasyon dosyasıdır |
/distro/distro.yaml | Gemstone Desktop, Minimal, Kiosk isimli imajları özelleştirerek oluşturan Debos’un konfigürasyon dosyasıdır |
setup.sh
komutunun çalıştırılması ile sisteminize kurulur. Akabinde terminalden klasör
içerisinde devbox shell
komutunu çalıştırdığınızda aktifleşerek devbox.json
dosyasında tanımlı
olan Distrobox, Taskfile, VSCTool, Qemu paketlerini indirerek sdk/.devbox
klasörüne kurar ve içerisindeki
yazılımları kullanabilmeniz için shell aktifleştirir.
Temel kullanım amacı farklı GNU/Linux dağıtımlarında aynı versiyona sahip yardımcı
uygulamaların, paketlerin ortak bir sistemle kurulması ve kullanılabilmesidir.
sdk/devbox.json
dosyasını inceleyiniz.task fetch yocto:build distro:build
gibi komutları
çalıştırdığınızda sdk/Taskfile.yml sdk/yocto/Taskfile.yml sdk/distro/Taskfile.yml
dosyalarında tanımlı
olan fonksiyonlar icra edilir.
sdk/distro/Taskfile.yml
dosyasını inceleyiniz.repos.yml
isimli dosyaya projeler tanımlanarak bunların düzenli
bir şekilde indirilebilmesini sağlamaktadır. vcs import . < repos.yml
komutu çalıştırıldığında
ilgili dosyada tanımlı olan projeleri otomatik indirmeyi veya varsa güncelleme yapılmasını sağlar.
Dockerfile
isimli bir dosya mevcuttur. Normal şartlarda bu dosyayı kullanarak Docker
aracılığıyla imaj oluşturularak içerisindeki sistem kullanılabilmektedir fakat Docker mimarisi gereği imaj
içerisinde değişiklik yapıldığında, dosya yüklenip silindiğinde bunları tekrar başlatma sonrası silmektedir
ve kalıcı dosya sistemi kullanımı zahmetlidir.
Distrobox ise Docker aracılığıyla oluşturulan imajların içerisine girdikten sonra değişiklik yapıp dosya yükledikten
sonra bunları kalıcı olarak saklanmasına imkan sağladığı için tercih edilmiştir.
sdk/distrobox.ini
ve sdk/Dockerfile
dosyalarını inceleyiniz..yaml
uzantılı
dosyalarla çok daha anlaşılabilir, sınıflandırılmış dağıtım oluşturmaya imkan sağlayan Go diliyle yazılmış bir projedir.
sdk/distro.yaml
dosyasını inceleyiniz.