diff --git a/nixos/doc/manual/default.nix b/nixos/doc/manual/default.nix index 782275b382cd..cc28fe6d16ca 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 + ${prepareManualFromMD} - 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 - ''} + # 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 4ba8a9d95b36..26819597a1f9 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 b4f72b8a3fdc..4be83fcb827b 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: