diff --git a/.github/workflows/ci-macos.yml b/.github/workflows/ci-macos.yml
index d1a5d62f425..2f3a9cf6e4e 100644
--- a/.github/workflows/ci-macos.yml
+++ b/.github/workflows/ci-macos.yml
@@ -109,7 +109,7 @@ jobs:
       fail-fast: false
       max-parallel: 4
       matrix:
-        os: [ macos-11, macos-12, macos-14 ]
+        os: [ macos-12, macos-13, macos-14 ]
         tox_system_factor: [macos-nobootstrap]
         tox_packages_factor: [minimal]
         xcode_version_factor: [default]
diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml
index ccba31a3dcc..3d0732bcb7e 100644
--- a/.github/workflows/macos.yml
+++ b/.github/workflows/macos.yml
@@ -19,21 +19,19 @@ on:
         type: string
       # System configuration
       osversion_xcodeversion_toxenv_tuples:
-        # As of 2024-02, "runs-on: macos-latest" is macos-12.
-        # and "runs-on: macos-14" selects the new M1 runners.
+        # As of 2024-05, "runs-on: macos-latest" and "runs-on: macos-14" selects the new M1 runners.
         # https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners#standard-github-hosted-runners-for-public-repositories
         description: 'Stringified JSON object'
         default: >-
-          [["11",     "xcode_13.2.1", "homebrew-macos-usrlocal-minimal"],
-           ["12",     "",             "homebrew-macos-usrlocal-minimal"],
+          [["12",     "",             "homebrew-macos-usrlocal-minimal"],
            ["12",     "",             "homebrew-macos-usrlocal-standard"],
            ["12",     "",             "homebrew-macos-usrlocal-python3_xcode-standard"],
            ["12",     "",             "homebrew-macos-usrlocal-maximal"],
            ["13",     "xcode_15.0",   "homebrew-macos-usrlocal-standard"],
-           ["14",     "",             "homebrew-macos-opthomebrew-standard"],
-           ["latest", "",             "conda-forge-macos-minimal"],
-           ["latest", "",             "conda-forge-macos-standard"],
-           ["14",     "",             "conda-forge-macos-standard"]]
+           ["latest", "",             "homebrew-macos-opthomebrew-standard"],
+           ["13",     "",             "conda-forge-macos-minimal"],
+           ["13",     "",             "conda-forge-macos-standard"],
+           ["latest", "",             "conda-forge-macos-standard"]]
         type: string
       extra_sage_packages:
         description: 'Extra Sage packages to install as system packages'
diff --git a/build/pkgs/brial/spkg-install.in b/build/pkgs/brial/spkg-install.in
index e048eda6bdc..e0483b1448f 100644
--- a/build/pkgs/brial/spkg-install.in
+++ b/build/pkgs/brial/spkg-install.in
@@ -4,6 +4,7 @@
 # is installed by the "sage_brial" spkg.
 #
 cd src
+cp "$SAGE_ROOT"/config/config.* .
 sdh_configure \
     --enable-shared --disable-static \
     --with-boost-unit-test-framework=no
diff --git a/build/pkgs/cliquer/spkg-install.in b/build/pkgs/cliquer/spkg-install.in
index a863950189e..1f79dea79c8 100644
--- a/build/pkgs/cliquer/spkg-install.in
+++ b/build/pkgs/cliquer/spkg-install.in
@@ -1,5 +1,6 @@
 cd src
 
+cp "$SAGE_ROOT"/config/config.* .
 sdh_configure
 sdh_make
 sdh_make_install
diff --git a/build/pkgs/gengetopt/spkg-build.in b/build/pkgs/gengetopt/spkg-build.in
index 08e39b1143b..79cfbfd8c70 100644
--- a/build/pkgs/gengetopt/spkg-build.in
+++ b/build/pkgs/gengetopt/spkg-build.in
@@ -1,4 +1,5 @@
 cd src
+cp "$SAGE_ROOT"/config/config.* build-aux/
 sdh_configure
 
 # Don't run "make" at the top-level because the documentation build
diff --git a/build/pkgs/givaro/spkg-install.in b/build/pkgs/givaro/spkg-install.in
index a47034497b0..ec05be95f16 100644
--- a/build/pkgs/givaro/spkg-install.in
+++ b/build/pkgs/givaro/spkg-install.in
@@ -9,6 +9,7 @@ if [ "$SAGE_FAT_BINARY" = yes ]; then
     GIVARO_CONFIGURE="--disable-sse --disable-sse2 --disable-sse3 --disable-ssse3 --disable-sse41 --disable-sse42 --disable-fma --disable-fma4 --disable-avx --disable-avx2  $GIVARO_CONFIGURE"
 fi
 
+cp "$SAGE_ROOT"/config/config.* build-aux/
 sdh_configure $SAGE_CONFIGURE_GMP --enable-shared $GIVARO_CONFIGURE
 sdh_make
 sdh_make_install
diff --git a/build/pkgs/libbraiding/spkg-install.in b/build/pkgs/libbraiding/spkg-install.in
index 7bd121f376d..98bc539ddac 100644
--- a/build/pkgs/libbraiding/spkg-install.in
+++ b/build/pkgs/libbraiding/spkg-install.in
@@ -1,4 +1,5 @@
 cd src
+cp "$SAGE_ROOT"/config/config.* build-aux/
 sdh_configure $LIBBRAIDING_CONFIGURE
 sdh_make
 sdh_make_install -j1
diff --git a/build/pkgs/libgd/spkg-install.in b/build/pkgs/libgd/spkg-install.in
index e314d99d2ab..64af214d76f 100644
--- a/build/pkgs/libgd/spkg-install.in
+++ b/build/pkgs/libgd/spkg-install.in
@@ -2,6 +2,7 @@ cd src
 
 export CFLAGS="-g $CFLAGS"
 
+cp "$SAGE_ROOT"/config/config.* config/
 # We explicitly disable X, fontconfig, and support of various formats/libraries.
 # We only need png.
 # see https://github.com/libgd/libgd/blob/master/configure.ac
diff --git a/build/pkgs/libhomfly/spkg-install.in b/build/pkgs/libhomfly/spkg-install.in
index e32cc2e15cf..c7440f4b44b 100644
--- a/build/pkgs/libhomfly/spkg-install.in
+++ b/build/pkgs/libhomfly/spkg-install.in
@@ -1,4 +1,5 @@
 cd src
+cp "$SAGE_ROOT"/config/config.* build-aux/
 sdh_configure $LIBHOMFLY_CONFIGURE
 sdh_make
 sdh_make_install -j1
diff --git a/build/pkgs/lrcalc/spkg-install.in b/build/pkgs/lrcalc/spkg-install.in
index a863950189e..1f79dea79c8 100644
--- a/build/pkgs/lrcalc/spkg-install.in
+++ b/build/pkgs/lrcalc/spkg-install.in
@@ -1,5 +1,6 @@
 cd src
 
+cp "$SAGE_ROOT"/config/config.* .
 sdh_configure
 sdh_make
 sdh_make_install
diff --git a/build/pkgs/m4ri/checksums.ini b/build/pkgs/m4ri/checksums.ini
index 0deac09bc50..c57e9da969c 100644
--- a/build/pkgs/m4ri/checksums.ini
+++ b/build/pkgs/m4ri/checksums.ini
@@ -1,3 +1,4 @@
 tarball=m4ri-VERSION.tar.gz
