Skip to content
This repository has been archived by the owner on Jan 30, 2023. It is now read-only.

Commit

Permalink
Merge tag '9.2.beta6' into t/29441/public/29441
Browse files Browse the repository at this point in the history
SageMath version 9.2.beta6, Release Date: 2020-07-25
  • Loading branch information
Matthias Koeppe committed Jul 25, 2020
2 parents 314b15f + ddaba54 commit 54d0f99
Show file tree
Hide file tree
Showing 149 changed files with 6,917 additions and 753 deletions.
144 changes: 144 additions & 0 deletions .github/workflows/tox-experimental.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
name: Test experimental packages with tox

## This GitHub Actions workflow runs SAGE_ROOT/tox.ini with select environments,
## whenever a GitHub pull request is opened or synchronized in a repository
## where GitHub Actions are enabled.
##
## It builds and checks some sage spkgs as defined in TARGETS.
##
## A job succeeds if there is no error.
##
## The build is run with "make V=0", so the build logs of individual packages are suppressed.
##
## At the end, all package build logs that contain an error are printed out.
##
## After all jobs have finished (or are canceled) and a short delay,
## tar files of all logs are made available as "build artifacts".

#on: [push, pull_request]

on:
pull_request:
types: [opened, synchronize]
push:
tags:
- '*'

env:
TARGETS_PRE: build/make/Makefile
TARGETS: build/make/Makefile
# TARGETS_OPTIONAL see below

