aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--org/config_d_cfte.org56
-rw-r--r--org/config_dub.org866
-rw-r--r--org/config_git.org154
-rw-r--r--org/config_make.org1103
-rw-r--r--org/config_meson.org485
-rw-r--r--org/config_misc.org228
-rw-r--r--org/config_nix.org1183
-rw-r--r--org/spine.org64
-rw-r--r--org/spine_build_scaffold.org3918
-rw-r--r--sundry/spine_search_cgi/.envrc-local_3
10 files changed, 4079 insertions, 3981 deletions
diff --git a/org/config_d_cfte.org b/org/config_d_cfte.org
index 5755b02..35f458e 100644
--- a/org/config_d_cfte.org
+++ b/org/config_d_cfte.org
@@ -16,8 +16,58 @@
#+PROPERTY: header-args+ :padline no
#+PROPERTY: header-args+ :mkdirp yes
-* cfte views SET
-** spine configuration.txt
+* cfte views version.txt configuration.txt (set version & configuration) SET
+
+** program version
+*** set program version tangle SET :version:
+
+#+HEADER: :tangle "../views/version.txt"
+#+BEGIN_SRC txt
+<<spine_version_struct>>
+<<spine_version_current_set>>
+<<spine_compiler_restrictions>>
+#+END_SRC
+
+*** program version struct
+
+#+NAME: spine_version_struct
+#+BEGIN_SRC d
+/+ obt - org-mode generated file +/
+struct Version {
+ int major;
+ int minor;
+ int patch;
+}
+#+END_SRC
+
+*** set program version VERSION :version:set:project:
+
+#+NAME: spine_version_current_set
+#+BEGIN_SRC d
+enum _ver = Version(0, 11, 3);
+#+END_SRC
+
+** compilation restrictions (supported compilers)
+- set compilation restrictions
+
+https://dlang.org/spec/version.html#predefined-versions
+
+#+NAME: spine_compiler_restrictions
+#+BEGIN_SRC d
+version (Posix) {
+ version (DigitalMars) {
+ } else version (LDC) {
+ } else version (GNU) {
+ } else {
+ static assert (0, "Unsupported D compiler");
+ }
+} else {
+ static assert (0, "Unsupported D compiler");
+}
+#+END_SRC
+
+** set configuration :configuration:
+*** spine configuration.txt SET
#+HEADER: :tangle "../views/configuration_suggested.txt"
#+BEGIN_SRC d
@@ -46,7 +96,7 @@ struct Cfg {
enum _cfg = Cfg();
#+END_SRC
-** spine_search configuration.txt
+*** spine_search configuration.txt SET
#+HEADER: :tangle "../sundry/spine_search_cgi/views/configuration_suggested.txt"
#+BEGIN_SRC d
diff --git a/org/config_dub.org b/org/config_dub.org
new file mode 100644
index 0000000..faa0a43
--- /dev/null
+++ b/org/config_dub.org
@@ -0,0 +1,866 @@
+-*- mode: org -*-
+#+TITLE: configuration dub
+#+DESCRIPTION: documents - structuring, various output representations & search
+#+FILETAGS: :spine:hub:
+#+AUTHOR: Ralph Amissah
+#+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]]
+#+COPYRIGHT: Copyright (C) 2015 - 2021 Ralph Amissah
+#+LANGUAGE: en
+#+STARTUP: content hideblocks hidestars noindent entitiespretty
+#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
+#+PROPERTY: header-args :exports code
+#+PROPERTY: header-args+ :noweb yes
+#+PROPERTY: header-args+ :eval no
+#+PROPERTY: header-args+ :results no
+#+PROPERTY: header-args+ :cache no
+#+PROPERTY: header-args+ :padline no
+#+PROPERTY: header-args+ :mkdirp yes
+
+** spine version VERSION :version:set:project:
+
+#+NAME: version_spine
+#+BEGIN_SRC sh
+0.11.3
+#+END_SRC
+
+** dub
+*** dub.settings.json :dub:config:json:
+
+#+HEADER: :NO-tangle ../dub.settings.json
+#+BEGIN_SRC json
+{
+ "defaultArchitecture": "x86_64",
+ "defaultCompiler": "ldc"
+}
+#+END_SRC
+
+*** dub.json :dub:config:json:
+**** dub.json
+***** file-system download external dependencies
+
+- d2sqlite3
+- dyaml
+ - tinyendian
+- imageformats
+
+#+HEADER: :tangle ../dub.json
+#+BEGIN_SRC json
+{
+ "authors": [
+ "Ralph Amissah"
+ ],
+ "copyright": "Copyright © 2015 - 2021 Ralph Amissah",
+ "name": "spine",
+ "version": "<<version_spine>>",
+ "description": "a sisu like document parser",
+ "homepage": "https://sisudoc.org",
+ "license": "AGPL-3.0+",
+ "targetPath": "./bin",
+ "sourcePaths": [ "./src/doc_reform" ],
+ "stringImportPaths": [ "./views" ],
+ "buildRequirements": [ "allowWarnings" ],
+ "targetType": "executable",
+ "platforms": [ "posix" ],
+ "buildTypes": {
+ "dmd": {
+ "dflags": [ "-J=views", "-I=src/doc_reform" ],
+ "buildOptions": [ "verbose", "inline" ],
+ "buildRequirements": [ "allowWarnings" ]
+ },
+ "ldc": {
+ "dflags": [ "-O2", "-J=views", "-I=src/doc_reform" ],
+ "buildOptions": [ "verbose", "optimize", "inline" ],
+ "buildRequirements": [ "allowWarnings" ]
+ }
+ },
+ "dependencies": {
+ "spine:d2sqlite3": "*",
+ "spine:imageformats": "*",
+ "spine:dyaml": "*"
+ },
+ "subPackages": [
+ {
+ "name": "d2sqlite3",
+ "description": "A thin wrapper around SQLite 3",
+ "homepage": "https://github.com/dlang-community/d2sqlite3",
+ "authors": [ "Nicolas Sicard", "Other contributors: see Github repo" ],
+ "copyright": "Copyright 2011-18 Nicolas Sicard",
+ "license": "BSL-1.0",
+ "sourcePaths": [ "./src/ext_depends/d2sqlite3/source" ],
+ "configurations": [
+ {
+ "name": "d2sqlite3",
+ "d2sqlite3": "with-lib",
+ "targetType": "library",
+ "systemDependencies": "SQLite version >= 3.8.7",
+ "libs": [ "sqlite3" ],
+ "excludedSourceFiles": [ "source/tests.d" ]
+ }
+ ]
+ },
+ {
+ "name": "imageformats",
+ "description": "Decoders for PNG, TGA, BMP, JPEG and encoders for PNG, TGA, BMP.",
+ "authors": [ "Tero Hänninen" ],
+ "license": "BSL-1.0",
+ "sourcePaths": [ "./src/ext_depends/imageformats/imageformats" ]
+ },
+ {
+ "name": "dyaml",
+ "description": "YAML parser and emitter",
+ "authors": [
+ "Ferdinand Majerech",
+ "Cameron \"Herringway\" Ross"
+ ],
+ "license": "BSL-1.0",
+ "homepage": "https://github.com/dlang-community/D-YAML",
+ "copyright": "Copyright © 2011-2018, Ferdinand Majerech",
+ "sourcePaths": [
+ "./src/ext_depends/D-YAML/source/dyaml",
+ "./src/ext_depends/tinyendian/source"
+ ],
+ "importPaths": [
+ "./src/ext_depends/D-YAML/source/dyaml",
+ "./src/ext_depends/tinyendian/source"
+ ],
+ "preGenerateCommands": [
+ "rm -rf ./src/ext_depends/D-YAML/examples",
+ "rm -rf ./src/ext_depends/D-YAML/testsuite"
+ ]
+ }
+ ],
+ "configurations": [
+ {
+ "name": "default",
+ "targetName": "spine"
+ },
+ {
+ "name": "ldc",
+ "targetName": "spine-ldc"
+ },
+ {
+ "name": "dmd",
+ "targetName": "spine-dmd"
+ }
+ ],
+ "subConfigurations": {
+ "d2sqlite3": "with-lib"
+ }
+}
+#+END_SRC
+
+***** git (interim)
+
+#+BEGIN_SRC json
+{
+ "authors": [
+ "Ralph Amissah"
+ ],
+ "copyright": "Copyright © 2015 - 2021 Ralph Amissah",
+ "name": "spine",
+ "version": "<<version_spine>>",
+ "description": "a sisu like document parser",
+ "homepage": "https://sisudoc.org",
+ "license": "AGPL-3.0+",
+ "targetPath": "./bin",
+ "sourcePaths": [ "./src/doc_reform" ],
+ "stringImportPaths": [ "./views" ],
+ "buildRequirements": [ "allowWarnings" ],
+ "targetType": "executable",
+ "platforms": [ "posix" ],
+ "buildTypes": {
+ "dmd": {
+ "dflags": [ "-J=views", "-I=src/doc_reform" ],
+ "buildOptions": [ "verbose", "inline" ],
+ "buildRequirements": [ "allowWarnings" ]
+ },
+ "ldc": {
+ "dflags": [ "-O2", "-J=views", "-I=src/doc_reform" ],
+ "buildOptions": [ "verbose", "optimize", "inline" ],
+ "buildRequirements": [ "allowWarnings" ]
+ }
+ },
+ "dependencies": {
+ "spine:d2sqlite3": "*",
+ "spine:imageformats": "*",
+ "spine:dyaml": "*"
+ },
+ "subPackages": [
+ {
+ "name": "d2sqlite3",
+ "description": "A thin wrapper around SQLite 3",
+ "homepage": "https://github.com/dlang-community/d2sqlite3",
+ "authors": [ "Nicolas Sicard", "Other contributors: see Github repo" ],
+ "copyright": "Copyright 2011-18 Nicolas Sicard",
+ "license": "BSL-1.0",
+ "sourcePaths": [ "./src/ext_depends/d2sqlite3/source" ],
+ "configurations": [
+ {
+ "name": "with-lib",
+ "targetType": "library",
+ "systemDependencies": "SQLite version >= 3.8.7",
+ "libs": [ "sqlite3" ],
+ "excludedSourceFiles": [ "source/tests.d" ]
+ }
+ ]
+ },
+ {
+ "name": "imageformats",
+ "description": "Decoders for PNG, TGA, BMP, JPEG and encoders for PNG, TGA, BMP.",
+ "authors": [ "Tero Hänninen" ],
+ "license": "BSL-1.0",
+ "sourcePaths": [ "./src/ext_depends/imageformats/imageformats" ]
+ },
+ {
+ "name": "dyaml",
+ "description": "YAML parser and emitter",
+ "authors": [
+ "Ferdinand Majerech",
+ "Cameron \"Herringway\" Ross"
+ ],
+ "license": "BSL-1.0",
+ "homepage": "https://github.com/dlang-community/D-YAML",
+ "copyright": "Copyright © 2011-2018, Ferdinand Majerech",
+ "sourcePaths": [ "./src/ext_depends/D-YAML/source/dyaml" ],
+ "importPaths": [
+ "./src/ext_depends/D-YAML/source/dyaml",
+ "./src/ext_depends/tinyendian/source"
+ ],
+ "dependencies": {
+ "tinyendian" : "~>0.2.0"
+ },
+ "preGenerateCommands": [
+ "rm -rf ./src/ext_depends/D-YAML/examples",
+ "rm -rf ./src/ext_depends/D-YAML/testsuite"
+ ]
+ },
+ {
+ "name": "tinyendian",
+ "description": "Lightweight endianness handling library",
+ "authors": [ "Ferdinand Majerech" ],
+ "license": "Boost 1.0",
+ "copyright": "Copyright © 2014, Ferdinand Majerech",
+ "homepage": "https://github.com/kiith-sa/tinyendian",
+ "importPaths": [ "./src/ext_depends/tinyendian/source" ]
+ }
+ ],
+ "configurations": [
+ {
+ "name": "default",
+ "targetName": "spine"
+ },
+ {
+ "name": "ldc",
+ "targetName": "spine-ldc"
+ },
+ {
+ "name": "dmd",
+ "targetName": "spine-dmd"
+ }
+ ],
+ "subConfigurations": {
+ "d2sqlite3": "with-lib"
+ }
+}
+#+END_SRC
+
+***** git fetched remote external dependencies (used previously)
+
+#+BEGIN_SRC json
+{
+ "authors": [
+ "Ralph Amissah"
+ ],
+ "copyright": "Copyright © 2015 - 2021 Ralph Amissah",
+ "name": "spine",
+ "version": "<<version_spine>>",
+ "description": "a sisu like document parser",
+ "homepage": "https://sisudoc.org",
+ "license": "AGPL-3.0+",
+ "targetPath": "./bin",
+ "sourcePaths": [ "./src/doc_reform" ],
+ "stringImportPaths": [ "./views" ],
+ "buildRequirements": [ "allowWarnings" ],
+ "targetType": "executable",
+ "platforms": [ "posix" ],
+ "buildTypes": {
+ "dmd": {
+ "dflags": [ "-J=views", "-I=src/doc_reform" ],
+ "buildOptions": [ "verbose", "inline" ],
+ "buildRequirements": [ "allowWarnings" ]
+ },
+ "ldc": {
+ "dflags": [ "-O2", "-J=views", "-I=src/doc_reform" ],
+ "buildOptions": [ "verbose", "optimize", "inline" ],
+ "buildRequirements": [ "allowWarnings" ]
+ }
+ },
+ "dependencies": {
+ "d2sqlite3": "~><<version_d2sqlite3>>",
+ "imageformats": "~><<version_imageformats>>",
+ "dyaml": "~><<version_dyaml>>",
+ "tinyendian": "~><<version_tinyendian>>"
+ },
+ "configurations": [
+ {
+ "name": "default",
+ "targetName": "spine"
+ },
+ {
+ "name": "ldc",
+ "targetName": "spine-ldc"
+ },
+ {
+ "name": "dmd",
+ "targetName": "spine-dmd"
+ }
+ ],
+ "subConfigurations": {
+ "d2sqlite3": "with-lib"
+ }
+}
+#+END_SRC
+
+**** +check dub.json+
+
+#+HEADER: :NO-tangle ../dub.json
+#+BEGIN_SRC sh
+{
+ "authors": [
+ "Ralph Amissah"
+ ],
+ "copyright": "Copyright © 2015 - 2021 Ralph Amissah",
+ "name": "spine",
+ "description": "a sisu like document parser",
+ "homepage": "https://sisudoc.org",
+ "license": "AGPL-3.0+",
+ "targetPath": "./bin",
+ "sourcePaths": [ "./src/doc_reform" ],
+ "stringImportPaths": [ "./views" ],
+ "buildRequirements": [ "allowWarnings" ],
+ "targetType": "executable",
+ "platforms": [ "posix" ],
+ "dependencies": {
+ "d2sqlite3": "~><<version_d2sqlite3>>",
+ "imageformats": "~><<version_imageformats>>",
+ "dyaml": "~><<version_dyaml>>",
+ "tinyendian": "~><<version_tinyendian>>"
+ },
+ "subConfigurations": {
+ "d2sqlite3": "all-included"
+ },
+ "configurations": [
+ {
+ "name": "default",
+ "targetName": "spine"
+ },
+ {
+ "name": "ldc",
+ "targetName": "spine-ldc"
+ },
+ {
+ "name": "dmd",
+ "targetName": "spine-dmd"
+ }
+ ],
+ "buildTypes": {
+ "dmd": {
+ "dflags": [ "-J=views", "-I=src/doc_reform" ],
+ "buildOptions": [ "verbose", "inline" ],
+ "buildRequirements": [ "allowWarnings" ]
+ },
+ "ldc": {
+ "dflags": [ "-O2", "-J=views", "-I=src/doc_reform" ],
+ "buildOptions": [ "verbose", "optimize", "inline" ],
+ "buildRequirements": [ "allowWarnings" ]
+ }
+ }
+}
+#+END_SRC
+
+*** dub.sdl REFERENCE UNUSED:dub:config:sdl:
+Every DUB package should contain a [[https://code.dlang.org/package-format?lang=json][dub.json]] (or [[https://code.dlang.org/package-format?lang=sdl][dub.sdl]])
+
+not configured here, using dub.json for the moment
+
+**** header (including dependencies) :header:
+
+#+HEADER: :NO-tangle ../dub.sdl
+#+HEADER: :tangle-mode (identity #o755)
+#+HEADER: :shebang #!/usr/bin/env dub
+#+BEGIN_SRC sh
+name "spine"
+description "sisu document parser"
+homepage "https://sisudoc.org"
+authors "Ralph Amissah"
+copyright "Copyright (C) 2016 - 2021 Ralph Amissah"
+license "AGPL-3.0+"
+targetPath "./bin"
+#sourcePath "./src/doc_reform"
+stringImportPaths "./views"
+buildRequirements "allowWarnings"
+targetType "executable"
+platforms "posix"
+dependency "d2sqlite3" version="~><<version_d2sqlite3>>" # https://code.dlang.org/packages/d2sqlite3 https://github.com/dlang-community/d2sqlite3
+ subconfiguration "d2sqlite3" "all-included"
+dependency "imageformats" version="~><<version_imageformats>>" # https://code.dlang.org/packages/imageformats https://github.com/lgvz/imageformats
+dependency "dyaml" version="~><<version_dyaml>>" # https://code.dlang.org/packages/dyaml https://github.com/dlang-community/D-YAML
+dependency "tinyendian" version="~><<version_tinyendian>>" # https://code.dlang.org/packages/tinyendian https://github.com/dlang-community/tinyendian // dyaml dependency
+#+END_SRC
+
+**** default
+
+time (dub --compiler=dmd --build=release)
+time (dub --compiler=ldc2 --build=release)
+time (dub --compiler=gdc --build=release)
+
+#+HEADER: :NO-tangle ../dub.sdl
+#+BEGIN_SRC sh
+configuration "default" {
+ targetName "spine"
+ postGenerateCommands "notify-send -t 0 'D executable ready' 'spine'"
+}
+#+END_SRC
+
+**** dmd :dmd:
+
+time (dub --compiler=dmd -color --config=dmd --build=dmd)
+time (dub --compiler=dmd -color --config=dmd --build=dmd-release)
+
+#+HEADER: :NO-tangle ../dub.sdl
+#+BEGIN_SRC sh
+configuration "dmd" {
+ targetName "spine-dmd"
+ postGenerateCommands "notify-send -t 0 'D executable ready' 'spine-dmd'"
+}
+buildType "dmd" {
+ dflags "-J=views" "-I=src/doc_reform"
+ buildOptions "verbose" "inline"
+ buildRequirements "allowWarnings"
+}
+buildType "dmd-release" {
+ dflags "-J=views" "-I=src/doc_reform"
+ buildOptions "verbose" "releaseMode" "optimize" "inline"
+}
+configuration "dmd-version" {
+ dflags "-J=views" "-I=src/doc_reform"
+ buildOptions "verbose" "optimize"
+ targetName "spine-dmd-ver"
+ postGenerateCommands "notify-send -t 0 'D executable ready' 'spine-dmd-ver'"
+}
+#+END_SRC
+
+ buildOptions "verbose" "optimize" // ok works quick compile
+ buildOptions "verbose" "optimize" "inline" // ok works takes ages to compile
+ buildOptions "verbose" "releaseMode" "optimize" "inline" // broken, runtime errors
+
+**** ldc :ldc:
+
+time (dub --compiler=ldc2 -color --config=ldc --build=ldc)
+time (dub --compiler=ldc2 -color --config=ldc --build=ldc-release)
+
+#+HEADER: :NO-tangle ../dub.sdl
+#+BEGIN_SRC sh
+configuration "ldc" {
+ targetName "spine-ldc"
+ postGenerateCommands "notify-send -t 0 'D executable ready' 'spine-ldc'"
+}
+buildType "ldc" {
+ dflags "-O2" "-J=views" "-I=src/doc_reform"
+ buildOptions "verbose" "optimize" "inline"
+ buildRequirements "allowWarnings"
+}
+buildType "ldc-local" {
+ dflags "-O2" "-J=views" "-I=src/doc_reform" "-mcpu=native"
+ buildOptions "verbose" "optimize" "inline"
+ buildRequirements "allowWarnings"
+}
+buildType "ldc-release" {
+ dflags "-O2" "-J=views" "-I=src/doc_reform"
+ buildOptions "verbose" "optimize" "inline" "releaseMode"
+}
+configuration "ldc-version" {
+ dflags "-O2" "-J=views" "-I=src/doc_reform"
+ buildOptions "verbose" "optimize" "inline" "releaseMode"
+ targetName "spine-ldc-ver"
+ postGenerateCommands "notify-send -t 0 'D executable ready' 'spine-ldc-ver'"
+}
+#+END_SRC
+
+**** gdc :gdc:
+
+time (dub --compiler=gdc --config=gdc --build=gdc)
+time (dub --compiler=gdc --config=gdc --build=gdc-release)
+
+#+HEADER: :NO-tangle ../dub.sdl
+#+BEGIN_SRC sh
+configuration "gdc" {
+ targetName "spine-gdc"
+ postGenerateCommands "notify-send -t 0 'D executable ready' 'spine-gdc'"
+}
+buildType "gdc" {
+ dflags "-O" "-J=views" "-I=src/doc_reform"
+ lflags "-lz"
+ buildOptions "inline"
+ buildRequirements "allowWarnings"
+}
+buildType "gdc-release" {
+ dflags "-O2" "-J=views" "-I=src/doc_reform"
+ lflags "-lz"
+ buildOptions "verbose" "optimize" "inline" "releaseMode"
+}
+configuration "gdc-version" {
+ dflags "-O2" "-J=views" "-I=src/doc_reform"
+ lflags "-lz"
+ buildOptions "verbose" "optimize" "inline" "releaseMode"
+ targetName "spine-gdc-ver"
+ postGenerateCommands "notify-send -t 0 'D executable ready' 'spine-gdc-ver'"
+}
+#+END_SRC
+
+***** generic :generic:
+****** build (sdp) :release:
+
+#+BEGIN_SRC sh
+configuration "build" {
+ name "build"
+ targetType "executable"
+ platforms "posix"
+ targetName "bin/spine"
+ dflags "-J=views" "-I=src/doc_reform"
+ buildOptions "verbose" "releaseMode" "optimize" "inline"
+ postGenerateCommands "notify-send -t 0 'D release executable ready' 'spine'"
+}
+#+END_SRC
+
+** spine search cgi (in ./sundry)
+*** dub.json
+
+#+HEADER: :tangle "../sundry/spine_search_cgi/dub.json"
+#+BEGIN_SRC json
+{
+ "authors": [
+ "Ralph Amissah"
+ ],
+ "copyright": "Copyright © 2015 - 2021 Ralph Amissah",
+ "name": "spine_search",
+ "version": "0.11.3",
+ "description": "cgi search for spine, a sisu like document parser",
+ "homepage": "https://sisudoc.org",
+ "license": "AGPL-3.0+",
+ "targetPath": "./cgi-bin",
+ "sourcePaths": [ "./src" ],
+ "stringImportPaths": [ "./views" ],
+ "buildRequirements": [ "allowWarnings" ],
+ "targetType": "executable",
+ "platforms": [ "posix" ],
+ "buildTypes": {
+ "dmd": {
+ "dflags": [ "-J=views", "-I=src" ],
+ "buildOptions": [ "verbose", "inline" ],
+ "buildRequirements": [ "allowWarnings" ]
+ },
+ "ldc": {
+ "dflags": [ "-O2", "-J=views", "-I=src" ],
+ "buildOptions": [ "verbose", "optimize", "inline" ],
+ "buildRequirements": [ "allowWarnings" ]
+ }
+ },
+ "dependencies": {
+ "spine_search:arsd.cgi": "*",
+ "spine_search:d2sqlite3": "*"
+ },
+ "subPackages": [
+ {
+ "name": "arsd.cgi",
+ "description": "cgi",
+ "homepage": "https://github.com/dlang-community/d2sqlite3",
+ "authors": [ "Aadam Ruppee" ],
+ "copyright": "Copyright 2011-18 Aadam Ruppee",
+ "license": "BSL-1.0",
+ "sourcePaths": [ "./src/ext_depends_cgi/arsd" ],
+ "configurations": [
+ {
+ "name": "cgi",
+ "cgi": "with-lib",
+ "targetType": "library",
+ "systemDependencies": "Arsd version >= 0.8.7"
+ }
+ ]
+ },
+ {
+ "name": "d2sqlite3",
+ "description": "A thin wrapper around SQLite 3",
+ "homepage": "https://github.com/dlang-community/d2sqlite3",
+ "authors": [ "Nicolas Sicard", "Other contributors: see Github repo" ],
+ "copyright": "Copyright 2011-18 Nicolas Sicard",
+ "license": "BSL-1.0",
+ "sourcePaths": [ "./src/ext_depends_cgi/d2sqlite3/source" ],
+ "configurations": [
+ {
+ "name": "d2sqlite3",
+ "d2sqlite3": "with-lib",
+ "targetType": "library",
+ "systemDependencies": "SQLite version >= 3.8.7",
+ "libs": [ "sqlite3" ],
+ "excludedSourceFiles": [ "source/tests.d" ]
+ }
+ ]
+ }
+ ],
+ "configurations": [
+ {
+ "name": "default",
+ "targetName": "spine_search"
+ },
+ {
+ "name": "ldc",
+ "targetName": "spine-search-ldc.cgi"
+ },
+ {
+ "name": "dmd",
+ "targetName": "spine-search-dmd.cgi"
+ }
+ ],
+ "subConfigurations": {
+ "d2sqlite3": "with-lib"
+ }
+}
+#+END_SRC
+
+** dub :dub:
+
+https://github.com/dlang/dub/
+https://code.dlang.org/getting_started
+https://code.dlang.org/docs/commandline
+
+*** setup
+**** dub json or sdlang
+
+Every DUB package should contain a [[https://code.dlang.org/package-format?lang=json][dub.json]] or [[https://code.dlang.org/package-format?lang=sdl][dub.sdl]]
+https://code.dlang.org/package-format?lang=sdl
+https://code.dlang.org/packages/sdlang-d
+https://github.com/Abscissa/SDLang-D/blob/master/HOWTO.md
+
+https://code.dlang.org/docs/commandline
+
+**** dub dependencies
+
+dub list
+dub upgrade
+dub fetch taggedalgebraic
+dub fetch libinputvisitor
+dub fetch unit-threaded ?
+
+sdp ~master: /home/ralph/grotto/repo/git.repo/utils/spine-x/
+/home/ralph/.dub/packages/*
+
+*** build
+**** debug flags
+
+#+BEGIN_SRC sh
+biblio
+biblio_sorted
+bibliosorted
+block
+bookindex
+bookindexmatch
+bookindexraw
+check
+checkdoc
+code
+comment
+dumpdoc write out document contents, with object type and ocn
+endnotes
+endnotes_build
+footnotes
+footnotesdone
+group
+header
+header_and_content
+header1
+headerjson
+headermakejson
+headermetadatajson
+heading
+headings
+headingsfound
+insert
+io
+munge
+node
+objectrelated1
+objectrelated2
+objects
+ocnoff
+para
+parabullet
+parabulletindent
+paraindent
+paraindenthang
+parent
+poem
+quote
+raw
+source
+srclines
+structattrib
+summary
+table
+toc
+#+END_SRC
+
+** dub REFERENCE
+*** SET version
+
+#+NAME: version_dub
+#+BEGIN_SRC nix
+<<version_dub_next>>
+#+END_SRC
+
+#+NAME: nix_sha_dub
+#+BEGIN_SRC nix
+<<nix_sha_dub_next>>
+#+END_SRC
+
+*** SELECT version
+**** dub 1.24.0
+
+#+NAME: version_dub_next
+#+BEGIN_SRC nix
+1.24.0
+#+END_SRC
+
+#+NAME: nix_sha_dub_next
+#+BEGIN_SRC nix
+0wirm6msz8kw2a7v2ax9ab6i48cmfv6qjwpfrl9vrr4k4xdg3vn6
+#+END_SRC
+
+**** dub 1.23.0
+
+#+NAME: version_dub_current
+#+BEGIN_SRC nix
+1.23.0
+#+END_SRC
+
+#+NAME: nix_sha_dub_current
+#+BEGIN_SRC nix
+06a4whsl1m600k096nwif83n7za3vr7pj1xwapncy5fcad1gmady
+#+END_SRC
+
+*** dub (using ldc rather than dmd) overlay REFERENCE :overlay:
+
+#+HEADER: :NO-tangle ~/nixpkgs/pkgs/development/tools/build-managers/dub/default.nix
+#+BEGIN_SRC nix
+{ lib, stdenv, fetchFromGitHub, curl, libevent, rsync, ldc, dcompiler ? ldc }:
+
+assert dcompiler != null;
+
+stdenv.mkDerivation rec {
+ pname = "dub";
+ version = "<<version_dub>>";
+
+ enableParallelBuilding = true;
+
+ src = fetchFromGitHub {
+ owner = "dlang";
+ repo = "dub";
+ rev = "v${version}";
+ sha256 = "<<nix_sha_dub>>";
+ };
+
+ postUnpack = ''
+ patchShebangs .
+ '';
+
+ # Can be removed with https://github.com/dlang/dub/pull/1368
+ dubvar = "\\$DUB";
+ postPatch = ''
+ substituteInPlace test/fetchzip.sh \
+ --replace "dub remove" "\"${dubvar}\" remove"
+ '';
+
+ nativeBuildInputs = [ dcompiler libevent rsync ];
+ buildInputs = [ curl ];
+
+ buildPhase = ''
+ 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
+ export DC_NAME=$dc_
+ echo "$dc_ found and used as D compiler to build $pname"
+ $dc ./build.d
+ ./build
+ '';
+
+ doCheck = !stdenv.isDarwin;
+
+ checkPhase = ''
+ export DUB=$NIX_BUILD_TOP/source/bin/dub
+ export PATH=$PATH:$NIX_BUILD_TOP/source/bin/
+ export DC=${dcompiler.out}/bin/$DC_NAME
+ echo "DC out --> $DC"
+ export HOME=$TMP
+
+ <<build_dub_tests>>
+
+ ./test/run-unittest.sh
+ '';
+
+ installPhase = ''
+ mkdir -p $out/bin
+ cp bin/dub $out/bin
+ '';
+
+ meta = with lib; {
+ description = "Package and build manager for D applications and libraries";
+ homepage = "https://code.dlang.org/";
+ license = licenses.mit;
+ maintainers = with maintainers; [ ThomasMader ];
+ platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" ];
+ };
+}
+#+END_SRC
+
+***** removed failing tests
+
+#+NAME: build_dub_tests
+#+BEGIN_SRC nix
+rm test/0-init-multi.sh
+rm test/0-init-multi-json.sh
+rm test/5-convert-stdout.sh
+rm test/dc-env.sh
+rm test/ddox.sh
+rm test/feat663-search.sh
+rm test/fetchzip.sh
+rm test/interactive-remove.sh
+rm test/issue672-upgrade-optional.sh
+rm test/issue674-concurrent-dub.sh
+rm test/issue820-extra-fields-after-convert.sh
+rm test/issue877-auto-fetch-package-on-run.sh
+rm test/issue990-download-optional-selected.sh
+rm test/issue1003-check-empty-ld-flags.sh
+rm test/issue1037-better-dependency-messages.sh
+rm test/issue1040-run-with-ver.sh
+rm test/issue1091-bogus-rebuild.sh
+rm test/issue1180-local-cache-broken.sh
+rm test/issue1194-warn-wrong-subconfig.sh
+rm test/issue1277.sh
+rm test/issue1372-ignore-files-in-hidden-dirs.sh
+rm test/issue1416-maven-repo-pkg-supplier.sh
+rm test/issue1447-build-settings-vars.sh
+rm test/issue1574-addcommand.sh
+rm test/issue1524-maven-upgrade-dependency-tree.sh
+rm test/issue1773-lint.sh
+rm test/removed-dub-obj.sh
+rm test/version-spec.sh
+rm -r test/git-dependency
+rm -r test/issue502-root-import
+#+END_SRC
diff --git a/org/config_git.org b/org/config_git.org
new file mode 100644
index 0000000..5ec0081
--- /dev/null
+++ b/org/config_git.org
@@ -0,0 +1,154 @@
+-*- mode: org -*-
+#+TITLE: configuration git
+#+DESCRIPTION: documents - structuring, various output representations & search
+#+FILETAGS: :spine:hub:
+#+AUTHOR: Ralph Amissah
+#+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]]
+#+COPYRIGHT: Copyright (C) 2015 - 2021 Ralph Amissah
+#+LANGUAGE: en
+#+STARTUP: content hideblocks hidestars noindent entitiespretty
+#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
+#+PROPERTY: header-args :exports code
+#+PROPERTY: header-args+ :noweb yes
+#+PROPERTY: header-args+ :eval no
+#+PROPERTY: header-args+ :results no
+#+PROPERTY: header-args+ :cache no
+#+PROPERTY: header-args+ :padline no
+#+PROPERTY: header-args+ :mkdirp yes
+
+* spine
+** .gitignore :gitignore:
+
+#+HEADER: :tangle "../.gitignore"
+#+BEGIN_SRC sh
+# git ls-files --others --exclude-from=.git/info/exclude
+,*
+!.gitignore
+!README.md
+!COPYRIGHT
+!CHANGELOG
+!makefile
+!version.txt
+!configuration.txt
+!*.json
+!*.sdl
+!meson.build
+!tangle
+!*.org
+!*.d
+!*.rb
+!*.txt
+!conf.sdl
+!doc
+!doc/**
+!man
+!man/**
+!org
+!sundry
+!sundry/**
+!*.nix
+!nix
+!nix/**
+!.envrc
+!src
+!src/**
+!data
+!data/*
+!data/src/**
+!data/src_yaml/**
+!data/pod/**
+!data/pod_yaml/**
+!*.sst
+!*.ssm
+!**/*.sst
+!**/*.ssm
+!subprojects
+!subprojects/*.wrap
+#!subprojects/*.meson.build
+#!subprojects/**
+!pod.manifest
+!sisu_document_make
+!config_local_site
+!sisudoc
+!views
+!docs/*.html
+!notes
+notes/**
+!notes/*.org
+!notes/sisu-description.sst
+!notes/reminders
+!notes/reminders/**
+.dub/**
+,**/.dub/**
+,**/cgi-bin/**
+tmp/**
+,*_.org
+,*_.d
+,*_.txt
+,*_
+,*.swp
+,*~
+,*~
+\#*
+,*.\#*
+!.envrc-local_
+#!*/
+#\#*
+#*.\#*
+#.reggae/**
+#+END_SRC
+
+* spine search
+** .gitignore :gitignore:
+
+#+HEADER: :tangle "../sundry/spine_search_cgi/.gitignore"
+#+BEGIN_SRC sh
+# git ls-files --others --exclude-from=.git/info/exclude
+,*
+!.gitignore
+!README.md
+!COPYRIGHT
+!CHANGELOG
+!makefile
+!version.txt
+!*.json
+!*.sdl
+!meson.build
+!tangle
+!*.org
+!*.d
+!*.rb
+!*.txt
+!conf.sdl
+!*.nix
+!nix
+!nix/**
+!.envrc
+!src
+!src/**
+!*.sst
+!*.ssm
+!**/*.sst
+!**/*.ssm
+!config_local_site
+!views
+.dub/**
+,**/.dub/**
+,**/cgi-bin/**
+tmp/**
+,*_.org
+,*_.d
+,*_.txt
+,*_
+,*.swp
+,*~
+,*~
+\#*
+,*.\#*
+!.envrc-local_
+!src/spine_search.d_
+#!*/
+#\#*
+#*.\#*
+#.reggae/**
+#+END_SRC
diff --git a/org/config_make.org b/org/config_make.org
new file mode 100644
index 0000000..2a2b0e5
--- /dev/null
+++ b/org/config_make.org
@@ -0,0 +1,1103 @@
+-*- mode: org -*-
+#+TITLE: spine (doc_reform) (project) makefile
+#+DESCRIPTION: makefile for spine
+#+FILETAGS: :spine:build:tools:
+#+AUTHOR: Ralph Amissah
+#+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]]
+#+COPYRIGHT: Copyright (C) 2015 - 2021 Ralph Amissah
+#+LANGUAGE: en
+#+STARTUP: content hideblocks hidestars noindent entitiespretty
+#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
+#+PROPERTY: header-args :exports code
+#+PROPERTY: header-args+ :noweb yes
+#+PROPERTY: header-args+ :eval no
+#+PROPERTY: header-args+ :results no
+#+PROPERTY: header-args+ :cache no
+#+PROPERTY: header-args+ :padline no
+#+PROPERTY: header-args+ :mkdirp yes
+
+[[./spine.org][spine.org]] VERSION
+[[./spine_info.org][spine_info.org]] [[../org/][org/]]
+
+* spine
+** version info VERSION :version:set:project:
+*** project
+
+#+NAME: version_spine
+#+BEGIN_SRC sh
+0.11.3
+#+END_SRC
+
+*** build tools if specified
+
+- meson
+
+#+NAME: version_meson
+#+BEGIN_SRC sh
+0.46
+#+END_SRC
+
+- soversion
+
+#+NAME: version_soversion
+#+BEGIN_SRC sh
+0
+#+END_SRC
+
+** makefile :makefile:
+*** tangle
+
+#+HEADER: :tangle ../makefile
+#+BEGIN_SRC makefile
+<<make_set_var_0_git_version>>
+<<make_set_var_1_dub>>
+<<make_set_var_2_project_details>>
+<<make_set_var_3_emacs_org>>
+<<make_set_var_4_markup_samples_pods>>
+<<make_set_var_5_markup_samples_search_dirs>>
+<<make_find_markup_samples_0_pod_and_dir>>
+<<make_find_markup_samples_1_pod>>
+<<make_find_markup_samples_2_dir>>
+<<make_version_tag>>
+<<make_changelog>>
+<<make_project_zip_archive>>
+<<make_get_project_dependencies_github>>
+<<make_dub_upgrade>>
+<<make_compile_0_compiler_default>>
+<<make_compile_1_compiler_all>>
+<<make_compile_2_compiler_all_versioned>>
+<<make_compile_3_compiler_all_debug>>
+<<make_meson_build>>
+<<make_clean_tangle_compile_0_all_clean>>
+<<make_clean_tangle_compile_1_all_clean_versioned>>
+<<make_clean_tangle_compile_2_all_clean_debug>>
+<<make_dub_compile_dmd_0_default>>
+<<make_dub_compile_dmd_1_debug>>
+<<make_dub_compile_dmd_2_versioned>>
+<<make_dub_compile_dmd_3_release>>
+<<make_dub_compile_gdc_0_default>>
+<<make_dub_compile_gdc_1_debug>>
+<<make_dub_compile_gdc_2_versioned>>
+<<make_dub_compile_gdc_3_release>>
+<<make_dub_compile_ldc_0_default>>
+<<make_dub_compile_ldc_1_debug>>
+<<make_dub_compile_ldc_2_versioned>>
+<<make_dub_compile_ldc_3_release>>
+<<make_initialization_operations_0_parts>>
+<<make_initialization_operations_1_git_version>>
+<<make_initialization_operations_2_assemble>>
+<<make_project_testrun_0_find_pods>>
+<<make_project_testrun_1>>
+<<make_project_testrun_2>>
+<<make_project_testrun_3>>
+<<make_project_testrun_4>>
+<<make_project_testrun_5>>
+<<make_project_testrun_6>>
+<<make_project_testrun_7>>
+<<make_project_testrun_8>>
+<<make_project_testrun_9>>
+<<make_project_testrun_10>>
+<<make_project_testrun_11>>
+<<make_project_testrun_12>>
+<<make_tangle_0>>
+<<make_tangle_1>>
+<<make_nix_project>>
+<<make_git_snapshot>>
+<<make_phony>>
+#+END_SRC
+
+*** settings [+2] :settings:
+**** git version stamp :git:version:
+
+#+NAME: make_set_var_0_git_version
+#+BEGIN_SRC makefile
+PROG_VER_GIT :=$(shell echo `git describe --long --tags | sed -e "s/^[ a-z_-]\+\([0-9.]\+\)/\1/;s/\([^-]*-g\)/r\1/;s/-/./g"`)
+PROG_VER_DECLARED :=$(shell echo `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
+
+**** dub (build tool) :dub:
+
+#+NAME: make_set_var_1_dub
+#+BEGIN_SRC makefile
+DUB=dub
+DUB_FLAGS=-v --force --compiler=
+#+END_SRC
+
+**** Project Details :project:spine:
+
+#+NAME: make_set_var_2_project_details
+#+BEGIN_SRC makefile
+PRG_NAME=doc-reform
+PRG_NICKAME=spine
+PRG_NAME_DIR=$(shell echo `echo $(PRG_NAME) | sed -e "s/-/_/g"`)
+PRG_SRC=$(PRG_NAME).d
+PRG_SRCDIR=./src
+PRG_BIN=$(PRG_NAME)
+PRG_BINDIR=./bin
+PRG_DOCDIR=./docs
+#+END_SRC
+
+**** Emacs Org settings :settings:emacs:org:tangle:
+
+#+NAME: make_set_var_3_emacs_org
+#+BEGIN_SRC makefile
+EMACSLISP=/usr/share/emacs/site-lisp
+ORG_VER_AVAILABLE=$(shell echo `ls -d ~/.emacs.d/elpa/org-???????? | cut -d '-' -f2`)
+EMACSLISP_ORG=~/.emacs.d/elpa/org-$($(shell echo $(ORG_VER_AVAILABLE)))
+ORG_CONTRIB_VER_AVAILABLE=$(shell echo `ls -d ~/.emacs.d/elpa/org-plus-contrib-???????? | cut -d '-' -f2`)
+EMACSLISP_ORG_CONTRIB=~/.emacs.d/elpa/org-plus-contrib-$($(shell echo $(ORG_CONTRIB_VER_AVAILABLE)))
+ORGFILELIST=$(shell echo `ls -1 org/*.org`)
+ORGFILES=""
+ORGDIR :=$(shell echo `pwd`)
+#+END_SRC
+
+**** Markup Samples
+***** pods
+
+#+NAME: make_set_var_4_markup_samples_pods
+#+BEGIN_SRC makefile
+SiSU_MARKUP_SAMPLES_FIND_PODS= \
+find data/pod -maxdepth 2 -name pod.manifest | cut -f 1-3 -d / | sort
+
+SiSU_MARKUP_SAMPLES_PODS_FOUND= \
+$(SiSU_MARKUP_SAMPLES_FIND_PODS) | xargs
+
+SiSU_MARKUP_SAMPLES_POD = \
+data/pod/accelerando.charles_stross \
+data/pod/alices_adventures_in_wonderland.lewis_carroll \
+data/pod/content.cory_doctorow \
+data/pod/democratizing_innovation.eric_von_hippel \
+data/pod/down_and_out_in_the_magic_kingdom.cory_doctorow \
+data/pod/for_the_win.cory_doctorow \
+data/pod/free_as_in_freedom_2.richard_stallman_and_the_free_software_revolution.sam_williams.richard_stallman \
+data/pod/free_culture.lawrence_lessig \
+data/pod/free_for_all.peter_wayner \
+data/pod/gpl2.fsf \
+data/pod/gpl3.fsf \
+data/pod/gullivers_travels.jonathan_swift \
+data/pod/little_brother.cory_doctorow \
+data/pod/live-manual \
+data/pod/sisu-manual \
+data/pod/the_autonomous_contract.ralph_amissah \
+data/pod/the_cathedral_and_the_bazaar.eric_s_raymond \
+data/pod/the_public_domain.james_boyle \
+data/pod/the_wealth_of_networks.yochai_benkler \
+data/pod/through_the_looking_glass.lewis_carroll \
+data/pod/two_bits.christopher_kelty \
+data/pod/un_contracts_international_sale_of_goods_convention_1980 \
+data/pod/viral_spiral.david_bollier
+#+END_SRC
+
+***** dir
+
+#+NAME: make_set_var_5_markup_samples_search_dirs
+#+BEGIN_SRC makefile
+SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND = \
+find data/sisudir/media/text -name *.ss[tm] | sort | xargs
+
+SiSU_MARKUP_SAMPLES_DIR = \
+data/sisudir/media/text/accelerando.charles_stross.sst \
+data/sisudir/media/text/alices_adventures_in_wonderland.lewis_carroll.sst \
+data/sisudir/media/text/content.cory_doctorow.sst \
+data/sisudir/media/text/democratizing_innovation.eric_von_hippel.sst \
+data/sisudir/media/text/down_and_out_in_the_magic_kingdom.cory_doctorow.sst \
+data/sisudir/media/text/ffa_tmp.sst \
+data/sisudir/media/text/for_the_win.cory_doctorow.sst \
+data/sisudir/media/text/free_as_in_freedom_2.richard_stallman_and_the_free_software_revolution.sam_williams.richard_stallman.sst \
+data/sisudir/media/text/free_culture.lawrence_lessig.sst \
+data/sisudir/media/text/free_for_all.peter_wayner.sst \
+data/sisudir/media/text/gpl2.fsf.sst \
+data/sisudir/media/text/gpl3.fsf.sst \
+data/sisudir/media/text/gullivers_travels.jonathan_swift.sst \
+data/sisudir/media/text/little_brother.cory_doctorow.sst \
+data/sisudir/media/text/sisu_markup.sst \
+data/sisudir/media/text/sisu_markup_stress_test.sst \
+data/sisudir/media/text/sisu_markup_test.sst \
+data/sisudir/media/text/table_special_markup.sst \
+data/sisudir/media/text/the_autonomous_contract.ralph_amissah.sst \
+data/sisudir/media/text/the_cathedral_and_the_bazaar.eric_s_raymond.sst \
+data/sisudir/media/text/the_public_domain.james_boyle.sst \
+data/sisudir/media/text/the_wealth_of_networks.yochai_benkler.sst \
+data/sisudir/media/text/through_the_looking_glass.lewis_carroll.sst \
+data/sisudir/media/text/two_bits.christopher_kelty.sst \
+data/sisudir/media/text/un_contracts_international_sale_of_goods_convention_1980.sst \
+data/sisudir/media/text/viral_spiral.david_bollier.sst
+#+END_SRC
+
+****** sample markup file list
+
+#+NAME: make_find_markup_samples_0_pod_and_dir
+#+BEGIN_SRC makefile
+markup_samples:
+ find data/pod -name pod.manifest | cut -f 1-3 -d / | sort; \
+find data/sisudir/media/text -name *.ss[tm] | sort
+#+END_SRC
+
+#+NAME: make_find_markup_samples_1_pod
+#+BEGIN_SRC makefile
+markup_pod_samples:
+ find data/pod -name pod.manifest | cut -f 1-3 -d / | sort
+#+END_SRC
+
+#+NAME: make_find_markup_samples_2_dir
+#+BEGIN_SRC makefile
+markup_dir_samples:
+ find data/sisudir/media/text -name *.ss[tm] | sort
+#+END_SRC
+
+*** make archive
+
+#+NAME: make_project_zip_archive
+#+BEGIN_SRC makefile
+gitZip:
+ git archive -v --format=tar --prefix=`echo spine-$(PROG_VER_DECLARED)-tag-$(PROG_VER_GIT)`/ HEAD | gzip > ../spine-$(PROG_VER_DECLARED)-tag-$(PROG_VER_GIT).tar.gz && \
+ echo "to unzip: tar -xzf spine-$(PROG_VER_DECLARED)-tag-$(PROG_VER_GIT).tar.gz"
+gitArchive:
+ git archive -v --format=tar --prefix=spine-$(PROG_VER_DECLARED)-tag-$(PROG_VER_GIT)/ HEAD | gzip > ../spine-$(PROG_VER_DECLARED)-tag-$(PROG_VER_GIT).tar.gz && \
+ echo "to unzip: tar -xzf spine-$(PROG_VER_DECLARED)-tag-$(PROG_VER_GIT).tar.gz"
+#+END_SRC
+
+*** _make_ commands [+2] :make:commands:
+
+- build commands
+ - build
+ - debug
+ - release
+- init, clean, distclean etc.
+ - init
+ - clean
+ - expunge
+ - distclean
+ - distclean_and_init
+- org babel tangle
+ - tangle
+- git snapshot
+ - gitsnapshot
+
+**** version tag, stamp
+
+#+NAME: make_version_tag
+#+BEGIN_SRC makefile
+version_tag:
+ echo "DRV=<<version_spine>>; git tag -f doc-reform_v$$\{DRV} -m\"doc-reform $$\{DRV}\" HEAD" && \
+ echo "git tag -f doc-reform_v<<version_spine>> -m\"doc-reform spine-<<version_spine>>\" HEAD"
+#+END_SRC
+
+**** changelog
+
+#+NAME: make_changelog
+#+BEGIN_SRC makefile
+changelog:
+ git log --pretty=format:'---%+s %+as %ae%+h%d%+b' --no-merges | sed "/^\\s*$$/d" | sed "s/^---$$//" | sed "s/^\(\*\)\+/-/" | sed "s/ \+$$//" > CHANGELOG_
+#+END_SRC
+
+**** build commands [+1] :build:compile:
+***** _dub_ build rebuild :dub:
+****** all compiler builds :all:dmd:gdc:ldc:
+******* all builds
+******** default
+
+#+NAME: make_dub_upgrade
+#+BEGIN_SRC makefile
+dub_upgrade:
+ $(DUB) upgrade
+#+END_SRC
+
+#+NAME: make_compile_0_compiler_default
+#+BEGIN_SRC makefile
+default: ldc
+#+END_SRC
+
+******** quick :quick:
+********* default :default:
+
+#+NAME: make_compile_1_compiler_all
+#+BEGIN_SRC makefile
+all: dmd ldc gdc
+#+END_SRC
+
+********* version :version:
+
+#+NAME: make_compile_2_compiler_all_versioned
+#+BEGIN_SRC makefile
+all_ver: dmd_ver ldc_ver gdc_ver
+#+END_SRC
+
+********* get project dependencies
+
+#+NAME: make_get_project_dependencies_github
+#+BEGIN_SRC makefile
+get_depends:
+ hwd=$$(echo `pwd`) && \
+ gwd="$${hwd}/src/ext_depends" && \
+ dirs=$$(echo `ls -gx $${gwd}`) && \
+ license_bsl="Boost Software License 1.0 (BSL-1.0)" && \
+ echo $${hwd} && \
+ echo $${gwd} && \
+ echo $${dirs} && \
+ dub upgrade; \
+ cd $${gwd} && \
+ for dir in $${dirs}; do \
+ if [ -d $${dir} ]; then \
+ echo $${dir} && \
+ if [ "imageformats" == $${dir} ]; then \
+ echo $${dir} && \
+ rm -rf $${dir} && \
+ git clone --depth=1 https://github.com/tjhann/$${dir} && \
+ cd $${dir} && \
+ echo $$PWD && \
+ echo "$${dir} `git rev-parse HEAD | cut -c 1-8`" > ../$${dir}.meta && \
+ echo "https://github.com/tjhann/$${dir}" >> ../$${dir}.meta && \
+ echo "$${license_bsl}" >> ../$${dir}.meta && \
+ cd $${gwd} && \
+ rm -rf $${dir}/.git; \
+ elif [[ "d2sqlite3" == $${dir} || "D-YAML" == $${dir} || "tinyendian" == $${dir} ]]; then \
+ echo $${dir} && \
+ rm -rf $${dir} && \
+ git clone --depth=1 https://github.com/dlang-community/$${dir} && \
+ cd $${dir} && \
+ echo "$${dir} `git rev-parse HEAD | cut -c 1-8`" > ../$${dir}.meta && \
+ echo "https://github.com/dlang-community/$${dir}" >> ../$${dir}.meta && \
+ echo "$${license_bsl}" >> ../$${dir}.meta && \
+ cd $${gwd} && \
+ rm -rf $${dir}/.git; \
+ fi; \
+ fi; \
+ done; \
+ cd $${hwd}
+set_depends: get_depends
+ dub describe | sed 's~$(shell echo `pwd | sed 's_/_\\/_g'`)~.~g' > dub_describe.json
+rm_flakelock:
+ git reset HEAD flake.lock && \
+ touch flake.lock \
+ git rm -f flake.lock
+flake_update:
+ git add .; \
+ nix flake update && \
+ git reset HEAD flake.lock; \
+ cp flake.lock flake.lock_
+flake_update_move_lock: flake_update
+ touch flake.lock \
+ git rm -f flake.lock
+set_latest: set_depends flake_update rm_flakelock
+#+END_SRC
+
+gitDir=dub2nix; git clone --depth=1 https://github.com/lionello/${gitDir} | rm -rf ${gitDir}/.git
+
+********* debug :debug:
+
+#+NAME: make_compile_3_compiler_all_debug
+#+BEGIN_SRC makefile
+all_debug: dmd_debug gdc_debug ldc_debug
+#+END_SRC
+
+********* _meson_ build :meson:
+
+meson using dub
+- works & looks pretty clean
+- but subprojects built externally & not suitable for debian packaging
+
+#+NAME: make_meson_build
+#+BEGIN_SRC makefile
+meson_clean_build_dir:
+ rm -r build; mkdir build
+meson_build: meson_clean_build_dir
+ meson --buildtype=debugoptimized build
+ ninja -C build
+ notify-send -t 0 'D meson build ldc compiled test release executable ready' 'spine'
+meson_redo: meson_clean_build_dir meson_build
+meson_project_build_clean: clean skel tangle dub_upgrade meson_build
+meson: meson_clean_build_dir dub_upgrade meson_build
+#+END_SRC
+
+******** clean & tangle :clean:tangle:
+********* default :default:
+
+#+NAME: make_clean_tangle_compile_0_all_clean
+#+BEGIN_SRC makefile
+all_clean: clean tangle dmd ldc gdc
+#+END_SRC
+
+********* version :version:
+
+#+NAME: make_clean_tangle_compile_1_all_clean_versioned
+#+BEGIN_SRC makefile
+all_ver_clean: clean tangle dmd_ver ldc_ver gdc_ver
+#+END_SRC
+
+********* debug :debug:
+
+#+NAME: make_clean_tangle_compile_2_all_clean_debug
+#+BEGIN_SRC makefile
+all_debug_ver: dmd_debug_ver gdc_debug_ver ldc_debug_ver
+all_debug_clean_ver: clean tangle dmd_debug_ver gdc_debug_ver ldc_debug_ver
+#+END_SRC
+
+****** individual compiler builds :each:
+******* dmd :dmd:
+******** quick :quick:
+********* default :default:
+
+#+NAME: make_dub_compile_dmd_0_default
+#+BEGIN_SRC makefile
+dmd: dub_upgrade
+ $(DUB) --compiler=dmd --config=dmd --build=release-nobounds
+ notify-send -t 0 'D dmd compiled test release executable ready' 'spine-dmd'
+#+END_SRC
+
+********* debug :debug:
+
+#+NAME: make_dub_compile_dmd_1_debug
+#+BEGIN_SRC makefile
+dmd_debug:
+ $(DUB) --compiler=dmd --config=dmd --build=debug
+#+END_SRC
+
+********* version :version:
+
+- assumes git tags with program version
+
+#+NAME: make_dub_compile_dmd_2_versioned
+#+BEGIN_SRC makefile
+dmd_ver: dub_upgrade
+ $(DUB) --compiler=dmd --config=dmd-version
+ mv bin/spine-dmd-ver bin-archive/spine-$(PROG_VER_DECLARED)-tag-$(PROG_VER_GIT)-dmd
+ notify-send -t 0 'D dmd compiled test release executable ready' 'spine-$(PROG_VER_DECLARED)-tag-$(PROG_VER_GIT)-dmd'
+dmd_clean_ver: clean tangle dmd_ver
+#+END_SRC
+
+******** clean & tangle :clean:tangle:
+
+#+NAME: make_dub_compile_dmd_3_release
+#+BEGIN_SRC makefile
+dmd_rel: expunge skel tangle
+ $(DUB) --compiler=dmd --config=spine-release
+dmd_rel_tangle: tangle
+ $(DUB) --compiler=dmd --config=spine-dmd
+dmd_rel_expunge_tangle: expunge skel tangle dmd_rel_tangle
+dmd_debug_tangle: tangle
+ $(DUB) --compiler=dmd --config=spine-dmd-debug
+#+END_SRC
+
+******* gdc :gdc:
+******** quick :quick:
+********* default :default:
+
+#+NAME: make_dub_compile_gdc_0_default
+#+BEGIN_SRC makefile
+gdc: dub_upgrade
+ $(DUB) --compiler=gdc --config=gdc
+ notify-send -t 0 'D gdc compiled test release executable ready' 'spine-gdc'
+#+END_SRC
+
+********* debug :debug:
+
+#+NAME: make_dub_compile_gdc_1_debug
+#+BEGIN_SRC makefile
+gdc_debug:
+ $(DUB) --compiler=gdc --config=gdc --build=debug
+#+END_SRC
+
+********* version :version:
+
+- assumes git tags with program version
+
+#+NAME: make_dub_compile_gdc_2_versioned
+#+BEGIN_SRC makefile
+gdc_ver: dub_upgrade
+ $(DUB) --compiler=gdc --config=gdc-version
+ mv bin/spine-gdc-ver bin-archive/spine-$(PROG_VER_DECLARED)-tag-$(PROG_VER_GIT)-gdc
+ notify-send -t 0 'D gdc compiled test release executable ready' 'spine-$(PROG_VER_DECLARED)-tag-$(PROG_VER_GIT)-gdc'
+gdc_clean_ver: clean tangle gdc_ver
+#+END_SRC
+
+******** clean & tangle :clean:tangle:
+
+#+NAME: make_dub_compile_gdc_3_release
+#+BEGIN_SRC makefile
+gdc_rel: expunge skel tangle
+ $(DUB) --compiler=gdc --config=spine-release
+gdc_rel_tangle: tangle
+ $(DUB) --compiler=gdc --config=spine-gdc
+gdc_rel_expunge_tangle: expunge skel tangle gdc_rel_tangle
+gdc_debug_tangle: tangle
+ $(DUB) --compiler=gdc --config=spine-gdc-debug
+#+END_SRC
+
+******* ldc :ldc:
+******** quick :quick:
+********* default :default:
+
+#+NAME: make_dub_compile_ldc_0_default
+#+BEGIN_SRC makefile
+ldc: dub_upgrade
+ $(DUB) --compiler=ldc2 --config=ldc --build=release
+ notify-send -t 0 'D ldc compiled test release executable ready' 'spine-ldc'
+#+END_SRC
+
+********* debug :debug:
+
+#+NAME: make_dub_compile_ldc_1_debug
+#+BEGIN_SRC makefile
+ldc_debug:
+ $(DUB) --compiler=ldc2 --config=ldc --build=debug
+#+END_SRC
+
+********* version :version:
+
+- assumes git tags with program version
+
+#+NAME: make_dub_compile_ldc_2_versioned
+#+BEGIN_SRC makefile
+ldc_ver: dub_upgrade
+ $(DUB) --compiler=ldc2 --config=ldc-version
+ mv bin/spine-ldc-ver bin-archive/spine-$(PROG_VER_DECLARED)-tag-$(PROG_VER_GIT)-ldc
+ notify-send -t 0 'D ldc2 compiled test release executable ready' 'spine-$(PROG_VER_DECLARED)-tag-$(PROG_VER_GIT)-ldc'
+ldc_clean_ver: clean tangle ldc_ver
+#+END_SRC
+
+******** clean & tangle :clean:tangle:
+
+#+NAME: make_dub_compile_ldc_3_release
+#+BEGIN_SRC makefile
+ldc_rel: expunge skel tangle
+ $(DUB) --compiler=ldc2 --config=spine-release
+ldc_rel_tangle: tangle
+ $(DUB) --compiler=ldc2 --config=spine-ldc
+ldc_rel_expunge_tangle: expunge skel tangle ldc_rel_tangle
+ldc_debug_tangle: tangle
+ $(DUB) --compiler=ldc2 --config=spine-ldc-debug
+#+END_SRC
+
+****** generic
+******* init clean distclean etc. :clean:
+
+#+NAME: make_initialization_operations_0_parts
+#+BEGIN_SRC makefile
+reinit: clean skel tangle
+skel:
+ mkdir -p $(PRG_BINDIR); \
+ mkdir -p $(PRG_BINDIR)-archive; \
+ mkdir -p build; \
+ mkdir -p views; \
+ mkdir -p data; \
+ mkdir -p sundry/util/d/cgi/search/cgi-bin/src; \
+ mkdir -p sundry/util/d/tools/markup_conversion; \
+ mkdir -p sundry/editor-syntax-etc/emacs; \
+ mkdir -p sundry/editor-syntax-etc/vim/syntax; \
+ mkdir -p sundry/editor-syntax-etc/vim/colors; \
+ mkdir -p sundry/editor-syntax-etc/vim/ftplugin; \
+ mkdir -p sundry/editor-syntax-etc/vim/rc; \
+ mkdir -p sundry/editor-syntax-etc/vim/templates; \
+ mkdir -p $(PRG_SRCDIR)/$(PRG_NAME_DIR)/conf; \
+ mkdir -p $(PRG_SRCDIR)/$(PRG_NAME_DIR)/io_in; \
+ mkdir -p $(PRG_SRCDIR)/$(PRG_NAME_DIR)/io_out; \
+ mkdir -p $(PRG_SRCDIR)/$(PRG_NAME_DIR)/meta; \
+ mkdir -p $(PRG_SRCDIR)/$(PRG_NAME_DIR)/share; \
+ mkdir -p $(PRG_SRCDIR)/$(PRG_NAME_DIR); \
+ mkdir -p $(PRG_BINDIR);
+init: skel
+clean:
+ rm -rf build; \
+ rm -rf $(PRG_SRCDIR); \
+ rm -rf $(PRG_DOCDIR);
+clean_bin:
+ rm $(PRG_BINDIR)/*
+clean_src:
+ rm -rf $(PRG_SRCDIR);
+clean_docs:
+ rm -rf $(PRG_DOCDIR)
+expunge:
+ rm -f dub.selections.json; \
+ rm -rf build; \
+ rm -rf $(PRG_SRCDIR); \
+ rm -rf $(PRG_BINDIR); \
+ rm -rf $(PRG_DOCDIR);
+distclean: expunge
+distclean_and_init: expunge
+ mkdir -p views; \
+ mkdir -p sundry/util/d/cgi/search/cgi-bin/src; \
+ mkdir -p sundry/util/d/tools/markup_conversion; \
+ mkdir -p sundry/editor-syntax-etc/emacs; \
+ mkdir -p sundry/editor-syntax-etc/vim/syntax; \
+ mkdir -p sundry/editor-syntax-etc/vim/colors; \
+ mkdir -p sundry/editor-syntax-etc/vim/ftplugin; \
+ mkdir -p sundry/editor-syntax-etc/vim/rc; \
+ mkdir -p sundry/editor-syntax-etc/vim/templates; \
+ mkdir -p $(PRG_SRCDIR)/$(PRG_NAME_DIR); \
+ mkdir -p $(PRG_BINDIR);
+#+END_SRC
+
+******* version :version:
+
+#+NAME: make_initialization_operations_1_git_version
+#+BEGIN_SRC makefile
+ver:
+ echo spine-$(PROG_VER_DECLARED)-tag-$(PROG_VER_GIT)
+#+END_SRC
+
+******* tangle build rebuild :clean:tangle:build:
+
+#+NAME: make_initialization_operations_2_assemble
+#+BEGIN_SRC makefile
+clean_tangle_build: clean tangle build
+tangle_build: tangle build
+build: $(PRG_SRCDIR)/$(PRG_SRC)
+ $(DC) $(DC_FLAGS) \
+ $(DC_FLAG_BINOF)$(PRG_BINDIR)/$(PRG_BIN) \
+ $(PRG_SRCDIR)/$(PRG_SRC)
+rebuild: $(PRG_SRCDIR)/$(PRG_SRC) $(PRG_BINDIR)/$(PRG_BIN).o clean build
+makefile_new:
+ make -k tangle_maker
+restart: clean tangle
+#+END_SRC
+
+**** testrun (program against document markup) :markup:sample:
+***** pods :pod:
+******* find files
+
+#+NAME: make_project_testrun_0_find_pods
+#+BEGIN_SRC makefile
+find_pods:
+ $(SiSU_MARKUP_SAMPLES_FIND_PODS)
+#+END_SRC
+
+****** dmd
+******* find files
+
+#+NAME: make_project_testrun_1
+#+BEGIN_SRC makefile
+dmd_testrun_find:
+ ./bin/spine-dmd -v --source --html --epub --sqlite-discrete \
+--sqlite-create --sqlite-update \
+--output-dir=tmp/program_output_pod \
+data/pod/sisu-manual
+dmd_testrun_find_pod_source:
+ $(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
+./bin/spine-ldc -v --source --html --epub \
+--output-dir=tmp/program_output_pod
+dmd_testrun_find_pod_pod:
+ $(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
+./bin/spine-dmd -v --pod \
+--output-dir=tmp/program_output_pod
+dmd_testrun_find_pod_html:
+ $(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
+./bin/spine-dmd -v --html \
+--output-dir=tmp/program_output_pod
+dmd_testrun_find_pod_epub:
+ $(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
+./bin/spine-dmd -v --epub \
+--output-dir=tmp/program_output_pod
+dmd_testrun_find_pod_all:
+ $(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
+./bin/spine-dmd -v --source --html --epub --sqlite-discrete \
+--sqlite-create --sqlite-update \
+--output-dir=tmp/program_output_pod
+#+END_SRC
+
+******* path list
+
+#+NAME: make_project_testrun_2
+#+BEGIN_SRC makefile
+dmd_testrun_paths_pod_source:
+ ./bin/spine-dmd -v --source \
+--output-dir=tmp/program_output_pod \
+$(SiSU_MARKUP_SAMPLES_POD)
+dmd_testrun_paths_pod_pod:
+ ./bin/spine-dmd -v --pod \
+--output-dir=tmp/program_output_pod \
+$(SiSU_MARKUP_SAMPLES_POD)
+dmd_testrun_paths_pod_html:
+ ./bin/spine-dmd -v --html \
+--output-dir=tmp/program_output_pod \
+$(SiSU_MARKUP_SAMPLES_POD)
+dmd_testrun_paths_pod_epub:
+ ./bin/spine-dmd -v --epub \
+--output-dir=tmp/program_output_pod \
+$(SiSU_MARKUP_SAMPLES_POD)
+dmd_testrun_paths_pod_all:
+ ./bin/spine-dmd -v --source --html --epub --sqlite-discrete \
+--sqlite-create --sqlite-update \
+--output-dir=tmp/program_output_pod \
+$(SiSU_MARKUP_SAMPLES_POD)
+#+END_SRC
+
+****** gdc
+******* find files
+
+#+NAME: make_project_testrun_3
+#+BEGIN_SRC makefile
+gdc_testrun_find:
+ ./bin/spine-gdc -v --source --html --epub --sqlite-discrete \
+--sqlite-create --sqlite-update \
+--output-dir=tmp/program_output_pod \
+data/pod/sisu-manual
+gdc_testrun_find_pod_source:
+ $(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
+./bin/spine-gdc -v --source \
+--output-dir=tmp/program_output_pod
+gdc_testrun_find_pod_pod:
+ $(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
+./bin/spine-gdc -v --pod \
+--output-dir=tmp/program_output_pod
+gdc_testrun_find_pod_html:
+ $(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
+./bin/spine-gdc -v --html \
+--output-dir=tmp/program_output_pod
+gdc_testrun_find_pod_epub:
+ $(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
+./bin/spine-gdc -v --epub \
+--output-dir=tmp/program_output_pod
+gdc_testrun_find_pod_all:
+ $(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
+./bin/spine-gdc -v --source --html --epub --sqlite-discrete \
+--sqlite-create --sqlite-update \
+--output-dir=tmp/program_output_pod
+#+END_SRC
+
+******* path list
+
+#+NAME: make_project_testrun_4
+#+BEGIN_SRC makefile
+gdc_testrun_paths:
+ ./bin/spine-gdc -v --source --html --epub --sqlite-discrete \
+--sqlite-create --sqlite-update \
+--output-dir=tmp/program_output_pod \
+data/pod/sisu-manual
+gdc_testrun_paths_pod_source:
+ ./bin/spine-gdc -v --source \
+--output-dir=tmp/program_output_pod \
+$(SiSU_MARKUP_SAMPLES_POD)
+gdc_testrun_paths_pod_pod:
+ ./bin/spine-gdc -v --pod \
+--output-dir=tmp/program_output_pod \
+$(SiSU_MARKUP_SAMPLES_POD)
+gdc_testrun_paths_pod_html:
+ ./bin/spine-gdc -v --html \
+--output-dir=tmp/program_output_pod \
+$(SiSU_MARKUP_SAMPLES_POD)
+gdc_testrun_paths_pod_epub:
+ ./bin/spine-gdc -v --epub \
+--output-dir=tmp/program_output_pod \
+$(SiSU_MARKUP_SAMPLES_POD)
+gdc_testrun_paths_pod_all:
+ ./bin/spine-gdc -v --source --html --epub --sqlite-discrete \
+--sqlite-create --sqlite-update \
+--output-dir=tmp/program_output_pod \
+$(SiSU_MARKUP_SAMPLES_POD)
+#+END_SRC
+
+****** ldc
+******* find files
+
+#+NAME: make_project_testrun_5
+#+BEGIN_SRC makefile
+ldc_testrun_find:
+ ./bin/spine-ldc -v --source --html --epub --sqlite-discrete \
+--sqlite-create --sqlite-update \
+--output-dir=tmp/program_output_pod \
+data/pod/sisu-manual
+ldc_testrun_find_pod_source:
+ $(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
+ ./bin/spine-ldc -v --source \
+--output-dir=tmp/program_output_pod
+ldc_testrun_find_pod_pod:
+ $(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
+ ./bin/spine-ldc -v --pod \
+--output-dir=tmp/program_output_pod
+ldc_testrun_find_pod_html:
+ $(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
+ ./bin/spine-ldc -v --html \
+--output-dir=tmp/program_output_pod
+ldc_testrun_find_pod_epub:
+ $(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
+ ./bin/spine-ldc -v --epub \
+--output-dir=tmp/program_output_pod
+ldc_testrun_find_pod_all:
+ $(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
+ ./bin/spine-ldc -v --source --html --epub --sqlite-discrete \
+--sqlite-create --sqlite-update \
+--output-dir=tmp/program_output_pod
+#+END_SRC
+
+******* path list
+
+#+NAME: make_project_testrun_6
+#+BEGIN_SRC makefile
+ldc_testrun_paths:
+ ./bin/spine-ldc -v --source --html --epub --sqlite-discrete \
+--sqlite-create --sqlite-update \
+--output-dir=tmp/program_output_pod \
+data/pod/sisu-manual
+ldc_testrun_paths_pod_source:
+ ./bin/spine-ldc -v --source \
+--output-dir=tmp/program_output_pod \
+$(SiSU_MARKUP_SAMPLES_POD)
+ldc_testrun_paths_pod_pod:
+ ./bin/spine-ldc -v --pod \
+--output-dir=tmp/program_output_pod \
+$(SiSU_MARKUP_SAMPLES_POD)
+ldc_testrun_paths_pod_html:
+ ./bin/spine-ldc -v --html \
+--output-dir=tmp/program_output_pod \
+$(SiSU_MARKUP_SAMPLES_POD)
+ldc_testrun_paths_pod_epub:
+ ./bin/spine-ldc -v --epub \
+--output-dir=tmp/program_output_pod \
+$(SiSU_MARKUP_SAMPLES_POD)
+ldc_testrun_paths_pod_all:
+ ./bin/spine-ldc -v --source --html --epub --sqlite-discrete \
+--sqlite-create --sqlite-update \
+--output-dir=tmp/program_output_pod \
+$(SiSU_MARKUP_SAMPLES_POD)
+#+END_SRC
+
+***** dir :dir:
+****** dmd
+******* find files
+
+#+NAME: make_project_testrun_7
+#+BEGIN_SRC makefile
+dmd_testrun_find_dir_source:
+ $(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
+./bin/spine-dmd -v --source \
+--output-dir=tmp/program_output_dir
+dmd_testrun_find_dir_pod:
+ $(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
+./bin/spine-dmd -v --pod \
+--output-dir=tmp/program_output_dir
+dmd_testrun_find_dir_html:
+ $(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
+./bin/spine-dmd -v --html \
+--output-dir=tmp/program_output_dir
+dmd_testrun_find_dir_epub:
+ $(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
+./bin/spine-dmd -v --epub \
+--output-dir=tmp/program_output_dir
+dmd_testrun_find_dir_all:
+ $(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
+./bin/spine-dmd -v --source --html --epub --sqlite-discrete \
+--sqlite-create --sqlite-update \
+--output-dir=tmp/program_output_dir
+#+END_SRC
+
+******* file list
+
+#+NAME: make_project_testrun_8
+#+BEGIN_SRC makefile
+dmd_testrun_filelist_dir_source:
+ ./bin/spine-dmd -v --source \
+--output-dir=tmp/program_output_dir \
+$(SiSU_MARKUP_SAMPLES_DIR)
+dmd_testrun_filelist_dir_pod:
+ ./bin/spine-dmd -v --pod \
+--output-dir=tmp/program_output_dir \
+$(SiSU_MARKUP_SAMPLES_DIR)
+dmd_testrun_filelist_dir_html:
+ ./bin/spine-dmd -v --html \
+--output-dir=tmp/program_output_dir \
+$(SiSU_MARKUP_SAMPLES_DIR)
+dmd_testrun_filelist_dir_epub:
+ ./bin/spine-dmd -v --epub \
+--output-dir=tmp/program_output_dir \
+$(SiSU_MARKUP_SAMPLES_DIR)
+dmd_testrun_filelist_dir_all:
+ ./bin/spine-dmd -v --source --html --epub --sqlite-discrete \
+--sqlite-create --sqlite-update \
+--output-dir=tmp/program_output_dir \
+$(SiSU_MARKUP_SAMPLES_DIR)
+#+END_SRC
+
+****** gdc
+******* find files
+
+#+NAME: make_project_testrun_9
+#+BEGIN_SRC makefile
+gdc_testrun_find_dir_source:
+ ./bin/spine-gdc -v --source \
+--output-dir=tmp/program_output_dir \
+$(SiSU_MARKUP_SAMPLES_DIR)
+gdc_testrun_find_dir_pod:
+ $(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
+./bin/spine-gdc -v --pod \
+--output-dir=tmp/program_output_dir
+gdc_testrun_find_dir_html:
+ $(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
+./bin/spine-gdc -v --html \
+--output-dir=tmp/program_output_dir
+gdc_testrun_find_dir_epub:
+ $(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
+./bin/spine-gdc -v --epub \
+--output-dir=tmp/program_output_dir
+gdc_testrun_find_dir_all:
+ $(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
+./bin/spine-gdc -v --source --html --epub --sqlite-discrete \
+--sqlite-create --sqlite-update \
+--output-dir=tmp/program_output_dir
+#+END_SRC
+
+******* file list
+
+#+NAME: make_project_testrun_10
+#+BEGIN_SRC makefile
+gdc_testrun_filelist_dir_source:
+ ./bin/spine-gdc -v --source \
+--output-dir=tmp/program_output_dir \
+$(SiSU_MARKUP_SAMPLES_DIR)
+gdc_testrun_filelist_dir_pod:
+ ./bin/spine-gdc -v --pod \
+--output-dir=tmp/program_output_dir \
+$(SiSU_MARKUP_SAMPLES_DIR)
+gdc_testrun_filelist_dir_html:
+ ./bin/spine-gdc -v --html \
+--output-dir=tmp/program_output_dir \
+$(SiSU_MARKUP_SAMPLES_DIR)
+gdc_testrun_filelist_dir_epub:
+ ./bin/spine-gdc -v --epub \
+--output-dir=tmp/program_output_dir \
+$(SiSU_MARKUP_SAMPLES_DIR)
+gdc_testrun_filelist_dir_all:
+ ./bin/spine-gdc -v --source --html --epub --sqlite-discrete \
+--sqlite-create --sqlite-update \
+--output-dir=tmp/program_output_dir \
+$(SiSU_MARKUP_SAMPLES_DIR)
+#+END_SRC
+
+****** ldc
+******* find files
+
+#+NAME: make_project_testrun_11
+#+BEGIN_SRC makefile
+ldc_testrun_find_dir_source:
+ $(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
+./bin/spine-ldc -v --source \
+--output-dir=tmp/program_output_dir
+ldc_testrun_find_dir_pod:
+ $(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
+./bin/spine-ldc -v --pod \
+--output-dir=tmp/program_output_dir
+ldc_testrun_find_dir_html:
+ $(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
+./bin/spine-ldc -v --html \
+--output-dir=tmp/program_output_dir
+ldc_testrun_find_dir_epub:
+ $(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
+./bin/spine-ldc -v --epub \
+--output-dir=tmp/program_output_dir
+ldc_testrun_find_dir_all:
+ $(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
+./bin/spine-ldc -v --source --html --epub --sqlite-discrete \
+--sqlite-create --sqlite-update \
+--output-dir=tmp/program_output_dir
+#+END_SRC
+
+******* file list
+
+#+NAME: make_project_testrun_12
+#+BEGIN_SRC makefile
+ldc_testrun_filelist_dir_source:
+ ./bin/spine-ldc -v --source \
+--output-dir=tmp/program_output_dir \
+$(SiSU_MARKUP_SAMPLES_DIR)
+ldc_testrun_filelist_dir_pod:
+ ./bin/spine-ldc -v --pod \
+--output-dir=tmp/program_output_dir \
+$(SiSU_MARKUP_SAMPLES_DIR)
+ldc_testrun_filelist_dir_html:
+ ./bin/spine-ldc -v --html \
+--output-dir=tmp/program_output_dir \
+$(SiSU_MARKUP_SAMPLES_DIR)
+ldc_testrun_filelist_dir_epub:
+ ./bin/spine-ldc -v --epub \
+--output-dir=tmp/program_output_dir \
+$(SiSU_MARKUP_SAMPLES_DIR)
+ldc_testrun_filelist_dir_all:
+ ./bin/spine-ldc -v --source --html --epub --sqlite-discrete \
+--sqlite-create --sqlite-update \
+--output-dir=tmp/program_output_dir \
+$(SiSU_MARKUP_SAMPLES_DIR)
+#+END_SRC
+
+**** org babel tangle batch process command :tangle:
+***** tangle: org babel tangle *.org
+
+#+NAME: make_tangle_0
+#+BEGIN_SRC makefile
+tangle: skel
+ for f in $(ORGFILELIST); do \
+ ORGFILES="$$ORGFILES \"$$f\""; \
+ done; \
+ emacs --batch -Q -q \
+ --eval "(progn \
+ (add-to-list 'load-path \
+ (expand-file-name \"$(EMACSLISP)\")) \
+ (add-to-list 'load-path \
+ (expand-file-name \"$(EMACSLISP_ORG)\" t)) \
+ (add-to-list 'load-path \
+ (expand-file-name \"$(EMACSLISP_ORG_CONTRIB)\" t)) \
+ (require 'org)(require 'ob)(require 'ob-tangle) \
+ (mapc (lambda (file) \
+ (find-file (expand-file-name file \"$(ORGDIR)\")) \
+ (setq-local org-src-preserve-indentation t) \
+ (org-babel-tangle) \
+ (kill-buffer)) '($$ORGFILES)))" 2>&1
+#+END_SRC
+
+***** tangle maker: org babel tangle makefile new
+
+#+NAME: make_tangle_1
+#+BEGIN_SRC makefile
+tangle_maker:
+ for f in $(ORGFILELIST); do \
+ ORGFILES="\"org/dr_build_scaffold.org\""; \
+ done; \
+ emacs --batch -Q -q \
+ --eval "(progn \
+ (add-to-list 'load-path \
+ (expand-file-name \"$(EMACSLISP)\")) \
+ (add-to-list 'load-path \
+ (expand-file-name \"$(EMACSLISP_ORG)\" t)) \
+ (add-to-list 'load-path \
+ (expand-file-name \"$(EMACSLISP_ORG_CONTRIB)\" t)) \
+ (require 'org)(require 'ob)(require 'ob-tangle) \
+ (mapc (lambda (file) \
+ (find-file (expand-file-name file \".\")) \
+ (setq-local org-src-preserve-indentation t) \
+ (org-babel-tangle) \
+ (kill-buffer)) '($$ORGFILES)))" 2>&1
+#+END_SRC
+
+***** tangle nix project
+
+#+NAME: make_nix_project
+#+BEGIN_SRC makefile
+lorri_shell:
+ lorri shell
+nix_shell:
+ nix-shell
+nix_build_default:
+ nix build -f default.nix && ./result/bin/spine -v
+nix_build_project:
+ nix build -f project.nix && ./result/bin/spine -v
+nix_build_spine:
+ nix build -f spine.nix && ./result/bin/spine -v
+nix-build_default:
+ nix-build default.nix
+#+END_SRC
+
+**** git snapshot
+
+#+NAME: make_git_snapshot
+#+BEGIN_SRC makefile
+gitsnapshot: distclean tangle
+ git commit -a
+#+END_SRC
+
+*** phony :phony:
+
+#+NAME: make_phony
+#+BEGIN_SRC makefile
+.PHONY : all build rebuild debug release \
+ distclean init \
+ tangle gitsnapshot
+#+END_SRC
diff --git a/org/config_meson.org b/org/config_meson.org
new file mode 100644
index 0000000..52cfa51
--- /dev/null
+++ b/org/config_meson.org
@@ -0,0 +1,485 @@
+-*- mode: org -*-
+#+TITLE: configuration meson
+#+DESCRIPTION: documents - structuring, various output representations & search
+#+FILETAGS: :spine:hub:
+#+AUTHOR: Ralph Amissah
+#+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]]
+#+COPYRIGHT: Copyright (C) 2015 - 2021 Ralph Amissah
+#+LANGUAGE: en
+#+STARTUP: content hideblocks hidestars noindent entitiespretty
+#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
+#+PROPERTY: header-args :exports code
+#+PROPERTY: header-args+ :noweb yes
+#+PROPERTY: header-args+ :eval no
+#+PROPERTY: header-args+ :results no
+#+PROPERTY: header-args+ :cache no
+#+PROPERTY: header-args+ :padline no
+#+PROPERTY: header-args+ :mkdirp yes
+
+* spine
+** version info VERSION :version:set:project:
+*** project
+
+#+NAME: version_spine
+#+BEGIN_SRC sh
+0.11.3
+#+END_SRC
+
+*** subprojects
+
+- d2sqlite3
+ https://code.dlang.org/packages/d2sqlite3
+
+#+NAME: version_d2sqlite3
+#+BEGIN_SRC sh
+0.19.1
+#+END_SRC
+
+- imageformats
+ https://code.dlang.org/packages/imageformats
+
+#+NAME: version_imageformats
+#+BEGIN_SRC sh
+7.0.2
+#+END_SRC
+
+- dyaml
+ https://code.dlang.org/packages/dyaml
+
+#+NAME: version_dyaml
+#+BEGIN_SRC sh
+0.8.3
+#+END_SRC
+
+- tinyendian
+ https://code.dlang.org/packages/tinyendian
+
+#+NAME: version_tinyendian
+#+BEGIN_SRC sh
+0.2.0
+#+END_SRC
+
+*** build tools if specified
+
+- meson
+
+#+NAME: version_meson
+#+BEGIN_SRC sh
+0.46
+#+END_SRC
+
+- soversion
+
+#+NAME: version_soversion
+#+BEGIN_SRC sh
+0
+#+END_SRC
+
+** meson REVISIT :meson:build:
+*** notes
+
+https://mesonbuild.com/D.html
+https://mesonbuild.com/Dependencies.html#Dub
+- create and move to subdirectory
+ rm -r build; mkdir build && cd build
+
+- build
+
+ - regular build (faster compile time):
+ meson && ninja
+
+ - optimized build (faster program run time):
+ meson --buildtype=debugoptimized && ninja
+
+ - time build
+ time ( meson --buildtype=debugoptimized && ninja )
+
+- other
+ - flags
+ DFLAGS= DC=ldc2 meson ..
+
+**** projects :project:
+
+ls -1 ./src/*/**/*.d
+tree -fi ./src |rg "\.d$"
+fdfind -e .d
+
+tree -if src | rg ".+\.d$" > spine_sources.txt && \
+for i in spine_sources.txt; do; \
+sed -i "s/\(.\+\.d$\)/ '\1',/g" $i; done && \
+cat spine_sources.txt
+
+***** project meson.build :filelist:
+
+#+HEADER: :tangle ../meson.build
+#+BEGIN_SRC sh
+project('spine', 'd',
+ license: 'AGPL-3',
+ version: '<<version_spine>>',
+ meson_version: '>=<<version_meson>>'
+)
+#if meson.get_compiler('d').get_id() == 'gcc'
+# error('spine cannot be compiled with GDC at time. Sorry.')
+#endif
+spine_src = [
+ 'src/doc_reform/spine.d',
+ 'src/doc_reform/conf/compile_time_info.d',
+ 'src/doc_reform/io_in/paths_source.d',
+ 'src/doc_reform/io_in/read_config_files.d',
+ 'src/doc_reform/io_in/read_source_files.d',
+ 'src/doc_reform/io_out/cgi_sqlite_search_form.d',
+ 'src/doc_reform/io_out/create_zip_file.d',
+ 'src/doc_reform/io_out/defaults.d',
+ 'src/doc_reform/io_out/epub3.d',
+ 'src/doc_reform/io_out/html.d',
+ 'src/doc_reform/io_out/hub.d',
+ 'src/doc_reform/io_out/latex.d',
+ 'src/doc_reform/io_out/metadata.d',
+ 'src/doc_reform/io_out/odt.d',
+ 'src/doc_reform/io_out/package.d',
+ 'src/doc_reform/io_out/paths_output.d',
+ 'src/doc_reform/io_out/rgx.d',
+ 'src/doc_reform/io_out/source_pod.d',
+ 'src/doc_reform/io_out/sqlite.d',
+ 'src/doc_reform/io_out/xmls_css.d',
+ 'src/doc_reform/io_out/xmls.d',
+ 'src/doc_reform/meta/conf_make_meta_json.d',
+ 'src/doc_reform/meta/conf_make_meta_structs.d',
+ 'src/doc_reform/meta/conf_make_meta_yaml.d',
+ 'src/doc_reform/meta/defaults.d',
+ 'src/doc_reform/meta/doc_debugs.d',
+ 'src/doc_reform/meta/metadoc.d',
+ 'src/doc_reform/meta/metadoc_from_src.d',
+ 'src/doc_reform/meta/metadoc_harvest.d',
+ 'src/doc_reform/meta/metadoc_harvests_authors.d',
+ 'src/doc_reform/meta/metadoc_harvests_topics.d',
+ 'src/doc_reform/meta/metadoc_object_setter.d',
+ 'src/doc_reform/meta/metadoc_show_config.d',
+ 'src/doc_reform/meta/metadoc_show_make.d',
+ 'src/doc_reform/meta/metadoc_show_metadata.d',
+ 'src/doc_reform/meta/metadoc_show_summary.d',
+ 'src/doc_reform/meta/package.d',
+ 'src/doc_reform/meta/rgx.d',
+ 'src/doc_reform/share/defaults.d',
+]
+source_root = meson.source_root()
+src_dir = include_directories('src/')
+# Dependencies
+dep_tinyendian = dependency('tinyendian', version: '>= <<version_tinyendian>>', fallback: ['tinyendian', 'tinyendian_dep'], method: 'dub')
+dep_dyaml = dependency('dyaml', version: '>= <<version_dyaml>>', fallback: ['dyaml', 'dyaml_dep'], method: 'dub')
+dep_d2sqlite3 = dependency('d2sqlite3', version: '>= <<version_d2sqlite3>>', fallback: ['d2sqlite3', 'd2sqlite3_dep'], method: 'dub')
+dep_imageformats = dependency('imageformats', version: '>= <<version_imageformats>>', fallback: ['imageformats', 'imageformats_dep'], method: 'dub')
+# Executable
+spine_exe = executable('spine',
+ [spine_src],
+ include_directories : [src_dir],
+ d_import_dirs: [include_directories('views')],
+ dependencies : [
+ dep_tinyendian,
+ dep_dyaml,
+ dep_d2sqlite3,
+ dep_imageformats,
+ ],
+ install : true
+)
+#+END_SRC
+
+*** meson subprojects [taken care of using dub] :subprojects:
+**** README
+
+#+HEADER: :tangle ../subprojects/README
+#+BEGIN_SRC txt
+- d2sqlite3
+ - dub
+ - https://code.dlang.org/packages/d2sqlite3
+ - upstream
+ - https://github.com/dlang-community/d2sqlite3
+- dyaml
+ - dub
+ - https://code.dlang.org/packages/dyaml
+ - upstream
+ - https://github.com/dlang-community/D-YAML
+ - upstream git clone
+ - https://github.com/dlang-community/D-YAML.git
+- imageformats
+ - dub
+ - https://code.dlang.org/packages/imageformats
+ - upstream git clone
+ - https://github.com/lgvz/imageformats
+- tinyendian (dyaml dependency)
+ - dub
+ - https://code.dlang.org/packages/tinyendian
+ - upstream git clone
+ - https://github.com/dlang-community/tinyendian.git
+#+END_SRC
+
+**** d2sqlite3 :d2sqlite3:
+***** wrap
+
+#+HEADER: :tangle ../subprojects/d2sqlite3.wrap
+#+BEGIN_SRC sh
+[wrap-git]
+directory = d2sqlite3
+url = https://github.com/dlang-community/d2sqlite3.git
+revision = head
+#+END_SRC
+
+***** meson.build
+
+#+HEADER: :NO-tangle ../subprojects/d2sqlite3.meson.build
+#+BEGIN_SRC sh
+project('d2sqlite3', 'd',
+ meson_version: '>=<<version_meson>>',
+ license: 'BSL-1.0',
+ version: '<<version_d2sqlite3>>'
+)
+
+project_soversion = '<<version_soversion>>'
+
+src_dir = include_directories('source/')
+pkgc = import('pkgconfig')
+
+sqlite_dep = dependency('sqlite3')
+
+d2sqlite3_src = [
+ 'source/d2sqlite3/database.d',
+ 'source/d2sqlite3/internal/memory.d',
+ 'source/d2sqlite3/internal/util.d',
+ 'source/d2sqlite3/library.d',
+ 'source/d2sqlite3/package.d',
+ 'source/d2sqlite3/results.d',
+ 'source/d2sqlite3/sqlite3.d',
+ 'source/d2sqlite3/statement.d',
+]
+install_subdir('source/d2sqlite3/', install_dir: 'include/d/d2sqlite3/')
+
+d2sqlite3_lib = library('d2sqlite3',
+ [d2sqlite3_src],
+ include_directories: [src_dir],
+ dependencies: [sqlite_dep],
+ install: true,
+ version: meson.project_version(),
+ soversion: project_soversion
+)
+
+pkgc.generate(name: 'd2sqlite3',
+ libraries: d2sqlite3_lib,
+ subdirs: 'd/d2sqlite3/',
+ version: meson.project_version(),
+ requires: ['sqlite3'],
+ description: 'A small wrapper around SQLite for the D programming language.'
+)
+
+# for use by others which embed this as subproject
+d2sqlite3_dep = declare_dependency(
+ link_with: [d2sqlite3_lib],
+ dependencies: [sqlite_dep],
+ include_directories: [src_dir]
+)
+#+END_SRC
+
+**** dyaml :dyaml:
+***** wrap
+
+#+HEADER: :tangle ../subprojects/dyaml.wrap
+#+BEGIN_SRC sh
+[wrap-git]
+directory = dyaml
+url = https://github.com/dlang-community/D-YAML.git
+revision = head
+#+END_SRC
+
+***** meson.build (provided by upstream)
+
+Upstream provides meson.build
+
+#+HEADER: :NO-tangle ../subprojects/D-YAML/meson.build
+#+BEGIN_SRC sh
+project('D-YAML', 'd',
+ meson_version: '>=<<version_meson>>',
+ subproject_dir: 'contrib',
+ version: '<<version_dyaml>>'
+)
+
+project_soversion = '<<version_soversion>>'
+
+src_dir = include_directories('source/')
+pkgc = import('pkgconfig')
+
+dyaml_src = [
+ 'source/dyaml/composer.d',
+ 'source/dyaml/constructor.d',
+ 'source/dyaml/dumper.d',
+ 'source/dyaml/emitter.d',
+ 'source/dyaml/encoding.d',
+ 'source/dyaml/escapes.d',
+ 'source/dyaml/event.d',
+ 'source/dyaml/exception.d',
+ 'source/dyaml/linebreak.d',
+ 'source/dyaml/loader.d',
+ 'source/dyaml/node.d',
+ 'source/dyaml/package.d',
+ 'source/dyaml/parser.d',
+ 'source/dyaml/queue.d',
+ 'source/dyaml/reader.d',
+ 'source/dyaml/representer.d',
+ 'source/dyaml/resolver.d',
+ 'source/dyaml/scanner.d',
+ 'source/dyaml/serializer.d',
+ 'source/dyaml/style.d',
+ 'source/dyaml/tagdirective.d',
+ 'source/dyaml/test/common.d',
+ 'source/dyaml/test/compare.d',
+ 'source/dyaml/test/constructor.d',
+ 'source/dyaml/test/emitter.d',
+ 'source/dyaml/test/errors.d',
+ 'source/dyaml/test/inputoutput.d',
+ 'source/dyaml/test/reader.d',
+ 'source/dyaml/test/representer.d',
+ 'source/dyaml/test/resolver.d',
+ 'source/dyaml/test/tokens.d',
+ 'source/dyaml/token.d'
+]
+install_subdir('source/dyaml', install_dir: 'include/d/yaml/')
+
+tinyendian_dep = dependency('tinyendian', version: '>=<<version_tinyendian>>', fallback: ['tinyendian', 'tinyendian_dep'])
+
+dyaml_lib = library('dyaml',
+ [dyaml_src],
+ include_directories: [src_dir],
+ dependencies: [tinyendian_dep],
+ install: true,
+ version: meson.project_version(),
+ soversion: project_soversion
+)
+pkgc.generate(name: 'dyaml',
+ libraries: dyaml_lib,
+ subdirs: 'd/yaml/',
+ version: meson.project_version(),
+ description: 'YAML parser and emitter for the D programming language.'
+)
+
+# Make D-YAML easy to use as subproject
+dyaml_dep = declare_dependency(
+ link_with: dyaml_lib,
+ include_directories: [src_dir],
+ dependencies: [tinyendian_dep]
+)
+#+END_SRC
+
+**** imageformats :imageformats:
+***** wrap
+
+#+HEADER: :tangle ../subprojects/imageformats.wrap
+#+BEGIN_SRC sh
+[wrap-git]
+directory = imageformats
+url = https://github.com/lgvz/imageformats.git
+revision = head
+#+END_SRC
+
+***** meson.build
+
+#+HEADER: :NO-tangle ../subprojects/imageformats.meson.build
+#+BEGIN_SRC sh
+project('imageformats', 'd',
+ meson_version: '>=<<version_meson>>',
+ license: 'BSL-1.0',
+ version: '<<version_imageformats>>'
+)
+
+project_soversion = '<<version_soversion>>'
+
+src_dir = include_directories('.')
+pkgc = import('pkgconfig')
+
+imageformats_src = [
+ 'imageformats/bmp.d',
+ 'imageformats/jpeg.d',
+ 'imageformats/package.d',
+ 'imageformats/png.d',
+ 'imageformats/tga.d'
+]
+install_subdir('imageformats/', install_dir: 'include/d/imageformats-d/')
+
+imageformats_lib = library('imageformats-d',
+ [imageformats_src],
+ include_directories: [src_dir],
+ install: true,
+ version: meson.project_version(),
+ soversion: project_soversion
+)
+
+pkgc.generate(name: 'imageformats-d',
+ libraries: imageformats_lib,
+ subdirs: 'd/imageformats-d/',
+ version: meson.project_version(),
+ description: 'Decoders for PNG, TGA, BMP, JPEG and encoders for PNG, TGA, BMP.'
+)
+
+# for use by others which embed this as subproject
+imageformats_dep = declare_dependency(
+ link_with: [imageformats_lib],
+ include_directories: [src_dir]
+)
+#+END_SRC
+
+**** tinyendian (dyaml dependency) :tinyendian:
+***** wrap
+
+#+HEADER: :tangle ../subprojects/tinyendian.wrap
+#+BEGIN_SRC sh
+[wrap-git]
+directory = tinyendian
+url = https://github.com/dlang-community/tinyendian.git
+revision = head
+#+END_SRC
+
+***** meson.build (provided by upstream)
+
+Upstream provides meson.build
+
+#+HEADER: :NO-tangle ../subprojects/tinyendian/meson.build
+#+BEGIN_SRC sh
+# -*- mode: python; -*-
+
+project(
+ 'tinyendian',
+ 'd',
+ meson_version: '>=<<version_meson>>',
+ version: '<<version_tinyendian>>',
+ default_options: ['buildtype=release'],
+)
+
+src_dir = include_directories('source/')
+pkgc = import('pkgconfig')
+
+tinyendian_src = [
+ 'source/tinyendian.d'
+]
+
+install_headers(tinyendian_src, subdir: 'd/')
+
+tinyendian_lib = library(
+ meson.project_name(),
+ [tinyendian_src],
+ include_directories: [src_dir],
+ version: meson.project_version(),
+ pic: true,
+ install: true,
+)
+
+pkgc.generate(
+ name: meson.project_name(),
+ libraries: tinyendian_lib,
+ subdirs: 'd/',
+ version: meson.project_version(),
+ description: 'Lightweight endianness library for D.'
+)
+
+# Make Tinyendian easy to use as subproject
+tinyendian_dep = declare_dependency(
+ link_with: tinyendian_lib,
+ include_directories: [src_dir]
+)
+#+END_SRC
diff --git a/org/config_misc.org b/org/config_misc.org
new file mode 100644
index 0000000..587a47c
--- /dev/null
+++ b/org/config_misc.org
@@ -0,0 +1,228 @@
+-*- mode: org -*-
+#+TITLE: configuration git
+#+DESCRIPTION: documents - structuring, various output representations & search
+#+FILETAGS: :spine:hub:
+#+AUTHOR: Ralph Amissah
+#+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]]
+#+COPYRIGHT: Copyright (C) 2015 - 2021 Ralph Amissah
+#+LANGUAGE: en
+#+STARTUP: content hideblocks hidestars noindent entitiespretty
+#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
+#+PROPERTY: header-args :exports code
+#+PROPERTY: header-args+ :noweb yes
+#+PROPERTY: header-args+ :eval no
+#+PROPERTY: header-args+ :results no
+#+PROPERTY: header-args+ :cache no
+#+PROPERTY: header-args+ :padline no
+#+PROPERTY: header-args+ :mkdirp yes
+
+* sundry misc
+** sh script to batch process _emacs org babel tangle_ :shell_script:tangle:
+ [[https://orgmode.org/manual/Batch-execution.html]]
+creates a shell batch script called "tangle", that will tangle (emacs org
+babel tangle) org files in ./org/ to create .d source files in ./src/doc_reform/
+(similar functionality is contained within the "makefile" created by this
+"dr_build_scaffold.org" file make tangle)
+
+#+HEADER: :tangle ../tangle
+#+HEADER: :tangle-mode (identity #o755)
+#+HEADER: :shebang "#!/bin/sh"
+#+BEGIN_SRC sh
+# -*- mode: shell-script -*-
+# tangle files with org-mode
+DIR=`pwd`
+ORGFILES=""
+EMACSLISP=/usr/share/emacs/site-lisp
+ORG_VER_AVAILABLE=$(shell echo `ls -d ~/.emacs.d/elpa/org-???????? | cut -d '-' -f2`)
+EMACSLISP_ORG=~/.emacs.d/elpa/org-$($(shell echo $(ORG_VER_AVAILABLE)))
+ORG_CONTRIB_VER_AVAILABLE=$(shell echo `ls -d ~/.emacs.d/elpa/org-plus-???????? | cut -d '-' -f2`)
+EMACSLISP_ORG_CONTRIB=~/.emacs.d/elpa/org-plus-contrib-$($(shell echo $(ORG_CONTRIB_VER_AVAILABLE)))
+# wrap each argument in the code required to call tangle on it
+for i in $@; do
+ ORGFILES="$ORGFILES \"$i\""
+done
+emacs --batch -Q -q \
+--eval "(progn
+(add-to-list 'load-path (expand-file-name \"$EMACSLISP\"))
+(add-to-list 'load-path (expand-file-name \"$EMACSLISP_ORG\" t))
+(add-to-list 'load-path (expand-file-name \"$EMACSLISP_ORG_CONTRIB\" t))
+(require 'org)(require 'ob)(require 'ob-tangle)
+(mapc (lambda (file)
+ (find-file (expand-file-name file \"$DIR\"))
+ (setq-local org-src-preserve-indentation t)
+ (org-babel-tangle)
+ (kill-buffer)) '($ORGFILES)))" 2>&1 #|grep tangled
+#+END_SRC
+
+** build
+*** dub
+
+#+BEGIN_SRC sh
+dub build -h
+#+END_SRC
+
+#+BEGIN_SRC sh
+time dub --compiler=ldc2 -v --force
+time (dub --compiler=ldc2 --config=spine-ldc --debug=steps)
+time (dub --compiler=ldc2 --config=spine-ldc --debug=checkdoc --debug=summary --debug=dumpdoc)
+time (dub --compiler=ldc2 --config=spine-ldc --debug=io)
+time (dub --compiler=ldc2 --config=spine-ldc --debug=checkdoc --debug=summary --debug=dumpdoc --debug=io)
+time (dub --compiler=ldc2 --config=spine-ldc-debug --debug=io)
+
+time dub --compiler=dmd -v --force
+time (dub --compiler=dmd --config=spine-dmd --debug=steps)
+time (dub --compiler=dmd --config=spine-dmd-debug --debug=io)
+
+time dub --compiler=gdc -v --force
+time (dub --compiler=gdc --config=spine-gdc --debug=steps)
+time (dub --compiler=gdc --config=spine-gdc-debug --debug=io)
+#+END_SRC
+
+*** make
+
+#+BEGIN_SRC sh
+time make dmd
+time make gdc
+time make ldc
+time make gdc ldc
+time make all
+time make all_ver
+time make dmd_ver ldc_ver gdc_ver
+
+time make restart
+time make restart ldc
+time make tangle ldc
+
+time make ldc_testrun_find_pod_epub
+#+END_SRC
+
+** git
+*** project version
+
+#+BEGIN_SRC sh
+echo $(git describe --long --tags | sed 's/^[ a-z_-]\+\([0-9.]\+\)/\1/;s/\([^-]*-g\)/r\1/;s/-/./g')
+#+END_SRC
+
+*** what files changed
+
+#+BEGIN_SRC sh
+git whatchanged --since="1 day ago" --oneline --name-only --pretty=format: | sort -u
+git log --since="1 day ago" --name-only --pretty=format: | sort -u
+#+END_SRC
+
+** test run
+*** e.g.
+
+#+BEGIN_SRC sh
+time (./result/bin/spine --source --html -v --output-dir=tmp/program-output data/pod/sisu-manual/media/text/en/sisu_markup.sst )
+
+time (./bin/spine-ldc --source --html -v --output-dir=tmp/program-output data/pod/sisu-manual/media/text/en/sisu_markup.sst )
+
+time (./bin/spine-ldc --source --html -v --output-dir=tmp/program-output data/pod/sisu-manual )
+time (./bin/spine-ldc --source --html -v --output-dir=tmp/program-output data/pod/the_wealth_of_networks.yochai_benkler )
+time (./bin/spine-ldc --source --html -v --output-dir=tmp/program-output data/pod/live-manual )
+
+time (~sdp2/bin/spine-ldc --pod --source --html --epub --sqlite-create --sqlite-update -v sisudoc/media/text/en/sisu_markup_stress_test.sst sisudoc/media/text/en/the_wealth_of_networks.yochai_benkler.sst )
+
+can point to directory containing sisudoc.txt file (listing which files to process)
+
+time (~sdp2/bin/spine-ldc --html -v sisudoc)
+# will process source files listed in sisudoc.txt for appropriate files and dir structure
+
+e.g. live-manual a multilingual document (with source file inserts .ssi)
+
+time (~sdp2/bin/spine-ldc --html --lang=en,es -v sisudoc)
+
+time ( find data/pod -name pod.manifest | sort | xargs ./bin/spine-ldc --source --html --epub -v --output-dir=tmp/program-output )
+
+time ( find data/pod -maxdepth 2 -name pod.manifest | sort | xargs ./bin/spine-ldc --source --html --epub -v --output-dir=tmp/program-output )
+time ( find data/sisudir/media/text -name *.ss[tm] | sort | xargs ./bin/spine-ldc --source --html --epub -v --output-dir=tmp/program-output )
+
+find data/pod -maxdepth 2 -name pod.manifest | sort | xargs
+
+find data/sisudir/media/text -name *.ss[tm] | sort | xargs
+#+END_SRC
+
+*** sort
+
+#+BEGIN_SRC sh
+~dr/bin/spine-ldc -v --sqlite-db-create --sqlite-db-filename="spine.search.db" --cgi-sqlite-search-filename="spine-search" --output=/var/www/html \
+ ~grotto/repo/git.repo/code/project-spine/doc-reform-markup/markup_samples/markup/pod/*
+
+~dr/bin/spine-ldc -v --sqlite-update --sqlite-db-filename="spine.search.db" --output=/var/www/html \
+ ~grotto/repo/git.repo/code/project-spine/doc-reform-markup/markup_samples/markup/pod/*
+
+~dr/bin/spine-ldc -v --html --harvest-link --output=/var/www/html \
+ ~grotto/repo/git.repo/code/project-spine/doc-reform-markup/markup_samples/markup/pod/*
+
+~dr/bin/spine-ldc -q --show-config --html --output=/var/www/html ~grotto/repo/git.repo/code/project-spine/doc-reform-markup/markup_samples/markup/pod
+
+~dr/bin/spine-ldc -q --show-config ~grotto/repo/git.repo/code/project-spine/doc-reform-markup/markup_samples/markup/pod
+
+~dr/result/bin/spine --html --output=/var/www/html /grotto-ra/repo/git.repo/projects/project-spine/doc-reform-markup/markup_samples/markup/pod/*
+
+~dr/result/bin/spine --very-verbose --sqlite-db-create --sqlite-db-filename="spine.search.db" --cgi-sqlite-search-filename="spine-search" --output=/var/www /grotto-ra/repo/git.repo/projects/project-spine/doc-reform-markup/markup_samples/markup/pod/*
+
+~dr/result/bin/spine --very-verbose --sqlite-update --sqlite-db-filename="spine.search.db" --cgi-sqlite-search-filename="spine-search" --output=/var/www /grotto-ra/repo/git.repo/projects/project-spine/doc-reform-markup/markup_samples/markup/pod/*
+#+END_SRC
+
+- produces:
+ - sqlite db @: /var/www/html/sqlite/spine.search.db
+ - search script in D @: /var/www/html/cgi/src/spine_search.d
+ - html output * /var/www/html/en/html/[filename]
+
+#+BEGIN_SRC sh
+cd /var/www/html/cgi
+
+cp arsd/cgi.d /var/www/html/cgi/. *-[needs to be implemented as part of code]
+
+dub --force --compiler=ldc2 && sudo cp -v cgi-bin/spine-search /usr/lib/cgi-bin/.
+#+END_SRC
+
+*** list markup files
+find data/pod -name pod.manifest | sort
+find data/sisudir/media/text -name *.ss[tm] | sort
+
+time make ldc_testrun_paths_pod_pod
+time make ldc_testrun_paths_pod_pod | ag "^\".+\"|NOT found"
+time make ldc_testrun_find_pod_pod
+time make ldc_testrun_find_dir_pod
+time make ldc_testrun_filelist_dir_pod
+
+** compilers
+
+- [X] Set D_COMPILER (one of DMD LDC or GDC)
+- [X] Set debug flags (using DMD standard flag -deb
+
+[[https://wiki.dlang.org/Compilers][D Compilers wiki https://wiki.dlang.org/Compilers]]
+[[https://dlang.org/download.html][D Compilers download https://dlang.org/download.html]]
+
+** version info REVIEW :version:
+
+- https://dlang.org/download.html
+
+*** compilers (set latest versions) :compiler:version:
+**** ldc VERSION :version:set:ldc:
+
+- https://github.com/ldc-developers/ldc/releases
+
+***** 1.24.0 HACK
+
+- https://github.com/ldc-developers/ldc/releases/tag/v1.24.0
+ - nix-prefetch-url https://github.com/ldc-developers/ldc/releases/download/v1.24.0/ldc-1.24.0-src.tar.gz
+
+#+NAME: ldc_version_info
+#+BEGIN_SRC nix
+version = "1.24.0";
+sha256 = "0g5svf55i0kq55q49awmwqj9qi1n907cyrn1vjdjgs8nx6nn35gx";
+#+END_SRC
+
+- ldc-1.24.0 overlay does not build with latest nixos version, nixos-20.09
+ nixos at ldc-1.20.0
+
+**** dmd :dmd:
+
+- https://dlang.org/changelog/index.html
+- https://dlang.org/changelog/pending.html
+- https://downloads.dlang.org/releases/
+- https://downloads.dlang.org/releases/2.x/
diff --git a/org/config_nix.org b/org/config_nix.org
new file mode 100644
index 0000000..7fec0f4
--- /dev/null
+++ b/org/config_nix.org
@@ -0,0 +1,1183 @@
+-*- mode: org -*-
+#+TITLE: configuration nix
+#+DESCRIPTION: makefile for spine
+#+FILETAGS: :spine:build:tools:
+#+AUTHOR: Ralph Amissah
+#+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]]
+#+COPYRIGHT: Copyright (C) 2015 - 2021 Ralph Amissah
+#+LANGUAGE: en
+#+STARTUP: content hideblocks hidestars noindent entitiespretty
+#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
+#+PROPERTY: header-args :exports code
+#+PROPERTY: header-args+ :noweb yes
+#+PROPERTY: header-args+ :eval no
+#+PROPERTY: header-args+ :results no
+#+PROPERTY: header-args+ :cache no
+#+PROPERTY: header-args+ :padline no
+#+PROPERTY: header-args+ :mkdirp yes
+
+* nix :nix:
+** NOTES
+**** nix-shell
+
+- default.nix
+
+#+BEGIN_SRC sh
+nix-shell
+nix-build
+#+END_SRC
+
+- project.nix
+
+#+BEGIN_SRC sh
+nix-shell
+nix-build project.nix
+#+END_SRC
+
+**** nix-shell --pure
+
+- default.nix
+
+#+BEGIN_SRC sh
+nix-shell --pure
+nix-build -I nixpkgs=/nixpkgs-ra/nixpkgs
+#+END_SRC
+
+- project.nix
+
+#+BEGIN_SRC sh
+nix-shell --pure
+nix-build -I nixpkgs=/nixpkgs-ra/nixpkgs
+#+END_SRC
+
+#+BEGIN_SRC sh
+nix build
+nix build -f default.nix
+nix build -f project.nix
+nix build -f spine.nix
+#+END_SRC
+
+**** derivation .drv
+
+#+BEGIN_SRC sh
+nix show-derivation /nix/store/q7n14bm8j5vzm62qaraczdb4bpyf59vv-spine-0.11.1.drv
+#+END_SRC
+
+** spine
+
+- default.nix
+- shell.nix
+
+*** envrc :envrc:
+**** .envrc
+
+#+HEADER: :tangle ../.envrc
+#+BEGIN_SRC sh
+NIX_ENFORCE_PURITY=0
+if [ -e .envrc-local ]; then # source an additional user-specific .envrc in ./.envrc-local
+ source .envrc-local
+fi
+#+END_SRC
+
+- lorri?
+
+#+HEADER: :NO-tangle ../.envrc
+#+BEGIN_SRC sh
+if type lorri &>/dev/null; then
+ echo "direnv: using lorri from PATH ($(type -p lorri))"
+ eval "$(lorri direnv)"
+else # fallback prevent bootstrapping problems by using direnv's builtin nix support
+ use nix
+ NIX_ENFORCE_PURITY=0
+fi
+if [ -e .envrc-local ]; then # source an additional user-specific .envrc in ./.envrc-local
+ source .envrc-local
+fi
+#+END_SRC
+
+- enable flakes
+
+#+HEADER: :NO-tangle ../.envrc
+#+BEGIN_SRC sh
+if [ -f flake.lock ] && [ -f flake.nix ]; then
+ # reload when these files change
+ watch_file flake.nix
+ watch_file flake.lock
+ # load the flake devShell
+ if [ ! -d $(direnv_layout_dir) ]; then
+ mkdir $(direnv_layout_dir)
+ fi
+ eval "$(nix --experimental-features 'nix-command flakes' print-dev-env --profile "$(direnv_layout_dir)/flake-profile")"
+else
+ # fall back to using direnv's builtin nix support
+ # to prevent bootstrapping problems.
+ # use nix
+ if type lorri &>/dev/null; then
+ echo "direnv: using lorri from PATH ($(type -p lorri))"
+ eval "$(lorri direnv)"
+ else
+ # fall back to using direnv's builtin nix support
+ # to prevent bootstrapping problems.
+ use nix
+ NIX_ENFORCE_PURITY=0
+ fi
+ # source an additional user-specific .envrc in ./.envrc-local
+ if [ -e .envrc-local ]; then
+ source .envrc-local
+ fi
+fi
+#+END_SRC
+
+**** .envrc-local CHECK MODIFY
+
+- bespoke modify appropriately and generate if needed
+
+#+HEADER: :tangle ../.envrc-local_
+#+BEGIN_SRC sh
+export NIX_PATH=<<nix_path_channel>>
+#export NIX_PATH=<<nixpkgs_path_local>>
+# reload when these files change
+watch_file flake.nix
+# watch_file flake.lock
+## load the flake devShell
+eval "$(nix print-dev-env)"
+# echo $NIX_BUILD_TOP
+export SpineVER=$(git describe --long --tags | sed 's/^[ a-z_-]\+\([0-9.]\+\)/\1/;s/\([^-]*-g\)/r\1/;s/-/./g')
+export SpineSRC=<<project_path_local_src>>
+export SpineBIN=<<project_path_local_bin>>
+export SpineDOC=<<project_path_local_doc>>
+export SpineOUTversioned=<<project_path_local_out>>
+export SpineOUTstatic=<<project_path_local_out_static>>
+
+echo '-*- mode: org -*-
+
+,* nixpkgs path?
+
+ eval "$(nix print-dev-env)"
+' > nix_note_.org
+
+echo " <nixpkgs> == `nix-instantiate --find-file nixpkgs`" >> nix_note_.org
+
+echo '
+,* nix build and show derivation
+
+,#+BEGIN_SRC sh
+nix-shell --pure
+
+nix-build
+nix build -f default.nix
+nix shell -f default.nix
+nix-instantiate | nix-build
+nix build `nix-instantiate`
+
+nix develop
+
+nix-instantiate | nix show-derivation | jq
+nix-instantiate | nix show-derivation --recursive | jq
+
+nix search --json 2>/dev/null |jq
+,#+END_SRC
+
+,* version and build info
+
+,#+BEGIN_SRC sh' >> nix_note_.org
+
+echo 'spine version (git) == $SpineVER' >> nix_note_.org
+echo "spine version (git) == $SpineVER" >> nix_note_.org
+echo 'nix-instantiate == `nix-instantiate`' >> nix_note_.org
+echo "nix-instantiate == `nix-instantiate`" >> nix_note_.org
+
+echo "#+END_SRC
+
+,* initialised shell variables
+
+,#+BEGIN_SRC sh
+SpineSRC=$SpineSRC
+SpineDOC=$SpineDOC
+SpineOUTversioned=$SpineOUTversioned
+SpineOUTstatic=$SpineOUTstatic
+,#+END_SRC
+" >> nix_note_.org
+
+echo '* spine run instruction examples
+,** parallelized tasks
+,*** doc source
+
+,#+BEGIN_SRC sh
+$SpineBIN/spine --very-verbose --pod --source --output="$SpineOUTversioned" $SpineDOC/markup/pod/*
+,#+END_SRC
+
+,*** html & epub output
+
+,#+BEGIN_SRC sh
+$SpineBIN/spine --very-verbose --html --epub --output="$SpineOUTversioned" $SpineDOC/markup/pod/*
+,#+END_SRC
+
+,*** sqlite db for each document - populate each db
+
+,#+BEGIN_SRC sh
+$SpineBIN/spine --very-verbose --sqlite-discrete --output="$SpineOUTversioned" $SpineDOC/markup/pod/*
+,#+END_SRC
+
+,*** doc source; html, epub; sqlite outputs
+
+,#+BEGIN_SRC sh
+$SpineBIN/spine --verbose --pod --html --epub --sqlite-discrete --output="$SpineOUTversioned" $SpineDOC/markup/pod/*
+,#+END_SRC
+
+,*** harvest (authors topics)
+
+,#+BEGIN_SRC sh
+$SpineBIN/spine --very-verbose --harvest --output="$SpineOUTversioned" $SpineDOC/markup/pod/*
+,#+END_SRC
+
+,*** html, harvest
+
+,#+BEGIN_SRC sh
+$SpineBIN/spine --verbose --dark --html --html-link-harvest --harvest --output="$SpineOUTversioned" $SpineDOC/markup/pod/*
+$SpineBIN/spine --very-verbose --html --html-link-harvest --harvest --output="$SpineOUTversioned" $SpineDOC/markup/pod/*
+,#+END_SRC
+
+,*** composite command: source pod, html, epub, harvest, sqlite
+
+,#+BEGIN_SRC sh
+$SpineBIN/spine --verbose --dark --pod --epub --html --html-link-harvest --harvest --sqlite-discrete --output="$SpineOUTversioned" $SpineDOC/markup/pod/*
+,#+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" $SpineDOC/markup/pod/*
+,#+END_SRC
+
+,*** composite command: source pod, html, epub, harvest, sqlite
+
+,#+BEGIN_SRC sh
+$SpineBIN/spine --verbose --no-parallel --dark --pod --epub --html --html-link-harvest --harvest --sqlite-discrete --output="$SpineOUTversioned" $SpineDOC/markup/pod/*
+,#+END_SRC
+
+,** config [./pod/].dr/config_local_site
+
+,#+BEGIN_SRC sh
+cat $SpineDOC/markup/pod/.dr/config_local_site
+$SpineBIN/spine --show-config $SpineDOC/markup/pod
+$SpineBIN/spine --show-config --output="$SpineOUTversioned" $SpineDOC/markup/pod
+,#+END_SRC
+
+,** cgi operations (output to $SpineOUTstatic /var/www)
+
+,#+BEGIN_SRC sh
+$SpineBIN/spine --very-verbose --sqlite-db-create --output="$SpineOUTstatic" $SpineDOC/markup/pod/*
+
+$SpineBIN/spine -v --cgi-search-form-codegen --output=$SpineOUTstatic $SpineDOC/markup/pod/*
+
+$SpineBIN/spine -v --show-config --config=$SpineDOC/markup/pod/.dr
+
+$SpineBIN/spine --html $SpineDOC/markup/pod/*
+
+
+$SpineBIN/spine -v --cgi-search-form-codegen --config=$SpineDOC/markup/pod/.dr/config_local_site
+,#+END_SRC
+
+,*** generate html linked to search form
+
+,#+BEGIN_SRC sh
+$SpineBIN/spine -v --html --html-link-search --html-link-harvest --harvest --output=$SpineOUTstatic $SpineDOC/markup/pod/*
+,#+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>>" --output="$SpineOUTstatic"
+$SpineBIN/spine -v --sqlite-db-recreate --sqlite-db-filename="<<spine_search_db>>" --output="$SpineOUTstatic"
+,#+END_SRC
+
+,*** populate sqlite db
+
+,#+BEGIN_SRC sh
+$SpineBIN/spine -v --sqlite-update --sqlite-db-filename="<<spine_search_db>>" --output=$SpineOUTstatic $SpineDOC/markup/pod/*
+,#+END_SRC
+
+,*** generate html (linked to search form), sql output, harvest COMPOSITE
+
+,#+BEGIN_SRC sh
+$SpineBIN/spine -v --html --html-link-search --html-link-harvest --harvest --sqlite-update --sqlite-db-filename="<<spine_search_db>>" --cgi-sqlite-search-filename="<<spine_search_cgi>>" --output="$SpineOUTstatic" $SpineDOC/markup/pod/*
+,#+END_SRC
+
+,*** make search form
+
+,#+BEGIN_SRC sh
+$SpineBIN/spine -v --cgi-search-form-codegen --config=$SpineDOC/markup/pod/.dr/config_local_site
+,#+END_SRC
+
+' >> nix_note_.org
+
+cat nix_note_.org
+
+echo "emacs nix_note_.org"
+echo "cat nix_note_.org"
+#+END_SRC
+
+*** flake :flake:
+
+- flake.nix
+ /nixpkgs-ra/nixpkgs
+ ./shell.nix
+ - shell.nix
+ ./pkgs/shell-pkgs.nix
+ - pkgs/shell-pkgs.nix
+ - default.nix
+ ./nix/dub.selections.nix #
+ - dub.selections.nix
+
+nix develop
+
+nix flake update
+
+#+HEADER: :tangle ../flake.nix
+#+BEGIN_SRC nix
+{
+ description = "a sisu like document parser";
+ inputs = {
+ flake-utils.url = "github:numtide/flake-utils";
+ nixpkgs.url = "<<nixpkgs_url>>";
+ };
+ outputs = { self, nixpkgs, flake-utils }:
+ let
+ pkgs = nixpkgs.legacyPackages.x86_64-linux;
+ in {
+ packages.x86_64-linux.spine = pkgs.stdenv.mkDerivation {
+ name = "spine";
+ inherit self;
+ src = self;
+ shell = ./shell.nix;
+ installPhase = ''
+ install -m755 spine $out/bin/spine
+ '';
+ };
+ defaultPackage.x86_64-linux = self.packages.x86_64-linux.spine;
+ };
+}
+#+END_SRC
+
+#+BEGIN_SRC nix
+{
+ description = "a sisu like document parser";
+ inputs = {
+ flake-utils.url = "github:numtide/flake-utils";
+ nixpkgs.url = "<<nixpkgs_url>>";
+ d2sqlite3 = {
+ url = "github:dlang-community/d2sqlite3";
+ flake = false;
+ };
+ tinyendian = {
+ url = "github:kiith-sa/tinyendian";
+ flake = false;
+ };
+ dyaml = {
+ url = "github:dlang-community/D-YAML";
+ flake = false;
+ };
+ imageformats = {
+ url = "github:lgvz/imageformats";
+ flake = false;
+ };
+ };
+ outputs = { self, d2sqlite3, tinyendian, dyaml, imageformats, nixpkgs, flake-utils }:
+ let
+ pkgs = nixpkgs.legacyPackages.x86_64-linux;
+ in {
+ packages.x86_64-linux.spine = pkgs.stdenv.mkDerivation {
+ name = "spine";
+ inherit self;
+ src = self;
+ shell = ./shell.nix;
+ installPhase = ''
+ install -m755 spine $out/bin/spine
+ '';
+ };
+ defaultPackage.x86_64-linux = self.packages.x86_64-linux.spine;
+ };
+}
+#+END_SRC
+
+#+HEADER: :NO-tangle ../flake.nix
+#+BEGIN_SRC nix
+{
+ description = "a sisu like document parser";
+ inputs = {
+ flake-utils.url = "github:numtide/flake-utils";
+ nixpkgs.url = "<<nixpkgs_url>>";
+ # pkgs /nixpkgs-ra/nixpkgs {}
+ #spine.url = "/grotto-ra/repo/git.repo/projects/project-spine/doc-reform";
+ #spine.url = "./.";
+ };
+ outputs = { self, nixpkgs, flake-utils }:
+ #flake-utils.lib.eachSystem [ "x86_64-linux" "defaultPackage.x86_64-linux" "packages.x86_64-linux.defaultPackage.x86_64-linux" ] (system:
+ flake-utils.lib.eachDefaultSystem (system:
+ let
+ #pkgs = ${system};
+ pkgs = nixpkgs.legacyPackages.${system};
+ # project = pkgs.spine.project' {
+ # src = ./.;
+ # compiler-nix-name = "ldc";
+ # };
+ in { #project.flake {} // {
+ #devShell = project.shellFor {
+ # (import ./shell.nix self { inherit pkgs; });
+ #};
+ devShell = import ./default.nix self { inherit pkgs; };
+ }
+ );
+}
+#+END_SRC
+
+*** shell.nix :shell:
+
+ nix-shell
+
+ shell.nix --pure
+ shell.nix --pure -I .envrc
+
+ nix-shell --pure -I nixpkgs=/nixpkgs-ra/nixpkgs
+ nix-shell --pure -p "with import /nixpkgs-ra/nixpkgs {}; ldc"
+ nix-shell --pure -p "with import /nixpkgs-ra/nixpkgs {}; [dub ldc]"
+
+ shell.nix direnv: export +IN_NIX_SHELL
+
+ nix-shell -p nixFlakes
+ nix-shell -p nixFlakes --pure
+ nix-shell -p nixFlakes --pure -p "with import /nixpkgs-ra/nixpkgs {}; [dub ldc]"
+
+ shell.nix -I .envrc
+ shell.nix
+
+ nix develop
+
+ nix-build
+ nix-build -I nixpkgs=<provide local nix path>
+ nix-build -I .envrc
+
+ nix build
+ nix build -f default.nix && noti
+ nix build -f default.nix && ./result/bin/spine -v && noti -t "spine build" -m "see ./result/bin/spine"
+ nix build -f spine.nix && ./result/bin/spine -v && noti -t "spine build" -m "see ./result/bin/spine"
+ nix build -f project.nix
+ nix build -f spine.nix
+
+ nix-shell shell.nix --pure
+ nix build -f default.nix
+ ./result/bin/spine
+
+#+HEADER: :tangle ../shell.nix
+#+HEADER: :tangle-mode (identity #o755)
+#+HEADER: :shebang "#!/usr/bin/env -S nix-shell --pure"
+#+BEGIN_SRC nix
+{ pkgs ? import <nixpkgs> {} }:
+pkgs.mkShell {
+ buildInputs = with pkgs; [(
+ with pkgs; [
+ nixFlakes
+ rund
+ dub
+ ldc
+ sqlite
+ nix-prefetch-git
+ validatePkgConfig
+ jq
+ git
+ ]
+ )];
+ shellHook = ''
+ if [[ -e ".envrc" ]]; then
+ source .envrc
+ fi
+ '';
+}
+#+END_SRC
+
+#+HEADER: :NO-tangle ../shell.nix
+#+HEADER: :tangle-mode (identity #o755)
+#+HEADER: :shebang "#!/usr/bin/env -S nix-shell"
+#+BEGIN_SRC nix
+{ pkgs ? import <nixpkgs> {} }:
+pkgs.mkShell {
+ buildInputs = with pkgs; [
+ (import ./nix/pkglst/shell-pkgs.nix { inherit pkgs; })
+ ];
+ buildPhase = "nix build -f default.nix";
+ shellHook = ''
+ echo "built spine @ ./result/bin/spine"
+ if [[ -e ".envrc" ]]; then
+ source .envrc
+ fi
+ nix-instantiate | nix show-derivation | jq
+ '';
+}
+#+END_SRC
+
+*** default.nix :default:
+
+- default.nix -I nixpkgs=<provide local nix path>
+ e.g. default.nix -I nixpkgs=/nixpkgs-ra/nixpkgs
+
+- nix-build -I nixpkgs=<provide local nix path>
+ e.g. nix-build -I nixpkgs=/nixpkgs-ra/nixpkgs
+
+ nix-build -I nixpkgs=/nixpkgs-ra/nixpkgs
+ nix-build -I .envrc-local
+ nix-build -I .envrc
+ default.nix -I .envrc
+ default.nix
+
+ nix build
+ nix build -f default.nix
+ nix build -f project.nix
+ nix build -f spine.nix
+
+#+HEADER: :tangle ../default.nix
+#+HEADER: :tangle-mode (identity #o755)
+#+HEADER: :shebang "#!/usr/bin/env -S nix-build"
+#+BEGIN_SRC nix
+{ pkgs ? import <nixpkgs> {},
+ stdenv ? pkgs.stdenv,
+ lib ? pkgs.lib,
+ ldc ? null,
+ dcompiler ? pkgs.ldc,
+ dub ? pkgs.dub
+}:
+assert dcompiler != null;
+with (
+ assert dcompiler != null;
+ with lib;
+ let
+ # Filter function to remove the .dub package folder from src
+ filterDub = name: type: let baseName = baseNameOf (toString name); in ! (
+ 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 ];
+ 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/bin -type f -exec ${removeExpr (disallowedReferences deps)} '{}' + || true
+ '';
+ buildPhase = ''
+ runHook preBuild
+ export HOME=$PWD
+ 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
+ export HOME=$PWD
+ dub test --combined --skip-registry=all
+ runHook postCheck
+ '';
+ installPhase = ''
+ runHook preInstall
+ mkdir -p $out/bin
+ cp -r "${targetOf package}" $out/bin
+ runHook postInstall
+ '';
+ meta = lib.optionalAttrs (package ? description) {
+ description = package.description;
+ } // attrs.meta or {};
+ } // lib.optionalAttrs (!(attrs ? version)) {
+ # Use name from dub.json, unless pname and version are specified
+ name = package.name;
+ }));
+ }
+);
+mkDubDerivation rec {
+ name = "spine-${version}";
+ version = "<<version_spine>>";
+ src = ./.;
+ buildInputs = [
+ pkgs.sqlite (
+ with pkgs; [
+ nixFlakes
+ rund
+ dub
+ ldc
+ sqlite
+ ]
+ )
+ ];
+ # buildPhase = [ ];
+ installPhase = ''
+ install -m755 -D spine $out/bin/spine
+ echo "built $out/bin/spine"
+ '';
+ <<nix_project_meta>>
+}
+#+END_SRC
+
+- unused
+ - installPhase
+
+#+BEGIN_SRC txt
+installPhase = ''
+ mkdir -p $out/bin
+ cp spine $out/bin
+ chmod +x $out/bin/spine
+'';
+#+END_SRC
+
+*** project meta
+
+#+NAME: nix_project_meta
+#+BEGIN_SRC nix
+meta = with pkgs.lib; {
+ homepage = https://sisudoc.org;
+ description = "a sisu like document parser";
+ license = licenses.agpl3Plus;
+ platforms = platforms.linux;
+ maintainers = [ RalphAmissah ];
+};
+#+END_SRC
+
+*** dub.selections.json
+
+#+HEADER: :NO-tangle ../dub.selections.json
+#+BEGIN_SRC nix
+{
+ "fileVersion": 1,
+ "versions": {
+ "d2sqlite3": "0.19.1",
+ "dyaml": "0.8.3",
+ "imageformats": "7.0.2",
+ "tinyendian": "0.2.0"
+ }
+}
+#+END_SRC
+
+*** dub.selections.nix
+
+#+HEADER: :NO-tangle ../nix/dub.selections.nix
+#+BEGIN_SRC nix
+# This file was generated by https://github.com/lionello/dub2nix v0.2.3
+[ {
+ fetch = {
+ type = "git";
+ url = "https://github.com/dlang-community/d2sqlite3.git";
+ rev = "v0.19.1";
+ sha256 = "0rnsgla6xyr8r34knf7v6dwhacra96q1b5rhxcz9246inwhvrk5k";
+ fetchSubmodules = false;
+ date = "2020-07-21T12:32:51+02:00";
+ deepClone = false;
+ leaveDotGit = false;
+ path = "/nix/store/hsi8xvl15w6fwlqvs042m1z5i88yc72i-d2sqlite3";
+ };
+} {
+ fetch = {
+ type = "git";
+ url = "https://github.com/kiith-sa/tinyendian.git";
+ rev = "v0.2.0";
+ sha256 = "086gf5aga52wr5rj2paq54daj8lafn980x77b706vvvqaz2mlis8";
+ fetchSubmodules = false;
+ date = "2018-06-10T11:04:28+02:00";
+ deepClone = false;
+ leaveDotGit = false;
+ path = "/nix/store/9c7fsmi5am84j6dq2mp3va306x3ay291-tinyendian";
+ };
+} {
+ fetch = {
+ type = "git";
+ url = "https://github.com/kiith-sa/D-YAML.git";
+ rev = "v0.8.3";
+ sha256 = "13wy304xjbwkpgg7ilql1lkxkm83s87jm59ffnrg26slp7cx149q";
+ fetchSubmodules = false;
+ date = "2020-09-19T23:46:57+02:00";
+ deepClone = false;
+ leaveDotGit = false;
+ path = "/nix/store/3i8i56lkmw2xq3lxr5h66v909waq2mqg-D-YAML";
+ };
+} {
+ fetch = {
+ type = "git";
+ url = "https://github.com/lgvz/imageformats.git";
+ rev = "v7.0.2";
+ sha256 = "1mfbsmi4fs1xny4zqs6jyr04d5f4h03r9f6jadvkdqj5kd1k0ws7";
+ fetchSubmodules = false;
+ date = "2019-10-10T07:54:45+03:00";
+ deepClone = false;
+ leaveDotGit = false;
+ path = "/nix/store/wn554pn21nzmpvw2hs7hvv9v9y0sgarg-imageformats";
+ };
+} ]
+#+END_SRC
+
+*** dub2nix & shared pkgs SHARED
+**** dub2nix with pkgs shared
+
+#+NAME: nix_with_pkgs
+#+BEGIN_SRC nix
+with pkgs; [
+ <<nix_shell_with_pkgs_list>>
+]
+#+END_SRC
+
+**** with pkgs list
+
+#+NAME: nix_shell_with_pkgs_list
+#+BEGIN_SRC nix
+nixFlakes
+rund
+dub
+ldc
+sqlite
+nix-prefetch-git
+validatePkgConfig
+jq
+git
+#+END_SRC
+
+** spine search cgi (in ./sundry)
+*** shell.nix
+
+#+HEADER: :tangle "../sundry/spine_search_cgi/shell.nix"
+#+HEADER: :tangle-mode (identity #o755)
+#+HEADER: :shebang "#!/usr/bin/env -S nix-shell --pure"
+#+BEGIN_SRC nix
+{ pkgs ? import <nixpkgs> {} }:
+pkgs.mkShell {
+ buildInputs = with pkgs; [(
+ with pkgs; [
+ nixFlakes
+ rund
+ dub
+ ldc
+ sqlite
+ nix-prefetch-git
+ validatePkgConfig
+ jq
+ git
+ ]
+ )];
+ shellHook = ''
+ if [[ -e ".envrc" ]]; then
+ source .envrc
+ fi
+ '';
+}
+#+END_SRC
+
+*** default.nix
+
+#+HEADER: :tangle "../sundry/spine_search_cgi/default.nix"
+#+HEADER: :tangle-mode (identity #o755)
+#+HEADER: :shebang "#!/usr/bin/env -S nix-build"
+#+BEGIN_SRC nix
+{ pkgs ? import <nixpkgs> {},
+ stdenv ? pkgs.stdenv,
+ lib ? pkgs.lib,
+ ldc ? null,
+ dcompiler ? pkgs.ldc,
+ dub ? pkgs.dub
+}:
+assert dcompiler != null;
+with (
+ assert dcompiler != null;
+ with lib;
+ let
+ # Filter function to remove the .dub package folder from src
+ filterDub = name: type: let baseName = baseNameOf (toString name); in ! (
+ 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 ];
+ 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
+ export HOME=$PWD
+ 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
+ export 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)) {
+ # Use name from dub.json, unless pname and version are specified
+ name = package.name;
+ }));
+ }
+);
+mkDubDerivation rec {
+ name = "spine-search-${version}";
+ version = "0.11.3";
+ src = ./.;
+ buildInputs = [
+ pkgs.sqlite (
+ with pkgs; [
+ nixFlakes
+ rund
+ dub
+ ldc
+ sqlite
+ ]
+ )
+ ];
+ # # buildPhase = [ ];
+ # installPhase = ''
+ # install -m755 -D spine_search $out/bin/spine-search
+ # echo "built $out/bin/spine-search"
+ # '';
+ meta = with pkgs.lib; {
+ homepage = https://sisudoc.org;
+ description = "a sisu like document parser";
+ license = licenses.agpl3Plus;
+ platforms = platforms.linux;
+ maintainers = [ RalphAmissah ];
+ };
+}
+#+END_SRC
+
+*** .envrc
+
+#+HEADER: :tangle "../sundry/spine_search_cgi/.envrc"
+#+BEGIN_SRC sh
+NIX_ENFORCE_PURITY=0
+if [ -e .envrc-local ]; then # source an additional user-specific .envrc in ./.envrc-local
+ source .envrc-local
+fi
+#+END_SRC
+
+*** .envrc-local
+
+#+HEADER: :tangle "../sundry/spine_search_cgi/.envrc-local_"
+#+BEGIN_SRC sh
+export NIX_PATH=/nix/var/nix/profiles/per-user/root/channels/nixos
+#export NIX_PATH=nixpkgs=/nixpkgs-ra/nixpkgs
+# reload when these files change
+watch_file flake.nix
+# watch_file flake.lock
+## load the flake devShell
+eval "$(nix print-dev-env)"
+# echo $NIX_BUILD_TOP
+export SpineVER=$(git describe --long --tags | sed 's/^[ a-z_-]\+\([0-9.]\+\)/\1/;s/\([^-]*-g\)/r\1/;s/-/./g')
+export SpineSRC=<<project_path_local_src>>
+export SpineBIN=<<project_path_local_bin>>
+export SpineDOC=<<project_path_local_doc>>
+#export SpineOUTversioned=<<project_path_local_out>>
+export SpineOUTstatic=<<project_path_local_out_static>>
+export SpineCgiBIN=<<project_path_cgi_bin>>
+
+echo '-*- mode: org -*-
+
+,* nixpkgs path?
+
+ eval "$(nix print-dev-env)"
+' > nix_note_.org
+
+echo " <nixpkgs> == `nix-instantiate --find-file nixpkgs`" >> nix_note_.org
+
+echo '
+,* nix build and show derivation
+
+,#+BEGIN_SRC sh
+nix-shell --pure
+
+nix-build
+nix build -f default.nix
+nix shell -f default.nix
+nix-instantiate | nix-build
+nix build `nix-instantiate`
+
+nix develop
+
+nix-instantiate | nix show-derivation | jq
+nix-instantiate | nix show-derivation --recursive | jq
+
+nix search --json 2>/dev/null |jq
+,#+END_SRC
+
+,* version and build info
+
+,#+BEGIN_SRC sh' >> nix_note_.org
+
+echo 'spine version (git) == $SpineVER' >> nix_note_.org
+echo "spine version (git) == $SpineVER" >> nix_note_.org
+echo 'nix-instantiate == `nix-instantiate`' >> nix_note_.org
+echo "nix-instantiate == `nix-instantiate`" >> nix_note_.org
+
+echo "#+END_SRC
+
+,* initialised shell variables
+
+,#+BEGIN_SRC sh
+SpineSRC=$SpineSRC
+SpineBIN=$SpineBIN
+SpineDOC=$SpineDOC
+#SpineOUTversioned=$SpineOUTversioned
+SpineOUTstatic=$SpineOUTstatic
+SpineCgiBIN=$SpineCgiBIN
+,#+END_SRC
+" >> nix_note_.org
+
+echo '* cgi form spine_search nix build and copy to spine-search
+
+,#+BEGIN_SRC sh
+nix-build && sudo cp -vi result/share/cgi-bin/spine_search $SpineCgiBIN/.
+,#+END_SRC
+
+,* spine run instruction examples
+,** cgi operations (output to $SpineOUTstatic)
+,*** configuration
+
+,#+BEGIN_SRC sh
+$SpineBIN/spine -v --show-config --config=$SpineDOC/markup/pod/.dr
+,#+END_SRC
+
+,*** generate html (linked to search form & harvest)
+
+,#+BEGIN_SRC sh
+$SpineBIN/spine -v --html --html-link-search --html-link-harvest --sqlite-db-filename="<<spine_search_db>>" --cgi-sqlite-search-filename="<<spine_search_cgi>>"--output=$SpineOUTstatic $SpineDOC/markup/pod/*
+,#+END_SRC
+
+,*** generate sql output
+
+,#+BEGIN_SRC sh
+SpineBIN/spine -v --sqlite-update --sqlite-db-filename="<<spine_search_db>>" --output=$SpineOUTstatic $SpineDOC/markup/pod/*
+,#+END_SRC
+
+,*** generate harvest
+
+,#+BEGIN_SRC sh
+$SpineBIN/spine -v --harvest --output=$SpineOUTstatic $SpineDOC/markup/pod/*
+$SpineBIN/spine -v --html --html-link-harvest --harvest --output=$SpineOUTstatic $SpineDOC/markup/pod/*
+,#+END_SRC
+
+,*** create or re-create sql db (--sqlite-db-create or --sqlite-db-recreate)
+
+,#+BEGIN_SRC sh
+$SpineBIN/spine -v --sqlite-db-recreate --sqlite-db-filename="<<spine_search_db>>" --output="$SpineOUTstatic"
+,#+END_SRC
+
+,*** generate html (linked to search form), sql output, harvest
+
+,#+BEGIN_SRC sh
+$SpineBIN/spine -v --html --html-link-search --html-link-harvest --harvest --sqlite-db-filename="<<spine_search_db>>" --cgi-sqlite-search-filename="<<spine_search_cgi>>" --sqlite-update --output=$SpineOUTstatic $SpineDOC/markup/pod/*
+,#+END_SRC
+
+,*** make search form
+
+,#+BEGIN_SRC sh
+$SpineBIN/spine -v --cgi-search-form-codegen --config=$SpineDOC/markup/pod/.dr/config_local_site
+#$SpineBIN/spine -v --cgi-search-form-codegen --output=$SpineOUTstatic $SpineDOC/markup/pod/*
+,#+END_SRC
+' >> nix_note_.org
+
+cat nix_note_.org
+
+echo "emacs nix_note_.org"
+echo "cat nix_note_.org"
+#+END_SRC
+
+** variables
+*** spine version VERSION :version:set:project:
+
+#+NAME: version_spine
+#+BEGIN_SRC sh
+0.11.3
+#+END_SRC
+
+*** set names SET
+
+#+NAME: spine_search_db
+#+BEGIN_SRC sh
+spine.search.db
+#+END_SRC
+
+#+NAME: spine_search_cgi
+#+BEGIN_SRC sh
+spine_search
+#+END_SRC
+
+*** nixpkgs_path SETUP
+**** nixpkgs select path SELECT
+
+#+NAME: nixpkgs_path
+#+BEGIN_SRC nix
+<<nixpkgs_path_local>>
+#+END_SRC
+
+**** nixpkgs path options
+
+- <nixpkgs>
+
+#+NAME: nixpkgs_path_default
+#+BEGIN_SRC nix
+<nixpkgs>
+#+END_SRC
+
+#+NAME: nix_path_directory
+#+BEGIN_SRC nix
+nixpkgs=<<nixpkgs_path_local>>
+#+END_SRC
+
+#+NAME: project_path_local_src
+#+BEGIN_SRC nix
+/grotto-ra/repo/git.repo/projects/project-spine/doc-reform
+#+END_SRC
+
+#+NAME: project_path_local_bin
+#+BEGIN_SRC nix
+<<project_path_local_src>>/result/bin
+#+END_SRC
+
+#+NAME: project_path_cgi_bin
+#+BEGIN_SRC nix
+/var/www/cgi/cgi-bin
+#+END_SRC
+
+#+NAME: project_path_local_doc
+#+BEGIN_SRC nix
+/grotto-ra/repo/git.repo/projects/project-spine/doc-reform-markup/spine-markup-samples
+#+END_SRC
+
+#+NAME: project_path_local_out
+#+BEGIN_SRC nix
+/srv/www/spine/$SpineVER
+#+END_SRC
+
+#+NAME: project_path_local_out_
+#+BEGIN_SRC nix
+/tmp/spine/$SpineVER/www
+#+END_SRC
+
+#+NAME: project_path_local_out_static
+#+BEGIN_SRC nix
+/srv/www/spine/static
+#+END_SRC
+
+#+NAME: project_path_local_out_static_
+#+BEGIN_SRC nix
+/var/www
+#+END_SRC
+
+#+NAME: nixpkgs_url
+#+BEGIN_SRC nix
+github:nixos/nixpkgs
+#+END_SRC
+
+#+BEGIN_SRC nix
+<<nixpkgs_path_local>>
+#+END_SRC
+
+- local path SET WARN
+
+#+NAME: nixpkgs_path_local
+#+BEGIN_SRC nix
+/nixpkgs-ra/nixpkgs
+#+END_SRC
+
+**** project path options
+
+- local path SET WARN
+
+#+NAME: nix_path_channel
+#+BEGIN_SRC nix
+/nix/var/nix/profiles/per-user/root/channels/nixos
+#+END_SRC
diff --git a/org/spine.org b/org/spine.org
index c27a3be..6621fac 100644
--- a/org/spine.org
+++ b/org/spine.org
@@ -19,59 +19,7 @@
[[./spine_info.org][spine_info.org]] [[./][org/]]
[[./spine_build_scaffold.org][make/build]] VERSION
-* 0. version.txt configuration.txt (set version & configuration)
-** 0. set program version tangle SET :version:
-
-#+HEADER: :tangle "../views/version.txt"
-#+BEGIN_SRC txt
-<<spine_version_struct>>
-<<spine_version_current_set>>
-<<spine_compiler_restrictions>>
-#+END_SRC
-
-** 0. set configuration tangle SET :configuration:
-
-see: cfte_configuation.org
-
-** program version struct
-
-#+NAME: spine_version_struct
-#+BEGIN_SRC d
-/+ obt - org-mode generated file +/
-struct Version {
- int major;
- int minor;
- int patch;
-}
-#+END_SRC
-
-** set program version VERSION :version:set:project:
-
-#+NAME: spine_version_current_set
-#+BEGIN_SRC d
-enum _ver = Version(0, 11, 3);
-#+END_SRC
-
-** compilation restrictions (supported compilers)
-- set compilation restrictions
-
-https://dlang.org/spec/version.html#predefined-versions
-
-#+NAME: spine_compiler_restrictions
-#+BEGIN_SRC d
-version (Posix) {
- version (DigitalMars) {
- } else version (LDC) {
- } else version (GNU) {
- } else {
- static assert (0, "Unsupported D compiler");
- }
-} else {
- static assert (0, "Unsupported D compiler");
-}
-#+END_SRC
-
-* 1. spine (sisu document parser) :spine:
+* spine (sisu document parser) :spine:
** notes
- deal with imports
- get options
@@ -82,7 +30,7 @@ version (Posix) {
- process file
- output
-** 0. spine src/spine :template:
+** spine src/spine :template:
- process files (act according to requirements of each type)
- by sourcefilename
@@ -236,7 +184,7 @@ string program_name = "spine";
+/
#+END_SRC
-** 1. pre-loop init :init:
+** pre-loop init :init:
*** init
**** imports :import:
***** spine :spine:
@@ -1185,7 +1133,7 @@ foreach(arg; args[1..$]) {
}
#+END_SRC
-** _2. processing: (loop each file)_ [+2] :loop:files:
+** _processing: (loop each file)_ [+2] :loop:files:
*** scope (loop) :scope:
#+NAME: spine_each_file_do_scope
@@ -1361,7 +1309,7 @@ scope(exit) {
}
#+END_SRC
-** +2c. no valid filename provided+
+** +no valid filename provided+
#+NAME: spine_no_filename_provided
#+BEGIN_SRC d
/+ no recognized filename provided +/
@@ -1369,7 +1317,7 @@ writeln("no recognized filename");
break; // terminate, stop
#+END_SRC
-* 2. pre-processing
+* pre-processing
** Output _document abstraction functions_ :module:spine:abstraction:
*** 0 module template
- abstraction template
diff --git a/org/spine_build_scaffold.org b/org/spine_build_scaffold.org
deleted file mode 100644
index f054093..0000000
--- a/org/spine_build_scaffold.org
+++ /dev/null
@@ -1,3918 +0,0 @@
--*- mode: org -*-
-#+TITLE: spine (doc_reform) (project) makefile
-#+DESCRIPTION: makefile for spine
-#+FILETAGS: :spine:build:tools:
-#+AUTHOR: Ralph Amissah
-#+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]]
-#+COPYRIGHT: Copyright (C) 2015 - 2021 Ralph Amissah
-#+LANGUAGE: en
-#+STARTUP: content hideblocks hidestars noindent entitiespretty
-#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
-#+PROPERTY: header-args :exports code
-#+PROPERTY: header-args+ :noweb yes
-#+PROPERTY: header-args+ :eval no
-#+PROPERTY: header-args+ :results no
-#+PROPERTY: header-args+ :cache no
-#+PROPERTY: header-args+ :padline no
-#+PROPERTY: header-args+ :mkdirp yes
-
-[[./spine.org][spine.org]] VERSION
-[[./spine_info.org][spine_info.org]] [[../org/][org/]]
-
-* spine
-** version info VERSION :version:set:project:
-*** project
-
-#+NAME: version_spine
-#+BEGIN_SRC sh
-0.11.3
-#+END_SRC
-
-*** subprojects
-
-- d2sqlite3
- https://code.dlang.org/packages/d2sqlite3
-
-#+NAME: version_d2sqlite3
-#+BEGIN_SRC sh
-0.19.1
-#+END_SRC
-
-- imageformats
- https://code.dlang.org/packages/imageformats
-
-#+NAME: version_imageformats
-#+BEGIN_SRC sh
-7.0.2
-#+END_SRC
-
-- dyaml
- https://code.dlang.org/packages/dyaml
-
-#+NAME: version_dyaml
-#+BEGIN_SRC sh
-0.8.3
-#+END_SRC
-
-- tinyendian
- https://code.dlang.org/packages/tinyendian
-
-#+NAME: version_tinyendian
-#+BEGIN_SRC sh
-0.2.0
-#+END_SRC
-
-*** build tools if specified
-
-- meson
-
-#+NAME: version_meson
-#+BEGIN_SRC sh
-0.46
-#+END_SRC
-
-- soversion
-
-#+NAME: version_soversion
-#+BEGIN_SRC sh
-0
-#+END_SRC
-
-** makefile :makefile:
-*** tangle
-
-#+HEADER: :tangle ../makefile
-#+BEGIN_SRC makefile
-<<make_set_var_0_git_version>>
-<<make_set_var_1_dub>>
-<<make_set_var_2_project_details>>
-<<make_set_var_3_emacs_org>>
-<<make_set_var_4_markup_samples_pods>>
-<<make_set_var_5_markup_samples_search_dirs>>
-<<make_find_markup_samples_0_pod_and_dir>>
-<<make_find_markup_samples_1_pod>>
-<<make_find_markup_samples_2_dir>>
-<<make_version_tag>>
-<<make_changelog>>
-<<make_project_zip_archive>>
-<<make_get_project_dependencies_github>>
-<<make_dub_upgrade>>
-<<make_compile_0_compiler_default>>
-<<make_compile_1_compiler_all>>
-<<make_compile_2_compiler_all_versioned>>
-<<make_compile_3_compiler_all_debug>>
-<<make_meson_build>>
-<<make_clean_tangle_compile_0_all_clean>>
-<<make_clean_tangle_compile_1_all_clean_versioned>>
-<<make_clean_tangle_compile_2_all_clean_debug>>
-<<make_dub_compile_dmd_0_default>>
-<<make_dub_compile_dmd_1_debug>>
-<<make_dub_compile_dmd_2_versioned>>
-<<make_dub_compile_dmd_3_release>>
-<<make_dub_compile_gdc_0_default>>
-<<make_dub_compile_gdc_1_debug>>
-<<make_dub_compile_gdc_2_versioned>>
-<<make_dub_compile_gdc_3_release>>
-<<make_dub_compile_ldc_0_default>>
-<<make_dub_compile_ldc_1_debug>>
-<<make_dub_compile_ldc_2_versioned>>
-<<make_dub_compile_ldc_3_release>>
-<<make_initialization_operations_0_parts>>
-<<make_initialization_operations_1_git_version>>
-<<make_initialization_operations_2_assemble>>
-<<make_project_testrun_0_find_pods>>
-<<make_project_testrun_1>>
-<<make_project_testrun_2>>
-<<make_project_testrun_3>>
-<<make_project_testrun_4>>
-<<make_project_testrun_5>>
-<<make_project_testrun_6>>
-<<make_project_testrun_7>>
-<<make_project_testrun_8>>
-<<make_project_testrun_9>>
-<<make_project_testrun_10>>
-<<make_project_testrun_11>>
-<<make_project_testrun_12>>
-<<make_tangle_0>>
-<<make_tangle_1>>
-<<make_nix_project>>
-<<make_git_snapshot>>
-<<make_phony>>
-#+END_SRC
-
-*** settings [+2] :settings:
-**** git version stamp :git:version:
-
-#+NAME: make_set_var_0_git_version
-#+BEGIN_SRC makefile
-PROG_VER_GIT :=$(shell echo `git describe --long --tags | sed -e "s/^[ a-z_-]\+\([0-9.]\+\)/\1/;s/\([^-]*-g\)/r\1/;s/-/./g"`)
-PROG_VER_DECLARED :=$(shell echo `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
-
-**** dub (build tool) :dub:
-
-#+NAME: make_set_var_1_dub
-#+BEGIN_SRC makefile
-DUB=dub
-DUB_FLAGS=-v --force --compiler=
-#+END_SRC
-
-**** Project Details :project:spine:
-
-#+NAME: make_set_var_2_project_details
-#+BEGIN_SRC makefile
-PRG_NAME=doc-reform
-PRG_NICKAME=spine
-PRG_NAME_DIR=$(shell echo `echo $(PRG_NAME) | sed -e "s/-/_/g"`)
-PRG_SRC=$(PRG_NAME).d
-PRG_SRCDIR=./src
-PRG_BIN=$(PRG_NAME)
-PRG_BINDIR=./bin
-PRG_DOCDIR=./docs
-#+END_SRC
-
-**** Emacs Org settings :settings:emacs:org:tangle:
-
-#+NAME: make_set_var_3_emacs_org
-#+BEGIN_SRC makefile
-EMACSLISP=/usr/share/emacs/site-lisp
-ORG_VER_AVAILABLE=$(shell echo `ls -d ~/.emacs.d/elpa/org-???????? | cut -d '-' -f2`)
-EMACSLISP_ORG=~/.emacs.d/elpa/org-$($(shell echo $(ORG_VER_AVAILABLE)))
-ORG_CONTRIB_VER_AVAILABLE=$(shell echo `ls -d ~/.emacs.d/elpa/org-plus-contrib-???????? | cut -d '-' -f2`)
-EMACSLISP_ORG_CONTRIB=~/.emacs.d/elpa/org-plus-contrib-$($(shell echo $(ORG_CONTRIB_VER_AVAILABLE)))
-ORGFILELIST=$(shell echo `ls -1 org/*.org`)
-ORGFILES=""
-ORGDIR :=$(shell echo `pwd`)
-#+END_SRC
-
-**** Markup Samples
-***** pods
-
-#+NAME: make_set_var_4_markup_samples_pods
-#+BEGIN_SRC makefile
-SiSU_MARKUP_SAMPLES_FIND_PODS= \
-find data/pod -maxdepth 2 -name pod.manifest | cut -f 1-3 -d / | sort
-
-SiSU_MARKUP_SAMPLES_PODS_FOUND= \
-$(SiSU_MARKUP_SAMPLES_FIND_PODS) | xargs
-
-SiSU_MARKUP_SAMPLES_POD = \
-data/pod/accelerando.charles_stross \
-data/pod/alices_adventures_in_wonderland.lewis_carroll \
-data/pod/content.cory_doctorow \
-data/pod/democratizing_innovation.eric_von_hippel \
-data/pod/down_and_out_in_the_magic_kingdom.cory_doctorow \
-data/pod/for_the_win.cory_doctorow \
-data/pod/free_as_in_freedom_2.richard_stallman_and_the_free_software_revolution.sam_williams.richard_stallman \
-data/pod/free_culture.lawrence_lessig \
-data/pod/free_for_all.peter_wayner \
-data/pod/gpl2.fsf \
-data/pod/gpl3.fsf \
-data/pod/gullivers_travels.jonathan_swift \
-data/pod/little_brother.cory_doctorow \
-data/pod/live-manual \
-data/pod/sisu-manual \
-data/pod/the_autonomous_contract.ralph_amissah \
-data/pod/the_cathedral_and_the_bazaar.eric_s_raymond \
-data/pod/the_public_domain.james_boyle \
-data/pod/the_wealth_of_networks.yochai_benkler \
-data/pod/through_the_looking_glass.lewis_carroll \
-data/pod/two_bits.christopher_kelty \
-data/pod/un_contracts_international_sale_of_goods_convention_1980 \
-data/pod/viral_spiral.david_bollier
-#+END_SRC
-
-***** dir
-
-#+NAME: make_set_var_5_markup_samples_search_dirs
-#+BEGIN_SRC makefile
-SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND = \
-find data/sisudir/media/text -name *.ss[tm] | sort | xargs
-
-SiSU_MARKUP_SAMPLES_DIR = \
-data/sisudir/media/text/accelerando.charles_stross.sst \
-data/sisudir/media/text/alices_adventures_in_wonderland.lewis_carroll.sst \
-data/sisudir/media/text/content.cory_doctorow.sst \
-data/sisudir/media/text/democratizing_innovation.eric_von_hippel.sst \
-data/sisudir/media/text/down_and_out_in_the_magic_kingdom.cory_doctorow.sst \
-data/sisudir/media/text/ffa_tmp.sst \
-data/sisudir/media/text/for_the_win.cory_doctorow.sst \
-data/sisudir/media/text/free_as_in_freedom_2.richard_stallman_and_the_free_software_revolution.sam_williams.richard_stallman.sst \
-data/sisudir/media/text/free_culture.lawrence_lessig.sst \
-data/sisudir/media/text/free_for_all.peter_wayner.sst \
-data/sisudir/media/text/gpl2.fsf.sst \
-data/sisudir/media/text/gpl3.fsf.sst \
-data/sisudir/media/text/gullivers_travels.jonathan_swift.sst \
-data/sisudir/media/text/little_brother.cory_doctorow.sst \
-data/sisudir/media/text/sisu_markup.sst \
-data/sisudir/media/text/sisu_markup_stress_test.sst \
-data/sisudir/media/text/sisu_markup_test.sst \
-data/sisudir/media/text/table_special_markup.sst \
-data/sisudir/media/text/the_autonomous_contract.ralph_amissah.sst \
-data/sisudir/media/text/the_cathedral_and_the_bazaar.eric_s_raymond.sst \
-data/sisudir/media/text/the_public_domain.james_boyle.sst \
-data/sisudir/media/text/the_wealth_of_networks.yochai_benkler.sst \
-data/sisudir/media/text/through_the_looking_glass.lewis_carroll.sst \
-data/sisudir/media/text/two_bits.christopher_kelty.sst \
-data/sisudir/media/text/un_contracts_international_sale_of_goods_convention_1980.sst \
-data/sisudir/media/text/viral_spiral.david_bollier.sst
-#+END_SRC
-
-****** sample markup file list
-
-#+NAME: make_find_markup_samples_0_pod_and_dir
-#+BEGIN_SRC makefile
-markup_samples:
- find data/pod -name pod.manifest | cut -f 1-3 -d / | sort; \
-find data/sisudir/media/text -name *.ss[tm] | sort
-#+END_SRC
-
-#+NAME: make_find_markup_samples_1_pod
-#+BEGIN_SRC makefile
-markup_pod_samples:
- find data/pod -name pod.manifest | cut -f 1-3 -d / | sort
-#+END_SRC
-
-#+NAME: make_find_markup_samples_2_dir
-#+BEGIN_SRC makefile
-markup_dir_samples:
- find data/sisudir/media/text -name *.ss[tm] | sort
-#+END_SRC
-
-*** make archive
-
-#+NAME: make_project_zip_archive
-#+BEGIN_SRC makefile
-gitZip:
- git archive -v --format=tar --prefix=`echo spine-$(PROG_VER_DECLARED)-tag-$(PROG_VER_GIT)`/ HEAD | gzip > ../spine-$(PROG_VER_DECLARED)-tag-$(PROG_VER_GIT).tar.gz && \
- echo "to unzip: tar -xzf spine-$(PROG_VER_DECLARED)-tag-$(PROG_VER_GIT).tar.gz"
-gitArchive:
- git archive -v --format=tar --prefix=spine-$(PROG_VER_DECLARED)-tag-$(PROG_VER_GIT)/ HEAD | gzip > ../spine-$(PROG_VER_DECLARED)-tag-$(PROG_VER_GIT).tar.gz && \
- echo "to unzip: tar -xzf spine-$(PROG_VER_DECLARED)-tag-$(PROG_VER_GIT).tar.gz"
-#+END_SRC
-
-*** _make_ commands [+2] :make:commands:
-
-- build commands
- - build
- - debug
- - release
-- init, clean, distclean etc.
- - init
- - clean
- - expunge
- - distclean
- - distclean_and_init
-- org babel tangle
- - tangle
-- git snapshot
- - gitsnapshot
-
-**** version tag, stamp
-
-#+NAME: make_version_tag
-#+BEGIN_SRC makefile
-version_tag:
- echo "DRV=<<version_spine>>; git tag -f doc-reform_v$$\{DRV} -m\"doc-reform $$\{DRV}\" HEAD" && \
- echo "git tag -f doc-reform_v<<version_spine>> -m\"doc-reform spine-<<version_spine>>\" HEAD"
-#+END_SRC
-
-**** changelog
-
-#+NAME: make_changelog
-#+BEGIN_SRC makefile
-changelog:
- git log --pretty=format:'---%+s %+as %ae%+h%d%+b' --no-merges | sed "/^\\s*$$/d" | sed "s/^---$$//" | sed "s/^\(\*\)\+/-/" | sed "s/ \+$$//" > CHANGELOG_
-#+END_SRC
-
-**** build commands [+1] :build:compile:
-***** _dub_ build rebuild :dub:
-****** all compiler builds :all:dmd:gdc:ldc:
-******* all builds
-******** default
-
-#+NAME: make_dub_upgrade
-#+BEGIN_SRC makefile
-dub_upgrade:
- $(DUB) upgrade
-#+END_SRC
-
-#+NAME: make_compile_0_compiler_default
-#+BEGIN_SRC makefile
-default: ldc
-#+END_SRC
-
-******** quick :quick:
-********* default :default:
-
-#+NAME: make_compile_1_compiler_all
-#+BEGIN_SRC makefile
-all: dmd ldc gdc
-#+END_SRC
-
-********* version :version:
-
-#+NAME: make_compile_2_compiler_all_versioned
-#+BEGIN_SRC makefile
-all_ver: dmd_ver ldc_ver gdc_ver
-#+END_SRC
-
-********* get project dependencies
-
-#+NAME: make_get_project_dependencies_github
-#+BEGIN_SRC makefile
-get_depends:
- hwd=$$(echo `pwd`) && \
- gwd="$${hwd}/src/ext_depends" && \
- dirs=$$(echo `ls -gx $${gwd}`) && \
- license_bsl="Boost Software License 1.0 (BSL-1.0)" && \
- echo $${hwd} && \
- echo $${gwd} && \
- echo $${dirs} && \
- dub upgrade; \
- cd $${gwd} && \
- for dir in $${dirs}; do \
- if [ -d $${dir} ]; then \
- echo $${dir} && \
- if [ "imageformats" == $${dir} ]; then \
- echo $${dir} && \
- rm -rf $${dir} && \
- git clone --depth=1 https://github.com/tjhann/$${dir} && \
- cd $${dir} && \
- echo $$PWD && \
- echo "$${dir} `git rev-parse HEAD | cut -c 1-8`" > ../$${dir}.meta && \
- echo "https://github.com/tjhann/$${dir}" >> ../$${dir}.meta && \
- echo "$${license_bsl}" >> ../$${dir}.meta && \
- cd $${gwd} && \
- rm -rf $${dir}/.git; \
- elif [[ "d2sqlite3" == $${dir} || "D-YAML" == $${dir} || "tinyendian" == $${dir} ]]; then \
- echo $${dir} && \
- rm -rf $${dir} && \
- git clone --depth=1 https://github.com/dlang-community/$${dir} && \
- cd $${dir} && \
- echo "$${dir} `git rev-parse HEAD | cut -c 1-8`" > ../$${dir}.meta && \
- echo "https://github.com/dlang-community/$${dir}" >> ../$${dir}.meta && \
- echo "$${license_bsl}" >> ../$${dir}.meta && \
- cd $${gwd} && \
- rm -rf $${dir}/.git; \
- fi; \
- fi; \
- done; \
- cd $${hwd}
-set_depends: get_depends
- dub describe | sed 's~$(shell echo `pwd | sed 's_/_\\/_g'`)~.~g' > dub_describe.json
-rm_flakelock:
- git reset HEAD flake.lock && \
- touch flake.lock \
- git rm -f flake.lock
-flake_update:
- git add .; \
- nix flake update && \
- git reset HEAD flake.lock; \
- cp flake.lock flake.lock_
-flake_update_move_lock: flake_update
- touch flake.lock \
- git rm -f flake.lock
-set_latest: set_depends flake_update rm_flakelock
-#+END_SRC
-
-gitDir=dub2nix; git clone --depth=1 https://github.com/lionello/${gitDir} | rm -rf ${gitDir}/.git
-
-********* debug :debug:
-
-#+NAME: make_compile_3_compiler_all_debug
-#+BEGIN_SRC makefile
-all_debug: dmd_debug gdc_debug ldc_debug
-#+END_SRC
-
-********* _meson_ build :meson:
-
-meson using dub
-- works & looks pretty clean
-- but subprojects built externally & not suitable for debian packaging
-
-#+NAME: make_meson_build
-#+BEGIN_SRC makefile
-meson_clean_build_dir:
- rm -r build; mkdir build
-meson_build: meson_clean_build_dir
- meson --buildtype=debugoptimized build
- ninja -C build
- notify-send -t 0 'D meson build ldc compiled test release executable ready' 'spine'
-meson_redo: meson_clean_build_dir meson_build
-meson_project_build_clean: clean skel tangle dub_upgrade meson_build
-meson: meson_clean_build_dir dub_upgrade meson_build
-#+END_SRC
-
-******** clean & tangle :clean:tangle:
-********* default :default:
-
-#+NAME: make_clean_tangle_compile_0_all_clean
-#+BEGIN_SRC makefile
-all_clean: clean tangle dmd ldc gdc
-#+END_SRC
-
-********* version :version:
-
-#+NAME: make_clean_tangle_compile_1_all_clean_versioned
-#+BEGIN_SRC makefile
-all_ver_clean: clean tangle dmd_ver ldc_ver gdc_ver
-#+END_SRC
-
-********* debug :debug:
-
-#+NAME: make_clean_tangle_compile_2_all_clean_debug
-#+BEGIN_SRC makefile
-all_debug_ver: dmd_debug_ver gdc_debug_ver ldc_debug_ver
-all_debug_clean_ver: clean tangle dmd_debug_ver gdc_debug_ver ldc_debug_ver
-#+END_SRC
-
-****** individual compiler builds :each:
-******* dmd :dmd:
-******** quick :quick:
-********* default :default:
-
-#+NAME: make_dub_compile_dmd_0_default
-#+BEGIN_SRC makefile
-dmd: dub_upgrade
- $(DUB) --compiler=dmd --config=dmd --build=release-nobounds
- notify-send -t 0 'D dmd compiled test release executable ready' 'spine-dmd'
-#+END_SRC
-
-********* debug :debug:
-
-#+NAME: make_dub_compile_dmd_1_debug
-#+BEGIN_SRC makefile
-dmd_debug:
- $(DUB) --compiler=dmd --config=dmd --build=debug
-#+END_SRC
-
-********* version :version:
-
-- assumes git tags with program version
-
-#+NAME: make_dub_compile_dmd_2_versioned
-#+BEGIN_SRC makefile
-dmd_ver: dub_upgrade
- $(DUB) --compiler=dmd --config=dmd-version
- mv bin/spine-dmd-ver bin-archive/spine-$(PROG_VER_DECLARED)-tag-$(PROG_VER_GIT)-dmd
- notify-send -t 0 'D dmd compiled test release executable ready' 'spine-$(PROG_VER_DECLARED)-tag-$(PROG_VER_GIT)-dmd'
-dmd_clean_ver: clean tangle dmd_ver
-#+END_SRC
-
-******** clean & tangle :clean:tangle:
-
-#+NAME: make_dub_compile_dmd_3_release
-#+BEGIN_SRC makefile
-dmd_rel: expunge skel tangle
- $(DUB) --compiler=dmd --config=spine-release
-dmd_rel_tangle: tangle
- $(DUB) --compiler=dmd --config=spine-dmd
-dmd_rel_expunge_tangle: expunge skel tangle dmd_rel_tangle
-dmd_debug_tangle: tangle
- $(DUB) --compiler=dmd --config=spine-dmd-debug
-#+END_SRC
-
-******* gdc :gdc:
-******** quick :quick:
-********* default :default:
-
-#+NAME: make_dub_compile_gdc_0_default
-#+BEGIN_SRC makefile
-gdc: dub_upgrade
- $(DUB) --compiler=gdc --config=gdc
- notify-send -t 0 'D gdc compiled test release executable ready' 'spine-gdc'
-#+END_SRC
-
-********* debug :debug:
-
-#+NAME: make_dub_compile_gdc_1_debug
-#+BEGIN_SRC makefile
-gdc_debug:
- $(DUB) --compiler=gdc --config=gdc --build=debug
-#+END_SRC
-
-********* version :version:
-
-- assumes git tags with program version
-
-#+NAME: make_dub_compile_gdc_2_versioned
-#+BEGIN_SRC makefile
-gdc_ver: dub_upgrade
- $(DUB) --compiler=gdc --config=gdc-version
- mv bin/spine-gdc-ver bin-archive/spine-$(PROG_VER_DECLARED)-tag-$(PROG_VER_GIT)-gdc
- notify-send -t 0 'D gdc compiled test release executable ready' 'spine-$(PROG_VER_DECLARED)-tag-$(PROG_VER_GIT)-gdc'
-gdc_clean_ver: clean tangle gdc_ver
-#+END_SRC
-
-******** clean & tangle :clean:tangle:
-
-#+NAME: make_dub_compile_gdc_3_release
-#+BEGIN_SRC makefile
-gdc_rel: expunge skel tangle
- $(DUB) --compiler=gdc --config=spine-release
-gdc_rel_tangle: tangle
- $(DUB) --compiler=gdc --config=spine-gdc
-gdc_rel_expunge_tangle: expunge skel tangle gdc_rel_tangle
-gdc_debug_tangle: tangle
- $(DUB) --compiler=gdc --config=spine-gdc-debug
-#+END_SRC
-
-******* ldc :ldc:
-******** quick :quick:
-********* default :default:
-
-#+NAME: make_dub_compile_ldc_0_default
-#+BEGIN_SRC makefile
-ldc: dub_upgrade
- $(DUB) --compiler=ldc2 --config=ldc --build=release
- notify-send -t 0 'D ldc compiled test release executable ready' 'spine-ldc'
-#+END_SRC
-
-********* debug :debug:
-
-#+NAME: make_dub_compile_ldc_1_debug
-#+BEGIN_SRC makefile
-ldc_debug:
- $(DUB) --compiler=ldc2 --config=ldc --build=debug
-#+END_SRC
-
-********* version :version:
-
-- assumes git tags with program version
-
-#+NAME: make_dub_compile_ldc_2_versioned
-#+BEGIN_SRC makefile
-ldc_ver: dub_upgrade
- $(DUB) --compiler=ldc2 --config=ldc-version
- mv bin/spine-ldc-ver bin-archive/spine-$(PROG_VER_DECLARED)-tag-$(PROG_VER_GIT)-ldc
- notify-send -t 0 'D ldc2 compiled test release executable ready' 'spine-$(PROG_VER_DECLARED)-tag-$(PROG_VER_GIT)-ldc'
-ldc_clean_ver: clean tangle ldc_ver
-#+END_SRC
-
-******** clean & tangle :clean:tangle:
-
-#+NAME: make_dub_compile_ldc_3_release
-#+BEGIN_SRC makefile
-ldc_rel: expunge skel tangle
- $(DUB) --compiler=ldc2 --config=spine-release
-ldc_rel_tangle: tangle
- $(DUB) --compiler=ldc2 --config=spine-ldc
-ldc_rel_expunge_tangle: expunge skel tangle ldc_rel_tangle
-ldc_debug_tangle: tangle
- $(DUB) --compiler=ldc2 --config=spine-ldc-debug
-#+END_SRC
-
-****** generic
-******* init clean distclean etc. :clean:
-
-#+NAME: make_initialization_operations_0_parts
-#+BEGIN_SRC makefile
-reinit: clean skel tangle
-skel:
- mkdir -p $(PRG_BINDIR); \
- mkdir -p $(PRG_BINDIR)-archive; \
- mkdir -p build; \
- mkdir -p views; \
- mkdir -p data; \
- mkdir -p sundry/util/d/cgi/search/cgi-bin/src; \
- mkdir -p sundry/util/d/tools/markup_conversion; \
- mkdir -p sundry/editor-syntax-etc/emacs; \
- mkdir -p sundry/editor-syntax-etc/vim/syntax; \
- mkdir -p sundry/editor-syntax-etc/vim/colors; \
- mkdir -p sundry/editor-syntax-etc/vim/ftplugin; \
- mkdir -p sundry/editor-syntax-etc/vim/rc; \
- mkdir -p sundry/editor-syntax-etc/vim/templates; \
- mkdir -p $(PRG_SRCDIR)/$(PRG_NAME_DIR)/conf; \
- mkdir -p $(PRG_SRCDIR)/$(PRG_NAME_DIR)/io_in; \
- mkdir -p $(PRG_SRCDIR)/$(PRG_NAME_DIR)/io_out; \
- mkdir -p $(PRG_SRCDIR)/$(PRG_NAME_DIR)/meta; \
- mkdir -p $(PRG_SRCDIR)/$(PRG_NAME_DIR)/share; \
- mkdir -p $(PRG_SRCDIR)/$(PRG_NAME_DIR); \
- mkdir -p $(PRG_BINDIR);
-init: skel
-clean:
- rm -rf build; \
- rm -rf $(PRG_SRCDIR); \
- rm -rf $(PRG_DOCDIR);
-clean_bin:
- rm $(PRG_BINDIR)/*
-clean_src:
- rm -rf $(PRG_SRCDIR);
-clean_docs:
- rm -rf $(PRG_DOCDIR)
-expunge:
- rm -f dub.selections.json; \
- rm -rf build; \
- rm -rf $(PRG_SRCDIR); \
- rm -rf $(PRG_BINDIR); \
- rm -rf $(PRG_DOCDIR);
-distclean: expunge
-distclean_and_init: expunge
- mkdir -p views; \
- mkdir -p sundry/util/d/cgi/search/cgi-bin/src; \
- mkdir -p sundry/util/d/tools/markup_conversion; \
- mkdir -p sundry/editor-syntax-etc/emacs; \
- mkdir -p sundry/editor-syntax-etc/vim/syntax; \
- mkdir -p sundry/editor-syntax-etc/vim/colors; \
- mkdir -p sundry/editor-syntax-etc/vim/ftplugin; \
- mkdir -p sundry/editor-syntax-etc/vim/rc; \
- mkdir -p sundry/editor-syntax-etc/vim/templates; \
- mkdir -p $(PRG_SRCDIR)/$(PRG_NAME_DIR); \
- mkdir -p $(PRG_BINDIR);
-#+END_SRC
-
-******* version :version:
-
-#+NAME: make_initialization_operations_1_git_version
-#+BEGIN_SRC makefile
-ver:
- echo spine-$(PROG_VER_DECLARED)-tag-$(PROG_VER_GIT)
-#+END_SRC
-
-******* tangle build rebuild :clean:tangle:build:
-
-#+NAME: make_initialization_operations_2_assemble
-#+BEGIN_SRC makefile
-clean_tangle_build: clean tangle build
-tangle_build: tangle build
-build: $(PRG_SRCDIR)/$(PRG_SRC)
- $(DC) $(DC_FLAGS) \
- $(DC_FLAG_BINOF)$(PRG_BINDIR)/$(PRG_BIN) \
- $(PRG_SRCDIR)/$(PRG_SRC)
-rebuild: $(PRG_SRCDIR)/$(PRG_SRC) $(PRG_BINDIR)/$(PRG_BIN).o clean build
-makefile_new:
- make -k tangle_maker
-restart: clean tangle
-#+END_SRC
-
-**** testrun (program against document markup) :markup:sample:
-***** pods :pod:
-******* find files
-
-#+NAME: make_project_testrun_0_find_pods
-#+BEGIN_SRC makefile
-find_pods:
- $(SiSU_MARKUP_SAMPLES_FIND_PODS)
-#+END_SRC
-
-****** dmd
-******* find files
-
-#+NAME: make_project_testrun_1
-#+BEGIN_SRC makefile
-dmd_testrun_find:
- ./bin/spine-dmd -v --source --html --epub --sqlite-discrete \
---sqlite-create --sqlite-update \
---output-dir=tmp/program_output_pod \
-data/pod/sisu-manual
-dmd_testrun_find_pod_source:
- $(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
-./bin/spine-ldc -v --source --html --epub \
---output-dir=tmp/program_output_pod
-dmd_testrun_find_pod_pod:
- $(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
-./bin/spine-dmd -v --pod \
---output-dir=tmp/program_output_pod
-dmd_testrun_find_pod_html:
- $(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
-./bin/spine-dmd -v --html \
---output-dir=tmp/program_output_pod
-dmd_testrun_find_pod_epub:
- $(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
-./bin/spine-dmd -v --epub \
---output-dir=tmp/program_output_pod
-dmd_testrun_find_pod_all:
- $(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
-./bin/spine-dmd -v --source --html --epub --sqlite-discrete \
---sqlite-create --sqlite-update \
---output-dir=tmp/program_output_pod
-#+END_SRC
-
-******* path list
-
-#+NAME: make_project_testrun_2
-#+BEGIN_SRC makefile
-dmd_testrun_paths_pod_source:
- ./bin/spine-dmd -v --source \
---output-dir=tmp/program_output_pod \
-$(SiSU_MARKUP_SAMPLES_POD)
-dmd_testrun_paths_pod_pod:
- ./bin/spine-dmd -v --pod \
---output-dir=tmp/program_output_pod \
-$(SiSU_MARKUP_SAMPLES_POD)
-dmd_testrun_paths_pod_html:
- ./bin/spine-dmd -v --html \
---output-dir=tmp/program_output_pod \
-$(SiSU_MARKUP_SAMPLES_POD)
-dmd_testrun_paths_pod_epub:
- ./bin/spine-dmd -v --epub \
---output-dir=tmp/program_output_pod \
-$(SiSU_MARKUP_SAMPLES_POD)
-dmd_testrun_paths_pod_all:
- ./bin/spine-dmd -v --source --html --epub --sqlite-discrete \
---sqlite-create --sqlite-update \
---output-dir=tmp/program_output_pod \
-$(SiSU_MARKUP_SAMPLES_POD)
-#+END_SRC
-
-****** gdc
-******* find files
-
-#+NAME: make_project_testrun_3
-#+BEGIN_SRC makefile
-gdc_testrun_find:
- ./bin/spine-gdc -v --source --html --epub --sqlite-discrete \
---sqlite-create --sqlite-update \
---output-dir=tmp/program_output_pod \
-data/pod/sisu-manual
-gdc_testrun_find_pod_source:
- $(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
-./bin/spine-gdc -v --source \
---output-dir=tmp/program_output_pod
-gdc_testrun_find_pod_pod:
- $(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
-./bin/spine-gdc -v --pod \
---output-dir=tmp/program_output_pod
-gdc_testrun_find_pod_html:
- $(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
-./bin/spine-gdc -v --html \
---output-dir=tmp/program_output_pod
-gdc_testrun_find_pod_epub:
- $(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
-./bin/spine-gdc -v --epub \
---output-dir=tmp/program_output_pod
-gdc_testrun_find_pod_all:
- $(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
-./bin/spine-gdc -v --source --html --epub --sqlite-discrete \
---sqlite-create --sqlite-update \
---output-dir=tmp/program_output_pod
-#+END_SRC
-
-******* path list
-
-#+NAME: make_project_testrun_4
-#+BEGIN_SRC makefile
-gdc_testrun_paths:
- ./bin/spine-gdc -v --source --html --epub --sqlite-discrete \
---sqlite-create --sqlite-update \
---output-dir=tmp/program_output_pod \
-data/pod/sisu-manual
-gdc_testrun_paths_pod_source:
- ./bin/spine-gdc -v --source \
---output-dir=tmp/program_output_pod \
-$(SiSU_MARKUP_SAMPLES_POD)
-gdc_testrun_paths_pod_pod:
- ./bin/spine-gdc -v --pod \
---output-dir=tmp/program_output_pod \
-$(SiSU_MARKUP_SAMPLES_POD)
-gdc_testrun_paths_pod_html:
- ./bin/spine-gdc -v --html \
---output-dir=tmp/program_output_pod \
-$(SiSU_MARKUP_SAMPLES_POD)
-gdc_testrun_paths_pod_epub:
- ./bin/spine-gdc -v --epub \
---output-dir=tmp/program_output_pod \
-$(SiSU_MARKUP_SAMPLES_POD)
-gdc_testrun_paths_pod_all:
- ./bin/spine-gdc -v --source --html --epub --sqlite-discrete \
---sqlite-create --sqlite-update \
---output-dir=tmp/program_output_pod \
-$(SiSU_MARKUP_SAMPLES_POD)
-#+END_SRC
-
-****** ldc
-******* find files
-
-#+NAME: make_project_testrun_5
-#+BEGIN_SRC makefile
-ldc_testrun_find:
- ./bin/spine-ldc -v --source --html --epub --sqlite-discrete \
---sqlite-create --sqlite-update \
---output-dir=tmp/program_output_pod \
-data/pod/sisu-manual
-ldc_testrun_find_pod_source:
- $(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
- ./bin/spine-ldc -v --source \
---output-dir=tmp/program_output_pod
-ldc_testrun_find_pod_pod:
- $(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
- ./bin/spine-ldc -v --pod \
---output-dir=tmp/program_output_pod
-ldc_testrun_find_pod_html:
- $(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
- ./bin/spine-ldc -v --html \
---output-dir=tmp/program_output_pod
-ldc_testrun_find_pod_epub:
- $(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
- ./bin/spine-ldc -v --epub \
---output-dir=tmp/program_output_pod
-ldc_testrun_find_pod_all:
- $(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
- ./bin/spine-ldc -v --source --html --epub --sqlite-discrete \
---sqlite-create --sqlite-update \
---output-dir=tmp/program_output_pod
-#+END_SRC
-
-******* path list
-
-#+NAME: make_project_testrun_6
-#+BEGIN_SRC makefile
-ldc_testrun_paths:
- ./bin/spine-ldc -v --source --html --epub --sqlite-discrete \
---sqlite-create --sqlite-update \
---output-dir=tmp/program_output_pod \
-data/pod/sisu-manual
-ldc_testrun_paths_pod_source:
- ./bin/spine-ldc -v --source \
---output-dir=tmp/program_output_pod \
-$(SiSU_MARKUP_SAMPLES_POD)
-ldc_testrun_paths_pod_pod:
- ./bin/spine-ldc -v --pod \
---output-dir=tmp/program_output_pod \
-$(SiSU_MARKUP_SAMPLES_POD)
-ldc_testrun_paths_pod_html:
- ./bin/spine-ldc -v --html \
---output-dir=tmp/program_output_pod \
-$(SiSU_MARKUP_SAMPLES_POD)
-ldc_testrun_paths_pod_epub:
- ./bin/spine-ldc -v --epub \
---output-dir=tmp/program_output_pod \
-$(SiSU_MARKUP_SAMPLES_POD)
-ldc_testrun_paths_pod_all:
- ./bin/spine-ldc -v --source --html --epub --sqlite-discrete \
---sqlite-create --sqlite-update \
---output-dir=tmp/program_output_pod \
-$(SiSU_MARKUP_SAMPLES_POD)
-#+END_SRC
-
-***** dir :dir:
-****** dmd
-******* find files
-
-#+NAME: make_project_testrun_7
-#+BEGIN_SRC makefile
-dmd_testrun_find_dir_source:
- $(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
-./bin/spine-dmd -v --source \
---output-dir=tmp/program_output_dir
-dmd_testrun_find_dir_pod:
- $(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
-./bin/spine-dmd -v --pod \
---output-dir=tmp/program_output_dir
-dmd_testrun_find_dir_html:
- $(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
-./bin/spine-dmd -v --html \
---output-dir=tmp/program_output_dir
-dmd_testrun_find_dir_epub:
- $(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
-./bin/spine-dmd -v --epub \
---output-dir=tmp/program_output_dir
-dmd_testrun_find_dir_all:
- $(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
-./bin/spine-dmd -v --source --html --epub --sqlite-discrete \
---sqlite-create --sqlite-update \
---output-dir=tmp/program_output_dir
-#+END_SRC
-
-******* file list
-
-#+NAME: make_project_testrun_8
-#+BEGIN_SRC makefile
-dmd_testrun_filelist_dir_source:
- ./bin/spine-dmd -v --source \
---output-dir=tmp/program_output_dir \
-$(SiSU_MARKUP_SAMPLES_DIR)
-dmd_testrun_filelist_dir_pod:
- ./bin/spine-dmd -v --pod \
---output-dir=tmp/program_output_dir \
-$(SiSU_MARKUP_SAMPLES_DIR)
-dmd_testrun_filelist_dir_html:
- ./bin/spine-dmd -v --html \
---output-dir=tmp/program_output_dir \
-$(SiSU_MARKUP_SAMPLES_DIR)
-dmd_testrun_filelist_dir_epub:
- ./bin/spine-dmd -v --epub \
---output-dir=tmp/program_output_dir \
-$(SiSU_MARKUP_SAMPLES_DIR)
-dmd_testrun_filelist_dir_all:
- ./bin/spine-dmd -v --source --html --epub --sqlite-discrete \
---sqlite-create --sqlite-update \
---output-dir=tmp/program_output_dir \
-$(SiSU_MARKUP_SAMPLES_DIR)
-#+END_SRC
-
-****** gdc
-******* find files
-
-#+NAME: make_project_testrun_9
-#+BEGIN_SRC makefile
-gdc_testrun_find_dir_source:
- ./bin/spine-gdc -v --source \
---output-dir=tmp/program_output_dir \
-$(SiSU_MARKUP_SAMPLES_DIR)
-gdc_testrun_find_dir_pod:
- $(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
-./bin/spine-gdc -v --pod \
---output-dir=tmp/program_output_dir
-gdc_testrun_find_dir_html:
- $(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
-./bin/spine-gdc -v --html \
---output-dir=tmp/program_output_dir
-gdc_testrun_find_dir_epub:
- $(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
-./bin/spine-gdc -v --epub \
---output-dir=tmp/program_output_dir
-gdc_testrun_find_dir_all:
- $(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
-./bin/spine-gdc -v --source --html --epub --sqlite-discrete \
---sqlite-create --sqlite-update \
---output-dir=tmp/program_output_dir
-#+END_SRC
-
-******* file list
-
-#+NAME: make_project_testrun_10
-#+BEGIN_SRC makefile
-gdc_testrun_filelist_dir_source:
- ./bin/spine-gdc -v --source \
---output-dir=tmp/program_output_dir \
-$(SiSU_MARKUP_SAMPLES_DIR)
-gdc_testrun_filelist_dir_pod:
- ./bin/spine-gdc -v --pod \
---output-dir=tmp/program_output_dir \
-$(SiSU_MARKUP_SAMPLES_DIR)
-gdc_testrun_filelist_dir_html:
- ./bin/spine-gdc -v --html \
---output-dir=tmp/program_output_dir \
-$(SiSU_MARKUP_SAMPLES_DIR)
-gdc_testrun_filelist_dir_epub:
- ./bin/spine-gdc -v --epub \
---output-dir=tmp/program_output_dir \
-$(SiSU_MARKUP_SAMPLES_DIR)
-gdc_testrun_filelist_dir_all:
- ./bin/spine-gdc -v --source --html --epub --sqlite-discrete \
---sqlite-create --sqlite-update \
---output-dir=tmp/program_output_dir \
-$(SiSU_MARKUP_SAMPLES_DIR)
-#+END_SRC
-
-****** ldc
-******* find files
-
-#+NAME: make_project_testrun_11
-#+BEGIN_SRC makefile
-ldc_testrun_find_dir_source:
- $(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
-./bin/spine-ldc -v --source \
---output-dir=tmp/program_output_dir
-ldc_testrun_find_dir_pod:
- $(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
-./bin/spine-ldc -v --pod \
---output-dir=tmp/program_output_dir
-ldc_testrun_find_dir_html:
- $(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
-./bin/spine-ldc -v --html \
---output-dir=tmp/program_output_dir
-ldc_testrun_find_dir_epub:
- $(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
-./bin/spine-ldc -v --epub \
---output-dir=tmp/program_output_dir
-ldc_testrun_find_dir_all:
- $(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
-./bin/spine-ldc -v --source --html --epub --sqlite-discrete \
---sqlite-create --sqlite-update \
---output-dir=tmp/program_output_dir
-#+END_SRC
-
-******* file list
-
-#+NAME: make_project_testrun_12
-#+BEGIN_SRC makefile
-ldc_testrun_filelist_dir_source:
- ./bin/spine-ldc -v --source \
---output-dir=tmp/program_output_dir \
-$(SiSU_MARKUP_SAMPLES_DIR)
-ldc_testrun_filelist_dir_pod:
- ./bin/spine-ldc -v --pod \
---output-dir=tmp/program_output_dir \
-$(SiSU_MARKUP_SAMPLES_DIR)
-ldc_testrun_filelist_dir_html:
- ./bin/spine-ldc -v --html \
---output-dir=tmp/program_output_dir \
-$(SiSU_MARKUP_SAMPLES_DIR)
-ldc_testrun_filelist_dir_epub:
- ./bin/spine-ldc -v --epub \
---output-dir=tmp/program_output_dir \
-$(SiSU_MARKUP_SAMPLES_DIR)
-ldc_testrun_filelist_dir_all:
- ./bin/spine-ldc -v --source --html --epub --sqlite-discrete \
---sqlite-create --sqlite-update \
---output-dir=tmp/program_output_dir \
-$(SiSU_MARKUP_SAMPLES_DIR)
-#+END_SRC
-
-**** org babel tangle batch process command :tangle:
-***** tangle: org babel tangle *.org
-
-#+NAME: make_tangle_0
-#+BEGIN_SRC makefile
-tangle: skel
- for f in $(ORGFILELIST); do \
- ORGFILES="$$ORGFILES \"$$f\""; \
- done; \
- emacs --batch -Q -q \
- --eval "(progn \
- (add-to-list 'load-path \
- (expand-file-name \"$(EMACSLISP)\")) \
- (add-to-list 'load-path \
- (expand-file-name \"$(EMACSLISP_ORG)\" t)) \
- (add-to-list 'load-path \
- (expand-file-name \"$(EMACSLISP_ORG_CONTRIB)\" t)) \
- (require 'org)(require 'ob)(require 'ob-tangle) \
- (mapc (lambda (file) \
- (find-file (expand-file-name file \"$(ORGDIR)\")) \
- (setq-local org-src-preserve-indentation t) \
- (org-babel-tangle) \
- (kill-buffer)) '($$ORGFILES)))" 2>&1
-#+END_SRC
-
-***** tangle maker: org babel tangle makefile new
-
-#+NAME: make_tangle_1
-#+BEGIN_SRC makefile
-tangle_maker:
- for f in $(ORGFILELIST); do \
- ORGFILES="\"org/dr_build_scaffold.org\""; \
- done; \
- emacs --batch -Q -q \
- --eval "(progn \
- (add-to-list 'load-path \
- (expand-file-name \"$(EMACSLISP)\")) \
- (add-to-list 'load-path \
- (expand-file-name \"$(EMACSLISP_ORG)\" t)) \
- (add-to-list 'load-path \
- (expand-file-name \"$(EMACSLISP_ORG_CONTRIB)\" t)) \
- (require 'org)(require 'ob)(require 'ob-tangle) \
- (mapc (lambda (file) \
- (find-file (expand-file-name file \".\")) \
- (setq-local org-src-preserve-indentation t) \
- (org-babel-tangle) \
- (kill-buffer)) '($$ORGFILES)))" 2>&1
-#+END_SRC
-
-***** tangle nix project
-
-#+NAME: make_nix_project
-#+BEGIN_SRC makefile
-lorri_shell:
- lorri shell
-nix_shell:
- nix-shell
-nix_build_default:
- nix build -f default.nix && ./result/bin/spine -v
-nix_build_project:
- nix build -f project.nix && ./result/bin/spine -v
-nix_build_spine:
- nix build -f spine.nix && ./result/bin/spine -v
-nix-build_default:
- nix-build default.nix
-#+END_SRC
-
-**** git snapshot
-
-#+NAME: make_git_snapshot
-#+BEGIN_SRC makefile
-gitsnapshot: distclean tangle
- git commit -a
-#+END_SRC
-
-*** phony :phony:
-
-#+NAME: make_phony
-#+BEGIN_SRC makefile
-.PHONY : all build rebuild debug release \
- distclean init \
- tangle gitsnapshot
-#+END_SRC
-
-** dub
-*** dub.settings.json :dub:config:json:
-
-#+HEADER: :NO-tangle ../dub.settings.json
-#+BEGIN_SRC json
-{
- "defaultArchitecture": "x86_64",
- "defaultCompiler": "ldc"
-}
-#+END_SRC
-
-*** dub.json :dub:config:json:
-**** dub.json
-***** file-system download external dependencies
-
-- d2sqlite3
-- dyaml
- - tinyendian
-- imageformats
-
-#+HEADER: :tangle ../dub.json
-#+BEGIN_SRC json
-{
- "authors": [
- "Ralph Amissah"
- ],
- "copyright": "Copyright © 2015 - 2021 Ralph Amissah",
- "name": "spine",
- "version": "<<version_spine>>",
- "description": "a sisu like document parser",
- "homepage": "https://sisudoc.org",
- "license": "AGPL-3.0+",
- "targetPath": "./bin",
- "sourcePaths": [ "./src/doc_reform" ],
- "stringImportPaths": [ "./views" ],
- "buildRequirements": [ "allowWarnings" ],
- "targetType": "executable",
- "platforms": [ "posix" ],
- "buildTypes": {
- "dmd": {
- "dflags": [ "-J=views", "-I=src/doc_reform" ],
- "buildOptions": [ "verbose", "inline" ],
- "buildRequirements": [ "allowWarnings" ]
- },
- "ldc": {
- "dflags": [ "-O2", "-J=views", "-I=src/doc_reform" ],
- "buildOptions": [ "verbose", "optimize", "inline" ],
- "buildRequirements": [ "allowWarnings" ]
- }
- },
- "dependencies": {
- "spine:d2sqlite3": "*",
- "spine:imageformats": "*",
- "spine:dyaml": "*"
- },
- "subPackages": [
- {
- "name": "d2sqlite3",
- "description": "A thin wrapper around SQLite 3",
- "homepage": "https://github.com/dlang-community/d2sqlite3",
- "authors": [ "Nicolas Sicard", "Other contributors: see Github repo" ],
- "copyright": "Copyright 2011-18 Nicolas Sicard",
- "license": "BSL-1.0",
- "sourcePaths": [ "./src/ext_depends/d2sqlite3/source" ],
- "configurations": [
- {
- "name": "d2sqlite3",
- "d2sqlite3": "with-lib",
- "targetType": "library",
- "systemDependencies": "SQLite version >= 3.8.7",
- "libs": [ "sqlite3" ],
- "excludedSourceFiles": [ "source/tests.d" ]
- }
- ]
- },
- {
- "name": "imageformats",
- "description": "Decoders for PNG, TGA, BMP, JPEG and encoders for PNG, TGA, BMP.",
- "authors": [ "Tero Hänninen" ],
- "license": "BSL-1.0",
- "sourcePaths": [ "./src/ext_depends/imageformats/imageformats" ]
- },
- {
- "name": "dyaml",
- "description": "YAML parser and emitter",
- "authors": [
- "Ferdinand Majerech",
- "Cameron \"Herringway\" Ross"
- ],
- "license": "BSL-1.0",
- "homepage": "https://github.com/dlang-community/D-YAML",
- "copyright": "Copyright © 2011-2018, Ferdinand Majerech",
- "sourcePaths": [
- "./src/ext_depends/D-YAML/source/dyaml",
- "./src/ext_depends/tinyendian/source"
- ],
- "importPaths": [
- "./src/ext_depends/D-YAML/source/dyaml",
- "./src/ext_depends/tinyendian/source"
- ],
- "preGenerateCommands": [
- "rm -rf ./src/ext_depends/D-YAML/examples",
- "rm -rf ./src/ext_depends/D-YAML/testsuite"
- ]
- }
- ],
- "configurations": [
- {
- "name": "default",
- "targetName": "spine"
- },
- {
- "name": "ldc",
- "targetName": "spine-ldc"
- },
- {
- "name": "dmd",
- "targetName": "spine-dmd"
- }
- ],
- "subConfigurations": {
- "d2sqlite3": "with-lib"
- }
-}
-#+END_SRC
-
-***** git (interim)
-
-#+BEGIN_SRC json
-{
- "authors": [
- "Ralph Amissah"
- ],
- "copyright": "Copyright © 2015 - 2021 Ralph Amissah",
- "name": "spine",
- "version": "<<version_spine>>",
- "description": "a sisu like document parser",
- "homepage": "https://sisudoc.org",
- "license": "AGPL-3.0+",
- "targetPath": "./bin",
- "sourcePaths": [ "./src/doc_reform" ],
- "stringImportPaths": [ "./views" ],
- "buildRequirements": [ "allowWarnings" ],
- "targetType": "executable",
- "platforms": [ "posix" ],
- "buildTypes": {
- "dmd": {
- "dflags": [ "-J=views", "-I=src/doc_reform" ],
- "buildOptions": [ "verbose", "inline" ],
- "buildRequirements": [ "allowWarnings" ]
- },
- "ldc": {
- "dflags": [ "-O2", "-J=views", "-I=src/doc_reform" ],
- "buildOptions": [ "verbose", "optimize", "inline" ],
- "buildRequirements": [ "allowWarnings" ]
- }
- },
- "dependencies": {
- "spine:d2sqlite3": "*",
- "spine:imageformats": "*",
- "spine:dyaml": "*"
- },
- "subPackages": [
- {
- "name": "d2sqlite3",
- "description": "A thin wrapper around SQLite 3",
- "homepage": "https://github.com/dlang-community/d2sqlite3",
- "authors": [ "Nicolas Sicard", "Other contributors: see Github repo" ],
- "copyright": "Copyright 2011-18 Nicolas Sicard",
- "license": "BSL-1.0",
- "sourcePaths": [ "./src/ext_depends/d2sqlite3/source" ],
- "configurations": [
- {
- "name": "with-lib",
- "targetType": "library",
- "systemDependencies": "SQLite version >= 3.8.7",
- "libs": [ "sqlite3" ],
- "excludedSourceFiles": [ "source/tests.d" ]
- }
- ]
- },
- {
- "name": "imageformats",
- "description": "Decoders for PNG, TGA, BMP, JPEG and encoders for PNG, TGA, BMP.",
- "authors": [ "Tero Hänninen" ],
- "license": "BSL-1.0",
- "sourcePaths": [ "./src/ext_depends/imageformats/imageformats" ]
- },
- {
- "name": "dyaml",
- "description": "YAML parser and emitter",
- "authors": [
- "Ferdinand Majerech",
- "Cameron \"Herringway\" Ross"
- ],
- "license": "BSL-1.0",
- "homepage": "https://github.com/dlang-community/D-YAML",
- "copyright": "Copyright © 2011-2018, Ferdinand Majerech",
- "sourcePaths": [ "./src/ext_depends/D-YAML/source/dyaml" ],
- "importPaths": [
- "./src/ext_depends/D-YAML/source/dyaml",
- "./src/ext_depends/tinyendian/source"
- ],
- "dependencies": {
- "tinyendian" : "~>0.2.0"
- },
- "preGenerateCommands": [
- "rm -rf ./src/ext_depends/D-YAML/examples",
- "rm -rf ./src/ext_depends/D-YAML/testsuite"
- ]
- },
- {
- "name": "tinyendian",
- "description": "Lightweight endianness handling library",
- "authors": [ "Ferdinand Majerech" ],
- "license": "Boost 1.0",
- "copyright": "Copyright © 2014, Ferdinand Majerech",
- "homepage": "https://github.com/kiith-sa/tinyendian",
- "importPaths": [ "./src/ext_depends/tinyendian/source" ]
- }
- ],
- "configurations": [
- {
- "name": "default",
- "targetName": "spine"
- },
- {
- "name": "ldc",
- "targetName": "spine-ldc"
- },
- {
- "name": "dmd",
- "targetName": "spine-dmd"
- }
- ],
- "subConfigurations": {
- "d2sqlite3": "with-lib"
- }
-}
-#+END_SRC
-
-***** git fetched remote external dependencies (used previously)
-
-#+BEGIN_SRC json
-{
- "authors": [
- "Ralph Amissah"
- ],
- "copyright": "Copyright © 2015 - 2021 Ralph Amissah",
- "name": "spine",
- "version": "<<version_spine>>",
- "description": "a sisu like document parser",
- "homepage": "https://sisudoc.org",
- "license": "AGPL-3.0+",
- "targetPath": "./bin",
- "sourcePaths": [ "./src/doc_reform" ],
- "stringImportPaths": [ "./views" ],
- "buildRequirements": [ "allowWarnings" ],
- "targetType": "executable",
- "platforms": [ "posix" ],
- "buildTypes": {
- "dmd": {
- "dflags": [ "-J=views", "-I=src/doc_reform" ],
- "buildOptions": [ "verbose", "inline" ],
- "buildRequirements": [ "allowWarnings" ]
- },
- "ldc": {
- "dflags": [ "-O2", "-J=views", "-I=src/doc_reform" ],
- "buildOptions": [ "verbose", "optimize", "inline" ],
- "buildRequirements": [ "allowWarnings" ]
- }
- },
- "dependencies": {
- "d2sqlite3": "~><<version_d2sqlite3>>",
- "imageformats": "~><<version_imageformats>>",
- "dyaml": "~><<version_dyaml>>",
- "tinyendian": "~><<version_tinyendian>>"
- },
- "configurations": [
- {
- "name": "default",
- "targetName": "spine"
- },
- {
- "name": "ldc",
- "targetName": "spine-ldc"
- },
- {
- "name": "dmd",
- "targetName": "spine-dmd"
- }
- ],
- "subConfigurations": {
- "d2sqlite3": "with-lib"
- }
-}
-#+END_SRC
-
-**** +check dub.json+
-
-#+HEADER: :NO-tangle ../dub.json
-#+BEGIN_SRC sh
-{
- "authors": [
- "Ralph Amissah"
- ],
- "copyright": "Copyright © 2015 - 2021 Ralph Amissah",
- "name": "spine",
- "description": "a sisu like document parser",
- "homepage": "https://sisudoc.org",
- "license": "AGPL-3.0+",
- "targetPath": "./bin",
- "sourcePaths": [ "./src/doc_reform" ],
- "stringImportPaths": [ "./views" ],
- "buildRequirements": [ "allowWarnings" ],
- "targetType": "executable",
- "platforms": [ "posix" ],
- "dependencies": {
- "d2sqlite3": "~><<version_d2sqlite3>>",
- "imageformats": "~><<version_imageformats>>",
- "dyaml": "~><<version_dyaml>>",
- "tinyendian": "~><<version_tinyendian>>"
- },
- "subConfigurations": {
- "d2sqlite3": "all-included"
- },
- "configurations": [
- {
- "name": "default",
- "targetName": "spine"
- },
- {
- "name": "ldc",
- "targetName": "spine-ldc"
- },
- {
- "name": "dmd",
- "targetName": "spine-dmd"
- }
- ],
- "buildTypes": {
- "dmd": {
- "dflags": [ "-J=views", "-I=src/doc_reform" ],
- "buildOptions": [ "verbose", "inline" ],
- "buildRequirements": [ "allowWarnings" ]
- },
- "ldc": {
- "dflags": [ "-O2", "-J=views", "-I=src/doc_reform" ],
- "buildOptions": [ "verbose", "optimize", "inline" ],
- "buildRequirements": [ "allowWarnings" ]
- }
- }
-}
-#+END_SRC
-
-*** dub.sdl REFERENCE UNUSED:dub:config:sdl:
-Every DUB package should contain a [[https://code.dlang.org/package-format?lang=json][dub.json]] (or [[https://code.dlang.org/package-format?lang=sdl][dub.sdl]])
-
-not configured here, using dub.json for the moment
-
-**** header (including dependencies) :header:
-
-#+HEADER: :NO-tangle ../dub.sdl
-#+HEADER: :tangle-mode (identity #o755)
-#+HEADER: :shebang #!/usr/bin/env dub
-#+BEGIN_SRC sh
-name "spine"
-description "sisu document parser"
-homepage "https://sisudoc.org"
-authors "Ralph Amissah"
-copyright "Copyright (C) 2016 - 2021 Ralph Amissah"
-license "AGPL-3.0+"
-targetPath "./bin"
-#sourcePath "./src/doc_reform"
-stringImportPaths "./views"
-buildRequirements "allowWarnings"
-targetType "executable"
-platforms "posix"
-dependency "d2sqlite3" version="~><<version_d2sqlite3>>" # https://code.dlang.org/packages/d2sqlite3 https://github.com/dlang-community/d2sqlite3
- subconfiguration "d2sqlite3" "all-included"
-dependency "imageformats" version="~><<version_imageformats>>" # https://code.dlang.org/packages/imageformats https://github.com/lgvz/imageformats
-dependency "dyaml" version="~><<version_dyaml>>" # https://code.dlang.org/packages/dyaml https://github.com/dlang-community/D-YAML
-dependency "tinyendian" version="~><<version_tinyendian>>" # https://code.dlang.org/packages/tinyendian https://github.com/dlang-community/tinyendian // dyaml dependency
-#+END_SRC
-
-**** default
-
-time (dub --compiler=dmd --build=release)
-time (dub --compiler=ldc2 --build=release)
-time (dub --compiler=gdc --build=release)
-
-#+HEADER: :NO-tangle ../dub.sdl
-#+BEGIN_SRC sh
-configuration "default" {
- targetName "spine"
- postGenerateCommands "notify-send -t 0 'D executable ready' 'spine'"
-}
-#+END_SRC
-
-**** dmd :dmd:
-
-time (dub --compiler=dmd -color --config=dmd --build=dmd)
-time (dub --compiler=dmd -color --config=dmd --build=dmd-release)
-
-#+HEADER: :NO-tangle ../dub.sdl
-#+BEGIN_SRC sh
-configuration "dmd" {
- targetName "spine-dmd"
- postGenerateCommands "notify-send -t 0 'D executable ready' 'spine-dmd'"
-}
-buildType "dmd" {
- dflags "-J=views" "-I=src/doc_reform"
- buildOptions "verbose" "inline"
- buildRequirements "allowWarnings"
-}
-buildType "dmd-release" {
- dflags "-J=views" "-I=src/doc_reform"
- buildOptions "verbose" "releaseMode" "optimize" "inline"
-}
-configuration "dmd-version" {
- dflags "-J=views" "-I=src/doc_reform"
- buildOptions "verbose" "optimize"
- targetName "spine-dmd-ver"
- postGenerateCommands "notify-send -t 0 'D executable ready' 'spine-dmd-ver'"
-}
-#+END_SRC
-
- buildOptions "verbose" "optimize" // ok works quick compile
- buildOptions "verbose" "optimize" "inline" // ok works takes ages to compile
- buildOptions "verbose" "releaseMode" "optimize" "inline" // broken, runtime errors
-
-**** ldc :ldc:
-
-time (dub --compiler=ldc2 -color --config=ldc --build=ldc)
-time (dub --compiler=ldc2 -color --config=ldc --build=ldc-release)
-
-#+HEADER: :NO-tangle ../dub.sdl
-#+BEGIN_SRC sh
-configuration "ldc" {
- targetName "spine-ldc"
- postGenerateCommands "notify-send -t 0 'D executable ready' 'spine-ldc'"
-}
-buildType "ldc" {
- dflags "-O2" "-J=views" "-I=src/doc_reform"
- buildOptions "verbose" "optimize" "inline"
- buildRequirements "allowWarnings"
-}
-buildType "ldc-local" {
- dflags "-O2" "-J=views" "-I=src/doc_reform" "-mcpu=native"
- buildOptions "verbose" "optimize" "inline"
- buildRequirements "allowWarnings"
-}
-buildType "ldc-release" {
- dflags "-O2" "-J=views" "-I=src/doc_reform"
- buildOptions "verbose" "optimize" "inline" "releaseMode"
-}
-configuration "ldc-version" {
- dflags "-O2" "-J=views" "-I=src/doc_reform"
- buildOptions "verbose" "optimize" "inline" "releaseMode"
- targetName "spine-ldc-ver"
- postGenerateCommands "notify-send -t 0 'D executable ready' 'spine-ldc-ver'"
-}
-#+END_SRC
-
-**** gdc :gdc:
-
-time (dub --compiler=gdc --config=gdc --build=gdc)
-time (dub --compiler=gdc --config=gdc --build=gdc-release)
-
-#+HEADER: :NO-tangle ../dub.sdl
-#+BEGIN_SRC sh
-configuration "gdc" {
- targetName "spine-gdc"
- postGenerateCommands "notify-send -t 0 'D executable ready' 'spine-gdc'"
-}
-buildType "gdc" {
- dflags "-O" "-J=views" "-I=src/doc_reform"
- lflags "-lz"
- buildOptions "inline"
- buildRequirements "allowWarnings"
-}
-buildType "gdc-release" {
- dflags "-O2" "-J=views" "-I=src/doc_reform"
- lflags "-lz"
- buildOptions "verbose" "optimize" "inline" "releaseMode"
-}
-configuration "gdc-version" {
- dflags "-O2" "-J=views" "-I=src/doc_reform"
- lflags "-lz"
- buildOptions "verbose" "optimize" "inline" "releaseMode"
- targetName "spine-gdc-ver"
- postGenerateCommands "notify-send -t 0 'D executable ready' 'spine-gdc-ver'"
-}
-#+END_SRC
-
-***** generic :generic:
-****** build (sdp) :release:
-
-#+BEGIN_SRC sh
-configuration "build" {
- name "build"
- targetType "executable"
- platforms "posix"
- targetName "bin/spine"
- dflags "-J=views" "-I=src/doc_reform"
- buildOptions "verbose" "releaseMode" "optimize" "inline"
- postGenerateCommands "notify-send -t 0 'D release executable ready' 'spine'"
-}
-#+END_SRC
-
-** meson REVISIT :meson:build:
-*** notes
-
-https://mesonbuild.com/D.html
-https://mesonbuild.com/Dependencies.html#Dub
-- create and move to subdirectory
- rm -r build; mkdir build && cd build
-
-- build
-
- - regular build (faster compile time):
- meson && ninja
-
- - optimized build (faster program run time):
- meson --buildtype=debugoptimized && ninja
-
- - time build
- time ( meson --buildtype=debugoptimized && ninja )
-
-- other
- - flags
- DFLAGS= DC=ldc2 meson ..
-
-**** projects :project:
-
-ls -1 ./src/*/**/*.d
-tree -fi ./src |rg "\.d$"
-fdfind -e .d
-
-tree -if src | rg ".+\.d$" > spine_sources.txt && \
-for i in spine_sources.txt; do; \
-sed -i "s/\(.\+\.d$\)/ '\1',/g" $i; done && \
-cat spine_sources.txt
-
-***** project meson.build :filelist:
-
-#+HEADER: :tangle ../meson.build
-#+BEGIN_SRC sh
-project('spine', 'd',
- license: 'AGPL-3',
- version: '<<version_spine>>',
- meson_version: '>=<<version_meson>>'
-)
-#if meson.get_compiler('d').get_id() == 'gcc'
-# error('spine cannot be compiled with GDC at time. Sorry.')
-#endif
-spine_src = [
- 'src/doc_reform/spine.d',
- 'src/doc_reform/conf/compile_time_info.d',
- 'src/doc_reform/io_in/paths_source.d',
- 'src/doc_reform/io_in/read_config_files.d',
- 'src/doc_reform/io_in/read_source_files.d',
- 'src/doc_reform/io_out/cgi_sqlite_search_form.d',
- 'src/doc_reform/io_out/create_zip_file.d',
- 'src/doc_reform/io_out/defaults.d',
- 'src/doc_reform/io_out/epub3.d',
- 'src/doc_reform/io_out/html.d',
- 'src/doc_reform/io_out/hub.d',
- 'src/doc_reform/io_out/latex.d',
- 'src/doc_reform/io_out/metadata.d',
- 'src/doc_reform/io_out/odt.d',
- 'src/doc_reform/io_out/package.d',
- 'src/doc_reform/io_out/paths_output.d',
- 'src/doc_reform/io_out/rgx.d',
- 'src/doc_reform/io_out/source_pod.d',
- 'src/doc_reform/io_out/sqlite.d',
- 'src/doc_reform/io_out/xmls_css.d',
- 'src/doc_reform/io_out/xmls.d',
- 'src/doc_reform/meta/conf_make_meta_json.d',
- 'src/doc_reform/meta/conf_make_meta_structs.d',
- 'src/doc_reform/meta/conf_make_meta_yaml.d',
- 'src/doc_reform/meta/defaults.d',
- 'src/doc_reform/meta/doc_debugs.d',
- 'src/doc_reform/meta/metadoc.d',
- 'src/doc_reform/meta/metadoc_from_src.d',
- 'src/doc_reform/meta/metadoc_harvest.d',
- 'src/doc_reform/meta/metadoc_harvests_authors.d',
- 'src/doc_reform/meta/metadoc_harvests_topics.d',
- 'src/doc_reform/meta/metadoc_object_setter.d',
- 'src/doc_reform/meta/metadoc_show_config.d',
- 'src/doc_reform/meta/metadoc_show_make.d',
- 'src/doc_reform/meta/metadoc_show_metadata.d',
- 'src/doc_reform/meta/metadoc_show_summary.d',
- 'src/doc_reform/meta/package.d',
- 'src/doc_reform/meta/rgx.d',
- 'src/doc_reform/share/defaults.d',
-]
-source_root = meson.source_root()
-src_dir = include_directories('src/')
-# Dependencies
-dep_tinyendian = dependency('tinyendian', version: '>= <<version_tinyendian>>', fallback: ['tinyendian', 'tinyendian_dep'], method: 'dub')
-dep_dyaml = dependency('dyaml', version: '>= <<version_dyaml>>', fallback: ['dyaml', 'dyaml_dep'], method: 'dub')
-dep_d2sqlite3 = dependency('d2sqlite3', version: '>= <<version_d2sqlite3>>', fallback: ['d2sqlite3', 'd2sqlite3_dep'], method: 'dub')
-dep_imageformats = dependency('imageformats', version: '>= <<version_imageformats>>', fallback: ['imageformats', 'imageformats_dep'], method: 'dub')
-# Executable
-spine_exe = executable('spine',
- [spine_src],
- include_directories : [src_dir],
- d_import_dirs: [include_directories('views')],
- dependencies : [
- dep_tinyendian,
- dep_dyaml,
- dep_d2sqlite3,
- dep_imageformats,
- ],
- install : true
-)
-#+END_SRC
-
-*** meson subprojects [taken care of using dub] :subprojects:
-**** README
-
-#+HEADER: :tangle ../subprojects/README
-#+BEGIN_SRC txt
-- d2sqlite3
- - dub
- - https://code.dlang.org/packages/d2sqlite3
- - upstream
- - https://github.com/dlang-community/d2sqlite3
-- dyaml
- - dub
- - https://code.dlang.org/packages/dyaml
- - upstream
- - https://github.com/dlang-community/D-YAML
- - upstream git clone
- - https://github.com/dlang-community/D-YAML.git
-- imageformats
- - dub
- - https://code.dlang.org/packages/imageformats
- - upstream git clone
- - https://github.com/lgvz/imageformats
-- tinyendian (dyaml dependency)
- - dub
- - https://code.dlang.org/packages/tinyendian
- - upstream git clone
- - https://github.com/dlang-community/tinyendian.git
-#+END_SRC
-
-**** d2sqlite3 :d2sqlite3:
-***** wrap
-
-#+HEADER: :tangle ../subprojects/d2sqlite3.wrap
-#+BEGIN_SRC sh
-[wrap-git]
-directory = d2sqlite3
-url = https://github.com/dlang-community/d2sqlite3.git
-revision = head
-#+END_SRC
-
-***** meson.build
-
-#+HEADER: :NO-tangle ../subprojects/d2sqlite3.meson.build
-#+BEGIN_SRC sh
-project('d2sqlite3', 'd',
- meson_version: '>=<<version_meson>>',
- license: 'BSL-1.0',
- version: '<<version_d2sqlite3>>'
-)
-
-project_soversion = '<<version_soversion>>'
-
-src_dir = include_directories('source/')
-pkgc = import('pkgconfig')
-
-sqlite_dep = dependency('sqlite3')
-
-d2sqlite3_src = [
- 'source/d2sqlite3/database.d',
- 'source/d2sqlite3/internal/memory.d',
- 'source/d2sqlite3/internal/util.d',
- 'source/d2sqlite3/library.d',
- 'source/d2sqlite3/package.d',
- 'source/d2sqlite3/results.d',
- 'source/d2sqlite3/sqlite3.d',
- 'source/d2sqlite3/statement.d',
-]
-install_subdir('source/d2sqlite3/', install_dir: 'include/d/d2sqlite3/')
-
-d2sqlite3_lib = library('d2sqlite3',
- [d2sqlite3_src],
- include_directories: [src_dir],
- dependencies: [sqlite_dep],
- install: true,
- version: meson.project_version(),
- soversion: project_soversion
-)
-
-pkgc.generate(name: 'd2sqlite3',
- libraries: d2sqlite3_lib,
- subdirs: 'd/d2sqlite3/',
- version: meson.project_version(),
- requires: ['sqlite3'],
- description: 'A small wrapper around SQLite for the D programming language.'
-)
-
-# for use by others which embed this as subproject
-d2sqlite3_dep = declare_dependency(
- link_with: [d2sqlite3_lib],
- dependencies: [sqlite_dep],
- include_directories: [src_dir]
-)
-#+END_SRC
-
-**** dyaml :dyaml:
-***** wrap
-
-#+HEADER: :tangle ../subprojects/dyaml.wrap
-#+BEGIN_SRC sh
-[wrap-git]
-directory = dyaml
-url = https://github.com/dlang-community/D-YAML.git
-revision = head
-#+END_SRC
-
-***** meson.build (provided by upstream)
-
-Upstream provides meson.build
-
-#+HEADER: :NO-tangle ../subprojects/D-YAML/meson.build
-#+BEGIN_SRC sh
-project('D-YAML', 'd',
- meson_version: '>=<<version_meson>>',
- subproject_dir: 'contrib',
- version: '<<version_dyaml>>'
-)
-
-project_soversion = '<<version_soversion>>'
-
-src_dir = include_directories('source/')
-pkgc = import('pkgconfig')
-
-dyaml_src = [
- 'source/dyaml/composer.d',
- 'source/dyaml/constructor.d',
- 'source/dyaml/dumper.d',
- 'source/dyaml/emitter.d',
- 'source/dyaml/encoding.d',
- 'source/dyaml/escapes.d',
- 'source/dyaml/event.d',
- 'source/dyaml/exception.d',
- 'source/dyaml/linebreak.d',
- 'source/dyaml/loader.d',
- 'source/dyaml/node.d',
- 'source/dyaml/package.d',
- 'source/dyaml/parser.d',
- 'source/dyaml/queue.d',
- 'source/dyaml/reader.d',
- 'source/dyaml/representer.d',
- 'source/dyaml/resolver.d',
- 'source/dyaml/scanner.d',
- 'source/dyaml/serializer.d',
- 'source/dyaml/style.d',
- 'source/dyaml/tagdirective.d',
- 'source/dyaml/test/common.d',
- 'source/dyaml/test/compare.d',
- 'source/dyaml/test/constructor.d',
- 'source/dyaml/test/emitter.d',
- 'source/dyaml/test/errors.d',
- 'source/dyaml/test/inputoutput.d',
- 'source/dyaml/test/reader.d',
- 'source/dyaml/test/representer.d',
- 'source/dyaml/test/resolver.d',
- 'source/dyaml/test/tokens.d',
- 'source/dyaml/token.d'
-]
-install_subdir('source/dyaml', install_dir: 'include/d/yaml/')
-
-tinyendian_dep = dependency('tinyendian', version: '>=<<version_tinyendian>>', fallback: ['tinyendian', 'tinyendian_dep'])
-
-dyaml_lib = library('dyaml',
- [dyaml_src],
- include_directories: [src_dir],
- dependencies: [tinyendian_dep],
- install: true,
- version: meson.project_version(),
- soversion: project_soversion
-)
-pkgc.generate(name: 'dyaml',
- libraries: dyaml_lib,
- subdirs: 'd/yaml/',
- version: meson.project_version(),
- description: 'YAML parser and emitter for the D programming language.'
-)
-
-# Make D-YAML easy to use as subproject
-dyaml_dep = declare_dependency(
- link_with: dyaml_lib,
- include_directories: [src_dir],
- dependencies: [tinyendian_dep]
-)
-#+END_SRC
-
-**** imageformats :imageformats:
-***** wrap
-
-#+HEADER: :tangle ../subprojects/imageformats.wrap
-#+BEGIN_SRC sh
-[wrap-git]
-directory = imageformats
-url = https://github.com/lgvz/imageformats.git
-revision = head
-#+END_SRC
-
-***** meson.build
-
-#+HEADER: :NO-tangle ../subprojects/imageformats.meson.build
-#+BEGIN_SRC sh
-project('imageformats', 'd',
- meson_version: '>=<<version_meson>>',
- license: 'BSL-1.0',
- version: '<<version_imageformats>>'
-)
-
-project_soversion = '<<version_soversion>>'
-
-src_dir = include_directories('.')
-pkgc = import('pkgconfig')
-
-imageformats_src = [
- 'imageformats/bmp.d',
- 'imageformats/jpeg.d',
- 'imageformats/package.d',
- 'imageformats/png.d',
- 'imageformats/tga.d'
-]
-install_subdir('imageformats/', install_dir: 'include/d/imageformats-d/')
-
-imageformats_lib = library('imageformats-d',
- [imageformats_src],
- include_directories: [src_dir],
- install: true,
- version: meson.project_version(),
- soversion: project_soversion
-)
-
-pkgc.generate(name: 'imageformats-d',
- libraries: imageformats_lib,
- subdirs: 'd/imageformats-d/',
- version: meson.project_version(),
- description: 'Decoders for PNG, TGA, BMP, JPEG and encoders for PNG, TGA, BMP.'
-)
-
-# for use by others which embed this as subproject
-imageformats_dep = declare_dependency(
- link_with: [imageformats_lib],
- include_directories: [src_dir]
-)
-#+END_SRC
-
-**** tinyendian (dyaml dependency) :tinyendian:
-***** wrap
-
-#+HEADER: :tangle ../subprojects/tinyendian.wrap
-#+BEGIN_SRC sh
-[wrap-git]
-directory = tinyendian
-url = https://github.com/dlang-community/tinyendian.git
-revision = head
-#+END_SRC
-
-***** meson.build (provided by upstream)
-
-Upstream provides meson.build
-
-#+HEADER: :NO-tangle ../subprojects/tinyendian/meson.build
-#+BEGIN_SRC sh
-# -*- mode: python; -*-
-
-project(
- 'tinyendian',
- 'd',
- meson_version: '>=<<version_meson>>',
- version: '<<version_tinyendian>>',
- default_options: ['buildtype=release'],
-)
-
-src_dir = include_directories('source/')
-pkgc = import('pkgconfig')
-
-tinyendian_src = [
- 'source/tinyendian.d'
-]
-
-install_headers(tinyendian_src, subdir: 'd/')
-
-tinyendian_lib = library(
- meson.project_name(),
- [tinyendian_src],
- include_directories: [src_dir],
- version: meson.project_version(),
- pic: true,
- install: true,
-)
-
-pkgc.generate(
- name: meson.project_name(),
- libraries: tinyendian_lib,
- subdirs: 'd/',
- version: meson.project_version(),
- description: 'Lightweight endianness library for D.'
-)
-
-# Make Tinyendian easy to use as subproject
-tinyendian_dep = declare_dependency(
- link_with: tinyendian_lib,
- include_directories: [src_dir]
-)
-#+END_SRC
-
-** nix :nix:
-
-- default.nix
-- shell.nix
-
-*** envrc :envrc:
-**** .envrc
-
-#+HEADER: :tangle ../.envrc
-#+BEGIN_SRC sh
-NIX_ENFORCE_PURITY=0
-if [ -e .envrc-local ]; then # source an additional user-specific .envrc in ./.envrc-local
- source .envrc-local
-fi
-#+END_SRC
-
-- lorri?
-
-#+HEADER: :NO-tangle ../.envrc
-#+BEGIN_SRC sh
-if type lorri &>/dev/null; then
- echo "direnv: using lorri from PATH ($(type -p lorri))"
- eval "$(lorri direnv)"
-else # fallback prevent bootstrapping problems by using direnv's builtin nix support
- use nix
- NIX_ENFORCE_PURITY=0
-fi
-if [ -e .envrc-local ]; then # source an additional user-specific .envrc in ./.envrc-local
- source .envrc-local
-fi
-#+END_SRC
-
-- enable flakes
-
-#+HEADER: :NO-tangle ../.envrc
-#+BEGIN_SRC sh
-if [ -f flake.lock ] && [ -f flake.nix ]; then
- # reload when these files change
- watch_file flake.nix
- watch_file flake.lock
- # load the flake devShell
- if [ ! -d $(direnv_layout_dir) ]; then
- mkdir $(direnv_layout_dir)
- fi
- eval "$(nix --experimental-features 'nix-command flakes' print-dev-env --profile "$(direnv_layout_dir)/flake-profile")"
-else
- # fall back to using direnv's builtin nix support
- # to prevent bootstrapping problems.
- # use nix
- if type lorri &>/dev/null; then
- echo "direnv: using lorri from PATH ($(type -p lorri))"
- eval "$(lorri direnv)"
- else
- # fall back to using direnv's builtin nix support
- # to prevent bootstrapping problems.
- use nix
- NIX_ENFORCE_PURITY=0
- fi
- # source an additional user-specific .envrc in ./.envrc-local
- if [ -e .envrc-local ]; then
- source .envrc-local
- fi
-fi
-#+END_SRC
-
-**** .envrc-local CHECK MODIFY
-
-- bespoke modify appropriately and generate if needed
-
-#+HEADER: :tangle ../.envrc-local_
-#+BEGIN_SRC sh
-export NIX_PATH=<<nix_path_channel>>
-#export NIX_PATH=<<nixpkgs_path_local>>
-# reload when these files change
-watch_file flake.nix
-# watch_file flake.lock
-## load the flake devShell
-eval "$(nix print-dev-env)"
-# echo $NIX_BUILD_TOP
-export SpineVER=$(git describe --long --tags | sed 's/^[ a-z_-]\+\([0-9.]\+\)/\1/;s/\([^-]*-g\)/r\1/;s/-/./g')
-export SpineSRC=<<project_path_local_src>>
-export SpineBIN=<<project_path_local_bin>>
-export SpineDOC=<<project_path_local_doc>>
-export SpineOUTversioned=<<project_path_local_out>>
-export SpineOUTstatic=<<project_path_local_out_static>>
-
-echo '-*- mode: org -*-
-
-,* nixpkgs path?
-
- eval "$(nix print-dev-env)"
-' > nix_note_.org
-
-echo " <nixpkgs> == `nix-instantiate --find-file nixpkgs`" >> nix_note_.org
-
-echo '
-,* nix build and show derivation
-
-,#+BEGIN_SRC sh
-nix-shell --pure
-
-nix-build
-nix build -f default.nix
-nix shell -f default.nix
-nix-instantiate | nix-build
-nix build `nix-instantiate`
-
-nix develop
-
-nix-instantiate | nix show-derivation | jq
-nix-instantiate | nix show-derivation --recursive | jq
-
-nix search --json 2>/dev/null |jq
-,#+END_SRC
-
-,* version and build info
-
-,#+BEGIN_SRC sh' >> nix_note_.org
-
-echo 'spine version (git) == $SpineVER' >> nix_note_.org
-echo "spine version (git) == $SpineVER" >> nix_note_.org
-echo 'nix-instantiate == `nix-instantiate`' >> nix_note_.org
-echo "nix-instantiate == `nix-instantiate`" >> nix_note_.org
-
-echo "#+END_SRC
-
-,* initialised shell variables
-
-,#+BEGIN_SRC sh
-SpineSRC=$SpineSRC
-SpineDOC=$SpineDOC
-SpineOUTversioned=$SpineOUTversioned
-SpineOUTstatic=$SpineOUTstatic
-,#+END_SRC
-" >> nix_note_.org
-
-echo '* spine run instruction examples
-,** parallelized tasks
-,*** doc source
-
-,#+BEGIN_SRC sh
-$SpineBIN/spine --very-verbose --pod --source --output="$SpineOUTversioned" $SpineDOC/markup/pod/*
-,#+END_SRC
-
-,*** html & epub output
-
-,#+BEGIN_SRC sh
-$SpineBIN/spine --very-verbose --html --epub --output="$SpineOUTversioned" $SpineDOC/markup/pod/*
-,#+END_SRC
-
-,*** sqlite db for each document - populate each db
-
-,#+BEGIN_SRC sh
-$SpineBIN/spine --very-verbose --sqlite-discrete --output="$SpineOUTversioned" $SpineDOC/markup/pod/*
-,#+END_SRC
-
-,*** doc source; html, epub; sqlite outputs
-
-,#+BEGIN_SRC sh
-$SpineBIN/spine --verbose --pod --html --epub --sqlite-discrete --output="$SpineOUTversioned" $SpineDOC/markup/pod/*
-,#+END_SRC
-
-,*** harvest (authors topics)
-
-,#+BEGIN_SRC sh
-$SpineBIN/spine --very-verbose --harvest --output="$SpineOUTversioned" $SpineDOC/markup/pod/*
-,#+END_SRC
-
-,*** html, harvest
-
-,#+BEGIN_SRC sh
-$SpineBIN/spine --verbose --dark --html --html-link-harvest --harvest --output="$SpineOUTversioned" $SpineDOC/markup/pod/*
-$SpineBIN/spine --very-verbose --html --html-link-harvest --harvest --output="$SpineOUTversioned" $SpineDOC/markup/pod/*
-,#+END_SRC
-
-,*** composite command: source pod, html, epub, harvest, sqlite
-
-,#+BEGIN_SRC sh
-$SpineBIN/spine --verbose --dark --pod --epub --html --html-link-harvest --harvest --sqlite-discrete --output="$SpineOUTversioned" $SpineDOC/markup/pod/*
-,#+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" $SpineDOC/markup/pod/*
-,#+END_SRC
-
-,*** composite command: source pod, html, epub, harvest, sqlite
-
-,#+BEGIN_SRC sh
-$SpineBIN/spine --verbose --no-parallel --dark --pod --epub --html --html-link-harvest --harvest --sqlite-discrete --output="$SpineOUTversioned" $SpineDOC/markup/pod/*
-,#+END_SRC
-
-,** config [./pod/].dr/config_local_site
-
-,#+BEGIN_SRC sh
-cat $SpineDOC/markup/pod/.dr/config_local_site
-$SpineBIN/spine --show-config $SpineDOC/markup/pod
-$SpineBIN/spine --show-config --output="$SpineOUTversioned" $SpineDOC/markup/pod
-,#+END_SRC
-
-,** cgi operations (output to $SpineOUTstatic /var/www)
-
-,#+BEGIN_SRC sh
-$SpineBIN/spine --very-verbose --sqlite-db-create --output="$SpineOUTstatic" $SpineDOC/markup/pod/*
-
-$SpineBIN/spine -v --cgi-search-form-codegen --output=$SpineOUTstatic $SpineDOC/markup/pod/*
-
-$SpineBIN/spine -v --show-config --config=$SpineDOC/markup/pod/.dr
-
-$SpineBIN/spine --html $SpineDOC/markup/pod/*
-
-
-$SpineBIN/spine -v --cgi-search-form-codegen --config=$SpineDOC/markup/pod/.dr/config_local_site
-,#+END_SRC
-
-,*** generate html linked to search form
-
-,#+BEGIN_SRC sh
-$SpineBIN/spine -v --html --html-link-search --html-link-harvest --harvest --output=$SpineOUTstatic $SpineDOC/markup/pod/*
-,#+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>>" --output="$SpineOUTstatic"
-$SpineBIN/spine -v --sqlite-db-recreate --sqlite-db-filename="<<spine_search_db>>" --output="$SpineOUTstatic"
-,#+END_SRC
-
-,*** populate sqlite db
-
-,#+BEGIN_SRC sh
-$SpineBIN/spine -v --sqlite-update --sqlite-db-filename="<<spine_search_db>>" --output=$SpineOUTstatic $SpineDOC/markup/pod/*
-,#+END_SRC
-
-,*** generate html (linked to search form), sql output, harvest COMPOSITE
-
-,#+BEGIN_SRC sh
-$SpineBIN/spine -v --html --html-link-search --html-link-harvest --harvest --sqlite-update --sqlite-db-filename="<<spine_search_db>>" --cgi-sqlite-search-filename="<<spine_search_cgi>>" --output="$SpineOUTstatic" $SpineDOC/markup/pod/*
-,#+END_SRC
-
-,*** make search form
-
-,#+BEGIN_SRC sh
-$SpineBIN/spine -v --cgi-search-form-codegen --config=$SpineDOC/markup/pod/.dr/config_local_site
-,#+END_SRC
-
-' >> nix_note_.org
-
-cat nix_note_.org
-
-echo "emacs nix_note_.org"
-echo "cat nix_note_.org"
-#+END_SRC
-
-***** nixpkgs_path SETUP
-****** nixpkgs select path SELECT
-
-#+NAME: nixpkgs_path
-#+BEGIN_SRC nix
-<<nixpkgs_path_local>>
-#+END_SRC
-
-****** nixpkgs path options
-
-- <nixpkgs>
-
-#+NAME: nixpkgs_path_default
-#+BEGIN_SRC nix
-<nixpkgs>
-#+END_SRC
-
-- local path SET WARN
-
-#+NAME: nixpkgs_path_local
-#+BEGIN_SRC nix
-/nixpkgs-ra/nixpkgs
-#+END_SRC
-
-****** project path options
-
-- local path SET WARN
-
-#+NAME: nix_path_channel
-#+BEGIN_SRC nix
-/nix/var/nix/profiles/per-user/root/channels/nixos
-#+END_SRC
-
-#+NAME: nix_path_directory
-#+BEGIN_SRC nix
-nixpkgs=<<nixpkgs_path_local>>
-#+END_SRC
-
-#+NAME: project_path_local_src
-#+BEGIN_SRC nix
-/grotto-ra/repo/git.repo/projects/project-spine/doc-reform
-#+END_SRC
-
-#+NAME: project_path_local_bin
-#+BEGIN_SRC nix
-<<project_path_local_src>>/result/bin
-#+END_SRC
-
-#+NAME: project_path_cgi_bin
-#+BEGIN_SRC nix
-/var/www/cgi/cgi-bin
-#+END_SRC
-
-#+NAME: project_path_local_doc
-#+BEGIN_SRC nix
-/grotto-ra/repo/git.repo/projects/project-spine/doc-reform-markup/spine-markup-samples
-#+END_SRC
-
-#+NAME: project_path_local_out
-#+BEGIN_SRC nix
-/srv/www/spine/$SpineVER
-#+END_SRC
-
-#+NAME: project_path_local_out_
-#+BEGIN_SRC nix
-/tmp/spine/$SpineVER/www
-#+END_SRC
-
-#+NAME: project_path_local_out_static
-#+BEGIN_SRC nix
-/srv/www/spine/static
-#+END_SRC
-
-#+NAME: project_path_local_out_static_
-#+BEGIN_SRC nix
-/var/www
-#+END_SRC
-
-*** flake :flake:
-
-- flake.nix
- /nixpkgs-ra/nixpkgs
- ./shell.nix
- - shell.nix
- ./pkgs/shell-pkgs.nix
- - pkgs/shell-pkgs.nix
- - default.nix
- ./nix/dub.selections.nix #
- - dub.selections.nix
-
-nix develop
-
-nix flake update
-
-#+NAME: nixpkgs_url
-#+BEGIN_SRC nix
-github:nixos/nixpkgs
-#+END_SRC
-
-#+BEGIN_SRC nix
-<<nixpkgs_path_local>>
-#+END_SRC
-
-#+HEADER: :tangle ../flake.nix
-#+BEGIN_SRC nix
-{
- description = "a sisu like document parser";
- inputs = {
- flake-utils.url = "github:numtide/flake-utils";
- nixpkgs.url = "<<nixpkgs_url>>";
- };
- outputs = { self, nixpkgs, flake-utils }:
- let
- pkgs = nixpkgs.legacyPackages.x86_64-linux;
- in {
- packages.x86_64-linux.spine = pkgs.stdenv.mkDerivation {
- name = "spine";
- inherit self;
- src = self;
- shell = ./shell.nix;
- installPhase = ''
- install -m755 spine $out/bin/spine
- '';
- };
- defaultPackage.x86_64-linux = self.packages.x86_64-linux.spine;
- };
-}
-#+END_SRC
-
-#+BEGIN_SRC nix
-{
- description = "a sisu like document parser";
- inputs = {
- flake-utils.url = "github:numtide/flake-utils";
- nixpkgs.url = "<<nixpkgs_url>>";
- d2sqlite3 = {
- url = "github:dlang-community/d2sqlite3";
- flake = false;
- };
- tinyendian = {
- url = "github:kiith-sa/tinyendian";
- flake = false;
- };
- dyaml = {
- url = "github:dlang-community/D-YAML";
- flake = false;
- };
- imageformats = {
- url = "github:lgvz/imageformats";
- flake = false;
- };
- };
- outputs = { self, d2sqlite3, tinyendian, dyaml, imageformats, nixpkgs, flake-utils }:
- let
- pkgs = nixpkgs.legacyPackages.x86_64-linux;
- in {
- packages.x86_64-linux.spine = pkgs.stdenv.mkDerivation {
- name = "spine";
- inherit self;
- src = self;
- shell = ./shell.nix;
- installPhase = ''
- install -m755 spine $out/bin/spine
- '';
- };
- defaultPackage.x86_64-linux = self.packages.x86_64-linux.spine;
- };
-}
-#+END_SRC
-
-#+HEADER: :NO-tangle ../flake.nix
-#+BEGIN_SRC nix
-{
- description = "a sisu like document parser";
- inputs = {
- flake-utils.url = "github:numtide/flake-utils";
- nixpkgs.url = "<<nixpkgs_url>>";
- # pkgs /nixpkgs-ra/nixpkgs {}
- #spine.url = "/grotto-ra/repo/git.repo/projects/project-spine/doc-reform";
- #spine.url = "./.";
- };
- outputs = { self, nixpkgs, flake-utils }:
- #flake-utils.lib.eachSystem [ "x86_64-linux" "defaultPackage.x86_64-linux" "packages.x86_64-linux.defaultPackage.x86_64-linux" ] (system:
- flake-utils.lib.eachDefaultSystem (system:
- let
- #pkgs = ${system};
- pkgs = nixpkgs.legacyPackages.${system};
- # project = pkgs.spine.project' {
- # src = ./.;
- # compiler-nix-name = "ldc";
- # };
- in { #project.flake {} // {
- #devShell = project.shellFor {
- # (import ./shell.nix self { inherit pkgs; });
- #};
- devShell = import ./default.nix self { inherit pkgs; };
- }
- );
-}
-#+END_SRC
-
-*** shell.nix :shell:
-
- nix-shell
-
- shell.nix --pure
- shell.nix --pure -I .envrc
-
- nix-shell --pure -I nixpkgs=/nixpkgs-ra/nixpkgs
- nix-shell --pure -p "with import /nixpkgs-ra/nixpkgs {}; ldc"
- nix-shell --pure -p "with import /nixpkgs-ra/nixpkgs {}; [dub ldc]"
-
- shell.nix direnv: export +IN_NIX_SHELL
-
- nix-shell -p nixFlakes
- nix-shell -p nixFlakes --pure
- nix-shell -p nixFlakes --pure -p "with import /nixpkgs-ra/nixpkgs {}; [dub ldc]"
-
- shell.nix -I .envrc
- shell.nix
-
- nix develop
-
- nix-build
- nix-build -I nixpkgs=<provide local nix path>
- nix-build -I .envrc
-
- nix build
- nix build -f default.nix && noti
- nix build -f default.nix && ./result/bin/spine -v && noti -t "spine build" -m "see ./result/bin/spine"
- nix build -f spine.nix && ./result/bin/spine -v && noti -t "spine build" -m "see ./result/bin/spine"
- nix build -f project.nix
- nix build -f spine.nix
-
- nix-shell shell.nix --pure
- nix build -f default.nix
- ./result/bin/spine
-
-#+HEADER: :tangle ../shell.nix
-#+HEADER: :tangle-mode (identity #o755)
-#+HEADER: :shebang "#!/usr/bin/env -S nix-shell --pure"
-#+BEGIN_SRC nix
-{ pkgs ? import <nixpkgs> {} }:
-pkgs.mkShell {
- buildInputs = with pkgs; [(
- with pkgs; [
- nixFlakes
- rund
- dub
- ldc
- sqlite
- nix-prefetch-git
- validatePkgConfig
- jq
- git
- ]
- )];
- shellHook = ''
- if [[ -e ".envrc" ]]; then
- source .envrc
- fi
- '';
-}
-#+END_SRC
-
-#+HEADER: :NO-tangle ../shell.nix
-#+HEADER: :tangle-mode (identity #o755)
-#+HEADER: :shebang "#!/usr/bin/env -S nix-shell"
-#+BEGIN_SRC nix
-{ pkgs ? import <nixpkgs> {} }:
-pkgs.mkShell {
- buildInputs = with pkgs; [
- (import ./nix/pkglst/shell-pkgs.nix { inherit pkgs; })
- ];
- buildPhase = "nix build -f default.nix";
- shellHook = ''
- echo "built spine @ ./result/bin/spine"
- if [[ -e ".envrc" ]]; then
- source .envrc
- fi
- nix-instantiate | nix show-derivation | jq
- '';
-}
-#+END_SRC
-
-*** default.nix :default:
-
-- default.nix -I nixpkgs=<provide local nix path>
- e.g. default.nix -I nixpkgs=/nixpkgs-ra/nixpkgs
-
-- nix-build -I nixpkgs=<provide local nix path>
- e.g. nix-build -I nixpkgs=/nixpkgs-ra/nixpkgs
-
- nix-build -I nixpkgs=/nixpkgs-ra/nixpkgs
- nix-build -I .envrc-local
- nix-build -I .envrc
- default.nix -I .envrc
- default.nix
-
- nix build
- nix build -f default.nix
- nix build -f project.nix
- nix build -f spine.nix
-
-#+HEADER: :tangle ../default.nix
-#+HEADER: :tangle-mode (identity #o755)
-#+HEADER: :shebang "#!/usr/bin/env -S nix-build"
-#+BEGIN_SRC nix
-{ pkgs ? import <nixpkgs> {},
- stdenv ? pkgs.stdenv,
- lib ? pkgs.lib,
- ldc ? null,
- dcompiler ? pkgs.ldc,
- dub ? pkgs.dub
-}:
-assert dcompiler != null;
-with (
- assert dcompiler != null;
- with lib;
- let
- # Filter function to remove the .dub package folder from src
- filterDub = name: type: let baseName = baseNameOf (toString name); in ! (
- 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 ];
- 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/bin -type f -exec ${removeExpr (disallowedReferences deps)} '{}' + || true
- '';
- buildPhase = ''
- runHook preBuild
- export HOME=$PWD
- 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
- export HOME=$PWD
- dub test --combined --skip-registry=all
- runHook postCheck
- '';
- installPhase = ''
- runHook preInstall
- mkdir -p $out/bin
- cp -r "${targetOf package}" $out/bin
- runHook postInstall
- '';
- meta = lib.optionalAttrs (package ? description) {
- description = package.description;
- } // attrs.meta or {};
- } // lib.optionalAttrs (!(attrs ? version)) {
- # Use name from dub.json, unless pname and version are specified
- name = package.name;
- }));
- }
-);
-mkDubDerivation rec {
- name = "spine-${version}";
- version = "<<version_spine>>";
- src = ./.;
- buildInputs = [
- pkgs.sqlite (
- with pkgs; [
- nixFlakes
- rund
- dub
- ldc
- sqlite
- ]
- )
- ];
- # buildPhase = [ ];
- installPhase = ''
- install -m755 -D spine $out/bin/spine
- echo "built $out/bin/spine"
- '';
- <<nix_project_meta>>
-}
-#+END_SRC
-
-- unused
- - installPhase
-
-#+BEGIN_SRC txt
-installPhase = ''
- mkdir -p $out/bin
- cp spine $out/bin
- chmod +x $out/bin/spine
-'';
-#+END_SRC
-
-*** project meta
-
-#+NAME: nix_project_meta
-#+BEGIN_SRC nix
-meta = with pkgs.lib; {
- homepage = https://sisudoc.org;
- description = "a sisu like document parser";
- license = licenses.agpl3Plus;
- platforms = platforms.linux;
- maintainers = [ RalphAmissah ];
-};
-#+END_SRC
-
-*** dub.selections.json
-
-#+HEADER: :NO-tangle ../dub.selections.json
-#+BEGIN_SRC nix
-{
- "fileVersion": 1,
- "versions": {
- "d2sqlite3": "0.19.1",
- "dyaml": "0.8.3",
- "imageformats": "7.0.2",
- "tinyendian": "0.2.0"
- }
-}
-#+END_SRC
-
-*** dub.selections.nix
-
-#+HEADER: :NO-tangle ../nix/dub.selections.nix
-#+BEGIN_SRC nix
-# This file was generated by https://github.com/lionello/dub2nix v0.2.3
-[ {
- fetch = {
- type = "git";
- url = "https://github.com/dlang-community/d2sqlite3.git";
- rev = "v0.19.1";
- sha256 = "0rnsgla6xyr8r34knf7v6dwhacra96q1b5rhxcz9246inwhvrk5k";
- fetchSubmodules = false;
- date = "2020-07-21T12:32:51+02:00";
- deepClone = false;
- leaveDotGit = false;
- path = "/nix/store/hsi8xvl15w6fwlqvs042m1z5i88yc72i-d2sqlite3";
- };
-} {
- fetch = {
- type = "git";
- url = "https://github.com/kiith-sa/tinyendian.git";
- rev = "v0.2.0";
- sha256 = "086gf5aga52wr5rj2paq54daj8lafn980x77b706vvvqaz2mlis8";
- fetchSubmodules = false;
- date = "2018-06-10T11:04:28+02:00";
- deepClone = false;
- leaveDotGit = false;
- path = "/nix/store/9c7fsmi5am84j6dq2mp3va306x3ay291-tinyendian";
- };
-} {
- fetch = {
- type = "git";
- url = "https://github.com/kiith-sa/D-YAML.git";
- rev = "v0.8.3";
- sha256 = "13wy304xjbwkpgg7ilql1lkxkm83s87jm59ffnrg26slp7cx149q";
- fetchSubmodules = false;
- date = "2020-09-19T23:46:57+02:00";
- deepClone = false;
- leaveDotGit = false;
- path = "/nix/store/3i8i56lkmw2xq3lxr5h66v909waq2mqg-D-YAML";
- };
-} {
- fetch = {
- type = "git";
- url = "https://github.com/lgvz/imageformats.git";
- rev = "v7.0.2";
- sha256 = "1mfbsmi4fs1xny4zqs6jyr04d5f4h03r9f6jadvkdqj5kd1k0ws7";
- fetchSubmodules = false;
- date = "2019-10-10T07:54:45+03:00";
- deepClone = false;
- leaveDotGit = false;
- path = "/nix/store/wn554pn21nzmpvw2hs7hvv9v9y0sgarg-imageformats";
- };
-} ]
-#+END_SRC
-
-*** dub2nix & shared pkgs SHARED
-**** dub2nix with pkgs shared
-
-#+NAME: nix_with_pkgs
-#+BEGIN_SRC nix
-with pkgs; [
- <<nix_shell_with_pkgs_list>>
-]
-#+END_SRC
-
-**** with pkgs list
-
-#+NAME: nix_shell_with_pkgs_list
-#+BEGIN_SRC nix
-nixFlakes
-rund
-dub
-ldc
-sqlite
-nix-prefetch-git
-validatePkgConfig
-jq
-git
-#+END_SRC
-
-** .gitignore :gitignore:
-
-#+HEADER: :tangle "../.gitignore"
-#+BEGIN_SRC sh
-# git ls-files --others --exclude-from=.git/info/exclude
-,*
-!.gitignore
-!README.md
-!COPYRIGHT
-!CHANGELOG
-!makefile
-!version.txt
-!configuration.txt
-!*.json
-!*.sdl
-!meson.build
-!tangle
-!*.org
-!*.d
-!*.rb
-!*.txt
-!conf.sdl
-!doc
-!doc/**
-!man
-!man/**
-!org
-!sundry
-!sundry/**
-!*.nix
-!nix
-!nix/**
-!.envrc
-!src
-!src/**
-!data
-!data/*
-!data/src/**
-!data/src_yaml/**
-!data/pod/**
-!data/pod_yaml/**
-!*.sst
-!*.ssm
-!**/*.sst
-!**/*.ssm
-!subprojects
-!subprojects/*.wrap
-#!subprojects/*.meson.build
-#!subprojects/**
-!pod.manifest
-!sisu_document_make
-!config_local_site
-!sisudoc
-!views
-!docs/*.html
-!notes
-notes/**
-!notes/*.org
-!notes/sisu-description.sst
-!notes/reminders
-!notes/reminders/**
-.dub/**
-,**/.dub/**
-,**/cgi-bin/**
-tmp/**
-,*_.org
-,*_.d
-,*_.txt
-,*_
-,*.swp
-,*~
-,*~
-\#*
-,*.\#*
-!.envrc-local_
-#!*/
-#\#*
-#*.\#*
-#.reggae/**
-#+END_SRC
-
-* sundry misc
-** spine search cgi (in ./sundry)
-
-*** shell.nix
-
-#+HEADER: :tangle "../sundry/spine_search_cgi/shell.nix"
-#+HEADER: :tangle-mode (identity #o755)
-#+HEADER: :shebang "#!/usr/bin/env -S nix-shell --pure"
-#+BEGIN_SRC nix
-{ pkgs ? import <nixpkgs> {} }:
-pkgs.mkShell {
- buildInputs = with pkgs; [(
- with pkgs; [
- nixFlakes
- rund
- dub
- ldc
- sqlite
- nix-prefetch-git
- validatePkgConfig
- jq
- git
- ]
- )];
- shellHook = ''
- if [[ -e ".envrc" ]]; then
- source .envrc
- fi
- '';
-}
-#+END_SRC
-
-*** default.nix
-
-#+HEADER: :tangle "../sundry/spine_search_cgi/default.nix"
-#+HEADER: :tangle-mode (identity #o755)
-#+HEADER: :shebang "#!/usr/bin/env -S nix-build"
-#+BEGIN_SRC nix
-{ pkgs ? import <nixpkgs> {},
- stdenv ? pkgs.stdenv,
- lib ? pkgs.lib,
- ldc ? null,
- dcompiler ? pkgs.ldc,
- dub ? pkgs.dub
-}:
-assert dcompiler != null;
-with (
- assert dcompiler != null;
- with lib;
- let
- # Filter function to remove the .dub package folder from src
- filterDub = name: type: let baseName = baseNameOf (toString name); in ! (
- 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 ];
- 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
- export HOME=$PWD
- 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
- export 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)) {
- # Use name from dub.json, unless pname and version are specified
- name = package.name;
- }));
- }
-);
-mkDubDerivation rec {
- name = "spine-search-${version}";
- version = "0.11.3";
- src = ./.;
- buildInputs = [
- pkgs.sqlite (
- with pkgs; [
- nixFlakes
- rund
- dub
- ldc
- sqlite
- ]
- )
- ];
- # # buildPhase = [ ];
- # installPhase = ''
- # install -m755 -D spine_search $out/bin/spine-search
- # echo "built $out/bin/spine-search"
- # '';
- meta = with pkgs.lib; {
- homepage = https://sisudoc.org;
- description = "a sisu like document parser";
- license = licenses.agpl3Plus;
- platforms = platforms.linux;
- maintainers = [ RalphAmissah ];
- };
-}
-#+END_SRC
-
-*** .envrc
-
-#+HEADER: :tangle "../sundry/spine_search_cgi/.envrc"
-#+BEGIN_SRC sh
-NIX_ENFORCE_PURITY=0
-if [ -e .envrc-local ]; then # source an additional user-specific .envrc in ./.envrc-local
- source .envrc-local
-fi
-#+END_SRC
-
-*** .envrc-local
-
-#+HEADER: :tangle "../sundry/spine_search_cgi/.envrc-local_"
-#+BEGIN_SRC sh
-export NIX_PATH=/nix/var/nix/profiles/per-user/root/channels/nixos
-#export NIX_PATH=nixpkgs=/nixpkgs-ra/nixpkgs
-# reload when these files change
-watch_file flake.nix
-# watch_file flake.lock
-## load the flake devShell
-eval "$(nix print-dev-env)"
-# echo $NIX_BUILD_TOP
-export SpineVER=$(git describe --long --tags | sed 's/^[ a-z_-]\+\([0-9.]\+\)/\1/;s/\([^-]*-g\)/r\1/;s/-/./g')
-export SpineSRC=<<project_path_local_src>>
-export SpineBIN=<<project_path_local_bin>>
-export SpineDOC=<<project_path_local_doc>>
-#export SpineOUTversioned=<<project_path_local_out>>
-export SpineOUTstatic=<<project_path_local_out_static>>
-export SpineCgiBIN=<<project_path_cgi_bin>>
-
-echo '-*- mode: org -*-
-
-,* nixpkgs path?
-
- eval "$(nix print-dev-env)"
-' > nix_note_.org
-
-echo " <nixpkgs> == `nix-instantiate --find-file nixpkgs`" >> nix_note_.org
-
-echo '
-,* nix build and show derivation
-
-,#+BEGIN_SRC sh
-nix-shell --pure
-
-nix-build
-nix build -f default.nix
-nix shell -f default.nix
-nix-instantiate | nix-build
-nix build `nix-instantiate`
-
-nix develop
-
-nix-instantiate | nix show-derivation | jq
-nix-instantiate | nix show-derivation --recursive | jq
-
-nix search --json 2>/dev/null |jq
-,#+END_SRC
-
-,* version and build info
-
-,#+BEGIN_SRC sh' >> nix_note_.org
-
-echo 'spine version (git) == $SpineVER' >> nix_note_.org
-echo "spine version (git) == $SpineVER" >> nix_note_.org
-echo 'nix-instantiate == `nix-instantiate`' >> nix_note_.org
-echo "nix-instantiate == `nix-instantiate`" >> nix_note_.org
-
-echo "#+END_SRC
-
-,* initialised shell variables
-
-,#+BEGIN_SRC sh
-SpineSRC=$SpineSRC
-SpineBIN=$SpineBIN
-SpineDOC=$SpineDOC
-#SpineOUTversioned=$SpineOUTversioned
-SpineOUTstatic=$SpineOUTstatic
-SpineCgiBIN=$SpineCgiBIN
-,#+END_SRC
-" >> nix_note_.org
-
-echo '* cgi form spine_search nix build and copy to spine-search
-
-,#+BEGIN_SRC sh
-nix-build
-sudo cp -vi result/share/cgi-bin/spine_search $SpineCgiBIN/.
-,#+END_SRC
-
-,* spine run instruction examples
-,** cgi operations (output to $SpineOUTstatic)
-,*** configuration
-
-,#+BEGIN_SRC sh
-$SpineBIN/spine -v --show-config --config=$SpineDOC/markup/pod/.dr
-,#+END_SRC
-
-,*** generate html (linked to search form & harvest)
-
-,#+BEGIN_SRC sh
-$SpineBIN/spine -v --html --html-link-search --html-link-harvest --sqlite-db-filename="<<spine_search_db>>" --cgi-sqlite-search-filename="<<spine_search_cgi>>"--output=$SpineOUTstatic $SpineDOC/markup/pod/*
-,#+END_SRC
-
-,*** generate sql output
-
-,#+BEGIN_SRC sh
-SpineBIN/spine -v --sqlite-update --sqlite-db-filename="<<spine_search_db>>" --output=$SpineOUTstatic $SpineDOC/markup/pod/*
-,#+END_SRC
-
-,*** generate harvest
-
-,#+BEGIN_SRC sh
-$SpineBIN/spine -v --harvest --output=$SpineOUTstatic $SpineDOC/markup/pod/*
-$SpineBIN/spine -v --html --html-link-harvest --harvest --output=$SpineOUTstatic $SpineDOC/markup/pod/*
-,#+END_SRC
-
-,*** create or re-create sql db (--sqlite-db-create or --sqlite-db-recreate)
-
-,#+BEGIN_SRC sh
-$SpineBIN/spine -v --sqlite-db-recreate --sqlite-db-filename="<<spine_search_db>>" --output="$SpineOUTstatic"
-,#+END_SRC
-
-,*** generate html (linked to search form), sql output, harvest
-
-,#+BEGIN_SRC sh
-$SpineBIN/spine -v --html --html-link-search --html-link-harvest --harvest --sqlite-db-filename="<<spine_search_db>>" --cgi-sqlite-search-filename="<<spine_search_cgi>>" --sqlite-update --output=$SpineOUTstatic $SpineDOC/markup/pod/*
-,#+END_SRC
-
-,*** make search form
-
-,#+BEGIN_SRC sh
-$SpineBIN/spine -v --cgi-search-form-codegen --config=$SpineDOC/markup/pod/.dr/config_local_site
-#$SpineBIN/spine -v --cgi-search-form-codegen --output=$SpineOUTstatic $SpineDOC/markup/pod/*
-,#+END_SRC
-' >> nix_note_.org
-
-cat nix_note_.org
-
-echo "emacs nix_note_.org"
-echo "cat nix_note_.org"
-#+END_SRC
-
-*** dub.json
-
-#+HEADER: :tangle "../sundry/spine_search_cgi/dub.json"
-#+BEGIN_SRC json
-{
- "authors": [
- "Ralph Amissah"
- ],
- "copyright": "Copyright © 2015 - 2021 Ralph Amissah",
- "name": "spine_search",
- "version": "0.11.3",
- "description": "cgi search for spine, a sisu like document parser",
- "homepage": "https://sisudoc.org",
- "license": "AGPL-3.0+",
- "targetPath": "./cgi-bin",
- "sourcePaths": [ "./src" ],
- "stringImportPaths": [ "./views" ],
- "buildRequirements": [ "allowWarnings" ],
- "targetType": "executable",
- "platforms": [ "posix" ],
- "buildTypes": {
- "dmd": {
- "dflags": [ "-J=views", "-I=src" ],
- "buildOptions": [ "verbose", "inline" ],
- "buildRequirements": [ "allowWarnings" ]
- },
- "ldc": {
- "dflags": [ "-O2", "-J=views", "-I=src" ],
- "buildOptions": [ "verbose", "optimize", "inline" ],
- "buildRequirements": [ "allowWarnings" ]
- }
- },
- "dependencies": {
- "spine_search:arsd.cgi": "*",
- "spine_search:d2sqlite3": "*"
- },
- "subPackages": [
- {
- "name": "arsd.cgi",
- "description": "cgi",
- "homepage": "https://github.com/dlang-community/d2sqlite3",
- "authors": [ "Aadam Ruppee" ],
- "copyright": "Copyright 2011-18 Aadam Ruppee",
- "license": "BSL-1.0",
- "sourcePaths": [ "./src/ext_depends_cgi/arsd" ],
- "configurations": [
- {
- "name": "cgi",
- "cgi": "with-lib",
- "targetType": "library",
- "systemDependencies": "Arsd version >= 0.8.7"
- }
- ]
- },
- {
- "name": "d2sqlite3",
- "description": "A thin wrapper around SQLite 3",
- "homepage": "https://github.com/dlang-community/d2sqlite3",
- "authors": [ "Nicolas Sicard", "Other contributors: see Github repo" ],
- "copyright": "Copyright 2011-18 Nicolas Sicard",
- "license": "BSL-1.0",
- "sourcePaths": [ "./src/ext_depends_cgi/d2sqlite3/source" ],
- "configurations": [
- {
- "name": "d2sqlite3",
- "d2sqlite3": "with-lib",
- "targetType": "library",
- "systemDependencies": "SQLite version >= 3.8.7",
- "libs": [ "sqlite3" ],
- "excludedSourceFiles": [ "source/tests.d" ]
- }
- ]
- }
- ],
- "configurations": [
- {
- "name": "default",
- "targetName": "spine_search"
- },
- {
- "name": "ldc",
- "targetName": "spine-search-ldc.cgi"
- },
- {
- "name": "dmd",
- "targetName": "spine-search-dmd.cgi"
- }
- ],
- "subConfigurations": {
- "d2sqlite3": "with-lib"
- }
-}
-#+END_SRC
-
-*** .gitignore :gitignore:
-
-#+HEADER: :tangle "../sundry/spine_search_cgi/.gitignore"
-#+BEGIN_SRC sh
-# git ls-files --others --exclude-from=.git/info/exclude
-,*
-!.gitignore
-!README.md
-!COPYRIGHT
-!CHANGELOG
-!makefile
-!version.txt
-!*.json
-!*.sdl
-!meson.build
-!tangle
-!*.org
-!*.d
-!*.rb
-!*.txt
-!conf.sdl
-!*.nix
-!nix
-!nix/**
-!.envrc
-!src
-!src/**
-!*.sst
-!*.ssm
-!**/*.sst
-!**/*.ssm
-!config_local_site
-!views
-.dub/**
-,**/.dub/**
-,**/cgi-bin/**
-tmp/**
-,*_.org
-,*_.d
-,*_.txt
-,*_
-,*.swp
-,*~
-,*~
-\#*
-,*.\#*
-!.envrc-local_
-!src/spine_search.d_
-#!*/
-#\#*
-#*.\#*
-#.reggae/**
-#+END_SRC
-
-*** set names SET
-
-#+NAME: spine_search_db
-#+BEGIN_SRC sh
-spine.search.db
-#+END_SRC
-
-#+NAME: spine_search_cgi
-#+BEGIN_SRC sh
-spine_search
-#+END_SRC
-
-** sh script to batch process _emacs org babel tangle_ :shell_script:tangle:
- [[https://orgmode.org/manual/Batch-execution.html]]
-creates a shell batch script called "tangle", that will tangle (emacs org
-babel tangle) org files in ./org/ to create .d source files in ./src/doc_reform/
-(similar functionality is contained within the "makefile" created by this
-"dr_build_scaffold.org" file make tangle)
-
-#+HEADER: :tangle ../tangle
-#+HEADER: :tangle-mode (identity #o755)
-#+HEADER: :shebang "#!/bin/sh"
-#+BEGIN_SRC sh
-# -*- mode: shell-script -*-
-# tangle files with org-mode
-DIR=`pwd`
-ORGFILES=""
-EMACSLISP=/usr/share/emacs/site-lisp
-ORG_VER_AVAILABLE=$(shell echo `ls -d ~/.emacs.d/elpa/org-???????? | cut -d '-' -f2`)
-EMACSLISP_ORG=~/.emacs.d/elpa/org-$($(shell echo $(ORG_VER_AVAILABLE)))
-ORG_CONTRIB_VER_AVAILABLE=$(shell echo `ls -d ~/.emacs.d/elpa/org-plus-???????? | cut -d '-' -f2`)
-EMACSLISP_ORG_CONTRIB=~/.emacs.d/elpa/org-plus-contrib-$($(shell echo $(ORG_CONTRIB_VER_AVAILABLE)))
-# wrap each argument in the code required to call tangle on it
-for i in $@; do
- ORGFILES="$ORGFILES \"$i\""
-done
-emacs --batch -Q -q \
---eval "(progn
-(add-to-list 'load-path (expand-file-name \"$EMACSLISP\"))
-(add-to-list 'load-path (expand-file-name \"$EMACSLISP_ORG\" t))
-(add-to-list 'load-path (expand-file-name \"$EMACSLISP_ORG_CONTRIB\" t))
-(require 'org)(require 'ob)(require 'ob-tangle)
-(mapc (lambda (file)
- (find-file (expand-file-name file \"$DIR\"))
- (setq-local org-src-preserve-indentation t)
- (org-babel-tangle)
- (kill-buffer)) '($ORGFILES)))" 2>&1 #|grep tangled
-#+END_SRC
-
-** build
-*** nix
-**** nix-shell
-
-- default.nix
-
-#+BEGIN_SRC sh
-nix-shell
-nix-build
-#+END_SRC
-
-- project.nix
-
-#+BEGIN_SRC sh
-nix-shell
-nix-build project.nix
-#+END_SRC
-
-**** nix-shell --pure
-
-- default.nix
-
-#+BEGIN_SRC sh
-nix-shell --pure
-nix-build -I nixpkgs=/nixpkgs-ra/nixpkgs
-#+END_SRC
-
-- project.nix
-
-#+BEGIN_SRC sh
-nix-shell --pure
-nix-build -I nixpkgs=/nixpkgs-ra/nixpkgs
-#+END_SRC
-
-#+BEGIN_SRC sh
-nix build
-nix build -f default.nix
-nix build -f project.nix
-nix build -f spine.nix
-#+END_SRC
-
-**** derivation .drv
-
-#+BEGIN_SRC sh
-nix show-derivation /nix/store/q7n14bm8j5vzm62qaraczdb4bpyf59vv-spine-0.11.1.drv
-#+END_SRC
-
-*** dub
-
-#+BEGIN_SRC sh
-dub build -h
-#+END_SRC
-
-#+BEGIN_SRC sh
-time dub --compiler=ldc2 -v --force
-time (dub --compiler=ldc2 --config=spine-ldc --debug=steps)
-time (dub --compiler=ldc2 --config=spine-ldc --debug=checkdoc --debug=summary --debug=dumpdoc)
-time (dub --compiler=ldc2 --config=spine-ldc --debug=io)
-time (dub --compiler=ldc2 --config=spine-ldc --debug=checkdoc --debug=summary --debug=dumpdoc --debug=io)
-time (dub --compiler=ldc2 --config=spine-ldc-debug --debug=io)
-
-time dub --compiler=dmd -v --force
-time (dub --compiler=dmd --config=spine-dmd --debug=steps)
-time (dub --compiler=dmd --config=spine-dmd-debug --debug=io)
-
-time dub --compiler=gdc -v --force
-time (dub --compiler=gdc --config=spine-gdc --debug=steps)
-time (dub --compiler=gdc --config=spine-gdc-debug --debug=io)
-#+END_SRC
-
-*** make
-
-#+BEGIN_SRC sh
-time make dmd
-time make gdc
-time make ldc
-time make gdc ldc
-time make all
-time make all_ver
-time make dmd_ver ldc_ver gdc_ver
-
-time make restart
-time make restart ldc
-time make tangle ldc
-
-time make ldc_testrun_find_pod_epub
-#+END_SRC
-
-** git
-*** project version
-
-#+BEGIN_SRC sh
-echo $(git describe --long --tags | sed 's/^[ a-z_-]\+\([0-9.]\+\)/\1/;s/\([^-]*-g\)/r\1/;s/-/./g')
-#+END_SRC
-
-*** what files changed
-
-#+BEGIN_SRC sh
-git whatchanged --since="1 day ago" --oneline --name-only --pretty=format: | sort -u
-git log --since="1 day ago" --name-only --pretty=format: | sort -u
-#+END_SRC
-
-** test run
-*** e.g.
-
-#+BEGIN_SRC sh
-time (./result/bin/spine --source --html -v --output-dir=tmp/program-output data/pod/sisu-manual/media/text/en/sisu_markup.sst )
-
-time (./bin/spine-ldc --source --html -v --output-dir=tmp/program-output data/pod/sisu-manual/media/text/en/sisu_markup.sst )
-
-time (./bin/spine-ldc --source --html -v --output-dir=tmp/program-output data/pod/sisu-manual )
-time (./bin/spine-ldc --source --html -v --output-dir=tmp/program-output data/pod/the_wealth_of_networks.yochai_benkler )
-time (./bin/spine-ldc --source --html -v --output-dir=tmp/program-output data/pod/live-manual )
-
-time (~sdp2/bin/spine-ldc --pod --source --html --epub --sqlite-create --sqlite-update -v sisudoc/media/text/en/sisu_markup_stress_test.sst sisudoc/media/text/en/the_wealth_of_networks.yochai_benkler.sst )
-
-can point to directory containing sisudoc.txt file (listing which files to process)
-
-time (~sdp2/bin/spine-ldc --html -v sisudoc)
-# will process source files listed in sisudoc.txt for appropriate files and dir structure
-
-e.g. live-manual a multilingual document (with source file inserts .ssi)
-
-time (~sdp2/bin/spine-ldc --html --lang=en,es -v sisudoc)
-
-time ( find data/pod -name pod.manifest | sort | xargs ./bin/spine-ldc --source --html --epub -v --output-dir=tmp/program-output )
-
-time ( find data/pod -maxdepth 2 -name pod.manifest | sort | xargs ./bin/spine-ldc --source --html --epub -v --output-dir=tmp/program-output )
-time ( find data/sisudir/media/text -name *.ss[tm] | sort | xargs ./bin/spine-ldc --source --html --epub -v --output-dir=tmp/program-output )
-
-find data/pod -maxdepth 2 -name pod.manifest | sort | xargs
-
-find data/sisudir/media/text -name *.ss[tm] | sort | xargs
-#+END_SRC
-
-*** sort
-
-#+BEGIN_SRC sh
-~dr/bin/spine-ldc -v --sqlite-db-create --sqlite-db-filename="spine.search.db" --cgi-sqlite-search-filename="spine-search" --output=/var/www/html \
- ~grotto/repo/git.repo/code/project-spine/doc-reform-markup/markup_samples/markup/pod/*
-
-~dr/bin/spine-ldc -v --sqlite-update --sqlite-db-filename="spine.search.db" --output=/var/www/html \
- ~grotto/repo/git.repo/code/project-spine/doc-reform-markup/markup_samples/markup/pod/*
-
-~dr/bin/spine-ldc -v --html --harvest-link --output=/var/www/html \
- ~grotto/repo/git.repo/code/project-spine/doc-reform-markup/markup_samples/markup/pod/*
-
-~dr/bin/spine-ldc -q --show-config --html --output=/var/www/html ~grotto/repo/git.repo/code/project-spine/doc-reform-markup/markup_samples/markup/pod
-
-~dr/bin/spine-ldc -q --show-config ~grotto/repo/git.repo/code/project-spine/doc-reform-markup/markup_samples/markup/pod
-
-~dr/result/bin/spine --html --output=/var/www/html /grotto-ra/repo/git.repo/projects/project-spine/doc-reform-markup/markup_samples/markup/pod/*
-
-~dr/result/bin/spine --very-verbose --sqlite-db-create --sqlite-db-filename="spine.search.db" --cgi-sqlite-search-filename="spine-search" --output=/var/www /grotto-ra/repo/git.repo/projects/project-spine/doc-reform-markup/markup_samples/markup/pod/*
-
-~dr/result/bin/spine --very-verbose --sqlite-update --sqlite-db-filename="spine.search.db" --cgi-sqlite-search-filename="spine-search" --output=/var/www /grotto-ra/repo/git.repo/projects/project-spine/doc-reform-markup/markup_samples/markup/pod/*
-#+END_SRC
-
-- produces:
- - sqlite db @: /var/www/html/sqlite/spine.search.db
- - search script in D @: /var/www/html/cgi/src/spine_search.d
- - html output * /var/www/html/en/html/[filename]
-
-#+BEGIN_SRC sh
-cd /var/www/html/cgi
-
-cp arsd/cgi.d /var/www/html/cgi/. *-[needs to be implemented as part of code]
-
-dub --force --compiler=ldc2 && sudo cp -v cgi-bin/spine-search /usr/lib/cgi-bin/.
-#+END_SRC
-
-*** list markup files
-find data/pod -name pod.manifest | sort
-find data/sisudir/media/text -name *.ss[tm] | sort
-
-time make ldc_testrun_paths_pod_pod
-time make ldc_testrun_paths_pod_pod | ag "^\".+\"|NOT found"
-time make ldc_testrun_find_pod_pod
-time make ldc_testrun_find_dir_pod
-time make ldc_testrun_filelist_dir_pod
-
-** compilers
-
-- [X] Set D_COMPILER (one of DMD LDC or GDC)
-- [X] Set debug flags (using DMD standard flag -deb
-
-[[https://wiki.dlang.org/Compilers][D Compilers wiki https://wiki.dlang.org/Compilers]]
-[[https://dlang.org/download.html][D Compilers download https://dlang.org/download.html]]
-
-** version info REVIEW :version:
-
-- https://dlang.org/download.html
-
-*** compilers (set latest versions) :compiler:version:
-**** ldc VERSION :version:set:ldc:
-
-- https://github.com/ldc-developers/ldc/releases
-
-***** 1.24.0 HACK
-
-- https://github.com/ldc-developers/ldc/releases/tag/v1.24.0
- - nix-prefetch-url https://github.com/ldc-developers/ldc/releases/download/v1.24.0/ldc-1.24.0-src.tar.gz
-
-#+NAME: ldc_version_info
-#+BEGIN_SRC nix
-version = "1.24.0";
-sha256 = "0g5svf55i0kq55q49awmwqj9qi1n907cyrn1vjdjgs8nx6nn35gx";
-#+END_SRC
-
-- ldc-1.24.0 overlay does not build with latest nixos version, nixos-20.09
- nixos at ldc-1.20.0
-
-**** dmd :dmd:
-
-- https://dlang.org/changelog/index.html
-- https://dlang.org/changelog/pending.html
-- https://downloads.dlang.org/releases/
-- https://downloads.dlang.org/releases/2.x/
-
-** dub :dub:
-
-https://github.com/dlang/dub/
-https://code.dlang.org/getting_started
-https://code.dlang.org/docs/commandline
-
-*** setup
-**** dub json or sdlang
-
-Every DUB package should contain a [[https://code.dlang.org/package-format?lang=json][dub.json]] or [[https://code.dlang.org/package-format?lang=sdl][dub.sdl]]
-https://code.dlang.org/package-format?lang=sdl
-https://code.dlang.org/packages/sdlang-d
-https://github.com/Abscissa/SDLang-D/blob/master/HOWTO.md
-
-https://code.dlang.org/docs/commandline
-
-**** dub dependencies
-
-dub list
-dub upgrade
-dub fetch taggedalgebraic
-dub fetch libinputvisitor
-dub fetch unit-threaded ?
-
-sdp ~master: /home/ralph/grotto/repo/git.repo/utils/spine-x/
-/home/ralph/.dub/packages/*
-
-*** build
-**** debug flags
-
-#+BEGIN_SRC sh
-biblio
-biblio_sorted
-bibliosorted
-block
-bookindex
-bookindexmatch
-bookindexraw
-check
-checkdoc
-code
-comment
-dumpdoc write out document contents, with object type and ocn
-endnotes
-endnotes_build
-footnotes
-footnotesdone
-group
-header
-header_and_content
-header1
-headerjson
-headermakejson
-headermetadatajson
-heading
-headings
-headingsfound
-insert
-io
-munge
-node
-objectrelated1
-objectrelated2
-objects
-ocnoff
-para
-parabullet
-parabulletindent
-paraindent
-paraindenthang
-parent
-poem
-quote
-raw
-source
-srclines
-structattrib
-summary
-table
-toc
-#+END_SRC
-
-** dub REFERENCE
-*** SET version
-
-#+NAME: version_dub
-#+BEGIN_SRC nix
-<<version_dub_next>>
-#+END_SRC
-
-#+NAME: nix_sha_dub
-#+BEGIN_SRC nix
-<<nix_sha_dub_next>>
-#+END_SRC
-
-*** SELECT version
-**** dub 1.24.0
-
-#+NAME: version_dub_next
-#+BEGIN_SRC nix
-1.24.0
-#+END_SRC
-
-#+NAME: nix_sha_dub_next
-#+BEGIN_SRC nix
-0wirm6msz8kw2a7v2ax9ab6i48cmfv6qjwpfrl9vrr4k4xdg3vn6
-#+END_SRC
-
-**** dub 1.23.0
-
-#+NAME: version_dub_current
-#+BEGIN_SRC nix
-1.23.0
-#+END_SRC
-
-#+NAME: nix_sha_dub_current
-#+BEGIN_SRC nix
-06a4whsl1m600k096nwif83n7za3vr7pj1xwapncy5fcad1gmady
-#+END_SRC
-
-*** dub (using ldc rather than dmd) overlay REFERENCE :overlay:
-
-#+HEADER: :NO-tangle ~/nixpkgs/pkgs/development/tools/build-managers/dub/default.nix
-#+BEGIN_SRC nix
-{ lib, stdenv, fetchFromGitHub, curl, libevent, rsync, ldc, dcompiler ? ldc }:
-
-assert dcompiler != null;
-
-stdenv.mkDerivation rec {
- pname = "dub";
- version = "<<version_dub>>";
-
- enableParallelBuilding = true;
-
- src = fetchFromGitHub {
- owner = "dlang";
- repo = "dub";
- rev = "v${version}";
- sha256 = "<<nix_sha_dub>>";
- };
-
- postUnpack = ''
- patchShebangs .
- '';
-
- # Can be removed with https://github.com/dlang/dub/pull/1368
- dubvar = "\\$DUB";
- postPatch = ''
- substituteInPlace test/fetchzip.sh \
- --replace "dub remove" "\"${dubvar}\" remove"
- '';
-
- nativeBuildInputs = [ dcompiler libevent rsync ];
- buildInputs = [ curl ];
-
- buildPhase = ''
- 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
- export DC_NAME=$dc_
- echo "$dc_ found and used as D compiler to build $pname"
- $dc ./build.d
- ./build
- '';
-
- doCheck = !stdenv.isDarwin;
-
- checkPhase = ''
- export DUB=$NIX_BUILD_TOP/source/bin/dub
- export PATH=$PATH:$NIX_BUILD_TOP/source/bin/
- export DC=${dcompiler.out}/bin/$DC_NAME
- echo "DC out --> $DC"
- export HOME=$TMP
-
- <<build_dub_tests>>
-
- ./test/run-unittest.sh
- '';
-
- installPhase = ''
- mkdir -p $out/bin
- cp bin/dub $out/bin
- '';
-
- meta = with lib; {
- description = "Package and build manager for D applications and libraries";
- homepage = "https://code.dlang.org/";
- license = licenses.mit;
- maintainers = with maintainers; [ ThomasMader ];
- platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" ];
- };
-}
-#+END_SRC
-
-***** removed failing tests
-
-#+NAME: build_dub_tests
-#+BEGIN_SRC nix
-rm test/0-init-multi.sh
-rm test/0-init-multi-json.sh
-rm test/5-convert-stdout.sh
-rm test/dc-env.sh
-rm test/ddox.sh
-rm test/feat663-search.sh
-rm test/fetchzip.sh
-rm test/interactive-remove.sh
-rm test/issue672-upgrade-optional.sh
-rm test/issue674-concurrent-dub.sh
-rm test/issue820-extra-fields-after-convert.sh
-rm test/issue877-auto-fetch-package-on-run.sh
-rm test/issue990-download-optional-selected.sh
-rm test/issue1003-check-empty-ld-flags.sh
-rm test/issue1037-better-dependency-messages.sh
-rm test/issue1040-run-with-ver.sh
-rm test/issue1091-bogus-rebuild.sh
-rm test/issue1180-local-cache-broken.sh
-rm test/issue1194-warn-wrong-subconfig.sh
-rm test/issue1277.sh
-rm test/issue1372-ignore-files-in-hidden-dirs.sh
-rm test/issue1416-maven-repo-pkg-supplier.sh
-rm test/issue1447-build-settings-vars.sh
-rm test/issue1574-addcommand.sh
-rm test/issue1524-maven-upgrade-dependency-tree.sh
-rm test/issue1773-lint.sh
-rm test/removed-dub-obj.sh
-rm test/version-spec.sh
-rm -r test/git-dependency
-rm -r test/issue502-root-import
-#+END_SRC
-
-* NOTE
-** manually set version
-
-DRV=0.10.0; git tag -f doc-reform_v\${DRV} -m\"doc-reform spine-\${DRV}\" e5452d46475785c78fe4462717bdb74f17c4197
-
-V_MAJOR=0; V_MINOR=10; V_PATCH=0
-for i in org/spine.org; do; sed -i "s/Version(\s*[0-9]\+,\s\+[0-9]\+,\s\+[0-9]\+\s*)/Version(${V_MAJOR}, ${V_MINOR}, ${V_PATCH})/g" $i; done
-for i in org/spine_build_scaffold.org; do; sed -i "0,/\(version:\)\s\+['][0-9]\+\.[0-9]\+\.[0-9]\+['],/s//\1 \'${V_MAJOR}.${V_MINOR}.${V_PATCH}\',/g" $i; done
-
-** check cgi build operations
-
-~dr/bin/spine-ldc -v --cgi-search-form-codegen --output=/var/www/html ~grotto/repo/git.repo/code/project-spine/doc-reform-markup/markup_samples/markup/pod
-
-~dr/bin/spine-ldc -v --show-config --config=/grotto/repo/git.repo/code/project-spine/doc-reform-markup/markup_samples/markup/pod/.dr
-~dr/bin/spine-ldc --show-config --html ~grotto/repo/git.repo/code/project-spine/doc-reform-markup/markup_samples/markup/pod/*
-
-~dr/bin/spine-ldc -v --sqlite-db-create --sqlite-db-filename="spine.search.db" --output=/var/www/html ~grotto/repo/git.repo/code/project-spine/doc-reform-markup/markup_samples/markup/pod
-~dr/bin/spine-ldc -v --sqlite-db-create --sqlite-db-filename="spine.search.db" --cgi-sqlite-search-filename="spine-search" --output=/var/www/html ~grotto/repo/git.repo/code/project-spine/doc-reform-markup/markup_samples/markup/pod
-~dr/bin/spine-ldc -v --sqlite-db-recreate --sqlite-db-filename="spine.search.db" --cgi-sqlite-search-filename="spine-search" --output=/var/www/html ~grotto/repo/git.repo/code/project-spine/doc-reform-markup/markup_samples/markup/pod
-
-~dr/bin/spine-ldc -v --sqlite-update --sqlite-db-filename="spine.search.db" --output=/var/www/html ~grotto/repo/git.repo/code/project-spine/doc-reform-markup/markup_samples/markup/pod/*
-
-~dr/bin/spine-ldc -v --cgi-search-form-codegen --config=/grotto/repo/git.repo/code/project-spine/doc-reform-markup/markup_samples/markup/pod/.dr/config_local_site
-
-~dr/bin/spine-ldc -v --html --html-link-search --html-link-harvest --harvest --output=/var/www/html ~grotto/repo/git.repo/code/project-spine/doc-reform-markup/markup_samples/markup/pod/*
diff --git a/sundry/spine_search_cgi/.envrc-local_ b/sundry/spine_search_cgi/.envrc-local_
index ebd4926..cff7bd4 100644
--- a/sundry/spine_search_cgi/.envrc-local_
+++ b/sundry/spine_search_cgi/.envrc-local_
@@ -69,8 +69,7 @@ SpineCgiBIN=$SpineCgiBIN
echo '* cgi form spine_search nix build and copy to spine-search
#+BEGIN_SRC sh
-nix-build
-sudo cp -vi result/share/cgi-bin/spine_search $SpineCgiBIN/.
+nix-build && sudo cp -vi result/share/cgi-bin/spine_search $SpineCgiBIN/.
#+END_SRC
* spine run instruction examples