-sha1=7d0d680f1e983c1d5b24e49f25194e2f327690b4
-sha256=a2ba0d74ec5129c6fab59cd7d8e7a9f00a69ec63b76672105faef524f9d88556
+sha1=7e5eebc83d8eeb44865e26b52667b1acfd08f7b1
+sha256=0dfb34aed351882a0f2281535ea6f81c690a5efeb14edab131d9ba0dffe44863
+upstream_url=https://bitbucket.org/malb/m4ri/downloads/m4ri-VERSION.tar.gz
diff --git a/build/pkgs/m4ri/package-version.txt b/build/pkgs/m4ri/package-version.txt
index ba948c594d4..d14eb0d9922 100644
--- a/build/pkgs/m4ri/package-version.txt
+++ b/build/pkgs/m4ri/package-version.txt
@@ -1 +1 @@
-20200115
+20200125
diff --git a/build/pkgs/m4ri/patches/mzd_fix.patch b/build/pkgs/m4ri/patches/mzd_fix.patch
deleted file mode 100644
index c24cd1e6bf6..00000000000
--- a/build/pkgs/m4ri/patches/mzd_fix.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-diff --git a/m4ri/mzd.c b/m4ri/mzd.c
-index 861905c..922dc3c 100644
---- a/m4ri/mzd.c
-+++ b/m4ri/mzd.c
-@@ -1894,7 +1894,7 @@ mzd_t *mzd_submatrix(mzd_t *S, mzd_t const *M, rci_t const startrow, rci_t const
-   } else {
-     wi_t j;
-     for(rci_t i=0; i<nrows; i++) {
--      for(j=0; j+m4ri_radix<=ncols; j+=m4ri_radix)
-+      for(j=0; j+m4ri_radix<ncols; j+=m4ri_radix)
-         S->rows[i][j/m4ri_radix] = mzd_read_bits(M, startrow+i, startcol+j, m4ri_radix);
-       S->rows[i][j/m4ri_radix] &= ~S->high_bitmask;
-       S->rows[i][j/m4ri_radix] |= mzd_read_bits(M, startrow+i, startcol+j, ncols - j) & S->high_bitmask;
-diff --git a/tests/test_misc.c b/tests/test_misc.c
-index a9a9547..b1a2e32 100644
---- a/tests/test_misc.c
-+++ b/tests/test_misc.c
-@@ -76,6 +76,31 @@ int test_png(rci_t m, rci_t n) {
-   return ret;
- }
- 
-+int test_submatrix(const rci_t m, const rci_t n, const rci_t lowr, const rci_t lowc, const rci_t highr, const rci_t highc) {
-+  printf("submatrix: m: %4d, n: %4d, (%4d, %4d, %4d, %4d)", m, n, lowr, lowc, highr, highc);
-+  assert(highr-lowr > 0);
-+  assert(highc-lowc > 0);
-+  mzd_t *M = mzd_init(m, n);
-+  mzd_randomize(M);
-+  mzd_t *S = mzd_init(highr-lowr, highc-lowc);
-+  mzd_submatrix(S, M, lowr, lowc, highr, highc);
-+  int ret = 0;
-+  for(rci_t i=0; i<highr-lowr; i++) {
-+    for(rci_t j=0; j<highc-lowc; j++) {
-+      ret += (mzd_read_bit(M, lowr+i, lowc+j) ^ mzd_read_bit(S, i, j));
-+    }
-+  }
-+
-+  mzd_free(M);
-+  mzd_free(S);
-+
-+  if(ret==0) {
-+    printf(" ... passed\n");
-+  } else {
-+    printf(" ... FAILED\n");
-+  }
-+  return ret;
-+}
- 
- int main(int argc, char *argv[]) {
-   int status = 0;
-@@ -99,6 +124,23 @@ int main(int argc, char *argv[]) {
-   status += test_png(126,12);
-   status += test_png(128,200);
- 
-+  status += test_submatrix(2, 127, 1, 1, 2, 127);
-+  status += test_submatrix(2, 128, 1, 1, 2, 128);
-+  status += test_submatrix(2, 129, 1, 1, 2, 129);
-+  status += test_submatrix(2, 130, 1, 1, 2, 130);
-+  status += test_submatrix(2, 131, 1, 1, 2, 131);
-+
-+  status += test_submatrix(2, 63, 1, 1, 1, 63);
-+  status += test_submatrix(2, 64, 1, 1, 1, 64);
-+  status += test_submatrix(2, 65, 1, 1, 1, 65);
-+  status += test_submatrix(2, 66, 1, 1, 1, 66);
-+  status += test_submatrix(2, 67, 1, 1, 1, 67);
-+
-+  status += test_submatrix(2, 127, 1, 63, 2, 127);
-+  status += test_submatrix(2, 128, 1, 64, 2, 128);
-+  status += test_submatrix(2, 129, 1, 65, 2, 129);
-+  status += test_submatrix(2, 130, 1, 66, 2, 130);
-+
-   if (!status) {
-     printf("All tests passed.\n");
-   } else {
--- 
-2.10.5
-
diff --git a/build/pkgs/m4ri/spkg-install.in b/build/pkgs/m4ri/spkg-install.in
index 392265fc116..0f54a7c481b 100644
--- a/build/pkgs/m4ri/spkg-install.in
+++ b/build/pkgs/m4ri/spkg-install.in
@@ -17,6 +17,8 @@ fi
 
 cd src
 
+cp "$SAGE_ROOT"/config/config.* .
+
 # Configure and build M4RI
 sdh_configure --enable-shared --disable-static $ENABLE_DEBUG $DISABLE_SSE2
 sdh_make
diff --git a/build/pkgs/m4rie/checksums.ini b/build/pkgs/m4rie/checksums.ini
index 096641cd512..a83c9a9b35f 100644
--- a/build/pkgs/m4rie/checksums.ini
+++ b/build/pkgs/m4rie/checksums.ini
@@ -1,3 +1,4 @@
 tarball=m4rie-VERSION.tar.gz
-sha1=728524509dd30da2dc960814b61d0bae67f83043
-sha256=aea462e8c9b4c0303c0a064bd7ead52fe81214e59a7fc694f350161cad4f2c85
+sha1=7c956bcecc87ec076dd51f923375136155dfa0fa
+sha256=7f3107f7cd10f6c22d9663d9536e1af2f551e10183601852a60d760918caf58d
+upstream_url=https://bitbucket.org/malb/m4rie/downloads/m4rie-VERSION.tar.gz
diff --git a/build/pkgs/m4rie/package-version.txt b/build/pkgs/m4rie/package-version.txt
index ba948c594d4..d14eb0d9922 100644
--- a/build/pkgs/m4rie/package-version.txt
+++ b/build/pkgs/m4rie/package-version.txt
@@ -1 +1 @@
-20200115
+20200125
diff --git a/build/pkgs/m4rie/spkg-install.in b/build/pkgs/m4rie/spkg-install.in
index 4d242bc52cf..a79056a3f43 100644
--- a/build/pkgs/m4rie/spkg-install.in
+++ b/build/pkgs/m4rie/spkg-install.in
@@ -23,6 +23,9 @@ export LDFLAGS
 # build M4RIE
 
 cd $ROOT_DIR/src/
+
+cp "$SAGE_ROOT"/config/config.* .
+
 sdh_configure --enable-shared --disable-static $ENABLE_DEBUG
 sdh_make
 sdh_make_install
diff --git a/build/pkgs/ntl/spkg-install.in b/build/pkgs/ntl/spkg-install.in
index d82ddf370e5..3faa999452c 100644
--- a/build/pkgs/ntl/spkg-install.in
+++ b/build/pkgs/ntl/spkg-install.in
@@ -21,6 +21,8 @@ ntl_configure()
 
     cd "$SRC"
 
+    cp "$SAGE_ROOT"/config/config.* src/libtool-origin/
+
     # Run the configure script, setting CC, CXX, CFLAGS etc as needed.
     # This ensures that they get written by DoConfig into 'makefile'.
     CFLAGS="-O2 -g $CFLAGS"
diff --git a/build/pkgs/patch/checksums.ini b/build/pkgs/patch/checksums.ini
index 9943634658e..14944d0ae3d 100644
--- a/build/pkgs/patch/checksums.ini
+++ b/build/pkgs/patch/checksums.ini
@@ -1,3 +1,4 @@
 tarball=patch-VERSION.tar.gz
-sha1=04d23f6e48e95efb07d12ccf44d1f35fb210f457
-sha256=7436f5a19f93c3ca83153ce9c5cbe4847e97c5d956e57a220121e741f6e7968f
+sha1=0ed8f3e49d84964f27e27c712fc8780e291dfa60
+sha256=8cf86e00ad3aaa6d26aca30640e86b0e3e1f395ed99f189b06d4c9f74bc58a4e
+upstream_url=https://ftp.gnu.org/gnu/patch/patch-VERSION.tar.gz
diff --git a/build/pkgs/patch/package-version.txt b/build/pkgs/patch/package-version.txt
index a603bb50a29..49cdd668e1c 100644
--- a/build/pkgs/patch/package-version.txt
+++ b/build/pkgs/patch/package-version.txt
@@ -1 +1 @@
-2.7.5
+2.7.6
diff --git a/build/pkgs/patch/spkg-install.in b/build/pkgs/patch/spkg-install.in
index 57f66569cb0..444505b53bd 100644
--- a/build/pkgs/patch/spkg-install.in
+++ b/build/pkgs/patch/spkg-install.in
@@ -7,6 +7,7 @@ if [ "x$UNAME" = xAIX ] ; then
 fi
 
 cd src
+cp "$SAGE_ROOT"/config/config.* build-aux/
 sdh_configure
 sdh_make
 sdh_make_install
diff --git a/build/pkgs/ppl/spkg-install.in b/build/pkgs/ppl/spkg-install.in
index c986b3a20c6..c872ff1337c 100644
--- a/build/pkgs/ppl/spkg-install.in
+++ b/build/pkgs/ppl/spkg-install.in
@@ -3,6 +3,8 @@ export CXXFLAGS="$CXXFLAGS -I$SAGE_LOCAL/include"
 
 cd src
 
+cp "$SAGE_ROOT"/config/config.* .
+
 # Enable only what's needed for Sage
 PPL_CONFIGURE="--enable-coefficients=mpz --disable-fpmath $PPL_CONFIGURE"
 
diff --git a/build/pkgs/rw/spkg-install.in b/build/pkgs/rw/spkg-install.in
index ffd3fe98238..0a55e1e8fa0 100644
--- a/build/pkgs/rw/spkg-install.in
+++ b/build/pkgs/rw/spkg-install.in
@@ -1,5 +1,6 @@
 cd src
 
+cp "$SAGE_ROOT"/config/config.* .
 sdh_configure --enable-executable=no  # no igraph dependency
 sdh_make
 sdh_make_install
diff --git a/build/pkgs/symmetrica/spkg-install.in b/build/pkgs/symmetrica/spkg-install.in
index 17d240e98e0..4bc551a2588 100644
--- a/build/pkgs/symmetrica/spkg-install.in
+++ b/build/pkgs/symmetrica/spkg-install.in
@@ -2,5 +2,6 @@ cd src
 
 export CFLAGS="-O2 -g $CFLAGS -fPIC -DFAST -DALLTRUE"
 
+cp "$SAGE_ROOT"/config/config.* build-aux/
 sdh_configure
 sdh_make_install
diff --git a/build/pkgs/zeromq/spkg-install.in b/build/pkgs/zeromq/spkg-install.in
index b94c1d62a09..c2119c50e94 100644
--- a/build/pkgs/zeromq/spkg-install.in
+++ b/build/pkgs/zeromq/spkg-install.in
@@ -1,5 +1,7 @@
 cd src
 
+cp "$SAGE_ROOT"/config/config.* config/
+
 # Do not treat warnings as errors, see
 # https://github.com/zeromq/libzmq/issues/2818
 sdh_configure --disable-Werror