Opened 6 years ago

Closed 6 years ago

#14410 closed defect (fixed)

Let ATLAS build shared libraries on Cygwin

Reported by: jpflori Owned by: tbd
Priority: major Milestone: sage-5.13
Component: porting: Cygwin Keywords: atlas spkg cygwin
Cc: kcrisman, dimpase, vbraun Merged in: sage-5.13.beta5
Authors: Jean-Pierre Flori Reviewers: Volker Braun, Jeroen Demeyer
Report Upstream: N/A Work issues:
Branch: Commit:
Dependencies: #14754, #15270 Stopgaps:

Description (last modified by jpflori)

Currently ATLAS build static libraries without problems on Cygwin, but the autotools build system crafted by Volker which uses libtool fail to repackage them into shared one. Indeed:

  • on usual platforms libtool already rants that it should not pack non-libtool objects (extracted from the static libs) together.
  • on Cygwin it just refuses to do so, and I could not find a flag to get the usual behavior (i.e. "rant but do it").

The solution is to replace the libtool invokations by direct invocations to gcc and gfortran (or even ld if you feel adventurous). See http://trac.sagemath.org/sage_trac/ticket/10508#comment:392

Use:

This also allows building ATLAS by default on Cygwin.

Attachments (1)

atlas-3.10.1.p6.diff (11.2 KB) - added by jpflori 6 years ago.
Spkg diff, for review only.

Download all attachments as: .zip

Change History (27)

comment:1 Changed 6 years ago by jpflori

  • Dependencies set to #10508

comment:2 Changed 6 years ago by jpflori

  • Description modified (diff)

comment:3 Changed 6 years ago by jdemeyer

  • Dependencies changed from #10508 to #14754

comment:4 Changed 6 years ago by jpflori

  • Description modified (diff)
  • Summary changed from Let ATLAS build shared libraries on Cygwin and install static libraries to Let ATLAS build shared libraries on Cygwin

comment:5 Changed 6 years ago by jdemeyer

  • Milestone changed from sage-5.11 to sage-5.12

comment:6 Changed 6 years ago by jpflori

  • Authors set to Jean-Pierre Flori
  • Cc dimpase vbraun added
  • Description modified (diff)
  • Status changed from new to needs_review

comment:7 Changed 6 years ago by jpflori

More or less tested on debian/ubuntu and cygwin(32).

Changed 6 years ago by jpflori

Spkg diff, for review only.

comment:8 Changed 6 years ago by jpflori

  • Description modified (diff)

SAGE_ATLAS_LIB should be ok on Cygwin as well now...

comment:9 follow-up: Changed 6 years ago by vbraun

Why are you moving the build dir into src? The whole point of a separate build dir is to keep it separate from the sources.

If you really want to build ATLAS by default on Cygwin then get rid of the "if False". Don't leave crap lying around after you are finished ;-)

comment:10 in reply to: ↑ 9 ; follow-up: Changed 6 years ago by jpflori

Replying to vbraun:

Why are you moving the build dir into src? The whole point of a separate build dir is to keep it separate from the sources.

Hum, don't really know. I wanted to get something consistent with how the ATLAS-lib dir is treated so I made a choice between:

  • moving ATLAS-build to the (first level of) src,
  • making a copy of ATLAS-lib below src before building the autotools project,
  • making something more sensible and more complicated.

    If you really want to build ATLAS by default on Cygwin then get rid of the "if False". Don't leave crap lying around after you are finished ;-)

I also hesitated, but I think keeping it in the spkg-install script, either as dead code or as a comment, cannot hurt. You can argue that it is saved into the hg history anyway.

comment:11 in reply to: ↑ 10 Changed 6 years ago by vbraun

Replying to jpflori:

I also hesitated, but I think keeping it in the spkg-install script, either as dead code or as a comment, cannot hurt.

It can, e.g. the next person might think that you really wanted to enable that but could not at that time for some unknown reason...

comment:12 Changed 6 years ago by jpflori

Spkg updated at the same address.

comment:13 Changed 6 years ago by vbraun

  • Reviewers set to Volker Braun
  • Status changed from needs_review to positive_review

Thanks. But "therefore" means "for that reason; consequently" and not "before that".

On a practical level, I don't think Jeroen is going to merge this before the git switch. Spkg changes might need to be manually converted to git branches...

comment:14 Changed 6 years ago by jdemeyer

  • Status changed from positive_review to needs_work

spkg-check doesn't work:

...
Successfully installed atlas-3.10.1.p6
Running the test suite for atlas-3.10.1.p6...
./spkg-check: line 38: cd: ATLAS-build: No such file or directory

comment:15 Changed 6 years ago by jdemeyer

Also, the spkg needs to be rebased to #15270.

comment:16 Changed 6 years ago by jdemeyer

  • Dependencies changed from #14754 to #14754, #15270

comment:17 Changed 6 years ago by jpflori

  • Description modified (diff)
  • Status changed from needs_work to needs_review

Rebased on top of #15270 and revamped spkg-check.

comment:18 Changed 6 years ago by jpflori

For the record this should only:

  • fix a bug in spkg-install which thought that the serial shared libraries were built even when not and so left the sage install without any ATLAS libraries,
  • let ATLAS build on Cygwin without any impact on other systems,
  • clean spkg-check.

So this is not so intrusive for usual systems and I wouldn't mind that Jeroen includes it in 5.13 if it's not too late (as the two other easy and (hopefully) Cygwin-only spkg fixes at #15365 and #15366).

comment:19 Changed 6 years ago by vbraun

  • Status changed from needs_review to positive_review

I think the general policy is not to merge new spkgs late in the beta cycle, but I'll let Jeroen decide on that ;-)

comment:20 Changed 6 years ago by jdemeyer

  • Status changed from positive_review to needs_work

The Changelog inside SPKG.txt is wrong:

=== atlas-3.10.1.p6, lapack-3.4.2 (Volker Braun, 11 October 2013) ===
 * Trac #15270: Do not give up if the upstream shared library build
   fails
 * Solaris / ZFS fixes

=== atlas-3.10.1.p6, lapack-3.4.2 (Jean-Pierre Flori, 7 November 2013) ===
 * Trac #14410: Let ATLAS build and install shared libraries on Cygwin.
 * Bunch of modifications to the autotools project generating shared libraries
   so that it does not invoke libtool on Cygwin.
 * Fix a bug in spkg-install.

These two entries should be switched and the version number (atlas-3.10.1.p7) corrected.

comment:21 Changed 6 years ago by jpflori

Yup, I'm quite sure I did it, but as I screwed up later on and had to reapply other changes i guess I forgot to correct that again.

comment:22 Changed 6 years ago by jpflori

  • Status changed from needs_work to needs_review

Should be ok now...

comment:23 Changed 6 years ago by jpflori

  • Status changed from needs_review to needs_work

make check does not work.

comment:24 Changed 6 years ago by jpflori

  • Status changed from needs_work to needs_review

Ok, fixed and tested this time.

comment:25 Changed 6 years ago by jpflori

Tested (SPKG_CHECK=yes) with success on Solaris as well.

comment:26 Changed 6 years ago by jdemeyer

  • Merged in set to sage-5.13.beta5
  • Resolution set to fixed
  • Reviewers changed from Volker Braun to Volker Braun, Jeroen Demeyer
  • Status changed from needs_review to closed
Note: See TracTickets for help on using tickets.