diff --git a/.wolf/buglog.json b/.wolf/buglog.json index af11ac77..ae4667dd 100644 --- a/.wolf/buglog.json +++ b/.wolf/buglog.json @@ -17774,6 +17774,27 @@ ], "occurrences": 1, "last_seen": "2026-08-20T08:30:00Z" + }, + { + "id": "bug-1603", + "timestamp": "2026-08-20T09:20:00Z", + "error_message": "build-time-versioning task 2.2 REJECTED by reviewer: `nix build .#xcecore_debug` (no flags, the exact documented/task-Observable command) failed at evaluation with `error: attribute 'currentTime' missing`; also the raw epoch-seconds string didn't satisfy Requirement 1.2's absolute-UTC-form requirement.", + "file": "src/flake.nix, src/nixSupport/default.nix, src/nixSupport/xce.nix, src/nixSupport/xcecli.nix", + "root_cause": "First attempt computed myBuildTime = builtins.toString builtins.currentTime at flake-evaluation time (src/flake.nix), threaded through nixSupport/default.nix into xce.nix/xcecli.nix's mesonFlags. builtins.currentTime is stripped entirely under a flake's default pure evaluation (not just fixed to a dummy value -- the attribute itself is removed from `builtins`), so any nix build/eval that forces it fails unless --impure is passed. This also produced a raw epoch-seconds string, not an ISO-8601 UTC string like xce-build.sh's (task 2.1) `date -u +%Y-%m-%dT%H:%M:%SZ` output.", + "fix": "Moved the build-time computation OUT of Nix expression evaluation and INTO each derivation's build phase. xce.nix and xcecli.nix each gained a `preConfigure` hook that runs `date -u +%Y-%m-%dT%H:%M:%SZ` (stdenv's bundled coreutils, always available in the build sandbox, unaffected by pure-eval, no --impure/git/network needed) and appends `-Dbuild_time=$buildTime` to `mesonFlagsArray` (verified against the real nixpkgs meson setup-hook.sh: mesonConfigurePhase runs `runHook preConfigure` BEFORE it reads mesonFlags/mesonFlagsArray via `concatTo`, so the appended flag is picked up at configure time). The hook `exit 1`s if `date` produces empty output, mirroring xce-build.sh's own non-empty-check discipline. Since build_time is no longer an eval-time concept, `myBuildTime` was removed entirely from flake.nix/nixSupport/default.nix/the xce.nix+xcecli.nix function signatures and their eval-time asserts -- only myCommitId (a genuine eval-time/flake-level value from self.shortRev/self.dirtyShortRev) still threads through. Live-verified: `nix eval --json .#packages.x86_64-linux.xcecore_debug.mesonFlags` (no --impure) succeeds; `nix build .#xcecore_debug` (no flags) proceeds through evaluation+configure+570/614 ninja targets (all major C binaries linked) before failing only on an unrelated pre-existing sandbox network restriction (autoscaler/bcctool's Go module fetch from goproxy.cn, nothing to do with this fix); build log shows `-Dbuild_time=2026-08-20T09:13:29Z` reaching meson configure and meson's own summary printing `build_time : 2026-08-20T09:13:29Z` (real, non-empty, ISO-8601 UTC). Same confirmed for xcecli.nix (`-Dbuild_time=2026-08-20T09:15:46Z`). `commit_id=bca6397-dirty` confirmed unaffected/still working in both.", + "tags": [ + "nix", + "flake", + "pure-eval", + "builtins.currentTime", + "build-time-versioning", + "meson", + "preConfigure", + "mesonFlagsArray" + ], + "related_bugs": [], + "occurrences": 1, + "last_seen": "2026-08-20T09:20:00Z" } ] }