Email or username:

Password:

Forgot your password?
Top-level
✧✦✶✷Catherine✷✶✦✧

@dalias @wyatt8740 @unnick and why is it that people c&p a bunch of garbage rather than writing their own .ac file, Rich?

59 comments
Rich Felker

@whitequark @wyatt8740 @unnick Because the whole thing is fairly opaque, uses an obscure language, and the docs on how to make decent use of it are unofficial and hard to find especially after the burning of search...

No intent to blame anyone just theorize on how things got this way.

✧✦✶✷Catherine✷✶✦✧

@dalias @wyatt8740 @unnick honestly even ten years ago I found it rather difficult to figure out how to write .ac files

Dan Cassidy 🦌

@dalias @whitequark @wyatt8740 @unnick no it uses three different opaque languages at the same time, in the same source file

Janne Moren

@whitequark @dalias @wyatt8740 @unnick
Good question. Writing one for yourself really isn't difficult. Yes, you do need to take a look through the documentation, but apparently cut and paste is less effort.

✧✦✶✷Catherine✷✶✦✧

@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

ParzivalWolfram

@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.

✧✦✶✷Catherine✷✶✦✧

@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

Wyatt (🏳️‍⚧️♀?)

@whitequark @parzivalwolfram @jannem @dalias @unnick
If your windows program requires visual studio I will fucking build it for webassembly instead and ship it like that

I genuinely prefer MSYS/mingw

ParzivalWolfram

@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.

✧✦✶✷Catherine✷✶✦✧

@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

Wyatt (🏳️‍⚧️♀?) replied to ✧✦✶✷Catherine✷✶✦✧

@whitequark @parzivalwolfram @jannem @dalias @unnick fork is quite annoying, i agree
But bash isn't the POSIX C API. You don't have to write fork()'s to use a shell script

✧✦✶✷Catherine✷✶✦✧ replied to Wyatt

@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)

Amber replied to ✧✦✶✷Catherine✷✶✦✧

@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 😭

ParzivalWolfram replied to ✧✦✶✷Catherine✷✶✦✧

@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

Wyatt (🏳️‍⚧️♀?) replied to ParzivalWolfram

@parzivalwolfram @whitequark @jannem @dalias @unnick i was about to mention csh, actually. Lol.

There are so many things worse than a bourne shell
Bourne shell is the only way i can comfortably survive in a windows environment

always tired (moved to chaos) replied to ✧✦✶✷Catherine✷✶✦✧

@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.

Wyatt (🏳️‍⚧️♀?) replied to always tired (moved to chaos)

@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

always tired (moved to chaos) replied to Wyatt

@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.

✧✦✶✷Catherine✷✶✦✧ replied to Wyatt

@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

ParzivalWolfram replied to ✧✦✶✷Catherine✷✶✦✧

@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.

Em replied to Wyatt

@wyatt8740@tech.lgbt

Sis
You both implied the same thing and diverged around "but what about other people"

✧✦✶✷Catherine✷✶✦✧

@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

Wyatt (🏳️‍⚧️♀?)

@whitequark @parzivalwolfram @jannem @dalias @unnick Your opinions are frankly wrong.
Windows is not for competent people which is why they treat it as second class
(sorry i'm done now)

ParzivalWolfram

@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.

Wyatt (🏳️‍⚧️♀?) replied to ✧✦✶✷Catherine✷✶✦✧

@whitequark @parzivalwolfram @jannem @dalias @unnick gotta say i kind of wondered when you said 'only thing worse is cmd.exe'
Because that means you never used DOS

✧✦✶✷Catherine✷✶✦✧ replied to Wyatt

@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

Pixel Doge replied to Wyatt

@wyatt8740 @whitequark @parzivalwolfram @jannem @dalias @unnick ...aaaand that's why some of us used 4DOS, before moving over to Unix-like systems soon after.

ParzivalWolfram replied to ✧✦✶✷Catherine✷✶✦✧

@whitequark @wyatt8740 @jannem @dalias @unnick

if you need a variable that has iterable characters, you have to do something to the tune of:

choice /t:=,1 /c=%1= R:\bat\str2.bat > %TEMP%\test.bat
%TEMP%\test.bat

where str2.bat is the script to actually process the iterable (in my case, it's up to three splits in a string, and it's 1.2KB.)

this relies on error logic in choice to accomplish this, and needs tweaking for the version of DOS it's running on (this precise line only works on MS-DOS 6+ or equal IBM-DOS, and I don't think DR-DOS needs this at all, since it has some string comprehension extensions iirc)

@whitequark @wyatt8740 @jannem @dalias @unnick

if you need a variable that has iterable characters, you have to do something to the tune of:

choice /t:=,1 /c=%1= R:\bat\str2.bat > %TEMP%\test.bat
%TEMP%\test.bat

where str2.bat is the script to actually process the iterable (in my case, it's up to three splits in a string, and it's 1.2KB.)

Amber replied to Wyatt

@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.

ParzivalWolfram replied to ✧✦✶✷Catherine✷✶✦✧

@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.

Rich Felker

@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... 😁

Wyatt (🏳️‍⚧️♀?) replied to Rich

@dalias @whitequark @parzivalwolfram @jannem @unnick Hi, I program like it's 1970.

Not really, more like 1989

ParzivalWolfram

@whitequark @jannem @dalias @wyatt8740 @unnick cmake is good in theory, but in practice it needs an infinite number of beatings over the head to make it work in any slightly non-standard configuration, and it's so big that it's almost worthless if you need backwards-compatibility (or if you're stupid like me and need it to run on Solaris 7 or a 3DS or some shit like that...) Most people won't use it in these configurations, because... why would they? but it's an issue for me, and i reserve the right to not like a tool that can't be bent to fit a weird situation even a little bit lol

@whitequark @jannem @dalias @wyatt8740 @unnick cmake is good in theory, but in practice it needs an infinite number of beatings over the head to make it work in any slightly non-standard configuration, and it's so big that it's almost worthless if you need backwards-compatibility (or if you're stupid like me and need it to run on Solaris 7 or a 3DS or some shit like that...) Most people won't use it in these configurations, because... why would they? but it's an issue for me, and i reserve the right...

Rich Felker

@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.

always tired (moved to chaos)

@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)

Go Up