William Stein wrote:

> I think a huge amount of the problem will be that many of those 66

<SNIP>

> positive reviewed tickets probably will:

>   (2) many of the patches will probably fail on 32-bit or ppc or OS X,
> even though they  worked fine on sage.math.

In a post yesterday I said:

------------------------------------------------------------------
For Unix/Linux environments, perhaps a sensible solution could be
summed up in two or perhaps three sentences.

1) Ensure you respect all environment variables.

2) Check it works on all supported operating systems using GCC as a 
compiler.

3) Check it works on  Cygwin, since a port to this is planned.
-----------------------------------------------------------------

You said "Definitely your 1-3 are definitely a good idea though... it's 
hard to argue with them."

Would it not be sensible to ask people submitting patches/spkgs to test 
them on those platforms, and show they work, by attaching logs? You 
can't expect people to own all that hardware, but if you can allow 
people access to what you have, then this is perhaps one way to solve 
the problem why "many of the patches will fail".

It really does help improve quality too.

Despite compiling libm4ri on numerous occasions on multi-processor 
machine, I'd never noticed the code for determining the number of CPUs 
would not work on Solaris.

It was only when I tried building libm4ri on HP-UX that I realised there 
  was a problem, as there the configure script actually broke.

This got me to post to the autoconf mailing list, providing a link to 
the macro on the GNU site

Here are a couple of the comments about that macro used in libm4ri, 
which was taken from the autoconf macro archive

http://www.nongnu.org/autoconf-archive/ax_count_cpus.html

1) Ralf Wildenhues said: "This macro does not look well-designed.  It 
does the wrong thing when cross-compiling, or even only compiling for a 
different system (which happens to be use the same architecture)"

2) Mike Frysinger said "there are so many reasons why this is wrong"

So in summary

* The macro will not work on Solaris, which is a supported operating 
systems, though I had never noticed it.

* The failure to even run on HP-UX got me to look at the code in detail.

* Both of the above issues got me to look at other parts of the 
configure.ac used by libm4ri, and realise the code for determining the 
cache sizes was incorrect too.

So testing on an unsupported platform identified problems on at least 
one supported platform (Solaris) and I think it will be broken on PPC too.

Testing with Sun Studio highlighted yet another issue with that 
configure script in lib4mri - it thinks the Sun compiler can't create 
executables.

With 90% of developers using linux, perhaps sage.math is the machine 
were there is least point in actually testing the code.

How about this idea

1) All developers state what is their main platform they build on (in my 
case Solaris).

2) When submitting a patch, they attach logs showing building on all 
platforms, *except* the one they normally work on, since one can assume 
they have probably got their patch working there.

In which case, I would attach logs showing it working on Linux, OS X and 
if possible Cygwin [note 1]. I would *not* attach a log for Solaris.

This really is no more than an extension of the review process, where 
the submitter of a patch has to convince the reviewer the code works on 
the other platforms. That should increase the number of positive reviews 
where the code actually makes it into Sage.

Dave


Notes
[1] I'm not sure how far advanced the port on Cygwin is, so how 
practical that is.




Dave

--~--~---------~--~----~------------~-------~--~----~
To post to this group, send an email to sage-devel@googlegroups.com
To unsubscribe from this group, send an email to 
sage-devel-unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URL: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to