Un pacchetto generato dipende dal runtime di lungo della release che lo ha generato, che la
libreria di supporto del linguaggio (oppure, per C, il progetto CMake) scarica e verifica. Può
essere pubblicato come qualsiasi pacchetto del suo linguaggio. Generalo con una release di
lungo (non con una distribuzione locale, i cui
pacchetti si compilano solo sulla macchina che li ha prodotti), e rigeneralo quando il progetto
Lean o lungo cambiano; la directory di output contiene build-info.json, che registra da che
cosa è stata generata.
Go
Genera in una directory del tuo modulo e fanne il commit:
lungo generate --go_out=internal/geometry --go_opt=package=geometry
go mod tidy # aggiunge github.com/machinefabric/lungo-go alla versione della release
Gli utenti del tuo modulo hanno bisogno di cgo e di un compilatore C, nient’altro. Mantieni
lungo-go alla versione con cui il pacchetto è stato generato: il pacchetto non compila con
un’altra.
Python
lungo generate --python_out=geometry-py --python_opt=distribution=geometry,version=1.2.0
python -m build --wheel geometry-py
La wheel è py3-none-<platform> (una per piattaforma, per ogni Python 3): costruiscila su
ogni piattaforma per cui pubblichi, per esempio con cibuildwheel. Su Linux, riparala con
auditwheel repair --exclude liblungo.so: il runtime viene da lungo-py, da cui la wheel
dipende. Su macOS, anche delocate deve escludere liblungo.dylib. Pubblica le wheel come al
solito (twine upload, oppure la pubblicazione fidata).
Swift
Genera nel suo repository (o in una sua directory) e crea un tag:
lungo generate --swift_out=GeometryKit --swift_opt=module=Geometry
Le applicazioni lo aggiungono con .package(url: …, exact: …) e usano il prodotto
Geometry; il codice Objective-C usa il prodotto GeometryProgram. La sua dipendenza da
lungo-swift porta il runtime come XCFramework per macOS, iOS e il simulatore iOS.
npm
lungo generate --ts_out=geometry-js --ts_opt=package=@acme/geometry,version=1.2.0
cd geometry-js && npm publish --access public
Il pacchetto contiene program.wasm e funziona su Node.js e nei browser (i bundler devono
copiare program.wasm accanto a index.js, oppure l’applicazione passa il modulo a
load({ module })). program.wasm è un prodotto della build, collegato quando il pacchetto
viene generato: pubblica dalla directory scritta da lungo generate e non mettere il modulo
sotto commit (vedi prodotti di piattaforma).
C e C++
Distribuisci la directory generata (per esempio come submodule Git o archivio dei sorgenti) e
includila con add_subdirectory; il suo progetto CMake scarica e verifica il runtime. Le build
offline installano il runtime (lungo runtime fetch, oppure l’archivio della release) e
configurano con -D<ID>_FETCH_LUNGO=OFF -DCMAKE_PREFIX_PATH=<runtime>.