Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I mostly agree with the list, but i think there are also some arguments what are suboptimal about Autoconf:

1) We do not need to support old buggy platforms, we can generally assume that platforms are open source and their bugs can be fixed, so it is less pressure to workaround them in application software. Consequently, we do not need that detailed checks

2) We can assume there is fully working POSIX shell, so configure script and its checks could be made just in shell, no need to have M4-generated shell code.

3) It is probably better not have separate 'release-phase', so end-users could just work with code from git. Users could run Autoconf themselves to generate the configure script, but the Autoconf is not well-suited for this, as there is lack of backwards compatibility.

4) Most developers do not know M4, so they just hack around Autoconf macros without proper understanding.

5) It would be nice if all these directories that are given to configure scripts could be overridden at runtime using environment variables

Ideally, there could be POSIX shell script library that could be used to write portable configure scripts offering all the standard options and checks like ones generated by Autoconf.



> We can assume there is fully working POSIX shell,

Kids those days.

Haven't we learned a long time ago that we shouldn't assume anything ?


You have to set some baseline. We assume the CPU can divide numbers correctly, even though not all of them did.

Autoconf has set the baseline so low that everyone perpetually pays for the technical debt of ancient buggy platforms. Sometimes it's better to push a buggy platform to fix its own bugs, than to have everyone work around those bugs forever.


The issue is defining "support". I would argue it can be harmful having autoconf detect a non compliant shell and advertise it was trying to build a makefile around that fact if no one has ever tested your app on such a platform and something in the code will fail anyway.


Everybody uses a POSIX shell today. Unless you're a basement dweller using OpenSolaris or something, and probably even then

Then guess what, I'm not building software for you

From the article:

> Of course, the checks should be reasonable (and in practice, often are excessive). If your code assumes a C99 environment, you don’t need to check whether all C99 functions you use are available.

Which makes sense to me (including the check based approach).


> Everybody uses a POSIX shell today

This assumption cannot be made, when ~75% of user machines and ~60% of developer machines are running Windows[1].

[1]: https://survey.stackoverflow.co/2023/#section-most-popular-t...

The moment I see 'build.sh' in a library's or application's source tree, I am certain the build system is not portable and I look for something else.

> Then guess what, I'm not building software for you

I think people on HN really like not capturing significant chunks of the user population, in a bid for an unrealistic and impractical ideal.


How do you want a portable build system (that uses POSIX) between Linux and Windows?

Autotools certainly won't give you that. Maybe inside CYGWIN or WSL and even then

> The moment I see 'build.sh' I am certain the build system is not portable

Obviously. They usually ship a build.sh and build.bat or something more modern.

The moment I see a configure script I know the developers are still in the 90s

"but the buildsystem is not portable" well, I have bad news for you regarding the rest of the fsking owl.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: