summary refs log tree commit diff
path: root/nixos
diff options
context:
space:
mode:
authorpennae <github@quasiparticle.net>2023-06-11 20:36:29 +0200
committerpennae <github@quasiparticle.net>2023-06-13 16:56:31 +0200
commit20152b4269356ab04cab7b3c7b0df3fea3455637 (patch)
treeea49ff1405604dfac1541a8baccad5fbd9fe909a /nixos
parent1418c986b00d2386baac359ee80e004fdba5083c (diff)
downloadnixpkgs-20152b4269356ab04cab7b3c7b0df3fea3455637.tar
nixpkgs-20152b4269356ab04cab7b3c7b0df3fea3455637.tar.gz
nixpkgs-20152b4269356ab04cab7b3c7b0df3fea3455637.tar.bz2
nixpkgs-20152b4269356ab04cab7b3c7b0df3fea3455637.tar.lz
nixpkgs-20152b4269356ab04cab7b3c7b0df3fea3455637.tar.xz
nixpkgs-20152b4269356ab04cab7b3c7b0df3fea3455637.tar.zst
nixpkgs-20152b4269356ab04cab7b3c7b0df3fea3455637.zip
nixos/doc: remove docbook options compatibility
no longer needed or useful, and may even produce false positives now
that markdown is the default language for option docs.
Diffstat (limited to 'nixos')
-rw-r--r--nixos/doc/manual/default.nix86
-rw-r--r--nixos/lib/make-options-doc/default.nix1
-rw-r--r--nixos/lib/make-options-doc/mergeJSON.py60
3 files changed, 24 insertions, 123 deletions
diff --git a/nixos/doc/manual/default.nix b/nixos/doc/manual/default.nix
index 782275b382c..cc28fe6d16c 100644
--- a/nixos/doc/manual/default.nix
+++ b/nixos/doc/manual/default.nix
@@ -202,14 +202,8 @@ in rec {
 
   # Generate the NixOS manual.
   manualHTML = runCommand "nixos-manual-html"
-    { nativeBuildInputs =
-        if allowDocBook then [
-          buildPackages.libxml2.bin
-          buildPackages.libxslt.bin
-        ] else [
-          buildPackages.nixos-render-docs
-        ];
-      inputs = lib.optionals (! allowDocBook) (lib.sourceFilesBySuffices ./. [ ".md" ]);
+    { nativeBuildInputs = [ buildPackages.nixos-render-docs ];
+      inputs = lib.sourceFilesBySuffices ./. [ ".md" ];
       meta.description = "The NixOS manual in HTML format";
       allowedReferences = ["out"];
     }
@@ -222,38 +216,23 @@ in rec {
       cp ${../../../doc/overrides.css} $dst/overrides.css
       cp -r ${pkgs.documentation-highlighter} $dst/highlightjs
 
-      ${if allowDocBook then ''
-          xsltproc \
-            ${manualXsltprocOptions} \
-            --stringparam id.warnings "1" \
-            --nonet --output $dst/ \
-            ${docbook_xsl_ns}/xml/xsl/docbook/xhtml/chunktoc.xsl \
-            ${manual-combined}/manual-combined.xml \
-            |& tee xsltproc.out
-          grep "^ID recommended on" xsltproc.out &>/dev/null && echo "error: some IDs are missing" && false
-          rm xsltproc.out
-
-          mkdir -p $dst/images/callouts
-          cp ${docbook_xsl_ns}/xml/xsl/docbook/images/callouts/*.svg $dst/images/callouts/
-        '' else ''
-          ${prepareManualFromMD}
-
-          # TODO generator is set like this because the docbook/md manual compare workflow will
-          # trigger if it's different
-          nixos-render-docs -j $NIX_BUILD_CORES manual html \
-            --manpage-urls ${manpageUrls} \
-            --revision ${lib.escapeShellArg revision} \
-            --generator "DocBook XSL Stylesheets V${docbook_xsl_ns.version}" \
-            --stylesheet style.css \
-            --stylesheet overrides.css \
-            --stylesheet highlightjs/mono-blue.css \
-            --script ./highlightjs/highlight.pack.js \
-            --script ./highlightjs/loader.js \
-            --toc-depth 1 \
-            --chunk-toc-depth 1 \
-            ./manual.md \
-            $dst/index.html
-        ''}
+      ${prepareManualFromMD}
+
+      # TODO generator is set like this because the docbook/md manual compare workflow will
+      # trigger if it's different
+      nixos-render-docs -j $NIX_BUILD_CORES manual html \
+        --manpage-urls ${manpageUrls} \
+        --revision ${lib.escapeShellArg revision} \
+        --generator "DocBook XSL Stylesheets V${docbook_xsl_ns.version}" \
+        --stylesheet style.css \
+        --stylesheet overrides.css \
+        --stylesheet highlightjs/mono-blue.css \
+        --script ./highlightjs/highlight.pack.js \
+        --script ./highlightjs/loader.js \
+        --toc-depth 1 \
+        --chunk-toc-depth 1 \
+        ./manual.md \
+        $dst/index.html
 
       mkdir -p $out/nix-support
       echo "nix-build out $out" >> $out/nix-support/hydra-build-products
@@ -319,10 +298,6 @@ in rec {
   manpages = runCommand "nixos-manpages"
     { nativeBuildInputs = [
         buildPackages.installShellFiles
-      ] ++ lib.optionals allowDocBook [
-        buildPackages.libxml2.bin
-        buildPackages.libxslt.bin
-      ] ++ lib.optionals (! allowDocBook) [
         buildPackages.nixos-render-docs
       ];
       allowedReferences = ["out"];
@@ -331,24 +306,11 @@ in rec {
       # Generate manpages.
       mkdir -p $out/share/man/man8
       installManPage ${./manpages}/*
-      ${if allowDocBook
-        then ''
-          xsltproc --nonet \
-            --maxdepth 6000 \
-            --param man.output.in.separate.dir 1 \
-            --param man.output.base.dir "'$out/share/man/'" \
-            --param man.endnotes.are.numbered 0 \
-            --param man.break.after.slash 1 \
-            ${docbook_xsl_ns}/xml/xsl/docbook/manpages/docbook.xsl \
-            ${manpages-combined}
-        ''
-        else ''
-          mkdir -p $out/share/man/man5
-          nixos-render-docs -j $NIX_BUILD_CORES options manpage \
-            --revision ${lib.escapeShellArg revision} \
-            ${optionsJSON}/share/doc/nixos/options.json \
-            $out/share/man/man5/configuration.nix.5
-        ''}
+      mkdir -p $out/share/man/man5
+      nixos-render-docs -j $NIX_BUILD_CORES options manpage \
+        --revision ${lib.escapeShellArg revision} \
+        ${optionsJSON}/share/doc/nixos/options.json \
+        $out/share/man/man5/configuration.nix.5
     '';
 
 }
diff --git a/nixos/lib/make-options-doc/default.nix b/nixos/lib/make-options-doc/default.nix
index 4ba8a9d95b3..26819597a1f 100644
--- a/nixos/lib/make-options-doc/default.nix
+++ b/nixos/lib/make-options-doc/default.nix
@@ -139,7 +139,6 @@ in rec {
       TOUCH_IF_DB=$dst/.used-docbook \
       python ${./mergeJSON.py} \
         ${lib.optionalString warningsAreErrors "--warnings-are-errors"} \
-        ${if allowDocBook then "--warn-on-docbook" else "--error-on-docbook"} \
         $baseJSON $options \
         > $dst/options.json
 
diff --git a/nixos/lib/make-options-doc/mergeJSON.py b/nixos/lib/make-options-doc/mergeJSON.py
index b4f72b8a3fd..4be83fcb827 100644
--- a/nixos/lib/make-options-doc/mergeJSON.py
+++ b/nixos/lib/make-options-doc/mergeJSON.py
@@ -43,19 +43,11 @@ def unpivot(options: Dict[Key, Option]) -> Dict[str, JSON]:
     return result
 
 warningsAreErrors = False
-warnOnDocbook = False
-errorOnDocbook = False
 optOffset = 0
 for arg in sys.argv[1:]:
     if arg == "--warnings-are-errors":
         optOffset += 1
         warningsAreErrors = True
-    if arg == "--warn-on-docbook":
-        optOffset += 1
-        warnOnDocbook = True
-    elif arg == "--error-on-docbook":
-        optOffset += 1
-        errorOnDocbook = True
 
 options = pivot(json.load(open(sys.argv[1 + optOffset], 'r')))
 overrides = pivot(json.load(open(sys.argv[2 + optOffset], 'r')))
@@ -84,38 +76,10 @@ for (k, v) in overrides.items():
 
 severity = "error" if warningsAreErrors else "warning"
 
-def is_docbook(o, key):
-    val = o.get(key, {})
-    if not isinstance(val, dict):
-        return False
-    return val.get('_type', '') == 'literalDocBook'
-
 # check that every option has a description
 hasWarnings = False
 hasErrors = False
-hasDocBook = False
 for (k, v) in options.items():
-    if warnOnDocbook or errorOnDocbook:
-        kind = "error" if errorOnDocbook else "warning"
-        if isinstance(v.value.get('description', {}), str):
-            hasErrors |= errorOnDocbook
-            hasDocBook = True
-            print(
-                f"\x1b[1;31m{kind}: option {v.name} description uses DocBook\x1b[0m",
-                file=sys.stderr)
-        elif is_docbook(v.value, 'defaultText'):
-            hasErrors |= errorOnDocbook
-            hasDocBook = True
-            print(
-                f"\x1b[1;31m{kind}: option {v.name} default uses DocBook\x1b[0m",
-                file=sys.stderr)
-        elif is_docbook(v.value, 'example'):
-            hasErrors |= errorOnDocbook
-            hasDocBook = True
-            print(
-                f"\x1b[1;31m{kind}: option {v.name} example uses DocBook\x1b[0m",
-                file=sys.stderr)
-
     if v.value.get('description', None) is None:
         hasWarnings = True
         print(f"\x1b[1;31m{severity}: option {v.name} has no description\x1b[0m", file=sys.stderr)
@@ -126,30 +90,6 @@ for (k, v) in options.items():
             f"\x1b[1;31m{severity}: option {v.name} has no type. Please specify a valid type, see " +
             "https://nixos.org/manual/nixos/stable/index.html#sec-option-types\x1b[0m", file=sys.stderr)
 
-if hasDocBook:
-    (why, what) = (
-        ("disallowed for in-tree modules", "contribution") if errorOnDocbook
-        else ("deprecated for option documentation", "module")
-    )
-    print("Explanation: The documentation contains descriptions, examples, or defaults written in DocBook. " +
-        "NixOS is in the process of migrating from DocBook to Markdown, and " +
-        f"DocBook is {why}. To change your {what} to "+
-        "use Markdown, apply mdDoc and literalMD and use the *MD variants of option creation " +
-        "functions where they are available. For example:\n" +
-        "\n" +
-        "  example.foo = mkOption {\n" +
-        "    description = lib.mdDoc ''your description'';\n" +
-        "    defaultText = lib.literalMD ''your description of default'';\n" +
-        "  };\n" +
-        "\n" +
-        "  example.enable = mkEnableOption (lib.mdDoc ''your thing'');\n" +
-        "  example.package = mkPackageOptionMD pkgs \"your-package\" {};\n" +
-        "  imports = [ (mkAliasOptionModuleMD [ \"example\" \"args\" ] [ \"example\" \"settings\" ]) ];",
-        file = sys.stderr)
-    with open(os.getenv('TOUCH_IF_DB'), 'x'):
-        # just make sure it exists
-        pass
-
 if hasErrors:
     sys.exit(1)
 if hasWarnings and warningsAreErrors: