aboutsummaryrefslogtreecommitdiffhomepage
path: root/org/spine_build_scaffold.org
diff options
context:
space:
mode:
authorRalph Amissah <ralph.amissah@gmail.com>2019-11-14 21:23:31 -0500
committerRalph Amissah <ralph.amissah@gmail.com>2019-11-19 16:55:31 -0500
commit6825a6865c9aa7f235a3825b0e08f3834745ed86 (patch)
tree79a128d168cf30bdb8bd4aa130f9e19b0c3ec5ae /org/spine_build_scaffold.org
parent0.8.3 (if exists) get site config & output path (diff)
0.9.0 spine (doc-reform renamed)
Diffstat (limited to 'org/spine_build_scaffold.org')
-rw-r--r--org/spine_build_scaffold.org1397
1 files changed, 1397 insertions, 0 deletions
diff --git a/org/spine_build_scaffold.org b/org/spine_build_scaffold.org
new file mode 100644
index 0000000..695cff0
--- /dev/null
+++ b/org/spine_build_scaffold.org
@@ -0,0 +1,1397 @@
+-*- mode: org -*-
+#+TITLE: spine (doc_reform) (project) makefile
+#+DESCRIPTION: makefile for spine
+#+FILETAGS: :spine:makefile:
+#+AUTHOR: Ralph Amissah
+#+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]]
+#+COPYRIGHT: Copyright (C) 2015 - 2019 Ralph Amissah
+#+LANGUAGE: en
+#+STARTUP: indent content
+#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
+#+OPTIONS: TeX:t LaTeX:t skip:nil d:nil todo:t pri:nil tags:not-in-toc
+#+OPTIONS: author:nil email:nil creator:nil timestamp:nil
+#+PROPERTY: header-args :padline no :exports code :noweb yes
+#+EXPORT_SELECT_TAGS: export
+#+EXPORT_EXCLUDE_TAGS: noexport
+#+TAGS: assert(a) class(c) debug(d) mixin(m) spine(s) tangle(T) template(t) WEB(W) noexport(n)
+
+[[./org/spine.org][spine.org]] [[./org/][org/]]
+
+* makefile :makefile:
+** settings [+2] :settings:
+*** git version stamp :git:version:
+
+#+BEGIN_SRC makefile :tangle ../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:
+
+#+BEGIN_SRC makefile :tangle ../makefile
+DUB=dub
+DUB_FLAGS=-v --force --compiler=
+#+END_SRC
+
+*** Project Details :project:spine:
+
+#+BEGIN_SRC makefile :tangle ../makefile
+PRG_NAME=spine
+PRG_NICKAME=rad
+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:
+
+#+BEGIN_SRC makefile :tangle ../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-???????? | 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
+
+#+BEGIN_SRC makefile :tangle ../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
+
+#+BEGIN_SRC makefile :tangle ../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
+
+** _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
+
+*** build commands [+1] :build:compile:
+**** _dub_ build rebuild :dub:
+***** all compiler builds :all:dmd:gdc:ldc:
+****** all builds
+******* default
+
+#+BEGIN_SRC makefile :tangle ../makefile
+default: ldc
+#+END_SRC
+
+******* sample markup file list
+
+#+BEGIN_SRC makefile :tangle ../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
+
+#+BEGIN_SRC makefile :tangle ../makefile
+markup_pod_samples:
+ find data/pod -name pod.manifest | cut -f 1-3 -d / | sort
+#+END_SRC
+
+#+BEGIN_SRC makefile :tangle ../makefile
+markup_dir_samples:
+ find data/sisudir/media/text -name *.ss[tm] | sort
+#+END_SRC
+
+******* quick :quick:
+******** default :default:
+
+#+BEGIN_SRC makefile :tangle ../makefile
+all: dmd ldc gdc
+#+END_SRC
+
+******** version :version:
+
+#+BEGIN_SRC makefile :tangle ../makefile
+all_ver: dmd_ver ldc_ver gdc_ver
+#+END_SRC
+
+******** debug :debug:
+
+#+BEGIN_SRC makefile :tangle ../makefile
+all_debug: dmd_debug gdc_debug ldc_debug
+#+END_SRC
+
+******** _meson_ build :meson:
+
+#+BEGIN_SRC makefile :tangle ../makefile
+meson:
+ rm -r build && mkdir build
+ meson --buildtype=debugoptimized build
+ ninja -C build
+mesonredo:
+ rm -r build && mkdir build
+ meson --buildtype=debugoptimized build
+ ninja -C build
+mesonclean: clean skel tangle
+ meson --buildtype=debugoptimized build
+ ninja -C build
+#+END_SRC
+
+******* clean & tangle :clean:tangle:
+******** default :default:
+
+#+BEGIN_SRC makefile :tangle ../makefile
+all_clean: clean tangle dmd ldc gdc
+#+END_SRC
+
+******** version :version:
+
+#+BEGIN_SRC makefile :tangle ../makefile
+all_ver_clean: clean tangle dmd_ver ldc_ver gdc_ver
+#+END_SRC
+
+******** debug :debug:
+
+#+BEGIN_SRC makefile :tangle ../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:
+
+#+BEGIN_SRC makefile :tangle ../makefile
+dmd:
+ $(DUB) --compiler=dmd --config=dmd -b release
+#+END_SRC
+
+******** debug :debug:
+
+#+BEGIN_SRC makefile :tangle ../makefile
+dmd_debug:
+ $(DUB) --compiler=dmd --config=dmd -b debug
+#+END_SRC
+
+******** version :version:
+
+- assumes git tags with program version
+
+#+BEGIN_SRC makefile :tangle ../makefile
+dmd_ver:
+ $(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:
+
+#+BEGIN_SRC makefile :tangle ../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:
+
+#+BEGIN_SRC makefile :tangle ../makefile
+gdc:
+ $(DUB) --compiler=gdc --config=gdc -b release
+#+END_SRC
+
+******** debug :debug:
+
+#+BEGIN_SRC makefile :tangle ../makefile
+gdc_debug:
+ $(DUB) --compiler=gdc --config=gdc -b debug
+#+END_SRC
+
+******** version :version:
+
+- assumes git tags with program version
+
+#+BEGIN_SRC makefile :tangle ../makefile
+gdc_ver:
+ $(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:
+
+#+BEGIN_SRC makefile :tangle ../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:
+
+#+BEGIN_SRC makefile :tangle ../makefile
+ldc:
+ $(DUB) --compiler=ldc2 --config=ldc -b release
+#+END_SRC
+
+******** debug :debug:
+
+#+BEGIN_SRC makefile :tangle ../makefile
+ldc_debug:
+ $(DUB) --compiler=ldc2 --config=ldc -b debug
+#+END_SRC
+
+******** version :version:
+
+- assumes git tags with program version
+
+#+BEGIN_SRC makefile :tangle ../makefile
+ldc_ver:
+ $(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:
+
+#+BEGIN_SRC makefile :tangle ../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:
+
+#+BEGIN_SRC makefile :tangle ../makefile
+reinit: clean skel tangle
+skel:
+ mkdir -p $(PRG_BINDIR); \
+ mkdir -p $(PRG_BINDIR)-archive; \
+ mkdir -p build; \
+ mkdir -p subprojects; \
+ mkdir -p views; \
+ mkdir -p data; \
+ mkdir -p util; \
+ mkdir -p $(PRG_SRCDIR)/$(PRG_NAME_DIR)/conf; \
+ mkdir -p $(PRG_SRCDIR)/$(PRG_NAME_DIR)/meta; \
+ mkdir -p $(PRG_SRCDIR)/$(PRG_NAME_DIR)/output; \
+ mkdir -p $(PRG_SRCDIR)/$(PRG_NAME_DIR)/share; \
+ mkdir -p $(PRG_SRCDIR)/$(PRG_NAME_DIR)/source; \
+ mkdir -p $(PRG_SRCDIR)/$(PRG_NAME_DIR); \
+ mkdir -p $(PRG_BINDIR);
+init: skel
+clean:
+ rm -rf build; \
+ rm -rf subprojects; \
+ 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 subprojects; \
+ rm -rf $(PRG_SRCDIR); \
+ rm -rf $(PRG_BINDIR); \
+ rm -rf $(PRG_DOCDIR);
+distclean: expunge
+distclean_and_init: expunge
+ mkdir -p views; \
+ mkdir -p util; \
+ mkdir -p $(PRG_SRCDIR)/$(PRG_NAME_DIR); \
+ mkdir -p $(PRG_BINDIR);
+#+END_SRC
+
+****** version :version:
+
+#+BEGIN_SRC makefile :tangle ../makefile
+ver:
+ echo spine-$(PROG_VER_DECLARED)-tag-$(PROG_VER_GIT)
+#+END_SRC
+
+****** tangle build rebuild :clean:tangle:build:
+
+#+BEGIN_SRC makefile :tangle ../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)
+**** pods
+****** find files
+
+#+BEGIN_SRC makefile :tangle ../makefile
+find_pods:
+ $(SiSU_MARKUP_SAMPLES_FIND_PODS)
+#+END_SRC
+
+***** dmd
+****** find files
+
+#+BEGIN_SRC makefile :tangle ../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
+
+#+BEGIN_SRC makefile :tangle ../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
+
+#+BEGIN_SRC makefile :tangle ../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
+
+#+BEGIN_SRC makefile :tangle ../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
+
+#+BEGIN_SRC makefile :tangle ../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
+
+#+BEGIN_SRC makefile :tangle ../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
+***** dmd
+****** find files
+
+#+BEGIN_SRC makefile :tangle ../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
+
+#+BEGIN_SRC makefile :tangle ../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
+
+#+BEGIN_SRC makefile :tangle ../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
+
+#+BEGIN_SRC makefile :tangle ../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
+
+#+BEGIN_SRC makefile :tangle ../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
+
+#+BEGIN_SRC makefile :tangle ../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
+
+#+BEGIN_SRC makefile :tangle ../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 maker.org, makefile new
+
+#+BEGIN_SRC makefile :tangle ../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
+
+*** git snapshot
+
+#+BEGIN_SRC makefile :tangle ../makefile
+gitsnapshot: distclean tangle
+ git commit -a
+#+END_SRC
+
+** phony :phony:
+
+#+BEGIN_SRC makefile :tangle ../makefile
+.PHONY : all build rebuild debug release \
+ distclean init \
+ tangle gitsnapshot
+#+END_SRC
+
+* dub.sdl :dub:sdl:config:
+Every DUB package should contain a [[http://code.dlang.org/package-format?lang=json][dub.json]] (or [[http://code.dlang.org/package-format?lang=sdl][dub.sdl]])
+** header (including dependencies) :header:
+
+#+BEGIN_SRC sh :tangle ../dub.sdl
+name "spine"
+description "sisu document parser"
+homepage "http://sisudoc.org"
+authors "Ralph Amissah"
+copyright "Copyright (C) 2016 - 2019 Ralph Amissah"
+license "AGPL-3.0+"
+targetPath "./bin"
+#sourcePath "./src/doc_reform"
+stringImportPaths "./views"
+buildRequirements "allowWarnings"
+targetType "executable"
+platforms "posix"
+dependency "d2sqlite3" version="~>0.18.3" # https://code.dlang.org/packages/d2sqlite3 http://biozic.github.io/d2sqlite3/d2sqlite3.html
+ subconfiguration "d2sqlite3" "all-included"
+dependency "imageformats" version="~>7.0.1" # https://code.dlang.org/packages/imageformats https://github.com/lgvz/imageformats
+dependency "dyaml" version="~>0.8.0"
+dependency "tinyendian" version="~>0.2.0" // for dyaml
+#+END_SRC
+
+** default
+
+time (dub --compiler=dmd -b release)
+time (dub --compiler=ldc2 -b release)
+time (dub --compiler=gdc -b release)
+
+#+BEGIN_SRC sh :tangle ../dub.sdl
+configuration "default" {
+ targetName "spine"
+ postGenerateCommands "/usr/bin/notify-send -t 0 'D executable ready' 'spine'"
+}
+#+END_SRC
+
+** dmd
+
+time (dub --compiler=dmd --config=dmd -b dmd)
+time (dub --compiler=dmd --config=dmd -b dmd-release)
+
+#+BEGIN_SRC sh :tangle ../dub.sdl
+configuration "dmd" {
+ targetName "spine-dmd"
+ postGenerateCommands "/usr/bin/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" "releaseMode" "optimize" "inline"
+ targetName "spine-dmd-ver"
+ postGenerateCommands "/usr/bin/notify-send -t 0 'D executable ready' 'spine-dmd-ver'"
+}
+#+END_SRC
+
+** ldc
+
+time (dub --compiler=ldc2 --config=ldc -b ldc)
+time (dub --compiler=ldc2 --config=ldc -b ldc-release)
+
+#+BEGIN_SRC sh :tangle ../dub.sdl
+configuration "ldc" {
+ targetName "spine-ldc"
+ postGenerateCommands "/usr/bin/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-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 "/usr/bin/notify-send -t 0 'D executable ready' 'spine-ldc-ver'"
+}
+#+END_SRC
+
+** gdc
+
+time (dub --compiler=gdc --config=gdc -b gdc)
+time (dub --compiler=gdc --config=gdc -b gdc-release)
+
+#+BEGIN_SRC sh :tangle ../dub.sdl
+configuration "gdc" {
+ targetName "spine-gdc"
+ postGenerateCommands "/usr/bin/notify-send -t 0 'D executable ready' 'spine-gdc'"
+}
+buildType "gdc" {
+ dflags "-O2" "-J=views" "-I=src/doc_reform"
+ lflags "-lz"
+ buildOptions "optimize" "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 "/usr/bin/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 "/usr/bin/notify-send -t 0 'D release executable ready' 'spine'"
+}
+#+END_SRC
+
+* meson
+** notes
+
+http://mesonbuild.com/D.html
+http://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
+
+tree -fi ./src |rg "\.d$"
+
+#+BEGIN_SRC sh :tangle ../meson.build
+project('spine', 'd',
+ license: 'AGPL3',
+ version: '0.26.5',
+ meson_version: '>=0.46'
+)
+spine_sources = [
+ 'src/doc_reform/spine.d',
+ 'src/doc_reform/conf/compile_time_info.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/metadochead.d',
+ 'src/doc_reform/meta/metadoc_show_summary.d',
+ 'src/doc_reform/meta/object_setter.d',
+ 'src/doc_reform/meta/package.d',
+ 'src/doc_reform/meta/rgx.d',
+ 'src/doc_reform/output/create_zip_file.d',
+ 'src/doc_reform/output/defaults.d',
+ 'src/doc_reform/output/epub3.d',
+ 'src/doc_reform/output/html.d',
+ 'src/doc_reform/output/hub.d',
+ 'src/doc_reform/output/latex.d',
+ 'src/doc_reform/output/odt.d',
+ 'src/doc_reform/output/package.d',
+ 'src/doc_reform/output/paths_output.d',
+ 'src/doc_reform/output/rgx.d',
+ 'src/doc_reform/output/source_pod.d',
+ 'src/doc_reform/output/sqlite.d',
+ 'src/doc_reform/output/xmls_css.d',
+ 'src/doc_reform/output/xmls.d',
+ 'src/doc_reform/share/defaults.d',
+ 'src/doc_reform/source/paths_source.d',
+ 'src/doc_reform/source/read_config_files.d',
+ 'src/doc_reform/source/read_source_files.d',
+]
+source_root = meson.source_root()
+sources_dir = include_directories('src/')
+# Dependencies
+dep_d2sqlite3 = dependency('d2sqlite3', version: '>= 0.16.2', fallback: ['d2sqlite3', 'd2sqlite3_dep'])
+dep_imageformats = dependency('imageformats-d', version: '>= 7.0.0', fallback: ['imageformats-d', 'imageformats_dep'])
+# executable
+spine_exe = executable('rad',
+ [spine_sources],
+ include_directories : [sources_dir],
+ d_import_dirs: [include_directories('views')],
+ dependencies : [
+ dep_d2sqlite3,
+ dep_imageformats,
+ ],
+ install : true
+)
+#+END_SRC
+
+** subprojects
+
+#+BEGIN_SRC sh :tangle ../subprojects/README
+d2sqlite3
+- dub
+ - https://code.dlang.org/packages/d2sqlite3
+- upstream
+ - https://github.com/biozic/d2sqlite3
+- mathias
+ - https://github.com/ximion/d2sqlite3.git
+
+imageformats
+- dub
+ - https://code.dlang.org/packages/imageformats
+- upstream
+ - https://github.com/lgvz/imageformats
+- mathias
+ - https://github.com/ximion/imageformats.git
+#+END_SRC
+
+*** d2sqlite3
+
+#+BEGIN_SRC sh :tangle ../subprojects/d2sqlite3.wrap
+[wrap-git]
+directory = d2sqlite3
+url = https://github.com/ximion/d2sqlite3.git
+revision = head
+#+END_SRC
+
+*** imageformats-d
+
+#+BEGIN_SRC sh :tangle ../subprojects/imageformats-d.wrap
+[wrap-git]
+directory = imageformats-d
+url = https://github.com/ximion/imageformats.git
+revision = head
+#+END_SRC
+
+* .gitignore :gitignore:
+
+#+BEGIN_SRC sh :tangle ../.gitignore
+# git ls-files --others --exclude-from=.git/info/exclude
+#./.dub/**
+*
+!.gitignore
+!COPYRIGHT
+!README
+!makefile
+!version.txt
+!dub*.json
+!dub.sdl
+!meson.build
+!tangle
+!*.org
+!*.d
+!*.rb
+!conf.sdl
+!org
+!util
+!src
+!src/doc_reform
+!src/doc_reform/*
+!src_yaml
+!src_yaml/doc_reform
+!src_yaml/doc_reform/*
+!data
+!data/*
+!data/src/**
+!data/src_yaml/**
+!data/pod/**
+!data/pod_yaml/**
+!*.sst
+!*.ssm
+!**/*.sst
+!**/*.ssm
+!subprojects
+!**/*.wrap
+!subprojects/*.wrap
+!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/**
+tmp/**
+*_.org
+*_.d
+*_.txt
+*_
+*~
+\#*
+*.\#*
+#!*/
+#*~
+#\#*
+#*.\#*
+#!debian
+#!debian/*
+#.reggae/**
+#+END_SRC
+
+* sh script to batch process _emacs org babel tangle_ :shell_script:tangle:
+ [[http://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)
+
+#+BEGIN_SRC sh :tangle ../tangle :tangle-mode (identity #o755) :shebang #!/bin/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
+
+* __END__
+** build
+*** dub
+
+#+BEGIN_SRC sh :tangle no
+dub build -h
+#+END_SRC
+
+#+BEGIN_SRC sh
+time (dub --compiler=dmd --config=spine-dmd --debug=steps)
+time (dub --compiler=ldc2 --config=spine-ldc --debug=steps)
+time (dub --compiler=gdc --config=spine-gdc --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=gdc --config=spine-gdc-debug --debug=io)
+time (dub --compiler=dmd --config=spine-dmd-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
+
+** dub zfunc :zfunc:
+*** ,dubdmd :dmd:
+
+#+BEGIN_SRC sh :tangle no
+time dub --compiler=dmd -v --force
+#+END_SRC
+
+*** ,dubldc :ldc:
+
+#+BEGIN_SRC sh :tangle no
+time dub --compiler=ldc2 -v --force
+#+END_SRC
+
+*** ,dubgdc :gdc:
+
+#+BEGIN_SRC sh :tangle no
+time dub --compiler=gdc -v --force
+#+END_SRC
+
+** git
+*** project version
+
+echo $(git describe --long --tags | sed 's/^[ a-z_-]\+\([0-9.]\+\)/\1/;s/\([^-]*-g\)/r\1/;s/-/./g')
+
+*** what files changed
+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
+
+** test run
+*** e.g.
+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
+
+*** 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
+** misc
+*** compilers
+
+- [X] Set D_COMPILER (one of DMD LDC or GDC)
+- [X] Set debug flags (using DMD standard flag -deb
+
+[[http://wiki.dlang.org/Compilers][D Compilers wiki https://wiki.dlang.org/Compilers]]
+[[http://dlang.org/download.html][D Compilers download http://dlang.org/download.html]]
+
+*** dub :dub:
+
+https://github.com/dlang/dub/
+http://code.dlang.org/getting_started
+http://code.dlang.org/docs/commandline
+
+**** setup
+***** dub json or sdlang
+
+Every DUB package should contain a [[http://code.dlang.org/package-format?lang=json][dub.json]] or [[http://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