From: Bruno H. <br...@cl...> - 2017-03-13 00:12:28
|
Hi Sam, > > There is now a general move away from "pack everything into one file" > > to "create separate file for different purposes". > > Users, nevertheless, do ask for a "single executable" option. > > CLISP, being a developer's tool - as opposed to a user's tool, needs, in > addition to "vendor model" you describe: a team of seasoned > professionals building distributions to be used by many people, a > "custom exec" model, when a lisp hacker throws together a quick solution > and gives is to his 1 or 2 ad hoc users. > > E.g., I want to run something on a box in which I cannot install anything. > An executable image - as opposed to two files (runtime + image) - is > easier to distribute. This is not a sound argument. When a file is transferred to a machine, whether by ftp, scp, the browser, or whatever, it is by default not executable. This is means, it needs some "post-install" command to really make it usable. Whether this command is a "chmod a+x" or "tar xfz" or "unzip -x", does not make a big difference in practice. Additionally, most users want to transfer binaries in a compressed way, to save bandwidth. Now, when you accept "tar xfz" or "unzip -x" as a post-install command, there is no reason to insist on just 1 file. So, when users ask for a "single executable" option, tell them that this option would buy them nothing. > > No. (savemem ... :executable t) is based on > > spvw_memfile.d:savemem_with_runtime, which consists in *appending* > > a memory image to an *executable file*. > > I know, I wrote it. The only way of generating an executable that does not cause portability problems - and thus endless maintenance hassles - is through the compiler ($CC), that invokes the linker, or through the linker directly ($LD). > > I certainly won't spend time digging in the internals of the Mach-O > > object format in order to find out how to port this to Mac. > > this is a regression on _all_ platforms. No, it's not a regression if we tell people that a certain feature cannot work on specific platforms, such as Mac OS X and MirBSD. If you want the complete list of platforms where it works vs. does not work, I can determine this list for you over time by running "make check-exec-image" as part of my testing in the next few weeks. But what I need is that "make check" does not abort prematurely, because a "make check" failure means - to everyone - "the package is broken, you should better not proceed with 'make install'". Bruno |