Commit 54f4992e authored by pennae's avatar pennae
Browse files

nixos/manual: render html with nixos-render-doc if !allowDocBook

this reproduces the docbook-generated html manual exactly enough to
appease the compare workflows while we still support both toolchains.
it's also a lot faster than the docbook toolchain, rendering the entire
html manual in about two seconds on this machine (while docbook needs
about 20).
parent 36f04733
Loading
Loading
Loading
Loading
+61 −29
Original line number Diff line number Diff line
@@ -135,12 +135,7 @@ let
    }
  '';

  manual-combined = runCommand "nixos-manual-combined"
    { inputs = lib.sourceFilesBySuffices ./. [ ".xml" ".md" ];
      nativeBuildInputs = [ pkgs.nixos-render-docs pkgs.libxml2.bin pkgs.libxslt.bin ];
      meta.description = "The NixOS manual as plain docbook XML";
    }
    ''
  prepareManualFromMD = ''
    cp -r --no-preserve=all $inputs/* .

    substituteInPlace ./manual.md \
@@ -157,6 +152,15 @@ let
      --replace \
        '@NIXOS_TEST_OPTIONS_JSON@' \
        ${testOptionsDoc.optionsJSON}/share/doc/nixos/options.json
  '';

  manual-combined = runCommand "nixos-manual-combined"
    { inputs = lib.sourceFilesBySuffices ./. [ ".xml" ".md" ];
      nativeBuildInputs = [ pkgs.nixos-render-docs pkgs.libxml2.bin pkgs.libxslt.bin ];
      meta.description = "The NixOS manual as plain docbook XML";
    }
    ''
      ${prepareManualFromMD}

      nixos-render-docs -j $NIX_BUILD_CORES manual docbook \
        --manpage-urls ${manpageUrls} \
@@ -193,7 +197,14 @@ in rec {

  # Generate the NixOS manual.
  manualHTML = runCommand "nixos-manual-html"
    { nativeBuildInputs = [ buildPackages.libxml2.bin buildPackages.libxslt.bin ];
    { nativeBuildInputs =
        if allowDocBook then [
          buildPackages.libxml2.bin
          buildPackages.libxslt.bin
        ] else [
          buildPackages.nixos-render-docs
        ];
      inputs = lib.optionals (! allowDocBook) (lib.sourceFilesBySuffices ./. [ ".md" ]);
      meta.description = "The NixOS manual in HTML format";
      allowedReferences = ["out"];
    }
@@ -201,6 +212,12 @@ in rec {
      # Generate the HTML manual.
      dst=$out/share/doc/nixos
      mkdir -p $dst

      cp ${../../../doc/style.css} $dst/style.css
      cp ${../../../doc/overrides.css} $dst/overrides.css
      cp -r ${pkgs.documentation-highlighter} $dst/highlightjs

      ${if allowDocBook then ''
          xsltproc \
            ${manualXsltprocOptions} \
            --stringparam id.warnings "1" \
@@ -213,10 +230,25 @@ in rec {

          mkdir -p $dst/images/callouts
          cp ${docbook_xsl_ns}/xml/xsl/docbook/images/callouts/*.svg $dst/images/callouts/
        '' else ''
          ${prepareManualFromMD}

      cp ${../../../doc/style.css} $dst/style.css
      cp ${../../../doc/overrides.css} $dst/overrides.css
      cp -r ${pkgs.documentation-highlighter} $dst/highlightjs
          # 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
+4 −1
Original line number Diff line number Diff line
@@ -47,7 +47,10 @@ development/development.md
contributing-to-this-manual.chapter.md
```

```{=include=} appendix
```{=include=} appendix html:into-file=//options.html
nixos-options.md
```

```{=include=} appendix html:into-file=//release-notes.html
release-notes/release-notes.md
```