Compare commits

..

2 Commits

Author SHA1 Message Date
George Thomas
4ecd0b16e2 Drop build hooks in favour of just using bundled libraries properly
The script addition is a bit hacky, but there's no obvious straightforward arch/version-independent way to get most of the build path. And eventually, once issues with HLS etc. are sorted out we will revert to using Cabal hooks anyway.
2026-03-23 23:06:29 +00:00
George Thomas
ddb9c300cf Switch to Hooks API instead of using cabal configure hack for lib/include dirs 2026-03-23 22:57:34 +00:00
2 changed files with 7 additions and 11 deletions

View File

@ -1,4 +1,4 @@
cabal-version: 3.0 cabal-version: 3.14
name: garnet name: garnet
version: 0.1.0.0 version: 0.1.0.0
license: BSD-3-Clause license: BSD-3-Clause
@ -40,6 +40,7 @@ library
GarnetRs.Raw GarnetRs.Raw
GarnetRs.Wrapped GarnetRs.Wrapped
hs-source-dirs: lib hs-source-dirs: lib
include-dirs: rust/target/debug
extra-bundled-libraries: garnet_rs extra-bundled-libraries: garnet_rs
build-depends: build-depends:
base, base,

View File

@ -9,12 +9,12 @@ set -euo pipefail
# 1. cargo build - build the Rust static library # 1. cargo build - build the Rust static library
# 2. cbindgen - generate a C header from the Rust source # 2. cbindgen - generate a C header from the Rust source
# 3. awk - patch the header for hs-bindgen compatibility # 3. awk - patch the header for hs-bindgen compatibility
# 4. cabal configure - point Cabal at the Rust build artifacts # 4. cp - copy static lib
# #
# System include paths (needed by libclang on NixOS) are detected # System include paths (needed by libclang on NixOS) are detected
# automatically at TH compile time by GarnetRs.Raw — no env vars needed. # automatically at TH compile time by GarnetRs.Raw — no env vars needed.
# #
# Prerequisites: run inside the Nix dev shell (provides gcc, cabal, cbindgen). # Prerequisites: run inside the Nix dev shell (provides gcc, cbindgen).
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
RUST_DIR="$SCRIPT_DIR/rust" RUST_DIR="$SCRIPT_DIR/rust"
@ -58,15 +58,10 @@ awk '
echo " Patched header at $HEADER" echo " Patched header at $HEADER"
# --- Step 4: Configure Cabal --- # --- Step 4: Copy static lib for Cabal ---
# #
# Point Cabal at the Rust static library and C header. This writes # Place library in the location from which Cabal can bundle it.
# cabal.project.local (gitignored) with absolute paths derived from cp rust/target/debug/libgarnet_rs.a $(cabal list-bin . | sed -e 's=x/garnet/build/garnet/garnet=build=g')
# the current working directory, avoiding hardcoded paths in cabal.project.
echo "=== Configuring Cabal ==="
cabal configure \
--extra-lib-dirs="$RUST_DIR/target/debug" \
--extra-include-dirs="$RUST_DIR/target/debug"
echo "=== Done ===" echo "=== Done ==="
echo "Run 'cabal run' to test." echo "Run 'cabal run' to test."