diff options
Diffstat (limited to 'org/spine_build_scaffold.org')
-rw-r--r-- | org/spine_build_scaffold.org | 3918 |
1 files changed, 0 insertions, 3918 deletions
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/* |