!djTaTBQyWEPRQxrPTb:nixos.org

Nixpkgs Architecture

216 Members
Discussions about Nixpkgs' architecture - https://github.com/NixOS/nixpkgs/labels/architecture47 Servers

Load older messages


SenderMessageTime
11 Oct 2023
@infinisil:matrix.orginfinisilIt might though, lazy attribute sets allows fancy things16:09:17
@infinisil:matrix.orginfinisilAnyway, my opinion on the originally stated problem is that support for package sets should be improved generally, and inheriting such attributes into the top-level set shouldn't be done16:10:06
@piegames:matrix.org@piegames:matrix.org

I think it would be feasible with the hack Jade mentioned, of evaluating once with dummy values first:

// (
 let mySet = callPackage myPath; in
 mapAttrs (name: _: mySet.${name}) callPackageDummy myPath
)

This works as long as the package set function's keys do not depend on its inputs, and no inputs are otherwise forced to generate the output keys (so, no assertions at the top for example)

16:24:26
@piegames:matrix.org@piegames:matrix.org *

I think it would be feasible with the hack Jade mentioned, of evaluating once with dummy values first:

// (
 let mySet = callPackage myPath; in
 mapAttrs (name: _: mySet.${name}) (callPackageDummy myPath)
)

This works as long as the package set function's keys do not depend on its inputs, and no inputs are otherwise forced to generate the output keys (so, no assertions at the top for example)

16:24:39
* @infinisil:matrix.orginfinisil would rather not 😅19:38:01
@piegames:matrix.org@piegames:matrix.orgb-but19:38:56
@piegames:matrix.org@piegames:matrix.orgThis is so great19:39:01
@piegames:matrix.org@piegames:matrix.org (Actually I unironically don't find it that bad, or at least not significantly worse than having to manually track attributes in all-packages.nix) 19:39:40
@infinisil:matrix.orginfinisilI'd rather fix the core issue than swap out hacks for other hacks19:44:37
@roberthensing:matrix.orgRobert Hensing (roberth)What's nice about the inherit is that the evaluator doesn't need to open and parse any extra files to figure out the attribute names21:11:25
@roberthensing:matrix.orgRobert Hensing (roberth)probably no big deal for one file, but could be bad if it becomes a widespread pattern, particularly because there'd be no incentive to keep the file small21:12:15
@roberthensing:matrix.orgRobert Hensing (roberth) * probably no big deal for one file, but could be bad if it becomes a widespread pattern, particularly because there'd be no incentive to keep those files small21:12:26
12 Oct 2023
@infinisil:matrix.orginfinisilhttps://github.com/NixOS/nixpkgs/pull/256792 is now ready to review, this is the next step towards migrating all packages00:31:45
13 Oct 2023
@infinisil:matrix.orginfinisilThis is slowly breaking my brain, but I think I know what to do now.. https://github.com/NixOS/nixpkgs/issues/256788#issuecomment-176061098201:07:17
@roberthensing:matrix.orgRobert Hensing (roberth) is it using pull_request_target? If not, maybe that helps? 13:48:02
@roberthensing:matrix.orgRobert Hensing (roberth)it runs in the context of the base13:48:12
@roberthensing:matrix.orgRobert Hensing (roberth)I would assume they mean the tip of the base branch, but maybe that's exactly what you're running into13:48:38
@infinisil:matrix.orginfinisil Robert Hensing (roberth): It does use pull_request_target, but restarting the job doesn't seem to affect the workflow file used, even if the base branch changed it 14:51:21
@infinisil:matrix.orginfinisilHere's my test: https://github.com/tweag/nixpkgs/pull/74 This PR was done against a base branch that had a working check at first, but then I committed a change to break it: https://github.com/tweag/nixpkgs/commit/4276e597262ddfcf5dce1c4050a2ca999e950a4514:52:35
@infinisil:matrix.orginfinisilBut retriggering the check from https://github.com/tweag/nixpkgs/actions/runs/6500830578/job/17657034351?pr=74 doesn't cause it to fail still14:53:03
@infinisil:matrix.orginfinisil

But it did use an updated base branch, just due to how it fetches the merge ref, which github always updates automatically:

  • Before base update: https://github.com/tweag/nixpkgs/actions/runs/6500830578/attempts/1?pr=74#summary-17657001189
  • After base update: https://github.com/tweag/nixpkgs/actions/runs/6500830578?pr=74#summary-17657034351

(note how the stated base branch commit changed)

14:55:13
@roberthensing:matrix.orgRobert Hensing (roberth)unfortunate :/15:59:33
@infinisil:matrix.orginfinisil Hmm but even then it's not perfect, PR's before the introduction of the pkgs/by-name check wouldn't be failing :/ 16:42:26
@infinisil:matrix.orginfinisilAlternative is to somehow force all PR's to be rebased16:42:57
@infinisil:matrix.orginfinisilOr even automatically rebase? No that would mess with GPG signatures16:43:36
@infinisil:matrix.orginfinisilMerging master automatically into each PR? No that would be a super messy history16:43:50
@infinisil:matrix.orginfinisilMaybe it's possible to just kind of associate a new failing check run with PR's that should be rebased16:44:47
@infinisil:matrix.orginfinisilLet me try experimenting with that16:45:18
@infinisil:matrix.orginfinisilAha! This looks pretty good https://docs.github.com/en/rest/commits/statuses?apiVersion=2022-11-2816:49:02
@infinisil:matrix.orginfinisilThis is such a general problem, I'm amazed it isn't solved yet.. Well, there is a solution, it's merge queues16:51:22

Show newer messages


Back to Room ListRoom Version: 9