Compare commits
21 Commits
4a8a3750fe
...
3235165797
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3235165797 | ||
|
|
7a07808115 | ||
|
|
23f732cabf | ||
|
|
7105ad0fd5 | ||
|
|
4f57e96071 | ||
|
|
8f7a1c31f3 | ||
|
|
6ec7bc004f | ||
|
|
97e2fd8823 | ||
|
|
09ca0541ca | ||
|
|
c3ac431600 | ||
|
|
a69c1a0031 | ||
|
|
2d0b7f26e0 | ||
|
|
0771074981 | ||
|
|
40f62bf808 | ||
|
|
358b55c6e1 | ||
|
|
c1308094f1 | ||
|
|
325cb98b76 | ||
|
|
9452f9f95a | ||
|
|
4fb40e2ed4 | ||
|
|
3395fe3b1c | ||
|
|
a35380b3e9 |
2
build
2
build
@ -1,6 +1,8 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
|
# generate this file from Nix config for now to avoid duplication?
|
||||||
|
|
||||||
cargo build --manifest-path ./rust/Cargo.toml
|
cargo build --manifest-path ./rust/Cargo.toml
|
||||||
|
|
||||||
BUNDLED_LIB_DIR=$(cabal list-bin . | sed -e 's=x/garnet/build/garnet/garnet=build=g')
|
BUNDLED_LIB_DIR=$(cabal list-bin . | sed -e 's=x/garnet/build/garnet/garnet=build=g')
|
||||||
|
|||||||
13
flake.lock
generated
13
flake.lock
generated
@ -527,16 +527,15 @@
|
|||||||
"hs-bindgen-src": {
|
"hs-bindgen-src": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1774599157,
|
"lastModified": 1776078838,
|
||||||
"narHash": "sha256-jgV67xhWzxMwyiyy5RPtu+VQvGTt+FoMXCWJcZ7lczY=",
|
"narHash": "sha256-f8SE6IuACy8bzIX+EOYTpekaAI/TOQ3zTwJKJmHl3LY=",
|
||||||
"owner": "well-typed",
|
"owner": "well-typed",
|
||||||
"repo": "hs-bindgen",
|
"repo": "hs-bindgen",
|
||||||
"rev": "3c4af10590d0d09e825a9735e9a03d7f60914e21",
|
"rev": "ca714aca1ed941271ac248488c9a469554c5b470",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "well-typed",
|
"owner": "well-typed",
|
||||||
"ref": "release-0.1-alpha2",
|
|
||||||
"repo": "hs-bindgen",
|
"repo": "hs-bindgen",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
@ -561,11 +560,11 @@
|
|||||||
"libclang-src": {
|
"libclang-src": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1774600891,
|
"lastModified": 1775645278,
|
||||||
"narHash": "sha256-LTAyNMY4Vu0vPeEq2wXB0KWY4kGtqtHTRmADjLdkv78=",
|
"narHash": "sha256-JWARcbqH432vWcCvQ2bagTXBka8sCRNAnK1qOmnLWKw=",
|
||||||
"owner": "well-typed",
|
"owner": "well-typed",
|
||||||
"repo": "libclang",
|
"repo": "libclang",
|
||||||
"rev": "1054474fae403bfb52c7919680cac03d3d3d4237",
|
"rev": "bf574efcb492d2738d8a82b6ce556f840ff92778",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
13
flake.nix
13
flake.nix
@ -3,7 +3,7 @@
|
|||||||
nix-haskell.url = "github:reflex-frp/nix-haskell";
|
nix-haskell.url = "github:reflex-frp/nix-haskell";
|
||||||
nixpkgs.follows = "nix-haskell/nixpkgs";
|
nixpkgs.follows = "nix-haskell/nixpkgs";
|
||||||
hls-src = { url = "github:haskell/haskell-language-server/2.13.0.0"; flake = false; };
|
hls-src = { url = "github:haskell/haskell-language-server/2.13.0.0"; flake = false; };
|
||||||
hs-bindgen-src = { url = "github:well-typed/hs-bindgen/release-0.1-alpha2"; flake = false; };
|
hs-bindgen-src = { url = "github:well-typed/hs-bindgen"; flake = false; };
|
||||||
libclang-src = { url = "github:well-typed/libclang"; flake = false; };
|
libclang-src = { url = "github:well-typed/libclang"; flake = false; };
|
||||||
flake-utils.url = "github:numtide/flake-utils";
|
flake-utils.url = "github:numtide/flake-utils";
|
||||||
crane.url = "github:ipetkov/crane";
|
crane.url = "github:ipetkov/crane";
|
||||||
@ -16,7 +16,7 @@
|
|||||||
inputs:
|
inputs:
|
||||||
inputs.flake-utils.lib.eachSystem [ "x86_64-linux" ] (system:
|
inputs.flake-utils.lib.eachSystem [ "x86_64-linux" ] (system:
|
||||||
let
|
let
|
||||||
pkgs = (import inputs.nixpkgs { inherit system; }).extend (import inputs.rust-overlay);
|
pkgs = haskell.nixpkgs.extend (import inputs.rust-overlay);
|
||||||
crane = (inputs.crane.mkLib pkgs).overrideToolchain (p: p.rust-bin.selectLatestNightlyWith (
|
crane = (inputs.crane.mkLib pkgs).overrideToolchain (p: p.rust-bin.selectLatestNightlyWith (
|
||||||
toolchain: toolchain.default.override {
|
toolchain: toolchain.default.override {
|
||||||
extensions = [ "rust-src" "rust-analyzer" ];
|
extensions = [ "rust-src" "rust-analyzer" ];
|
||||||
@ -27,7 +27,7 @@
|
|||||||
''
|
''
|
||||||
export C_INCLUDE_PATH="${pkgs.stdenv.cc.libc.dev}/include''${C_INCLUDE_PATH:+:$C_INCLUDE_PATH}"
|
export C_INCLUDE_PATH="${pkgs.stdenv.cc.libc.dev}/include''${C_INCLUDE_PATH:+:$C_INCLUDE_PATH}"
|
||||||
'';
|
'';
|
||||||
project = (import inputs.nix-haskell { inherit system inputs; } {
|
haskell = (import inputs.nix-haskell { inherit system inputs; } {
|
||||||
name = "garnet";
|
name = "garnet";
|
||||||
src = ./.;
|
src = ./.;
|
||||||
compiler-nix-name = "ghc914";
|
compiler-nix-name = "ghc914";
|
||||||
@ -49,6 +49,7 @@
|
|||||||
};
|
};
|
||||||
packages.garnet.components.library = {
|
packages.garnet.components.library = {
|
||||||
preBuild = addLibcIncludeDir;
|
preBuild = addLibcIncludeDir;
|
||||||
|
# try removing?
|
||||||
preConfigure = ''
|
preConfigure = ''
|
||||||
mkdir -p rust/target/debug
|
mkdir -p rust/target/debug
|
||||||
ln -s ${garnet-rs}/include/garnet_rs.h rust/target/debug/garnet_rs.h
|
ln -s ${garnet-rs}/include/garnet_rs.h rust/target/debug/garnet_rs.h
|
||||||
@ -76,7 +77,7 @@
|
|||||||
withHaddock = true;
|
withHaddock = true;
|
||||||
shellHook = addLibcIncludeDir;
|
shellHook = addLibcIncludeDir;
|
||||||
};
|
};
|
||||||
}).project.haskell-nix;
|
});
|
||||||
garnet-rs = crane.buildPackage {
|
garnet-rs = crane.buildPackage {
|
||||||
src = crane.cleanCargoSource ./rust;
|
src = crane.cleanCargoSource ./rust;
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
@ -89,14 +90,14 @@
|
|||||||
in
|
in
|
||||||
rec {
|
rec {
|
||||||
defaultPackage = packages.garnet-exe;
|
defaultPackage = packages.garnet-exe;
|
||||||
packages = let garnet = project.hsPkgs.garnet; in {
|
packages = let garnet = haskell.project.haskell-nix.hsPkgs.garnet; in {
|
||||||
inherit garnet-rs;
|
inherit garnet-rs;
|
||||||
garnet-exe = garnet.components.exes.garnet;
|
garnet-exe = garnet.components.exes.garnet;
|
||||||
garnet-lib = garnet.components.library;
|
garnet-lib = garnet.components.library;
|
||||||
};
|
};
|
||||||
devShells.default = pkgs.mkShell {
|
devShells.default = pkgs.mkShell {
|
||||||
inputsFrom = [
|
inputsFrom = [
|
||||||
project.shell
|
haskell.project.haskell-nix.shell
|
||||||
(crane.devShell { })
|
(crane.devShell { })
|
||||||
];
|
];
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
|
|||||||
10
garnet.cabal
10
garnet.cabal
@ -14,6 +14,14 @@ extra-source-files:
|
|||||||
-- extra-tmp-files:
|
-- extra-tmp-files:
|
||||||
-- rust/target/debug/garnet_rs.h
|
-- rust/target/debug/garnet_rs.h
|
||||||
|
|
||||||
|
-- actually maybe this is pointless given we always need debug path anyway in `extra-source-files`
|
||||||
|
-- plus we have it in `Raw.hs`
|
||||||
|
flag dev
|
||||||
|
default:
|
||||||
|
False
|
||||||
|
manual:
|
||||||
|
True
|
||||||
|
|
||||||
common common
|
common common
|
||||||
default-language: GHC2024
|
default-language: GHC2024
|
||||||
default-extensions:
|
default-extensions:
|
||||||
@ -50,6 +58,8 @@ library
|
|||||||
GarnetRs.Raw
|
GarnetRs.Raw
|
||||||
GarnetRs.Wrapped
|
GarnetRs.Wrapped
|
||||||
hs-source-dirs: lib
|
hs-source-dirs: lib
|
||||||
|
-- if flag (dev)
|
||||||
|
-- include-dirs: rust/target/debug
|
||||||
include-dirs: rust/target/debug
|
include-dirs: rust/target/debug
|
||||||
-- HLS gives up entirely when the header is malformed if we do this
|
-- HLS gives up entirely when the header is malformed if we do this
|
||||||
-- and anyway, I don't think it gives us dependency tracking like `extra-source-files` does
|
-- and anyway, I don't think it gives us dependency tracking like `extra-source-files` does
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user