Skip to content

Commit

Permalink
Trac #27567: Add --with-system-<spkg> options to configure
Browse files Browse the repository at this point in the history
As discussed in other tickets, such as #27373 and #26899, it would
sometimes be useful to be able to explicitly specify, at configure-time,
whether or not a system package can be used to fulfill some SPKG
dependency.

With the work being done for #27330, it is currently the case that if an
SPKG has a `spkg-configure.m4`, and the checks performed for the system
package succeed, then the system package will always be used whether you
want to or not.

This is a problem because even of the configure-time checks succeed,
there could be previously unknown or unanticipated problems with using a
particular version of the system package or some package+platform
combination.

Therefore it is useful (if unfortunate) to be able to force use of the
SPKG and disable checking for the system package.  In principle we would
want to react to the broken package+platform combination as well, either
by fixing it somehow or blacklisting that particular combination at
configure-time.  However, by providing this option, we at least don't
have to react immediately to such problems if/when they arise (e.g.
#26899).

This ticket adds a `--with-system-<spkg>` flag to `configure`; e.g.
`--with-system-zlib`.  By default this is enabled (the current
behavior), but by passing `--with-system-zlib=no` or `--without-system-
zlib` then the SPKG will be installed without checking the system for
the dependency.

This also adds the option to pass `--with-system-zlib=force` meaning
that if the dependency cannot be found on the system then configure will
abort with an error message.

This would effectively replace #21538.

URL: https://trac.sagemath.org/27567
Reported by: embray
Ticket author(s): Erik Bray
Reviewer(s): Dima Pasechnik
  • Loading branch information
Release Manager authored and vbraun committed Apr 2, 2019
2 parents 4aa19b0 + b6aa97f commit ce655f3
Showing 1 changed file with 21 additions and 1 deletion.
22 changes: 21 additions & 1 deletion m4/sage_spkg_configure.m4
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,17 @@ AC_DEFUN_ONCE([SAGE_SPKG_CONFIGURE_]m4_toupper($1), [
m4_pushdef([SPKG_NAME], [$1])
m4_pushdef([SPKG_INSTALL_VAR], [sage_spkg_install_]SPKG_NAME)
m4_pushdef([SPKG_REQUIRE_VAR], [sage_require_]SPKG_NAME)
m4_pushdef([SPKG_USE_SYSTEM], [sage_use_system_]SPKG_NAME)
# BEGIN SAGE_SPKG_CONFIGURE_]m4_toupper($1)[
AC_MSG_NOTICE([=== checking whether to install the $1 SPKG ===])
AC_ARG_WITH([system-]SPKG_NAME,
AS_HELP_STRING(--with-system-SPKG_NAME,
[detect and use an existing system SPKG_NAME (default is yes)]),
[AS_VAR_SET(SPKG_USE_SYSTEM, [$withval])],
[AS_VAR_SET(SPKG_USE_SYSTEM, [yes])]
)
m4_divert_once([HELP_WITH], AS_HELP_STRING(--with-system-SPKG_NAME=force,
[require use of an existing system SPKG_NAME]))
m4_ifval(
[$2],
[AS_VAR_SET_IF(SPKG_INSTALL_VAR, [], SPKG_INSTALL_VAR[=no])],
Expand All @@ -42,8 +51,19 @@ AS_VAR_SET_IF(SPKG_REQUIRE_VAR, [], SPKG_REQUIRE_VAR[=no])
$3
],
[AS_VAR_SET_IF(SPKG_REQUIRE_VAR, [], SPKG_REQUIRE_VAR[=yes])])
AS_VAR_IF(SPKG_REQUIRE_VAR, [yes], [$2], SPKG_INSTALL_VAR[=no])
AS_VAR_IF(SPKG_USE_SYSTEM, [no], SPKG_INSTALL_VAR[=yes], [
AS_VAR_IF(SPKG_REQUIRE_VAR, [yes], [$2], SPKG_INSTALL_VAR[=no])
])
AS_VAR_IF(SPKG_USE_SYSTEM, [force], [
AS_VAR_IF(SPKG_INSTALL_VAR, [yes], [
AC_MSG_ERROR(m4_normalize([
given --with-system-]SPKG_NAME[=force but the package could not
be found on the system
]))
])
])
# END SAGE_SPKG_CONFIGURE_]m4_toupper($1)[
m4_popdef([SPKG_USE_SYSTEM])
m4_popdef([SPKG_REQUIRE_VAR])
m4_popdef([SPKG_INSTALL_VAR])
m4_popdef([SPKG_NAME])
Expand Down

0 comments on commit ce655f3

Please sign in to comment.