diff options
| author | Ralph Amissah <ralph.amissah@gmail.com> | 2023-01-26 21:16:47 -0500 | 
|---|---|---|
| committer | Ralph Amissah <ralph.amissah@gmail.com> | 2023-02-10 10:42:28 -0500 | 
| commit | 970eea0a508d3a0a1f8c9e01c3667ceedaa5fb0f (patch) | |
| tree | 7967c4648c8e58084d15c195a5c1ef189c139be6 | |
| parent | nix & build housekeeping (diff) | |
nix flake & build, devShells etc.
| -rw-r--r-- | .env/echo-nixNote | 239 | ||||
| -rw-r--r-- | .env/nix-commands | 20 | ||||
| -rw-r--r-- | .envrc | 49 | ||||
| -rw-r--r-- | .envrc-local_ | 16 | ||||
| -rw-r--r-- | .gitattributes | 1 | ||||
| -rw-r--r-- | .gitignore | 3 | ||||
| -rw-r--r-- | derivation.nix | 4 | ||||
| -rw-r--r-- | flake.lock | 6 | ||||
| -rw-r--r-- | flake.nix | 141 | ||||
| -rw-r--r-- | org/config_git.org | 6 | ||||
| -rw-r--r-- | org/config_nix.org | 275 | ||||
| -rwxr-xr-x | shell.nix | 10 | 
12 files changed, 616 insertions, 154 deletions
| diff --git a/.env/echo-nixNote b/.env/echo-nixNote new file mode 100644 index 0000000..ad8717f --- /dev/null +++ b/.env/echo-nixNote @@ -0,0 +1,239 @@ +echo '-*- mode: org -*- + +* nixpkgs path? + +  # eval "$(nix print-dev-env)" +' > nixNote_.org + +echo "  <nixpkgs> == `nix-instantiate --find-file nixpkgs`" >> nixNote_.org + +echo ' +* nix build and show derivation + +#+BEGIN_SRC sh +nix-shell --pure + +nix-build +nix build -f default.nix --print-build-logs +nix shell -f default.nix --print-build-logs +nix develop --build -f derivation.nix -I .envrc --print-build-logs + +nix-instantiate | nix-build + +nix-instantiate -I .envrc | nix-build -I .envrc +nix build `nix-instantiate` +nix build `nix-instantiate -I .envrc` + +nix develop + +nix-instantiate | nix show-derivation | jq +nix-instantiate -I .envrc | nix show-derivation -f derivation.nix -I .envrc | jq + +nix-instantiate | nix show-derivation --recursive | jq +nix-instantiate -I .envrc | nix show-derivation -f derivation.nix --recursive -I .envrc | jq + +nix search --json 2>/dev/null |jq +#+END_SRC + +* version and build info + +#+BEGIN_SRC sh' >> nixNote_.org + +echo 'spine version (git) == $SpineVER' >> nixNote_.org +echo "spine version (git) == $SpineVER" >> nixNote_.org +echo 'nix-instantiate == `nix-instantiate`' >> nixNote_.org +echo "nix-instantiate == `nix-instantiate`" >> nixNote_.org + +echo "#+END_SRC + +* initialised shell variables + +#+BEGIN_SRC sh +SpineSRC=$SpineSRC +SpineDOC=$SpineDOC +SpinePOD=$SpinePOD +SpineOUTversioned=$SpineOUTversioned +SpineOUT=$SpineOUT +#+END_SRC +" >> nixNote_.org + +echo '* spine run instruction examples +** parallelized tasks +*** doc source + +#+BEGIN_SRC sh +$SpineBIN/spine --very-verbose --pod --source --output="$SpineOUTversioned" $SpinePOD/* +#+END_SRC + +*** html & epub output + +#+BEGIN_SRC sh +$SpineBIN/spine --very-verbose --html --epub --output="$SpineOUTversioned" $SpinePOD/* +#+END_SRC + +*** sqlite db for each document - populate each db + +#+BEGIN_SRC sh +$SpineBIN/spine --very-verbose --sqlite-discrete --output="$SpineOUTversioned" $SpinePOD/* +#+END_SRC + +*** doc source; html, epub; sqlite outputs + +#+BEGIN_SRC sh +$SpineBIN/spine --verbose --pod --html --epub --sqlite-discrete --output="$SpineOUTversioned" $SpinePOD/* +#+END_SRC + +*** curate (authors topics) + +#+BEGIN_SRC sh +$SpineBIN/spine --very-verbose --curate --output="$SpineOUTversioned" $SpinePOD/* +#+END_SRC + +*** html, curate + +#+BEGIN_SRC sh +$SpineBIN/spine --verbose --dark --html --html-link-curate --curate --output="$SpineOUTversioned" $SpinePOD/* +$SpineBIN/spine --very-verbose --html --html-link-curate --curate --output="$SpineOUTversioned" $SpinePOD/* +#+END_SRC + +*** composite command: source pod, html, epub, curate, sqlite + +#+BEGIN_SRC sh +$SpineBIN/spine --verbose --dark --pod --epub --html --html-link-curate --curate --sqlite-discrete --output="$SpineOUTversioned" $SpinePOD/* +#+END_SRC + +** sequential tasks +*** sqlite db (shared) - create db + +#+BEGIN_SRC sh +$SpineBIN/spine --very-verbose --sqlite-db-create --output="$SpineOUTversioned" +#+END_SRC + +*** sqlite db (shared) - populate db + +#+BEGIN_SRC sh +$SpineBIN/spine --very-verbose --sqlite-update --output="$SpineOUTversioned" $SpineDOC/spine-markup-samples/markup/pod/* +#+END_SRC + +*** sqlite db (shared) - drop db + +#+BEGIN_SRC sh +$SpineBIN/spine --very-verbose --sqlite-db-drop --output="$SpineOUTversioned" +#+END_SRC + +*** sqlite db (shared) - create & populate db (single step) + +#+BEGIN_SRC sh +$SpineBIN/spine --very-verbose --sqlite-db-create --sqlite-update --output="$SpineOUTversioned" $SpinePOD/* +#+END_SRC + +*** composite command: source pod, html, epub, curate, sqlite + +#+BEGIN_SRC sh +$SpineBIN/spine --verbose --no-parallel --dark --pod --epub --html --html-link-curate --curate --sqlite-discrete --output="$SpineOUTversioned" $SpinePOD/* +#+END_SRC + +** config [./pod/].dr/config_local_site + +#+BEGIN_SRC sh +cat $SpinePOD/.dr/config_local_site +$SpineBIN/spine --show-config $SpinePOD +$SpineBIN/spine --show-config --output="$SpineOUTversioned" $SpinePOD +#+END_SRC + +** cgi operations (output to $SpineOUT /var/www) + +#+BEGIN_SRC sh +$SpineBIN/spine --very-verbose --sqlite-db-create --output="$SpineOUT" $SpinePOD/* + +$SpineBIN/spine -v --cgi-search-form-codegen --output=$SpineOUT $SpinePOD/* + +$SpineBIN/spine -v --show-config --config=$SpinePOD/.dr + +$SpineBIN/spine --html $SpinePOD/* + + +$SpineBIN/spine -v --cgi-search-form-codegen --config=$SpinePOD/.dr/config_local_site +#+END_SRC + +*** generate html linked to search form + +#+BEGIN_SRC sh +$SpineBIN/spine -v --html --html-link-search --html-link-curate --curate  --output=$SpineOUT $SpinePOD/* +#+END_SRC + +*** create or re-create sql db (--sqlite-db-create or --sqlite-db-recreate) + +#+BEGIN_SRC sh +$SpineBIN/spine -v --sqlite-db-create --sqlite-db-filename="spine.search.db" --sqlite-db-path="$SpineDBpath" +$SpineBIN/spine -v --sqlite-db-recreate --sqlite-db-filename="spine.search.db" --sqlite-db-path="$SpineDBpath" +#+END_SRC + +*** populate sqlite db + +#+BEGIN_SRC sh +$SpineBIN/spine -v --sqlite-update --sqlite-db-filename="spine.search.db" --output=$SpineOUT $SpinePOD/* +#+END_SRC + +*** generate html (linked to search form), sql output, curate COMPOSITE + +#+BEGIN_SRC sh +$SpineBIN/spine -v --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/* +$SpineBIN/spine --epub --html --html-link-search --html-link-curate --curate --sqlite-update --sqlite-db-filename="spine.search.db" --cgi-sqlite-search-filename="spine_search" --cgi-url-action="https://sisudoc.org/spine_search" --ouput="$SpineOUT" $SpinePOD/* +#+END_SRC + +*** generate html (linked to search form), sql output, curate COMPOSITE with resource configuration + +if names and paths are configured in resource configuration file, e.g. $SpinePOD/.rc/config_local_site + +#+BEGIN_SRC sh +$SpineBIN/spine -v --html --html-link-search --html-link-curate --curate --sqlite-update $SpinePOD/* +#+END_SRC + +#+BEGIN_SRC yaml +# sample resource configuration file ( $SpinePOD/.rc/config_local_site ) +output: +  path:                        "/srv/www/spine" +default: +  language:                    "en" +  papersize:                   "a4" +  text_wrap:                   "80" +  digest:                      "sha256" +webserv: +  http:                        "http" +  domain:                      "localhost" +  data_http:                   "http" +  data_domain:                 "localhost" +  data_root_url:               "https://sisudoc.org" +  data_root_path:              "/srv/www/spine" +  images_root_part:            "image" +  cgi_search_form_title:       "≅ SiSU Spine search" +  cgi_http:                    "https" +  cgi_domain:                  "sisudoc.org" +  cgi_bin_url:                 "http://sisudoc.org/cgi-bin" +  cgi_bin_part:                "cgi-bin" +  cgi_bin_path:                "/var/www/cgi/cgi-bin" +  cgi_search_script:           "spine_search" +  cgi_action:                  "https://sisudoc.org/spine_search" +  db_sqlite_filename:          "spine.search.db" +  db_sqlite_path:              "/var/www/sqlite" +#+END_SRC + +*** make search form + +#+BEGIN_SRC sh +$SpineBIN/spine -v --cgi-search-form-codegen --config=$SpinePOD/.dr/config_local_site +#+END_SRC + +*** latex + +#+BEGIN_SRC sh +$SpineBIN/spine --latex --serial --output="$SpineOUT" $SpinePOD/* +ls $SpineOutstatic/latex/*.tex +#+END_SRC +' >> nixNote_.org + +#cat nixNote_.org + +#echo "emacs nixNote_.org" +#echo "cat nixNote_.org" diff --git a/.env/nix-commands b/.env/nix-commands new file mode 100644 index 0000000..7cfa723 --- /dev/null +++ b/.env/nix-commands @@ -0,0 +1,20 @@ +- nix flake update && nix flake check --show-trace && nix flake show && nix develop .#devShell + +- nix build .#default --print-build-logs +- nix build .#spine-dmd --print-build-logs +- nix build .#spine-ldc --print-build-logs +- nix build .#spine-gdc --print-build-logs + +- nix develop +  - nix develop .#devShell --print-build-logs +  - nix develop .#devShell-html --print-build-logs +  - nix develop .#devShell-epub --print-build-logs +  - nix develop .#devShell-latex-pdf --print-build-logs +  - nix develop .#devShell-sqlite --print-build-logs +  - nix develop .#devShell-i18n --print-build-logs + +nix run .#default --print-build-logs + +nix develop --build .#default --print-build-logs + +nix-shell '<nixpkgs>' -A nix --pure @@ -1,34 +1,39 @@  use flake .  #use flake .#default  NIX_ENFORCE_PURITY=1 -NixDirEnvVersion="2.2.0" +NixDirEnvVersion="2.2.1"  if ! has nix_direnv_version || ! nix_direnv_version ${NixDirEnvVersion}; then  # - https://github.com/nix-community/nix-direnv  # source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/${NixDirEnvVersion}/direnvrc" "sha256-0000000000000000000000000000000000000000000=" -  source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/${NixDirEnvVersion}/direnvrc" "sha256-5EwyKnkJNQeXrRkYbwwRBcXbibosCJqyIUuz9Xq+LRc=" +  source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/${NixDirEnvVersion}/direnvrc" "sha256-zelF0vLbEl5uaqrfIzbgNzJWGmLzCmYAkInj/LNxvKs="  fi  watch_file flake.lock  watch_file flake.nix -nix flake update && nix flake check --show-trace && nix flake show  if [ -f .envrc-local ]; then    source_env_if_exists .envrc-local || source .envrc-local  fi -echo " - -- nix flake update && nix flake check --show-trace && nix flake show && nix develop .#devShell - -- nix build .#default --print-build-logs -- nix build .#spine-dmd --print-build-logs -- nix build .#spine-ldc --print-build-logs -- nix build .#spine-gdc --print-build-logs - -nix-shell '<nixpkgs>' -A nix --pure - -nix run .#default --print-build-logs - -nix develop --build .#default --print-build-logs - -nix shell .#default --print-build-logs --command spine -v -nix shell .#default --print-build-logs --command spine --very-verbose --epub --html --html-link-search --html-link-curate --curate --output=\"\$SpineOUT\" ./markup/pod -nix shell .#default --print-build-logs --command 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\" ./markup/pod -" +PATH_add result/bin +#nix flake update && nix flake check --show-trace && nix flake show +# echo " +# +# - nix flake update && nix flake check --show-trace && nix flake show && nix develop .#devShell +# +# - nix build .#default --print-build-logs +# - nix build .#spine-dmd --print-build-logs +# - nix build .#spine-ldc --print-build-logs +# - nix build .#spine-gdc --print-build-logs +# +# - nix develop +#   - nix develop .#devShell --print-build-logs +#   - nix develop .#devShell-html --print-build-logs +#   - nix develop .#devShell-epub --print-build-logs +#   - nix develop .#devShell-latex-pdf --print-build-logs +#   - nix develop .#devShell-sqlite --print-build-logs +#   - nix develop .#devShell-i18n --print-build-logs +# +# nix run .#default --print-build-logs +# +# nix develop --build .#default --print-build-logs +# +# nix-shell '<nixpkgs>' -A nix --pure +# " diff --git a/.envrc-local_ b/.envrc-local_ index 902526a..c8c3f3d 100644 --- a/.envrc-local_ +++ b/.envrc-local_ @@ -1,25 +1,17 @@ -PATH_add result/bin -export NIX_PATH=/nix/var/nix/profiles/per-user/root/channels/nixos +#export NIX_PATH=/nix/var/nix/profiles/per-user/root/channels/nixos  #export NIX_PATH=/srv/nix/nixpkgs  #export NIX_PATH=nixpkgs=/srv/nix/nixpkgs  export DFLAGS="-O2 -inline -boundscheck=on -color=on" -## load the flake devShell -# eval "$(nix print-dev-env)" -# echo $NIX_BUILD_TOP -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') +#export SpineBIN=result/bin  export SpinePROJ=~/grotto/repo/git.repo/projects/doc-reform/code/software/spine -export SpineSRC=$SpinePROJ/src -export SpineBIN=$SpinePROJ/result/bin  export SpineDOC=~/grotto/repo/git.repo/projects/project-spine/doc-reform-markup/spine-markup-samples -export SpinePOD=$SpineDOC/markup/pod -export SpineOUTversioned=/srv/www/spine/$SpineVER  export SpineOUT=/srv/www/spine +export SpineOUTversioned=/srv/www/spine/$SpineVER  export SpineDBpath=/var/www/sqlite  #export SpineDBpath=/srv/www/spine/sqlite +export SpineCGIbin=/var/www/cgi/cgi-bin  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 PROG_VER_DECLARED="`cat ./views/version.txt | grep --color=never "enum" | sed 's/.\+(\([0-9]\+\),[ \t]\+\([0-9]\+\),[ \t]\+\([0-9]\+\)[ \t]*).\+/\1.\2.\3/g'`" diff --git a/.gitattributes b/.gitattributes index db88acf..a16ee24 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2,5 +2,6 @@  /subprojects export-ignore  /build export-ignore  .gitattributes export-ignore +#.gitignore export-ignore  tangle export-ignore  flake.lock export-ignore @@ -10,6 +10,8 @@  !*.nix  !flake.lock  !.envrc +!.env +!.env/**  !README.md  !README  !COPYRIGHT @@ -72,7 +74,6 @@ tmp/**  *_  *.swp  *~ -*~  \#*  *.\#*  !.envrc-local_ diff --git a/derivation.nix b/derivation.nix index da3c183..e7f5232 100644 --- a/derivation.nix +++ b/derivation.nix @@ -83,9 +83,9 @@ mkDubDerivation rec {    nativeBuildInputs = with pkgs; [ dub ldc ];    buildInputs = with pkgs; [ nixVersions.unstable sqlite ];    meta = with pkgs.lib; { -    description = "A sisu like parser and document generator"; +    description = "A sisu like parser & document generator";      longDescription = '' -      a sisu like parser and document generator +      a sisu like parser & document generator      '';      homepage    = "https://sisudoc.org";      license     = licenses.agpl3Plus; @@ -17,11 +17,11 @@      },      "nixpkgs": {        "locked": { -        "lastModified": 1674487464, -        "narHash": "sha256-Jgq50e4S4JVCYpWLqrabBzDp/1mfaxHCh8/OOorHTy0=", +        "lastModified": 1675758091, +        "narHash": "sha256-7gFSQbSVAFUHtGCNHPF7mPc5CcqDk9M2+inlVPZSneg=",          "owner": "NixOS",          "repo": "nixpkgs", -        "rev": "3954218cf613eba8e0dcefa9abe337d26bc48fd0", +        "rev": "747927516efcb5e31ba03b7ff32f61f6d47e7d87",          "type": "github"        },        "original": { @@ -2,12 +2,12 @@    description                  = "a sisu like parser & document generator";    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 }: +  outputs = { self, nixpkgs, flake-utils } @inputs:      let        pname                    = "spine";        version                  = "0.12.0";        shell                    = ./shell.nix; # ./default.nix; -      devEnv                   = ./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. @@ -24,25 +24,6 @@        '';        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        '';      in { @@ -133,7 +114,7 @@              inherit postInstall;            };            #vendorSha256 = "sha256-0Q00000000000000000000000000000000000000000="; -        }); +      });        apps = forAllSystems (system: {          default = {            type                 = "app"; @@ -141,9 +122,119 @@          };        });        devShells = forAllSystems (system: -        let pkgs               = nixpkgsFor.${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 SpineOUTversioned=$SpineOUT/$SpineVER +            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 PROG_VER_DECLARED="`cat ./views/version.txt | grep --color=never "enum" | sed 's/.\+(\([0-9]\+\),[ \t]\+\([0-9]\+\),[ \t]\+\([0-9]\+\)[ \t]*).\+/\1.\2.\3/g'`" +            export spineNixHelp="cat ./.env/nix-commands" +            export spineTest="nix shell .#default --print-build-logs --command spine --very-verbose --epub --html --html-link-search --html-link-curate --curate --output=\"\$SpineOUT\" $SpinePOD/*" +            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 spineEpub="spine --very-verbose --epub --output=\"\$SpineOUT\" $SpinePOD/*" +            export spineLatex="spine --very-verbose --latex --output=\"\$SpineOUT\" $SpinePOD/*" +            export spinePdf="spine --very-verbose --pdf --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 { }; -        }); +          devShell = mkShell rec { +            name = "spine dev shell default"; +            inherit shell; +            inherit devEnv; +            #buildInputs        = [ sqlite ]; +            #nativeBuildInputs  = [ dub dmd ldc gdc gnumake ]; +            packages     = [ +              sqlite +              dub dmd ldc gdc gnumake +            ]; +            inherit shellHook; +          }; +          devShell-epub = mkShell rec { +            name = "spine dev shell for epub output"; +            inherit shell; +            inherit devEnv; +            packages     = [ +              dub dmd ldc gdc gnumake +              sqlite +              libxml2 +              html-tidy +              xmlstarlet +              epubcheck +              ebook_tools +              libxml2 +              html-tidy +              xmlstarlet +              epubcheck +              ebook_tools +              epr +              sigil +              calibre #(suite includes: ebook-viewer) +              foliate +            ]; +            inherit shellHook; +          }; +          devShell-html = mkShell rec { +            name = "spine dev shell for latex & pdf output"; +            inherit shell; +            inherit devEnv; +            packages     = [ +              dub dmd ldc gdc gnumake +              sqlite +            ]; +            inherit shellHook; +          }; +          devShell-latex-pdf = mkShell rec { +            name = "spine dev shell for latex & pdf output"; +            inherit shell; +            inherit devEnv; +            packages     = [ +              dub dmd ldc gdc gnumake +              sqlite +              source-sans-pro +              source-serif-pro +              source-code-pro +              texlive.combined.scheme-full +            ]; +            inherit shellHook; +          }; +          devShell-sqlite = mkShell rec { +            name = "spine dev shell for latex & pdf output"; +            inherit shell; +            inherit devEnv; +            packages     = [ +              dub dmd ldc gdc gnumake +              sqlite +            ]; +            inherit shellHook; +          }; +          devShell-i18n = mkShell { +            inherit shell; +            inherit devEnv; +            packages     = [ +              dub dmd ldc gdc gnumake +              sqlite +              perl534Packages.Po4a +            ]; +            inherit shellHook; +          }; +      });    };  } diff --git a/org/config_git.org b/org/config_git.org index 9957635..592021d 100644 --- a/org/config_git.org +++ b/org/config_git.org @@ -34,6 +34,8 @@  !*.nix  !flake.lock  !.envrc +!.env +!.env/**  !README.md  !README  !COPYRIGHT @@ -96,7 +98,6 @@ tmp/**  ,*_  ,*.swp  ,*~ -,*~  \#*  ,*.\#*  !.envrc-local_ @@ -106,7 +107,7 @@ tmp/**  #.reggae/**  #+END_SRC -** gitattributes :gitattributes: +** .gitattributes :gitattributes:  #+HEADER: :tangle "../.gitattributes"  #+BEGIN_SRC sh @@ -114,6 +115,7 @@ tmp/**  /subprojects export-ignore  /build export-ignore  .gitattributes export-ignore +#.gitignore export-ignore  tangle export-ignore  flake.lock export-ignore  #+END_SRC diff --git a/org/config_nix.org b/org/config_nix.org index c036a14..1953533 100644 --- a/org/config_nix.org +++ b/org/config_nix.org @@ -38,37 +38,42 @@  use flake .  #use flake .#default  NIX_ENFORCE_PURITY=1 -NixDirEnvVersion="2.2.0" +NixDirEnvVersion="2.2.1"  if ! has nix_direnv_version || ! nix_direnv_version ${NixDirEnvVersion}; then  # - https://github.com/nix-community/nix-direnv  # source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/${NixDirEnvVersion}/direnvrc" "sha256-0000000000000000000000000000000000000000000=" -  source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/${NixDirEnvVersion}/direnvrc" "sha256-5EwyKnkJNQeXrRkYbwwRBcXbibosCJqyIUuz9Xq+LRc=" +  source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/${NixDirEnvVersion}/direnvrc" "sha256-zelF0vLbEl5uaqrfIzbgNzJWGmLzCmYAkInj/LNxvKs="  fi  watch_file flake.lock  watch_file flake.nix -nix flake update && nix flake check --show-trace && nix flake show  if [ -f .envrc-local ]; then    source_env_if_exists .envrc-local || source .envrc-local  fi -echo " - -- nix flake update && nix flake check --show-trace && nix flake show && nix develop .#devShell - -- nix build .#default --print-build-logs -- nix build .#spine-dmd --print-build-logs -- nix build .#spine-ldc --print-build-logs -- nix build .#spine-gdc --print-build-logs - -nix-shell '<nixpkgs>' -A nix --pure - -nix run .#default --print-build-logs - -nix develop --build .#default --print-build-logs - -nix shell .#default --print-build-logs --command spine -v -nix shell .#default --print-build-logs --command spine --very-verbose --epub --html --html-link-search --html-link-curate --curate --output=\"\$SpineOUT\" ./markup/pod -nix shell .#default --print-build-logs --command 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\" ./markup/pod -" +PATH_add result/bin +#nix flake update && nix flake check --show-trace && nix flake show +# echo " +# +# - nix flake update && nix flake check --show-trace && nix flake show && nix develop .#devShell +# +# - nix build .#default --print-build-logs +# - nix build .#spine-dmd --print-build-logs +# - nix build .#spine-ldc --print-build-logs +# - nix build .#spine-gdc --print-build-logs +# +# - nix develop +#   - nix develop .#devShell --print-build-logs +#   - nix develop .#devShell-html --print-build-logs +#   - nix develop .#devShell-epub --print-build-logs +#   - nix develop .#devShell-latex-pdf --print-build-logs +#   - nix develop .#devShell-sqlite --print-build-logs +#   - nix develop .#devShell-i18n --print-build-logs +# +# nix run .#default --print-build-logs +# +# nix develop --build .#default --print-build-logs +# +# nix-shell '<nixpkgs>' -A nix --pure +# "  #+END_SRC  **** .envrc-local CHECK MODIFY @@ -78,31 +83,23 @@ nix shell .#default --print-build-logs --command spine --very-verbose --html --h  #+HEADER: :tangle ../.envrc-local_  #+HEADER: :noweb yes  #+BEGIN_SRC sh -PATH_add result/bin -export NIX_PATH=/nix/var/nix/profiles/per-user/root/channels/nixos +#export NIX_PATH=/nix/var/nix/profiles/per-user/root/channels/nixos  #export NIX_PATH=/srv/nix/nixpkgs  #export NIX_PATH=nixpkgs=/srv/nix/nixpkgs  export DFLAGS="-O2 -inline -boundscheck=on -color=on" -## load the flake devShell -# eval "$(nix print-dev-env)" -# echo $NIX_BUILD_TOP -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') +#export SpineBIN=result/bin  export SpinePROJ=~/grotto/repo/git.repo/projects/doc-reform/code/software/spine -export SpineSRC=$SpinePROJ/src -export SpineBIN=$SpinePROJ/result/bin  export SpineDOC=~/grotto/repo/git.repo/projects/project-spine/doc-reform-markup/spine-markup-samples -export SpinePOD=$SpineDOC/markup/pod -export SpineOUTversioned=/srv/www/spine/$SpineVER  export SpineOUT=/srv/www/spine +export SpineOUTversioned=/srv/www/spine/$SpineVER  export SpineDBpath=/var/www/sqlite  #export SpineDBpath=/srv/www/spine/sqlite +export SpineCGIbin=/var/www/cgi/cgi-bin  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 PROG_VER_DECLARED="`cat ./views/version.txt | grep --color=never "enum" | sed 's/.\+(\([0-9]\+\),[ \t]\+\([0-9]\+\),[ \t]\+\([0-9]\+\)[ \t]*).\+/\1.\2.\3/g'`"  #+END_SRC  *** flake :flake: @@ -116,16 +113,30 @@ export PROG_VER_DECLARED="`cat ./views/version.txt | grep --color=never "enum" |    description                  = "a sisu like parser & document generator";    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 }: +  outputs = { self, nixpkgs, flake-utils } @inputs:      let        pname                    = "spine";        version                  = "<<spine_version_set>>";        shell                    = ./shell.nix; # ./default.nix; -      devEnv                   = ./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. -      <<flake_phases_other_than_build>> +      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` +        $out/bin/spine -v +      '';      in {        packages = forAllSystems (system:          let pkgs               = nixpkgsFor.${system}; @@ -214,7 +225,7 @@ export PROG_VER_DECLARED="`cat ./views/version.txt | grep --color=never "enum" |              inherit postInstall;            };            #vendorSha256 = "sha256-0Q00000000000000000000000000000000000000000="; -        }); +      });        apps = forAllSystems (system: {          default = {            type                 = "app"; @@ -222,10 +233,120 @@ export PROG_VER_DECLARED="`cat ./views/version.txt | grep --color=never "enum" |          };        });        devShells = forAllSystems (system: -        let pkgs               = nixpkgsFor.${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 SpineOUTversioned=$SpineOUT/$SpineVER +            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 PROG_VER_DECLARED="`cat ./views/version.txt | grep --color=never "enum" | sed 's/.\+(\([0-9]\+\),[ \t]\+\([0-9]\+\),[ \t]\+\([0-9]\+\)[ \t]*).\+/\1.\2.\3/g'`" +            export spineNixHelp="cat ./.env/nix-commands" +            export spineTest="nix shell .#default --print-build-logs --command spine --very-verbose --epub --html --html-link-search --html-link-curate --curate --output=\"\$SpineOUT\" $SpinePOD/*" +            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 spineEpub="spine --very-verbose --epub --output=\"\$SpineOUT\" $SpinePOD/*" +            export spineLatex="spine --very-verbose --latex --output=\"\$SpineOUT\" $SpinePOD/*" +            export spinePdf="spine --very-verbose --pdf --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 { }; -        }); +          devShell = mkShell rec { +            name = "spine dev shell default"; +            inherit shell; +            inherit devEnv; +            #buildInputs        = [ sqlite ]; +            #nativeBuildInputs  = [ dub dmd ldc gdc gnumake ]; +            packages     = [ +              sqlite +              dub dmd ldc gdc gnumake +            ]; +            inherit shellHook; +          }; +          devShell-epub = mkShell rec { +            name = "spine dev shell for epub output"; +            inherit shell; +            inherit devEnv; +            packages     = [ +              dub dmd ldc gdc gnumake +              sqlite +              libxml2 +              html-tidy +              xmlstarlet +              epubcheck +              ebook_tools +              libxml2 +              html-tidy +              xmlstarlet +              epubcheck +              ebook_tools +              epr +              sigil +              calibre #(suite includes: ebook-viewer) +              foliate +            ]; +            inherit shellHook; +          }; +          devShell-html = mkShell rec { +            name = "spine dev shell for latex & pdf output"; +            inherit shell; +            inherit devEnv; +            packages     = [ +              dub dmd ldc gdc gnumake +              sqlite +            ]; +            inherit shellHook; +          }; +          devShell-latex-pdf = mkShell rec { +            name = "spine dev shell for latex & pdf output"; +            inherit shell; +            inherit devEnv; +            packages     = [ +              dub dmd ldc gdc gnumake +              sqlite +              source-sans-pro +              source-serif-pro +              source-code-pro +              texlive.combined.scheme-full +            ]; +            inherit shellHook; +          }; +          devShell-sqlite = mkShell rec { +            name = "spine dev shell for latex & pdf output"; +            inherit shell; +            inherit devEnv; +            packages     = [ +              dub dmd ldc gdc gnumake +              sqlite +            ]; +            inherit shellHook; +          }; +          devShell-i18n = mkShell { +            inherit shell; +            inherit devEnv; +            packages     = [ +              dub dmd ldc gdc gnumake +              sqlite +              perl534Packages.Po4a +            ]; +            inherit shellHook; +          }; +      });    };  }  #+END_SRC @@ -359,10 +480,10 @@ buildPhase = ''    dub build --compiler=$DC --build=$DC_ --combined --skip-registry=all    runHook postBuild  ''; -<<flake_phases_other_than_build>> +<<flake_phases_other_than_buildPhase>>  #+END_SRC -#+NAME: flake_phases_other_than_build +#+NAME: flake_phases_other_than_buildPhase  #+HEADER: :noweb yes  #+BEGIN_SRC nix  checkPhase = '' @@ -401,36 +522,6 @@ postInstall = ''  '';  #+END_SRC -***** flake output default - -#+NAME: flake_output_default -#+HEADER: :noweb yes -#+BEGIN_SRC nix -packages.x86_64-linux.default = self.packages.x86_64-linux.spine; -#+END_SRC - -#+NAME: flake_output_spine -#+HEADER: :noweb yes -#+BEGIN_SRC nix -packages.x86_64-linux.spine = -  let -    pkgs = import nixpkgs { -      system = "x86_64-linux"; -    }; -    #targetOf = package: "${package.targetPath or "."}/${package.targetName or package.name}"; -  in pkgs.stdenv.mkDerivation { -    <<flake_metadata>> -    inherit self; -    src = self; -    #shell = ./shell.nix; -    shell = ./default.nix; -    devEnv = ./devenv.nix; -    <<flake_phases>> -    buildInputs       = [ sqlite ]; -    nativeBuildInputs = with pkgs; [ <<d-compiler>> dub ]; # [ dmd dub ]; [ ldc dub ]; [ gdc dub ]; -  }; -#+END_SRC -  ***** d-compiler (dmd ldc gdc)  - dmd ldc gdc @@ -577,12 +668,12 @@ mkShell {      #meson      ### sqlite search related      sqlite -    # ### pdf_latex_related +    ### pdf_latex_related      # source-sans-pro      # source-serif-pro      # source-code-pro      # texlive.combined.scheme-full -    # ### xml_and_epub_related +    ### xml_and_epub_related      # libxml2      # html-tidy      # xmlstarlet @@ -592,10 +683,8 @@ mkShell {      # sigil      # calibre #(suite includes: ebook-viewer)      # foliate -    # ### i18n translation related +    ### i18n translation related      # perl534Packages.Po4a -    ### candy -    #starship    ];    shellHook = ''      #if [[ -f ".envrc" ]]; then @@ -632,7 +721,7 @@ mkShell {          nix shell --print-build-logs --command spine -v        - nix develop -        nix develop --build  .#default --print-build-logs +        nix develop --build .#default --print-build-logs          nix develop --build -f derivation.nix -I .envrc --print-build-logs          nix develop ; eval \$buildPhase @@ -1069,9 +1158,9 @@ mkDubDerivation rec {    nativeBuildInputs = with pkgs; [ dub ldc ];    buildInputs = with pkgs; [ nixVersions.unstable sqlite ];    meta = with pkgs.lib; { -    description = "A sisu like parser and document generator"; +    description = "A sisu like parser & document generator";      longDescription = '' -      a sisu like parser and document generator +      a sisu like parser & document generator      '';      homepage    = "https://sisudoc.org";      license     = licenses.agpl3Plus; @@ -1451,6 +1540,30 @@ nix show-derivation /nix/store/q7n14bm8j5vzm62qaraczdb4bpyf59vv-spine-0.11.1.drv  **** .env/echo-nixNote CHECK MODIFY +#+HEADER: :tangle ../.env/nix-commands +#+BEGIN_SRC text +- nix flake update && nix flake check --show-trace && nix flake show && nix develop .#devShell + +- nix build .#default --print-build-logs +- nix build .#spine-dmd --print-build-logs +- nix build .#spine-ldc --print-build-logs +- nix build .#spine-gdc --print-build-logs + +- nix develop +  - nix develop .#devShell --print-build-logs +  - nix develop .#devShell-html --print-build-logs +  - nix develop .#devShell-epub --print-build-logs +  - nix develop .#devShell-latex-pdf --print-build-logs +  - nix develop .#devShell-sqlite --print-build-logs +  - nix develop .#devShell-i18n --print-build-logs + +nix run .#default --print-build-logs + +nix develop --build .#default --print-build-logs + +nix-shell '<nixpkgs>' -A nix --pure +#+END_SRC +  #+HEADER: :tangle ../.env/echo-nixNote  #+BEGIN_SRC sh  echo '-*- mode: org -*- @@ -26,12 +26,12 @@ mkShell {      #meson      ### sqlite search related      sqlite -    # ### pdf_latex_related +    ### pdf_latex_related      # source-sans-pro      # source-serif-pro      # source-code-pro      # texlive.combined.scheme-full -    # ### xml_and_epub_related +    ### xml_and_epub_related      # libxml2      # html-tidy      # xmlstarlet @@ -41,10 +41,8 @@ mkShell {      # sigil      # calibre #(suite includes: ebook-viewer)      # foliate -    # ### i18n translation related +    ### i18n translation related      # perl534Packages.Po4a -    ### candy -    #starship    ];    shellHook = ''      #if [[ -f ".envrc" ]]; then @@ -81,7 +79,7 @@ mkShell {          nix shell --print-build-logs --command spine -v        - nix develop -        nix develop --build  .#default --print-build-logs +        nix develop --build .#default --print-build-logs          nix develop --build -f derivation.nix -I .envrc --print-build-logs          nix develop ; eval \$buildPhase | 
