Time |
Nick |
Message |
00:10 |
|
kilbith_ joined #minetest |
00:10 |
|
v-rob joined #minetest |
00:12 |
|
Verticen joined #minetest |
00:40 |
|
ilomiglio joined #minetest |
00:46 |
|
olliy joined #minetest |
00:50 |
|
Miner_48er joined #minetest |
00:53 |
|
Miner_48er joined #minetest |
01:05 |
|
behalebabo joined #minetest |
01:06 |
|
dzho joined #minetest |
01:16 |
|
kamdard_ joined #minetest |
01:17 |
|
bwarden joined #minetest |
01:22 |
|
fluxionary joined #minetest |
01:37 |
|
Jason232 joined #minetest |
01:53 |
|
v-rob joined #minetest |
02:47 |
|
v-rob joined #minetest |
02:51 |
|
jordan4ibanez joined #minetest |
03:28 |
|
queria joined #minetest |
03:31 |
erlehmann |
how to arbitrarily rotate a texture? |
03:31 |
erlehmann |
or maybe 45 degree angles |
03:31 |
MTDiscord |
<Warr1024> imagemagick |
03:32 |
erlehmann |
i meant, in minetest |
03:32 |
erlehmann |
texture modifiers seem to be stuck in rectangular land |
03:32 |
MTDiscord |
<Warr1024> you rotate it arbitrarily in imagemagick, save it as a new texture file, and then use that one in minetest instead |
03:32 |
erlehmann |
it's about map markers though |
03:33 |
MTDiscord |
<Warr1024> you can just do all angles up to 90 degrees and then use MT's texture mods for the rest |
03:33 |
erlehmann |
yeah, uh, i thought of that |
03:33 |
erlehmann |
and thought, wellllll |
03:33 |
erlehmann |
45 degree increments is good enough |
03:33 |
erlehmann |
bc then i only need 2 textures |
03:33 |
|
queria joined #minetest |
03:33 |
MTDiscord |
<Warr1024> multiples of 90 degrees is the limit of what MT is going to do for you |
03:34 |
MTDiscord |
<Warr1024> arguably I'm not sure I'd want MT to try to do arbitrary rotations because it's surprisingly complex and I've seen too many implementations that don't come out crisp. |
03:35 |
erlehmann |
minetest and crisp textures, HA-HA |
03:35 |
erlehmann |
as if, ever |
03:35 |
erlehmann |
:P |
03:59 |
|
BuckarooBanzai joined #minetest |
04:20 |
|
Yad joined #minetest |
04:37 |
|
Jason232_ joined #minetest |
04:50 |
|
Yad joined #minetest |
04:59 |
|
v-rob joined #minetest |
05:00 |
|
MTDiscord joined #minetest |
05:35 |
|
jordan4ibanez joined #minetest |
06:01 |
|
riff-IRC joined #minetest |
06:26 |
|
Oksanaa joined #minetest |
07:02 |
|
Hawk777 joined #minetest |
07:07 |
|
v-rob joined #minetest |
07:10 |
|
jvalleroy joined #minetest |
07:18 |
|
specing_ joined #minetest |
07:37 |
|
Jason232 joined #minetest |
07:46 |
|
calcul0n joined #minetest |
07:57 |
|
Gustavo6046 joined #minetest |
07:57 |
Gustavo6046 |
huh, builtin_item is not in contentdb anymore |
07:57 |
Gustavo6046 |
did TenPlus1 pull it? |
08:07 |
|
Jason232_ joined #minetest |
08:17 |
|
jluc joined #minetest |
08:28 |
MTDiscord |
<GreenXenith> It got unapproved due to license issues |
08:29 |
|
calcul0n joined #minetest |
08:59 |
erlehmann |
GreenXenith what license issues? |
09:00 |
MTDiscord |
<luatic> probably licensed overly permissive |
09:02 |
MTDiscord |
<luatic> it's licensed MIT |
09:02 |
erlehmann |
i don't get it |
09:02 |
MTDiscord |
<luatic> if it has code from MT's builtin item, it must be (L)GPLv2.1 though |
09:02 |
erlehmann |
ohhhh |
09:02 |
erlehmann |
i see |
09:02 |
MTDiscord |
<GreenXenith> From the cdb page it looks cc0; But yeah, overly permissive. |
09:03 |
Gustavo6046 |
ah |
09:04 |
Gustavo6046 |
does TenPlus1 not want to relicense it? |
09:04 |
Gustavo6046 |
I'm ok with relicensing it |
09:04 |
erlehmann |
https://github.com/minetest/contentdb/issues/362 |
09:04 |
Gustavo6046 |
I did contribute some code to it |
09:04 |
erlehmann |
Gustavo6046 well what is it based on? |
09:04 |
Gustavo6046 |
hm? |
09:04 |
Gustavo6046 |
based on? |
09:04 |
erlehmann |
is builtin_item based on minetest code? |
09:05 |
Gustavo6046 |
I'm not aware if it is |
09:05 |
Gustavo6046 |
maybe |
09:05 |
Gustavo6046 |
compare older revisions of the code with minetest's builtin_item code |
09:05 |
Gustavo6046 |
I did do major refactors |
09:05 |
erlehmann |
where is the git repo |
09:05 |
Gustavo6046 |
the GPL faulters in trying to determine what *all* derivates of source code would count |
09:05 |
|
kilbith_ joined #minetest |
09:05 |
Gustavo6046 |
erlehmann, it's in notabug |
09:05 |
Gustavo6046 |
tenplus1/builtin_item |
09:06 |
MTDiscord |
<luatic> Gustavo6046: Your refactors were all committed by TP1, ugh |
09:06 |
MTDiscord |
<luatic> https://notabug.org/TenPlus1/builtin_item/commits/master?page=1&pageSize=100 |
09:07 |
Gustavo6046 |
yes |
09:07 |
Gustavo6046 |
they are in pull requests |
09:07 |
Gustavo6046 |
I think he credited me though |
09:07 |
MTDiscord |
<luatic> proper thing to do is just merge the PR though |
09:08 |
MTDiscord |
<luatic> here it is: "Items are pushed along by flowing water (thanks to QwertyMine3 and Gustavo6046)", and in the commit message |
09:09 |
MTDiscord |
<luatic> TenPlus1: Please use Git properly, commits have an author field for a reason |
09:39 |
Gustavo6046 |
ah |
09:39 |
Gustavo6046 |
commits have an author field? |
09:39 |
Gustavo6046 |
I had made many commits actually |
09:39 |
Gustavo6046 |
and a pull request |
09:39 |
Gustavo6046 |
maybe he preferred to do a git squash? |
09:42 |
Gustavo6046 |
I don't know how that would preserve author information though |
09:44 |
erlehmann |
anyone who edits git history and does not preserve authorship information needs to go back to git rebase bootcamp |
09:45 |
erlehmann |
you can see what happens if author information is lost, if you go really far back in minetest! |
09:45 |
erlehmann |
oh wait, it's accurate |
09:45 |
erlehmann |
haha |
09:46 |
erlehmann |
i had remembered that i had botched the hg import at some point |
09:47 |
erlehmann |
maybe i misremembered … or it got fixed? |
09:52 |
erlehmann |
oh, at some point commit messages occur twice lol |
10:09 |
|
Yad_ joined #minetest |
10:11 |
MinetestBot |
[git] baytuch -> minetest/minetest_game: Minor translation refinement for UK and RU langs (Drinking Glass) (#2… e02e55f https://github.com/minetest/minetest_game/commit/e02e55fafdb4681864fca1c6479415bfe8512fc9 (2022-02-01T10:09:21Z) |
10:11 |
|
cheapie_ joined #minetest |
10:12 |
|
ilomiglio joined #minetest |
10:15 |
|
queria^clone joined #minetest |
10:16 |
|
jvalleroy joined #minetest |
10:16 |
|
appguru joined #minetest |
10:17 |
|
behalebabo joined #minetest |
10:25 |
|
Ingar joined #minetest |
10:36 |
|
HuguesRoss joined #minetest |
10:41 |
|
copygirl joined #minetest |
10:46 |
|
TomTom joined #minetest |
10:47 |
|
Emerald2_ joined #minetest |
10:47 |
|
SoniEx2 joined #minetest |
10:47 |
|
jfred_ joined #minetest |
10:47 |
|
Evil joined #minetest |
10:50 |
|
GNUHacker joined #minetest |
10:53 |
|
MiniontobyPI joined #minetest |
10:59 |
|
Fusl joined #minetest |
11:04 |
|
lunearity[m]1 joined #minetest |
11:06 |
|
mugli[m] joined #minetest |
11:06 |
|
unexploredtest[m joined #minetest |
11:08 |
|
grouinos joined #minetest |
11:33 |
rubenwardy |
Preserving authors is basic git ettiquite |
11:35 |
rubenwardy |
Unfortunately, I have to pull any package with license issues otherwise it can cause me issues |
11:39 |
Gustavo6046 |
rubenwardy, yes, fair enough |
11:39 |
Gustavo6046 |
I hope you can figure it out with TenPlus1 :) |
11:39 |
Gustavo6046 |
I really like builtin_item, and I helped make it better, and I intend to continue helping it get better |
11:39 |
Gustavo6046 |
It still has a few quirks, but I plan to fix those sometime in the future. |
11:39 |
Gustavo6046 |
Items seem to float sometimes, which might just be networking lag or something but still |
11:40 |
Gustavo6046 |
Hmm |
11:42 |
|
Noclip[m] joined #minetest |
11:42 |
celeron55 |
erlehmann: looking at the hg->git migrated stuff and the early git work in the MT repository is quite an experience |
11:42 |
|
freshreplicant[m joined #minetest |
11:42 |
|
gemmaro[m] joined #minetest |
11:42 |
|
wsor4035 joined #minetest |
11:43 |
|
rogerm[m] joined #minetest |
11:43 |
|
queria[m] joined #minetest |
11:43 |
|
_Zaizen_[m] joined #minetest |
11:43 |
|
programmerjake joined #minetest |
11:43 |
|
unexploredtest[m joined #minetest |
11:43 |
|
zehka[m] joined #minetest |
11:43 |
|
mister-e[m] joined #minetest |
11:43 |
|
tochigi joined #minetest |
11:43 |
|
craigevil[m] joined #minetest |
11:43 |
|
omichalek[m] joined #minetest |
11:44 |
|
lunearity[m] joined #minetest |
11:44 |
|
mugli[m] joined #minetest |
11:44 |
|
Amo[m] joined #minetest |
11:47 |
Gustavo6046 |
Anyway, I've been trying nodecore, it's quite interesting so far :) |
11:48 |
Gustavo6046 |
It reminds me a little of TerraFirmaCraft |
12:01 |
|
definitelya joined #minetest |
12:01 |
|
Noclip[m] joined #minetest |
12:09 |
|
Noclip[m] joined #minetest |
12:42 |
|
tech_exorcist joined #minetest |
12:46 |
|
freshreplicant[m joined #minetest |
12:46 |
|
gemmaro[m] joined #minetest |
12:46 |
|
wsor4035 joined #minetest |
12:46 |
|
rogerm[m] joined #minetest |
12:46 |
|
_Zaizen_[m] joined #minetest |
12:46 |
|
programmerjake joined #minetest |
12:46 |
|
zehka[m] joined #minetest |
12:46 |
|
unexploredtest[m joined #minetest |
12:46 |
|
tochigi joined #minetest |
12:46 |
|
craigevil[m] joined #minetest |
12:46 |
|
mugli[m] joined #minetest |
12:46 |
|
omichalek[m]1 joined #minetest |
12:46 |
|
Amo[m] joined #minetest |
12:46 |
|
lunearity[m]1 joined #minetest |
12:46 |
|
mister-e[m] joined #minetest |
12:46 |
|
queria[m] joined #minetest |
12:55 |
|
sys4 joined #minetest |
12:56 |
|
proller joined #minetest |
13:02 |
|
Markow joined #minetest |
13:16 |
|
Fleckenstein joined #minetest |
13:20 |
|
kilbith_ joined #minetest |
13:22 |
|
mrkubax10 joined #minetest |
13:23 |
mrkubax10 |
I have created Polish translation for MTG, how can I send it? Should I create pull request to minetest_game repo? |
13:23 |
|
Noclip[m] joined #minetest |
13:23 |
|
gemmaro[m] joined #minetest |
13:23 |
|
rogerm[m] joined #minetest |
13:23 |
|
_Zaizen_[m] joined #minetest |
13:25 |
MTDiscord |
<Warr1024> Isn't MTG on weblate? |
13:25 |
mrkubax10 |
ah ok |
13:26 |
MTDiscord |
<Warr1024> https://hosted.weblate.org/projects/minetest/ |
13:26 |
MTDiscord |
<Warr1024> I see a "mod: game internationalization" and it looks like that might actually mean "game: MTG" but I can't say 100% how it's actually used. |
13:28 |
MTDiscord |
<Jonathon> mtg doesnt use weblate |
13:28 |
MTDiscord |
<Jonathon> just make a PR |
13:28 |
mrkubax10 |
ok |
13:31 |
MTDiscord |
<Warr1024> What is "mod: game internationalization" for then? |
13:31 |
MTDiscord |
<Warr1024> Is there actually a mod for that? |
13:31 |
MTDiscord |
<Jonathon> no idea |
13:31 |
MTDiscord |
<Jonathon> all i know is that translations for mtg have always been pr'd as well as people directed there |
13:32 |
MTDiscord |
<Jonathon> i dont think ive done anything with translation that didnt already have support |
13:32 |
MTDiscord |
<Jonathon> sorry wuzzy |
13:32 |
MTDiscord |
<Warr1024> oh wow, there's actually an external mod to add translations to MTG ... but then MTG started including translations upstream ... and yet they still offer the mod because MTG translations "can be buggy" |
13:33 |
MTDiscord |
<Jonathon> welcome to minetest ™️ |
13:33 |
MTDiscord |
<Warr1024> If MTG has a maintainer now they should probably try to get its translations into weblate properly... |
13:35 |
MTDiscord |
<Jonathon> seems like a feature |
13:35 |
rubenwardy |
"mod: game internationalizatio" was a mod to translate MTG |
13:36 |
rubenwardy |
what bugs are they talking about? I don't know of any |
13:36 |
MTDiscord |
<Warr1024> Seems like those efforts really should have been merged. |
13:41 |
|
kilbith__ joined #minetest |
13:43 |
|
kilbith joined #minetest |
13:44 |
|
kilbith__ joined #minetest |
13:48 |
|
kilbith__ joined #minetest |
13:54 |
|
kilbith_ joined #minetest |
13:56 |
|
kamdard_ joined #minetest |
13:58 |
|
kilbith_ joined #minetest |
14:00 |
|
kilbith__ joined #minetest |
14:01 |
MTDiscord |
<MNH48> mod: game internationalization is basically translation mod for MTG using intllib back before MTG officially supported translation natively |
14:02 |
MTDiscord |
<MNH48> iirc didn't people asked to just bring the translations over from that mod into the game? |
14:04 |
|
kilbith joined #minetest |
14:07 |
erlehmann |
after many years, i made my first forum post! https://forum.minetest.net/viewtopic.php?f=53&t=27760 |
14:07 |
erlehmann |
:D |
14:09 |
rubenwardy |
screenshake? Rumble is something a gamepad does |
14:10 |
|
mrkubax10 left #minetest |
14:11 |
erlehmann |
rubenwardy, i added the words “XBox compatible Gamepads” to make it clear |
14:11 |
erlehmann |
i believe the correct name for such a middleware is game haptics router?! but no one uses that phrase |
14:11 |
erlehmann |
like where your game connects and says: vibrate strenth 5 for 200 ms thank you |
14:12 |
erlehmann |
and the middleware is doing all the talking to the hardware |
14:12 |
erlehmann |
like bluetooth or usb or what do i know |
14:13 |
|
definitelya joined #minetest |
14:13 |
erlehmann |
rubenwardy, i edited my post again, is it more clear now? |
14:13 |
rubenwardy |
yeah |
14:14 |
erlehmann |
sorry i did not even think of screenshake haha |
14:14 |
erlehmann |
that would be interesting as well though |
14:34 |
MTDiscord |
<Warr1024> Hilariously, you could try player:set_look_dir(player:get_look_dir()) |
14:34 |
MTDiscord |
<Warr1024> MT probably doesn't check to see if those values are already the same, and will probably blindly send a "set look dir" packet to the client. |
14:35 |
MTDiscord |
<luatic> It will |
14:35 |
MTDiscord |
<Warr1024> The client will receive this, and set the lookdir to what it was about one round trip ago. |
14:35 |
MTDiscord |
<Warr1024> This should have the effect of creating a (probably small) "jerk" in camera angle |
14:37 |
MTDiscord |
<Warr1024> The effect wouldn't be well-calibrated, or even what you really envision, but the implementation would certainly get a lot of points for sheer irony. |
14:37 |
rubenwardy |
hax |
14:39 |
MTDiscord |
<Warr1024> extra points for documenting that code with a comment that will only make you confused when you stumble across it 6 months from now while trying to fix an obliquely related bug. |
14:44 |
erlehmann |
Warr1024 could you please make the counter-book to the rubenwardy book? |
14:44 |
erlehmann |
i mean you are already nominated for the worst abuse of engine award 2022 |
14:44 |
erlehmann |
hilarious :3 |
14:45 |
rubenwardy |
I think that invector's abuse was so bad that it wins both 2021 and 2022 automatically |
14:46 |
erlehmann |
guess i have to read the code then |
14:46 |
|
kilbith joined #minetest |
14:46 |
erlehmann |
cora today found out how performant ABMs can be |
14:47 |
erlehmann |
by debugging one that run like 20 times as often as a global step or so |
14:47 |
erlehmann |
j45 your bubble columns are cursed and you should feel bad for MineClone5 which is suffering from your ABM shenanigans |
14:47 |
erlehmann |
i did not understand when you were saying “never do i want to touch this code again” |
14:47 |
erlehmann |
but i now do :D |
14:57 |
|
lemonzest joined #minetest |
14:59 |
|
jluc joined #minetest |
15:07 |
|
kilbith left #minetest |
15:09 |
|
z812 joined #minetest |
15:13 |
|
Fixer joined #minetest |
15:24 |
|
tech_exorcist joined #minetest |
15:35 |
|
ronoaldo joined #minetest |
15:41 |
|
fluxionary joined #minetest |
15:51 |
|
Wuzzy joined #minetest |
15:57 |
|
powerjungle joined #minetest |
16:21 |
MTDiscord |
<j45> the old implementation was more efficient but didnt work quite as well |
16:22 |
MTDiscord |
<j45> and it isnt like mcl5 is super fast without my bubble columns |
16:22 |
erlehmann |
yeah so |
16:22 |
erlehmann |
mcl5 is a lagfest but cora is cleaning it up afaik |
16:22 |
MTDiscord |
<j45> cora is trying the old implementation |
16:22 |
MTDiscord |
<j45> (differently to how i did it) |
16:23 |
MTDiscord |
<j45> hurray for cora lol |
16:23 |
erlehmann |
cora is pretty good at fixing lag |
16:24 |
|
debiankaios joined #minetest |
16:24 |
debiankaios |
anybody here? |
16:24 |
MTDiscord |
<j45> yes |
16:25 |
debiankaios |
who can help me with wiki |
16:26 |
|
gargamel joined #minetest |
16:26 |
|
ronoaldo joined #minetest |
16:41 |
|
GNUHacker left #minetest |
16:51 |
|
delta23 joined #minetest |
17:08 |
MTDiscord |
<luatic> @j45 well how did you implement it? I don't see why this would have to be laggy |
17:09 |
MTDiscord |
<j45> i implemented it badly to be frank |
17:09 |
MTDiscord |
<j45> #minetest-docs-irc btw |
17:10 |
erlehmann |
nodenames = {"group:water"}, |
17:10 |
erlehmann |
interval = 0.05, |
17:10 |
erlehmann |
chance = 1, nodenames = {"group:water"}, |
17:10 |
erlehmann |
sorry copypaste fail |
17:11 |
MTDiscord |
<luatic> pretty sure interval < 1s is pointless |
17:11 |
MTDiscord |
<Warr1024> interval = 0.05 shouldn't actually mean interval = 0.05 unless the server is configured to run the global ABM timer at 0.05, which seems pretty footgunny |
17:11 |
MTDiscord |
<Warr1024> I mean clearly the intent of that registration is itself problematic too |
17:12 |
MTDiscord |
<Warr1024> frankly interval=1, chance=1, nodenames = {"group:water"} is plenty bad enough. |
17:12 |
erlehmann |
look this is all wrong |
17:12 |
erlehmann |
making it on water |
17:12 |
erlehmann |
seriously |
17:12 |
MTDiscord |
<j45> amen |
17:12 |
erlehmann |
nuke it from orbit |
17:12 |
erlehmann |
it's the only way to be sure |
17:13 |
MTDiscord |
<j45> but you cant only do things with a specific meta value for smt in abms afaik |
17:13 |
erlehmann |
neighbours though |
17:13 |
MTDiscord |
<Warr1024> I mean I'll do nodenames = {"group:water"} but only with neigbors_invert=true but oh wait MT doesn't actually have that feature ? |
17:13 |
erlehmann |
what would that do anyway |
17:14 |
MTDiscord |
<Warr1024> neighbors_invert swaps nodenames and neighbors in the registration, then swaps it back within the action. Makes it possible to scan for a common node with rare neighbors but pay only the same cost as scanning for rare nodes with common neighbors. |
17:14 |
MTDiscord |
<Warr1024> Well, that plus a little overhead, but nothing is quite as bad as throwing a neighbor check on top of scanning for a common node. |
17:34 |
|
v-rob joined #minetest |
17:40 |
|
Talkless joined #minetest |
17:47 |
|
Flabb joined #minetest |
17:54 |
|
jluc joined #minetest |
18:12 |
|
proller joined #minetest |
18:24 |
|
proller joined #minetest |
18:41 |
|
___nick___ joined #minetest |
18:49 |
erlehmann |
brink back oerkki bird https://forum.minetest.net/viewtopic.php?p=1719#p1719 |
18:53 |
|
jordan4ibanez joined #minetest |
18:56 |
|
v-rob joined #minetest |
19:02 |
|
GNUHacker joined #minetest |
19:11 |
|
Verticen joined #minetest |
19:13 |
|
Markow joined #minetest |
19:15 |
|
sys4 joined #minetest |
19:18 |
|
specing_ joined #minetest |
19:25 |
MTDiscord |
<josiah_wi> erlehmann, do you have good resources for learning about the dependency issues you talked about in CMake? I'm trying to research this and I'm finding almost nothing. |
19:27 |
erlehmann |
josiah_wi there is surprisingly little literature regarding it. daniel j bernstein has these notes, from which avery pennarun extrapolated redo: https://cr.yp.to/redo.html i later figured out that djb is writing makefiles in a way that you would only do if you actually had a working implementation of a build system that would avoid specific bugs. |
19:28 |
erlehmann |
i also talked to him, but he is a bit of a weirdo and never released anything. i later learned that ppl had to pester him for years about which license his software is published under and he was like go away it's public domain, but at that point others had written replacements. haha. |
19:28 |
erlehmann |
i mean he never released his build system thing, djb released a lot of other stuff. |
19:29 |
erlehmann |
josiah_wi there is a microsoft paper “build systems a la carte”, which explores the space of build systems, but it is a bit abstract. |
19:31 |
erlehmann |
josiah_wi there is also alan grosskurths thesis “purely top-down software rebuilding” https://grosskurth.ca/papers/mmath-thesis.pdf |
19:31 |
erlehmann |
josiah_wi reading the first ~20 pages of the thesis should give you an overview i guess |
19:32 |
MTDiscord |
<josiah_wi> Thanks. |
19:34 |
erlehmann |
josiah_wi there seem to be several big issues at hand: first, most of the (very little) discussion of this stuff is in the community around avery pennarun python-based build system. if you compare grosskurths notes about recursion with pennaruns implementation you realize that pennarun has avoided some hard problems by assuming that a target can only be built once during a “run”, which enables him to topologically s |
19:34 |
erlehmann |
ort targets, then work on them in parallel. |
19:34 |
erlehmann |
by this mean is that “a target will only be built once during a built” is – perhaps surprisingly – a constraint that real-world software projects do not have. |
19:35 |
erlehmann |
and if you introduce it to handle parallel builds, they will be “better fast than correct” |
19:36 |
erlehmann |
the other issue is that systems that are unable to output dependencies and non-existence dependencies as side effects (like make or cmake) can not ever handle this case. every few years someone tries and figures it out, but i have rarely seen people blog about it. they rather abandon the tool. |
19:37 |
erlehmann |
it's a bit like when someone coming from xmpp tries to write a matrix bridge. those projects never go very far, because either the ppl adopt matrix or they realize that matrix is not only *really* complex (and necessarily slow), but also changes all the time. |
19:38 |
erlehmann |
so the big issue here is that build systems that take a dependency tree, topologically sort inputs and then execute jobs can usually not be fixed to produce correct builds *unless* there are absolutely no non-existence dependencies and every target is built at most once per invocation. |
19:38 |
MTDiscord |
<josiah_wi> I would like to see a minimal example of a CMake build with a fatal non-existence dependency. I understand what it is now, but I'm completely confused as to how it actually shows up. |
19:38 |
erlehmann |
(the latter constraint does not apply if you just do not build in parallel) |
19:39 |
erlehmann |
btw, embedded developers usually side-step this entire issue. they rarely have fallback-paths! |
19:39 |
MTDiscord |
<josiah_wi> I can't find anything at all that so much as mentions this issue with CMake, anywhere on the internet. That's impressive, even. |
19:39 |
erlehmann |
yeah, it's funny. people do not notice them. |
19:39 |
erlehmann |
very very broadly, every time someone has to type “make clean” or so to rebuild, the build system messed up. |
19:40 |
erlehmann |
there is a patch for cmake out there that *tries* to handle ne deps, but the author gave up. |
19:40 |
MTDiscord |
<josiah_wi> That much makes sense. |
19:40 |
erlehmann |
surprisingly, that patch is larger than my entire build system. |
19:40 |
erlehmann |
so regarding embedded devs, i once told mitch altman (the tv-b-gone guy) about this problem and he was like “yes i rebuild everything everywhere, it's not the 80ies anymore” |
19:41 |
erlehmann |
regarding c code on microcontrollers obv |
19:41 |
erlehmann |
josiah_wi if you see a project or an organization insisting on rebuilding everything for reproducible builds, they have institutional experience with these kind of build system failures. |
19:42 |
erlehmann |
ninja btw looks like it can handle some cases of dependencies, but i think it actually special cased c header files or something else that was really weird. |
19:42 |
|
___nick___ joined #minetest |
19:42 |
erlehmann |
josiah_wi i may have a minimal example for you, but i can only describe it |
19:42 |
erlehmann |
not setup the cmake thing |
19:43 |
MTDiscord |
<josiah_wi> If you do so I can implement it right now. |
19:44 |
|
___nick___ joined #minetest |
19:45 |
erlehmann |
josiah_wi so you make a c program that depends on some system header and include it with #include foo.h .then you build it. then you decide you want to deliver your own version of that header and put it in the local directory. then you rebuild it. unless you redo from scratch, make should not pick up on this, because this is an ne dep. |
19:45 |
|
Toothless joined #minetest |
19:45 |
erlehmann |
funnily enough i have actually heard an (unverified) story from someone |
19:45 |
|
GNUHacker left #minetest |
19:45 |
erlehmann |
who said they had a gpl system library |
19:45 |
erlehmann |
but wanted to use the bsd version in the release |
19:46 |
erlehmann |
to avoid their software to be gpl-ized lol |
19:46 |
erlehmann |
hehe |
19:46 |
erlehmann |
josiah_wi does my description suffice? |
19:47 |
MTDiscord |
<josiah_wi> Yep. |
19:49 |
erlehmann |
josiah_wi i also have a less absurd example from the real world. assume you have a build system setup to generate an index page for irc logs or something – files named after a predictable scheme like YYYY-MM-DD.txt. ideally this system would only rebuild index.html when a new page (for the next day) shows up. so you always have a non-existence dependency on the file for the next day. |
19:50 |
erlehmann |
so with build systems that can not actually represent this relationship (which is most of them), the file gets rebuilt on every invocation. |
19:50 |
erlehmann |
because what else are you gonna do? |
19:50 |
erlehmann |
(and yes, there are always horrible hacks that work like 90% or so) |
19:51 |
erlehmann |
josiah_wi another example is if you have generic build rules for targets that can be superseded by more specific build rules. very often, build systems do not make targets depend on their build rules. |
19:51 |
erlehmann |
so you get one of two situations: either, every target depends on, say, a makefile. when one rule is changed, everything is rebuild. |
19:52 |
erlehmann |
or, you have a target built by a generic rule, then you add a more specific rule and the target does not get to be rebuilt. |
19:52 |
erlehmann |
like imagine you have one rule for all html files and one specific how to build foo.html |
19:52 |
erlehmann |
josiah_wi was that clear too? i am very sleepy :( |
19:53 |
erlehmann |
i believe the build rule example is actually a case that you should be able to reproduce in cmake. |
19:53 |
erlehmann |
if i understand cmake correctly |
19:53 |
erlehmann |
ohhh |
19:54 |
erlehmann |
josiah_wi there exists one widespread system that actually can depend on things that are not existing at the point where dependencies are specified: udev |
19:54 |
erlehmann |
udev rules can be interpreted as a very weird broad class of non-existence dependencies |
19:55 |
erlehmann |
i mean specification for them |
19:55 |
erlehmann |
i need sleep |
19:56 |
erlehmann |
josiah_wi this is probably the microsoft paper https://www.microsoft.com/en-us/research/uploads/prod/2018/03/build-systems.pdf |
19:56 |
erlehmann |
> Excel is a build system in disguise. |
19:56 |
erlehmann |
good start, if you ask me |
19:57 |
erlehmann |
can't get worse, so it only gets better |
19:58 |
erlehmann |
> To support dynamic dependencies, Excel’s calc engine [Microsoft 2011] is significantly different |
19:58 |
erlehmann |
> from Make. Excel arranges the cells into a linear sequence, called the calc chain. During the build, |
19:58 |
erlehmann |
> Excel processes cells in the calc-chain sequence, but if computing a cell C requires the value of a |
19:58 |
erlehmann |
cell D that has not yet been computed, Excel aborts computation of C, moves D before C in the |
19:58 |
erlehmann |
> calc chain, and resumes the build starting with D. |
20:00 |
MTDiscord |
<josiah_wi> I reproduced your first example, and I see no way to fix it. xD |
20:00 |
MTDiscord |
<josiah_wi> Thank you. |
20:03 |
erlehmann |
josiah_wi oh also very funny: most ppl, if confronted with the existence of non-existence dependencies go through stages of grief or so. like it's almost exactly the same train of thought. |
20:04 |
erlehmann |
it starts with “this example is an obscure corner case” and ends with “wait, there are a lot of ways you can have an ne dep and my build is probably incorrect, wtf” |
20:05 |
erlehmann |
josiah_wi if you read the thesis, this is interesting out of historical interest https://web.archive.org/web/20160818124645/http://jdebp.eu./FGA/introduction-to-redo.html |
20:06 |
|
panwolfram joined #minetest |
21:02 |
|
Verticen joined #minetest |
21:16 |
|
independent56 joined #minetest |
21:18 |
|
Yad__ joined #minetest |
21:20 |
|
independent5647 joined #minetest |
21:21 |
|
v-rob joined #minetest |
21:30 |
|
fling joined #minetest |
21:42 |
|
Jason232 joined #minetest |
22:15 |
|
v-rob joined #minetest |
22:25 |
|
Jason232 joined #minetest |
22:47 |
|
mtm49 joined #minetest |
22:49 |
|
mtm49 left #minetest |
22:50 |
|
jordan4ibanez joined #minetest |
23:00 |
|
Sven_vB joined #minetest |
23:48 |
|
Taoki joined #minetest |