Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
8 changes: 4 additions & 4 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ concurrency:
#
# The three workflows:
#
# - build.yml (with jobs test-new, test-long),
# - build.yml (with job test-long),
# - doc-build.yml,
# - doc-build-pdf.yml
#
Expand All @@ -50,7 +50,7 @@ concurrency:
# This baseline is transparently improved by our use of the GH Actions cache,
# see https://docs.docker.com/build/ci/github-actions/cache/#cache-backend-api.
#
# Jobs test-long is only started after test-new completed;
# Job test-long builds Sage and runs tests;
# but the workflows doc-build.yml and doc-build-pdf.yml are started independently.
#
# - When nothing is cached and the 3 workflows are launched in parallel,
Expand Down Expand Up @@ -156,7 +156,7 @@ jobs:
NUMPROC=6
USE_MAKEFLAGS=-k V=0 SAGE_NUM_THREADS=4 --output-sync=recurse
TARGETS_PRE=build/make/Makefile
TARGETS=${{ needs.test-new.outputs.build_targets }}
TARGETS=build

- name: Start container
id: container
Expand Down Expand Up @@ -273,7 +273,7 @@ jobs:
NUMPROC=6
USE_MAKEFLAGS=-k V=0 SAGE_NUM_THREADS=4 --output-sync=recurse
TARGETS_PRE=build/make/Makefile
TARGETS=${{ needs.test-new.outputs.build_targets }}
TARGETS=build

- name: Start container
id: container
Expand Down
4 changes: 2 additions & 2 deletions build/pkgs/ecl/checksums.ini
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
tarball=ecl-VERSION.tgz
sha1=b1641a3ecff85133bd0bd324bd0b611fb40f75cb
sha256=e4ea65bb1861e0e495386bfa8bc673bd014e96d3cf9d91e9038f91435cbe622b
sha1=fba3b9f358f38634d553540708d2409ed5c3562a
sha256=416d5707bf11d2b3d8d33d6791419a786e4cc59ac0cc3ec505ee59b51a9f5c9a
upstream_url=https://common-lisp.net/project/ecl/static/files/release/ecl-VERSION.tgz
2 changes: 1 addition & 1 deletion build/pkgs/ecl/package-version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
24.5.10
26.3.27
171 changes: 0 additions & 171 deletions build/pkgs/ecl/patches/1aec8f741f69fd736f020b7fe4d3afc33e60ae6a.patch

This file was deleted.

This file was deleted.

24 changes: 24 additions & 0 deletions build/pkgs/ecl/patches/first_env_page_alignment.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
ECL 26.3.27 changed the main thread environment from mmap-allocated
(page-aligned) to a static struct first_env. The ECL_USE_MPROTECT fast
interrupt dispatch calls mprotect() on this struct, which requires the
address to be page-aligned. The unaligned static variable causes
mprotect() to fail with EINVAL when a signal arrives while interrupts
are disabled (e.g. inside ecl_cons), crashing with "Unable to mprotect
environment". Align first_env to 65536 bytes (covers 4K/16K/64K pages).
See https://github.com/sagemath/sage/pulls/41879

diff --git a/src/c/main.d b/src/c/main.d
--- a/src/c/main.d
+++ b/src/c/main.d
@@ -49,7 +49,12 @@

const char *ecl_self;
-static struct cl_env_struct first_env;
+/* Align to page boundary: ECL_USE_MPROTECT calls mprotect() on this
+ struct for fast interrupt dispatch, which requires a page-aligned
+ address. Use 65536 to cover all common page sizes (4K/16K/64K).
+ Prior ECL versions allocated this via mmap() which is always
+ page-aligned; this was changed to a static variable in 26.3.27. */
+static struct cl_env_struct __attribute__((aligned(65536))) first_env;

/************************ GLOBAL INITIALIZATION ***********************/
11 changes: 4 additions & 7 deletions build/pkgs/ecl/patches/write_error.patch
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
diff --git a/src/c/file.d b/src/c/file.d
index 2d15d50f8..199f24c4f 100755
--- a/src/c/file.d
+++ b/src/c/file.d
@@ -3536,7 +3536,8 @@ output_stream_write_byte8(cl_object strm, unsigned char *c, cl_index n)
diff --git a/src/c/streams/strm_os.d b/src/c/streams/strm_os.d
--- a/src/c/streams/strm_os.d
+++ b/src/c/streams/strm_os.d
@@ -784,7 +784,8 @@ output_stream_write_byte8(cl_object strm, unsigned char *c, cl_index n)
ecl_disable_interrupts();
do {
out = fwrite(c, sizeof(char), n, IO_STREAM_FILE(strm));
Expand All @@ -12,6 +11,4 @@ index 2d15d50f8..199f24c4f 100755
ecl_enable_interrupts();
return out;
}
--
2.20.1

2 changes: 1 addition & 1 deletion build/pkgs/ecl/spkg-configure.m4
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ SAGE_SPKG_CONFIGURE([ecl], [
AC_RUN_IFELSE([AC_LANG_PROGRAM([[
#include <ecl/config.h>
]],[[
if (ECL_VERSION_NUMBER < 210201) { return 1; }
if (ECL_VERSION_NUMBER < 240510) { return 1; }
]])],
[
sage_spkg_install_ecl=no
Expand Down
4 changes: 2 additions & 2 deletions build/pkgs/maxima/checksums.ini
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
tarball=maxima-VERSION.tar.gz
sha1=fff13f4c010e6daab65fbc8a6895c2bd79925177
sha256=9104021b24fd53e8c03a983509cb42e937a925e8c0c85c335d7709a14fd40f7a
sha1=d487e477030cfad6b3ab0ed2e2fcc88e553ce1fd
sha256=6d401a4aa307cd3a5a9cadca4fa96c4ef0e24ff95a18bb6a8f803e3d2114adee
upstream_url=https://sourceforge.net/projects/maxima/files/Maxima-source/VERSION-source/maxima-VERSION.tar.gz/download
2 changes: 1 addition & 1 deletion build/pkgs/maxima/package-version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
5.47.0
5.49.0
2 changes: 1 addition & 1 deletion build/pkgs/maxima/spkg-configure.m4
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
SAGE_SPKG_CONFIGURE([maxima], [
m4_pushdef([SAGE_MAXIMA_MINVER],[5.45.0])dnl this version and higher allowed
m4_pushdef([SAGE_MAXIMA_MINVER],[5.48.0])dnl this version and higher allowed
SAGE_SPKG_DEPCHECK([ecl], [
dnl First check for the "maxima" executable in the user's PATH, because
dnl we still use pexpect to communicate with it in a few places.
Expand Down
Loading
Loading