| 16 Mar 2024 |
infinisil | And arbitrary long can be really long, like decades lol | 04:31:19 |
kait | i am starting to see that. though, i do not mind pitching in where i can :) | 04:31:55 |
danielsidhion | That PR won't get the manuals to exactly like they were before, but I'd say it gets ~95% of the way there, which is enough to give us time to resume improving the content and keep researching options to find where we want to be in the long term | 04:32:50 |
ryantm | The need for a fast and very low dependency tool for building the NixOS manual during builds was the original motivation behind mmdoc. | 04:40:21 |
infinisil | ryantm: Can you compare the numbers between nrd and mmdoc? | 04:41:28 |
infinisil | I don't think nrd is heavy on dependencies, and it seems really fast too | 04:41:52 |
ryantm | Does someone have nrd building NixOS or Nixpkgs? | 04:42:24 |
ryantm | NixOS or Nixpkgs manuals* | 04:43:10 |
danielsidhion | nrd is the tool that builds them by default right now | 04:43:21 |
danielsidhion | (we shorten it to nrd to avoid writing nixos-render-docs) | 04:43:42 |
ryantm | Oh okay. I wasn't aware of the acronym. | 04:44:14 |
ryantm | It probably won't be a fair comparison since my mmdoc thing isn't doing anything with the options currently. | 04:45:53 |
ryantm | [ryantm@replit1:~/p/nixpkgs]$ /run/current-system/sw/bin/time nix build --rebuild .#nixpkgs-manual-mmdoc
error: derivation '/nix/store/7fgbi0ril4y59cmfdsnsiv68v044l1h4-nixpkgs-minimal-manual.drv' may not be deterministic: output '/nix/store/zyax\
mgz2lknn4jgd9600g0j9bdxfyjh6-nixpkgs-minimal-manual' differs
Command exited with non-zero status 1
0.06user 0.18system 0:02.05elapsed 12%CPU (0avgtext+0avgdata 25868maxresident)k
0inputs+0outputs (0major+6371minor)pagefaults 0swaps
[ryantm@replit1:~/p/nixpkgs]$ /run/current-system/sw/bin/time nix build --rebuild .#nixos-manual-mmdoc
error: derivation '/nix/store/8288zinh5j2v1w920ra7p5yw5dbp72pl-nixos-minimal-manual.drv' may not be deterministic: output '/nix/store/z2mllr\
8w9wrppxhz8vn87sw1qd3vmb43-nixos-minimal-manual' differs
Command exited with non-zero status 1
0.06user 0.19system 0:01.17elapsed 21%CPU (0avgtext+0avgdata 25840maxresident)k
0inputs+0outputs (0major+6369minor)pagefaults 0swaps
| 04:50:50 |
ryantm | closures of inputDerivations https://gist.github.com/ryantm/e7fde94d7f0aeb7ebd334015b310b659 | 04:53:53 |
ryantm | I don't really know how to run nixos-render-docs will try to learn though. | 04:57:53 |
ryantm | Found the docs on it in the manual :) | 04:59:49 |
ryantm | After building and adding one newline to manual.md
[ryantm@replit1:~/p/nixpkgs]$ /run/current-system/sw/bin/time nix-build nixos/release.nix -A manual.x86_64-linux
these 3 derivations will be built:
/nix/store/rdr3b9kqd5qd9rzxqiid68i3znilg95r-lazy-options.json.drv
/nix/store/s2zkfllzrn4c5610irds9305jwhkn8v9-options.json.drv
/nix/store/3cjzvv9gfiwvy91gx1awm06771jcbd02-nixos-manual-html.drv
building '/nix/store/rdr3b9kqd5qd9rzxqiid68i3znilg95r-lazy-options.json.drv'...
building '/nix/store/s2zkfllzrn4c5610irds9305jwhkn8v9-options.json.drv'...
building '/nix/store/3cjzvv9gfiwvy91gx1awm06771jcbd02-nixos-manual-html.drv'...
substituteStream(): WARNING: '--replace' is deprecated, use --replace-{fail,warn,quiet}. (file './manual.md')
/nix/store/jpq9yb4lq14war2r2dq8ymigwa6pgdly-nixos-manual-html
1.56user 0.40system 0:08.52elapsed 23%CPU (0avgtext+0avgdata 444068maxresident)k
8inputs+0outputs (0major+107428minor)pagefaults 0swaps
| 05:01:09 |
ryantm | Looks like manual.x86_64-linux does not support the inputDerivation passthru param. | 05:04:07 |
ryantm | * Looks like manual.x86_64-linux does not support the inputDerivation passthru attribute. | 05:04:30 |
infinisil | In reply to @ryantm:matrix.org
After building and adding one newline to manual.md
[ryantm@replit1:~/p/nixpkgs]$ /run/current-system/sw/bin/time nix-build nixos/release.nix -A manual.x86_64-linux
these 3 derivations will be built:
/nix/store/rdr3b9kqd5qd9rzxqiid68i3znilg95r-lazy-options.json.drv
/nix/store/s2zkfllzrn4c5610irds9305jwhkn8v9-options.json.drv
/nix/store/3cjzvv9gfiwvy91gx1awm06771jcbd02-nixos-manual-html.drv
building '/nix/store/rdr3b9kqd5qd9rzxqiid68i3znilg95r-lazy-options.json.drv'...
building '/nix/store/s2zkfllzrn4c5610irds9305jwhkn8v9-options.json.drv'...
building '/nix/store/3cjzvv9gfiwvy91gx1awm06771jcbd02-nixos-manual-html.drv'...
substituteStream(): WARNING: '--replace' is deprecated, use --replace-{fail,warn,quiet}. (file './manual.md')
/nix/store/jpq9yb4lq14war2r2dq8ymigwa6pgdly-nixos-manual-html
1.56user 0.40system 0:08.52elapsed 23%CPU (0avgtext+0avgdata 444068maxresident)k
8inputs+0outputs (0major+107428minor)pagefaults 0swaps
You can just run a --rebuild or --check. The lazy options thing isn't relevant for nrd | 05:04:37 |
infinisil | (and it shouldn't be rebuilt anyways, seems like a bug) | 05:04:53 |
ryantm | [ryantm@replit1:~/p/nixpkgs]$ /run/current-system/sw/bin/time nix-build --check nixos/release.nix -A manual.x86_64-linux
checking outputs of '/nix/store/3cjzvv9gfiwvy91gx1awm06771jcbd02-nixos-manual-html.drv'...
substituteStream(): WARNING: '--replace' is deprecated, use --replace-{fail,warn,quiet}. (file './manual.md')
/nix/store/jpq9yb4lq14war2r2dq8ymigwa6pgdly-nixos-manual-html
1.53user 0.39system 0:04.59elapsed 42%CPU (0avgtext+0avgdata 443704maxresident)k
0inputs+0outputs (0major+107424minor)pagefaults 0swaps
| 05:06:27 |
infinisil | This works: nix-build nixos --arg configuration '{}' -A config.system.build.manual.manualHTML.inputDerivation | 05:06:38 |
ryantm | Added nrd input closure to the gist too | 05:09:57 |
infinisil | ryantm: Oh and nix-build pkgs/top-level/release.nix -A manual is for the Nixpkgs manual | 05:12:08 |
ryantm | That one would be a more fair comparison since I render the entire nixpkgs manual (also with a search index) | 05:13:21 |
ryantm | [ryantm@replit1:~/p/nixpkgs]$ /run/current-system/sw/bin/time nix-build --check pkgs/top-level/release.nix -A manual
trace: warning: lib.zipWithNames is a deprecated alias of lib.zipAttrsWithNames.
checking outputs of '/nix/store/3jsvqqgpj2qfbkj2y82w4ac4nnf2g5px-nixpkgs-manual.drv'...
Running phase: unpackPhase
unpacking source archive /nix/store/sn18ydylvr7jsxbhj2yndh9y2s3z55mv-doc
source root is doc
Running phase: patchPhase
Running phase: updateAutotoolsGnuConfigScriptsPhase
Running phase: configurePhase
no configure script, doing nothing
Running phase: buildPhase
substituteStream(): WARNING: '--replace' is deprecated, use --replace-{fail,warn,quiet}. (file './manual.md.in')
Running phase: installPhase
Running phase: fixupPhase
shrinking RPATHs of ELF executables and libraries in /nix/store/m94bxwbilm1hh0dzk53qs7zvdr1vwsps-nixpkgs-manual
checking for references to /build/ in /nix/store/m94bxwbilm1hh0dzk53qs7zvdr1vwsps-nixpkgs-manual...
patching script interpreter paths in /nix/store/m94bxwbilm1hh0dzk53qs7zvdr1vwsps-nixpkgs-manual
/nix/store/m94bxwbilm1hh0dzk53qs7zvdr1vwsps-nixpkgs-manual
0.60user 0.18system 0:02.19elapsed 36%CPU (0avgtext+0avgdata 174568maxresident)k
0inputs+0outputs (0major+39903minor)pagefaults 0swaps
| 05:14:26 |
ryantm | Very similar times! | 05:15:03 |
ryantm | Good on you making it that fast with Python :) | 05:16:48 |
ryantm | Looks like it builds an epub and a single page manual. mmdoc is building a multipage, singlepage, man, epub, and search index, but yeah, maybe pretty close overall speed wise. | 05:18:04 |