diff options
Diffstat (limited to 'flake.nix')
-rw-r--r-- | flake.nix | 338 |
1 files changed, 174 insertions, 164 deletions
@@ -1,169 +1,179 @@ { - description = "a sisu like document parser search form"; - inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; # "github:nixos/nixpkgs"; "github:NixOS/nixpkgs/nixpkgs-unstable"; "nixpkgs/nixos-unstable"; "nixpkgs/nixos-21.11"; - inputs.flake-utils.url = "github:numtide/flake-utils"; - outputs = { self, nixpkgs, flake-utils } @inputs: - let - pname = "spine_search"; - version = "0.12.0"; - shell = ./shell.nix; # ./default.nix; - devEnv = ./.envrc; # ./shell.nix; # ./default.nix; - supportedSystems = [ "x86_64-linux" ]; # [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ]; - forAllSystems = nixpkgs.lib.genAttrs supportedSystems; - nixpkgsFor = forAllSystems (system: import nixpkgs { inherit system; }); # nixpkgs instantiated for supported system types. - checkPhase = '' - runHook preCheck - dub test --combined --skip-registry=all - runHook postCheck - ''; - installPhase = '' - runHook preInstall - mkdir -p $out/share/cgi-bin - install -m755 -D ./cgi-bin/spine_search $out/share/cgi-bin/spine_search - runHook postInstall - ''; - postInstall = '' - echo `ls -la $out/share/cgi-bin/spine_search` - ''; - in { - packages = forAllSystems (system: - let pkgs = nixpkgsFor.${system}; - in with pkgs; { - default = stdenv.mkDerivation { - inherit pname; - inherit version; - executable = true; - src = self; - inherit shell; - inherit devEnv; - buildInputs = [ sqlite ]; - nativeBuildInputs = [ dub ldc gnumake ]; # [ dub dmd ]; [ dub ldc ]; [ dub gdc ]; - buildPhase = '' - runHook preBuild - for DC_ in dmd ldmd2 ldc2 gdc 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=$DC_ --combined --skip-registry=all - runHook postBuild - ''; - inherit checkPhase; - inherit installPhase; - inherit postInstall; - }; - spine-search-dmd = stdenv.mkDerivation { - inherit pname; - inherit version; - meta.mainProgram = "spine_search-dmd"; - executable = true; - src = self; - inherit shell; - inherit devEnv; - buildInputs = [ sqlite ]; - nativeBuildInputs = [ dub dmd gnumake ]; - buildPhase = '' - runHook preBuild - dub build --compiler=$(type -P dmd) --build=dmd --combined --skip-registry=all - runHook postBuild - ''; - inherit checkPhase; - inherit installPhase; - inherit postInstall; - }; - spine-search-ldc = stdenv.mkDerivation { - inherit pname; - inherit version; - meta.mainProgram = "spine_search-ldc"; - executable = true; - src = self; - inherit shell; - inherit devEnv; - buildInputs = [ sqlite ]; - nativeBuildInputs = [ dub ldc gnumake ]; - buildPhase = '' - runHook preBuild - dub build --compiler=$(type -P ldc2) --build=ldc2 --combined --skip-registry=all - runHook postBuild - ''; - inherit checkPhase; - inherit installPhase; - inherit postInstall; - }; - #spine-search-gdc = stdenv.mkDerivation { - # inherit pname; - # inherit version; - # meta.mainProgram = "spine_search-gdc"; - # executable = true; - # src = self; - # inherit shell; - # inherit devEnv; - # buildInputs = [ sqlite ]; - # nativeBuildInputs = [ dub gdc gnumake ]; - # buildPhase = '' - # runHook preBuild - # dub build --compiler=$(type -P gdc) --build=gdc --combined --skip-registry=all - # runHook postBuild - # ''; - # inherit checkPhase; - # inherit installPhase; - # inherit postInstall; - #}; - #vendorSha256 = "sha256-0Q00000000000000000000000000000000000000000="; - }); - devShells = forAllSystems (system: - let - pkgs = nixpkgsFor.${system}; - shellHook = '' - export DFLAGS="-O2 -inline -boundscheck=on -color=on" - export Date=`date "+%Y%m%d"` - export SpineVER=$(git describe --long --tags | sed 's/^[ a-z_-]\+\([0-9.]\+\)/\1/;s/\([^-]*-g\)/r\1/;s/-/./g') - ### set local values in .envrc-local (or modify here if you must) - # export SpinePROJ=~/grotto/repo/git.repo/projects/doc-reform/code/software/spine - # export SpineDOC=~/grotto/repo/git.repo/projects/project-spine/doc-reform-markup/spine-markup-samples - # export SpineOUT=/srv/www/spine - export SpineDBpath=/var/www/sqlite - # export SpineDBpath=/srv/www/spine/sqlite - export SpineSRC=$SpinePROJ/src - export SpineBIN=$SpinePROJ/result/bin - export SpinePOD=$SpineDOC/markup/pod - export SpineSearchActionLocal='http://localhost/spine_search' - # export SpineSearchActionRemote='https://sisudoc.org/spine_search' - export SpineCGIform='spine_search' - export SpineSQLdb='spine.search.db' - export PROG_VER_GIT="`git describe --long --tags | sed -e 's/^[ a-z_-]\+\([0-9.]\+\)/\1/;s/\([^-]*-g\)/r\1/;s/-/./g'`" - export spineNixHelp="cat ./.env/nix-commands" - export spineHtml="spine --very-verbose --html --html-link-search --html-link-curate --curate --sqlite-update --sqlite-db-filename=\"spine.search.db\" --cgi-sqlite-search-filename=\"spine_search\" --sqlite-db-path=\"\$SpineDBpath\" --output=\"\$SpineOUT\" $SpinePOD/*" - export spineSqliteCreateDB="spine --very-verbose --sqlite-db-recreate --sqlite-db-path=\"$SpineDBpath\" --sqlite-db-filename=\"spine.search.db\"" - export spineSqlite="spine --very-verbose --sqlite-discrete --sqlite-db-path=\"$SpineDBpath\" --sqlite-db-filename=\"spine.search.db\" --output=\"\$SpineOUT\" $SpinePOD/*" - #export spineSqlite="spine --very-verbose --sqlite-update --sqlite-db-path=\"$SpineDBpath\" --sqlite-db-filename=\"spine.search.db\" --output=\"\$SpineOUT\" $SpinePOD/*" + description = "a sisu like document parser search form"; + inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; # "github:nixos/nixpkgs"; "github:NixOS/nixpkgs/nixpkgs-unstable"; "nixpkgs/nixos-unstable"; "nixpkgs/nixos-21.11"; + inputs.flake-utils.url = "github:numtide/flake-utils"; + outputs = { + self, + nixpkgs, + flake-utils, + } @ inputs: let + pname = "spine_search"; + version = "0.12.0"; + shell = ./shell.nix; # ./default.nix; + devEnv = ./.envrc; # ./shell.nix; # ./default.nix; + supportedSystems = ["x86_64-linux"]; # [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ]; + forAllSystems = nixpkgs.lib.genAttrs supportedSystems; + nixpkgsFor = forAllSystems (system: import nixpkgs {inherit system;}); # nixpkgs instantiated for supported system types. + checkPhase = '' + runHook preCheck + dub test --combined --skip-registry=all + runHook postCheck + ''; + installPhase = '' + runHook preInstall + mkdir -p $out/share/cgi-bin + install -m755 -D ./cgi-bin/spine_search $out/share/cgi-bin/spine_search + runHook postInstall + ''; + postInstall = '' + echo `ls -la $out/share/cgi-bin/spine_search` + ''; + in { + packages = forAllSystems (system: let + pkgs = nixpkgsFor.${system}; + in + with pkgs; { + default = stdenv.mkDerivation { + inherit pname; + inherit version; + executable = true; + src = self; + inherit shell; + inherit devEnv; + buildInputs = [sqlite]; + nativeBuildInputs = [dub ldc gnumake]; # [ dub dmd ]; [ dub ldc ]; [ dub gdc ]; + buildPhase = '' + runHook preBuild + for DC_ in dmd ldmd2 ldc2 gdc 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=$DC_ --combined --skip-registry=all + runHook postBuild ''; - in with pkgs; { - devShell = mkShell { - name = "spine base dev shell"; - inherit shell; - inherit devEnv; - #buildInputs = [ sqlite ]; - #nativeBuildInputs = [ dub dmd ldc gdc gnumake ]; - packages = [ - sqlite - dub dmd ldc gnumake - ]; - inherit shellHook; - }; - devShell-sqlite = mkShell { - name = "spine dev shell for latex & pdf output"; - inherit shell; - inherit devEnv; - packages = [ - dub dmd ldc gnumake - sqlite - ]; - inherit shellHook; - }; - default = import ./shell.nix { inherit pkgs; }; + inherit checkPhase; + inherit installPhase; + inherit postInstall; + }; + spine-search-dmd = stdenv.mkDerivation { + inherit pname; + inherit version; + meta.mainProgram = "spine_search-dmd"; + executable = true; + src = self; + inherit shell; + inherit devEnv; + buildInputs = [sqlite]; + nativeBuildInputs = [dub dmd gnumake]; + buildPhase = '' + runHook preBuild + dub build --compiler=$(type -P dmd) --build=dmd --combined --skip-registry=all + runHook postBuild + ''; + inherit checkPhase; + inherit installPhase; + inherit postInstall; + }; + spine-search-ldc = stdenv.mkDerivation { + inherit pname; + inherit version; + meta.mainProgram = "spine_search-ldc"; + executable = true; + src = self; + inherit shell; + inherit devEnv; + buildInputs = [sqlite]; + nativeBuildInputs = [dub ldc gnumake]; + buildPhase = '' + runHook preBuild + dub build --compiler=$(type -P ldc2) --build=ldc2 --combined --skip-registry=all + runHook postBuild + ''; + inherit checkPhase; + inherit installPhase; + inherit postInstall; + }; + #spine-search-gdc = stdenv.mkDerivation { + # inherit pname; + # inherit version; + # meta.mainProgram = "spine_search-gdc"; + # executable = true; + # src = self; + # inherit shell; + # inherit devEnv; + # buildInputs = [ sqlite ]; + # nativeBuildInputs = [ dub gdc gnumake ]; + # buildPhase = '' + # runHook preBuild + # dub build --compiler=$(type -P gdc) --build=gdc --combined --skip-registry=all + # runHook postBuild + # ''; + # inherit checkPhase; + # inherit installPhase; + # inherit postInstall; + #}; + #vendorSha256 = "sha256-0Q00000000000000000000000000000000000000000="; + }); + devShells = forAllSystems (system: let + pkgs = nixpkgsFor.${system}; + shellHook = '' + export DFLAGS="-O2 -inline -boundscheck=on -color=on" + export Date=`date "+%Y%m%d"` + export SpineVER=$(git describe --long --tags | sed 's/^[ a-z_-]\+\([0-9.]\+\)/\1/;s/\([^-]*-g\)/r\1/;s/-/./g') + ### set local values in .envrc-local (or modify here if you must) + # export SpinePROJ=~/grotto/repo/git.repo/projects/doc-reform/code/software/spine + # export SpineDOC=~/grotto/repo/git.repo/projects/project-spine/doc-reform-markup/spine-markup-samples + # export SpineOUT=/srv/www/spine + export SpineDBpath=/var/www/sqlite + # export SpineDBpath=/srv/www/spine/sqlite + export SpineSRC=$SpinePROJ/src + export SpineBIN=$SpinePROJ/result/bin + export SpinePOD=$SpineDOC/markup/pod + export SpineSearchActionLocal='http://localhost/spine_search' + # export SpineSearchActionRemote='https://sisudoc.org/spine_search' + export SpineCGIform='spine_search' + export SpineSQLdb='spine.search.db' + export PROG_VER_GIT="`git describe --long --tags | sed -e 's/^[ a-z_-]\+\([0-9.]\+\)/\1/;s/\([^-]*-g\)/r\1/;s/-/./g'`" + export spineNixHelp="cat ./.env/nix-commands" + export spineHtml="spine --very-verbose --html --html-link-search --html-link-curate --curate --sqlite-update --sqlite-db-filename=\"spine.search.db\" --cgi-sqlite-search-filename=\"spine_search\" --sqlite-db-path=\"\$SpineDBpath\" --output=\"\$SpineOUT\" $SpinePOD/*" + export spineSqliteCreateDB="spine --very-verbose --sqlite-db-recreate --sqlite-db-path=\"$SpineDBpath\" --sqlite-db-filename=\"spine.search.db\"" + export spineSqlite="spine --very-verbose --sqlite-discrete --sqlite-db-path=\"$SpineDBpath\" --sqlite-db-filename=\"spine.search.db\" --output=\"\$SpineOUT\" $SpinePOD/*" + #export spineSqlite="spine --very-verbose --sqlite-update --sqlite-db-path=\"$SpineDBpath\" --sqlite-db-filename=\"spine.search.db\" --output=\"\$SpineOUT\" $SpinePOD/*" + ''; + in + with pkgs; { + devShell = mkShell { + name = "spine base dev shell"; + inherit shell; + inherit devEnv; + #buildInputs = [ sqlite ]; + #nativeBuildInputs = [ dub dmd ldc gdc gnumake ]; + packages = [ + sqlite + dub + dmd + ldc + gnumake + ]; + inherit shellHook; + }; + devShell-sqlite = mkShell { + name = "spine dev shell for latex & pdf output"; + inherit shell; + inherit devEnv; + packages = [ + dub + dmd + ldc + gnumake + sqlite + ]; + inherit shellHook; + }; + default = import ./shell.nix {inherit pkgs;}; }); }; } |