jobs:
docker:
runs-on: ubuntu-latest
strategy:
fail-fast: false
max-parallel: 6
matrix:
tox_system_factor: [ubuntu-trusty, ubuntu-xenial, ubuntu-bionic, ubuntu-eoan, ubuntu-focal, debian-jessie, debian-stretch, debian-buster, debian-bullseye, debian-sid, linuxmint-17, linuxmint-18, linuxmint-19, linuxmint-19.3, fedora-26, fedora-27, fedora-28, fedora-29, fedora-30, fedora-31, centos-7, centos-8, gentoo, archlinux-latest, slackware-14.2, conda-forge, ubuntu-bionic-i386, ubuntu-eoan-i386, debian-buster-i386, centos-7-i386]
tox_packages_factor: [maximal]
targets_pattern: [0-g, h-o, p, q-z]
env:
TOX_ENV: docker-${{ matrix.tox_system_factor }}-${{ matrix.tox_packages_factor }}
LOGS_ARTIFACT_NAME: logs-commit-${{ github.sha }}-tox-docker-${{ matrix.tox_system_factor }}-${{ matrix.tox_packages_factor }}
DOCKER_TARGETS: configured with-targets with-targets-optional
TARGETS_OPTIONAL: "$( echo $(PATH=build/bin:$PATH build/bin/sage-package list :experimental: | grep -v database_stein_watkins\\$ | grep -v polytopes_db_4d | grep '^[${{ matrix.targets_pattern }}]' ) )"
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 500
- name: fetch tags
run: git fetch --depth=1 origin +refs/tags/*:refs/tags/*
- name: free disk space
run: |
sudo swapoff -a
sudo rm -f /swapfile
sudo apt clean
docker rmi $(docker image ls -aq)
df -h
- name: Install test prerequisites
run: |
sudo DEBIAN_FRONTEND=noninteractive apt-get update
sudo DEBIAN_FRONTEND=noninteractive apt-get install python-tox
- run: |
set -o pipefail; EXTRA_DOCKER_BUILD_ARGS="--build-arg USE_MAKEFLAGS=\"-k V=0 SAGE_NUM_THREADS=3\"" tox -e $TOX_ENV -- $TARGETS 2>&1 | sed "/^configure: notice:/s|^|::warning file=artifacts/$LOGS_ARTIFACT_NAME/config.log::|;/^configure: warning:/s|^|::warning file=artifacts/$LOGS_ARTIFACT_NAME/config.log::|;/^configure: error:/s|^|::error file=artifacts/$LOGS_ARTIFACT_NAME/config.log::|;"
- name: Copy logs from the docker image or build container
run: |
mkdir -p "artifacts/$LOGS_ARTIFACT_NAME"
cp -r .tox/$TOX_ENV/Dockerfile .tox/$TOX_ENV/log "artifacts/$LOGS_ARTIFACT_NAME"
if [ -f .tox/$TOX_ENV/Dockertags ]; then CONTAINERS=$(docker create $(tail -1 .tox/$TOX_ENV/Dockertags) /bin/bash || true); fi
if [ -n "$CONTAINERS" ]; then for CONTAINER in $CONTAINERS; do for ARTIFACT in /sage/logs; do docker cp $CONTAINER:$ARTIFACT artifacts/$LOGS_ARTIFACT_NAME && HAVE_LOG=1; done; if [ -n "$HAVE_LOG" ]; then break; fi; done; fi
if: always()
- uses: actions/upload-artifact@v1
with:
path: artifacts
name: ${{ env.LOGS_ARTIFACT_NAME }}
if: always()
- name: Print out logs for immediate inspection
# and markup the output with GitHub Actions logging commands
run: |
.github/workflows/scan-logs.sh "artifacts/$LOGS_ARTIFACT_NAME"
if: always()
- name: Push docker images
run: |
if [ -f .tox/$TOX_ENV/Dockertags ]; then
TOKEN="${{ secrets.DOCKER_PKG_GITHUB_TOKEN }}"
if [ -z "$TOKEN" ]; then
TOKEN="${{ secrets.GITHUB_TOKEN }}"
fi
echo "$TOKEN" | docker login docker.pkg.github.com -u ${{ github.actor }} --password-stdin
for a in $(cat .tox/$TOX_ENV/Dockertags); do
FULL_TAG=docker.pkg.github.com/${{ github.repository }}/$a
docker tag $a $FULL_TAG
echo Pushing $FULL_TAG
docker push $FULL_TAG
done || echo "(Ignoring errors)"
fi
if: always()

local-macos:

runs-on: macos-latest
strategy:
fail-fast: false
max-parallel: 3
matrix:
tox_system_factor: [homebrew-macos, homebrew-macos-python3_xcode, homebrew-macos-python3_xcode-nokegonly, homebrew-macos-python3_pythonorg, conda-forge-macos]
tox_packages_factor: [maximal]
targets_pattern: [0-g, h-o, p, q-z]
env:
TOX_ENV: local-${{ matrix.tox_system_factor }}-${{ matrix.tox_packages_factor }}
LOGS_ARTIFACT_NAME: logs-commit-${{ github.sha }}-tox-local-${{ matrix.tox_system_factor }}-${{ matrix.tox_packages_factor }}
TARGETS_OPTIONAL: "$( echo $(PATH=build/bin:$PATH build/bin/sage-package list :experimental: | grep -v database_stein_watkins\\$ | grep -v polytopes_db_4d | grep '^[${{ matrix.targets_pattern }}]' ) )"
steps:
- uses: actions/checkout@v2
- name: Install test prerequisites
run: |
brew install tox
- name: Install python3 from python.org
# As of 2020-03-30 (https://github.com/actions/virtual-environments/blob/master/images/macos/macos-10.15-Readme.md),
# Python 3.7.7 is installed on GitHub Actions runners. But we install our own copy from the python.org binary package.
run: |
curl -o python3.pkg https://www.python.org/ftp/python/3.7.7/python-3.7.7-macosx10.9.pkg
sudo installer -verbose -pkg python3.pkg -target /
if: contains(matrix.tox_system_factor, 'python3_pythonorg')
- name: Build and test with tox
# We use a high parallelization on purpose in order to catch possible parallelization bugs in the build scripts.
# For doctesting, we use a lower parallelization to avoid timeouts.
run: |
MAKE="make -j12" tox -e $TOX_ENV -- SAGE_NUM_THREADS=4 $TARGETS
- name: Prepare logs artifact
run: |
mkdir -p "artifacts/$LOGS_ARTIFACT_NAME"; cp -r .tox/*/log "artifacts/$LOGS_ARTIFACT_NAME"
if: always()
- uses: actions/upload-artifact@v1
with:
path: artifacts
name: ${{ env.LOGS_ARTIFACT_NAME }}
if: always()
- name: Print out logs for immediate inspection
# and markup the output with GitHub Actions logging commands
run: |
.github/workflows/scan-logs.sh "artifacts/$LOGS_ARTIFACT_NAME"
if: always()
12 changes: 10 additions & 2 deletions .github/workflows/tox-optional.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Run SAGE_ROOT/tox.ini TARGETS_OPTIONAL
name: Test optional packages with tox

