Time Nick Message 00:12 erle oh LOL 00:13 erle apenwarr redo is timestamp-based 00:32 erle schwarzwald[m] kinda funny, the maority of the time that my build spends if nothing needs to be rebuild is asking cmake to please make sure that IrrlichtMt is up to date. 00:32 erle schwarzwald[m] maybe you can optimize that? 00:35 erle i mean maybe i should just also build irrlichtmt 00:35 erle but it's so convenient to just ask cmake 02:18 muurkha erle: it is true that strace has trouble stracing strace 02:18 muurkha not sure if gdbing gdb has the same problem 09:38 erle what does “this comment was marked as off-topic” mean here? i pointed out that it is possible to do this with the minetest engine: https://github.com/minetest/minetest/issues/4049 09:39 erle ig maybe “non-surface path finding can be done already” is not an argument for not adding it to the engine 09:39 erle if done in lua 09:45 erle https://dercuano.github.io/notes/crank-comment.html how do you know you are not a crank? 09:46 erle > The major thing distinguishing me from the people I’ve listed above, then, would be that they have accomplished some significant things before retiring into crankhood, while I’m just some guy. 10:40 erle rubenwardy schwarzwald[m] in case you wonder how to make cross-platform builds using very small shell scripts: https://redo.readthedocs.io/en/latest/cookbook/redoconf-simple/ 10:40 erle > a handy way to build C and C++ programs that work on different Unix variants and Windows 10's WSL (Windows Subsystem for Linux), including the ability to use cross compilers and to compile the same source tree for multiple platforms in different output directories. 10:42 erle i am not doing that, but you both seemed to be worried/interested regarding it 10:57 MTDiscord @Goobax 10:57 Goobax[m]1 Wesh 10:58 MTDiscord lul 10:58 Goobax[m]1 Il fout rien parabellum 10:58 MTDiscord ui 11:24 erle non-euclidean minetest when 11:25 erle #define PI 3 ;) 14:40 schwarzwald[m] erle: It's far from portable or packageable, but I have my own CMake build working on my computer now. Oh, and it compiles faster for some reason. ^^ 14:41 schwarzwald[m] I haven't timed it yet, but it's already compiled 90 sources with -O3 in the time it took me to get my tablet, open SchildiChat, and post this message. 14:44 schwarzwald[m] I wasn't actually expecting it to *compile* faster so I'm really happy with this output. No precompiled headers or anything - it's just a plain ol' simple CMake with the bare minimum to work. 14:44 schwarzwald[m] s/output/outcome 15:04 erle great news 15:04 erle the intel GM945 can effortlessly do wayland and kernel mode-setting 15:05 erle i.e. i can now test minetest on wayland on basically the worst hardware that is able to run wayland without going the software rendering route 15:16 MTDiscord erle, https://content.minetest.net/packages/MisterE/karst_caverns/ 15:17 erle MisterE[m] think of the area clearing code in the minigame that was slow. some mapgens have this all over the place. 15:17 MTDiscord That uses 2 3d noises and 4 2d 15:17 MTDiscord Quite expensive 15:17 MTDiscord Not too slow but noticable 15:17 erle and the performance characteristics of the engines are as such that you can't meaningfully expect it to be fast if you do it wrong 15:18 MTDiscord True. But it can be slow if you do it right too 15:18 MTDiscord If you do too much 3d 15:19 MTDiscord just fyi: a high octaves setting in the noise params can result in poor performance (in my tests anyway) 15:19 MTDiscord Oh interesting. @grug brained modder ^ 15:19 MTDiscord 3D noise is mapblock total area ^3 15:20 MTDiscord 2d is that but ^2 15:20 erle cubic performance is NEVER going to be good 15:20 erle seriously 15:20 MTDiscord 6400 vs 512k 15:20 erle yep, that's 2 orders of magnitude 15:20 MTDiscord Fun fact the 3D noiseless setting of reverb takes about 40ms total 15:21 erle MisterE[m] my approach would be to simply do less work or do it smarter. 15:21 MTDiscord Even flying at 80 nodes a second I can’t catch up to it 15:21 erle at 80n/s a lot of stuff breaks down before you hit the invisible wall though, but in some games speedup items are useless due to mapgen lag 15:22 MTDiscord I want performance to exceed v7 and carpathian 15:22 MTDiscord I’m on track with that 15:22 MTDiscord 3d noise with 3 2d noises = smarter, maybe 15:22 MTDiscord Two noises alone can do it 15:22 MTDiscord You don’t need three 15:23 erle for example, any aircraft mod + unexplored areas + shitty lua mapgen = players having a bad time 15:23 MTDiscord Can but only in 2 planes 15:23 MTDiscord Guess what someone ran out of fuel exploring my mapgen trying to cross an ocean exceeding 22km lengths 15:23 MTDiscord Xy, zx, zy 15:23 MTDiscord In apercy's pa28 15:24 MTDiscord Remember a single 1d or 2d noise map that goes from 0-80 is fine 15:24 MTDiscord Just for Y 15:27 MTDiscord We only have to add or subtract that Y column anyways 15:31 erle MisterE the thing is, while sfan5 work on async mapgen will make your life easier to an extent, it will only make minetest work harder, not smarter 15:31 erle the jordach way is the way 15:31 erle choose some benchmark and try to beat it 15:32 erle and keep benchmarking your thing on the lowest-spec machine you have 15:32 erle “benchmarking” can also be ”try it out” ;) 15:32 erle on a low-spec machine you immediately figure out when you do a doo doo in your code 15:33 erle for example, mineclone2 fire used to update the fire texture 66 times per second 15:33 erle this was not a problem on the gaming rigs that fleck etc. have 15:33 erle and not a problem if you tested locally 15:33 erle but a huge problem for online multiplayer 15:33 MTDiscord Basically my tests involve the time taker verbose setting 15:34 erle fleck actually also believed that if you do it in C it will be necessarily faster 15:35 erle but a bad choice of algorithm or an insufficient analysis of constraints can beat a good compiler every singe time 15:35 erle single 15:35 MTDiscord On the dev machine I have 120ms as a rough limiter to per mapblock time 15:35 MTDiscord Currently I’m at about 95ms / 120ms 15:35 erle MisterE[m] apart from builtin functions, the thing you have to look out for is going accidentally quadratic or cubic. 15:36 MTDiscord Big O notation goes brrrrr 15:37 erle for example, placing nodes a 10 random locations. you can solve this at least two basic ways: first, you choose 10 random positions, then place nodes. second, you have a loop with the exit condition “target area contains 10 nodes of that type” 15:38 erle the first approach is obviously faster, because the second one will count the nodes in the area every time after you placed a node 15:38 MTDiscord Dumb minimalist solutions work better than expensive clever ones 15:39 erle depends. quadratic is the sweet spot where your solution might *look* minimal but really breaks down very soon. 15:40 erle a relevant lua-mapgen example: if you want an area to look “corrupted” or so, you want some kind of random-walk process from the center outwards 15:40 erle the naive recursive implementation of this will do a lot of unnecessary work 15:41 erle any approach that remembers where nodes where placed though can be only a little bit more code 15:41 erle but avoids doing almost as much work as the bottom-up solution (figure out all positions and set them in a single call) does 15:42 erle the bottom-up solution is of course far more performant than the top-down solution here 15:42 erle but there is a top-down solution with awful performance and one that is almost acceptable 15:43 MTDiscord I just put a ban on overthinking 15:43 MTDiscord How simple and obviously unsafe can I get it 15:44 erle well in this case, ”not overthinking it” was drawing a circle and just sprinkling nodes into it. cora did that. it looked awful. then i did the 2d random walk thing and improved it so that it worked in negligible time. later core managed to make a 3d version of it to make root systems. 15:44 erle there is no way “just randomly placing nodes in a cirle” would have sufficed for the 3d root system thing she realized she wanted at some point 15:45 MTDiscord It would have worked if you remembered to draw lines between points 15:45 erle wdym 15:46 MTDiscord Sprinkle points > connect them to the base nose position 15:46 erle the problem is a slightly bit more complex. you want less amount of nodes with distance from the center, or layers of different nodes at some point, but the structure in the end needs to be connected, as to seem organic 15:47 erle for example, cora also used the 3d function of this to make parametrized geodes, or so she told me 15:48 erle the problem with the point sprinkle is that it only works for the case where you do in fact have a probability distribution that can sharply be cut off at the outside 15:48 erle it would not look ”grown” 15:48 erle ultimately, i am pretty sure that an L-system tree would have solved this 15:48 MTDiscord That too 15:49 erle but we both had no idea how 15:49 erle so we settled for ”solution fits in head” 15:49 MTDiscord Tell me how long have I been overestimating the average competence of a minetest mod dev 15:49 erle as the problem was not complex enough to learn L-system trees 15:50 erle probably since the beginning? literally every piece of mod code i have seen (hilariously, including minetest_game) had obvious issues 15:50 erle not saying they are always solvable 15:50 erle but that they have issues is obvious 15:51 erle i think people encounter dozens of software bugs in a week, maybe over hundred 15:51 erle and just react with ”ok just don't hold it that way” usually 15:51 erle and i mean different bugs 15:51 MTDiscord Look I solve my problems by thinking different 15:52 erle me too. that is why i made, for example, the redo PR. if you are interested in guaranteed correct incremental builds or ever ran into a “i better rebuild completely to have a known-good binary” problem, check it out! 15:52 MTDiscord You know how clear CMake cache and make clean right 15:53 MTDiscord CMake only cares for cmakecache.txt in the root folder 15:53 erle yes, and i have worked about as long on making cmake behave until i realized it can not be fixed in principle 15:54 MTDiscord My Mac build scripts for exploit CMake dumb habits rather than fixing them 15:54 erle e.g. cmake is unable to record dependencies during the build (because it does the entire work before), so it can not know dependencies which on principle you can only know after building 15:55 MTDiscord That cache file contains all the settings 15:55 MTDiscord Stop chasing and jumping at shadows btw 15:55 erle i have a demonstrably faster incremental build 15:55 erle it is easy to test 15:55 schwarzwald[m] Jordache blowing smoke over here. 15:56 MTDiscord Nobody cares because it’s good enough 15:56 erle switch a git branch, cmake & make will rebuild everything. redo will not. 15:56 erle evidently i care. and schwarzwald[m] also cares. 15:56 MTDiscord Even MSVC does incremental better FFI 15:56 erle the first step to making this better with almost zero effort would be to not use a stupid timestamp-based build system. but the problem is that once you do that it becomes painfully clear that the dependencies are underspecified. 15:57 schwarzwald[m] Too much work. 15:57 erle i already did the work 15:57 erle ;) 15:58 erle but in the end, incremental cmake builds work *only* because rebuilding if the timestamp of a file has changed masks the fact that the cmake build files are badly maintained and probably hilariously wrong 15:58 MTDiscord That claim is bullshit Earle 15:58 schwarzwald[m] Doing it in a way that is likely to be applicable to most actual Minetest builds means creating a CMake generator for a build system that does the hash-based stuff. 15:59 erle Jordach you can very easily confirm this by making a post-checkout hook that sets the timestamp of each file to the last time it was modified in a git commit, then jump around branches and commits. it breaks FAST. 15:59 MTDiscord And running make clean solves the problem 15:59 schwarzwald[m] xD 16:00 MTDiscord And please take your meds 16:00 MTDiscord And get a more recent PC 16:00 erle Jordach alternatively, build minetest using my dofiles (probably using apenwarr redo, my redo is slower on mac because i was lazy) and output the dependency graph using “redo-dot” 16:00 erle all dotted edges in that graph are dependency relations for which i can 100% guarantee that cmake does not know about them 16:00 erle dashed 16:01 erle this is more about build correctness than speed 16:01 erle but yes, if you rebuild everything every time than it works out using cmake 16:01 erle but at that point, why are you using cmake at all lol 16:01 MTDiscord It wouldn’t compile if it wasn’t correct already 16:01 MTDiscord Please shut the fuck up 16:02 erle not true. also easy to verify. there are cmake-compiled headers. if you rebuild multiple times in the same directory, you may end up in a sitution where e.g. version number or git hash reported is wrong, because cmake did not regenerate all the code that depended on it 16:03 erle the solution to that is “don't do that and rebuild everything every time” or “don't work harder, work smarter” and use my build scripts 16:04 erle which are, i want to say, HILARIOUSLY inefficient 16:04 erle so i am kinda amused that they work 16:05 erle maybe you do not count ”the binary i am getting does not correspond to the source code i am seeing” as a miscompile, but i do 16:09 MTDiscord If anything it’s always miscompiled 16:10 MTDiscord Since it has to match your kernel and cpu arch 16:12 erle look, i don't care what you think. i want to be able to check out a branch that has a few difficulties and not wait more than 2 minutes for it to rebuild and not have a wrong binary afterwards 16:12 erle and i want git bisect to work 16:12 erle those are very practical issues 16:14 erle another thing 16:14 erle something on https://github.com/minetest/minetest/pulls goads firefox into hogging an entire CPU core. what is it? 16:15 erle it does not happen on the issues list 16:16 erle and noscript does not protect against it, oh my 16:16 erle i bet it's some CSS or SVG bullshittery 16:25 erle using the firefox webrender debug profiler i can confirm that the /pulls github interface does something that invalidates the drawn page a lot 16:25 erle but no idea what it is 16:35 ROllerozxa welcome to the modern web 16:45 erle ROllerozxa i have enough experience that i can pull that off without JS while achieving something, but i can find no animated element on the page that would provoke a full redraw. anyways, here, have some 3D SVG: http://daten.dieweltistgarnichtso.net/src/political-compass-surreal.html 16:46 erle ROllerozxa given that you suggested i make a proof-of-concept of the way i would build minetest, would you consider the reactions i got so far to be a) exceeding exppectations b) okay c) disappointing 16:46 erle i think it was a good suggestions after all 16:46 erle but so far it has only convinced people who have tried it (which are very few) 17:07 Goobax[m]1 AFCM: 17:09 ROllerozxa well the PR hasn't been prematurely closed yet so I guess that's a positive 17:09 ROllerozxa I haven't tested it yet though, maybe I should 17:25 erle ROllerozxa well i guess it represents a proof of my grandiose claims 17:25 erle it's still shit though 17:25 erle i am opening too many subshells 17:25 erle such is the problem when everything is a shell script 17:25 erle technically, it does not need to be though, a dofile can be any executable 17:26 erle i can definitely reduce filesystem outputs 17:27 erle ROllerozxa please test it. it's really easy and maybe you find some obvious speedup. 17:28 erle a full build with cmake on 8 cores here took a bit more than 3 minutes, a full build with apenwarr redo and PCH on 8 cores took a bit more than 4:30 17:30 schwarzwald[m] erle: If you want to time my build as well it's on my fork now, refactor/build branch. 17:30 erle whereas my own implementation took over 9 minutes for the same task (but arguably because it does a lot more work, and the parallel build feature is stupidly simple) 17:30 erle schwarzwald[m] is it faster than minetest proper? 17:30 erle on your machine i mean 17:30 schwarzwald[m] It seemed like it, but I'd be interested to have it timed. 17:31 erle give mea link to a PR or a command with which to check out your branch please 17:31 erle otherwise i have no idea 17:31 schwarzwald[m] One catch: it won't build any tests yet, so a fair comparison will require disabling the tests on Minetest proper. 17:31 erle oh 17:31 erle how are you determining dependencies btw? maybe i can steal some parts 17:32 erle though the cmake scripts i have seen were WAY WAY UGLIER than anything i can cobble together in shell 17:32 erle they are more portable, but WHAT THE HELL 17:33 * schwarzwald[m] sent a code block: https://libera.ems.host/_matrix/media/r0/download/libera.chat/fe2093a4b81a25d541cef37e3fd35bc936b658e4 17:33 schwarzwald[m] erle: See what you think; I didn't clean up the find scripts yet, but my goal was to make it as clean as possible. 17:34 schwarzwald[m] I found dependencies by building without deps and seeing what broke, adding the dep, and repeating. xD 17:34 erle thanks 17:34 erle lol 17:34 schwarzwald[m] I found there was an unspecified dependency on the bundled bitop library. 17:34 erle that's probably how i figured the -l flags 17:34 erle neato 17:35 erle i guess that means whenever that got changed, the incremental rebuild was incorrect? 17:36 erle i mean, if it is not tracked, it is not tracked hehe 17:36 schwarzwald[m] In this case, probably not. It was technically specified globally somewhere (it had to be or this wouldn't have compiled ever). 17:36 erle oh i see 17:37 schwarzwald[m] What that means of course is that if it changed it would cause a full rebuild. 17:37 erle ha 17:37 erle well, if you ever find a clear case of “check out this commit, then go to this other commit, incremental build miscompiles” maybe that's another untracked dependency 17:37 erle can you tell me how i ended up in the situations where cmake did not recompile the version thing? 17:38 erle i mean rebuild 17:38 erle the version header 17:38 erle is it simply not tracked for each file that includes it? 17:38 schwarzwald[m] Maybe messing with the CMakeLists.txt timestamp? 17:38 erle nope 17:38 schwarzwald[m] You have to rerun the configuration step when the version variables change. 17:38 erle i always did what rubenwardy suggeste, i.e. deleting stuff 17:38 erle i know 17:39 schwarzwald[m] As long as the configuration step runs it'll always configure the `cmake_config.h` header. 17:39 erle what i *think* what happened is that cmake may not have rebuild that header somehow 17:39 erle but that can't really happen when i think about it 17:39 erle and i always did ”cmake . && make” or with a build dir 17:39 schwarzwald[m] Yeah, that shouldn't happen. 17:39 erle it only ever happened when that file was already there, so … could it be that cmake can forget about that it has to generate it? 17:40 erle maybe it does not generate it in some circumstances when it thinks it has done that? 17:40 schwarzwald[m] I doubt it, if you're talking about cmake_config.h 17:40 erle yeah that and two others are generated 17:40 schwarzwald[m] I don't know about the other files it generates. Those could potentially be handled inappropriately. 17:40 erle there is one for the git revision 17:40 schwarzwald[m] I think there's an unspecified dependency on a custom target. 17:40 erle and one for the tests 17:41 schwarzwald[m] The one for the git revision runs a Python script or something, right? 17:41 schwarzwald[m] I don't think that one was specified as a dependency. 17:41 erle no, just shell commands. and it is a good example of how a cmake script can be more portable but be a way uglier beast than a simple shell script. 17:41 erle i mean 17:41 erle it's not shell commands 17:41 erle it's cmake variable wrangling 17:41 erle but essentially it's probably shell commands if you scrape away the paint layer 17:42 erle anyway, now that i have a tool that can output what the dependency tree *should* look like, i hope your job got much easier 17:42 erle i just wish cmake would output the source file dependencies as well 17:42 schwarzwald[m] Oh, I have extra warnings enabled so don't have a heart attack. 17:42 erle then we could verify your build using mine 17:43 erle do you think that suggestion has merit? 17:43 erle like, make cmake cough up the dep tree 17:43 erle then compare it and see what is different 17:44 erle but automatically, not by hand 17:44 schwarzwald[m] Very much so. 17:44 erle then i look forward to whatever makes it do that 17:44 erle i mean, really i can't imagine it can't do it 17:44 erle it *has* to know the sources 17:44 erle i bet it's just non-default 17:45 schwarzwald[m] It won't know the sources of the libraries it depends on, but it must know the source files that are required to build the project. 17:46 schwarzwald[m] It also won't handle the situation well where a library we depend on underspecified its own dependencies. 17:48 erle well, you are not building any libraries, are you? 17:48 erle btw, why is the cmake configuration step for irrlicht so slow when nothing changes? 17:48 erle a large part of just invoking redo on my branch is waiting for cmake to tell it that yes, irrlicht is up to date 17:49 erle i can speed it up obviously, but only at the cost of building irrlichtmt using redo 17:49 schwarzwald[m] I don't know. 17:49 erle it would only save 20 to 30 seconds or so 17:50 erle and i never had any reliability issues with it due to the strict version requirements 17:50 erle and the irrlicht headers included in minetest (at weird places sometimes) are already tracked 17:53 schwarzwald[m] I cannot find any way to generate a graph with source files. 18:01 erle another milestone: minetest also seems to build using “do”, the minimal implementation that always rebuilds everything and is even stupider about dependencies and source files than make is 18:02 erle the way do marks a file as being generated is built is creating a zero size file ${FILENAME}.did 18:02 erle lets see how far slower that build is than using cmake 18:04 schwarzwald[m] erle: I have a bug again 18:04 erle tell 18:04 schwarzwald[m] > /usr/bin/ld: /tmp/minetest.WWCK2E.ltrans93.ltrans.o: undefined reference to symbol 'dlclose@@GLIBC_2.2.5' 18:05 schwarzwald[m] I know how to link the DL libraries, but I can't tell which target this is. 18:05 erle what do you mean 18:05 schwarzwald[m] I can't tell which source file needs this. 18:05 schwarzwald[m] Or whether a dependency needs it. 18:06 erle i have a simple and funny solution 18:06 erle build using my redo implementation (which uses -ldl) and then examine the source graph using: redo-dot '*ld*' >deps.dot 18:07 erle or tell me the name of the library and i do the redo-dot thing for you 18:07 erle and post the graph 18:07 schwarzwald[m] I'm looking for an 'ltrans.o' 18:08 schwarzwald[m] ltrans93 might be the library 18:08 erle OH LOL 18:08 erle building using “do” is faster than building using cmake 18:09 schwarzwald[m] For Minetest? 18:10 erle yes, do takes 8:35 for “./do src/precompile.gch.h all” vs cmake taking 8:55 for “cmake . && make” 18:10 erle on a single core 18:10 erle maybe cmake is doing some important configuration step with these 20 seconds 18:10 erle within 18:10 erle but honestly this shoud be a motivation for both of us 18:10 schwarzwald[m] I challenge that my script is comparable to do. 18:11 erle because you can't do less work than do as a build system basically 18:11 erle i'll test it soon-ish 18:11 erle like, maybe today or so 18:11 erle first the build graph thingy 18:13 erle schwarzwald[m], just to be sure, you want all dependencies or dependers of ltrans.o? 18:13 schwarzwald[m] Grep doesn't show any calls to `dclose` in Minetest. 18:14 schwarzwald[m] erle: Yes. 18:14 erle neither redo-sources nor redo-targets gives me that file 18:14 erle i try “redo-sources |grep libdl” 18:14 schwarzwald[m] Ok, that's interesting. 18:14 erle that gave one source file /usr/lib/i386-linux-gnu/libdl.so 18:15 schwarzwald[m] What are its dependers? 18:15 erle wait for it 18:15 schwarzwald[m] (That is super useful BTW!) 18:16 erle yes, maybe you should use a build system that has this lol 18:17 erle hmm, give me a moment to verify this 18:19 erle schwarzwald[m], judge for yourself, the output of “redo-dot '/usr/lib/i386-linux-gnu/libdl.so' |dot -Tpng” https://mister-muffin.de/p/x-pm.png 18:19 erle same on x86_64 18:19 erle i mean not same library name 18:19 erle but i can not say 18:19 erle thanks for that ig :D 18:19 erle we can wait a week and ask all the questions in #minetest-dev ig :P 18:24 schwarzwald[m] Ah, found it. 18:24 erle tell 18:24 schwarzwald[m] erle: It's lua 18:25 erle oh 18:25 erle then i don't need to link libdl 18:25 erle because i am linking against system libraries, right? 18:25 erle well i should try all that 18:25 schwarzwald[m] If you're linking against a dynamic LuaJIT you don't need to link against libdl. 18:26 schwarzwald[m] This is another case of Minetest's dependency handling being an absolute mess to read and work with. 18:28 schwarzwald[m] Yep, the DL libs were missing from the Lua dependencies. 18:28 schwarzwald[m] They were never specified. xD 18:28 sfan5 they are specified, just incorrectly 18:28 sfan5 lib/lua/CMakeLists.txt 18:28 sfan5 39: set(COMMON_LDFLAGS "${COMMON_LDFLAGS} -ldl ") 18:29 schwarzwald[m] Ah, there it is. 18:29 schwarzwald[m] You're right. 18:29 sfan5 (the flags don't really go anywhere, 'incorrectly' like I said) 18:29 schwarzwald[m] We may not have written the CMake in the bundled lua ourselves, IDK. 18:33 * schwarzwald[m] sent a cmake code block: https://libera.ems.host/_matrix/media/r0/download/libera.chat/1c6dd1d8dfa67726b3df89c10374d48885e80f50 18:34 schwarzwald[m] Little teaser. xD 18:34 schwarzwald[m] It's very far from being portable, though. 18:34 schwarzwald[m] I have a long ways to go before I can consider PRing it. 18:55 erle rubenwardy celeron55 given that we have two people who are right now working on cleaning up the build and another 4 or 5 (not necessarily in this channel) who are interested in solving this, could you please reopen https://github.com/minetest/minetest/issues/11749 ? sfan5 closed it because he thought it is not feasible to fix all of it, but a) i have proven you can fix all of it (albeit with a different build system) b) it seems to 18:55 erle me that schwarzwald[m] is working on fixing at least what can be fixed about cmake 18:56 erle also i think closing bugs with ”it's too much work” when several people are working on it is a bit weird, to say the least 18:56 sfan5 read the closure message again and contemplate whether you have addressed all of its points 18:56 erle the issue is not titled “use redo instead of cmake” 18:57 sfan5 given you have obviously not done what I said I will not reply further 18:59 erle look, i have read it. i could have made three or more different issues instead i guess. 18:59 erle just because i have a solution it does not mean it has to be THE solution. 18:59 erle but the problem persists 18:59 sfan5 in that case I am sorry for your reading disability 18:59 sfan5 maybe find something else to do instead of annoying other people with it 19:02 erle sfan5 could you please be a bit less of a dick? i have seen this dismissive and arguably insulting behaviour multiple times, not only towards me, where you misunderstand something and then act like you know it all. often you walk it back, sometimes not. i get that you are annoyed by people not providing accurate information (e.g. me) or writing walls of text about stuff you have no interest in (e.g. me). but you know fuck all about 19:02 erle build systems and i don't intend to annoy you or anyone else. i want to solve a real problem that i have and you do not. 19:03 erle it's tiring 19:03 erle just ignore the fucking topic and let others do their stuff 19:04 schwarzwald[m] Excuse me, but this kind of language is unacceptable in a dev community. 19:04 erle after all, you don't have to do shit, but throwing a wrench into the works because you can not imagine a solution that you can accept is just frustrating. 19:04 erle there will be something that is better than the status quo, most likely not from me. 19:05 schwarzwald[m] There's already been a suggestion raised to ban you, and I don't think anybody will vote against that after such a derogatory, ad-hominem tirade against one of the lead core-devs. 19:06 erle schwarzwald[m] yep, it's rude. i can't stand the mix of “if you want bugs fixed do it yourself” and not “oh not THAT WAY”. 19:06 schwarzwald[m] Whether you like it or not he's in charge of the project and you are not. 19:07 erle look, sometimes asking people to be less of a dick works. you are trying it right now with me. 19:07 erle also there are multiple people who i asked if they wanted to contribute to minetest and who are specifically not doing it because of the dismissive behaviour towards issues dev consider unimportant. 19:07 erle they are not here, so i have no proof lol 19:07 erle but it's exceedingly frustrating 19:07 erle and telling me i have a reading disability is insulting 19:08 schwarzwald[m] I haven't called you any such thing. I'm just warning you, because I think you crossed a line and everyone here can see it. 19:08 erle no but sfan5 has 19:08 erle i actually have difficulties writing and arguably difficulties explaining things, reading comprehension is fine i think, reading speed is 2 to 4 of the next-slower person i know. 19:09 schwarzwald[m] Some people might not be sympathetic with that excuse. 19:09 sfan5 I am being a dick because any time I regrettably reply to your messages (this one happened to ping me) I get a reply that makes it obvious you are ignoring the context and this would turn out to be yet another huge argument that goes in circles about nothing 19:09 erle it's not an excuse 19:10 erle oh i am sorry about the ping then 19:10 sfan5 that's not really the issue 19:10 erle i hate it when people highlight me and i don't want to think about it 19:10 erle in this case there was not even anything meant in it for you, i obv didn't think it through 19:12 erle well, i guess i tried. regardless, please be friendlier on other issues. i am pretty sure people are making fun of me without me knowing it, but you should know people are also making fun of you without you knowing it. 19:12 erle and in both cases it's some kind of abrasive behaviour 19:12 sfan5 when you mention dismissive behaviour then I can assure you it's intentional because 90% you come up is a waste of time in my eyes 19:13 sfan5 like seriously there's a release coming up with regressions that need solving and you have been pouring time into build systems for weeks, lol? obviously you aren't required to do anything as a random community member but I can't say that is productive either 19:13 sfan5 but I think I can save us both a lot of time if I put you on my ignore list, just don't change nicks too often or that won't work 19:14 erle i have pouring time into the build system for days, to actually find the source of two of those issues 19:14 erle i told you i want git bisect to work 19:14 schwarzwald[m] Thanks for working on the release sfan, I know you don't get a lot of thanks for this stuff, at least you sure haven't recently. 19:14 erle i'm starting with the autoforward thing and hope i don't end up at some giant commit 19:14 sfan5 you can take this as informational, nothing you say is going to redeem this really 19:15 erle oh i know 19:15 sfan5 schwarzwald[m]: I haven't really done much recently 19:15 schwarzwald[m] Because erle has been preventing it by constantly being a distraction? (/s) 19:15 erle and i know the dismissive behaviour it's intentional. i just think there is plenty of time to dismiss issues when no one is going to put in the work and no one is really interested. take the mali 400 GPU thing. no one is writing those shaders. 19:16 erle and i will not make sure minetest shaders work with my crap GPU, i'll just try to disable the option for shaders on shitty hardware. 19:16 sfan5 schwarzwald[m]: I've been more motivated to work on other projects recently so that's what I've been doing 19:16 erle so closing the mali 400 GPU issue is arguably correct, the issue is not going anywhere, the solution is to just not use shaders 19:17 schwarzwald[m] Makes sense, I hope those projects go well! 19:17 erle but when you have community interest in a topic to the extent that multiple people are doing something about it, then i think it's wrong to judge their solutions without ever having seen or tried them. 19:18 schwarzwald[m] erle: Do you think Jodach will launch a nuke at my house if I tell him I may have broken Mac OSX compat, or should I risk it? 19:18 erle schwarzwald[m] nukes it is 19:18 erle jordach will justifyably make fun of you probably 19:18 schwarzwald[m] Hmm, that's what I thought as well! 19:19 erle but i can present a more acceptable target, myself: i did not know how to correctly invoke “stat” on OS X, so my redo implementation will just not work unless you install gnu coreutils hehe 19:19 erle you can use apenwarr redo though, that's even in brew 19:19 erle it has 1.6k stars on github too 19:20 erle cmake has no stars on github (because it is not on github) 19:20 schwarzwald[m] That won't be a problem unless CMake gets hacked because they tried to manage their own git repo security. 19:20 erle hehe 19:22 erle btw: the only thing i think is more frustrating than closing issues with a justification relying on not understanding the thing is when something is closed and there obviously was some talk about it or some consideration, but there is no message. 19:22 schwarzwald[m] I have someone I think to test my build setup on MSVC, so I'll be able to get it working on two platforms at least. 19:22 schwarzwald[m] I can test it on OpenBSD as well, myself. 19:23 erle oh nice 19:23 erle i'll test your cmake thing, can you test my redo thing on openbsd? and maybe tell me what the openbsd tracing facility is 19:23 erle i suspect it's not strace 19:23 schwarzwald[m] Sure, I can set that up later. 19:24 erle thanks 19:24 schwarzwald[m] I can't fully test it TBF, because I don't have a graphical environment set up, but I can make sure it builds. 19:24 erle that's all i want to know. the reason i made it as shell script is that i do not want to add any build dependencies. 19:24 schwarzwald[m] Where should I download the redo thing from? Just clone your fork? 19:25 erle just clone the branch i do the PR from and install either my redo, apenwarr redo or apenwarr do. i haven't tested with any other implementation so far, but those three are the only somewhat popular i think. 19:26 erle mine will give you the greatest dependency graph coverage, apenwarr redo will give you the most error messages, apenwarr do will build fastest (because it does not record dependencies) 19:26 muurkha btw I would like to add that I do not think it is crossing a line to ask someone to be less of a dick when they are intentionally insulting you, schwarzwald[m] 19:26 erle the error message thing is only relevant if there is an error in the buld files 19:26 erle well, the line was crossed. twice. 19:29 erle anyway, i won't open another issue on this. but i am very sceptical that if schwarzwald[m] can improve the cmake build to the point that some part of issue #11749 is solved it will be rejected as WE DO NOT WANT TO HEAR ABOUT IT. 19:29 ShadowBot https://github.com/minetest/minetest/issues/11749 -- CMake does not capture all dependencies, causing erroneous incremental builds & build failures 19:29 muurkha there are a variety of reasonable ways to respond to somebody intentionally insulting you, and asking them to please not do so seems like a pretty good one 19:29 muurkha schwarzwald[m]: was your problem that he used the word "dick"? 19:31 erle i can assure you i know much more colorful language. but i have no interest in getting into a tone argument. 19:31 schwarzwald[m] I was concerned that his response might be considered insulting, and I didn't think it was appropriate to respond to an insult with another insult. Even if this is not a professional environment, it should be. 19:32 muurkha if it were me I wouldn't consider "please be a bit less of a dick" insulting, and it looks like his interlocutor didn't either, since his response was "I am being a dick because [criticism]" 19:33 erle look, i think both he-who-shall-not-be-named-to-be-not-highlighted and me are usually holding back (we have been frustrating each other for a while). to me it's not a big deal, but if it is to you, i can assure you i can stop insulting people through words and continue to do it by writing code that proves some outlandish crank-sounding claims i made or disarpoves some common-sense-intuition that someone else had. 19:34 muurkha I don't agree that we should aspire no higher than professionalism, but your opinion weighs a lot more than mine 19:34 erle disproves 19:34 muurkha I think we can aspire to much higher values than professionalism 19:34 erle i obviously have more problems writing than reading 19:35 erle i actually tolerated a friend of mine insulting me for years, because i could take it. it turned out that quite a few people distanced themselves from people around her (incluiding me, bc i was friends with her) because *they* felt bad when she insulted me. 19:35 erle so i totally get it that insults can produce a bad mood 19:36 erle even if you are not insulted yourself, that's totally valid 19:37 erle muurkha btw, about worrying that you sound like a crank when you have outlandish claims (re: an article in dercuano) – i usually ask people who are more competent or similarly knowledgeful to double-check my work. 19:37 schwarzwald[m] I didn't mean to be pushing any kind of personal opinion, I was just warning him because it came across to me as socially inappropriate. 19:37 schwarzwald[m] Maybe we come from different cultures. 19:37 erle asking DJB is pointless though, he never responds to emails 19:40 erle schwarzwald[m] regretably, a part of minetest culture tolerates much worse behaviour than me or anyone else in this channel. if you ever come across a server that says “no dating”, they mean “don't spam our public chat with your flilthy perverted fantasies, we can assure you no one is interested”. took me a while to understand it ;) 19:41 schwarzwald[m] Those warnings suggest that that's not tolerated. 19:41 erle at least contrasted to minecraft, i have absolutely seen no love for fascists. everyone hates them, even the griefers. 19:41 erle on that server lol 19:41 erle search the server list for ”this is a dating server” 19:41 erle jr 19:41 erle ;) 19:41 erle “jr” = “;)” without shift on neo2 19:41 schwarzwald[m] Minetest is FOSS so it's going to atract all kinds of people. 19:42 schwarzwald[m] These channels are moderated, however. 19:44 erle ultimately it's pointless to continue this. both you and me can maintain our own build scripts if they are superior, as in the end, you will not need more than a few thousand lines and i will not need more than a few hundred. 19:48 erle schwarzwald[m], are you satisfied if i'll assure you that i'll try to be more friendly towards people who insult me? you can call me out if you notice me doing it, in fact i'd appreciate it. 20:07 schwarzwald[m] You have no obligation to satisfy me and I cannot ask you to. 20:08 schwarzwald[m] Fun fact: you can have CMake propagate source file dependencies to dependants. xD 20:08 erle well, i am not trying to not cause bad feelings without purpose. 20:08 erle what does that mean? 20:08 erle are we getting the graphviz output we need to compare redo and cmake graphs? 20:09 schwarzwald[m] I mean I can make it so Irrlicht's CMake tells Minetest to compile Irrlicht. 20:09 erle “well, i am not trying to not cause bad feelings without purpose.” ← obviously i have a writing problem 20:09 schwarzwald[m] I'm not personally insulted at all. 20:10 schwarzwald[m] I'm not trying to make excuses for anyone either. 20:12 schwarzwald[m] I just forgot that telling people you think they're out of line is taboo, no people told me I'm out of line. 20:12 schwarzwald[m] s/no/so/ 20:13 schwarzwald[m] (It was a fair point, though.) 20:13 erle i mean i am not trying to upset people without getting something out of it. for example, when someone forcefully touches me without my consent, i often threaten violence immediately, if i think this will intimidate them enough to never, ever do it again. this is excessively rude – but it works. and of course i won't say it to a bouncer, police, or some random drunk person or someone who just stumbled into me. i only say it t 20:13 erle o people that do not respect boundaries (like not wanting to be touched). 20:13 erle it's important to know that i'm a wimp, i won't win a fight. 20:14 erle but the message is “this is so far over the line that if you do it again, i will hurt you”. insulting peeople back when you feel insulted can work similarly, with the added complication of much higher risk of escalation (e.g. yelling at each other). 20:15 erle but usually, if i upset or annoy people, it's not intended, it's a side effect 20:21 erle schwarzwald[m], you are not out of line and teling people that they are out of line is not taboo btw 20:22 schwarzwald[m] I've pushed a much cleaner refactor to my branch, including the libdl fix. 20:22 schwarzwald[m] 166 LoC in src/CMakeLists.txt now. xD 20:23 schwarzwald[m] It'll necessarily be more in order to be be portable. 20:24 erle what a shame that the issue you'll be solving is marked WONTFIX :P 20:25 schwarzwald[m] I'm not planning to solve it, or make a PR necessarily. :) 20:26 schwarzwald[m] I'll use it locally, let others try it if they're interested, and then when people start asking me to PR it I'll know it's time. 20:27 erle yeah i only also got really motivated when i got feedback from others that amounted to “i'll probably use that if it holds what you promise” 20:27 schwarzwald[m] Or not, because I don't want it to be merged prematurely - that'd be even worse. 20:27 erle if you don't want it to be merged, don't request a merge lol 20:28 erle but i can assure you, getting approval is so insanely hard – probably even harder when there is not only no support, but active dislike for even touching the topic. 20:28 erle i doubt you need to worry anyone likes your patches *too* much 20:28 schwarzwald[m] That's good news. I'm looking forward to seeing how redo works out on my OpenBSD machine. 20:29 erle to get qestionable stuff merged without delays you pretty much need to be a coredev (not saying that all or even most of the stuff they do is questionable, but i have seen some things that were obviously wrong and i have been annoying about it) 20:30 schwarzwald[m] I've never contributed anything really helpful to a release IIRC, but other than a few justifiable exceptions I've never found it hard to get approvals. 20:30 erle but even then you need to convince one other person 20:30 erle and that is HARD 20:30 erle well, the problem is that people have other interests than you 20:30 erle and lives you know 20:30 erle no one works on this full time 20:30 schwarzwald[m] Of course, just like myself. 20:31 erle i'm just saying i have noticed that some are more equal than others 20:31 erle but it's hard anyway 20:31 erle and that's good 20:31 erle if you merge everything, you end up with a big ball of mud, so i don't think having a high barrier to endry is a bad thing 20:31 erle entry 20:32 erle do you know catalysm: dark days ahead? 20:32 schwarzwald[m] Nope. 20:32 erle it's a very detailed roguelike and i think they have so far merged every single absurd feature someone implemented. 20:33 erle think dwarf-fortress-like complexity, but a) accessible b) free software c) developed by furries 20:33 erle well i can't promise you the last part 20:33 erle but they draw the line at excrements 20:33 erle everything else is fair game 20:33 erle so the game has a very detailed drug crafting system. and i don't mean insulin, i mean heroin. or a system to layer the clothes you are wearing in a different way. 20:34 erle there is a scent overlay that is invisible to players except in debug mode, but mobs can use it 20:34 schwarzwald[m] heh 20:35 erle and one advice for reporting bugs is “make sure that you do not have the trait ’schizophrenic’ before you report a bug” i think, because it messes up the interface slightly 20:35 erle i once figured out that my character was going off the rails when a zombie had the name “your mom” 20:36 erle it's the type of game where your character dies not because people turn into zombies when bitten, but because they did not clean the wound and did not have antibiotics 20:36 erle and where stuff that should work, just works 20:36 erle lighter, duct tape and spraypaint? yep, that works 20:36 definitelya erle: Zombie-furries...? 20:37 definitelya Now that's a scary thought. 20:37 erle definitelya no, the game has some hints that some of the devs might be or have been furries though. or maybe it's an elaborate prank. 20:37 erle anyways, i wished minetest had some similarly intuitive crafting 20:37 erle so far i have seen the normal way, the ”do everything like minecraft” way and … nodecore lol 20:38 erle exile is a bit like cataclysm, but mostly in the way that you'll die a lot 20:38 erle my first character in cataclysm died because it was too cold and i had a lighter 20:38 erle and so i was like: this is a game, fire is hot, i set something on fire 20:38 erle never set a chair on fire indoors 20:39 erle it can lead to smoke inhalation! 20:39 erle so yeah, what would be stupid in real life is a stupid decision in the game 20:39 definitelya My first one got mauled by dog fiends. :( 20:39 erle drinking out of the toilet? you better cook that water, or you puke. and when you puke, you lose satiation from stuff you ate previously. 20:40 erle in game design terms, i think cataclysm DDA is the most complex game i have seen people pick up without a manual 20:56 muurkha erle: I think I mostly got over worrying about how I sounded in Dercuano, Derctuo, and Dernocua because nobody reads them anyway :) 20:59 erle muurkha i think worrying about sounding like a crank is totally appropriate when making outlandish or even just original claims. but when others can verify themselves one should not bother too much. 20:59 erle except, maybe, when you start sounding like moldbug. the whole urbit thing is such a stupid waste of time. 21:01 erle i.e. now i avoid every type of software written by devs who e.g. constantly rename their core features. it's a really strong scam signal. or that marketing is steering the development. 21:02 erle specing given that you have your own cheat client, you found any build problems that schwarzwald[m] or me could solve or might have solved already? 21:02 specing I don't have a cheat client, I have an Improved Player Experience client 21:02 erle muurkha btw, since i forgot that apenwarr redo was timestamp based, you should verify everything i claimed about it. don't let me discourage you. 21:02 erle specing that's fine, i'm also an improved player 21:03 specing (: 21:03 erle i'll be presenting semgrep in the context “how i found a dupe in mineclone2 the devs missed” at work soon :P 21:03 erle it's a really nice tool btw 21:04 erle specing what are the main features you added btw? 21:04 specing I see a lot of arguing, and not a lot of build issues 21:05 specing erle: oh, just node and inventory interaction stuff 21:20 erle specing please extrapolate your onions https://github.com/minetest/minetest/pull/12592 21:21 specing I see Github, I boycott 21:24 MTDiscord gee, better start boycotting Minetest then 21:25 specing yuck discord 21:26 ROllerozxa is this better 21:26 MTDiscord debatable, use whats best for you 21:26 specing the bridge is still there, so no 21:27 wsor specing is kinda https://xkcd.com/1782/ tbh 21:28 ROllerozxa IRC do be kinda cozy tho but doing IRC on mobile is a bit jank 21:28 erle you had to say this on IRC using an IRC client 21:28 specing Totally ignoring that Matrix exists 21:29 erle ROllerozxa try using an irc client via XMPP bridge on mobile using a mobile xmpp client. it solves all of the ”i am timeouting all the time” issues and a bunch more. 21:29 erle specing matrix exists and i invite you to take a look under the hood. it's amusing how bizarre it is. 21:30 specing Wonder what you'd find if you could look under discord's hood 21:30 specing might need a flamethrower 21:30 wsor matrix is a step in the right direction, however its got quite a lot of rough/broken edges 21:30 ROllerozxa specing: spyware and furries, better not look xD 21:31 specing wsor: right, they just need to start data mining their users and selling it all to advertisers and then it'll be perfect 21:32 wsor more referring to functionality things, but whatever float your worldviews boat 21:32 schwarzwald[m] As a wise man once said: "Matrix is a protocol." 21:33 erle i maintain matrix is a step in the entire wrong direction, insofar that it is less extensible than xmpp, creates an absurd amount of requests and the spec is changed when the biggest client has a bug the devs do not want to fix. but enjoy your “i can make a server hang by joining a room on another server in a slightly weird manner” chat protocol ig ;) 21:34 erle schwarzwald[m] the problem with matrix is that the ”is a protocol” thing breaks down when the spec is changed if the most popular client or server – maybe even maintained by the company that writes the spec – makes a doo doo in the bug trackerj 21:34 ROllerozxa also re: mobile IRC, it's not that, I already have a bouncer I connect to and Revolution IRC is a decent enough app, but if I just quickly connect to my bouncer while it's connected on my computer I will not get any message context, it's a bit irritating having this desync of the message history >< 21:35 erle ROllerozxa that's the beauty of mapping IRC to an XMPP MUC, your client can ask the transport for the history (i think, it has been a while) 21:35 erle in fact, when you join an xmpp muc you always get previous messages if the server will deliver them. slack, famously, did not do this, because you could have exported the chat history via that. 21:36 erle (slacks business model is holding your chat history ransom) 21:36 ROllerozxa interesting 21:36 erle just install e.g. gajim (desktop) or conversations (mobile) and join some multi-user chat 21:36 erle not sure if conversations does it, but gajim has two options for “how far back“ and “how many messages” 21:37 erle ROllerozxa chose any client that has full support on this list to get full end to end encryption btw https://omemo.top/ 21:37 erle i used the IRC-via-XMPP solution when i was traveling by train more often 21:39 Izaya biboumi is <3 21:42 erle is this a dating channel? :D 21:42 Izaya biboumi is the XMPP->IRC bridge I use 21:56 erle so we already have an expert on the topic here 21:56 erle that's great news 21:56 erle Izaya, can you confirm my assertions about MUC reliability when mapping an IRC channel? and automated earlier message delivery? 23:48 Izaya I've got a weird case in that I always have an XMPP client running somewhere, usually on my desktop at home, but I do get history when I connect 23:49 MTDiscord Hah, acting like XMPP isn't bizarre or convoluted under the hood 23:49 MTDiscord Matrix's client API is far simpler and more to the point than XMPP could ever hope to be, but both need some help 23:49 Izaya I'm pretty sure that if all the clients talking to the IRC bridge leave it'll disconnect after a while, but you could probably configure it to stay connected like a bouncer 23:50 Izaya XMPP certainly does have issues, the lack of good desktop clients being the most obvious one. 23:50 MTDiscord Nah, XMPP has decent desktop clients 23:51 MTDiscord XMPP just lacks decent cohesion and library access for a wide amount of mature clients 23:51 Izaya Gajim is a mess with performance issues, Dino is ... limited, and Psi(+) doesn't support OMEMO 23:52 MTDiscord I've had good luck with both Gajim (modern Gajim, not old Gajim) and Dino 23:52 MTDiscord Yes Dino lacks some of the advanced stuff but for general usage it's more than enough 23:52 Izaya Gajim is also skipping the whole standards thing of late. Very frustrating. 23:53 MTDiscord To be fair, XMPP can't even decide which standards to use sometimes 23:53 MTDiscord I mean, just getting an avatar to work on an MUC is..fun 23:53 Izaya it's one thing to have too many standards, it's another to not bother :p 23:53 MTDiscord there are two ways to do it and they both suck and the solution is a whole new MUC protocol 23:53 MTDiscord which exists and isn't widely used