diff --git a/.github/workflows/esperanto.yml b/.github/workflows/esperanto.yml index 51977f1..ed72fad 100644 --- a/.github/workflows/esperanto.yml +++ b/.github/workflows/esperanto.yml @@ -5,20 +5,20 @@ jobs: strategy: matrix: operating-system: [ubuntu-latest] - ocaml-version: ["4.14.0"] + ocaml-version: ["4.14.1"] runs-on: ${{ matrix.operating-system }} steps: - uses: actions/checkout@v2 - uses: ocaml/setup-ocaml@v2 with: ocaml-compiler: ${{ matrix.ocaml-version }} + opam-disable-sandboxing: true # See jart/cosmopolitan#3 - name: Fix binfmt and Cosmopolitan run: sudo sh -c "echo ':APE:M::MZqFpD::/bin/sh:' >/proc/sys/fs/binfmt_misc/register" - name: Pin & Install workflows run: | - opam install esperanto.0.0.4 - opam install ocamlfind opam-monorepo + opam install ocamlfind opam-monorepo x86_64-esperanto aarch64-esperanto opam repo add upstream git+https://github.com/ocaml/opam-repository.git opam repo add dune-universe git+https://github.com/dune-universe/opam-overlays.git opam repo add mirage-universe git+https://github.com/dune-universe/mirage-opam-overlays.git @@ -26,9 +26,9 @@ jobs: run: | env OPAMVAR_monorepo='opam-monorepo' opam monorepo lock --require-cross-compile --build-only --ocaml-version ${{ matrix.ocaml-version }} com env OPAMVAR_monorepo='opam-monorepo' opam monorepo pull - opam exec -- dune build -x esperanto -p bob bin/bob.exe - objcopy -S -O binary _build/default.esperanto/bin/bob.exe bob.com - strip bob.com + opam exec -- dune build -x x86_64_esperanto -p bob bin/bob.exe + opam exec -- dune build -x aarch64_esperanto -p bob bin/bob.exe + ./link.sh - name: Upload Artifact uses: actions/upload-artifact@v3 with: diff --git a/com.opam b/com.opam index a0f98ad..f750b27 100644 --- a/com.opam +++ b/com.opam @@ -9,42 +9,45 @@ doc: "https://dinosaure.github.io/bob/" license: "MIT" synopsis: "A peer-to-peer file-transfer tool" -build: [ "dune" "build" "-x" "esperanto" "-p" name "bin/bob.exe" "-j" jobs ] -install: [ - [ "objcopy" "-S" "-O" "binary" "_build/default.esperanto/bin/bob.exe" "%{bin}%/bob.com" ] +build: [ + [ "dune" "build" "-x" "x86_64-esperanto" "-p" name "bin/bob.exe" "-j" jobs ] + [ "dune" "build" "-x" "aarch64-esperanto" "-p" name "bin/bob.exe" "-j" jobs ] + [ "sh" "link.sh" ] ] run-test: [ "dune" "runtest" "-p" name "-j" jobs ] depends: [ - "ocaml" { build & >= "4.13.0" & < "5.0.0" } - "dune" { >= "3.3.0" } - "fmt" { >= "0.9.0" } - "hxd" { >= "0.3.2" } - "logs" { >= "0.7.0" } - "bheap" { >= "2.0.0" } - "base64" { >= "3.5.0" } - "decompress" { >= "1.5.1" } - "digestif" { >= "1.1.3" } - "opam-monorepo" { build } - "esperanto" { build } - "ocamlfind" { build } + "ocaml" { build & >= "4.13.0" & < "5.0.0" } + "dune" { >= "3.3.0" } + "fmt" { >= "0.9.0" } + "hxd" { >= "0.3.2" } + "logs" { >= "0.7.0" } + "bheap" { >= "2.0.0" } + "base64" { >= "3.5.0" } + "decompress" { >= "1.5.1" } + "digestif" { >= "1.1.3" } + "opam-monorepo" { build } + "esperanto-cosmopolitan" { build } + "x86_64-esperanto" { build } + "aarch64-esperanto" { build } + "ocamlfind" { build } "bigstringaf" "cmdliner" - "ipaddr" { >= "5.3.0" } + "ipaddr" { >= "5.3.0" } "mirage-crypto" - "mirage-crypto-rng" { >= "0.11.0" } - "x509" { >= "0.16.0" } + "mirage-crypto-rng" { >= "0.11.0" } + "x509" { >= "0.16.0" } "psq" - "lru" { >= "0.3.1" } + "lru" { >= "0.3.1" } "tls" - "carton" { >= "0.5.0" } - "progress" { >= "0.2.1" } + "carton" { >= "0.5.0" } + "progress" { >= "0.2.1" } "dns-client" - "happy-eyeballs" { >= "0.6.0" } + "happy-eyeballs" { >= "0.6.0" } "ca-certs" - "ke" { >= "0.6" } - "alcotest" { with-test } - "spoke" { >= "0.0.2" } + "ke" { >= "0.6" } + "alcotest" { with-test } + "spoke" { >= "0.0.2" } ] pin-depends: [ @@ -52,7 +55,8 @@ pin-depends: [ [ "mirage-crypto-pk.dev" "git+https://github.com/dinosaure/mirage-crypto.git#83b160823cc601ffb19f8be2e32d643ffcbea60d" ] [ "mirage-crypto-ec.dev" "git+https://github.com/dinosaure/mirage-crypto.git#83b160823cc601ffb19f8be2e32d643ffcbea60d" ] [ "mirage-crypto-rng.dev" "git+https://github.com/dinosaure/mirage-crypto.git#83b160823cc601ffb19f8be2e32d643ffcbea60d" ] - [ "mtime.dev" "git+https://github.com/dinosaure/mtime.git#d5d70f38c40da90e3e173eb60346df55b64a4a0a"] + [ "mtime.dev" "git+https://github.com/dinosaure/mtime.git#d5d70f38c40da90e3e173eb60346df55b64a4a0a" ] + [ "gmp.dev" "git+https://github.com/mirage/ocaml-gmp.git#dfc83c74a327d848074ecf0d33b009eaf5625250" ] ] x-mirage-opam-lock-location: "com.opam.locked" @@ -65,6 +69,6 @@ x-mirage-extra-repo: [ [ "opam-overlays" "https://github.com/dune-universe/opam-overlays.git" ] [ "mirage-overlays" "https://github.com/dune-universe/mirage-opam-overlays.git" ] ] -x-opam-monorepo-opam-provided: ["ocaml" "ocamlfind" "opam-monorepo" "esperanto"] +x-opam-monorepo-opam-provided: ["ocaml" "ocamlfind" "opam-monorepo" "esperanto-cosmopolitan" "x86_64-esperanto" "aarch64-esperanto"] -url { src: "git+https://github.com/dinosaure/bob.git#reproducible-build" } +url { src: "git+https://github.com/dinosaure/bob.git" } diff --git a/link.sh b/link.sh new file mode 100755 index 0000000..3d99594 --- /dev/null +++ b/link.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +opam exec -- apelink \ + -o bob.com \ + -l $(opam var bin)/ape-x86_64.elf \ + -l $(opam var bin)/ape-aarch64.elf \ + -M $(opam var bin)/ape-m1.c \ + _build/default.x86_64_esperanto/bin/bob.exe.dbg \ + _build/default.aarch64_esperanto/bin/bob.exe.dbg + +cat >com.install <