Opened 8 years ago

Closed 8 years ago

Last modified 8 years ago

#11377 closed enhancement (fixed)

Clean and harmonize module_list.py

Reported by: fbissey Owned by: GeorgSWeber
Priority: critical Milestone: sage-4.7.1
Component: build Keywords: sd31
Cc: strogdon, robertwb Merged in: sage-4.7.1.alpha4
Authors: François Bissey Reviewers: Volker Braun
Report Upstream: N/A Work issues:
Branch: Commit:
Dependencies: Stopgaps:

Description (last modified by fbissey)

module_list.py is quite messy in its current state. There are several things that can be done:

  1. remove the unused debian bits
  2. we have SAGE_LOCAL and SAGE_INC variables but there use iis not uniform
  3. we also have numpy_include_dirs, numpy_depends, flint_depends, singular_depends and ginac_depends and most of them are under-used.

In this ticket I remove old debian stuff, use SAGE_INC, SAGE_LOCAL and the other variables in a uniform fashion removing all instances of SAGE_ROOT +/local/... and so on to replace it by the appropriate variable.

Apply:

Attachments (2)

trac_11377-build_module_listpy.patch (19.8 KB) - added by fbissey 8 years ago.
patch to module_list.py
trac_11377-extraflint-dependencies.patch (4.2 KB) - added by fbissey 8 years ago.
I missed a number of flint dependencies in the original patch. Apply trac_11377-build_module_listpy.patchafter

Download all attachments as: .zip

Change History (18)

Changed 8 years ago by fbissey

patch to module_list.py

comment:1 Changed 8 years ago by fbissey

  • Authors set to François Bissey
  • Status changed from new to needs_review

comment:2 Changed 8 years ago by strogdon

  • Cc strogdon added

comment:3 Changed 8 years ago by fbissey

Now that 4.7.1.alpha0 is out this can be reviewed.

comment:4 Changed 8 years ago by vbraun

  • Status changed from needs_review to needs_work

Looks good to me. But in Sage-4.7.1.alpha2 there were some more extension modules added (under sage.groups.perm_gps.partn_ref). Can you updated your patch for that? I'll review it then asap.

comment:5 Changed 8 years ago by vbraun

  • Keywords sd31 added

comment:6 Changed 8 years ago by fbissey

It is up to date for 4.7.1.alpha2 already. The only possible problems could be with #9989 depending on which one is merged first and whether my suggested changes for it are accepted.

comment:7 Changed 8 years ago by vbraun

The patch applies, but sage.groups.perm_gps.partn_ref.* don't use SAGE_INC and the flint_depends:

    Extension('sage.groups.perm_gps.partn_ref.automorphism_group_canonical_label',
              sources = ['sage/groups/perm_gps/partn_ref/automorphism_group_canonical_label.pyx'],
              libraries = ['gmp', 'flint'],
              include_dirs = [SAGE_ROOT + '/local/include/FLINT/'],
              extra_compile_args = ['-std=c99'],
              depends = [SAGE_ROOT + "/local/include/FLINT/flint.h"]),

comment:8 Changed 8 years ago by fbissey

I thought I had taken care of that. My apologies it will take a few hours until I can take care of them.

Changed 8 years ago by fbissey

I missed a number of flint dependencies in the original patch. Apply trac_11377-build_module_listpy.patchafter

comment:9 Changed 8 years ago by fbissey

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

It turns out I had missed another instance of flint in sage.set.disjoints.set. So the additional patch takes care of it. It was all done on top of alpha2, hopefully there is nothing wrecking it already in alpha3.

comment:10 Changed 8 years ago by fbissey

In the last patch description the word after shouldn't have come last. It is applied after trac_11377-build_module_listpy.patch.

comment:11 Changed 8 years ago by vbraun

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

Looks great!

comment:12 Changed 8 years ago by jdemeyer

  • Priority changed from major to critical

comment:13 Changed 8 years ago by jdemeyer

  • Merged in set to sage-4.7.1.alpha4
  • Resolution set to fixed
  • Status changed from positive_review to closed

comment:14 Changed 8 years ago by leif

  • Cc robertwb added

Would have been nice if you'd cc'ed me ;-) (as I have introduced SAGE_INC :-) and always been interested in cleaning the whole mess up, not to mention tickets like #8664, #9914, or the "final" trouble with #4000 ...).

Robert B. originally planned (about 14+ month ago, cf. e.g. #7987) to "automate" most of what's currently hand-coded in module_list.py (by Cython pragmas local to the modules' files), so I mostly made changes that affect only small parts.

Btw, I may have missed something, but neither alpha4 (nor alpha3) have yet been announced; the README.FIRSTs still state

There is no point in testing it because the version can change any time.

comment:15 follow-up: Changed 8 years ago by fbissey

Hi Robert,

sorry I didn't know you had introduced it. I was vaguely aware of the existence of an effort like #7987 but didn't know the ticket or that a ticket was actually open.

I must say my primary aim was the elimination of reference to SAGE_ROOT which is a pain for sage-on-gentoo. And of course once started I had to clean the whole thing, I have been waiting for some time with my clean up patch I can tell you. So I am glad it got reviewed positively and all.

comment:16 in reply to: ↑ 15 Changed 8 years ago by leif

Replying to fbissey:

And of course once started I had to clean the whole thing, I have been waiting for some time with my clean up patch I can tell you. So I am glad it got reviewed positively and all.

And above all merged! Making larger changes to module_list.py is some kind of Sisyphean task since many tickets (unrelated to the build system) frequently modify parts of it.

Reducing the need for the latter should IMHO be the next step, as it somewhat thwarts concurrent, modular development and maintainability.

I've more than once spent days to figure out and remove useless dependencies (e.g. on libraries) last year, in some cases just to - not much later - see the effort being more or less in vain...

Note: See TracTickets for help on using tickets.