Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

igraph: Update to 0.10.12, fix spkg-check; python_igraph: Update to 0.11.5, remove spkg-install workarounds #37819

Merged
merged 24 commits into from
Jun 9, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
421b552
.github/workflows/ci-linux-incremental.yml (sitepackages): Remove lab…
mkoeppe Jun 3, 2024
e90d737
.github/workflows/build.yml: Determine build_targets (adapted from ci…
mkoeppe Jun 3, 2024
dae0ff1
.github/workflows/build.yml: Combine calls of tj-actions/changed-files
mkoeppe Jun 3, 2024
62ade48
.github/workflows/build.yml (test-new): Do not push and do not start …
mkoeppe Jun 3, 2024
9d3a3f2
.github/workflows/ci-linux-incremental.yml: Remove duplicate testing …
mkoeppe Jun 3, 2024
4db3313
.github/workflows/ci-linux-incremental.yml: Replace ubuntu-mantic, fe…
mkoeppe Jun 3, 2024
3586090
.github/workflows/ci-linux-incremental.yml: Update build_target scrip…
mkoeppe Jun 3, 2024
1df4f5a
.ci/retrofit-worktree.sh: Commit /new
mkoeppe Jun 4, 2024
8d0c849
.ci/write-dockerfile.sh: Remove old /new at the beginning, remove new…
mkoeppe Jun 4, 2024
d068c8d
.ci/write-dockerfile.sh: Remove duplicated ADD
mkoeppe Jun 4, 2024
7fb0323
.ci/write-dockerfile.sh: Remove old .git file at the beginning, remov…
mkoeppe Jun 4, 2024
41b88e1
build/pkgs/igraph: Update to 0.10.11
mkoeppe Apr 17, 2024
2299e06
build/pkgs/python_igraph/spkg-install.in: We can pass another --confi…
mkoeppe Apr 17, 2024
0a9bf9f
build/pkgs/python_igraph/spkg-install.in: No more need to use --use-p…
mkoeppe Apr 17, 2024
176cbaf
build/pkgs/igraph/spkg-check.in: Fix
mkoeppe Apr 17, 2024
8010f7f
build/pkgs/igraph/spkg-configure.m4: Accept system igraph 0.10.11
mkoeppe Apr 17, 2024
645757c
build/pkgs/python_igraph: Update to 0.11.4
mkoeppe Apr 18, 2024
bd02730
build/pkgs/igraph: Update to 0.10.12
mkoeppe Jun 5, 2024
735a90e
build/pkgs/python_igraph: Update to 0.11.5
mkoeppe Jun 5, 2024
254adac
build/pkgs/igraph/spkg-configure.m4: Only accept igraph 0.10.12
mkoeppe Jun 5, 2024
5726013
.github/workflows/*build*.yml: Survive GHA cache upload timeouts
mkoeppe Jun 5, 2024
2693e1c
build/bin/sage-dist-helpers (sdh_pip_install): Pass config-settings w…
mkoeppe Jun 5, 2024
0996d95
build/pkgs/cmake/spkg-configure.m4: Require at least 3.18 (for igraph)
mkoeppe Jun 5, 2024
4f748fe
Merge branch 'merge_ci_linux' into igraph-0.10.11
mkoeppe Jun 5, 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
5 changes: 3 additions & 2 deletions .ci/retrofit-worktree.sh
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,10 @@ set -x
# If actions/checkout downloaded our source tree using the GitHub REST API
# instead of with git (because do not have git installed in our image),
# we first make the source tree a repo.
if [ ! -d .git ]; then git init && git add -A && git commit --quiet -m "new"; fi
if [ ! -d .git ]; then git init; fi

# Tag this state of the source tree "new". This is what we want to build and test.
# Commit and tag this state of the source tree "new". This is what we want to build and test.
git add -A && git commit --quiet --allow-empty -m "new"
git tag -f new

# Our container image contains a source tree in $WORKTREE_DIRECTORY with a full build of Sage.
Expand Down
5 changes: 3 additions & 2 deletions .ci/write-dockerfile.sh
Original file line number Diff line number Diff line change
Expand Up @@ -264,6 +264,7 @@ cat <<EOF

FROM with-system-packages as bootstrapped
#:bootstrapping:
RUN rm -rf /new /sage/.git
$ADD Makefile VERSION.txt COPYING.txt condarc.yml README.md bootstrap bootstrap-conda configure.ac sage .homebrew-build-env tox.ini Pipfile.m4 .gitignore /new/
$ADD config/config.rpath /new/config/config.rpath
$ADD src/doc/bootstrap /new/src/doc/bootstrap
Expand Down Expand Up @@ -338,7 +339,6 @@ ENV SAGE_CHECK=warn
ENV SAGE_CHECK_PACKAGES="!cython,!r,!python3,!gap,!cysignals,!linbox,!git,!ppl,!cmake,!rpy2,!sage_sws2rst"
$ADD .gitignore /new/.gitignore
$ADD src /new/src
ADD .ci /.ci
RUN cd /new && rm -rf .git && \
if /.ci/retrofit-worktree.sh worktree-pre /sage; then \
cd /sage && touch configure build/make/Makefile; \
Expand All @@ -347,7 +347,8 @@ RUN cd /new && rm -rf .git && \
rm -rf /sage/src; \
mv src /sage/src; \
cd /sage && ./bootstrap && ./config.status; \
fi
fi; \
cd /sage && rm -rf /new .git

ARG TARGETS="build"
$RUN $CHECK_STATUS_THEN make SAGE_SPKG="sage-spkg -y -o" \${USE_MAKEFLAGS} \${TARGETS} $ENDRUN $THEN_SAVE_STATUS
Expand Down
77 changes: 62 additions & 15 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,8 @@ env:
jobs:
test-new:
runs-on: ubuntu-latest
outputs:
build_targets: ${{ steps.build-targets.outputs.build_targets }}
services:
# https://docs.docker.com/build/ci/github-actions/local-registry/
registry:
Expand All @@ -98,6 +100,46 @@ jobs:
- name: Checkout
id: checkout
uses: actions/checkout@v4
- name: Get changed files and packages
id: changed-files
uses: tj-actions/changed-files@v44
with:
# File extensions for doctests per sage.doctest.control.skipfile
files_yaml: |
configures:
- 'build/pkgs/*/spkg-configure.m4'
pkgs:
- 'build/pkgs/**'
- 'pkgs/**'
doctests:
- 'src/**/*.{py,pyx,pxd,pxi,sage,spyx,rst,tex}'
- '!src/{setup,conftest*}.py'
- name: Determine targets to build
id: build-targets
run: |
uninstall_targets=$(echo $(for a in '' ${{ steps.changed-files.outputs.configures_all_changed_files }}; do echo $a | sed -E 's,build/pkgs/([a-z0-9][_.a-z0-9]*)/spkg-configure[.]m4 *,\1-uninstall,'; done | sort -u))
build_targets=$(echo $(for a in '' ${{ steps.changed-files.outputs.pkgs_all_changed_files }}; do SPKG=$(echo $a | sed -E 's,-,_,g;s,(build/)?pkgs/([a-z0-9][-_.a-z0-9]*)/[^ ]* *,\2,;'); if [ -f "build/pkgs/$SPKG/checksums.ini" -o -f "build/pkgs/$SPKG/requirements.txt" -o -f "build/pkgs/$SPKG/spkg-install" ]; then echo "$SPKG-ensure"; fi; done | sort -u))
if [ -n "$uninstall_targets" ]; then
echo "build_targets=$uninstall_targets reconfigure $build_targets ci-build-with-fallback" >> $GITHUB_OUTPUT
else
echo "build_targets=$build_targets ci-build-with-fallback" >> $GITHUB_OUTPUT
fi
cat $GITHUB_OUTPUT
- uses: actions/checkout@v4
with:
ref: ${{ github.base_ref }}
path: worktree-base
if: github.base_ref && steps.changed-files.outputs.pkgs_all_changed_files
- name: Compute metrics
run: |
export PATH=build/bin:$PATH
if [ -d worktree-base ]; then
(echo "# $GITHUB_BASE_REF"; SAGE_ROOT=worktree-base sage-package metrics :all:) > base-metrics.txt
(echo "# $GITHUB_REF"; sage-package metrics :all:) > metrics.txt
diff --color=always --width=100 --side-by-side --left-column base-metrics.txt metrics.txt || true
else
sage-package metrics :all:
fi
- name: Install test prerequisites
# From docker.yml
run: |
Expand Down Expand Up @@ -142,7 +184,7 @@ jobs:
# more reliable than "load", for which we observed random failure
# conditions in which the built image could not be found.
#
push: true
push: ${{ steps.changed-files.outputs.doctests_all_changed_files && true || false }}
load: false
context: .
tags: ${{ env.BUILD_IMAGE }}
Expand All @@ -153,9 +195,12 @@ jobs:
NUMPROC=6
USE_MAKEFLAGS=-k V=0 SAGE_NUM_THREADS=4 --output-sync=recurse
TARGETS_PRE=build/make/Makefile
TARGETS=ci-build-with-fallback
TARGETS=${{ steps.build-targets.outputs.build_targets }}

- name: Start container
id: container
# Try to continue when "exporting to GitHub Actions Cache" failed with timeout
if: (success() || failure()) && steps.changed-files.outputs.doctests_all_changed_files
run: |
docker run --name BUILD -dit \
--mount type=bind,src=$(pwd),dst=$(pwd) \
Expand All @@ -165,6 +210,7 @@ jobs:
# Testing

- name: Check that all modules can be imported
if: (success() || failure()) && steps.container.outcome == 'success' && steps.changed-files.outputs.doctests_all_changed_files
run: |
# Increase the length of the lines in the "short summary"
export COLUMNS=120
Expand All @@ -175,20 +221,12 @@ jobs:
./sage -python -m pytest -c tox.ini -qq --doctest --collect-only || true
shell: sh .ci/docker-exec-script.sh BUILD /sage {0}

- name: Get changed files
id: changed-files
uses: tj-actions/changed-files@v44
with:
# File extensions per sage.doctest.control.skipfile
files: src/**/*.{py,pyx,pxd,pxi,sage,spyx,rst,tex}
files_ignore: src/{setup,conftest*}.py

- name: Test changed files (sage -t --new)
if: steps.changed-files.outputs.all_changed_files
if: (success() || failure()) && steps.container.outcome == 'success' && steps.changed-files.outputs.doctests_all_changed_files
run: |
export MAKE="make -j2 --output-sync=recurse" SAGE_NUM_THREADS=4
# https://github.com/tj-actions/changed-files?tab=readme-ov-file#outputs-
./sage -t --long --format github -p4 ${{ steps.changed-files.outputs.all_changed_files }}
./sage -t --long --format github -p4 ${{ steps.changed-files.outputs.doctests_all_changed_files }}
shell: sh .ci/docker-exec-script.sh BUILD /sage {0}

test-mod:
Expand Down Expand Up @@ -266,9 +304,11 @@ jobs:
NUMPROC=6
USE_MAKEFLAGS=-k V=0 SAGE_NUM_THREADS=4 --output-sync=recurse
TARGETS_PRE=build/make/Makefile
TARGETS=ci-build-with-fallback
TARGETS=${{ needs.test-new.outputs.build_targets }}

- name: Start container
id: container
if: (success() || failure())
run: |
docker run --name BUILD -dit \
--mount type=bind,src=$(pwd),dst=$(pwd) \
Expand All @@ -278,6 +318,7 @@ jobs:
# Testing

- name: Test modularized distributions
if: (success() || failure()) && steps.container.outcome == 'success'
run: |
export MAKE="make -j2 --output-sync=recurse" SAGE_NUM_THREADS=4
make V=0 tox-ensure && make ${{ matrix.targets }}
Expand Down Expand Up @@ -361,10 +402,11 @@ jobs:
NUMPROC=6
USE_MAKEFLAGS=-k V=0 SAGE_NUM_THREADS=4 --output-sync=recurse
TARGETS_PRE=build/make/Makefile
TARGETS=ci-build-with-fallback
TARGETS=${{ needs.test-new.outputs.build_targets }}

- name: Start container
id: container
if: (success() || failure())
run: |
docker run --name BUILD -dit \
--mount type=bind,src=$(pwd),dst=$(pwd) \
Expand All @@ -374,6 +416,7 @@ jobs:
# Testing

- name: Test all files (sage -t --long ${{ matrix.tests }})
if: (success() || failure()) && steps.container.outcome == 'success'
run: |
mkdir .coverage
rm -rf /sage/.coverage
Expand Down Expand Up @@ -473,10 +516,11 @@ jobs:
NUMPROC=6
USE_MAKEFLAGS=-k V=0 SAGE_NUM_THREADS=4 --output-sync=recurse
TARGETS_PRE=build/make/Makefile
TARGETS=ci-build-with-fallback
TARGETS=${{ needs.test-new.outputs.build_targets }}

- name: Start container
id: container
if: (success() || failure())
run: |
docker run --name BUILD -dit \
--mount type=bind,src=$(pwd),dst=$(pwd) \
Expand All @@ -490,8 +534,10 @@ jobs:
with:
path: .coverage
pattern: coverage-*
if: (success() || failure()) && steps.container.outcome == 'success'

- name: Coverage report
if: (success() || failure()) && steps.container.outcome == 'success'
# Using --omit to avoid "CoverageWarning: Couldn't parse '/tmp/tmp06qizzie/tmp_ldpu46ob.py': No source for code"
run: |
rm -rf /sage/.coverage
Expand All @@ -505,6 +551,7 @@ jobs:
shell: sh .ci/docker-exec-script.sh BUILD . {0}

- name: Upload coverage to codecov
if: (success() || failure()) && steps.container.outcome == 'success'
uses: codecov/codecov-action@v4
with:
directory: .coverage/coverage-report
31 changes: 13 additions & 18 deletions .github/workflows/ci-linux-incremental.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,11 @@ jobs:
runs-on: ubuntu-latest
name: List changed packages
outputs:
uninstall_targets: ${{ steps.build-targets.outputs.uninstall_targets }}
build_targets: ${{ steps.build-targets.outputs.build_targets }}
steps:
- uses: actions/checkout@v4
- name: Get all packages that have changed
id: changed-packages
id: changed-files
uses: tj-actions/changed-files@v44
with:
files_yaml: |
Expand All @@ -58,14 +57,19 @@ jobs:
- name: Determine targets to build
id: build-targets
run: |
echo "uninstall_targets=$(echo $(for a in '' ${{ steps.changed-packages.outputs.configures_all_changed_files }}; do echo $a | sed -E 's,build/pkgs/([a-z0-9][_.a-z0-9]*)/spkg-configure[.]m4 *,\1-uninstall,'; done | sort -u))" >> $GITHUB_OUTPUT
echo "build_targets=$(echo $(for a in '' ${{ steps.changed-packages.outputs.pkgs_all_changed_files }}; do SPKG=$(echo $a | sed -E 's,-,_,g;s,(build/)?pkgs/([a-z0-9][-_.a-z0-9]*)/[^ ]* *,\2,;'); if [ -f "build/pkgs/$SPKG/checksums.ini" -o -f "build/pkgs/$SPKG/requirements.txt" -o -f "build/pkgs/$SPKG/spkg-install" ]; then echo "$SPKG-ensure"; fi; done | sort -u))" >> $GITHUB_OUTPUT
uninstall_targets=$(echo $(for a in '' ${{ steps.changed-files.outputs.configures_all_changed_files }}; do echo $a | sed -E 's,build/pkgs/([a-z0-9][_.a-z0-9]*)/spkg-configure[.]m4 *,\1-uninstall,'; done | sort -u))
build_targets=$(echo $(for a in '' ${{ steps.changed-files.outputs.pkgs_all_changed_files }}; do SPKG=$(echo $a | sed -E 's,-,_,g;s,(build/)?pkgs/([a-z0-9][-_.a-z0-9]*)/[^ ]* *,\2,;'); if [ -f "build/pkgs/$SPKG/checksums.ini" -o -f "build/pkgs/$SPKG/requirements.txt" -o -f "build/pkgs/$SPKG/spkg-install" ]; then echo "$SPKG-ensure"; fi; done | sort -u))
if [ -n "$uninstall_targets" ]; then
echo "build_targets=$uninstall_targets reconfigure $build_targets ci-build-with-fallback" >> $GITHUB_OUTPUT
else
echo "build_targets=$build_targets ci-build-with-fallback" >> $GITHUB_OUTPUT
fi
cat $GITHUB_OUTPUT
- uses: actions/checkout@v4
with:
ref: ${{ github.base_ref }}
path: worktree-base
if: github.base_ref
if: github.base_ref && steps.changed-files.outputs.pkgs_all_changed_files
- name: Compute metrics
run: |
export PATH=build/bin:$PATH
Expand All @@ -88,15 +92,14 @@ jobs:
from_docker_target: "with-targets"
from_docker_tag: "dev"
docker_targets: "with-targets"
targets: "${{needs.changed_files.outputs.uninstall_targets}} reconfigure ${{needs.changed_files.outputs.build_targets}} build doc-html ptest"
targets: "${{needs.changed_files.outputs.build_targets}} doc-html ptest-nodoc"
tox_system_factors: >-
["ubuntu-focal",
"ubuntu-jammy",
"ubuntu-mantic",
"ubuntu-noble",
"debian-bullseye",
"debian-bookworm",
"fedora-30",
"fedora-38",
"fedora-40",
"gentoo-python3.11",
"debian-bullseye-i386"]
tox_packages_factors: >-
Expand All @@ -107,14 +110,6 @@ jobs:

site:
needs: [changed_files]
if: |
github.event_name != 'pull_request' ||
((github.event.action != 'labeled' &&
(contains(github.event.pull_request.labels.*.name, 'c: packages: standard') ||
contains(github.event.pull_request.labels.*.name, 'c: packages: optional'))) ||
(github.event.action == 'labeled' &&
(github.event.label.name == 'c: packages: optional' ||
github.event.label.name == 'c: packages: standard')))
uses: ./.github/workflows/docker.yml
with:
# Build incrementally from published Docker image
Expand All @@ -124,7 +119,7 @@ jobs:
from_docker_target: "with-targets"
from_docker_tag: "dev"
docker_targets: "with-targets"
targets: "${{needs.changed_files.outputs.uninstall_targets}} reconfigure ${{needs.changed_files.outputs.build_targets}} build doc-html ptest"
targets: "${{needs.changed_files.outputs.build_targets}} doc-html ptest-nodoc"
# Only test systems with a usable system python (>= 3.9)
# with only a small number of test failures as of 10.2.rc0
tox_system_factors: >-
Expand Down
6 changes: 6 additions & 0 deletions .github/workflows/doc-build-pdf.yml
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,9 @@ jobs:
TARGETS=ci-build-with-fallback

- name: Start container
id: container
# Try to continue when "exporting to GitHub Actions Cache" failed with timeout
if: (success() || failure())
run: |
docker run --name BUILD -dit \
--mount type=bind,src=$(pwd),dst=$(pwd) \
Expand All @@ -110,6 +113,8 @@ jobs:
# Docs

- name: Update system packages
id: packages
if: (success() || failure()) && steps.container.outcome == 'success'
run: |
export PATH="build/bin:$PATH"
eval $(sage-print-system-package-command auto update)
Expand All @@ -119,6 +124,7 @@ jobs:

- name: Build docs (PDF)
id: docbuild
if: (success() || failure()) && steps.packages.outcome == 'success'
run: |
export MAKE="make -j5 --output-sync=recurse" SAGE_NUM_THREADS=5
make doc-clean doc-uninstall; make sagemath_doc_html-build-deps sagemath_doc_pdf-no-deps
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/doc-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,9 @@ jobs:
TARGETS=ci-build-with-fallback

- name: Start container
id: container
# Try to continue when "exporting to GitHub Actions Cache" failed with timeout
if: (success() || failure())
run: |
docker run --name BUILD -dit \
--mount type=bind,src=$(pwd),dst=$(pwd) \
Expand All @@ -115,6 +118,7 @@ jobs:

- name: Store old docs
id: worktree
if: (success() || failure()) && steps.container.outcome == 'success'
run: |
git config --global --add safe.directory $(pwd)
git config --global user.email "ci-sage@example.com"
Expand All @@ -140,6 +144,7 @@ jobs:

- name: Build docs
id: docbuild
if: (success() || failure()) && steps.worktree.outcome == 'success'
# Always non-incremental because of the concern that
# incremental docbuild may introduce broken links (inter-file references) though build succeeds
run: |
Expand Down
5 changes: 3 additions & 2 deletions build/bin/sage-dist-helpers
Original file line number Diff line number Diff line change
Expand Up @@ -247,9 +247,10 @@ sdh_pip_install() {
install_options="$install_options $1"
;;
-C|--config-settings)
build_options="$build_options --config-setting"
shift
build_options="$build_options $1"
# Per 'python -m build --help', options which begin with a hyphen
# must be in the form of "--config-setting=--opt(=value)" or "-C--opt(=value)"
build_options="$build_options --config-setting=$1"
;;
*)
break
Expand Down
4 changes: 2 additions & 2 deletions build/pkgs/cmake/spkg-configure.m4
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
SAGE_SPKG_CONFIGURE([cmake], [dnl
AC_CACHE_CHECK([for cmake >= 3.11], [ac_cv_path_CMAKE], [dnl
AC_CACHE_CHECK([for cmake >= 3.18], [ac_cv_path_CMAKE], [dnl
dnl Do not accept cmake installed via https://pypi.org/project/cmake/
dnl in the default user scheme; it will not work in our venv because
dnl we set PYTHONUSERBASE in sage-env.
Expand All @@ -8,7 +8,7 @@ SAGE_SPKG_CONFIGURE([cmake], [dnl
cmake_version=`$ac_path_CMAKE --version 2>&1 \
| $SED -n -e 's/cmake version *\([[0-9]]*\.[[0-9]]*\.[[0-9]]*\)/\1/p'`
AS_IF([test -n "$cmake_version"], [dnl
AX_COMPARE_VERSION([$cmake_version], [ge], [3.11], [dnl
AX_COMPARE_VERSION([$cmake_version], [ge], [3.18], [dnl
ac_cv_path_CMAKE="$ac_path_CMAKE"
ac_path_CMAKE_found=:
])
Expand Down
4 changes: 2 additions & 2 deletions build/pkgs/igraph/checksums.ini
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
tarball=igraph-VERSION.tar.gz
sha1=40efbd2adf3c1cc0a2bb3e14f4c7898d053f1fe4
sha256=ac5fa94ae6fd1eace651e4b235e99c056479a5c5d0d641aed30240ac33b19403
sha1=3789f61beac1f1231f8c3832102dcb2720f2a0c9
sha256=b011f7f9f38a3e59924cc9ff652e6d33105fa03fcaf3792f47d752626a0a4625
upstream_url=https://github.com/igraph/igraph/releases/download/VERSION/igraph-VERSION.tar.gz
2 changes: 1 addition & 1 deletion build/pkgs/igraph/package-version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.10.8
0.10.12
3 changes: 2 additions & 1 deletion build/pkgs/igraph/spkg-check.in
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
cd src
$MAKE check
cd build
sdh_make_check
Loading
Loading