diff options
-rw-r--r-- | Dockerfile | 2 | ||||
-rw-r--r-- | README | 11 | ||||
-rw-r--r-- | bin/dune | 8 | ||||
-rw-r--r-- | flake.nix | 9 |
4 files changed, 15 insertions, 15 deletions
@@ -22,4 +22,4 @@ RUN git config --global --add safe.directory /tmp/build RUN opam install . --update-invariant --yes COPY . . -CMD eval `opam env` && dune build --profile release +CMD eval `opam env` && dune build --profile release-static @@ -87,6 +87,10 @@ _________________ dune build + Optimized build with + + dune build --profile release + And to run: dune exec -- stitch @@ -95,11 +99,10 @@ _________________ dune exec -- stitch --help=groff - To prepare for release, we need to statically link the binary, which - unless you use a musl based distro it will not do out of the box. + When the system is built with Nix, it will be dynamically linked. - There is a Dockerfile included that prepares the release, use it with - podman: + To build a static release, There is a Dockerfile included that + compiles it with musl, use it with podman: podman pull docker.io/alpine:edge podman build . -t stitch:latest @@ -1,7 +1,7 @@ (executable (public_name stitch) (package stitch) - (flags (:standard -cclib -static -cclib -no-pie)) + (name main) (libraries stitch @@ -13,7 +13,11 @@ shexp.process lambda-term)) - +(env + (release-static + (ocamlc_flags (-g)) + (ocamlopt_flags (-g)) + (flags (:standard -cclib -static -cclib -no-pie -w -40)))) ; Rule to generate a man page for stitch (rule (target stitch.1) @@ -33,14 +33,7 @@ ${package} = prev.${package}.overrideAttrs (_: { # Prevent the ocaml dependencies from leaking into dependent environments doNixSupport = false; - buildInputs = [ - pkgs.glibc.static - pkgs.zlib.static - pkgs.binutils-unwrapped - pkgs.ocaml - pkgs.musl - pkgs.gcc - ]; + buildInputs = []; }); }; scope' = scope.overrideScope' overlay; |