From e190dae46b7aa21049d8528fedd3f58c61fb074f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Madeleine=20Sydney=20=C5=9Alaga?= Date: Sun, 15 Feb 2026 21:11:04 -0700 Subject: [PATCH] gftest: init --- pkgs/gf-core/default.nix | 31 ++++++++++------------- pkgs/gf-core/fix-cabal-syntax-error.patch | 13 ++++++++++ pkgs/gf-pgf/default.nix | 11 ++++++++ pkgs/gftest/default.nix | 26 +++++++++++++++++++ pkgs/pgf2-haskell/default.nix | 19 ++++++++++++++ 5 files changed, 83 insertions(+), 17 deletions(-) create mode 100644 pkgs/gf-core/fix-cabal-syntax-error.patch create mode 100644 pkgs/gf-pgf/default.nix create mode 100644 pkgs/gftest/default.nix create mode 100644 pkgs/pgf2-haskell/default.nix diff --git a/pkgs/gf-core/default.nix b/pkgs/gf-core/default.nix index 0dfc76c..cc27041 100644 --- a/pkgs/gf-core/default.nix +++ b/pkgs/gf-core/default.nix @@ -2,31 +2,28 @@ , haskellPackages , stdenv , fetchFromGitHub -, autoreconfHook +, gf-pgf +, applyPatches }: let version = "3.12"; - src = fetchFromGitHub { - owner = "GrammaticalFramework"; - repo = "gf-core"; - rev = "release-${version}"; - hash = "sha256-9sB8tt2eOJT43kv2eaUYRQCzyBZOp6HvJdgGJQgiqks="; + src = applyPatches rec { + src = fetchFromGitHub { + owner = "GrammaticalFramework"; + repo = "gf-core"; + rev = "release-${version}"; + hash = "sha256-9sB8tt2eOJT43kv2eaUYRQCzyBZOp6HvJdgGJQgiqks="; + }; + patches = [ + "${src}/nix/expose-all.patch" + "${src}/nix/revert-new-cabal-madness.patch" + ./fix-cabal-syntax-error.patch + ]; }; pkg = haskellPackages.callCabal2nixWithOptions "gf" src "--flag=-server" {}; - gf-pgf = stdenv.mkDerivation { - pname = "gf-pgf"; - version = "0.0.1"; - src = "${src}/src/runtime/c"; - nativeBuildInputs = [ autoreconfHook ]; - }; in haskell.lib.overrideCabal pkg (prev: { - patches = [ - "${src}/nix/expose-all.patch" - "${src}/nix/revert-new-cabal-madness.patch" - ]; jailbreak = true; configureFlags = [ "-f" "c-runtime" ]; librarySystemDepends = [ gf-pgf ]; - passthru = { inherit gf-pgf; }; }) diff --git a/pkgs/gf-core/fix-cabal-syntax-error.patch b/pkgs/gf-core/fix-cabal-syntax-error.patch new file mode 100644 index 0000000..e976562 --- /dev/null +++ b/pkgs/gf-core/fix-cabal-syntax-error.patch @@ -0,0 +1,13 @@ +diff --git a/src/runtime/haskell-bind/pgf2.cabal b/src/runtime/haskell-bind/pgf2.cabal +index d7a98489e..3ca7e816c 100644 +--- a/src/runtime/haskell-bind/pgf2.cabal ++++ b/src/runtime/haskell-bind/pgf2.cabal +@@ -15,7 +15,7 @@ homepage: https://www.grammaticalframework.org/ + bug-reports: https://github.com/GrammaticalFramework/gf-core/issues + author: Krasimir Angelov + extra-source-files: CHANGELOG.md, README.md +-tested-with: GHC==7.10.3, GHC==8.0.2, GHC==8.10.4, GHC=9.6.6 ++tested-with: GHC==7.10.3, GHC==8.0.2, GHC==8.10.4, GHC==9.6.6 + + library + exposed-modules: diff --git a/pkgs/gf-pgf/default.nix b/pkgs/gf-pgf/default.nix new file mode 100644 index 0000000..ff4c1fa --- /dev/null +++ b/pkgs/gf-pgf/default.nix @@ -0,0 +1,11 @@ +{ gf-core +, stdenv +, autoreconfHook +}: + +stdenv.mkDerivation { + pname = "gf-pgf"; + inherit (gf-core) version meta; + src = "${gf-core.src}/src/runtime/c"; + nativeBuildInputs = [autoreconfHook ]; +} diff --git a/pkgs/gftest/default.nix b/pkgs/gftest/default.nix new file mode 100644 index 0000000..22cb16e --- /dev/null +++ b/pkgs/gftest/default.nix @@ -0,0 +1,26 @@ +{ gf-core +, breakpointHook +, fetchFromGitHub +, compiler ? "ghc98" +, haskell +, pgf2-haskell +, gf-pgf +}: + +let + src = fetchFromGitHub { + owner = "GrammaticalFramework"; + repo = "gftest"; + rev = "ef7c99143d84a29fb28bbc464f661566d44a6130"; + hash = "sha256-t/LaG5+bdv7f0URcn/aFx6nUIvxSSEbpWeZS92/Gbog="; + }; + hpkgs = haskell.packages.${compiler}.extend (final: prev: { + # PGF2, the Haskell bindings to the C library. + pgf2 = pgf2-haskell.override { inherit compiler; }; + }); + pkg = hpkgs.callCabal2nix "gftest" src {}; +in pkg.overrideAttrs (final: prev: { + nativeBuildInputs = (prev.nativeBuildInputs or []) ++ [ + breakpointHook + ]; +}) diff --git a/pkgs/pgf2-haskell/default.nix b/pkgs/pgf2-haskell/default.nix new file mode 100644 index 0000000..fbeca45 --- /dev/null +++ b/pkgs/pgf2-haskell/default.nix @@ -0,0 +1,19 @@ +{ haskell +, compiler ? "ghc96" +, gf-pgf +, gf-core +, breakpointHook +}: + +let + src = "${gf-core.src}/src/runtime/haskell-bind"; + hpkgs = haskell.packages.${compiler}; + pkg = hpkgs.callCabal2nix "pgf2" src { + # gf-pgf provides both libpgf and libgu. + gu = gf-pgf; + }; +in haskell.lib.overrideCabal pkg (prev: { + librarySystemDepends = (prev.librarySystemDepends or []) ++ [ + gf-pgf + ]; +})