## This GitHub Actions workflow runs SAGE_ROOT/tox.ini with select environments,
## whenever a GitHub pull request is opened or synchronized in a repository
Expand Down Expand Up @@ -27,7 +27,7 @@ on:
env:
TARGETS_PRE: build/make/Makefile
TARGETS: build/make/Makefile
TARGETS_OPTIONAL: 4ti2 pynormaliz qepcad lrslib latte_int topcom barvinok isl qhull sage_numerical_backends_coin primecount plantri polymake jupymake kenzo libsemigroups mcqd meataxe mpfrcx openssl p_group_cohomology rst2ipynb sirocco tdlib tides
# TARGETS_OPTIONAL see below

jobs:
docker:
Expand All @@ -38,10 +38,14 @@ jobs:
matrix:
tox_system_factor: [ubuntu-trusty, ubuntu-xenial, ubuntu-bionic, ubuntu-eoan, ubuntu-focal, debian-jessie, debian-stretch, debian-buster, debian-bullseye, debian-sid, linuxmint-17, linuxmint-18, linuxmint-19, linuxmint-19.3, fedora-26, fedora-27, fedora-28, fedora-29, fedora-30, fedora-31, centos-7, centos-8, gentoo, archlinux-latest, slackware-14.2, conda-forge, ubuntu-bionic-i386, ubuntu-eoan-i386, debian-buster-i386, centos-7-i386]
tox_packages_factor: [maximal]
targets_pattern: [0-g, h-o, p, q-z]
env:
TOX_ENV: docker-${{ matrix.tox_system_factor }}-${{ matrix.tox_packages_factor }}
LOGS_ARTIFACT_NAME: logs-commit-${{ github.sha }}-tox-docker-${{ matrix.tox_system_factor }}-${{ matrix.tox_packages_factor }}
DOCKER_TARGETS: configured with-targets with-targets-optional
# Test all optional packages, but do not test huge packages,
# and do not test packages that require external software
TARGETS_OPTIONAL: "$( echo $(PATH=build/bin:$PATH build/bin/sage-package list :optional: | grep -v database_stein_watkins\\$ | grep -v polytopes_db_4d | grep -v cplex | grep -v gurobi | grep '^[${{ matrix.targets_pattern }}]' ) )"
steps:
- uses: actions/checkout@v2
with:
Expand Down Expand Up @@ -104,9 +108,13 @@ jobs:
matrix:
tox_system_factor: [homebrew-macos, homebrew-macos-python3_xcode, homebrew-macos-python3_xcode-nokegonly, homebrew-macos-python3_pythonorg, conda-forge-macos]
tox_packages_factor: [maximal]
targets_pattern: [0-g, h-o, p, q-z]
env:
TOX_ENV: local-${{ matrix.tox_system_factor }}-${{ matrix.tox_packages_factor }}
LOGS_ARTIFACT_NAME: logs-commit-${{ github.sha }}-tox-local-${{ matrix.tox_system_factor }}-${{ matrix.tox_packages_factor }}
# Test all optional packages, but do not test huge packages
# and do not test packages that require external software
TARGETS_OPTIONAL: "$( echo $(PATH=build/bin:$PATH build/bin/sage-package list :optional: | grep -v database_stein_watkins\\$ | grep -v polytopes_db_4d | grep -v cplex | grep -v gurobi | grep '^[${{ matrix.targets_pattern }}]' ) )"
steps:
- uses: actions/checkout@v2
- name: Install test prerequisites
Expand Down
5 changes: 0 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -255,11 +255,6 @@ Guide](https://doc.sagemath.org/html/en/installation).
powerful machines, you might even consider `-j16`, as building with
more jobs than CPU cores can speed things up further.

If you want to run the test suite for each individual Sage package
as it gets installed, type `export SAGE_CHECK="yes"`. This will run
each test suite, raising an error if any failure occurs. If set to
``warn``, then only a warning is printed in this case.

To reduce the terminal output during the build, type `export V=0`.
(`V` stands for "verbosity".)

Expand Down
2 changes: 1 addition & 1 deletion VERSION.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
SageMath version 9.2.beta5, Release Date: 2020-07-12
SageMath version 9.2.beta6, Release Date: 2020-07-25
1 change: 1 addition & 0 deletions bootstrap
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,7 @@ mkdir config 2>/dev/null
# Get autotools from our own package into PATH (Trac #21214).
# If Sage has not been built yet, this will fail due to a missing
# sage-env-config. We just ignore that error.
source src/bin/sage-env-config 2>/dev/null
source src/bin/sage-env 2>/dev/null


Expand Down
3 changes: 2 additions & 1 deletion build/bin/sage-spkg
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,7 @@ fi
# The following sets environment variables for building packages.
# Since this is sourced, it returns a non-zero value on errors rather
# than exiting. Using dot suggested by W. Cheung.
. sage-env-config
. sage-env


Expand Down Expand Up @@ -488,7 +489,7 @@ export PKG_NAME="$PKG_NAME"
export PKG_BASE="$PKG_BASE"
export PKG_VER="$PKG_VER"
for lib in "\$SAGE_ROOT/build/bin/sage-dist-helpers" "\$SAGE_SRC/bin/sage-env" "\$SAGE_ROOT/build/bin/sage-build-env-config"; do
for lib in "\$SAGE_ROOT/build/bin/sage-dist-helpers" "\$SAGE_SRC/bin/sage-env-config" "\$SAGE_SRC/bin/sage-env" "\$SAGE_ROOT/build/bin/sage-build-env-config"; do
source "\$lib"
if [ \$? -ne 0 ]; then
echo >&2 "Error: failed to source \$lib"
Expand Down
5 changes: 5 additions & 0 deletions build/bin/write-dockerfile.sh
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,11 @@ case $SYSTEM in
ARG BASE_IMAGE=ubuntu:latest
FROM \${BASE_IMAGE} as with-system-packages
EOF
if [ -n "$DIST_UPGRADE" ]; then
cat <<EOF
RUN sed -i.bak $DIST_UPGRADE /etc/apt/sources.list && apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y dist-upgrade
EOF
fi
EXISTS="2>/dev/null >/dev/null apt-cache show"
UPDATE="apt-get update &&"
INSTALL="DEBIAN_FRONTEND=noninteractive apt-get install -qqq --no-install-recommends --yes"
Expand Down
10 changes: 8 additions & 2 deletions build/make/Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -517,13 +517,15 @@ endif
#
# $(INST)/<pkgname>-<pkgvers>: <dependencies>
# $(AM_V_at)cd '$SAGE_ROOT' && \\
# . '$SAGE_ROOT/src/bin/sage-env-config' && \\
# . '$SAGE_ROOT/src/bin/sage-env' && \\
# sage-logger -p '$SAGE_ROOT/build/pkgs/<pkgname>/spkg-install' '$(SAGE_LOGS)/<pkgname>.log'
#
# <pkgname>: $(INST)/<pkgname>-<pkgvers>
#
# <pkgname>-clean:
# -$(AM_V_at)cd '$SAGE_ROOT' && \\
# . '$SAGE_ROOT/src/bin/sage-env-config' && \\
# . '$SAGE_ROOT/src/bin/sage-env' && \\
# '$SAGE_ROOT/build/pkgs/$PKG_NAME/spkg-uninstall'

Expand All @@ -536,15 +538,19 @@ $(1)-build-deps: $(3)

$$(INST)/$(1)-$(2): $(3)
$(AM_V_at)cd '$$(SAGE_ROOT)/build/pkgs/$(1)' && \
. '$$(SAGE_ROOT)/src/bin/sage-env' && . '$$(SAGE_ROOT)/build/bin/sage-build-env-config' && \
. '$$(SAGE_ROOT)/src/bin/sage-env-config' && \
. '$$(SAGE_ROOT)/src/bin/sage-env' && \
. '$$(SAGE_ROOT)/build/bin/sage-build-env-config' && \
sage-logger -p '$$(SAGE_ROOT)/build/pkgs/$(1)/spkg-install' '$$(SAGE_LOGS)/$(1)-$(2).log'
touch "$$@"

$(1): $$(INST)/$(1)-$(2)

$(1)-uninstall:
-$(AM_V_at)cd '$$(SAGE_ROOT)/build/pkgs/$(1)' && \
. '$$(SAGE_ROOT)/src/bin/sage-env' && . '$$(SAGE_ROOT)/build/bin/sage-build-env-config' && \
. '$$(SAGE_ROOT)/src/bin/sage-env-config' && \
. '$$(SAGE_ROOT)/src/bin/sage-env' && \
. '$$(SAGE_ROOT)/build/bin/sage-build-env-config' && \
'$$(SAGE_ROOT)/build/pkgs/$(1)/spkg-uninstall'
-rm -f "$$(INST)/$(1)-$(2)"

Expand Down
30 changes: 7 additions & 23 deletions build/pkgs/cmake/spkg-check.in
Original file line number Diff line number Diff line change
@@ -1,24 +1,8 @@
if [ "$UNAME" = Darwin ]; then
CC=clang
CXX=clang++
fi

cd src
unset MACOSX_DEPLOYMENT_TARGET
# Supress tests failing for reason out of our controls
FAILING_TESTS="CTestTestStopTime|TestUpload|ctest_submit"
# gui interface may pull dependency conflicting with
# sage libraries
# (1) QT libraries
FAILING_TESTS="${FAILING_TESTS}|Qt5Autogen|Qt4Autogen|Qt4Targets|Qt4And5AutomocReverse"
# (2) GTK2
FAILING_TESTS="${FAILING_TESTS}|GTK2Components|GTK2Targets"
# BundleUtilities test is failing on some platforms, skipped in Gentoo for that reason
FAILING_TESTS="${FAILING_TESTS}|BundleUtilities"
# Test failing on freeBSD. Upstream acknoledged the test is faulty
# on that platform https://gitlab.kitware.com/cmake/cmake/issues/16887
if [ "$UNAME" = "FreeBSD" ]; then
FAILING_TESTS="${FAILING_TESTS}|RunCMake.GNUInstallDirs"
fi
ctest --extra-verbose --output-on-failure -E "(${FAILING_TESTS})"
# Do not run a test suite: see https://trac.sagemath.org/ticket/30093.
#
# - The test suite takes a long time and can fail in minor ways.
# - If some major aspect of cmake fails, it only affects the build
# process of Sage, not the mathematical correctness of its results.
# - If some minor aspect of cmake fails, it won't affect anything about Sage.

echo "We skip the test suite for cmake: see https://trac.sagemath.org/ticket/30093."
6 changes: 3 additions & 3 deletions build/pkgs/configure/checksums.ini
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
tarball=configure-VERSION.tar.gz
sha1=1af52fa76e46ec00e41627bf8c3b2d4ac440968e
md5=426664a892601af3cf54cd33648486a7
cksum=1836178061
sha1=eac827f97c1258cf6524a81084172a43bf7c4680
md5=bf07fb027bc4c586edf10132298fa363
cksum=546608769
2 changes: 1 addition & 1 deletion build/pkgs/configure/package-version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
339b4599590f3dc3acec5eace4b7a82f210d3219
e41d396f5d30996ae515399b28675a60e97a1996
10 changes: 8 additions & 2 deletions build/pkgs/curl/spkg-check.in
Original file line number Diff line number Diff line change
@@ -1,2 +1,8 @@
cd src
$MAKE check
# Do not run a test suite: see https://trac.sagemath.org/ticket/30093.
#
# - The test suite takes a long time and can fail in minor ways.
# - If some major aspect of curl fails, it only affects the build
# process of Sage, not the mathematical correctness of its results.
# - If some minor aspect of curl fails, it won't affect anything about Sage.

echo "We skip the test suite for curl: see https://trac.sagemath.org/ticket/30093."
6 changes: 3 additions & 3 deletions build/pkgs/cython/checksums.ini
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
tarball=Cython-VERSION.tar.gz
sha1=02278e5a972ffc4856451f507903db68d08cfd6e
md5=0936311ccd09f1164ab2f46ca5cd8c3b
cksum=1144843552
sha1=3aafce4489a7bc7a48c843cdfb8dac4677fdac50
md5=12c5e45af71dcc6dff28cdcbcbef6f39
cksum=3658613797
upstream_url=https://pypi.io/packages/source/C/Cython/Cython-VERSION.tar.gz
2 changes: 1 addition & 1 deletion build/pkgs/cython/package-version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.29.17
0.29.21
2 changes: 1 addition & 1 deletion build/pkgs/ecl/package-version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
20.4.24.p0
20.4.24.p1
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
From 29239fa1b38f55b9a263b9582a43bae18cb5980d Mon Sep 17 00:00:00 2001
From: Marius Gerbershagen <marius.gerbershagen@gmail.com>
Date: Wed, 6 May 2020 20:58:20 +0200
Subject: [PATCH 1/3] unicode: fix ecl_string_case for non-ascii characters

Problem reported and fix provided by Vladimir Sedach on the ecl-devel
mailing list.
---
src/c/character.d | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/src/c/character.d b/src/c/character.d
index a69b6e4b..c3ef328a 100644
--- a/src/c/character.d
+++ b/src/c/character.d
@@ -99,6 +99,7 @@ cl_both_case_p(cl_object c)
int
ecl_string_case(cl_object s)
{
+ /* Returns 1 if string is all uppercase, -1 if all lowercase, and 0 if mixed case */
int upcase;
cl_index i;
ecl_base_char *text;
@@ -106,16 +107,16 @@ ecl_string_case(cl_object s)
switch (ecl_t_of(s)) {
#ifdef ECL_UNICODE
case t_string:
- s = si_coerce_to_base_string(s);
#endif
case t_base_string:
- text = (ecl_base_char*)s->base_string.self;
for (i = 0, upcase = 0; i < s->base_string.dim; i++) {
- if (ecl_upper_case_p(text[i])) {
+ ecl_character c = ecl_char(s, i);
+
+ if (ecl_upper_case_p(c)) {
if (upcase < 0)
return 0;
upcase = +1;
- } else if (ecl_lower_case_p(text[i])) {
+ } else if (ecl_lower_case_p(c)) {
if (upcase > 0)
return 0;
upcase = -1;
--
2.26.2

Loading

0 comments on commit 54d0f99

Please sign in to comment.