#13325: eclib does not build on Cygwin
------------------------------------------------------------+---------------
       Reporter:  jpflori                                   |         Owner:  
tbd         
           Type:  defect                                    |        Status:  
needs_review
       Priority:  major                                     |     Milestone:  
sage-5.3    
      Component:  cygwin                                    |    Resolution:    
          
       Keywords:  eclib spkg cygwin                         |   Work issues:    
          
Report Upstream:  Workaround found; Bug reported upstream.  |     Reviewers:    
          
        Authors:  Jean-Pierre Flori                         |     Merged in:    
          
   Dependencies:  #13333                                    |      Stopgaps:    
          
------------------------------------------------------------+---------------

Comment (by jpflori):

 Replying to [comment:43 cremona]:
 /EXEEXT.html#EXEEXT
 > >   So I guess you unfortunately really have to add it to the
 PROCS_TESTS and similar variables.
 >
 > OK, I'll do that.  It makes sense.
 >
 Replacing
 {{{
 PROCS_PROGS = solve_conic solve_legendre reduce_cubics list_cubics
 procs_progs: $(PROCS_PROGS)
 }}}
 by
 {{{
 PROCS_PROGS = solve_conic solve_legendre reduce_cubics list_cubics
 procs_progs: $(addsuffix $(EXEEXT), $(PROCS_PROGS))
 }}}
 everywhere needed should do the trick.
 > is built. Is this intended? On solw platform (let's say Cygwin...) it
 would be nice to only build what is installed (and so remove the
 noinst_PROGRAMS stuff). I see the noinst was added in commit 93229fe24a35,
 could you elaborate on that? has it something to do with check targets?
 >
 > This should definitely be possible.  I only added the allprogs thing
 later on, specifically for Sage where the only binary used is mwrank.  So
 , progs that should be the only binary built (when allprogs is disabled).
 Great!
 I guess this implies removing noinst_PROGRAMS but also some dependencies
 for the all target:
 {{{
 progs: procs_progs qcurves_progs qrank_progs g0n_progs
 }}}
 which would become
 {{{
 progs: $(bin_PROGRAMS)
 }}}
 if that works,
 or something like
 {{{
 if ALLPROGS
 PROGS = $(PROCS_PROGS) $(QCURVES_PROGS) $(QRANK_PROGS) $(G0N_PROGS)
 else
 PROGS = mwrank$(EXEEXT)
 endif

 progs: $(PROGS)
 }}}
 >
 > > * all your tests in the check targets are really similar, except for
 the executable name of course, do you plan on refatoring that?
 >
 > Do you mean, by some sort of loop, or by clever wildcard targets in the
 Makefile?  Would you fancy writing something suitable?  Otherwise it does
 not seem very urgent (and they are similar, but not identical...)
 For all the programs tested in a similar way, you could replace
 {{{
 check_qrank: qrank_progs
         @echo Checking qrank programs...
         ./mwrank < $(test_input_dir)/mwrank.in > mwrank.testout
 2>/dev/null && diff mwrank.testout $(test_output_dir)/mwrank.out
         ./reduce_quartics < $(test_input_dir)/reduce_quartics.in >
 reduce_quartics.testout 2>/dev/null && diff reduce_quartics.testout
 $(test_output_dir)/reduce_quartics.out
         ./quartic_points < $(test_input_dir)/quartic_points.in >
 quartic_points.testout 2>/dev/null && diff quartic_points.testout
 $(test_output_dir)/quartic_points.out
         rm -f PRIMES 1
 }}}
 by something like
 {{{
 check_run = ./$(prog)$(EXEEXT) < $(test_input_dir)/$(prog).in >
 $(prog).testout 2>/dev/null && diff $(prog).testout
 $(test_output_dir)/$(prog).out || exit $$?

 check_qrank: qrank_progs
         @echo Checking qrank programs...
         $(foreach prog, $(PROCS_PROGS), $(check_run))
         rm -f PRIMES 1
 }}}
 Or, potentially better cause it can use parallelism, using Makefile
 dependencies
 {{{
 check_run = ./$<$(EXEEXT) < $(test_input_dir)/$<.in > $<.testout
 2>/dev/null && diff $<.testout $(test_output_dir)/$<.out || exit $$?

 %_RUN: %$(EXEEXT)
         $(check_run)

 qrank_progs_RUN: $(addsuffix _RUN, $(QRANK_PROGS))

 check_qrank: qrank_progs qrank_progs_RUN
         rm -f PRIMES 1

 }}}
 provided it works.

 And for parts were not every executable is tested in this way, you could
 create a secondary variable
 {{{
 QRANK_PROGS_TEST = ...
 }}}
 including only the ones to be tested and use it instead of
 {{{
 QRANK_PROGS
 }}}
 directly.

 I'll test such ideas tonight.

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/13325#comment:44>
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