| 31 Jul 2022 |
K900 | Oh yeah, I just meant that when it needs a value, it converts the endianness in place | 05:41:46 |
K900 | So if you miss calling the conversion function somewhere, it explodes in some subtle way | 05:42:56 |
Mic92 | I don't think rust would be a good choice at the time. patchelf is used in many package manager for bootstrapping and Rust would be a heavy bootstrap dependency | 05:43:30 |
Mic92 | It does not even use a sane build system like meson or cmake for the same reason. | 05:43:59 |
K900 | Yeah, that was more of a joke | 05:44:04 |
K900 | Rust also isn't really a (that) good fit for doing this kind of low level byte-twiddling | 05:45:08 |
K900 | Cause it is kind of inherently unsafe | 05:45:34 |
Mic92 | the endianess conversion is actually mostly done in this helper: https://github.com/NixOS/patchelf/blob/master/src/patchelf.cc#L97 so most of the code does not have to care about it. | 05:46:42 |
K900 | Yeah, but it has to care about calling the helper every time | 05:49:09 |
@elvishjerricco:matrix.org | So one thing I didn't think of during the strip discussion yesterday: The old initrd unconditionally strips. So the question about if we've been adding an undue binutils dependency for most people's rebuilds was moot :P | 12:51:45 |
K900 | But we can remove it now | 12:51:58 |
K900 | That's good | 12:52:02 |
@elvishjerricco:matrix.org | yea, that is an improvement | 12:52:04 |
@elvishjerricco:matrix.org | Finally ran the test I meant to yesterday. Looks like the goblin change reduces initrd build time (for a very simple initrd) from 3.47s to 2.67s. Neat | 14:51:20 |
@elvishjerricco:matrix.org | I should time the actual make-initrd-ng runtime, because I'm sure a ton of that time is cpio and the compressor | 14:53:43 |
@elvishjerricco:matrix.org | Oh, uh, lul, that's way more dramatic. Old:
real 1.09
user 0.56
sys 0.58
Goblin:
real 0.27
user 0.06
sys 0.20
Notice how much of that time is actual rust code running. Nice
| 15:00:03 |
K900 | Try it without stripping | 15:02:48 |
@elvishjerricco:matrix.org | real 0.09
user 0.00
sys 0.08
lul
| 15:04:44 |
@elvishjerricco:matrix.org | Compared to old with stripping commented out:
real 0.89
user 0.49
sys 0.44
| 15:06:49 |
@linus:schreibt.jetzt | exec is expensive! Especially in the Nix world. | 15:18:44 |
@elvishjerricco:matrix.org | I was originally very happy about rewriting this logic in rust because my bash code took several minutes and this took about a second. Now it's a tenth of a second. That makes me smile | 15:30:28 |
K900 | I just switched my laptop to a goblin-built initrd | 15:58:23 |
K900 | And nothing exploded | 15:58:26 |
K900 | So that's nice | 15:58:29 |
K900 |  Download image.png | 15:59:46 |
K900 | Teehee | 15:59:46 |
K900 | Also, I just realized | 16:03:14 |
K900 | Bootspec dragged in a kernel to my WSL system :( | 16:03:34 |
@elvishjerricco:matrix.org | Is there a way to get the rust dependencies to build in a separate derivation from make-initrd-ng? It's really annoying that what used to be like a 1s build now takes closer to 10s when trying to iterate on it | 18:23:51 |
| 1 Aug 2022 |
| lukegb (he/him) joined the room. | 16:25:23 |