[m-rev.] for preliminary review: post-installation addition of extra library grades

Julien Fischer jfischer at opturion.com
Mon Sep 15 12:39:49 AEST 2014



On Mon, 15 Sep 2014, Paul Bone wrote:

> On Tue, Sep 09, 2014 at 01:57:39PM +1000, Julien Fischer wrote:
>>
>> For preliminary review:
>>
>> (This almost certainly does not work on Windows at the moment.  Also,
>> attempting to add extra grades to a cross compiler probably won't work
>> either.)
>>
>> ---------------------------
>>
>> Support post-installation addition of extra library grades.
>>
>> A feature that has often been requested is the ability to add extra library
>> grades to an existing Mercury installation without requiring a re-install of
>> the entire system.  In the past doing this has been awkward because the set of
>> library grades is hardcoded into various configuration files.  This is no
>> longer true for mmc --make, which now detects the set of installed library
>> grades at runtime.  (It is still true for mmake, but that probably doesn't matter.)
>>
>> This change adds a new option to configure script,
>> --enable-extra-grade-install.  When invoked with this option, the configure
>> script will set up the source tree to build and install only additional library
>> grades, not the entire system.  An example of the process is:
>>
>>    $ ./configure --enable-extra-grade-install
>>    $ mmake LIBGRADES="java csharp" install
>>
>> The above causes the java and csharp grades to be added to the existing
>> installation.  (This is no different to what the developers of Mercury already
>> do in this situation except that it removes the need to edit Mmakefiles by
>> hand and makes the whole thing a bit more user-friendly.)
>>
>> configure.ac:
>> 	Add the new option.  If it is enabled then:
>> 	- query the installed Mercury compiler for which C compiler to use.
>> 	- use the install prefix of the installed compiler by default.
>> 	- set the set of grades to be installed to empty.
>
> What about other options that may have been specified the first time Mercury
> was installed.  for exmaple someone might use a prefix of /foo/bar, but a
> libdir of /foo/baz/lib/.  Options like this will need to be used.

The --prefix option can be given and the new grades installed somewhere
else (if you really want to).  I didn't try separate library
installation directories (does that work anyway?), but in principle I
think that should work (or at least could be made to).  That said, I
doubt they're actually used all that often.

> Some things such as versions of C libraries that are installed should
> however be re-detected.

The existing compiler should be queried for what they are.  Since the
installed config files won't be re-written by this, what's in them,
rather than the results of the configure for extra grade installation,
will be used when actually using the new grades.

>> Mmakefile:
>> 	If the source tree was configure to install extra library grades then:
>> 	- disable the default target -- print a message about this if it is invoked.
>> 	- make the install target a synonym for install_grades.
>> 	- remove the dependency of install_grades on install_main.
>
> s/configure/configured/

Fixed.

> The rest seems okay modulo the things you mentioned above.

Windows, except for Cygwin, is not going to work for the moment.  Native
Windows lacks a suitable shell for running configure scripts and MSYS
has a bunch of path translation issues.

I don't intend to support extra grade installation for cross compilers
for the time being.

Cheers,
Julien.



More information about the reviews mailing list