Opened 3 years ago

Last modified 2 months ago

#24024 needs_work task

Meta-ticket: Update other packages to using the sage-dist-helpers functions + DESTDIR where applicable

Reported by: embray Owned by: embray
Priority: major Milestone: sage-9.2
Component: build Keywords:
Cc: Merged in:
Authors: Reviewers:
Report Upstream: N/A Work issues:
Branch: Commit:
Dependencies: Stopgaps:

Description (last modified by embray)

This is a meta-ticket for tickets that address updating other packages to use the helper functions in sage-dist-helpers where possible. There are a few advantages to doing this:

  • In general it simplifies these scripts and reduces a lot of boilerplate. As more functions get written even more boilerplate can be removed, but even the existing functions help a lot.
  • Although this requires irritating bulk updates to packages now, it reduces the overall need for such bulk updates in the future, since many packages that have similar build and installation steps can be be updated at once by updates to the applicable helper functions.

The second bullet point is especially motivated right now by #22509. Since it requires updates to nearly every package in Sage anyways, it makes more sense to update most packages to use the helper functions, and then add DESTDIR support through the helper functions. In particular, the vast majority of Python and autotools packages can be given DESTDIR support en masse by this approach.

  • #24014 and #24018 -- Update Python packages that are installed with pip to use sdh_pip_install
  • #24025 -- Update "trivial" autotools packages to use sdh_configure, sdh_make, and sdh_install. By "trivial" I mean packages with very simple build scripts that can be mechanically updated with simple replacements.
  • #25038 Update some standard packages that were excluded from #24025 due to conflicts with other existing tickets
    • curl
    • gc
  • Miscellaneous packages that have already been converted (e.g. as part of a version update):
  • #27039 Update some optional packages that use autotools in a standard way but were just excluded from #24025 due to not being standard packages
    • 4ti2
    • bliss
    • cbc
    • csdp
    • deformation
    • fricas
    • gp2c
    • igraph
    • latte_int
    • libogg
    • lidia
    • lrslib
    • mpfrcx
    • sirocco
    • tdlib
  • #????? Same as previous, but for experimental packages:
    • libtheora - doesn't even build successfully for me ATM
    • surf - doesn't even build successfully for me ATM
    • valgrind
  • Update "trickier" autotools packages that take a little extra care for some reason:
    • #25043 - python2/python3
    • #????? - compilerwrapper (experimental)
    • #????? - gambit (optional)
    • #22626 - gap
    • #26856 - gap_packages (optional)
    • #27016 - gcc (optional)
    • #????? - git (optional)
    • #25001 #27016 - gfortran (optional)
    • #????? - gmp (optional)
    • #25045 - mpfr
    • #25086 - nauty
    • #25087 - ppl
    • #25049 - r
    • #????? - termcap (has a configure from a very old autoconf)
    • #????? - topcom (its existing spkg-install uses install-strip instead of install and one can see why: the debugging info for this library is quite large for some reason; need an alternative to sdh_make_install that allows alternate install targets)
  • Handle miscellaneous non-autotools packages. There are some like this that may still be applicable (e.g. they don't use configure but they still use make in such a way that can be replaced with sdh_make). It might also be possible to narrow down one or two other classes of packages that can be simplified with new helper functions.
    • #25035 - arb - has a hand-written configure script
    • #????? - cmake (optional)
    • #29150 - coxeter3 (optional)
    • #25035 - flint- has a hand-written configure script
    • #25042 - freetype - has a hand-written configure script
    • #????? - gap3 (experimental) - do we care?
    • #25100 - gfan
    • #25100 - lcalc
    • #????? - lie (experimental)
    • #29148 - mcqd (optional)
    • #????? - modular_decomposition (experimental)
    • #27511 - normaliz (optional)
    • #25037 - ntl - has a hand-written configure script
    • #25052 - openblas
    • #????? - openssl
    • #25144 - palp
    • #25143 - pari
    • #????? - perl_term_readline_gnu (experimental)
    • #27398 - plantri (optional)
    • #????? - polymake (experimental)
    • #????? - qepcad (experimental)
    • #25100 - ratpoints
    • #25100 - rubiks
    • #????? - saclib (optional)
    • #????? - scipoptsuite (experimental)
    • #????? - sip (optional)
    • #25100 - symmetrica
    • #25099 - sympow
    • #25048 - tachyon
    • #25142 - zlib - has a hand-written configure script
    • #25085 - zn_poly - configure is just a wrapper for a custom Python script called makemakefile.py
  • Some Python packages for which a simple pip install does not suffice:
  • Handle packages that don't have any kind of "build system" and just involve copying files. It might still be nice to have a helper function for this, for example, that ensures that all the destination directories are created under $SAGE_DESTDIR_LOCAL.
  • Miscellaneous packages with Python-based installers:
    • #????? - atlas (optional)
    • #????? - conway_polynomials
    • #????? - elliptic_curves

Change History (54)

comment:1 Changed 3 years ago by embray

  • Owner changed from (none) to embray

comment:2 Changed 3 years ago by jdemeyer

  • Description modified (diff)

comment:3 Changed 3 years ago by embray

  • Description modified (diff)

comment:4 Changed 3 years ago by embray

Note that for #22509 there will have be a second round of updates to DESTDIR support for some packages that manually copy files to locations in $SAGE_LOCAL. However, making these updates first still significantly reduces that number of packages that will require additional treatment.

comment:5 Changed 3 years ago by embray

  • Milestone changed from sage-8.1 to sage-8.2

comment:6 Changed 2 years ago by embray

  • Description modified (diff)

Added classifications to several of the packages that still need to be converted over to sdh-helpers/SAGE_DESTDIR support. Still not an exhaustive list.

comment:7 Changed 2 years ago by embray

  • Description modified (diff)

comment:8 follow-up: Changed 2 years ago by jdemeyer

cysignals should be easy... it is only unusual because it uses autoconf in a Python package but sdh_configure should just work anyway.

comment:9 in reply to: ↑ 8 Changed 2 years ago by embray

Replying to jdemeyer:

cysignals should be easy... it is only unusual because it uses autoconf in a Python package but sdh_configure should just work anyway.

Indeed. Most of them are easy and are already done in my old branch for this. The only reason many of these packages were separated out from #24025 is that they required one or two more other changes.

comment:10 Changed 2 years ago by embray

  • Summary changed from Update other packages to using the sage-dist-helpers functions where applicable to Update other packages to support DESTDIR where applicable

At this point, now that DESTDIR support is available, there's no reason not to handle adding DESTDIR support, at least at a basic level, at the same time as implementing use of sage-dist-helpers.

comment:11 Changed 2 years ago by embray

  • Description modified (diff)
  • Summary changed from Update other packages to support DESTDIR where applicable to Update other packages to using the sage-dist-helpers functions where applicable

comment:12 Changed 2 years ago by embray

  • Description modified (diff)

comment:13 Changed 2 years ago by embray

  • Summary changed from Update other packages to using the sage-dist-helpers functions where applicable to Update other packages to using the sage-dist-helpers functions + DESTDIR where applicable

comment:14 Changed 2 years ago by embray

  • Description modified (diff)

comment:15 Changed 2 years ago by embray

  • Description modified (diff)

comment:16 Changed 2 years ago by embray

  • Description modified (diff)

comment:17 Changed 2 years ago by embray

  • Description modified (diff)

comment:18 Changed 2 years ago by embray

  • Description modified (diff)

comment:19 Changed 2 years ago by embray

  • Description modified (diff)

comment:20 Changed 2 years ago by embray

  • Description modified (diff)

comment:21 Changed 2 years ago by embray

  • Description modified (diff)

comment:22 Changed 2 years ago by embray

  • Description modified (diff)

comment:23 Changed 2 years ago by embray

  • Description modified (diff)

zn_poly is not autotools.

comment:24 Changed 2 years ago by embray

  • Description modified (diff)

comment:25 Changed 2 years ago by embray

  • Description modified (diff)

comment:26 Changed 2 years ago by embray

  • Description modified (diff)

comment:27 Changed 2 years ago by embray

  • Description modified (diff)

comment:28 Changed 2 years ago by jdemeyer

  • Description modified (diff)

comment:29 Changed 2 years ago by embray

  • Description modified (diff)

comment:30 Changed 2 years ago by embray

  • Description modified (diff)

comment:31 Changed 2 years ago by embray

  • Description modified (diff)

comment:32 Changed 2 years ago by embray

  • Description modified (diff)

comment:33 Changed 2 years ago by embray

  • Description modified (diff)

comment:34 Changed 2 years ago by embray

  • Description modified (diff)

comment:35 Changed 2 years ago by embray

  • Milestone changed from sage-8.2 to sage-8.3

comment:36 Changed 2 years ago by embray

  • Milestone changed from sage-8.3 to sage-8.4

comment:37 Changed 21 months ago by embray

  • Milestone changed from sage-8.4 to sage-8.5

comment:38 Changed 19 months ago by embray

  • Description modified (diff)

Working on DESTDIR install for gap_packages as part of #26856.

comment:39 Changed 19 months ago by embray

  • Milestone changed from sage-8.5 to sage-8.7

Retargeting some of my tickets.

comment:40 Changed 19 months ago by embray

  • Description modified (diff)

comment:41 Changed 18 months ago by embray

  • Description modified (diff)

comment:42 Changed 18 months ago by embray

  • Description modified (diff)

gdb already done in #24692

comment:43 Changed 18 months ago by embray

  • Description modified (diff)

tides was done in #26021

comment:44 Changed 18 months ago by embray

  • Description modified (diff)

comment:45 Changed 18 months ago by embray

  • Description modified (diff)

comment:46 Changed 18 months ago by embray

  • Status changed from new to needs_review

comment:47 Changed 18 months ago by embray

  • Status changed from needs_review to needs_work

This should really be in needs work status.

comment:48 Changed 17 months ago by chapoton

  • Description modified (diff)

comment:49 Changed 16 months ago by chapoton

  • Description modified (diff)
  • Milestone changed from sage-8.7 to sage-8.8

comment:50 Changed 13 months ago by embray

  • Milestone changed from sage-8.8 to sage-8.9

Tickets still needing working or clarification should be moved to the next release milestone at the soonest (please feel free to revert if you think the ticket is close to being resolved).

comment:51 Changed 7 months ago by embray

  • Milestone changed from sage-8.9 to sage-9.1

Ticket retargeted after milestone closed

comment:52 Changed 5 months ago by embray

  • Description modified (diff)

comment:53 Changed 5 months ago by mkoeppe

  • Summary changed from Update other packages to using the sage-dist-helpers functions + DESTDIR where applicable to Meta-ticket: Update other packages to using the sage-dist-helpers functions + DESTDIR where applicable

comment:54 Changed 2 months ago by mkoeppe

  • Milestone changed from sage-9.1 to sage-9.2
Note: See TracTickets for help on using tickets.