<MichaelRaskin> Was there one more change or something? I think my builder is not allowed to connect anymore
<MichaelRaskin> (with the fresh next branch)
<MichaelRaskin> gchristensen: and I do run Nix 2.0 on my builder!
jtojnar has quit [Quit: jtojnar]
jtojnar has joined #nixos-borg
jtojnar has quit [Remote host closed the connection]
orivej has quit [Ping timeout: 260 seconds]
<ekleog> gchristensen: hmm… which one is coretemp's issue? I can't find it in either ofborg or nixpkgs repos. Anyway, if you end up wanting the `on a,b,c build d,e,f` feature, just tell me, I can at least help on the parser side :)
gleber_ has quit [Read error: Connection reset by peer]
gleber_ has joined #nixos-borg
orivej has joined #nixos-borg
jtojnar has joined #nixos-borg
orivej has quit [Ping timeout: 268 seconds]
orivej has joined #nixos-borg
<MichaelRaskin> gchristensen: so, what am I doing wrong with my builder?
<gchristensen> hmm
<gchristensen> what happens?
<MichaelRaskin> reply_code: 403, reply_text: \"ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the broker logfile.\", class_id: 0, method_id: 0
<gchristensen> hmmm
<LnL> did you migrate to the new setup?
<gchristensen> MichaelRaskin: try now?
<gchristensen> it says invalid creds over here
<gchristensen> oops
<MichaelRaskin> Yes, just like on my side
<gchristensen> fixed
<gchristensen> I think ;)
<MichaelRaskin> Yes, thanks
<MichaelRaskin> Even got a build job!
<gchristensen> nice!
<gchristensen> seems I accidentally added a space to your password for a bit there.
<MichaelRaskin> Actually, not nice because it means a huge overdue queue
<MichaelRaskin> And that is why you always store hashes and space-trim them before comparison!
<gchristensen> wat
* gchristensen digs in to monitoring
<gchristensen> I'm not sure if I can store hashes :(
<gchristensen> could send a PR of course
<jtojnar> is `meta.platforms = [ "x86_64-linux" ]` not supported? https://github.com/NixOS/nixpkgs/pull/36884
<gchristensen> commented, jtojnar
<Dezgeg> probably the unfree is the problem
<jtojnar> right, thanks
<gchristensen> it feels a bit "cheap" but what if thee nix-instantiate output was sent to the streaming log
<gchristensen> I feel it would be better to split it out per attribute, but that is much trickier to do
<MichaelRaskin> Hm, I now understand why aarch64 has 32 builders — because for better utilisation there are 32 Borg instances in case of single-threaded builds…
<MichaelRaskin> I think just sending nix-instantiate output with --show-trace to the log should be good enough; of course build and instantiation should better be split…
<gchristensen> OK, this is an "emergency" feature to add... I'm getting pinged a _lot_ on why things don't instantiate places
<MichaelRaskin> Looks like the horrible build queue is now better…
<MichaelRaskin> Ouch, a Firefox build. Why am I sure it will timeout?
<gchristensen> fingers crossed ...
<gchristensen> I wrote this function which does: Vec<Result(A,B)> -> (Vec<A>, Vec<B>)
<gchristensen> and the code is horrendous and hard to read ... but the type so clearly explains it.
* gchristensen swoons
<MichaelRaskin> At that point I want to ask how you can make code for such a function horrendous.
<MichaelRaskin> There are like not enough operations that can even be used in such genericity!
<MichaelRaskin> Well, you could reverse one list and shuffle the other, of course…
<MichaelRaskin> Nice
<gchristensen> ok now to clean stuff up a bit more...
<gchristensen> I'm going to drop partial log support
<ekleog> gchristensen: `let mut a = Vec::new(); let mut b = Vec::new(); for x in original_vec.into_iter() { match x { Ok(y) => a.push(y), Err(y) => b.push(y) } } (a, b)` ? (untested, but doesn't look that horrendous to me? apart from the fact it's not functional-style)
<gchristensen> much nicer than mine
<ekleog> (and so now I'm wondering about functional-style without making a copy... I guess it would be something like `let some_vec = original_vec.into_iter().map(Some).collect::<Vec<_>>(); let vec_a = some_vec.iter_mut().flat_map(|&mut x| let y = x.take(); if let Some(Ok(z)) = y { Some(z) } else { x = y; None }).collect(); let vec_b /* similar thing here but with Err */;`, but that's really ugly :/ then I guess
<ekleog> it's a bit functional-style, zero-copy, nice-to-write, pick two)
<MichaelRaskin> At least single-pass zero-copy.
<ekleog> ooh, had completely forgotten about partition :D thanks!
<gchristensen> :)
<ekleog> (just, I think you could sum up your big type into (Vec<_>, Vec<_>), letting rust infer what's inside the Vec)
<gchristensen> yeah exactly
<gchristensen> ohh
<gchristensen> yeah probably
<{^_^}> [ofborg] @grahamc merged pull request #132 → Clarify partial log → https://git.io/vxOZU
<{^_^}> [ofborg] @grahamc pushed 3 commits to next: https://git.io/vx3zh
<{^_^}> → 9420cb5c by @grahamc: clarify what _no_ log means: not a partial loog
<{^_^}> → 29fadfaa by @grahamc: Extract the file to lines function
<{^_^}> → b46eea0b by @grahamc: Merge pull request #132 from NixOS/clarify-partial-log
<{^_^}> [ofborg] @grahamc pushed 0 commits to clarify-partial-log: https://git.io/vx3zj
<{^_^}> [ofborg] @grahamc pushed 5 commits to log-instantiation-failures: https://git.io/vx3gf
<{^_^}> → 789986a1 by @grahamc: Require full logs everywhere
<{^_^}> → cfa95474 by @grahamc: Merge the snippet log in to the standard job action logger
<{^_^}> → bebe1976 by @grahamc: fixup: full logs
<{^_^}> [ofborg] @grahamc opened pull request #134 → Log instantiation failures → https://git.io/vx3gU
<{^_^}> [ofborg] @grahamc pushed to log-instantiation-failures « fixup tests »: https://git.io/vx3gk
<{^_^}> [ofborg] @grahamc pushed to log-instantiation-failures « Link to the full log if there are any log lines »: https://git.io/vx3gV
<gchristensen> ekleog: maybe you'd be able to check this PR out?
<MichaelRaskin> Hm, so borg is surprised when build logs are not valid UTF-8?
<MichaelRaskin> (It looks like the surprise is not fatal, though)
<LnL> yeah, I remember seeing that in the code
<ekleog> gchristensen: is performance an issue? You could likely gain a bit by using a ring buffer in https://github.com/NixOS/ofborg/pull/134/commits/cfa9547434ea9b7f8666f6f140fc342f73741da9 ; but I guess the answer is meh?
infinisil has quit [Quit: Configuring ZNC, sorry for the join/quits!]
infinisil has joined #nixos-borg
<gchristensen> MichaelRaskin: thats right
<gchristensen> ekleog: I looked at that, wanted one, actually, but didn't feel invested enough to add a dep
<gchristensen> esp. when collecting 10 lines of logs (probably) pales in comparison to compiling
<ekleog> yeah indeed, I was just thinking it may be one less invariant to manually maintain :)
<gchristensen> that would be nice
<ekleog> (just posted the review :))
<gchristensen> thanks!
infinisil has quit [Quit: Configuring ZNC, sorry for the join/quits!]
infinisil has joined #nixos-borg
<ekleog> (btw, are builders >6hrs behind? I've still received no answer from https://github.com/NixOS/nixpkgs/pull/34971#issuecomment-374016230 , though I think I should have been added to the known-users list before this comment?)
<gchristensen> hmm seems maybe something is wrong
<gchristensen> I'll look in to it soon
<ekleog> ok thanks! :)
infinisil has quit [Quit: Configuring ZNC, sorry for the join/quits!]
infinisil has joined #nixos-borg
<gchristensen> ekleog: I met you half way :)
<{^_^}> [ofborg] @grahamc pushed 3 commits to log-instantiation-failures: https://git.io/vx36j
<{^_^}> → ec75dba4 by @grahamc: Pass the last 10 lines to the build-result in all cases
<{^_^}> → a0e336bc by @grahamc: Clean up result partition
<{^_^}> → 38c48da6 by @grahamc: Bump version: 0.1.4
<gchristensen> MichaelRaskin, ekleog https://github.com/NixOS/nixpkgs/pull/34971#issuecomment-374062197 (click through to the Full Log)
<{^_^}> [ofborg] @grahamc merged pull request #134 → Log instantiation failures → https://git.io/vx3gU
<{^_^}> [ofborg] @grahamc pushed 11 commits to next: https://git.io/vx3Pe
<{^_^}> → 789986a1 by @grahamc: Require full logs everywhere
<{^_^}> → bebe1976 by @grahamc: fixup: full logs
<{^_^}> → cfa95474 by @grahamc: Merge the snippet log in to the standard job action logger
<{^_^}> [ofborg] @grahamc pushed 0 commits to log-instantiation-failures: https://git.io/vx3Pv
<{^_^}> [ofborg] @grahamc merged pull request #130 → Add to trusted_users → https://git.io/vxOG4
<{^_^}> [ofborg] @grahamc pushed 2 commits to released: https://git.io/vx3PJ
<{^_^}> → 8bbd7a10 by @matthewbauer: Add to truested_users
<{^_^}> → 0065a134 by @grahamc: Merge pull request #130 from matthewbauer/patch-1
<MichaelRaskin> Nice
<MichaelRaskin> Thank you.
<ekleog> thanks! :)
<gchristensen> as soon as all the builders are updated I'll update the github comment to say the details are in the log
<MichaelRaskin> If only there was a way to tell a builder to restart after the current build is finished
<gchristensen> that would be cool
<MichaelRaskin> I think I have two instances of godot build from that testing
<ekleog> gchristensen: just (I saw you merged #134, so not commenting there), https://github.com/NixOS/ofborg/compare/df100542d453...38c48da6e2c2#diff-d9ced247c4766cbb09e7fe716d230b20R101 you could gain a bit by calling self.snippet_log.iter().map(|x| x.clone()).collect() instead of .clone().into_iter().collect() (which would allocate twice as much for the vec, both at clone() and at collect())
<MichaelRaskin> (I launched multiple builder instances to maximise core utilisation during the backlog time, then left two)
<gchristensen> MichaelRaskin: yeah... sorry, I forgot to turn on the "build everything" option before I issued the first build.
<MichaelRaskin> I think the list in question is a list of results per-built-attribute
<MichaelRaskin> Which means, either it is short or we have more interesting sources of load
<MichaelRaskin> Well, I didn't have any plans for running my own builds on the machine tonight anyway.
<gchristensen> :o someone broke master, and then someone fixed master
<ekleog> IIRC it's like 10 elements long, so not much indeed, that's just something free and that avoids that people looking at the code wonder what's going on, esp. as this into_iter().collect() is used only for casting the VecDeque to a Vec :)
<gchristensen> ekleog: could you send a PR? I'm knee-deep in deployment stuff :)
<ekleog> ofc :)
<gchristensen> thanks :)
<{^_^}> [ofborg] @Ekleog opened pull request #135 → Simplify log_snippet → https://git.io/vx3Px
<{^_^}> [ofborg] @grahamc pushed 2 commits to next: https://git.io/vx3Xe
<{^_^}> → dc06ba12 by @grahamc: Merge pull request #135 from Ekleog/next
<{^_^}> → ff71d838 by @Ekleog: Simplify log_snippet
<{^_^}> [ofborg] @grahamc merged pull request #135 → Simplify log_snippet → https://git.io/vx3Px
<ekleog> done :) (also, actually I've used .clone().into(), which is even cleaner from a readability standpoint and does some dark magic with the internals to try and make things faster, though it doesn't matter and it'd still likely allocate more than the .iter().map(clone).collect() :°)
<ekleog> oh well, that was fast ^^
<MichaelRaskin> gchristensen: actually, both godot copies on the same build machine is the best-case scenario: I build once, then NOP the second build
<MichaelRaskin> Wait a minute, gcc5??
<MichaelRaskin> I think ofBorg should be funded by a betting pool on especially absurd build jobs timing out or not.
<ekleog> (or a way to abort jobs & blacklist them to be put up? 😇)
<ekleog> (or better, fund this work with the betting pool)
<MichaelRaskin> The answer: gcc5 build succeeds, godot fails because of a wrong patch.
<MichaelRaskin> ekleog: then you ask for borg builder automatically fetching more single-threaded jobs if a single-threaded job comes, then there is optimal distribution of builds, then most of the ofborg code is approximate optimisation of an NP-complete problem
<ekleog> oh yay :D
<MichaelRaskin> OK, two updated builder instances started (on the same quadcore/octothread box)
<gchristensen> nice
<MichaelRaskin> Every program expands until it can read mail, every job juggler expands until most of its code is for approximating some NP-complete scheduling problem (they _all_ are NP-complete)
<ekleog> then ofborg schedules my todo list
<ekleog> next step is it building robots to actually check my todo list for me
<ekleog> and then ROBOT INVASION BEWARE
<MichaelRaskin> ekleog: don't worry, the robot scheduler will need task durations, and no task for a person who can write code has a duration that cna be known in advance.
<MichaelRaskin> Robot uprising foiled by impossibility of programmer time estimates.
G6JB1MHarryS has joined #nixos-borg
G6JB1MHarryS has quit [Client Quit]
infinisil has quit [Quit: Configuring ZNC, sorry for the join/quits!]
infinisil has joined #nixos-borg
<{^_^}> [ofborg] @grahamc pushed 2 commits to request-id: https://git.io/vx3MJ
<{^_^}> → b7a296e8 by @grahamc: Merge remote-tracking branch 'origin/released' into next
<{^_^}> → 4fa57995 by @grahamc: Pass a request-id along with build jobs and results
<{^_^}> [ofborg] @grahamc pushed 4 commits to next: https://git.io/vx3MI
<{^_^}> → 8bbd7a10 by @matthewbauer: Add to truested_users
<{^_^}> → b7a296e8 by @grahamc: Merge remote-tracking branch 'origin/released' into next
<{^_^}> → 0065a134 by @grahamc: Merge pull request #130 from matthewbauer/patch-1
<{^_^}> [ofborg] @grahamc pushed to request-id « Pass a request-id along with build jobs and results »: https://git.io/vx3Mt
<{^_^}> [ofborg] @grahamc opened pull request #136 → Pass a request-id along with build jobs and results → https://git.io/vx3M3
<{^_^}> [ofborg] @grahamc pushed to request-id « Pass a request-id along with build jobs and results »: https://git.io/vx3MG