🛠️ Compilazione e sviluppo (make ed eggs tools build)
La struttura monorepo di penguins-eggs sincronizza in un unico albero il motore in C (oa/) e l'orchestratore in Go (coa/). Seguendo la filosofia "Eggs & Bananas", la compilazione richiede pochi strumenti essenziali e genera direttamente pacchetti nativi per la distribuzione ospite.
1. Il nucleo universale (la bottega dell'artigiano)
Indipendentemente dalla distribuzione Linux utilizzata, per compilare la Mente (Go) e il Braccio (C) sono necessari:
- Go Compiler (
1.25+): richiesto per compilare l'orchestratorecoa. - GCC e Make: richiesti per compilare il motore nativo
oa(con librerialibcrypt). - Git: necessario per ricavare automaticamente la versione CalVer dai tag del repository.
Requisiti specifici per la generazione dei pacchetti nativi
Per impacchettare il software nel formato nativo della tua distribuzione (make package / eggs tools build):
- Debian / Ubuntu / Devuan / Mint (
.deb):build-essential,devscripts,debhelper.sudo apt updatesudo apt install build-essential devscripts debhelper golang git - Arch Linux / Manjaro (
.pkg.tar.zst):base-devel(makepkg,fakeroot),pacman-contrib,go,git. - Fedora / openSUSE (
.rpm):rpm-build,gcc,make,golang,git(efedora-packager/dnf-plugins-coresu Fedora). - Alpine Linux (
.apk):build-base,abuild,go,git.
[!IMPORTANT] Nota per gli utenti Fedora (SELinux) Si raccomanda di impostare
SELINUX=permissivein/etc/selinux/config(oppure eseguiresudo setenforce 0) per evitare blocchi imprevisti durante le procedure di build e remastering.
2. Clonazione e compilazione rapida (Makefile)
Clona il repository ufficiale ed entra nella directory di progetto:
git clone https://github.com/pieroproietti/penguins-eggs.git
cd penguins-eggs
Dalla radice del progetto, ti basta eseguire:
make
Il Makefile principale esegue automaticamente tre target in sequenza (build_oa, build_coa, docs):
- Compila il motore C in
oa/e posiziona il binario in/tmp/oa-build-dir/oa; - Compila l'orchestratore Go in
coa/(iniettando la versione via-ldflags) e posiziona il binario in/tmp/oa-build-dir/coa; - Invoca
_gen_docsper generare la documentazione Markdown, le paginemane gli script di autocompletamento della shell (Bash, Zsh, Fish).
3. Generazione dei pacchetti nativi (make package)
Invece di copiare manualmente file sparsi nel file system con sudo make install, l'approccio artigianale di penguins-eggs genera un pacchetto nativo pulito pronto per essere installato e tracciato dal gestore pacchetti della tua distribuzione:
make clean package
Dietro le quinte, il target package richiama il costruttore integrato (coa tools build):
- Rilevamento Agnostico (
ID_LIKE): identifica la famiglia della distribuzione ospite leggendo/etc/os-release, senza bisogno di file statici per le derivate. - Generazione Dinamica: costruisce al volo la directory
debian/, il filePKGBUILD, lo.specRPM o l'APKBUILDsu misura per l'ambiente rilevato e compila il pacchetto nella radice del progetto.
[!CAUTION] Mai usare
sudodurante la build! Non eseguire MAImake packageoeggs tools buildconsudo: la creazione dei pacchetti deve avvenire sempre come utente ordinario per non inquinare i permessi dell'albero sorgente e rispettare le policy di sicurezza dimakepkg/abuild/dpkg-buildpackage. Usasudosolo nel passo successivo, quando installi il pacchetto.deb,.rpmo.pkg.tar.zstgenerato!