diff --git a/.github/workflows/test-pr.yml b/.github/workflows/test-pr.yml index 77a19e55e99..84a2239e162 100644 --- a/.github/workflows/test-pr.yml +++ b/.github/workflows/test-pr.yml @@ -157,9 +157,6 @@ jobs: strategy: matrix: os: [ubuntu-latest, macos-14] - defaults: - run: - working-directory: ./pyk runs-on: ${{ matrix.os }} steps: - name: 'Check out code' @@ -178,8 +175,10 @@ jobs: name: k-framework authToken: '${{ secrets.CACHIX_PUBLIC_TOKEN }}' skipPush: true - - name: 'Build pyk' + - name: 'Build original pyk flake' run: GC_DONT_GC=1 nix build --print-build-logs .#pyk-python310 + - name: 'Build pyk provided by K' + run: GC_DONT_GC=1 nix build --print-build-logs ./pyk#pyk-python310 compile-nix-flake: diff --git a/flake.lock b/flake.lock index 3b64ee44c41..fcd8b309183 100644 --- a/flake.lock +++ b/flake.lock @@ -16,6 +16,24 @@ "type": "github" } }, + "flake-utils": { + "inputs": { + "systems": "systems_2" + }, + "locked": { + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "fmt-src": { "flake": false, "locked": { @@ -108,6 +126,27 @@ "type": "github" } }, + "nix-github-actions": { + "inputs": { + "nixpkgs": [ + "poetry2nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1693660503, + "narHash": "sha256-B/g2V4v6gjirFmy+I5mwB2bCYc0l3j5scVfwgl6WOl8=", + "owner": "nix-community", + "repo": "nix-github-actions", + "rev": "bd5bdbb52350e145c526108f4ef192eb8e554fa0", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nix-github-actions", + "type": "github" + } + }, "nixpkgs": { "locked": { "lastModified": 1716457947, @@ -124,6 +163,32 @@ "type": "github" } }, + "poetry2nix": { + "inputs": { + "flake-utils": "flake-utils", + "nix-github-actions": "nix-github-actions", + "nixpkgs": [ + "llvm-backend", + "nixpkgs" + ], + "systems": "systems_3", + "treefmt-nix": "treefmt-nix" + }, + "locked": { + "lastModified": 1698640399, + "narHash": "sha256-mXzyx79/iFLZ0UDuSkqgFfejYRcSJfsCnJ9WlMusaI0=", + "owner": "nix-community", + "repo": "poetry2nix", + "rev": "626111646fe236cb1ddc8191a48c75e072a82b7c", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "poetry2nix", + "rev": "626111646fe236cb1ddc8191a48c75e072a82b7c", + "type": "github" + } + }, "pybind11-src": { "flake": false, "locked": { @@ -170,6 +235,7 @@ "llvm-backend", "nixpkgs" ], + "poetry2nix": "poetry2nix", "rv-utils": [ "llvm-backend", "rv-utils" @@ -224,6 +290,56 @@ "type": "github" } }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_3": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "id": "systems", + "type": "indirect" + } + }, + "treefmt-nix": { + "inputs": { + "nixpkgs": [ + "poetry2nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1697388351, + "narHash": "sha256-63N2eBpKaziIy4R44vjpUu8Nz5fCJY7okKrkixvDQmY=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "aae39f64f5ecbe89792d05eacea5cb241891292a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, "utils": { "inputs": { "systems": "systems" diff --git a/flake.nix b/flake.nix index dadec578ebd..48218b92f40 100644 --- a/flake.nix +++ b/flake.nix @@ -8,22 +8,36 @@ inputs.nixpkgs.follows = "llvm-backend/nixpkgs"; }; + poetry2nix = { + url = + "github:nix-community/poetry2nix/626111646fe236cb1ddc8191a48c75e072a82b7c"; + inputs.nixpkgs.follows = "llvm-backend/nixpkgs"; + }; + nixpkgs.follows = "llvm-backend/nixpkgs"; rv-utils.follows = "llvm-backend/rv-utils"; flake-utils.follows = "llvm-backend/utils"; }; outputs = { self, nixpkgs, flake-utils, rv-utils, haskell-backend - , llvm-backend }: + , llvm-backend, poetry2nix }: let allOverlays = [ (_: _: { llvm-version = 17; llvm-backend-build-type = "Release"; }) + llvm-backend.overlays.default + haskell-backend.overlays.z3 haskell-backend.overlays.integration-tests + + (import ./nix/pyk-overlay.nix { + inherit poetry2nix; + projectDir = ./pyk; + }) + (final: prev: let k-version = @@ -54,7 +68,22 @@ # this version of maven from nixpkgs 23.11. we can remove this version of maven once our nixpkgs catches up maven = prev.callPackage ./nix/maven.nix { }; - k-framework = { haskell-backend-bins, llvm-kompile-libs }: + haskell-backend-bins = prev.symlinkJoin { + name = "kore-${haskell-backend.sourceInfo.shortRev or "local"}"; + paths = let p = haskell-backend.packages.${prev.system}; + in [ + p.kore-exec + p.kore-match-disjunction + p.kore-parser + p.kore-repl + p.kore-rpc + p.kore-rpc-booster + p.kore-rpc-client + p.booster-dev + ]; + }; + + mk-k-framework = { haskell-backend-bins, llvm-kompile-libs }: prev.callPackage ./nix/k.nix { mvnHash = "sha256-HkAwMZq2vvrnEgT1Ksoxb5YnQ8+CMQdB2Sd/nR0OttU="; manualMvnArtifacts = [ @@ -83,6 +112,15 @@ version = "${k-version}-${self.rev or "dirty"}"; inherit llvm-kompile-libs; }; + + k = final.mk-k-framework { + inherit (final) haskell-backend-bins; + llvm-kompile-libs = with prev; { + procps = [ "-I${procps}/include" "-L${procps}/lib" ]; + openssl = [ "-I${openssl.dev}/include" "-L${openssl.out}/lib" ]; + secp256k1 = [ "-I${secp256k1}/include" "-L${secp256k1}/lib" ]; + }; + }; }) ]; in flake-utils.lib.eachSystem [ @@ -105,34 +143,12 @@ ++ allOverlays; }; - haskell-backend-bins = pkgs.symlinkJoin { - name = "kore-${haskell-backend.sourceInfo.shortRev or "local"}"; - paths = let p = haskell-backend.packages.${system}; - in [ - p.kore-exec - p.kore-match-disjunction - p.kore-parser - p.kore-repl - p.kore-rpc - p.kore-rpc-booster - p.kore-rpc-client - p.booster-dev - ]; - }; - in rec { k-version = pkgs.lib.removeSuffix "\n" (builtins.readFile ./package/version); packages = rec { - k = pkgs.k-framework { - inherit haskell-backend-bins; - llvm-kompile-libs = with pkgs; { - procps = [ "-I${procps}/include" "-L${procps}/lib" ]; - openssl = [ "-I${openssl.dev}/include" "-L${openssl.out}/lib" ]; - secp256k1 = [ "-I${secp256k1}/include" "-L${secp256k1}/lib" ]; - }; - }; + inherit (pkgs) k pyk pyk-python310 pyk-python311; check-submodules = rv-utils.lib.check-submodules pkgs { inherit llvm-backend haskell-backend; @@ -195,7 +211,7 @@ }; defaultPackage = packages.k; devShells.kore-integration-tests = pkgs.kore-tests (pkgs.k-framework { - inherit haskell-backend-bins; + inherit (pkgs) haskell-backend-bins; llvm-kompile-libs = { }; }); }) // { @@ -203,6 +219,5 @@ overlays.z3 = haskell-backend.overlays.z3; overlay = nixpkgs.lib.composeManyExtensions allOverlays; - }; } diff --git a/nix/pyk-overlay.nix b/nix/pyk-overlay.nix new file mode 100644 index 00000000000..70455675a5c --- /dev/null +++ b/nix/pyk-overlay.nix @@ -0,0 +1,27 @@ +{ poetry2nix, projectDir }: +(final: prev: + let + mkPyk = python: + let + p2n = poetry2nix.lib.mkPoetry2Nix { pkgs = prev; }; + in p2n.mkPoetryApplication { + inherit projectDir; + python = python; + groups = [ ]; + # We remove `"dev"` from `checkGroups`, so that poetry2nix does not try to resolve dev dependencies. + checkGroups = [ ]; + overrides = p2n.defaultPoetryOverrides.extend + (self: super: { + pygments = super.pygments.overridePythonAttrs + ( + old: { + buildInputs = (old.buildInputs or [ ]) ++ [ super.hatchling ]; + } + ); + }); + }; + in rec { + pyk = pyk-python310; + pyk-python310 = mkPyk prev.python310; + pyk-python311 = mkPyk prev.python311; + }) diff --git a/pyk/flake.nix b/pyk/flake.nix index 79774de3b0d..4063dda846f 100644 --- a/pyk/flake.nix +++ b/pyk/flake.nix @@ -15,32 +15,10 @@ outputs = { self, nixpkgs, flake-utils, rv-utils, poetry2nix }: { # Nixpkgs overlay providing the application - overlay = final: prev: - let - mkPyk = python: - let - p2n = poetry2nix.lib.mkPoetry2Nix { pkgs = prev; }; - in p2n.mkPoetryApplication { - python = python; - projectDir = ./.; - groups = [ ]; - # We remove `"dev"` from `checkGroups`, so that poetry2nix does not try to resolve dev dependencies. - checkGroups = [ ]; - overrides = p2n.defaultPoetryOverrides.extend - (self: super: { - pygments = super.pygments.overridePythonAttrs - ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ super.hatchling ]; - } - ); - }); - }; - in rec { - pyk = pyk-python310; - pyk-python310 = mkPyk prev.python310; - pyk-python311 = mkPyk prev.python311; - }; + overlay = (import ../nix/pyk-overlay.nix { + inherit poetry2nix; + projectDir = ./.; + }); } // (flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs {