From 9876842de60c9c0d94b47a2589623d235607050c Mon Sep 17 00:00:00 2001
From: Ralph Amissah <ralph.amissah@gmail.com>
Date: Wed, 22 May 2024 16:21:53 -0400
Subject: README, further note on using nix for installation

- built on Debian using nix
- (first time usiing nix on a system other than
  NixOS)
---
 README             |  75 +++++++++++++++----------------
 README.md          |  75 +++++++++++++++----------------
 org/spine_info.org | 126 ++++++++++++++++++++++++++++++-----------------------
 3 files changed, 142 insertions(+), 134 deletions(-)

diff --git a/README b/README
index b8d3cf9..f4453b9 100644
--- a/README
+++ b/README
@@ -88,61 +88,51 @@ directory: sisudoc-spine
 NOTE all actions to build sisudoc-spine are taken within the directory
 sisudoc-spine
 
-cd sisudoc-spine
-
-to build directly with dub, either:
-
-for ldc2:
-  # on nix (get dependencies by setting your development environment):
-  nix develop ".#dsh-nixpkgs-ldc-dub" --print-build-logs -c zsh
-
-  # assuming you have ldc2 & dub installed on your system:
-  dub run --compiler=ldmd2 --config=ldmd2 --combined --skip-registry=all
-  dub --compiler=ldmd2 --config=ldmd2
+NOTE:
+- if dub is used to build, the resulting binary should be located in ./bin:
+- if "nix build" is used the resulting binary should be in ./result/bin
 
-  dub run --compiler=ldc2 --config=ldc2 --combined --skip-registry=all
-  dub --compiler=ldc2 --config=ldc2
-
-for dmd:
-  # on nix (get dependencies by setting your development environment):
-  nix develop ".#dsh-nixpkgs-dmd-dub" --print-build-logs -c zsh
-
-  # assuming you have dmd & dub installed on your system:
-  dub run --compiler=dmd --config=dmd --combined --skip-registry=all
-  dub --compiler=dmd --config=dmd
+cd sisudoc-spine
 
-to build with make using the provided makefile, (assuming you have the named
-compiler and dub installed on your system) either:
+*** build using nix flakes on linux (binary in ./result/bin)
 
-for ldc2:
+you need to have nix installed on your system, and to have nix flakes enabled,
+on Debian for example, you would do the following:
 
-  make ldc
+sudo apt install nix
 
-for dmd:
+create the file in the given path & filename: ~/.config/nix/nix.conf
+with the following content: experimental-features = flakes nix-command
 
-  make dmd
+which can be achieved thusly:
 
-to build using nix flakes on linux / nixos
+mkdir -p ~/.config/nix && echo "experimental-features = flakes nix-command" >> ~/.config/nix/nix.conf
 
-for ldc2:
+- to use the D compiler ldc2:
 
   nix build ".#spine-nixpkgs-ldc" --print-build-logs
 
-for dmd:
+- to use the D compiler dmd:
 
   nix build ".#spine-nixpkgs-dmd" --print-build-logs
 
-The Meson build system was used briefly to build spine, but the spine build
-tooling for Meson has not been updated, maintained or tested in recent years.
+*** build using dub directly (binary in ./bin)
+
+- to use the D compiler ldc2:
+  # on nix (get dependencies by setting your development environment):
+  nix develop ".#dsh-nixpkgs-ldc-dub" --print-build-logs -c zsh
 
-  meson
-  ninja -C build
-  meson setup --wipe build && ninja -v -C build
-  make meson
+  # assuming you have ldc2 & dub installed on your system:
+  dub run --compiler=ldmd2 --config=ldmd2 --combined --skip-registry=all
+  or
+  dub run --compiler=ldc2 --config=ldc2 --combined --skip-registry=all
 
-- https://mesonbuild.com/
+- to use the D compiler dmd:
+  # on nix (get dependencies by setting your development environment):
+  nix develop ".#dsh-nixpkgs-dmd-dub" --print-build-logs -c zsh
 
-dub --force --compiler=ldc2 && sudo cp -v cgi-bin/spine-search /usr/lib/cgi-bin/.
+  # assuming you have dmd & dub installed on your system:
+  dub run --compiler=dmd --config=dmd --combined --skip-registry=all
 
 * Commands - document processing examples
 
@@ -151,10 +141,15 @@ dub --force --compiler=ldc2 && sudo cp -v cgi-bin/spine-search /usr/lib/cgi-bin/
 For the most basic output you will need to specify:
 
 - the spine binary (executable)
+  - for dub builds ./bin/spine (also used filenames: spine-dmd & spine-ldc)
+  - for nix flake builds ./result/bin/spine
+
 - the (recognized) path to a prepared (spine marked up) document or document
   collection
-- the (path to) where the output is to be placed
-- the output types you seek
+
+- the output types you seek, e.g. --html --epub
+
+- the (path for) where the generated output is to be placed
 
 export SpineBIN=./result/bin/spine
 export SpinePOD=../sisudoc-spine-samples/markup/pod
diff --git a/README.md b/README.md
index f00dd95..2d0b092 100644
--- a/README.md
+++ b/README.md
@@ -71,61 +71,51 @@ directory: sisudoc-spine
 NOTE all actions to build sisudoc-spine are taken within the directory
 sisudoc-spine
 
-cd sisudoc-spine
-
-to build directly with dub, either:
-
-for ldc2:
-  # on nix (get dependencies by setting your development environment):
-  nix develop ".#dsh-nixpkgs-ldc-dub" --print-build-logs -c zsh
-
-  # assuming you have ldc2 & dub installed on your system:
-  dub run --compiler=ldmd2 --config=ldmd2 --combined --skip-registry=all
-  dub --compiler=ldmd2 --config=ldmd2
+NOTE:
+- if dub is used to build, the resulting binary should be located in ./bin:
+- if "nix build" is used the resulting binary should be in ./result/bin
 
-  dub run --compiler=ldc2 --config=ldc2 --combined --skip-registry=all
-  dub --compiler=ldc2 --config=ldc2
-
-for dmd:
-  # on nix (get dependencies by setting your development environment):
-  nix develop ".#dsh-nixpkgs-dmd-dub" --print-build-logs -c zsh
-
-  # assuming you have dmd & dub installed on your system:
-  dub run --compiler=dmd --config=dmd --combined --skip-registry=all
-  dub --compiler=dmd --config=dmd
+cd sisudoc-spine
 
-to build with make using the provided makefile, (assuming you have the named
-compiler and dub installed on your system) either:
+### build using nix flakes on linux (binary in ./result/bin)
 
-for ldc2:
+you need to have nix installed on your system, and to have nix flakes enabled,
+on Debian for example, you would do the following:
 
-  make ldc
+sudo apt install nix
 
-for dmd:
+create the file in the given path & filename: ~/.config/nix/nix.conf
+with the following content: experimental-features = flakes nix-command
 
-  make dmd
+which can be achieved thusly:
 
-to build using nix flakes on linux / nixos
+mkdir -p ~/.config/nix && echo "experimental-features = flakes nix-command" >> ~/.config/nix/nix.conf
 
-for ldc2:
+- to use the D compiler ldc2:
 
   nix build ".#spine-nixpkgs-ldc" --print-build-logs
 
-for dmd:
+- to use the D compiler dmd:
 
   nix build ".#spine-nixpkgs-dmd" --print-build-logs
 
-The Meson build system was used briefly to build spine, but the spine build
-tooling for Meson has not been updated, maintained or tested in recent years.
+### build using dub directly (binary in ./bin)
+
+- to use the D compiler ldc2:
+  # on nix (get dependencies by setting your development environment):
+  nix develop ".#dsh-nixpkgs-ldc-dub" --print-build-logs -c zsh
 
-  meson
-  ninja -C build
-  meson setup --wipe build && ninja -v -C build
-  make meson
+  # assuming you have ldc2 & dub installed on your system:
+  dub run --compiler=ldmd2 --config=ldmd2 --combined --skip-registry=all
+  or
+  dub run --compiler=ldc2 --config=ldc2 --combined --skip-registry=all
 
-- https://mesonbuild.com/
+- to use the D compiler dmd:
+  # on nix (get dependencies by setting your development environment):
+  nix develop ".#dsh-nixpkgs-dmd-dub" --print-build-logs -c zsh
 
-dub --force --compiler=ldc2 && sudo cp -v cgi-bin/spine-search /usr/lib/cgi-bin/.
+  # assuming you have dmd & dub installed on your system:
+  dub run --compiler=dmd --config=dmd --combined --skip-registry=all
 
 # Commands - document processing examples
 
@@ -134,10 +124,15 @@ dub --force --compiler=ldc2 && sudo cp -v cgi-bin/spine-search /usr/lib/cgi-bin/
 For the most basic output you will need to specify:
 
 - the spine binary (executable)
+  - for dub builds ./bin/spine (also used filenames: spine-dmd & spine-ldc)
+  - for nix flake builds ./result/bin/spine
+
 - the (recognized) path to a prepared (spine marked up) document or document
   collection
-- the (path to) where the output is to be placed
-- the output types you seek
+
+- the output types you seek, e.g. --html --epub
+
+- the (path for) where the generated output is to be placed
 
 export SpineBIN=./result/bin/spine
 export SpinePOD=../sisudoc-spine-samples/markup/pod
diff --git a/org/spine_info.org b/org/spine_info.org
index 9df90c6..f0e8d7c 100644
--- a/org/spine_info.org
+++ b/org/spine_info.org
@@ -47,6 +47,14 @@
 
 <<sisudoc_spine_README_install_build>>
 
+,*** build using nix flakes on linux (binary in ./result/bin)
+
+<<sisudoc_spine_README_install_build_using_nix_flakes>>
+
+,*** build using dub directly (binary in ./bin)
+
+<<sisudoc_spine_README_install_build_using_dub_directly>>
+
 ,* Commands - document processing examples
 
 ,** basic output
@@ -130,7 +138,7 @@
 
 #+HEADER: :tangle "../README.md"
 #+HEADER: :noweb yes
-#+BEGIN_SRC text
+#+BEGIN_SRC markdown
 <<sisudoc_spine_README_project_header_info>>
 
 # Summary
@@ -150,6 +158,14 @@
 
 <<sisudoc_spine_README_install_build>>
 
+### build using nix flakes on linux (binary in ./result/bin)
+
+<<sisudoc_spine_README_install_build_using_nix_flakes>>
+
+### build using dub directly (binary in ./bin)
+
+<<sisudoc_spine_README_install_build_using_dub_directly>>
+
 # Commands - document processing examples
 
 ## basic output
@@ -289,68 +305,65 @@ all work in this installation of and use of sisudoc-spine will take place in the
 directory: sisudoc-spine
 #+END_SRC
 
-*** install build project
+*** install & build project
+**** install & build project
 
 #+NAME: sisudoc_spine_README_install_build
 #+BEGIN_SRC text
 NOTE all actions to build sisudoc-spine are taken within the directory
 sisudoc-spine
 
-cd sisudoc-spine
-
-to build directly with dub, either:
-
-for ldc2:
-  # on nix (get dependencies by setting your development environment):
-  nix develop ".#dsh-nixpkgs-ldc-dub" --print-build-logs -c zsh
+NOTE:
+- if dub is used to build, the resulting binary should be located in ./bin:
+- if "nix build" is used the resulting binary should be in ./result/bin
 
-  # assuming you have ldc2 & dub installed on your system:
-  dub run --compiler=ldmd2 --config=ldmd2 --combined --skip-registry=all
-  dub --compiler=ldmd2 --config=ldmd2
-
-  dub run --compiler=ldc2 --config=ldc2 --combined --skip-registry=all
-  dub --compiler=ldc2 --config=ldc2
-
-for dmd:
-  # on nix (get dependencies by setting your development environment):
-  nix develop ".#dsh-nixpkgs-dmd-dub" --print-build-logs -c zsh
-
-  # assuming you have dmd & dub installed on your system:
-  dub run --compiler=dmd --config=dmd --combined --skip-registry=all
-  dub --compiler=dmd --config=dmd
+cd sisudoc-spine
+#+END_SRC
 
-to build with make using the provided makefile, (assuming you have the named
-compiler and dub installed on your system) either:
+**** install build project using nix flakes
 
-for ldc2:
+#+NAME: sisudoc_spine_README_install_build_using_nix_flakes
+#+BEGIN_SRC text
+you need to have nix installed on your system, and to have nix flakes enabled,
+on Debian for example, you would do the following:
 
-  make ldc
+sudo apt install nix
 
-for dmd:
+create the file in the given path & filename: ~/.config/nix/nix.conf
+with the following content: experimental-features = flakes nix-command
 
-  make dmd
+which can be achieved thusly:
 
-to build using nix flakes on linux / nixos
+mkdir -p ~/.config/nix && echo "experimental-features = flakes nix-command" >> ~/.config/nix/nix.conf
 
-for ldc2:
+- to use the D compiler ldc2:
 
   nix build ".#spine-nixpkgs-ldc" --print-build-logs
 
-for dmd:
+- to use the D compiler dmd:
 
   nix build ".#spine-nixpkgs-dmd" --print-build-logs
+#+END_SRC
 
-The Meson build system was used briefly to build spine, but the spine build
-tooling for Meson has not been updated, maintained or tested in recent years.
+**** install build project using dub directly
 
-  meson
-  ninja -C build
-  meson setup --wipe build && ninja -v -C build
-  make meson
+#+NAME: sisudoc_spine_README_install_build_using_dub_directly
+#+BEGIN_SRC text
+- to use the D compiler ldc2:
+  # on nix (get dependencies by setting your development environment):
+  nix develop ".#dsh-nixpkgs-ldc-dub" --print-build-logs -c zsh
+
+  # assuming you have ldc2 & dub installed on your system:
+  dub run --compiler=ldmd2 --config=ldmd2 --combined --skip-registry=all
+  or
+  dub run --compiler=ldc2 --config=ldc2 --combined --skip-registry=all
 
-- https://mesonbuild.com/
+- to use the D compiler dmd:
+  # on nix (get dependencies by setting your development environment):
+  nix develop ".#dsh-nixpkgs-dmd-dub" --print-build-logs -c zsh
 
-dub --force --compiler=ldc2 && sudo cp -v cgi-bin/spine-search /usr/lib/cgi-bin/.
+  # assuming you have dmd & dub installed on your system:
+  dub run --compiler=dmd --config=dmd --combined --skip-registry=all
 #+END_SRC
 
 ** commands
@@ -361,10 +374,15 @@ dub --force --compiler=ldc2 && sudo cp -v cgi-bin/spine-search /usr/lib/cgi-bin/
 For the most basic output you will need to specify:
 
 - the spine binary (executable)
+  - for dub builds ./bin/spine (also used filenames: spine-dmd & spine-ldc)
+  - for nix flake builds ./result/bin/spine
+
 - the (recognized) path to a prepared (spine marked up) document or document
   collection
-- the (path to) where the output is to be placed
-- the output types you seek
+
+- the output types you seek, e.g. --html --epub
+
+- the (path for) where the generated output is to be placed
 
 export SpineBIN=./result/bin/spine
 export SpinePOD=../sisudoc-spine-samples/markup/pod
@@ -855,7 +873,7 @@ webserv:
 
 #+HEADER: :tangle "../COPYRIGHT"
 #+HEADER: :noweb yes
-#+BEGIN_SRC txt
+#+BEGIN_SRC text
 - Name: spine - SiSU Spine, Doc Reform
   <<sisudoc_spine_copyright>>
 
@@ -872,7 +890,7 @@ webserv:
 
 #+HEADER: :tangle "../org/COPYRIGHT"
 #+HEADER: :noweb yes
-#+BEGIN_SRC txt
+#+BEGIN_SRC text
 - Name: spine - SiSU Spine, Doc Reform
   <<sisudoc_spine_copyright>>
 
@@ -889,7 +907,7 @@ webserv:
 
 #+HEADER: :tangle "../src/COPYRIGHT"
 #+HEADER: :noweb yes
-#+BEGIN_SRC txt
+#+BEGIN_SRC text
 - Name: spine - SiSU Spine, Doc Reform
   <<sisudoc_spine_copyright>>
 
@@ -906,7 +924,7 @@ webserv:
 
 #+HEADER: :tangle "../src/sisudoc/COPYRIGHT"
 #+HEADER: :noweb yes
-#+BEGIN_SRC txt
+#+BEGIN_SRC text
 - Name: spine - SiSU Spine, Doc Reform
   <<sisudoc_spine_copyright>>
 
@@ -929,7 +947,7 @@ webserv:
 
 #+HEADER: :tangle "./COPYRIGHT"
 #+HEADER: :noweb yes
-#+BEGIN_SRC txt
+#+BEGIN_SRC text
 - Name: spine - SiSU Spine, Doc Reform
   <<sisudoc_spine_copyright>>
 
@@ -942,7 +960,7 @@ webserv:
 
 #+HEADER: :NO-tangle "../doc/COPYRIGHT"
 #+HEADER: :noweb yes
-#+BEGIN_SRC txt
+#+BEGIN_SRC text
 <<data>>
 #+END_SRC
 
@@ -950,7 +968,7 @@ webserv:
 *** copyright
 
 #+NAME: sisudoc_spine_copyright
-#+BEGIN_SRC txt
+#+BEGIN_SRC text
 - Description: documents, structuring, processing, publishing, search
   - static content generator
 
@@ -964,7 +982,7 @@ webserv:
 **** AGPLv3
 
 #+NAME: sisudoc_spine_license_agpl3
-#+BEGIN_SRC txt
+#+BEGIN_SRC text
 - code under src/* src/sisudoc/*
   - License: AGPL 3 or later:
 
@@ -995,7 +1013,7 @@ webserv:
 *** spine_summary
 
 #+NAME: sisudoc_spine_summary
-#+BEGIN_SRC txt
+#+BEGIN_SRC text
 - Spine, Doc Reform (related to SiSU) uses standard:
   - docReform markup syntax (based on SiSU markup)
     - standard SiSU markup syntax with modified headers and minor
@@ -1007,7 +1025,7 @@ webserv:
   [https://www.sisudoc.org]
 #+END_SRC
 
-#+BEGIN_SRC txt
+#+BEGIN_SRC text
   - Homepages:
     [https://www.sisudoc.org]
     [https://www.sisudoc.org]
@@ -1019,7 +1037,7 @@ webserv:
 *** markup_samples
 
 #+NAME: sisudoc_spine_markup_samples
-#+BEGIN_SRC txt
+#+BEGIN_SRC text
 - Spine, Doc Reform (SiSU) markup samples
   Individual document content Copyright (Author) [as stated in document header]
   Individual document content License (Author) [as stated in document header]
@@ -1028,7 +1046,7 @@ webserv:
 *** dependencies
 
 #+NAME: sisudoc_spine_dependencies
-#+BEGIN_SRC txt
+#+BEGIN_SRC text
 - Dependencies [check dub.json or dub.sdl]
 
   - Name: d2sqlite3
-- 
cgit v1.2.3