#10993: Update eclib to 20120115
--------------------------------+-------------------------------------------
    Reporter:  cremona          |         Owner:  cremona                       
  
        Type:  enhancement      |        Status:  new                           
  
    Priority:  major            |     Milestone:  sage-5.0                      
  
   Component:  packages         |    Resolution:                                
  
    Keywords:  elliptic curves  |   Work_issues:                                
  
    Upstream:  N/A              |      Reviewer:  Frithjof Schulze, Jeroen 
Demeyer
      Author:  John Cremona     |        Merged:                                
  
Dependencies:  #11354           |  
--------------------------------+-------------------------------------------
Changes (by jdemeyer):

  * status:  closed => new
  * resolution:  fixed =>
  * merged:  sage-5.0.beta2 =>


Comment:

 I found a race condition in the eclib installer:
 at various places you have things like
 {{{
 chmod og+r *
 }}}

 The problem is that some temporary file might be caught by the "*" which
 is removed by the time `chmod` tries to access it.  It is hard to
 reproduce, but the following happened once:

 {{{
 cd qrank && make lib install
 make[3]: Entering directory
 
`/home/buildbot/build/sage/rosemary-1/rosemary_full/build/sage-5.0.beta2/spkg/build/eclib-20120115.p0/src/qrank'
 Makefile:81: warning: overriding commands for target `clean'
 ../Makefile:77: warning: ignoring old commands for target `clean'
 Makefile:121: warning: overriding commands for target `veryclean'
 ../Makefile:86: warning: ignoring old commands for target `veryclean'
 Makefile:125: warning: overriding commands for target `check'
 ../Makefile:98: warning: ignoring old commands for target `check'
 g++ -c -fPIC -g -O3 -DNEW_OP_ORDER -DUSE_PARI_FACTORING -I../include
 -DNTL_ALL
 
-I/home/buildbot/build/sage/rosemary-1/rosemary_full/build/sage-5.0.beta2/local/include
 
-I/home/buildbot/build/sage/rosemary-1/rosemary_full/build/sage-5.0.beta2/local/include
 mrank1.cc -o mrank1_n.o
 [...]
 g++ -c -fPIC -g -O3 -DNEW_OP_ORDER -DUSE_PARI_FACTORING -I../include
 -DNTL_ALL
 
-I/home/buildbot/build/sage/rosemary-1/rosemary_full/build/sage-5.0.beta2/local/include
 
-I/home/buildbot/build/sage/rosemary-1/rosemary_full/build/sage-5.0.beta2/local/include
 ratpoint.cc -o ratpoint_n.o
 g++ -o ratpoint version_n.o ratpoint_n.o mquartic_n.o mlocsol_n.o
 mglobsol_n.o \
          qc_n.o  -L../lib -lcurvesntl -ljcntl -lpari
 
-L/home/buildbot/build/sage/rosemary-1/rosemary_full/build/sage-5.0.beta2/local/lib
 
-L/home/buildbot/build/sage/rosemary-1/rosemary_full/build/sage-5.0.beta2/local/lib
 -lntl -L../lib -lgmp  -lpari  -lpari -lm
 rm -f librankntl.a
 ar r librankntl.a mrank1_n.o mrank2_n.o mequiv_n.o mquartic_n.o
 mlocsol_n.o mglobsol_n.o  qc_n.o sqfdiv_n.o desc2_n.o transform_n.o
 minim_n.o reduce_n.o bitspace_n.o GetOpt_n.o twoadic_n.o descent_n.o
 ar: creating librankntl.a
 chmod og+r *
 ranlib librankntl.a
 chmod: cannot access `stXXXXPjrrN2': No such file or directory
 make[3]: *** [mwrank] Error 1
 (cd ../include; rm -f mrank2.h mequiv.h mlocsol.h mglobsol.h msoluble.h
 mquartic.h mrank1.h qc.h sqfdiv.h version.h minim.h reduce.h transform.h
 desc2.h bitspace.h options.h GetOpt.h twoadic.h descent.h)
 for f in mrank2.h mequiv.h mlocsol.h mglobsol.h msoluble.h mquartic.h
 mrank1.h qc.h sqfdiv.h version.h minim.h reduce.h transform.h desc2.h
 bitspace.h options.h GetOpt.h twoadic.h descent.h; \
          do cp ${f} ../include; \
         done
 chmod a+r ../include/*
 rm -f ../lib/librankntl.a
 cp librankntl.a ../lib
 chmod a+rx ../lib/librankntl.a
 make[3]: Target `install' not remade because of errors.
 make[3]: Leaving directory
 
`/home/buildbot/build/sage/rosemary-1/rosemary_full/build/sage-5.0.beta2/spkg/build/eclib-20120115.p0/src/qrank'
 make[2]: *** [all] Error 2
 make[2]: Leaving directory
 
`/home/buildbot/build/sage/rosemary-1/rosemary_full/build/sage-5.0.beta2/spkg/build/eclib-20120115.p0/src'
 Error building eclib
 }}}

 I believe the easiest solution is to prepend a "-" to the make command
 which means: ignore errors.  Concretely: replace
 {{{
 chmod og+r *
 }}}
 by
 {{{
 -chmod og+r *
 }}}
 (of course, similarly for other "chmod" invocations)

 Unrelated: why do you have "/bin/rm" at several places as opposed to
 simply "rm"?

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/10993#comment:39>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sage-trac?hl=en.

Reply via email to