diff options
author | Ralph Amissah <ralph.amissah@gmail.com> | 2021-08-11 06:09:23 -0400 |
---|---|---|
committer | Ralph Amissah <ralph.amissah@gmail.com> | 2021-08-12 01:49:33 -0400 |
commit | f459b2f57b111d2a7d6a50ba04bf680310d7c4d9 (patch) | |
tree | d71560ff280d244c1a0cd65c651fc85e68ffca8a | |
parent | spine search and configuration related (diff) |
configuration reorganized into config files
- spine_build_scaffold broken up into many files
-rw-r--r-- | org/config_d_cfte.org | 56 | ||||
-rw-r--r-- | org/config_dub.org | 866 | ||||
-rw-r--r-- | org/config_git.org | 154 | ||||
-rw-r--r-- | org/config_make.org | 1103 | ||||
-rw-r--r-- | org/config_meson.org | 485 | ||||
-rw-r--r-- | org/config_misc.org | 228 | ||||
-rw-r--r-- | org/config_nix.org | 1183 | ||||
-rw-r--r-- | org/spine.org | 64 | ||||
-rw-r--r-- | org/spine_build_scaffold.org | 3918 | ||||
-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 |