docker run --name i3_workspaces -ti ocaml/opam2:alpine sh
sudo apk add m4 pcre-dev
git clone https://github.com/Chimrod/i3_workspaces.git
cd i3_workspaces
opam install . --deps-only --yes
dune build
Ensuite, dans ~/i3_workspaces/_build/default/src, se trouvent les deux exe i3_workspaces.exe et i3dot.exe, pour les avoir en local sur le pc, il suffit de faire :
docker cp i3_workspaces:/home/opam/i3_workspaces/_build/default/src/i3_workspaces.exe .
docker cp i3_workspaces:/home/opam/i3_workspaces/_build/default/src/i3dot.exe .
mkdir -p i3_workspaces/opt/i3_workspaces
mv i3_workspaces.exe i3_workspaces/opt/i3_workspaces
mv i3dot.exe i3_workspaces/opt/i3_workspaces
fpm -s dir -t deb -n i3-workspaces -v 0.2 -C ./i3_workspaces
Du coup, tu obtiens un fichier i3-workspaces_0.2_amd64.deb que tu peux installer n'importe où sur une base DebiaN. À noter qu'il est aussi possible de distribuer une archive, un RPM, etc.
Enfin pour les fichiers générés, je te conseillerais de créer une release sur Github, cela te permet que les gens accèdent aux bons fichiers en bonne version et tu n'as pas à gérer l'hosting.
# C'est cadeau
Posté par Atem18 . En réponse au message Distribuer un binaire. Évalué à 7.
Salut, j'ai pris un peu de temps et j'ai regardé comment créer un binaire static en Ocaml.
La seule chose que j'ai modifié est ton fichier src/dune où j'ai rajouté la ligne
(flags (-ccopt -static))
(libraries
configuration
common
handlers
lwt
)
(flags (-ccopt -static))
(preprocess (pps lwt_ppx ppx_deriving_argparse))
Les commandes sont les suivantes:
docker run --name i3_workspaces -ti ocaml/opam2:alpine sh
sudo apk add m4 pcre-dev
git clone https://github.com/Chimrod/i3_workspaces.git
cd i3_workspaces
opam install . --deps-only --yes
dune build
Ensuite, dans ~/i3_workspaces/_build/default/src, se trouvent les deux exe i3_workspaces.exe et i3dot.exe, pour les avoir en local sur le pc, il suffit de faire :
docker cp i3_workspaces:/home/opam/i3_workspaces/_build/default/src/i3_workspaces.exe .
docker cp i3_workspaces:/home/opam/i3_workspaces/_build/default/src/i3dot.exe .
Puis les deux fichiers peuvent être packagés avec FPM : https://fpm.readthedocs.io/en/latest/index.html
mkdir -p i3_workspaces/opt/i3_workspaces
mv i3_workspaces.exe i3_workspaces/opt/i3_workspaces
mv i3dot.exe i3_workspaces/opt/i3_workspaces
fpm -s dir -t deb -n i3-workspaces -v 0.2 -C ./i3_workspaces
Du coup, tu obtiens un fichier i3-workspaces_0.2_amd64.deb que tu peux installer n'importe où sur une base DebiaN. À noter qu'il est aussi possible de distribuer une archive, un RPM, etc.
Enfin pour les fichiers générés, je te conseillerais de créer une release sur Github, cela te permet que les gens accèdent aux bons fichiers en bonne version et tu n'as pas à gérer l'hosting.
Exemple: https://github.com/ocaml/ocaml/releases/tag/4.11.1
Doc: https://docs.github.com/en/free-pro-team@latest/github/administering-a-repository/managing-releases-in-a-repository
Enfin, si tu veux, on peut automatiser les étapes ci-dessus avec Github actions, CircleCI, TravisCI, etc.