annotate PACKAGING @ 465:003e48f8ebe1

rvinterf/etmsync/fsnew.c: cast 0 to (char *) for execl sentinel I generally don't use NULL and use plain 0 instead, based on a "NULL considered harmful" discussion on the classiccmp mailing list many aeons ago (I couldn't find it, and I reason that it must have been 2005 or earlier), but a recent complaint by a packager sent me searching, and I found this: https://ewontfix.com/11/ While I don't give a @#$% about "modern" systems and code-nazi tools, I realized that passing a plain 0 as a pointer sentinel in execl is wrong because it will break on systems where pointers are longer than the plain int type. Again, I don't give a @#$% about the abomination of x86_64 and the like, but if anyone ever manages to port my code to something like a PDP-11 (16-bit int, 32-bit long and pointers), then passing a plain 0 as a function argument where a pointer is expected most definitely won't work: if the most natural stack slot and SP alignment unit is 16 bits, fitting an int, with longs and pointers taking up two such slots, then the call stack will be totally wrong with a plain 0 passed for a pointer. Casting the 0 to (char *) ought to be the most kosher solution for the most retro systems possible.
author Mychaela Falconia <falcon@freecalypso.org>
date Mon, 11 Feb 2019 00:00:19 +0000
parents 0a01e1c4ea54
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
435
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 It has been brought to the Mother's attention that some people don't like the
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 way our FC host tools are designed to be installed under /opt/freecalypso as
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 opposed to some standard location like /usr/local, and that some people have
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 been patching our Makefiles and code to move our installed binaries (and perhaps
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 some of the support files as well) to other locations which they like better.
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 PLEASE DON'T DO IT, especially if you are making a package or a build or setup
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 or install script to be used by more than just you. FC host tools are a very
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 complex package with a lot of interrelations between different tools, many
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 tools in our suite internally invoke other tools by their /opt/freecalypso/bin
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 absolute pathnames, some tools are designed to be invoked both by human users
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 and by other tools (rvinterf is a prime example), and there are many support
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 files used by various tools. If you try to outsmart the Mother and change the
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 install location to something other than what I designed it to be, you will
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 inevitably break something, and you probably won't notice the breakage because
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 a typical casual user only uses a very small subset of our tools. Furthermore,
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 if you move the install location, you will certainly break our various
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 additional tools which are not included in the core FC host tools package but
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 are meant to be installed on top of it, as all of them expect and require the
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 /opt/freecalypso directory hierarchy described in doc/opt-freecalypso-tree.
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 If your goal is to have our installed binaries accessible with a standard PATH
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 without adding /opt/freecalypso/bin to it, the correct solution is to list the
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 binaries installed in /opt/freecalypso/bin and make a symlink to each of these
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 binaries from /usr/bin or from /usr/local/bin or from wherever you like. Use
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 symlinks, don't move the binaries themselves! If you move the actual binaries,
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 you will break those tools which internally invoke other tools, which we do a
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 lot.
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30 If you still dislike the whole idea, consider the way Firefox does it: official
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31 release binaries from Mozilla are meant to be installed under /usr/lib/firefox
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 or /usr/lib/firefox-$VERSION, the stuff inside that directory looks nothing like
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33 FHS, it is private to Firefox just like our /opt/freecalypso directory hierarchy
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34 is private to FreeCalypso, and the user makes one symlink from /usr/bin/firefox
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 to /usr/lib/firefox-$VERSION/firefox or wherever the full complex package
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 resides. If you can live with Firefox and other major application packages
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37 having their own non-FHS private directory trees, you can surely live with
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 FreeCalypso doing the same.
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 Why did we make our prefix /opt/freecalypso and not /usr/lib/freecalypso or
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41 /usr/local/freecalypso? Because there are many, many places where the full
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42 absolute pathname needs to be typed, and the location we chose is the shortest
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
43 among other sensible options.
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45 Anyone who is going to make binary packages of our FC host tools (presumably
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46 for use on systems on which compilation from source is difficult) and wishes to
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
47 have their packaging officially endorsed by the upstream MUST follow these
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48 guidelines:
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
49
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
50 * The complete set of tools and support files MUST be included as if one built
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
51 and installed our package from the official source, without omitting or
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
52 breaking any part which you might consider unimportant.
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
53
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
54 * Everything MUST be installed under /opt/freecalypso exactly as designed by
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
55 the Mother; symlinks to binaries under /opt/freecalypso/bin from a more user-
0a01e1c4ea54 documentation: added some notes about the importance of preserving
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
56 friendly location may optionally be included.