Skip to content

Meta-ticket: Declare "optional" dependencies of packages (a package manager's suggested/recommended packages) #21700

@mkoeppe

Description

@mkoeppe

Various packages can be built with or without the presence of some other packages.

For example, the latte_int configure script detects lrslib and lidia if they are installed, and they provide additional features. lidia is quite a big package, and so it is not clear whether it should be a dependency. (Linux package managers have the notion of suggested or recommended packages for this situation.)

GNU make's "order-only dependencies" "sound" as if they can do this, but as Jeroen explains, they can't.

Of course, the user can just work around this issue by doing sage -i lidia && sage -i latte_int (or similar invocations such as make lidia latte_int, which are sequential from left to right thanks to our top-level Makefile), but we must find a proper solution that ensures reproducible (deterministic) builds when a parallelized make is used. In particular, this is relevant after #21538, which provides ./configure --enable-lidia --enable-latte_int && MAKE=-j12 make, for which the sequential workaround is not available.

This feature can be implemented by Makefile trickery, of course. See #30560.

Tickets:

  • Make openssl an optional dependency of python3 #30560: openssl an optional dependency of python3

  • giac detects cocoa (which we have added as an experimental package)

  • pynac is able to use giac if present (but we currently explicitly disable its use)

  • latte_int is able to use lidia for one subroutine -- a huge and unmaintained package; currently it is a normal dependency

  • polymake has lots of optional dependencies

Depends on #31017

CC: @tscrim @dimpase @videlec @jhpalmieri @slel

Component: build: configure

Issue created by migration from https://trac.sagemath.org/ticket/21700

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions