Skip to main content
Deutsch  •  English  •  Español  •  Français  •  Italiano  •  Polska  •  Portuguese  •  Български  •  Русский  •  Українська  •  やまと  •  中国  •  فارsi

🛠️ 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'orchestratore coa.
  • GCC e Make: richiesti per compilare il motore nativo oa (con libreria libcrypt).
  • 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 update
    sudo 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 (e fedora-packager / dnf-plugins-core su Fedora).
  • Alpine Linux (.apk): build-base, abuild, go, git.

[!IMPORTANT] Nota per gli utenti Fedora (SELinux) Si raccomanda di impostare SELINUX=permissive in /etc/selinux/config (oppure eseguire sudo 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):

  1. Compila il motore C in oa/ e posiziona il binario in /tmp/oa-build-dir/oa;
  2. Compila l'orchestratore Go in coa/ (iniettando la versione via -ldflags) e posiziona il binario in /tmp/oa-build-dir/coa;
  3. Invoca _gen_docs per generare la documentazione Markdown, le pagine man e 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):

  1. Rilevamento Agnostico (ID_LIKE): identifica la famiglia della distribuzione ospite leggendo /etc/os-release, senza bisogno di file statici per le derivate.
  2. Generazione Dinamica: costruisce al volo la directory debian/, il file PKGBUILD, lo .spec RPM o l'APKBUILD su misura per l'ambiente rilevato e compila il pacchetto nella radice del progetto.

[!CAUTION] Mai usare sudo durante la build! Non eseguire MAI make package o eggs tools build con sudo: la creazione dei pacchetti deve avvenire sempre come utente ordinario per non inquinare i permessi dell'albero sorgente e rispettare le policy di sicurezza di makepkg / abuild / dpkg-buildpackage. Usa sudo solo nel passo successivo, quando installi il pacchetto .deb, .rpm o .pkg.tar.zst generato!