Deutsch English Français Italiano |
<vr2dbm$2995t$1@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail From: bart <bc@freeuk.com> Newsgroups: comp.lang.c Subject: Re: Python recompile Date: Fri, 14 Mar 2025 23:16:06 +0000 Organization: A noiseless patient Spider Lines: 129 Message-ID: <vr2dbm$2995t$1@dont-email.me> References: <vq1qas$j22$1@gallifrey.nk.ca> <vqefn1$3flpt$1@dont-email.me> <vqeu5c$3imil$1@dont-email.me> <vqeun4$3iqbq$1@dont-email.me> <vqfcbe$3lkkc$1@dont-email.me> <871pv861ht.fsf@nosuchdomain.example.com> <20250308192940.00001351@yahoo.com> <vqi1ge$8jg8$1@dont-email.me> <vqmgjv$3a2il$1@paganini.bofh.team> <vqn4dn$1eb9s$1@dont-email.me> <vqo3ss$3hkas$1@paganini.bofh.team> <vqph2e$203bs$2@dont-email.me> <vqvtop$cpvn$1@paganini.bofh.team> <vr1nkh$1miii$1@dont-email.me> <G8_AP.37556$D_V4.24121@fx39.iad> <vr1uk1$1sb5s$1@dont-email.me> <874izvjs4m.fsf@nosuchdomain.example.com> <vr27td$22vgq$2@dont-email.me> <87senfi7ii.fsf@nosuchdomain.example.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Date: Sat, 15 Mar 2025 00:16:07 +0100 (CET) Injection-Info: dont-email.me; posting-host="14d72ed8b9f39470873bf90fad2cad9d"; logging-data="2401469"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+68k1jVkIdUFdz8TXE2z28" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:qpRxSaTQXPK94y32gmOgE1fz+38= Content-Language: en-GB In-Reply-To: <87senfi7ii.fsf@nosuchdomain.example.com> Bytes: 6917 On 14/03/2025 22:15, Keith Thompson wrote: > bart <bc@freeuk.com> writes: >> On 14/03/2025 20:04, Keith Thompson wrote: >>> bart <bc@freeuk.com> writes: >>>> On 14/03/2025 18:00, Scott Lurndal wrote: >>>>> bart <bc@freeuk.com> writes: >>> [...] >>>>>> What I'm suggesting goes in the middle. A minimal, streamlined set of >>>>>> sources, possibly amalgamated (which helps if the user wants to >>>>>> incorporate this product into their own), with a minimal set of >>>>>> dependencies. >>>>> Why on earth would a developer do this just to make -your- life >>>>> easier? Nobody else is complaining endlessly about it. >>>> >>>> Perhaps you'd like to answer the question I posed about why bother >>>> with distributing software as binaries if building from source is so >>>> effortless. >>> Nobody said it was "effortless". You made that up. > > No response to that? > > You misrepresent what others have said, and don't reply when it's > pointed out. > > If you can cite someone here actually saying that building from source > is "effortless", I'll retract this statement. Every single post arguing against me implies that it is effortless: that is, all you have to do is type 'make'. NO ONE wants to admit to building can be a difficult process. Or they do, they will not admit of any alternative but to provide a binary. >>> I can install a binary software package on my computer without >>> needing a compiler, and it typically takes a few seconds because >>> someone else has done the work of building it. I happen to have >>> a compiler, but not everyone does. If I have the sources, I can >>> probably install a newer version than my OS makes available, and >>> perhaps I can choose some configuration options. And yes, it's a >>> bit more effort. >> >> A 'bit more effort' is an understatement. It needs more >> dependencies. It will take much longer. And it's more likely to fail. >> >> So I suggested an intermediate compromise that is suited for when your >> aim /isn't/ to work on the product yourself. > > If I understand correctly, you want one build system for developer and > a simpler one for end users. Is that accurate? > > By all means feel free to make such a thing. But having two different > build systems means they both have to be maintained. It makes it more > likely that something works correctly for the developers and fails for > end users. Wouldn't that be the case for both types of build? And which one kind is more likely to fail? You can well find that a simpler build process results in fewer issues overall. > And it's useful only for end users who build from source. I do that, > but most users don't. Even in my case, the vast majority of the > software on my system is installed from pre-built binaries via the OS's > package management system. For a more typical user, it's likely that > all of it is. > So in a sense the simpler build system you want already exists: copying > binary files to where they need to be. If a binary files exists, and if AV will let me download it, or run it. I have a problem supplying binaries to anyone who wants to run my programs on their Windows machine. So I use my own intermediate representations. They look like this: c:\qx>mc -c qc M6 Compiling qc.m---------- to qc.c c:\qx>dir qc.c 14/03/2025 22:39 1,095,211 qc.c 'mc' is a transpiler which converts dozens of modules into one C file. That C file is what is downloaded by the user. The build process on Windows is this: c:\qx\gcc qc.c You see how utterly simple it can be and how trivial it is to build? The file I generate corresponds 1:1 with the binary file that I would have prefered to provide. It's as simple as a binary, and needs only that one-line step to turn into an actual binary. The above is for Windows however; for Linux it's a bit harder: c:\qx>mc -c -linux qc -out:qu M6 Compiling qc.m---------- to qu.c Here gcc on Linux needs a couple more options, and a binary would not be an option even without AV issues. So, a build CAN be this simple. You might say, these are small products and real ones are more complicated. Well take a look at NASM: https://github.com/netwide-assembler/nasm/tree/master, and in INSTALL. It supposedly builds on Windows, but I can't make head or tail of the instructions. There are 2000 files here in two dozen directories. NASM is an x64 assembler; I have one of those too; I can also provide a single C file which can be trivially built. So your arguments are spurious. You're making excuses about why such things are not possible or are too hard while knowing little about it. >> As I showed, it is very easy when you dump the 'convoluted' build system! > > Great. Show us how you can "dump the 'convoluted' build system" for, > say, GNU coreutils. I don't know those products. Maybe they are already ten times more complex than need be. For the products I create (compilers, interpreters, assemblers, backends) there is no build system to speak of, and I've showed two examples. The build process involved download and compiling one source file. Sorry, I haven't managed to reduce it to zero source files!