| 13 Jan 2026 |
emily | shouldn't it be the out output, as it's consumed by the compiler rather than things taking the compiler as a build input 🤔 | 01:30:26 |
Randy Eckenrode | They do some funky stuff to forward to the system. I don’t think we can avoid having them. We need the Span compatibility dylib for back deployment to 14.x and 15.x. | 01:30:33 |
Randy Eckenrode | The stdlib is a separate derivation. It has out and dev outputs. | 01:31:03 |
emily | ah | 01:31:11 |
Randy Eckenrode | The embedded stuff is kind of weird. It lets you build “bare metal” Darwin applications. | 01:31:58 |
Randy Eckenrode | Whatever the hell that means. | 01:32:03 |
emily | they're rewriting XNU in Swift! | 01:33:13 |
Randy Eckenrode | Then they couldn’t borrow code from FreeBSD as easily! | 01:39:25 |
Randy Eckenrode | I wouldn’t mind if they rewrote the core UNIX utils in Swift, but then they definitely wouldn’t be able to pick up code changes from FreeBSD. It’s a shame because they’re horrifying at times. | 02:04:25 |
samasaur | i wish i had to build fewer perls | 06:14:17 |
samasaur | they don't even take that long but it offends me at a deeper level | 06:14:28 |
samasaur | anyway this worked great! | 06:16:56 |
samasaur | and i feel like i have a better handle on how the stdenv is constructed | 06:17:40 |
samasaur | dropping kyua, atf, sqlite doesn't impact the output of nix-store -qR <stdenv.drv> | sed 's|/nix/store/[a-z0-9]*-||' | sort at all | 06:24:56 |
samasaur | and if I go through the list of stage1Packages in the darwin stdenv it seems like most of them aren't in that list??? | 06:25:19 |
samasaur | ack wait i may have screwed that up | 06:28:28 |
samasaur | okay yes it does change that list. i was running nix-store -qR on the built stdenv and not the drv. I don't really understand why that differs but that's OK | 06:30:17 |
samasaur | oh wait duh that's buildtime vs runtime deps isn't it | 06:32:04 |
samasaur | okay so applying this diff
diff --git a/pkgs/by-name/at/atf/package.nix b/pkgs/by-name/at/atf/package.nix
index 326419c5f7..a285cd207f 100644
--- a/pkgs/by-name/at/atf/package.nix
+++ b/pkgs/by-name/at/atf/package.nix
@@ -1,19 +1,13 @@
{
lib,
stdenv,
- darwin,
fetchFromGitHub,
- fetchpatch,
autoreconfHook,
kyua,
gitUpdater,
}:
-let
- # atf is a dependency of libiconv. Avoid an infinite recursion with `pkgsStatic` by using a bootstrap stdenv.
- stdenv' = if stdenv.hostPlatform.isDarwin then darwin.bootstrapStdenv else stdenv;
-in
-stdenv'.mkDerivation (finalAttrs: {
+stdenv.mkDerivation (finalAttrs: {
pname = "atf";
version = "0.23";
@@ -31,12 +25,12 @@
--replace-fail 'atf_test_program{name="srcdir_test"}' ""
''
# These tests fail on Darwin.
- + lib.optionalString (finalAttrs.doInstallCheck && stdenv'.hostPlatform.isDarwin) ''
+ + lib.optionalString (finalAttrs.doInstallCheck && stdenv.hostPlatform.isDarwin) ''
substituteInPlace atf-c/detail/process_test.c \
--replace-fail 'ATF_TP_ADD_TC(tp, status_coredump);' ""
''
# This test fails on Linux.
- + lib.optionalString (finalAttrs.doInstallCheck && stdenv'.hostPlatform.isLinux) ''
+ + lib.optionalString (finalAttrs.doInstallCheck && stdenv.hostPlatform.isLinux) ''
substituteInPlace atf-c/detail/fs_test.c \
--replace-fail 'ATF_TP_ADD_TC(tp, eaccess);' ""
'';
diff --git a/pkgs/os-specific/darwin/apple-source-releases/libiconv/package.nix b/pkgs/os-specific/darwin/apple-source-releases/libiconv/package.nix
index be9b1e32d6..169d9f8b24 100644
--- a/pkgs/os-specific/darwin/apple-source-releases/libiconv/package.nix
+++ b/pkgs/os-specific/darwin/apple-source-releases/libiconv/package.nix
@@ -5,6 +5,8 @@
mkAppleDerivation,
pkg-config,
stdenv,
+ runTests ? false,
+ libiconv,
}:
let
@@ -72,7 +74,7 @@
nativeInstallCheckInputs = [ pkg-config ];
installCheckInputs = [ atf ];
- doInstallCheck = stdenv.buildPlatform.canExecute hostPlatform;
+ doInstallCheck = runTests;
# Can’t use `mesonCheckPhase` because it runs the wrong hooks for `installCheckPhase`.
installCheckPhase = ''
@@ -81,6 +83,8 @@
runHook postInstallCheck
'';
+ passthru.tests = libiconv.override { runTests = true; };
+
meta = {
description = "Iconv(3) implementation";
license = [
diff --git a/pkgs/stdenv/darwin/default.nix b/pkgs/stdenv/darwin/default.nix
index a63e0c9b07..62f8e5774f 100644
--- a/pkgs/stdenv/darwin/default.nix
+++ b/pkgs/stdenv/darwin/default.nix
@@ -236,7 +236,6 @@
# Any libraries in the list must only be used as dependencies of packages in this list.
stage1Packages = prevStage: {
inherit (prevStage)
- atf
autoconf
automake
bison
@@ -251,7 +250,6 @@
gettext
groff
jq
- kyua
libedit
libtool
m4
@@ -266,7 +264,6 @@
python3Minimal
scons
serf
- sqlite
subversion
texinfo
unzip
@@ -650,6 +647,7 @@
self = self.python3-bootstrap;
pythonAttr = "python3-bootstrap";
enableLTO = false;
+ withSqlite = false;
};
scons = super.scons.override { python3Packages = self.python3.pkgs; };
I get the following diff in the output of nix-store -qR:
69d68
< 5.2.darwin.patch
95,96d93
< atf-0.23.drv
< atf-0.23.drv
234d230
< CVE-2022-28805.patch
337,339d332
< kyua-0.13-unstable-2024-01-22.drv
< kyua-0.13-unstable-2024-01-22.drv
< kyua-check-hook.sh
400,404d392
< lua-5.2.4.drv
< lua-5.2.4.tar.gz.drv
< lua-setup-hook
< lutok-0.4.drv
< lutok-0.4.drv
634,639d621
< source.drv
< source.drv
< source.drv
< sqlite-3.51.1.drv
< sqlite-autoconf-3510100.tar.gz.drv
< sqlite-doc-3510100.zip.drv
685,686d666
< utils.sh
< utils.sh.drv
and nix-build -A darwin.libiconv.passthru.tests does still build and run the tests
| 06:49:47 |
samasaur | oh dear though I didn't check anything under pkgsStatic | 06:51:53 |
samasaur | I'm also noticing that none of the following in stage1Packages are actually in the nix-store -qR output: brotli, cyrus_sasl, groff, libedit, openssh, patchutils, python3Minimal, scons, serf, subversion. admittedly scons is manually overridden to use the bootstrap python but it doesn't appear to actually be used anywhere | 07:00:40 |
samasaur | I almost feel like I'm checking wrong here, because this is a lot of things in that package list that aren't actually used... | 07:01:02 |
samasaur | nix-build -A pkgsStatic.libiconv.passthru.tests also works | 08:10:05 |
samasaur | my assumption is that these are listed here because if they were needed, they would need to be specified this way? and it doesn't actually matter that they're in this list if they're never referenced? | 08:10:43 |
| jopejoe1 (4094@epvpn) changed their display name from jopejoe1 (4094@39c3) to jopejoe1 (4094@epvpn). | 08:25:59 |
Randy Eckenrode | It’s not harmful if those are there. It’s possible whatever pulled those into the bootstrap no longer does. | 11:33:56 |
Randy Eckenrode | This is a weird error:
[1425/1666] Linking Swift shared library lib/swift/host/plugins/libObservationMacros.dylib; Update mtime of library outputs workaround
FAILED: lib/swift/host/plugins/libObservationMacros.dylib lib/Macros/Sources/ObservationMacros/CMakeFiles/ObservationMacros.dir/Availability.swift.o lib/Macros>
: && /nix/store/bvspgzdhr13qnkdd3klkz3ihy78h7z8k-swiftc-cxx_bootstrap-6.2.3/bin/swiftc -j 16 -num-threads 16 -emit-library -o lib/swift/host/plugins/libObserva>
<unknown>:0: warning: using (deprecated) legacy driver, Swift installation does not contain swift-driver at: '/nix/store/bvspgzdhr13qnkdd3klkz3ihy78h7z8k-swift>
<unknown>:0: warning: option '-no-emit-module-separately-wmo' is only supported in swift-driver
impure path `/0sra2y18lr3h6j58qjm0w46yv36h1wjmilb09n8aimdpivdymscx/lib/swift/host/libObservationMacros.dylib' used in link
| 12:25:30 |
Randy Eckenrode | * This is a weird error:
[1425/1666] Linking Swift shared library lib/swift/host/plugins/libObservationMacros.dylib; Update mtime of library outputs workaround
FAILED: lib/swift/host/plugins/libObservationMacros.dylib lib/Macros/Sources/ObservationMacros/CMakeFiles/ObservationMacros.dir/Availability.swift.o lib/Macros>
: && /nix/store/bvspgzdhr13qnkdd3klkz3ihy78h7z8k-swiftc-cxx_bootstrap-6.2.3/bin/swiftc -j 16 -num-threads 16 -emit-library -o lib/swift/host/plugins/libObserva>
<unknown>:0: warning: using (deprecated) legacy driver, Swift installation does not contain swift-driver at: '/nix/store/bvspgzdhr13qnkdd3klkz3ihy78h7z8k-swift>
<unknown>:0: warning: option '-no-emit-module-separately-wmo' is only supported in swift-driver
impure path `/0sra2y18lr3h6j58qjm0w46yv36h1wjmilb09n8aimdpivdymscx/lib/swift/host/libObservationMacros.dylib' used in link
| 12:25:40 |
Randy Eckenrode | That’s when building the stage 1 compiler for Swift. | 12:25:47 |
Randy Eckenrode | Regarding the bootstrap, what I would like to do is define stage 1 as “bootstrap tools can build most things”. From there, build stage 2 with stage 1 as the host platform and stage 2 as the target, then do that again with stage 2 and 3 as host and target. | 12:26:55 |