diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 32fc80f..e746147 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -6,6 +6,10 @@ on: schedule: - cron: 0 1 * * MON +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + permissions: read-all jobs: diff --git a/flake.lock b/flake.lock index 490b2f9..466aec2 100644 --- a/flake.lock +++ b/flake.lock @@ -1,51 +1,15 @@ { "nodes": { - "flake-utils": { - "inputs": { - "systems": "systems" - }, - "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "nix-filter": { - "locked": { - "lastModified": 1710156097, - "narHash": "sha256-1Wvk8UP7PXdf8bCCaEoMnOT1qe5/Duqgj+rL8sRQsSM=", - "owner": "numtide", - "repo": "nix-filter", - "rev": "3342559a24e85fc164b295c3444e8a139924675b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "nix-filter", - "type": "github" - } - }, "nixpkgs": { "inputs": { - "flake-utils": [ - "flake-utils" - ], "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1723692471, - "narHash": "sha256-+abV/e3WBfmraqVNqq357w3NMFAPzizZwKLVB3+9vLQ=", + "lastModified": 1739164772, + "narHash": "sha256-DlcAsid/PovJMRc2kHQK3jr/pwXDl5AHf9KW4juYJwA=", "owner": "nix-ocaml", "repo": "nix-overlays", - "rev": "c8d3c3276e1719fc49628fc6756bd92ffe91be41", + "rev": "e8ab9d047597fd471920f9f5f421e01ce8c0b0f0", "type": "github" }, "original": { @@ -56,41 +20,24 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1723418128, - "narHash": "sha256-k1pEqsnB6ikZyasXbtV6A9akPZMKlsyENPDUA6PXoJo=", + "lastModified": 1739097848, + "narHash": "sha256-bbdQB0Y4mB2msqbyQ9QC+YPDZGt1evUK53AwQSyShHM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "129f579cbb5b4c1ad258fd96bdfb78eb14802727", + "rev": "9a0b855695c31ea653181b742c65e026bada3881", "type": "github" }, "original": { "owner": "NixOS", "repo": "nixpkgs", - "rev": "129f579cbb5b4c1ad258fd96bdfb78eb14802727", + "rev": "9a0b855695c31ea653181b742c65e026bada3881", "type": "github" } }, "root": { "inputs": { - "flake-utils": "flake-utils", - "nix-filter": "nix-filter", "nixpkgs": "nixpkgs" } - }, - "systems": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 86cd9a7..b7f4b79 100644 --- a/flake.nix +++ b/flake.nix @@ -1,57 +1,71 @@ { description = "melange-json Nix Flake"; - inputs.nix-filter.url = "github:numtide/nix-filter"; - inputs.flake-utils.url = "github:numtide/flake-utils"; - inputs.nixpkgs = { - url = "github:nix-ocaml/nix-overlays"; - inputs.flake-utils.follows = "flake-utils"; - }; + inputs.nixpkgs.url = "github:nix-ocaml/nix-overlays"; - outputs = { self, nixpkgs, flake-utils, nix-filter }: - flake-utils.lib.eachDefaultSystem (system: - let - pkgs = nixpkgs.legacyPackages."${system}".appendOverlays [ - (self: super: { + outputs = { self, nixpkgs }: + let + forAllSystems = f: nixpkgs.lib.genAttrs nixpkgs.lib.systems.flakeExposed (system: + let + pkgs = nixpkgs.legacyPackages.${system}.extend (self: super: { ocamlPackages = super.ocaml-ng.ocamlPackages_5_2; - }) - ]; - inherit (pkgs) nodejs_latest lib stdenv darwin; + }); + in + f pkgs); + in + { + packages = forAllSystems (pkgs: + let + melange-json = with pkgs.ocamlPackages; buildDunePackage { + pname = "melange-json"; + version = "dev"; - melange-json = with pkgs.ocamlPackages; buildDunePackage { - pname = "melange-json"; - version = "dev"; + src = + let fs = pkgs.lib.fileset; in + fs.toSource { + root = ./.; + fileset = fs.unions [ + ./dune-project + ./dune + ./melange-json.opam + ./melange-json-native.opam + ./src + ./ppx + ]; + }; - src = ./.; - nativeBuildInputs = with pkgs.ocamlPackages; [ melange ]; - propagatedBuildInputs = with pkgs.ocamlPackages; [ - melange - yojson - ppxlib - ]; - }; - - mkShell = { buildInputs ? [ ] }: pkgs.mkShell { - inputsFrom = [ melange-json ]; - nativeBuildInputs = with pkgs; [ - yarn - nodejs_latest - ] ++ (with pkgs.ocamlPackages; [ - ocamlformat - merlin - melange-jest - reason - ]); - inherit buildInputs; - }; - in - rec { - packages.default = melange-json; - devShells = { + nativeBuildInputs = with pkgs.ocamlPackages; [ melange ]; + propagatedBuildInputs = with pkgs.ocamlPackages; [ + melange + yojson + ppxlib + ]; + }; + in + { inherit melange-json; default = melange-json; }); + devShells = forAllSystems (pkgs: + let + inherit (pkgs) nodejs_latest ocamlPackages system yarn; + mkShell = { buildInputs ? [ ] }: pkgs.mkShell { + inputsFrom = [ self.packages.${system}.melange-json ]; + nativeBuildInputs = [ + yarn + nodejs_latest + ] ++ (with ocamlPackages; [ + ocamlformat + merlin + melange-jest + reason + ]); + inherit buildInputs; + }; + in + { default = mkShell { }; release = mkShell { buildInputs = with pkgs; [ cacert curl ocamlPackages.dune-release git ]; }; - }; - }); + } + ); + }; } diff --git a/ppx/test/poly.t b/ppx/test/poly.t index a77bb4b..faab569 100644 --- a/ppx/test/poly.t +++ b/ppx/test/poly.t @@ -1,4 +1,4 @@ -We can alias poly varaints: +We can alias poly variants: $ echo ' > type t = [`A | `B] [@@deriving json] > type u = t [@@deriving json] diff --git a/ppx/test/ppx_deriving_json_js.e2e.t b/ppx/test/ppx_deriving_json_js.e2e.t index a5dda55..8271b64 100644 --- a/ppx/test/ppx_deriving_json_js.e2e.t +++ b/ppx/test/ppx_deriving_json_js.e2e.t @@ -7,7 +7,7 @@ > (name lib) > (modes melange) > (modules example example_json_string main) - > (flags :standard -w -37-69 -open Json.Primitives) + > (flags :standard -w -20-37-69 -open Json.Primitives) > (preprocess (pps melange.ppx melange-json.ppx))) > (melange.emit > (alias js) diff --git a/ppx/test/ppx_deriving_json_js_variants.e2e.t b/ppx/test/ppx_deriving_json_js_variants.e2e.t index 5a79ca4..1225f5e 100644 --- a/ppx/test/ppx_deriving_json_js_variants.e2e.t +++ b/ppx/test/ppx_deriving_json_js_variants.e2e.t @@ -1,5 +1,5 @@ - $ echo '(lang dune 3.11) + $ echo '(lang dune 3.11) > (using melange 0.1)' > dune-project $ echo ' @@ -7,7 +7,7 @@ > (name lib) > (modes melange) > (modules main) - > (flags :standard -w -37-69) + > (flags :standard -w -20-37-69) > (preprocess (pps melange.ppx melange-json.ppx))) > (melange.emit > (alias js) diff --git a/ppx/test/run.sh b/ppx/test/run.sh index 8bb4ab2..b98a9ef 100755 --- a/ppx/test/run.sh +++ b/ppx/test/run.sh @@ -13,7 +13,7 @@ echo ' (name lib) (modes melange) (modules main_js) - (flags :standard -w -37-69 -open Json.Primitives) + (flags :standard -w -20-37-69 -open Json.Primitives) (preprocess (pps melange.ppx melange-json.ppx))) (melange.emit (alias js) @@ -21,7 +21,7 @@ echo ' (modules) (libraries lib) (module_systems commonjs)) -(executable +(executable (name main) (modules main) (flags :standard -w -37-69 -open Json.Primitives)