Skip to content
Merged
Show file tree
Hide file tree
Changes from 14 commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
9a19e59
.github/workflows/macos.yml: Install tox from PyPI, not homebrew
mkoeppe Feb 3, 2024
296fc20
.github/workflows/macos.yml: Add tests on M1 runners
mkoeppe Feb 4, 2024
76720ad
.github/workflows/macos.yml: Increase SAGE_NUM_THREADS to 6
mkoeppe Feb 4, 2024
deb02bc
.github/workflows/ci-macos.yml (local-nohomebrew): Increase SAGE_NUM_…
mkoeppe Feb 4, 2024
4c3e281
.github/workflows/ci-macos.yml (local-nohomebrew): Also test on M1
mkoeppe Feb 4, 2024
214c0eb
.github/workflows/ci-macos.yml (local-nohomebrew): Add self-destruct …
mkoeppe Feb 4, 2024
fd342f6
.github/workflows/macos.yml: Add input 'timeout'
mkoeppe Feb 4, 2024
7a921b3
.github/workflows/macos.yml: Use pipx to install tox
mkoeppe Feb 4, 2024
9694cd9
.github/workflows/macos.yml: Use tox via 'pipx run'
mkoeppe Feb 4, 2024
dc13076
.github/workflows/ci-macos.yml: Set timeout for stage 1 to 4 hours
mkoeppe Feb 4, 2024
468ead3
tox.ini (local-conda): Use 'uname -m' to determine arch for installer
mkoeppe Feb 5, 2024
d6ac96b
.github/workflows/macos.yml: Remove failing test of macos-14-minimal
mkoeppe Feb 5, 2024
db2814d
build/pkgs/dsdp/spkg-install.in: Increase verbosity
mkoeppe Feb 6, 2024
69738f7
src/bin/sage-env [macOS]: Detect ld-classic when full XCode is in use
mkoeppe Feb 6, 2024
4bdc404
.github/workflows/ci-macos.yml (dist): Do not use tag to bump the ver…
mkoeppe Feb 7, 2024
d70aae0
src/bin/sage-env: Do not set the ld-classic flag when LD is set
mkoeppe Feb 7, 2024
83348a2
build/pkgs/pyscipopt: Update to 4.4.0
mkoeppe Feb 19, 2024
de6e164
build/pkgs/pyscipopt: Add https://github.com/scipopt/PySCIPOpt/pull/7…
mkoeppe Feb 19, 2024
22fdd8c
build/pkgs/pyscipopt: Fix upstream_url
mkoeppe Feb 19, 2024
c6a82b7
.github/workflows/macos.yml: Pass inputs.extra_sage_packages to tox
mkoeppe Feb 20, 2024
7f8254b
.github/workflows/ci-linux.yml: Build 'default' with free_disk_space:…
mkoeppe Feb 15, 2024
40ae78b
.github/workflows/docker.yml: Build with 'make -j9', test with SAGE_N…
mkoeppe Feb 15, 2024
081c9ee
tox.ini: Add ubuntu-noble, fedora-40, linuxmint-21.3, gentoo-python3.12
mkoeppe Feb 15, 2024
504c4cd
tox -e update_docker_platforms
mkoeppe Feb 15, 2024
b08c727
.github/workflows/build.yml: Use 4 instead of 2 processors
mkoeppe Feb 15, 2024
06116c4
.github/workflows/doc-build*.yml: Use 4 instead of 2 processors
mkoeppe Feb 15, 2024
b2d7229
tox.ini (ubuntu-noble): Set IGNORE_MISSING_SYSTEM_PACKAGES=yes
mkoeppe Feb 15, 2024
992dc4d
build/pkgs/onetbb: Update to 2021.11.0
mkoeppe Feb 28, 2024
a80bbf9
build/pkgs/papilo: Update to 2.2.0
mkoeppe Feb 28, 2024
0d444bc
build/pkgs/scip: Update to 9.0.0
mkoeppe Feb 28, 2024
407cc17
build/pkgs/papilo: Remove patches
mkoeppe Feb 28, 2024
bb38053
build/pkgs/scip: Remove patches/no_rpath.patch
mkoeppe Feb 28, 2024
6c9a352
build/pkgs/scip/dependencies: Add bliss
mkoeppe Feb 28, 2024
76ef32c
build/pkgs/scip_sdp: Update to 4.3.0
mkoeppe Feb 28, 2024
ed0aae9
build/pkgs/scip_sdp/patches: Remove
mkoeppe Feb 28, 2024
ceffe71
Merge branch 'ci_linux_2024_02' into scip_9
mkoeppe Feb 28, 2024
09d6881
Merge branch 'ci-macos-2024' into scip_9
mkoeppe Feb 28, 2024
70df645
build/pkgs/scip: Add patch from https://github.com/scipopt/SCIP-SDP/i…
mkoeppe Feb 28, 2024
9a29147
build/pkgs/soplex: Update to 7.0.0
mkoeppe Feb 28, 2024
297cb51
build/pkgs/soplex/patches/no_rpath.patch: Remove
mkoeppe Feb 28, 2024
69e083d
Merge branch 'ci_upload_stats' into scip_9
mkoeppe Mar 3, 2024
b76407e
build/pkgs/scip_sdp/spkg-install.in: Use 'ctest --rerun-failed --outp…
mkoeppe Mar 3, 2024
6df0931
Merge remote-tracking branch 'upstream/develop' into scip_9
mkoeppe Mar 3, 2024
1b95968
build/pkgs/{soplex,scip}: Re-add rebased rpath patches
mkoeppe Mar 4, 2024
afe2532
Merge branch 'pyscipopt-cython3' into scip_9
mkoeppe Mar 5, 2024
171a380
build/pkgs/pyscipopt: Update to 5.0.0
mkoeppe Mar 5, 2024
d2f7adb
build/pkgs/pyscipopt/patches/792.patch: Remove
mkoeppe Mar 5, 2024
0bd791d
Merge tag '10.3.rc2' into scip_9
mkoeppe Mar 5, 2024
961a7c4
build/pkgs/onetbb/patches/gcc13-154cc73ca4d359621202399cc0c3c91058e56…
mkoeppe Mar 6, 2024
615db23
src/sage/numerical/backends/scip_backend.pyx: Fix typo in doctest
mkoeppe Mar 6, 2024
79ea486
Merge remote-tracking branch 'upstream/develop' into scip_9
mkoeppe Apr 13, 2024
1f28d78
build/pkgs/pyscipopt/patches/792.patch: Remove
mkoeppe Apr 24, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 43 additions & 7 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -252,9 +252,8 @@ jobs:
- 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
cp -r .tox/$TOX_ENV/* "artifacts/$LOGS_ARTIFACT_NAME"
rm -rf "artifacts/$LOGS_ARTIFACT_NAME"/{bin,lib,pyvenv.cfg}
if: always()
- uses: actions/upload-artifact@v3
with:
Expand All @@ -266,9 +265,46 @@ jobs:
run: |
.github/workflows/scan-logs.sh "artifacts/$LOGS_ARTIFACT_NAME"
if: always()
- name: List docker images
- name: List Docker images
run: |
if [ -f .tox/$TOX_ENV/Dockertags ]; then
cat .tox/$TOX_ENV/Dockertags
if [ -n "$DOCKER_PUSH_REPOSITORY" -a -f .tox/$TOX_ENV/Dockertags.pushed ]; then
set -- $(cat .tox/$TOX_ENV/Dockertags.pushed)
case $# in
1) images="image"; one_image="the image";;
*) images="images"; one_image="one of the images";;
esac
echo "::notice title=Docker $images pushed::Pushed $images $*)"
echo
echo "To pull $one_image and enter the container, type:"
echo
for TAG in $*; do
echo " \$ docker run -it $TAG bash"
done
echo
echo "To use $one_image as the base for an incremental build, type:"
echo
TOX_ENV_SANS_INCREMENTAL=${TOX_ENV/-incremental/}
DOCKER_IMAGE=${TOX_ENV_SANS_INCREMENTAL#docker-}
for TAG in $*; do
echo -n " \$"
if [ "$DOCKER_PUSH_REPOSITORY" != "ghcr.io/sagemath/sage/" ]; then
echo -n " FROM_DOCKER_REPOSITORY=$DOCKER_PUSH_REPOSITORY"
fi
eval DOCKER_TARGET=\${TAG#*$DOCKER_IMAGE-}
DOCKER_TARGET=${DOCKER_TARGET%:*}
if [ "$DOCKER_TARGET" != "with-targets" ]; then
echo -n " FROM_DOCKER_TARGET=$DOCKER_TARGET"
fi
echo " FROM_DOCKER_TAG=${TAG#*:} tox -e $TOX_ENV_SANS_INCREMENTAL-incremental"
done
elif [ -n "$DOCKER_PUSH_REPOSITORY" -a -f .tox/$TOX_ENV/Dockertags ]; then
echo "Unable to push Docker images to $DOCKER_PUSH_REPOSITORY."
echo "This is normal in a pull request to sagemath/sage or to another user's repository."
echo
echo "If you need Docker images, "
echo " - either run this GitHub Actions workflow in your repository fork"
echo " - or use the method described in https://doc.sagemath.org/html/en/developer/portability_testing.html#automatic-docker-based-build-testing-using-tox"
else
echo "No Docker images created."
fi
if: always()
if: always() && ${{ inputs.docker_push_repository }}
28 changes: 20 additions & 8 deletions build/bin/write-dockerfile.sh
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,18 @@ EOF
;;
esac
esac

case ${DOCKER_BUILDKIT-0} in
1)
# With buildkit we cannot retrieve failed builds.
# So we do not allow the main step of a build stage to fail.
# Instead we record the exit code in the file STATUS.
THEN_SAVE_STATUS='; echo $? > STATUS'
# ... and at the beginning of the next build stage,
# we check the status and exit with an error status.
CHECK_STATUS_THEN='STATUS=$(cat STATUS 2>/dev/null); case "$STATUS" in ""|0) ;; *) exit $STATUS;; esac; '
esac

cat <<EOF

FROM with-system-packages as bootstrapped
Expand All @@ -230,20 +242,20 @@ $ADD pkgs pkgs
$ADD build ./build
$ADD .upstream.d ./.upstream.d
ARG BOOTSTRAP=./bootstrap
$RUN sh -x -c "\${BOOTSTRAP}" $ENDRUN
$RUN sh -x -c "\${BOOTSTRAP}" $ENDRUN $THEN_SAVE_STATUS

FROM bootstrapped as configured
#:configuring:
RUN mkdir -p logs/pkgs; rm -f config.log; ln -s logs/pkgs/config.log config.log
RUN $CHECK_STATUS_THEN mkdir -p logs/pkgs; rm -f config.log; ln -s logs/pkgs/config.log config.log
ARG EXTRA_CONFIGURE_ARGS=""
EOF
if [ ${WITH_SYSTEM_SPKG} = "force" ]; then
cat <<EOF
$RUN echo "****** Configuring: ./configure --enable-build-as-root $CONFIGURE_ARGS \${EXTRA_CONFIGURE_ARGS} *******"; ./configure --enable-build-as-root $CONFIGURE_ARGS \${EXTRA_CONFIGURE_ARGS} || (echo "********** configuring without forcing ***********"; echo "::group::config.log"; cat config.log; echo "::endgroup::"; ./configure --enable-build-as-root; echo "::group::config.log"; cat config.log; echo "::endgroup::"; exit 1) $ENDRUN
$RUN echo "****** Configuring: ./configure --enable-build-as-root $CONFIGURE_ARGS \${EXTRA_CONFIGURE_ARGS} *******"; ./configure --enable-build-as-root $CONFIGURE_ARGS \${EXTRA_CONFIGURE_ARGS} || (echo "********** configuring without forcing ***********"; echo "::group::config.log"; cat config.log; echo "::endgroup::"; ./configure --enable-build-as-root; echo "::group::config.log"; cat config.log; echo "::endgroup::"; exit 1) $ENDRUN $THEN_SAVE_STATUS
EOF
else
cat <<EOF
$RUN echo "****** Configuring: ./configure --enable-build-as-root $CONFIGURE_ARGS \${EXTRA_CONFIGURE_ARGS} *******"; ./configure --enable-build-as-root $CONFIGURE_ARGS \${EXTRA_CONFIGURE_ARGS} || (echo "::group::config.log"; cat config.log; echo "::endgroup::"; exit 1) $ENDRUN
$RUN echo "****** Configuring: ./configure --enable-build-as-root $CONFIGURE_ARGS \${EXTRA_CONFIGURE_ARGS} *******"; ./configure --enable-build-as-root $CONFIGURE_ARGS \${EXTRA_CONFIGURE_ARGS} || (echo "::group::config.log"; cat config.log; echo "::endgroup::"; exit 1) $ENDRUN $THEN_SAVE_STATUS
EOF
fi
cat <<EOF
Expand All @@ -256,7 +268,7 @@ ARG USE_MAKEFLAGS="-k V=0"
ENV SAGE_CHECK=warn
ENV SAGE_CHECK_PACKAGES="!cython,!r,!python3,!gap,!cysignals,!linbox,!git,!ppl,!cmake,!rpy2,!sage_sws2rst"
#:toolchain:
$RUN make \${USE_MAKEFLAGS} base-toolchain $ENDRUN
$RUN $CHECK_STATUS_THEN make \${USE_MAKEFLAGS} base-toolchain $ENDRUN $THEN_SAVE_STATUS

FROM with-base-toolchain as with-targets-pre
ARG NUMPROC=8
Expand All @@ -266,7 +278,7 @@ ENV SAGE_CHECK=warn
ENV SAGE_CHECK_PACKAGES="!cython,!r,!python3,!gap,!cysignals,!linbox,!git,!ppl,!cmake,!rpy2,!sage_sws2rst"
#:make:
ARG TARGETS_PRE="all-sage-local"
$RUN make SAGE_SPKG="sage-spkg -y -o" \${USE_MAKEFLAGS} \${TARGETS_PRE} $ENDRUN
$RUN $CHECK_STATUS_THEN make SAGE_SPKG="sage-spkg -y -o" \${USE_MAKEFLAGS} \${TARGETS_PRE} $ENDRUN $THEN_SAVE_STATUS

FROM with-targets-pre as with-targets
ARG NUMPROC=8
Expand All @@ -276,7 +288,7 @@ ENV SAGE_CHECK=warn
ENV SAGE_CHECK_PACKAGES="!cython,!r,!python3,!gap,!cysignals,!linbox,!git,!ppl,!cmake,!rpy2,!sage_sws2rst"
$ADD src src
ARG TARGETS="build"
$RUN make SAGE_SPKG="sage-spkg -y -o" \${USE_MAKEFLAGS} \${TARGETS} $ENDRUN
$RUN $CHECK_STATUS_THEN make SAGE_SPKG="sage-spkg -y -o" \${USE_MAKEFLAGS} \${TARGETS} $ENDRUN $THEN_SAVE_STATUS

FROM with-targets as with-targets-optional
ARG NUMPROC=8
Expand All @@ -285,7 +297,7 @@ ARG USE_MAKEFLAGS="-k V=0"
ENV SAGE_CHECK=warn
ENV SAGE_CHECK_PACKAGES="!cython,!r,!python3,!gap,!cysignals,!linbox,!git,!ppl,!cmake,!rpy2,!sage_sws2rst"
ARG TARGETS_OPTIONAL="ptest"
$RUN make SAGE_SPKG="sage-spkg -y -o" \${USE_MAKEFLAGS} \${TARGETS_OPTIONAL} || echo "(error ignored)" $ENDRUN
$RUN $CHECK_STATUS_THEN make SAGE_SPKG="sage-spkg -y -o" \${USE_MAKEFLAGS} \${TARGETS_OPTIONAL} || echo "(error ignored)" $ENDRUN $THEN_SAVE_STATUS

#:end:
EOF
6 changes: 3 additions & 3 deletions build/pkgs/info/checksums.ini
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
tarball=texinfo-VERSION.tar.xz
sha1=ce3776715e655400485381b8ae94e34c5632e729
md5=a91b404e30561a5df803e6eb3a53be71
cksum=3632265516
sha1=356a623b88401d7c993408f33450c8104aad9df8
md5=37bf94fd255729a14d4ea3dda119f81a
cksum=1448415744
upstream_url=https://ftp.gnu.org/gnu/texinfo/texinfo-VERSION.tar.xz
2 changes: 1 addition & 1 deletion build/pkgs/info/package-version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
6.8
7.0.3
38 changes: 30 additions & 8 deletions tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ passenv =
docker: EXTRA_DOCKER_BUILD_ARGS
docker: EXTRA_DOCKER_TAGS
docker: DOCKER_TAG
# Use DOCKER_BUILDKIT=1 for new version - for which unfortunately we cannot save failed builds as an image
# Use DOCKER_BUILDKIT=0 for legacy builder
docker: DOCKER_BUILDKIT
docker: BUILDKIT_INLINE_CACHE
# Set for example to "with-system-packages configured with-targets-pre with-targets"
Expand Down Expand Up @@ -764,7 +764,7 @@ commands =
docker: BUILD_IMAGE=$DOCKER_PUSH_REPOSITORY$BUILD_IMAGE_STEM-$docker_target; \
docker: BUILD_TAG={env:DOCKER_TAG:$(git describe --dirty --always)}; \
docker: TAG_ARGS=$(for tag in $BUILD_TAG {env:EXTRA_DOCKER_TAGS:}; do echo --tag $BUILD_IMAGE:$tag; done); \
docker: DOCKER_BUILDKIT={env:DOCKER_BUILDKIT:0} \
docker: DOCKER_BUILDKIT={env:DOCKER_BUILDKIT:1}; \
docker: docker build . -f {envdir}/Dockerfile \
docker: --target $docker_target \
docker: $TAG_ARGS \
Expand All @@ -776,16 +776,38 @@ commands =
docker: --build-arg TARGETS="{posargs:build}" \
docker: --build-arg TARGETS_OPTIONAL="{env:TARGETS_OPTIONAL:ptest}" \
docker: {env:EXTRA_DOCKER_BUILD_ARGS:}; status=$?; \
docker: unset CONTAINER; \
docker: if [ $status != 0 ]; then \
docker: BUILD_TAG="$BUILD_TAG-failed"; docker commit $(docker ps -l -q) $BUILD_IMAGE:$BUILD_TAG; PUSH_TAGS=$BUILD_IMAGE:$BUILD_TAG; \
docker: else \
docker: PUSH_TAGS=$(echo $BUILD_IMAGE:$BUILD_TAG; for tag in {env:EXTRA_DOCKER_TAGS:}; do echo "$BUILD_IMAGE:$tag"; done); \
docker: if [ $DOCKER_BUILDKIT = 0 ]; then \
docker: BUILD_TAG="$BUILD_TAG-failed"; CONTAINER=$(docker ps -l -q); docker commit $CONTAINER $BUILD_IMAGE:$BUILD_TAG; \
docker: else \
docker: unset BUILD_TAG; echo "DOCKER_BUILDKIT=1, so we cannot commit and tag the failed image"; \
docker: fi; \
docker: fi; \
docker: echo $BUILD_IMAGE:$BUILD_TAG >> {envdir}/Dockertags; \
docker: if [ x"{env:DOCKER_PUSH_REPOSITORY:}" != x ]; then \
docker: if [ -n "$BUILD_TAG" ]; then \
docker: echo "Copying logs from the container to {envdir}/sage/"; \
docker: rm -f {envdir}/sage/STATUS; \
docker: docker run $BUILD_IMAGE:$BUILD_TAG bash -c " \
docker: tar -c --ignore-failed-read -f - \
docker: /sage/STATUS /sage/logs /sage/{prefix,venv}/var/lib/sage/installed \
docker: ~/.sage/timings2.json /sage/pkgs/*/.tox/*/.sage/timings2.json \
docker: /sage/pkgs/*/.tox/*/logs 2> /dev/null" \
docker: | (cd {envdir} && tar xf -); \
docker: if [ -f {envdir}/sage/STATUS ]; then status=$(cat {envdir}/sage/STATUS); fi; \
docker: fi; \
docker: unset PUSH_TAGS; \
docker: if [ -n "$BUILD_TAG" ]; then \
docker: if [ $status != 0 ]; then \
docker: BUILD_TAG="${BUILD_TAG%-failed}-failed"; PUSH_TAGS=$BUILD_IMAGE:$BUILD_TAG; \
docker: else \
docker: PUSH_TAGS=$(echo $BUILD_IMAGE:$BUILD_TAG; for tag in {env:EXTRA_DOCKER_TAGS:}; do echo "$BUILD_IMAGE:$tag"; done); \
docker: fi; \
docker: echo $BUILD_IMAGE:$BUILD_TAG >> {envdir}/Dockertags; \
docker: fi; \
docker: if [ x"{env:DOCKER_PUSH_REPOSITORY:}" != x -a x"$PUSH_TAGS" != x ]; then \
docker: echo Pushing $PUSH_TAGS; \
docker: for tag in $PUSH_TAGS; do \
docker: docker push $tag || echo "(ignoring errors)"; \
docker: if docker push $tag; then echo $tag >> {envdir}/Dockertags.pushed; else echo "(ignoring errors)"; fi; \
docker: done; \
docker: fi; \
docker: if [ $status != 0 ]; then exit $status; fi; \
Expand Down