About Husky Version Numbers and Dependencies -------------------------------------------- Husky uses three libraries: "huskylib", "smapi" and "fidoconfig". You must combine Husky programs with the matching libraries to produce working code, so you should have some understanding of the version numbers: Current Husky ------------- Current Husky programs have two or three version numbers, and the SECOND number is NOT divisible by 2 (1,3,5, ...), and THIRD number is 0: huskylib 0.1 smapi 2.5 fidoconfig 1.9 hpt 1.9.0 ^ second number Current Husky also advertises a CVS source-code date, like: hpt 1.9.0/lnx-cur 07-02-03 ^^ year ^^ month ^^ day (word "current" shorten to "cur") Dependency rules are simple hear: Get all software and all libraries with the same date! If you upgrade any library or any software, upgrade all libraries as well and recompile and -install everything from scratch. This is cumbersome and only recommended for advanced users. Stable Husky ------------ Stable Husky programs have three version numbers, and the SECOND part is ALWAYS divisible by 2 (0,2,4, ....). In addition, the textual version messages usually show a "-stable" or "-release" suffix, but this is not technically necessary. fidoconfig 0.12.0-stable msged 6. 0.3-stable ^second number The third version number initially set to 0 and the (optional) suffix to "-stable" when the stable branch of the software is created. The suffix is set to "-release" when a release is made. Directly after that, the third number is stepped by one and the suffix re-set to "-stable". Dependencies are as follows: Each stable branch of a software requires another stable branch. For example, any version of "msged 6.0" can be combined with any version of "fidoconfig 0.12". "msged 6.0.1" will work with "fidoconf 0.12.0", or "msged 6.0.4-stable" will work with "fidoconf 0.12.7". You can upgrade each part WITHIN a stable branch (i.E. only changing the third version number) wihtout having to upgrade any other part of your installation. You can find out which stable branches are required by viewing the VERSION file in each project archive/directory. Exceptions ---------- Old Husky versions used letters instead of a third digit to represent steppings inside a stable branch, and there was no rule regarding divisibility by 2 of the version number. E.g., hpt 0.9.7 was the name of a stable *branch*. This changed as of summer 2001. Running Multiple versions of the same Library --------------------------------------------- Suppose you want to use a fictional "msged 6.2" (e.g. msged 6.2.1-release) which requires a fictional "smapi 2.4" (e.g. you choose smapi 2.4.3-release). On the other hand, you want to use "hpt 1.0.2-stable" which requires "smapi 2.0", and you have a smapi 2.0.1-release. Starting with smapi 2.0 and fidoconfig 0.12, Husky properly supports shared object versioning on Linux and other gcc-based Unix systems. This means: When you install smapi 2.0 and compile hpt 1.0, you will get libsmapi.so -> libsmapi.so.2.0 libsmapi.so.2.0 -> libsmapi.so.2.0.1 libsmapi.so.2.0.1 and the "hpt" binary will be explictly linked to "libsmapi.so.2.0" After that, you can install a newer smapi and will get the following situation: libsmapi.so -> libsmapi.so.2.4 libsmapi.so.2.4 ->libsmapi.so.2.4.3 libsmapi.so.2.4.3 libsmapi.so.2.0 -> libsmapi.so.2.0.1 libsmapi.so.2.0.1 After you have installed this newer smapi, all new programs that you compile will be linked against the new smapi 2.4, but old programs that were linked against the old smapi 2.0 will continue to work because they explicitly ask for "libsmapi.so.2.0" and still get the old library. However, if you need to recompile any of the old programs (and don't want to upgrade it), you first must switch back the default smapi to be used to the old smapi 2.0 instead of 2.4. To do so, you simply re-install smapi 2.0. This will cause all future compilations to use smapi 2.0, but any programs already linked against smapi 2.4 will still function. Note that to swtich the default library to be used you must really reinstall that library. Just switching the "libsmapi.so" symlink is not enough because for compiling, you need not only proper .so files, but also the matching proper include files. And in contrast to .so files, there can always be only one set of include files for a library. Combining Msged 6.0, Smapi 2.0, Smapi 1.6.4 and Hpt 0.9.7-stable ---------------------------------------------------------------- As of now, from the new Husky stable branch we have only released Huskybse 0.2, Smapi 2.0 and Msged 6.0. There are no stable releases of hpt and Fidoconfig that can be used with Smapi 2.0. So, if you don't want to use Msged 6.0, you must combine older stable versions of Husky (e.g. Hpt 0.9.7 with Fidoconfig 0.10 and Smapi 1.6.4) with newer ones (e.g. Msged 6.0 with Smapi 2.0). Here is how to do it: a) Compile and Install Smapi 1.6.4, Fidoconfig 0.10 and Hpt 0.9.7 as usual. b) Compile and Install Smapi 2.0 c) Compile and Install Msged 6.0 d) Compile and Install Smapi 1.6.4 Now, both your old Hpt 0.9.7 and your new Msged 6.0 will work. If you want to recompile Msged (e.g. a newer version like Msged 6.0.1), you must repeat steps b), c) and d).