diff options
author | Ralph Amissah <ralph.amissah@gmail.com> | 2023-04-20 19:29:25 -0400 |
---|---|---|
committer | Ralph Amissah <ralph.amissah@gmail.com> | 2023-04-20 19:29:28 -0400 |
commit | 04444d0be1fce11b8760b7855c58e74b0ee61b39 (patch) | |
tree | a4142cfd82eac209e833d0eab19c3d8416380376 /derivation.nix | |
parent | nix flake & build, temp. remove gdc (diff) |
nix, run nix code formatter alejandra
Diffstat (limited to 'derivation.nix')
-rw-r--r-- | derivation.nix | 221 |
1 files changed, 116 insertions, 105 deletions
diff --git a/derivation.nix b/derivation.nix index a1e712a..8aee027 100644 --- a/derivation.nix +++ b/derivation.nix @@ -1,119 +1,130 @@ -{ pkgs ? import <nixpkgs> {}, +{ + pkgs ? import <nixpkgs> {}, stdenv ? pkgs.stdenv, lib ? pkgs.lib, ldc ? null, dcompiler ? pkgs.ldc, - dub ? pkgs.dub + dub ? pkgs.dub, }: assert dcompiler != null; with ( - with lib; - let - filterDub = name: type: let baseName = baseNameOf (toString name); in ! ( # filter function to remove the .dub package folder from src - type == "directory" && baseName == ".dub" - ); + with lib; let + filterDub = name: type: let + baseName = baseNameOf (toString name); + in + ! ( # filter function to remove the .dub package folder from src + type == "directory" && baseName == ".dub" + ); targetOf = package: "${package.targetPath or "."}/${package.targetName or package.name}"; # remove reference to build tools and library sources - disallowedReferences = deps: [ dcompiler dub ]; + disallowedReferences = deps: [dcompiler dub]; removeExpr = refs: ''remove-references-to ${lib.concatMapStrings (ref: " -t ${ref}") refs}''; in { mkDubDerivation = lib.makeOverridable ({ - src, - nativeBuildInputs ? [], - dubJSON ? src + "/dub.json", - passthru ? {}, - package ? lib.importJSON dubJSON, - ... - } @ attrs: stdenv.mkDerivation (attrs // { - pname = package.name; - nativeBuildInputs = [ dcompiler dub pkgs.removeReferencesTo ] ++ nativeBuildInputs; - disallowedReferences = disallowedReferences deps; - passthru = passthru // { - inherit dub dcompiler pkgs; - }; - src = lib.cleanSourceWith { - filter = filterDub; - src = lib.cleanSource src; - }; - preFixup = '' - find $out/share/cgi-bin -type f -exec ${removeExpr (disallowedReferences deps)} '{}' + || true - ''; - buildPhase = '' - runHook preBuild - HOME="$PWD" - DFLAGS="-O2 -inline" - for DC_ in dmd ldmd2 gdmd; do - echo "- check for D compiler $DC_" - DC=$(type -P $DC_ || echo "") - if [ ! "$DC" == "" ]; then - break - fi - done - if [ "$DC" == "" ]; then - exit "Error: could not find D compiler" - fi - echo "$DC_ used as D compiler to build $pname" - dub build --compiler=$DC --build=release --combined --skip-registry=all - runHook postBuild - ''; - checkPhase = '' - runHook preCheck - HOME="$PWD" - dub test --combined --skip-registry=all - runHook postCheck - ''; - installPhase = '' - runHook preInstall - mkdir -p $out/share/cgi-bin - cp -r "${targetOf package}" $out/share/cgi-bin - install -m755 -D $out/share/cgi-bin/spine_search spine_search - runHook postInstall - ''; - postInstall = '' - echo "HERE ${targetOf package} $out/share/cgi-bin" - echo `ls -la $out/share/cgi-bin/spine_search` - ''; - meta = lib.optionalAttrs (package ? description) { - description = package.description; - } // attrs.meta or {}; - } // lib.optionalAttrs (!(attrs ? version)) { - name = package.name; # use name from dub.json, unless pname and version are specified - })); + src, + nativeBuildInputs ? [], + dubJSON ? src + "/dub.json", + passthru ? {}, + package ? lib.importJSON dubJSON, + ... + } @ attrs: + stdenv.mkDerivation (attrs + // { + pname = package.name; + nativeBuildInputs = [dcompiler dub pkgs.removeReferencesTo] ++ nativeBuildInputs; + disallowedReferences = disallowedReferences deps; + passthru = + passthru + // { + inherit dub dcompiler pkgs; + }; + src = lib.cleanSourceWith { + filter = filterDub; + src = lib.cleanSource src; + }; + preFixup = '' + find $out/share/cgi-bin -type f -exec ${removeExpr (disallowedReferences deps)} '{}' + || true + ''; + buildPhase = '' + runHook preBuild + HOME="$PWD" + DFLAGS="-O2 -inline" + for DC_ in dmd ldmd2 gdmd; do + echo "- check for D compiler $DC_" + DC=$(type -P $DC_ || echo "") + if [ ! "$DC" == "" ]; then + break + fi + done + if [ "$DC" == "" ]; then + exit "Error: could not find D compiler" + fi + echo "$DC_ used as D compiler to build $pname" + dub build --compiler=$DC --build=release --combined --skip-registry=all + runHook postBuild + ''; + checkPhase = '' + runHook preCheck + HOME="$PWD" + dub test --combined --skip-registry=all + runHook postCheck + ''; + installPhase = '' + runHook preInstall + mkdir -p $out/share/cgi-bin + cp -r "${targetOf package}" $out/share/cgi-bin + install -m755 -D $out/share/cgi-bin/spine_search spine_search + runHook postInstall + ''; + postInstall = '' + echo "HERE ${targetOf package} $out/share/cgi-bin" + echo `ls -la $out/share/cgi-bin/spine_search` + ''; + meta = + lib.optionalAttrs (package ? description) { + description = package.description; + } + // attrs.meta or {}; + } + // lib.optionalAttrs (!(attrs ? version)) { + name = package.name; # use name from dub.json, unless pname and version are specified + })); } ); -mkDubDerivation rec { - name = "spine-search-${version}"; - #version = "0.12.0"; - src = ./.; - buildInputs = [ - pkgs.sqlite ( - with pkgs; [ - nixVersions.unstable #nixFlakes - ## package manager - dub - ## compiler - ldc - rund - ## linker - #lld - #mold - ## builder - #ninja - sqlite - ] - ) - ]; - meta = with pkgs.lib; { - pname = "spine-search"; - version = "0.12.0"; - homepage = "https://sisudoc.org"; - description = "cgi sqlite search form for document object search"; - longDescription = '' - a sisu like parser & document generator - ''; - homepage = "https://sisudoc.org"; - license = licenses.agpl3Plus; - platforms = platforms.linux; - maintainers = [ "RalphAmissah" ]; - }; -} + mkDubDerivation rec { + name = "spine-search-${version}"; + #version = "0.12.0"; + src = ./.; + buildInputs = [ + pkgs.sqlite + ( + with pkgs; [ + nixVersions.unstable #nixFlakes + ## package manager + dub + ## compiler + ldc + rund + ## linker + #lld + #mold + ## builder + #ninja + sqlite + ] + ) + ]; + meta = with pkgs.lib; { + pname = "spine-search"; + version = "0.12.0"; + homepage = "https://sisudoc.org"; + description = "cgi sqlite search form for document object search"; + longDescription = '' + a sisu like parser & document generator + ''; + homepage = "https://sisudoc.org"; + license = licenses.agpl3Plus; + platforms = platforms.linux; + maintainers = ["RalphAmissah"]; + }; + } |