Skip to content

Commit e88216c

Browse files
author
Release Manager
committed
Trac #30944: tox: Improve local-sudo-ubuntu-standard
As a follow up to #30923, we improve the `local-sudo-...` environments as follows: - Provide alternative environments `local-root...`, which assume that we are already root, removing the `sudo` requirement (which is not installed on github actions and not needed there) - Use `configure --enable-build-as-root` for `local-root` - Add `DEBIAN_FRONTEND: noninteractive` to the installation of packages via `apt get` (otherwise installation of `tzdata` blocks CI) - Make `tox -e local-sudo-standard -- config.status` only build `config.status` instead of also invoking `make base-toolchain` (which is run as the required first step of the Sage build system before something like `make numpy` can be run; see #30721). URL: https://trac.sagemath.org/30944 Reported by: gh-tobiasdiez Ticket author(s): Matthias Koeppe Reviewer(s): Jonathan Kliem
2 parents a549452 + ab19133 commit e88216c

File tree

2 files changed

+17
-6
lines changed

2 files changed

+17
-6
lines changed

build/bin/sage-print-system-package-command

+3-2
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ if [ -z "$system" -o -z "$command" ]; then
4949
fi
5050
system_packages="$*"
5151
options=
52+
env=
5253
shopt -s extglob
5354
case $system:$command in
5455
homebrew*:setup-build-env)
@@ -73,8 +74,8 @@ case $system:$command in
7374
;;
7475
@(debian*|ubuntu*):*)
7576
[ "$NO_INSTALL_RECOMMENDS" = yes ] && options="$options --no-install-recommends"
76-
[ "$YES" = yes ] && options="$options --yes"
77-
[ -n "$system_packages" ] && echo "${PROMPT}${SUDO}apt-get $command $options $system_packages"
77+
[ "$YES" = yes ] && options="$options --yes" env="DEBIAN_FRONTEND=noninteractive "
78+
[ -n "$system_packages" ] && echo "${PROMPT}${SUDO}${env}apt-get $command $options $system_packages"
7879
;;
7980
@(fedora*|redhat*|centos*):install)
8081
[ "$YES" = yes ] && options="$options -y"

tox.ini

+14-4
Original file line numberDiff line numberDiff line change
@@ -349,6 +349,7 @@ setenv =
349349
local-nobootstrap: BOOTSTRAP=:
350350
local-!direct: PATH=/usr/bin:/bin:/usr/sbin:/sbin
351351
local-sudo: __SUDO=--sudo
352+
local-root: CONFIG_CONFIGURE_ARGS_ROOT=--enable-build-as-root
352353
# brew caches downloaded files in ${HOME}/Library/Caches. We share it between different toxenvs.
353354
local-homebrew: HOMEBREW={envdir}/homebrew
354355
local-homebrew-usrlocal: HOMEBREW=/usr/local
@@ -387,7 +388,7 @@ setenv =
387388
#
388389
# Resulting full configuration args, including EXTRA_CONFIGURE_ARGS from the user environment
389390
#
390-
CONFIGURE_ARGS={env:CONFIG_CONFIGURE_ARGS_1:} {env:CONFIG_CONFIGURE_ARGS_2:} {env:EXTRA_CONFIGURE_ARGS:}
391+
CONFIGURE_ARGS={env:CONFIG_CONFIGURE_ARGS_ROOT:} {env:CONFIG_CONFIGURE_ARGS_1:} {env:CONFIG_CONFIGURE_ARGS_2:} {env:EXTRA_CONFIGURE_ARGS:}
391392

