Karim Belabas on Sat, 05 Apr 2008 00:29:43 +0200

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: Problem with 2.3.3 testing ellglobalred and galois

* David A. Desrosiers [2008-04-04 20:36]:
>> The 'fixes' are actually optional data packages that are required to  
>> run the tests. The test are in part a validation on the content of the 
>> data packages.
> The packages have been unpacked into the tree, as indicated, creating:
> 	/pari-2.3.3/data/elldata/
> 	/pari-2.3.3/data/galdata/

The quick install guide is ambiguous, the full INSTALL.[dvi|pdf]
correctly state

  "[...]Typing make install installs all such packages"

>> Assuming the test failed because the optional packages where not
>> properly installed:
>> 1) You need to run 'make install' before 'make check'.
> Can't do that, because the install target actually tries to install the 
> software into the global $PREFIX specified (/usr/local/ if none was 
> specified). Can't install software that doesn't pass checks, of course.

Then, install it in a sandbox using 

  Configure --prefix /tmp/pari && make install && make test-all

or somesuch. [ Why assume that the 'install' target is not itself buggy,
after all ? ] You can always revert to 

  Configure && make install && make test-all


> If the 'install' target is supposed to "install" the data into the local 
> tree first using some mechanism, before the 'test-all' target is run, 
> then the 'install' target is broken in the current incarnation, because 
> it doesn't do that.

No, it isn't supposed to do that.

The documentation is faulty there and should clearly state which tests
will fail unless specific extra packages are installed.

>> 2) GP looks for directories 'galdata' and 'elldata' in the directory
>> reported by 'default(datadir)'.
> There are 3 references to 'default(datadir)' in the pari-2.3.3 source,  
> and none of them are programatic; 2 are in CHANGES and 1 is in  
> doc/usersch2.tex.

'default' is a GP command, and 'datadir' one ressource among many which
it may affect. Bill meant 

  "Users can check where gp will look for the packages by typing

libpari just access the global variable "pari_datadir" which is set in
pari_init_defaults(). The latter uses the value hardcoded at Configure
time, but allows the environment variable $GP_DATA_DIR to override it.
[ This is documented in 'man gp'. ]

The following should work, but is unfortunately not documented :

  env GP_DATA_DIR=data make test-all

> I'm not sure how it's "looking" in there at all, if  
> nothing in the initial Configure or the Makefiles tells it to do so.
>> 3) The only functions affected are polgalois (need galdata.tgz) and  
>> ellsearch and ellidentify (need elldata.tgz).
> Right, so the "solution" for now is to run 'dobench' instead of  
> 'test-all', because that seems to work on all platforms we're building  
> this on. elldata and galois fail exactly the same on all platforms.

Yes, 'make bench' is a minimal set of tests that every user should run
before installing the software. In INSTALL.pdf, 'make test-all' is
documented in a section labelled as follows:

  Heavy-duty testing [Optional] :
  There are a few extra tests which should be useful only for developpers.

>> Olinux-*/ellglobalred-sta.dif and Olinux-*/galois-sta.dif
> Seems the order of events it amiss here... it looks in  
> /usr/local/share/pari/elldata/ell0 for the data files, but since the  
> check fails, those files won't exist there using the (IMHO, broken)  
> 'install' target.

In a sense. The problem is that PARI/GP is 99% functional without any
extra package and the latter can be installed manually at any time
[ just untar them to the place that default(datadir) or $GP_DATA_DIR
indicates ].

I guess this is just a documentation problem. Would adding a longer
explanation in the above section documenting 'make test-all' be
satisfactory ? [ listing the tests that will fail unless packages x, y,
z are already present and documenting explicitly the override 
  env GP_DATA_DIR=data make test all
for testing in the local tree ? ] 

Further information:

1) We *want* the tests to check the complete installation in the end,
not the one in a local tree.

2) The packages we are talking about are inert data which are not
expected to change in a foreseeable future. Interested users will
download them once then forget about them, while happily upgrading
many versions of PARI/GP.

Perhaps 'make install' should not be responsible for checking then
handling what's in 'data' and we should just request the user to extract
the packages in the correct place. Would that be clearer ?

If some non-trivial manipulation should ever become necessary to install
a package [ not currently the case ], we can always provide a Makefile
with the package ( which would possibly proceed to check out
/usr/local/share/lib/pari/pari.cfg if it needs information provided at
Configure time )

> I'll see if I can patch this somehow and try again.

Hope this helps,

Karim Belabas, IMB (UMR 5251)  Tel: (+33) (0)5 40 00 26 17
Universite Bordeaux 1          Fax: (+33) (0)5 40 00 69 50
351, cours de la Liberation    http://www.math.u-bordeaux.fr/~belabas/
F-33405 Talence (France)       http://pari.math.u-bordeaux.fr/  [PARI/GP]