|Title||MPS does not build with "sh configure;make;make install"|
|Assigned user||David Jones|
|Description||Specifically the Standard Operating Procedure for Open|
Source stuff downloded from the 'net is:
zcat blah.tar.gz | tar xvf -
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.
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
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:
1H - Obtain sample uname output for The Big Three (Linux, FreeBSD,
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.
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.
|Evidence||I just know. Following the SOP doesn't work.|
|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.
|179466||closed||2012-09-13 11:59:26||Richard Brooksby||Merging "make install" implementation from Bruce Mitchener <
curl -O "