392393
# environment will be skipped if regular expression does not match against the sys.platform string
393394
platform =
@@ -425,10 +426,11 @@ commands =
425426
local-conda: bash -c '{env:SETENV} && {env:CONDA_PREFIX}/bin/conda update -n base --yes conda'
426427
local-conda: bash -c 'PACKAGES=$(build/bin/sage-get-system-packages conda $(PATH=build/bin:$PATH build/bin/sage-package list {env:SAGE_PACKAGE_LIST_ARGS}) _bootstrap); {env:SETENV} && {env:CONDA_PREFIX}/bin/conda install --yes --quiet $PACKAGES'
427428
#
429+
# local-root: Assume we are root, run the system package commands
428430
# local-sudo: Use sudo to run the system package commands as root
429431
#
430-
local-sudo: bash -c '$(build/bin/sage-print-system-package-command {env:SYSTEM} update) #'
431-
local-sudo: bash -c 'PACKAGES=$(build/bin/sage-get-system-packages {env:SYSTEM} $(PATH=build/bin:$PATH build/bin/sage-package list {env:SAGE_PACKAGE_LIST_ARGS}) _bootstrap); $(build/bin/sage-print-system-package-command {env:SYSTEM} {env:__SUDO:} --yes --no-install-recommends install $PACKAGES) || [ "$IGNORE_MISSING_SYSTEM_PACKAGES" = yes ] && echo "(ignoring errors)" '
432+
local-{root,sudo}: bash -c 'eval $(build/bin/sage-print-system-package-command {env:SYSTEM} {env:__SUDO:} update) #'
433+
local-{root,sudo}: bash -c 'PACKAGES=$(build/bin/sage-get-system-packages {env:SYSTEM} $(PATH=build/bin:$PATH build/bin/sage-package list {env:SAGE_PACKAGE_LIST_ARGS}) _bootstrap); eval $(build/bin/sage-print-system-package-command {env:SYSTEM} {env:__SUDO:} --yes --no-install-recommends install $PACKAGES) || [ "$IGNORE_MISSING_SYSTEM_PACKAGES" = yes ] && echo "(ignoring errors)" '
432434
#
433435
# All "local" environments
434436
#
@@ -462,7 +464,15 @@ commands =
462464
docker: done'
463465
# #28728: gap fails its test suite.
464466
# linbox/cysignals testsuites fail. ppl takes very long.
465-
local: bash -c 'export PATH={env:PATH} && {env:SETENV} && {env:BOOTSTRAP} && ./configure --prefix={envdir}/local {env:CONFIGURE_ARGS} && make -k V=0 base-toolchain && make -k V=0 SAGE_SPKG="sage-spkg -y -o" SAGE_CHECK=warn SAGE_CHECK_PACKAGES="!cython,!r,!python3,!nose,!gap,!cysignals,!linbox,!git,!ppl,!cmake,!networkx,!symengine_py" {env:TARGETS_PRE:} {posargs:build} && (make -k V=0 SAGE_SPKG="sage-spkg -y -o" SAGE_CHECK=warn SAGE_CHECK_PACKAGES="!cython,!r,!python3,!nose,!gap,!cysignals,!linbox,!git,!ppl,!cmake" {env:TARGETS_OPTIONAL:} || echo "(error ignored)" ) '
467+
local: bash -c 'export PATH={env:PATH} && {env:SETENV} && \
468+
local: {env:BOOTSTRAP} && \
469+
local: ./configure --prefix={envdir}/local {env:CONFIGURE_ARGS} && \
470+
local: case "{posargs:}" in \
471+
local: config*) ;; \
472+
local: *) make -k V=0 base-toolchain ;; \
473+
local: esac && \
474+
local: make -k V=0 SAGE_SPKG="sage-spkg -y -o" SAGE_CHECK=warn SAGE_CHECK_PACKAGES="!cython,!r,!python3,!nose,!gap,!cysignals,!linbox,!git,!ppl,!cmake,!networkx,!symengine_py" {env:TARGETS_PRE:} {posargs:build} && \
475+
local: ([ -z "{env:TARGETS_OPTIONAL:}" ] || make -k V=0 SAGE_SPKG="sage-spkg -y -o" SAGE_CHECK=warn SAGE_CHECK_PACKAGES="!cython,!r,!python3,!nose,!gap,!cysignals,!linbox,!git,!ppl,!cmake" {env:TARGETS_OPTIONAL:} || echo "(error ignored)" ) '
466476

467477
[testenv:check_configure]
468478
## Test that configure behaves properly

0 commit comments

Comments
 (0)