Which nixpkgs commits are cached?

I’m trying to bisect nixpkgs to produce additional info for this issue:

$ nix run .#build -- "$CONTENT_ROOT"
[…]
            Source: /builds/engmark/engmark.gitlab.io
       Destination: ./public
 Incremental build: disabled. Enable with --incremental
      Generating... 
jekyll 3.10.0 | Error:  wrong number of arguments (given 0, expected 1)
/nix/store/9vi1fwp6b4434snnlpj86vc888i9z7j0-ruby3.3-mini_magick-5.3.1/lib/ruby/gems/3.3.0/gems/mini_magick-5.3.1/lib/mini_magick/tool.rb:30:in `new': wrong number of arguments (given 0, expected 1) (ArgumentError)
	from /nix/store/psjzg7bfis3bv1858c36al2h5x5srfqp-ruby3.3-jekyll-favicon-0.2.9/lib/ruby/gems/3.3.0/gems/jekyll-favicon-0.2.9/lib/image.rb:4:in `convert'
	from /nix/store/psjzg7bfis3bv1858c36al2h5x5srfqp-ruby3.3-jekyll-favicon-0.2.9/lib/ruby/gems/3.3.0/gems/jekyll-favicon-0.2.9/lib/jekyll/favicon/generator.rb:42:in `favicon_tempfile'
	from /nix/store/psjzg7bfis3bv1858c36al2h5x5srfqp-ruby3.3-jekyll-favicon-0.2.9/lib/ruby/gems/3.3.0/gems/jekyll-favicon-0.2.9/lib/jekyll/favicon/generator.rb:12:in `generate'
	from /nix/store/83yhh0k7gqab8m1csb2x6g1jig47qag2-ruby3.3-jekyll-3.10.0/lib/ruby/gems/3.3.0/gems/jekyll-3.10.0/lib/jekyll/site.rb:175:in `block in generate'
	from /nix/store/83yhh0k7gqab8m1csb2x6g1jig47qag2-ruby3.3-jekyll-3.10.0/lib/ruby/gems/3.3.0/gems/jekyll-3.10.0/lib/jekyll/site.rb:173:in `each'
	from /nix/store/83yhh0k7gqab8m1csb2x6g1jig47qag2-ruby3.3-jekyll-3.10.0/lib/ruby/gems/3.3.0/gems/jekyll-3.10.0/lib/jekyll/site.rb:173:in `generate'
	from /nix/store/83yhh0k7gqab8m1csb2x6g1jig47qag2-ruby3.3-jekyll-3.10.0/lib/ruby/gems/3.3.0/gems/jekyll-3.10.0/lib/jekyll/site.rb:70:in `process'
	from /nix/store/83yhh0k7gqab8m1csb2x6g1jig47qag2-ruby3.3-jekyll-3.10.0/lib/ruby/gems/3.3.0/gems/jekyll-3.10.0/lib/jekyll/command.rb:28:in `process_site'
	from /nix/store/83yhh0k7gqab8m1csb2x6g1jig47qag2-ruby3.3-jekyll-3.10.0/lib/ruby/gems/3.3.0/gems/jekyll-3.10.0/lib/jekyll/commands/build.rb:65:in `build'
	from /nix/store/83yhh0k7gqab8m1csb2x6g1jig47qag2-ruby3.3-jekyll-3.10.0/lib/ruby/gems/3.3.0/gems/jekyll-3.10.0/lib/jekyll/commands/build.rb:36:in `process'
	from /nix/store/83yhh0k7gqab8m1csb2x6g1jig47qag2-ruby3.3-jekyll-3.10.0/lib/ruby/gems/3.3.0/gems/jekyll-3.10.0/lib/jekyll/commands/build.rb:18:in `block (2 levels) in init_with_program'
	from /nix/store/k7yfyw7xibhbqhr8rg4gffpk0mnpz3fi-ruby3.3-mercenary-0.3.6/lib/ruby/gems/3.3.0/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `block in execute'
	from /nix/store/k7yfyw7xibhbqhr8rg4gffpk0mnpz3fi-ruby3.3-mercenary-0.3.6/lib/ruby/gems/3.3.0/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `each'
	from /nix/store/k7yfyw7xibhbqhr8rg4gffpk0mnpz3fi-ruby3.3-mercenary-0.3.6/lib/ruby/gems/3.3.0/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `execute'
	from /nix/store/k7yfyw7xibhbqhr8rg4gffpk0mnpz3fi-ruby3.3-mercenary-0.3.6/lib/ruby/gems/3.3.0/gems/mercenary-0.3.6/lib/mercenary/program.rb:42:in `go'
	from /nix/store/k7yfyw7xibhbqhr8rg4gffpk0mnpz3fi-ruby3.3-mercenary-0.3.6/lib/ruby/gems/3.3.0/gems/mercenary-0.3.6/lib/mercenary.rb:19:in `program'
	from /nix/store/7rr0q5gwhsnrhml5wsfbk7lspmx5wvsb-ruby-gems/lib/ruby/gems/3.3.0/gems/jekyll-3.10.0/exe/jekyll:15:in `<top (required)>'
	from /nix/store/7rr0q5gwhsnrhml5wsfbk7lspmx5wvsb-ruby-gems/bin/jekyll:18:in `load'
	from /nix/store/7rr0q5gwhsnrhml5wsfbk7lspmx5wvsb-ruby-gems/bin/jekyll:18:in `<main>'

But it looks like it’s going to take an absolutely monstrous amount of time. Is there some way to get a list of the commits on the nixpkgs master branch which have been built and cached, so that I can bisect that list instead?

GitHub - timokau/nix-bisect: Bisect nix builds. Status: alpha/proof of concept. You'll probably have to dig into the implementation if you want to use it. Built for personal use, lightly maintained. PRs welcome. Issues welcome, but I make no promises regarding responses or fix exists, but I never got it working, I just suffer the build.

Also this link 404s

1 Like

You should be able to scrape hydra’s eval for it. For example at Making sure you're not a bot! if you click on any evaluation id you can use input tab to see what commit was used to build it. For example:

You can use json API to get it in easily parsable form. maintainers/scripts/bootstrap-files/refresh-tarballs.bash uses this hack to find latest bootstrap tarballs for example: nixpkgs/maintainers/scripts/bootstrap-files/refresh-tarballs.bash at ef975de5ac44726dfd4b078658ad044f73c5e338 · NixOS/nixpkgs · GitHub

Oh! I forgot, there’s a neat tool for just that:

With no args it lists the commits evaled, and their statuses. You can choose the channel, jobset, arch, etc. and --json if you need it.

5 Likes

you can also have a look at the combination of GitHub - blitz/hydrasect: The tool that makes bisecting nixpkgs pleasant. and GitHub - symphorien/nixpkgs-staging-bisecter: minimize rebuilds when bisecting through mass rebuilds

1 Like