| 15 Aug 2025 |
helle (just a stray cat girl) | ty for the sanity check | 20:22:43 |
emily | well, technically you can have POSIX-compliant systems that just refuse to implement half the spec, so there's a limit to how much fallback code is sensible to write :P | 20:30:30 |
emily | but in this case it seems reasonable | 20:30:35 |
helle (just a stray cat girl) | heh, yeah, also it not being on a hot path and all | 20:37:14 |
niko ⚡️ | That's awesome, darwin failures that only happened on nixpkgs-unstable no longer happen when I rebuilt lix today. Meanwhile, there's a new failure, this time libcmd. There's this small snippet:
# Use a temporary home directory for the unit tests.
# Otherwise, /homeless-shelter is created in the single-user sandbox, and functional tests will fail.
# TODO(alois31): handle TMPDIR properly (meson can't, and setting HOME in the test is too late)…
'HOME': '/tmp/nix-test/libcmd-unit-tests',
which you'd think makes everything work just fine, right? WRONG. The code does this:
auto homeDir = getEnv("HOME");
if (homeDir) {
// Only use `$HOME` if it exists and is owned by the current user.
struct stat st;
int result = stat(homeDir->c_str(), &st);
and obviously HOME does not exist so it falls back to getpwuid_r. Which just so happens to work on Linux because dynamic sandbox user gets put in the user database, but OOPS it doesn't work on darwin!
| 22:23:52 |
niko ⚡️ | Now I need someone that'll help me come up with a solution to this problem, either how can I basically mkdir -p $HOME before running this test oooor idk what the alternative is but lix really wants to know the home directory of user | 22:24:45 |
emily | auto-allocate-uids on Darwin needs to insert the users into the user database | 22:29:17 |
emily | that is the only way it will ever work | 22:29:23 |
emily | it's not practical to patch every piece of software in the world to deal with running as a user that doesn't exist | 22:30:12 |
niko ⚡️ | Fair but also I'd argue this is an improvement in the meson file (also addresses the TODO which claimed respecting TMPDIR is impossible with meson)
# Use a temporary home directory for the unit tests.
# Otherwise, /homeless-shelter is created in the single-user sandbox, and functional tests will fail.
'HOME': run_command('mktemp', '-d', 'libcmd-unit-tests.XXXXXX', check: true).stdout().strip()
and it addresses the failure (which, while a band-aid, is a fix nonetheless, and lix not building with auto-allocate-uids is a regression)
| 22:38:09 |
niko ⚡️ | Lix tests already depend on mktemp being in PATH so this shouldn't be very radical either | 22:38:57 |
niko ⚡️ | Aaaanyway after fixing this failure turns out functional tests still are failing, just the unit test failure was covering them | 22:41:48 |
emily | seems reasonable enough | 22:56:07 |
emily | we should close off /tmp for macOS anyway | 22:56:13 |
| 16 Aug 2025 |
aloisw | Nice hack, thanks. While it only runs at configure time, it should be good enough for most purposes. Can you submit a patch? | 08:01:41 |
K900 | OK I may be being a dumbass | 08:45:22 |
K900 | But how do you force nix-store to not daemon | 08:45:31 |
K900 | Because error: operation 'repairPath' is not supported by store 'daemon' | 08:45:57 |
K900 | OK explicit --store / did it | 08:46:27 |
helle (just a stray cat girl) | please note, learning is never dumb, we all started out not knowing stuff, asking should not come with a bonus feeling of negative
that said, I actually don't remember either, heh | 08:46:32 |
Qyriad | In reply to @k900:0upti.me OK explicit --store / did it --store local also works | 08:46:58 |
K900 | Somehow I OOMed in a particularly cursed way | 08:47:36 |
K900 | And now my store is fucked | 08:47:41 |
Grimmauld (any/all) | kernels? | 08:47:54 |
K900 | Nope | 08:48:00 |
K900 | Webkits | 08:48:04 |
K900 | I have enough to not OOM on kernels | 08:48:15 |
K900 | Oh wow I think it might be time to exterminatus this store | 08:51:59 |
K900 | GODDAMMIT | 11:52:57 |
K900 | It was not the store at all | 11:53:01 |