FreeCalypso > hg > freecalypso-docs
comparison Install-location @ 103:c5f1f936dec5
Install-location: new article
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 20 Nov 2023 08:28:16 +0000 |
parents | |
children | 12424010d7b8 |
comparison
equal
deleted
inserted
replaced
102:49be28a15768 | 103:c5f1f936dec5 |
---|---|
1 FreeCalypso software install location | |
2 ===================================== | |
3 | |
4 FreeCalypso queendom includes several software packages that are meant to be | |
5 installed on the user's general-purpose Unix/Linux host computer such as a | |
6 Linux PC or laptop. The principal component packages in this category are FC | |
7 host tools (for operating on GSM MS devices), FC SIM tools (for operating on | |
8 SIM cards) and FC USB-serial tools (for operating on FTDI and Silabs chips) - | |
9 but these listed tool packages are not the only ones. All FC software packages | |
10 that run on a general-purpose Unix/Linux host computer are meant to be installed | |
11 in one specific file system location; the present article applies to all of | |
12 these packages. | |
13 | |
14 The install location for all FC host software packages is fixed as | |
15 /opt/freecalypso - this install location is NOT changeable. The directory tree | |
16 that exists under /opt/freecalypso is defined by the Mother of FreeCalypso in | |
17 her sole authority, and it includes both FHS-style and non-FHS-style, | |
18 FC-specific subdirectories. The following subdirectories are currently defined | |
19 under /opt/freecalypso: | |
20 | |
21 (FHS-style) | |
22 | |
23 bin All Unix/Linux host binaries are installed here. | |
24 | |
25 include Some FC host software components provide header files that are | |
26 intended to be used by other (later in the dependency graph) FC | |
27 host sw components. FC host tools rvinterf headers are | |
28 installed here currently, used by fc-rfcal-tools. | |
29 | |
30 lib Currently hypothetical, may be used in the future similarly to | |
31 include subdir. | |
32 | |
33 (non-FHS-style, FC-specific) | |
34 | |
35 aud-* Images of /aud FFS directory subtree (audio mode config files) | |
36 for different supported FreeCalypso devices, either FC hardware | |
37 products or aftermarket configurations. | |
38 | |
39 batteries Collection of battery discharge threshold configuration files. | |
40 | |
41 buz FFS subtree with PWT buzzer melodies, to be uploaded into /buz | |
42 on those FC devices that feature a traditional ringing buzzer. | |
43 | |
44 charging Collection of battery charging configuration files. | |
45 | |
46 cp2102 CP2102 baud rate tables and EEPROM patch files. | |
47 | |
48 fluid Helper files for fluid-mnf port. | |
49 | |
50 ftdi FTDI EEPROM configuration files. | |
51 | |
52 gcc The recommend install location for our ARM7 gcc toolchain is | |
53 /opt/freecalypso/gcc. | |
54 | |
55 helpfiles Help files for those FC host utilities which implement a help | |
56 command. | |
57 | |
58 loadtools Hardware parameter files and init scripts which underlie the | |
59 all-important -h option to fc-loadtool, fc-iram and fc-xram, | |
60 collectively known as loadtools. | |
61 | |
62 mel FFS subtree with E1 melodies, to be uploaded into /mel on those | |
63 FC devices that will use a voice path loudspeaker for ringing. | |
64 | |
65 rfcal This subdir only appears if you are doing RF calibration and | |
66 install fc-rfcal-tools, and some of the necessary config files | |
67 under that subdir you have to create yourself using your own RF | |
68 knowledge specific to your particular setup. | |
69 | |
70 scripts Command scripts for FC host tools other than fc-loadtool, | |
71 currently for fc-fsio. | |
72 | |
73 sim-data SIM card database files for FC SIM tools. | |
74 | |
75 sim-scripts Command scripts and associated "canned" data files for | |
76 fc-simtool and fc-uicc-tool. | |
77 | |
78 target-bin ARM7 target binaries for Calypso GSM MS devices. | |
79 | |
80 User interaction with /opt/freecalypso file system tree | |
81 ======================================================= | |
82 | |
83 The only subdirectory under /opt/freecalypso which all users need to be aware | |
84 of is /opt/freecalypso/bin - all executable binaries are installed there, hence | |
85 you need to either add this directory to your PATH or make symlinks from some | |
86 "standard" binary directory to ours. Most other subdirectories and files that | |
87 reside in them are accessed "under the hood" by tools that need them - however, | |
88 there are times when various "canned" workflow instructions will direct you to | |
89 type out the path to some file or another that reside in some FC-specific | |
90 location somewhere in /opt/freecalypso tree. The beauty of this fixed | |
91 /opt/freecalypso installation directory is that as long as you follow the rules | |
92 and don't try to outsmart the Mother, these "canned" instructions will always | |
93 work on every installation, not affected by any local variations. | |
94 | |
95 Interdependencies between different FC tools | |
96 ============================================ | |
97 | |
98 Many FreeCalypso host tool programs depend on other FC tool binaries, invoking | |
99 them behind the scenes as needed. In cases where the tool depending on other | |
100 FC tool binaries is itself a compiled C program, the full path under | |
101 /opt/freecalypso/bin is always used. The same approach is also used in the | |
102 case of simplest shell script wrappers - however, most higher-level FC tools | |
103 that are implemented as shell scripts expect their subordinate tools (binaries | |
104 or subordinate shell scripts) to be accessible via current PATH. | |
105 | |
106 Optional symlinks to FC tool binaries | |
107 ===================================== | |
108 | |
109 Given that FreeCalypso host tool programs need to be accessible via shell | |
110 search path, without manually typing out the full path on each invokation, | |
111 there are two possible solutions: | |
112 | |
113 Option 1: add /opt/freecalypso/bin to your PATH. This option is ideal for | |
114 those who use FC host tools heavily and regularly, on machines where such heavy | |
115 and regular usage takes place. | |
116 | |
117 Option 2: make symbolic links from some "standard" binary install location | |
118 (e.g., /usr/bin or /usr/local/bin) to /opt/freecalypso/bin for each installed | |
119 FC host tool program (binary or installed shell script). This option should be | |
120 preferred for installations where only some FreeCalypso utilities are expected | |
121 to be used, and only rarely/occasionally - or where the desire is to make the | |
122 utilities appear "ordinary", without making the user enter FC queendom | |
123 explicitly by adding /opt/freecalypso/bin to their PATH. | |
124 | |
125 To make it easier to automate Option 2, new versions of FC host sw component | |
126 packages include a file in the source distribution named Installed-binaries. | |
127 This file lists, one per line, the names of all binaries (or shell scripts) | |
128 installed by the package in question in /opt/freecalypso/bin - the intent is | |
129 that this file will be used as the list of symlinks to be created. | |
130 | |
131 Please also note that if you going for this Option 2, you really do need to | |
132 create symbolic links, NOT move the actual installed binaries! Moving FC tool | |
133 binaries out of /opt/freecalypso/bin will break every instance where one FC | |
134 program invokes another by absolute pathname - so don't do it. Locating and | |
135 patching all instances of another program invokation is NOT an acceptable | |
136 solution - there may be invokations from other FC software components which you | |
137 are not considering. In short. don't try to outsmart the Mother! | |
138 | |
139 Why, why, why? | |
140 ============== | |
141 | |
142 The Mother of FreeCalypso is fully aware that this requirement of fixed paths | |
143 under /opt/freecalypso runs totally counter to typical Unix/Linux application | |
144 software development and packaging conventions. The latter conventions call | |
145 for changeable paths: the person compiling or packaging the application chooses | |
146 the install location via ./configure --prefix option or some equivalent means, | |
147 and the software obeys. If FreeCalypso followed this convention, all of our | |
148 FC-specific, non-FHS-relevant stuff would be in either /usr/share/freecalypso or | |
149 /usr/local/share/freecalypso depending on how the software was installed by | |
150 each given user: via packaging, or by direct compilation and installation from | |
151 source. | |
152 | |
153 In the earliest years of FreeCalypso, all binaries were installed into | |
154 /usr/local/bin and all support files were in /usr/local/share/freecalypso. | |
155 The big and ever-controversial decision to move to /opt/freecalypso was made | |
156 in late 2016, and all of justifying reasons back then still hold true today: | |
157 | |
158 * There are all kinds of occasions where one needs to type the full path to | |
159 some file in one of FC-specific, non-FHS-relevant directories, and typing | |
160 /opt/freecalypso is much shorter than /usr/share/freecalypso, let alone | |
161 /usr/local/share/freecalypso. | |
162 | |
163 * The number of different support files (FC-specific, non-FHS-relevant) keeps | |
164 growing, and so does their complex organization. Having all of these files | |
165 reside at fixed pathnames (as opposed to pathnames that change based on the | |
166 whim of whoever does sw installation or packaging) makes life much easier. | |
167 | |
168 * Implementing a ./configure system that dynamically changes pathnames for our | |
169 myriad of FC-specific, non-FHS-relevant support and data files would be a | |
170 huge pain, and more work than is justifiable. | |
171 | |
172 * FreeCalypso is not a single software package, but a complex queendom. We | |
173 have separate sw packages for FC host tools (operating on GSM MS devices), | |
174 SIM card tools, RF calibration tools, USB-serial tools etc - trying to put | |
175 all of them into one package would be difficult, inconvenient and unnatural, | |
176 hence they are separate sw packages. But these separate sw packages have | |
177 interdependencies, sometimes mandatory (fc-rfcal-tools strictly depend on FC | |
178 host tools), othertimes optional (intertie between FC host tools and FC SIM | |
179 tools is strictly optional, appearing only in certain workflows), and they do | |
180 belong to the same FreeCalypso queendom. With a fixed mandated install path, | |
181 each sw component in the queendom can freely reference bits from other | |
182 components - whereas if we adopted the conventional packaging paradigm, we | |
183 would have to deal with the possibility of different packages being installed | |
184 under different paths. | |
185 | |
186 Don't try to outsmart the Mother! | |
187 ================================= | |
188 | |
189 We are aware of certain rogue packagers who were determined to have their way | |
190 and change the install location to something other than /opt/freecalypso, no | |
191 matter how much we admonish against doing so. In the world of freely published | |
192 software distributed as source, it is of course impossible to actually enforce | |
193 any kind of usage rules - however, we do operate with the following set of | |
194 policies: | |
195 | |
196 * Any packagings of FreeCalypso software in which the install location has been | |
197 changed to something other than /opt/freecalypso are considered to be rogue | |
198 packages. Such packages shall be regarded as malware - do not install, | |
199 do not use! | |
200 | |
201 * We shall not, under any circumstances, provide any kind of technical support | |
202 to anyone who uses a rogue package. Anyone using a rogue package will be | |
203 told to migrate to either direct from-source installation or a properly | |
204 constructed downstream package, with /opt/freecalypso install location | |
205 preserved, being any other issues can be addressed. |