Title | MPS does not build with "sh configure;make;make install" |
Status | closed |
Priority | essential |
Assigned user | David Jones |
Organization | Ravenbrook |
Description | Specifically the Standard Operating Procedure for Open Source stuff downloded from the 'net is: wget .../blah.tar.gz zcat blah.tar.gz | tar xvf - cd blah sh configure make make install And the MPS does not follow this model. This is bad because many people used to messing around with lots of open source software will try this first; probably without reading any instructions, readmes, or whatever. There are other things we don't do either: No sourceforge page. |
Analysis | 2004-12-08 DRJ We need to provide a 'configure' script. I feel I ought to point out that this method of working, where running the configure script produces a Makefile or something siimilar, conflicts with building the product on multiple architectures across NFS mounted partitions as they would be unable to agree on what the Makefile should look like. The configure script needs to: - Select a platform. Sometimes there is a choice (EG lii3eg / lii4gc, o1alcc / o1algc). - Select a product / products. - Choose somewhere for "make install" to copy stuff into. - Inform the invoker of the choices made. - Create necessary records of choices so that next steps ('make' and 'make install') do something useful. Issue: What platforms do we intend this to work on? Obviously Linux/x86/gcc because that's going to be really common. Obviously Darwin/PowerPC/gcc because that's what most project staff have. Obviously FreeBSD/x86/gcc because that's what Ravenbrook like. Consider Solaris/??/?? because we've had actual e-mail from such people. Where to get what platforms: Darwin/PowerPC/gcc : DRJ, RB, RHSK each have one. Linux/x86/gcc : swan.ravenbrook.com, but don't break it. Tru64/ALPHA/?? : HP Testdrive program Design Selecting a platform is mostly a matter of working out which one we are on. 'uname -s -r -p' or 'uname -s -r -m' is helpful. Some table-like shell code which maps from the output of that to an MPS platform identifier should be fairly straightforward. Especially for a limited number of platforms. configure script uses uname to determine platform. configure script makes choices and informs user. configure script writes a Makefile. Estimate of Effort: coding: 1H - Obtain sample uname output for The Big Three (Linux, FreeBSD, Darwin). 2H - Obtain pathnames for appropriate installation directories for The Big Three. From documentation (man hier if available) and inspection of actual installations. 1H - A shell function (to be used in the configure script) that maps from uname output to MPS platform. 1H - A shell function (to be used in the configure script) that maps from uname output to install locations. For now we only need two locations: 1 for header files, 1 for library files. Later we may need documentation and example scripts. Note that the shell function cannot map from MPS platform code as that isn't fine grained enough. EG Debian Linux and Red Hat Linux will want their libraries installed in different places, but we will be using the same platform code for each (is that correct BTW?). See also LSB. 2H - Complete configure script using the shell functions. Writes a Makefile. Same again for documentation and testing combined. Total: 14H Note that the "make install" feature can be separated and removed. This brings down total cost to 8H. Additional platforms would be more difficult, mostly due to the increased difficulty in obtaining access. |
How found | unknown |
Evidence | I just know. Following the SOP doesn't work. |
Observed in | 1.104.0 |
Created by | David Jones |
Created on | 2004-12-08 12:45:24 |
Last modified by | Richard Brooksby |
Last modified on | 2012-09-21 20:28:38 |
History | 2004-12-08 DRJ Created. Partial analysis. 2004-12-10 DRJ More analysis. Completed estimate. |
Change | Effect | Date | User | Description |
---|---|---|---|---|
179466 | closed | 2012-09-13 11:59:26 | Richard Brooksby | Merging "make install" implementation from Bruce Mitchener <https://github.com/datafueled/memory-pool-system/pull/8 >.curl -O " https://github.com/datafueled/memory-pool-system/pull/8.patch " | patch -g1
|