From a615ba442e4c175e957dd0f07086b877268635df Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Mon, 23 Jan 2023 16:10:00 -0500 Subject: nix & build housekeeping, alternative D compilers - compilation status - dmd (@D2.100) ok, & has been fine - ldc (@D2.100) ok, & has been fine - gdc11 available in nixpkgs does not compile awaiting gdc12 (which would also be based on @D2.100 & just might) --- flake.nix | 154 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 148 insertions(+), 6 deletions(-) (limited to 'flake.nix') diff --git a/flake.nix b/flake.nix index e615ae9..56883a9 100644 --- a/flake.nix +++ b/flake.nix @@ -18,13 +18,12 @@ meta.mainProgram = "spine"; executable = true; src = self; - shell = ./default.nix; - devEnv = ./devenv.nix; + #shell = ./shell.nix; # ./default.nix; + #devEnv = ./shell.nix; # ./default.nix; buildInputs = [ sqlite ]; - nativeBuildInputs = [ dub dmd ]; # [ dub dmd ]; [ dub ldc ]; [ dub gdc ]; + nativeBuildInputs = [ dub dmd ldc gdc gnumake ]; # [ dub dmd ]; [ dub ldc ]; [ dub gdc ]; buildPhase = '' runHook preBuild - HOME="$PWD" for DC_ in dmd ldmd2 ldc2 gdc gdmd; do echo "- check for D compiler $DC_" DC=$(type -P $DC_ || echo "") @@ -37,7 +36,150 @@ ''; checkPhase = '' runHook preCheck - HOME="$PWD" + dub test --combined --skip-registry=all + runHook postCheck + ''; + installPhase = '' + runHook preInstall + mkdir -p $out/bin + install -m755 ./bin/spine $out/bin/spine + runHook postInstall + ''; + postInstall = '' + echo `ls -la $out/bin/spine` + echo " + nix build or nix develop? (suggestions): + - nix build + nix build .#default --print-build-logs + nix flake update; nix build .#default --print-build-logs + nix build --print-build-logs + - nix run + nix run .#default --print-build-logs + nix run default.nix --print-build-logs + - nix shell + nix shell .#default --print-build-logs --command spine -v + - nix develop + nix develop --profile .#default --print-build-logs --command spine -v + nix develop ; eval \"$buildPhase\" + nix develop --build -f derivation.nix -I .envrc --print-build-logs + - nix profile install . --print-build-logs + spine -v + nix-instantiate | nix show-derivation | jq + " + $out/bin/spine -v + ''; + }; + spine-dmd = stdenv.mkDerivation { + pname = "spine"; + inherit version; + meta.mainProgram = "spine-dmd"; + executable = true; + src = self; + buildInputs = [ sqlite ]; + nativeBuildInputs = [ dub dmd gnumake ]; + buildPhase = '' + runHook preBuild + dub build --compiler=$(type -P dmd) --build=dmd --combined --skip-registry=all + runHook postBuild + ''; + checkPhase = '' + runHook preCheck + dub test --combined --skip-registry=all + runHook postCheck + ''; + installPhase = '' + runHook preInstall + mkdir -p $out/bin + install -m755 ./bin/spine $out/bin/spine + runHook postInstall + ''; + postInstall = '' + echo `ls -la $out/bin/spine` + echo " + nix build or nix develop? (suggestions): + - nix build + nix build .#default --print-build-logs + nix flake update; nix build .#default --print-build-logs + nix build --print-build-logs + - nix run + nix run .#default --print-build-logs + nix run default.nix --print-build-logs + - nix shell + nix shell .#default --print-build-logs --command spine -v + - nix develop + nix develop --profile .#default --print-build-logs --command spine -v + nix develop ; eval \"$buildPhase\" + nix develop --build -f derivation.nix -I .envrc --print-build-logs + - nix profile install . --print-build-logs + spine -v + nix-instantiate | nix show-derivation | jq + " + $out/bin/spine -v + ''; + }; + spine-ldc = stdenv.mkDerivation { + pname = "spine"; + inherit version; + meta.mainProgram = "spine-ldc"; + executable = true; + src = self; + buildInputs = [ sqlite ]; + nativeBuildInputs = [ dub ldc gnumake ]; + buildPhase = '' + runHook preBuild + dub build --compiler=$(type -P ldc2) --build=ldc2 --combined --skip-registry=all + runHook postBuild + ''; + checkPhase = '' + runHook preCheck + dub test --combined --skip-registry=all + runHook postCheck + ''; + installPhase = '' + runHook preInstall + mkdir -p $out/bin + install -m755 ./bin/spine $out/bin/spine + runHook postInstall + ''; + postInstall = '' + echo `ls -la $out/bin/spine` + echo " + nix build or nix develop? (suggestions): + - nix build + nix build .#default --print-build-logs + nix flake update; nix build .#default --print-build-logs + nix build --print-build-logs + - nix run + nix run .#default --print-build-logs + nix run default.nix --print-build-logs + - nix shell + nix shell .#default --print-build-logs --command spine -v + - nix develop + nix develop --profile .#default --print-build-logs --command spine -v + nix develop ; eval \"$buildPhase\" + nix develop --build -f derivation.nix -I .envrc --print-build-logs + - nix profile install . --print-build-logs + spine -v + nix-instantiate | nix show-derivation | jq + " + $out/bin/spine -v + ''; + }; + spine-gdc = stdenv.mkDerivation { + pname = "spine"; + inherit version; + meta.mainProgram = "spine-gdc"; + executable = true; + src = self; + buildInputs = [ sqlite ]; + nativeBuildInputs = [ dub gdc gnumake ]; + buildPhase = '' + runHook preBuild + dub build --compiler=$(type -P gdc) --build=gdc --combined --skip-registry=all + runHook postBuild + ''; + checkPhase = '' + runHook preCheck dub test --combined --skip-registry=all runHook postCheck ''; @@ -82,7 +224,7 @@ devShells = forAllSystems (system: let pkgs = nixpkgsFor.${system}; in with pkgs; { - devShell = mkShell { buildInputs = [ git dub dmd ldc gdc sqlite ]; }; + devShell = mkShell { }; }); }; } -- cgit v1.2.3