@jannem @dalias @wyatt8740 @unnick it's one of the most obscure and user-hostile pieces of software in the world; of course it _is_ difficult, especially if you don't already have the skills for it
Top-level
@jannem @dalias @wyatt8740 @unnick it's one of the most obscure and user-hostile pieces of software in the world; of course it _is_ difficult, especially if you don't already have the skills for it 54 comments
@parzivalwolfram @whitequark @jannem @dalias @unnick Yes, I also prefer autotools/autoconf 100% for almost everything. @parzivalwolfram @jannem @dalias @wyatt8740 @unnick i use cmake because i support windows as a first-class system, mainly if your software requires cygwin or mingw to build on windows i will fucking build it for webassembly instead and ship like that @whitequark @parzivalwolfram @jannem @dalias @unnick I genuinely prefer MSYS/mingw @wyatt8740 @whitequark @jannem @dalias @unnick yeah i've never had a good experience with VS, even VSC, or even VC/VC++ lol, though i also have constant issues with C#/.NET programs and anything adjacent to it but people online tend to tell me it's somehow user error if a .NET program spits out nonsensical, never-before-seen error messages then just die. i only write in python on windows just to avoid all of those headaches. @parzivalwolfram @wyatt8740 @jannem @dalias @unnick I shipped software that built on both MinGW and VS; I don't mind the compilers (either), I mind the garbage around them built by people who think fork() is peak API design @whitequark @parzivalwolfram @jannem @dalias @unnick fork is quite annoying, i agree @wyatt8740 @parzivalwolfram @jannem @dalias @unnick shell scripts are for automating admin tasks. write your build system in a real language, such as CMakeLists.txt (still more real than bash) @whitequark@mastodon.social @wyatt8740@tech.lgbt @parzivalwolfram@infosec.exchange @jannem@fosstodon.org @dalias@hachyderm.io @unnick@wetdry.world real language and seeing CMakeLists.txt threw me for a spin. I fucking hate writing cmake but I hate using anything that's not cmake 😭 @whitequark @wyatt8740 @jannem @dalias @unnick question: what if csh from 1989 is the only scripting language available to you, and there's no compilers available on a target system except K&R as? i'm working on a project where this is the entire issue, and it's... not fun. this is the precise case where that "consider using bash to build GCC because some cases in other shells make the ./configure script take literal days" warning actually happens lol @parzivalwolfram @whitequark @jannem @dalias @unnick i was about to mention csh, actually. Lol. There are so many things worse than a bourne shell @parzivalwolfram @wyatt8740 @jannem @dalias @unnick I bring a c89 single file wasm interpreter, then see step 1 @whitequark @wyatt8740 @parzivalwolfram @jannem @dalias @unnick I'm in a project using cmake and I don't like it. (I prototyped a replacement of our build stuff in omake in finite time...) But definitely less bad than autohell. @project1enigma @whitequark @parzivalwolfram @jannem @dalias @unnick I'm a fan of writing a makefile and telling people to figure it out. Sure, it pissed me off when i started, but once I figured out how makefiles work I appreciated them a lot more @wyatt8740 @whitequark @parzivalwolfram @jannem @dalias @unnick make has its limitations especially in really big multi directory source trees like ours. omake is enough make like, but with multi directory stuff just working really correctly. And fast. That's why I used that for my prototype alternative build. @wyatt8740 @whitequark @parzivalwolfram @jannem @dalias @unnick Long ago we did have a gmake based build by yours truly in fact. @wyatt8740 @project1enigma @parzivalwolfram @jannem @dalias @unnick I probably write makefiles better than you do and this is exactly why I avoid it inflicting it on others: as a matter of basic compassion @whitequark @wyatt8740 @project1enigma @jannem @dalias @unnick i don't mind projects with makefiles that are like 30 lines at most, where it's just a shell script but it's kept around for build systems and such. when it's a 30KB file full of high-level shell wizardry... i just have to hope i don't have to dig through it and that it just works. @parzivalwolfram @wyatt8740 @project1enigma @jannem @dalias @unnick one of my least favorite makefiles used a load bearing rot13 in the middle @whitequark @wyatt8740 @project1enigma @jannem @dalias @unnick WHY??? why would you ever??? @whitequark @project1enigma @parzivalwolfram @jannem @dalias @unnick Wow, so humble. @wyatt8740@tech.lgbt @wyatt8740 @project1enigma @parzivalwolfram @jannem @dalias @unnick Only responding in kind =^_^= @whitequark @project1enigma @parzivalwolfram @jannem @dalias @unnick where was I a prick who said that I was better at programming than you? @wyatt8740 @project1enigma @parzivalwolfram @jannem @dalias @unnick here? https://mastodon.social/@wyatt8740@tech.lgbt/112520914726012006 or maybe here? https://mastodon.social/@wyatt8740@tech.lgbt/112519833937117704 there's many to choose from @whitequark @project1enigma @parzivalwolfram @jannem @dalias @unnick The first link is clearly not me saying "i'm a better programmer." I am saying that I appreciate the simplicity of a makefile compared to dealing with cmake As for the second, i said that because YOU implied I was incompetent for liking bourne shells. Jerk. Blocking now. @wyatt8740 @parzivalwolfram @jannem @dalias @unnick I don't care about Visual Studio but if your software requires bash I will rm the entire build system and redo it using something made by competent people @whitequark @parzivalwolfram @jannem @dalias @unnick Your opinions are frankly wrong. @wyatt8740 @parzivalwolfram @jannem @dalias @unnick I'm objectively correct and you know it! @whitequark @wyatt8740 @jannem @dalias @unnick Bash extensions can be very helpful, but it is big and sometimes critically buggy, I do agree on those common points. @parzivalwolfram @whitequark @jannem @dalias @unnick a non-bash bourne shell is preferable imo @wyatt8740 @parzivalwolfram @jannem @dalias @unnick the only thing worse than a bourne shell is cmd.exe @whitequark @parzivalwolfram @jannem @dalias @unnick Powershell is worse @wyatt8740 @parzivalwolfram @jannem @dalias @unnick never heard of poweshell @whitequark @parzivalwolfram @jannem @dalias @unnick it's been around since windows xp. I'm astonished if you never have @wyatt8740 @parzivalwolfram @jannem @dalias @unnick (I thought it was an obvious bit >.>) @whitequark @parzivalwolfram @jannem @dalias @unnick gotta say i kind of wondered when you said 'only thing worse is cmd.exe' @wyatt8740 @parzivalwolfram @jannem @dalias @unnick I have, actually! I never tried to ship DOS batch files at scale though, because that scale did not exist yet @whitequark @parzivalwolfram @jannem @dalias @unnick command.com bat files are much worse than windows bat files @wyatt8740 @whitequark @parzivalwolfram @jannem @dalias @unnick ...aaaand that's why some of us used 4DOS, before moving over to Unix-like systems soon after. @wyatt8740@tech.lgbt @whitequark@mastodon.social @parzivalwolfram@infosec.exchange @jannem@fosstodon.org @dalias@hachyderm.io @unnick@wetdry.world Honestly both of them are horrendous https://www.youtube.com/watch?v=uE8IAxM_BhE (and the follow up to how to secure against such attacks - https://www.youtube.com/watch?v=x97ejtv56xw) but what really got me was the finale https://www.youtube.com/watch?v=mej5L9PE1fs I hate cmd.exe and powershell.exe they are the antichrist and i am not joking. @whitequark @wyatt8740 @jannem @dalias @unnick i've done some DOS slinging, it's even worse without the extensions from the NT era. splitting a string is a 3-batch-file job totalling... 2104 bytes, for a maximum of 3 splits on one character, more if you need more than that, and there's no way to do it programmatically up to n splits unless you hardcode support up to that number. @parzivalwolfram @whitequark @jannem @dalias @unnick Don't forget that goto labels can only be 8 characters! @parzivalwolfram @wyatt8740 @jannem @dalias @unnick at this point just use debug.com to do it in native code @whitequark @parzivalwolfram @jannem @dalias @unnick "You are a very silly person, and I'm not going to interview you." @whitequark @wyatt8740 @parzivalwolfram @jannem @unnick Not bash just a POSIX shell, which only needs fork if you're bad at implementing it and code like it's 1970... 😁 @dalias @whitequark @parzivalwolfram @jannem @unnick Hi, I program like it's 1970. Not really, more like 1989 @parzivalwolfram @whitequark @jannem @wyatt8740 @unnick cmake is just an awful user facing interface. No consistency in how you override what tools to use, where to find libraries, what flags to build with, where to install, how to do a staged install, etc. NTM the horrible DSL and gigantic implementation that takes like an hour ti build. @parzivalwolfram @whitequark @jannem @dalias @wyatt8740 @unnick I'm in a similar situation (custom needs) but we still went into cmake (against my advice). It's annoying. Bad design of hardcoding too much into an engine instead of good language design (good base language with low enough primitives, the comfort stuff as library with good abilities to override/customize defaults if needed) |
@whitequark @jannem @dalias @wyatt8740 @unnick can confirm, i still can't figure out why it sometimes decides it's cross compiling even when the host and target are both explicitly defined as the same thing, and just... refuses to consider otherwise. it's also a pain in the ass when you have to go hunting through a ./configure script to see why something failed, because not all of them drop a log, and the env vars needed to declare stuff explicitly aren't universal outside of some parts of GCC.
i still prefer it over cmake, because cmake is fucking huge and doesn't like to find libs on non-linux hosts (or linux hosts mid-buildroot-make) and doesn't like non-linux targets very much, etc etc
@whitequark @jannem @dalias @wyatt8740 @unnick can confirm, i still can't figure out why it sometimes decides it's cross compiling even when the host and target are both explicitly defined as the same thing, and just... refuses to consider otherwise. it's also a pain in the ass when you have to go hunting through a ./configure script to see why something failed, because not all of them drop a log, and the env vars needed to declare stuff explicitly aren't universal outside of some parts of GCC.