From 0b995ea7ea964c30620c987bbd712519785c2f58 Mon Sep 17 00:00:00 2001 From: Michael Orlitzky Date: Sun, 26 Nov 2023 09:31:25 -0500 Subject: [PATCH 01/23] build/bin: drop cygwin support These are pretty obvious: run "git grep -i cygwin build/bin" and then delete the special cases for Cygwin. --- build/bin/sage-apply-patches | 4 ++-- build/bin/sage-bootstrap-python | 8 +++----- build/bin/sage-dist-helpers | 11 ++--------- build/bin/sage-spkg | 33 --------------------------------- build/bin/sage-venv | 14 ++++---------- 5 files changed, 11 insertions(+), 59 deletions(-) diff --git a/build/bin/sage-apply-patches b/build/bin/sage-apply-patches index 522116e4196..a7352a78de4 100755 --- a/build/bin/sage-apply-patches +++ b/build/bin/sage-apply-patches @@ -10,8 +10,8 @@ # the root of the package source. # # An optional patch subdirectory may be specified with the -d flag. -# For example `sage-apply-patches -d cygwin` applies only those -# patches under /cygwin. +# For example `sage-apply-patches -d macos` applies only those +# patches under /macos. # # The -p arg is the argument accepted by the `patch` command, # and overrides the default -p1 diff --git a/build/bin/sage-bootstrap-python b/build/bin/sage-bootstrap-python index 1fa3ea565b1..53cdae3a515 100755 --- a/build/bin/sage-bootstrap-python +++ b/build/bin/sage-bootstrap-python @@ -36,9 +36,7 @@ SAGE_ORIG_PATH=${NEW_PATH%%':'} # a defect of sage_bootstrap on macOS regarding SSL URLs. # Trac #30177: Also check for hashlib.sha1 to guard against broken python2 -# from old homebrew installations. Also check whether the current directory -# is accessible by this python; this is to guard on Cygwin against Pythons -# installed somewhere else in Windows. +# from old homebrew installations. # Trac #29285: Do not accept pythons that manipulate PATH, such as # the shims provided by pyenv. @@ -60,7 +58,7 @@ PYTHONS="python python3 python3.12 python3.11 python3.10 python3.9 python3.8 pyt for PY in $PYTHONS; do PYTHON="$(PATH="$SAGE_ORIG_PATH" command -v $PY)" if [ -n "$PYTHON" ]; then - if CHECK_PATH="$PATH" "$PYTHON" -c "import argparse; import urllib; from hashlib import sha1; from ssl import HAS_SNI; assert HAS_SNI; from os import listdir, environ; listdir(\"$(pwd)\"); assert environ[\"PATH\"] == environ[\"CHECK_PATH\"];" 2>/dev/null; then + if CHECK_PATH="$PATH" "$PYTHON" -c "import argparse; import urllib; from hashlib import sha1; from ssl import HAS_SNI; assert HAS_SNI; from os import environ; assert environ[\"PATH\"] == environ[\"CHECK_PATH\"];" 2>/dev/null; then exec "$PYTHON" "$@" fi fi @@ -69,7 +67,7 @@ done for PY in $PYTHONS; do PYTHON="$(PATH="$SAGE_ORIG_PATH" command -v $PY)" if [ -n "$PYTHON" ]; then - if CHECK_PATH="$PATH" "$PYTHON" -c "import argparse; import urllib; from hashlib import sha1; from os import listdir, environ; listdir(\"$(pwd)\"); assert environ[\"PATH\"] == environ[\"CHECK_PATH\"];" 2>/dev/null; then + if CHECK_PATH="$PATH" "$PYTHON" -c "import argparse; import urllib; from hashlib import sha1; from os import environ; assert environ[\"PATH\"] == environ[\"CHECK_PATH\"];" 2>/dev/null; then exec "$PYTHON" "$@" fi fi diff --git a/build/bin/sage-dist-helpers b/build/bin/sage-dist-helpers index b6259ca9ef1..f08aab31b7f 100644 --- a/build/bin/sage-dist-helpers +++ b/build/bin/sage-dist-helpers @@ -170,16 +170,9 @@ sdh_configure() { if [ -z "$CONFIG_SHELL" ]; then export CONFIG_SHELL=`command -v bash` fi - if [ "$UNAME" = "CYGWIN" ]; then - # TODO: To use --disable-static for all packages on Cygwin, need - # #30814: Cygwin: Fix remaining packages to build shared libraries, using AM_LDFLAGS=-no-undefined - DISABLE_STATIC= - else - DISABLE_STATIC=--disable-static - fi - ./configure --prefix="$SAGE_INST_LOCAL" --libdir="$SAGE_INST_LOCAL/lib" $DISABLE_STATIC --disable-maintainer-mode --disable-dependency-tracking "$@" + ./configure --prefix="$SAGE_INST_LOCAL" --libdir="$SAGE_INST_LOCAL/lib" --disable-static --disable-maintainer-mode --disable-dependency-tracking "$@" if [ $? -ne 0 ]; then # perhaps it is a non-autoconf'd project - ./configure --prefix="$SAGE_INST_LOCAL" --libdir="$SAGE_INST_LOCAL/lib" $DISABLE_STATIC "$@" + ./configure --prefix="$SAGE_INST_LOCAL" --libdir="$SAGE_INST_LOCAL/lib" --disable-static "$@" if [ $? -ne 0 ]; then if [ -f "$(pwd)/config.log" ]; then sdh_die <<_EOF_ diff --git a/build/bin/sage-spkg b/build/bin/sage-spkg index b540c8e866f..415116b8ebf 100755 --- a/build/bin/sage-spkg +++ b/build/bin/sage-spkg @@ -584,26 +584,6 @@ export https_proxy=$http_proxy export ftp_proxy=$http_proxy export rsync_proxy=$http_proxy -################################################################## -# We need to run sage-rebase.sh for each package installed, but it -# can be dangerous to do this while other packages are installing -# so we need to use a lock to manage when rebase is allowed to -# run. Because of this, if multiple sage-spkg runs are waiting on -# the rebase lock, we can end up with multiple consecutive rebase -# calls that are redundant, but I don't see an obvious way around -# that. This also unfortunately slows down parallel builds since -# all packages will eventually need to wait for this lock, but -# again there's no simple way around that. -################################################################## - -if [ "$UNAME" = "CYGWIN" ]; then - # This is a global lock - so we use SAGE_LOCAL, not SAGE_INST_LOCAL. - if [ ! -d "$SAGE_LOCAL/var/lock" ]; then - mkdir -p "$SAGE_LOCAL/var/lock" - fi - exec 200>"$SAGE_LOCAL/var/lock/rebase.lock" - sage-flock -s $lock_type 200 -fi ################################################################## # Actually install @@ -738,19 +718,6 @@ if [ -f spkg-postinst ]; then fi fi -if [ "$UNAME" = "CYGWIN" ]; then - # Drop our sage-spkg's shared lock, and try to call sage-rebase.sh - # under an exclusive lock - sage-flock -u 200 - - # Rebase after installing each package--in case any packages load this - # package at build time we need to ensure during the build that no binaries - # have conflicting address spaces - echo "Waiting for rebase lock" - sage-flock -x "$SAGE_LOCAL/var/lock/rebase.lock" \ - sage-rebase.sh "$SAGE_LOCAL" 2>/dev/null -fi - # Note: spkg-check tests are run after the package has been copied into # SAGE_INST_LOCAL. It might make more sense to run the tests before, but the diff --git a/build/bin/sage-venv b/build/bin/sage-venv index c2728ba1143..8621433f70b 100755 --- a/build/bin/sage-venv +++ b/build/bin/sage-venv @@ -37,19 +37,13 @@ options = parser.parse_args() if options.upgrade and options.clear: raise ValueError('you cannot supply --upgrade and --clear together.') -if sys.platform == 'cygwin': - # default for Cygwin; see https://github.com/sagemath/sage/issues/30149 - use_symlinks = False -else: - # default for posix - # On macOS, definitely need symlinks=True (which matches what we test in build/pkgs/spkg-configure.m4) - # or it may fail with 'dyld: Library not loaded: @executable_path/../Python3' on macOS. - use_symlinks = True - + +# On macOS, definitely need symlinks=True (which matches what we test in build/pkgs/spkg-configure.m4) +# or it may fail with 'dyld: Library not loaded: @executable_path/../Python3' on macOS. b = venv.EnvBuilder(system_site_packages=options.system_site, clear=options.clear, upgrade=options.upgrade, - symlinks=use_symlinks) + symlinks=True) c = b.ensure_directories(options.env_dir) b.setup_python(c) b.create_configuration(c) From ac7b464290f50fc7b38eedcb8439dc5dd564d5e7 Mon Sep 17 00:00:00 2001 From: Dima Pasechnik Date: Sun, 26 Nov 2023 14:52:15 +0000 Subject: [PATCH 02/23] don't need no rebase, no --- src/bin/sage-rebase.bat | 52 -------------------------- src/bin/sage-rebase.sh | 75 -------------------------------------- src/bin/sage-rebaseall.bat | 56 ---------------------------- src/bin/sage-rebaseall.sh | 20 ---------- 4 files changed, 203 deletions(-) delete mode 100755 src/bin/sage-rebase.bat delete mode 100755 src/bin/sage-rebase.sh delete mode 100755 src/bin/sage-rebaseall.bat delete mode 100755 src/bin/sage-rebaseall.sh diff --git a/src/bin/sage-rebase.bat b/src/bin/sage-rebase.bat deleted file mode 100755 index de481343786..00000000000 --- a/src/bin/sage-rebase.bat +++ /dev/null @@ -1,52 +0,0 @@ -@echo off -rem Author: -rem * Jean-Pierre Flori -rem * Erik M. Bray -rem -rem Rebase all dlls in the SAGE_LOCAL directory (and its subdirectories), -rem but do not touch the ones already stored in the system database, -rem and do not update it. -rem Note that subsequent calls to 'rebaseall' will not update the Sage dlls. -rem -rem Invoke this script from a Windows command prompt -rem and, if Cygwin is installed in a non-standard location, -rem adjusting CYGWIN_ROOT. - -setlocal ENABLEEXTENSIONS - -set THIS_BIN=%~dp0 - -rem SAGE_LOCAL should be one level up from the bin/ this script is in -rem This is about the most elegant way to do this I can find thanks -rem http://stackoverflow.com/a/33404867/982257 -call :NORMALIZEPATH "%THIS_BIN%.." -set SAGE_LOCAL=%RETVAL% - -rem Cygwin saves its installation root here -rem If there is more than one Cygwin installation on the system this -rem will just pick up the first one -call :READREGISTRY HKEY_LOCAL_MACHINE\SOFTWARE\Cygwin\setup rootdir -set CYGWIN_ROOT=%RETVAL% - -rem Make sure bash can be called from MSDOS prompt: -path %CYGWIN_ROOT%\bin;%path% -rem Suppress warning about MSDOS-style path: -set CYGWIN=%CYGWIN% nodosfilewarning -rem Call the bash script to do the real work: -cd %SAGE_LOCAL% -bash bin\sage-rebase.sh - - -:: ========== FUNCTIONS ========== -exit /B - -:READREGISTRY - for /F "usebackq skip=2 tokens=3" %%V in (`reg query %1 /v %2 2^>nul`) do ( - set RETVAL=%%V - break - ) - exit /B - -:NORMALIZEPATH - set RETVAL=%~dpfn1 - exit /B diff --git a/src/bin/sage-rebase.sh b/src/bin/sage-rebase.sh deleted file mode 100755 index 21017c704e8..00000000000 --- a/src/bin/sage-rebase.sh +++ /dev/null @@ -1,75 +0,0 @@ -#!/bin/dash - -# Author: -# * Jean-Pierre Flori -# * Gary Zablackis -# * Dmitrii Pasechnik -# * Erik M. Bray -# -# Rebase all dlls in the SAGE_LOCAL directory (and its subdirectories), -# but do not touch the ones already stored in the system database, -# and do not update it. -# Note that subsequent calls to 'rebaseall' will not update the Sage dlls. -# -# Usage: -# -# sage-rebase.sh [--all] [sage_local] [-- additional_flags] -# -# Positional arguments: -# -# sage_local optionally, provide the path to the $SAGE_LOCAL directory to -# search for DLLs to rebase; otherwise the current working -# directory is assumed to be $SAGE_LOCAL unless $SAGE_LOCAL -# is already set in the environment -# -# Optional arguments: -# -# --all run rebaseall instead of rebase (originally the call to -# rebaseall was in the sage-rebaseall.sh script, but now that is -# just a wrapper around this script) -# -# -- additional arguments passed in after -- are passed to the -# rebase/rebaseall call in addition to the default arguments -# passed in by this script -# -# Invoke this script from a shell after going to the SAGE_LOCAL directory. -ALL=0 -REBASEFLAGS="" - -while [ $# -gt 0 ]; do - case "$1" in - --all) - ALL=1 - ;; - --) - shift - REBASEFLAGS="$REBASEFLAGS $1" - ;; - *) - if [ -z "$REBASEFLAGS" ]; then - SAGE_LOCAL="${1%/}" - else - REBASEFLAGS="$REBASEFLAGS $1" - fi - ;; - esac - shift -done - -if [ -z "$SAGE_LOCAL" ]; then - # Assume we are in $SAGE_LOCAL by default (the old behavior of this script) - SAGE_LOCAL=. -fi - -FINDFLAGS="-type f ( -name *.dll -o -name *.so -o -name *.fas ) -print" -FINDFLAGS="$FINDFLAGS -o -path "$SAGE_LOCAL"/var/tmp -prune" - -echo "Getting list of dlls. This may take a while..." -/bin/find "$SAGE_LOCAL" $FINDFLAGS > /tmp/sage-dlls.lst -echo "Now rebasing..." - -if [ $ALL -eq 0 ]; then - /bin/rebase -O -T /tmp/sage-dlls.lst $REBASEFLAGS -else - /bin/rebaseall -s dll -s exe -s so -s fas -T /tmp/sage-dlls.lst $REBASEFLAGS -fi diff --git a/src/bin/sage-rebaseall.bat b/src/bin/sage-rebaseall.bat deleted file mode 100755 index 0ae927f5e64..00000000000 --- a/src/bin/sage-rebaseall.bat +++ /dev/null @@ -1,56 +0,0 @@ -@echo off -rem Authors: -rem * Dmitrii Pasechnik -rem * Jean-Pierre Flori -rem * Erik M. Bray -rem -rem Rebase all dlls in the SAGE_LOCAL directory (and its subdirectories), -rem as well as the ones already stored in the system database, -rem and update the database. -rem This system-wide database is located in '/etc/rebase.db.i386' and -rem includes the Cygwin system dlls. -rem -rem Invoke this script from a Windows command prompt -rem and, if Cygwin is installed in a non-standard location, -rem adjusting CYGWIN_ROOT. -rem -rem Ensure that no other Cygwin processes are currently running. -rem Note that you need write access to the system-wide rebase database -rem (which usually means admin rights). - -set THIS_BIN=%~dp0 - -rem SAGE_LOCAL should be one level up from the bin/ this script is in -rem This is about the most elegant way to do this I can find thanks -rem http://stackoverflow.com/a/33404867/982257 -call :NORMALIZEPATH "%THIS_BIN%.." -set SAGE_LOCAL=%RETVAL% - -rem Cygwin saves its installation root here -rem If there is more than one Cygwin installation on the system this -rem will just pick up the first one -call :READREGISTRY HKEY_LOCAL_MACHINE\SOFTWARE\Cygwin\setup rootdir -set CYGWIN_ROOT=%RETVAL% - -rem Make sure dash can be called from MSDOS prompt: -path %CYGWIN_ROOT%\bin;%path% -rem Suppress warning about MSDOS-style path: -set CYGWIN=%CYGWIN% nodosfilewarning -rem Call the dash script to do the real work: -cd %SAGE_LOCAL% -dash bin\sage-rebaseall.sh - - -:: ========== FUNCTIONS ========== -exit /B - -:READREGISTRY - for /F "usebackq skip=2 tokens=3" %%V in (`reg query %1 /v %2 2^>nul`) do ( - set RETVAL=%%V - break - ) - exit /B - -:NORMALIZEPATH - set RETVAL=%~dpfn1 - exit /B diff --git a/src/bin/sage-rebaseall.sh b/src/bin/sage-rebaseall.sh deleted file mode 100755 index dfdf2e08067..00000000000 --- a/src/bin/sage-rebaseall.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/dash - -# Authors: -# * Gary Zablackis -# * Dmitrii Pasechnik -# * Jean-Pierre Flori -# -# Rebase all dlls in the SAGE_LOCAL directory (and its subdirectories) -# as well as the ones already stored in the system database, -# and update the database. -# This system-wide database is located in '/etc/rebase.db.i386' and -# includes the Cygwin system dlls. -# -# Invoke this script from a dash shell after going to the SAGE_LOCAL directory. -# Ensure that no other Cygwin processes are currently running. -# Note that you need write access to the system-wide rebase database -# (which usually means admin rights). - -DIR=$(dirname "$(readlink -f "$0")") -exec "$DIR"/sage-rebase.sh --all $@ From 6bd341b8bc0fd96120e5c1e0a06ee8a5de771eb4 Mon Sep 17 00:00:00 2001 From: Dima Pasechnik Date: Sun, 26 Nov 2023 14:58:32 +0000 Subject: [PATCH 03/23] no, no rebase - apart from git rebase --- .github/workflows/extract-sage-local.sh | 7 ----- build/pkgs/sagelib/spkg-install | 4 --- src/doc/en/installation/source.rst | 37 ------------------------- src/sage/misc/cython.py | 24 ---------------- src/setup.cfg.m4 | 4 --- 5 files changed, 76 deletions(-) diff --git a/.github/workflows/extract-sage-local.sh b/.github/workflows/extract-sage-local.sh index a7ae987a92c..1d4928aa5bb 100755 --- a/.github/workflows/extract-sage-local.sh +++ b/.github/workflows/extract-sage-local.sh @@ -33,10 +33,3 @@ fi # Show how we are doing on free space. df -h - -# Rebase! -case "$(uname)" in - CYGWIN*) - exec src/bin/sage-rebase.sh --all "$SAGE_LOCAL" - ;; -esac diff --git a/build/pkgs/sagelib/spkg-install b/build/pkgs/sagelib/spkg-install index 730829b3101..b8d92074cf3 100755 --- a/build/pkgs/sagelib/spkg-install +++ b/build/pkgs/sagelib/spkg-install @@ -89,7 +89,3 @@ fi # Trac #33103: The temp.* directories are large after a full build. # We remove them to save space; they are not needed for fast rebuilds. rm -rf build/temp.* - -if [ "$UNAME" = "CYGWIN" ]; then - sage-rebase.sh "$SAGE_VENV" 2>/dev/null; -fi diff --git a/src/doc/en/installation/source.rst b/src/doc/en/installation/source.rst index b16fd8e7295..a13aed9250a 100644 --- a/src/doc/en/installation/source.rst +++ b/src/doc/en/installation/source.rst @@ -377,43 +377,6 @@ Use the following instructions to get started. .. literalinclude:: cygwin-optional.txt -.. NOTE:: - - On Cygwin, at any point in time after building/installing software, - it may be required to "rebase" ``dll`` files. - Sage provides some scripts, located in :file:`$SAGE_LOCAL/bin`, to do so: - - - ``sage-rebaseall.sh``, a shell script which calls Cygwin's - ``rebaseall`` program. It must be run within a ``dash`` shell - from the :envvar:`SAGE_ROOT` directory after all other Cygwin - processes have been shut down and needs write-access to the - system-wide rebase database located at - :file:`/etc/rebase.db.i386`, which usually means administrator - privileges. It updates the system-wide database and adds Sage - dlls to it, so that subsequent calls to ``rebaseall`` will take - them into account. - - - ``sage-rebase.sh``, a shell script which calls Cygwin's ``rebase`` program - together with the ``-O/--oblivious`` option. - It must be run within a shell from :envvar:`SAGE_ROOT` directory. - Contrary to the ``sage-rebaseall.sh`` script, it neither updates the - system-wide database, nor adds Sage dlls to it. - Therefore, subsequent calls to ``rebaseall`` will not take them into account. - - - ``sage-rebaseall.bat`` (respectively ``sage-rebase.bat``), an MS-DOS batch - file which calls the ``sage-rebaseall.sh`` (respectively ``sage-rebase.sh``) - script. - It must be run from a Windows command prompt, after adjusting - :envvar:`SAGE_ROOT` to the Windows location of Sage's home directory, and, if - Cygwin is installed in a non-standard location, adjusting - :envvar:`CYGWIN_ROOT` as well. - - Some systems may encounter this problem frequently enough to make building or - testing difficult. - If executing the above scripts or directly calling ``rebaseall`` does not solve - rebasing issues, deleting the system-wide database and then regenerating it - from scratch, e.g., by executing ``sage-rebaseall.sh``, might help. - Other platforms ^^^^^^^^^^^^^^^ diff --git a/src/sage/misc/cython.py b/src/sage/misc/cython.py index c0c803bf943..13781e2585d 100644 --- a/src/sage/misc/cython.py +++ b/src/sage/misc/cython.py @@ -344,30 +344,6 @@ def cython(filename, verbose=0, compile_message=False, extra_compile_args = ['-w'] # no warnings extra_link_args = [] - if sys.platform == 'cygwin': - # Link using --enable-auto-image-base, reducing the likelihood of the - # new DLL colliding with existing DLLs in memory. - # Note: Cygwin locates --enable-auto-image-base DLLs in the range - # 0x4:00000000 up to 0x6:00000000; this is documented in heap.cc in the - # Cygwin sources, while 0x6:00000000 and up is reserved for the Cygwin - # heap. - # In practice, Sage has enough DLLs that when rebasing everything we - # use up through, approximately, 0x4:80000000 though there is nothing - # precise here. When running 'rebase' it just start from 0x2:00000000 - # (below that is reserved for Cygwin's DLL and some internal - # structures). - # Therefore, to minimize the likelihood of collision with one of Sage's - # standard DLLs, while giving ~2GB (should be more than enough) for - # Sage to grow, we base these DLLs from 0x5:8000000, leaving again ~2GB - # for temp DLLs which in normal use should be more than enough. - # See https://github.com/sagemath/sage/issues/28258 - # It should be noted, this is not a bulletproof solution; there is - # still a potential for DLL overlaps with this. But this reduces the - # probability thereof, especially in normal practice. - dll_filename = os.path.splitext(pyxfile)[0] + '.dll' - image_base = _compute_dll_image_base(dll_filename) - extra_link_args.extend(['-Wl,--disable-auto-image-base', - '-Wl,--image-base=0x{:x}'.format(image_base)]) ext = Extension(name, sources=[pyxfile], diff --git a/src/setup.cfg.m4 b/src/setup.cfg.m4 index 41ac1c08bfa..9f7da4442ef 100644 --- a/src/setup.cfg.m4 +++ b/src/setup.cfg.m4 @@ -85,10 +85,6 @@ scripts = bin/sage-num-threads.py bin/sage-preparse bin/sage-python - bin/sage-rebase.bat - bin/sage-rebase.sh - bin/sage-rebaseall.bat - bin/sage-rebaseall.sh bin/sage-run bin/sage-run-cython bin/sage-startuptime.py From 002c98400268092abac34816472a52e5dd99a982 Mon Sep 17 00:00:00 2001 From: Dima Pasechnik Date: Sun, 26 Nov 2023 15:26:23 +0000 Subject: [PATCH 04/23] no CYGWIN-related studd from installation scrips and CI --- .github/workflows/cygwin.yml | 151 ------------------ .github/workflows/extract-sage-local.sh | 1 - COPYING.txt | 4 +- build/pkgs/ecl/spkg-install.in | 7 - build/pkgs/eclib/spkg-install.in | 3 - build/pkgs/ecm/spkg-install.in | 6 - build/pkgs/fplll/spkg-check.in | 6 - build/pkgs/fplll/spkg-install.in | 10 -- build/pkgs/gc/spkg-install.in | 5 - build/pkgs/gf2x/SPKG.rst | 2 - build/pkgs/giac/spkg-install.in | 4 - build/pkgs/glpk/SPKG.rst | 3 - .../patches/src/02-cygwin_sharedlib.patch | 56 ------- build/pkgs/gmp/spkg-install.in | 11 +- build/pkgs/jmol/jmol | 5 - build/pkgs/libatomic_ops/spkg-install.in | 4 - build/pkgs/libpng/spkg-install.in | 5 - build/pkgs/mcqd/spkg-install.in | 12 +- build/pkgs/mpc/spkg-install.in | 4 - build/pkgs/mpfr/spkg-install.in | 4 - build/pkgs/ntl/spkg-install.in | 3 - build/pkgs/numpy/spkg-install.in | 5 - build/pkgs/palp/spkg-install.in | 5 - build/pkgs/patch/spkg-install.in | 4 - build/pkgs/ppl/spkg-install.in | 7 - 25 files changed, 4 insertions(+), 323 deletions(-) delete mode 100644 .github/workflows/cygwin.yml delete mode 100644 build/pkgs/glpk/patches/src/02-cygwin_sharedlib.patch diff --git a/.github/workflows/cygwin.yml b/.github/workflows/cygwin.yml deleted file mode 100644 index 26c193dfb2b..00000000000 --- a/.github/workflows/cygwin.yml +++ /dev/null @@ -1,151 +0,0 @@ -name: Reusable workflow for Cygwin - -on: - workflow_call: - inputs: - targets_pre: - default: build/make/Makefile - type: string - targets: - type: string - targets_optional: - default: build/make/Makefile - type: string - prefix: - required: false - default: /opt/sage - type: string - toxenv: - required: false - default: local-cygwin-choco-standard - type: string - # - # For use in multi-stage CIs - # - stage: - required: false - default: main - type: string - previous_stages: - required: false - type: string - # - # For use in upstream CIs - # - upstream_artifact: - required: false - type: string - sage_repo: - required: false - type: string - sage_trac_git: - required: false - type: string - sage_trac_ticket: - required: false - type: string - sage_ref: - required: false - type: string - -jobs: - stage: - env: - MAKE: make -j8 - SAGE_NUM_THREADS: 3 - CYGWIN: winsymlinks:native - EXTRA_CONFIGURE_ARGS: --enable-fat-binary - SAGE_LOCAL: ${{ inputs.prefix }}-${{ github.sha }} - LOCAL_ARTIFACT_NAME: sage-local-commit-${{ github.sha }}-${{ inputs.toxenv }} - LOGS_ARTIFACT_NAME: logs-commit-${{ github.sha }}-${{ inputs.toxenv }} - - runs-on: windows-latest - - steps: - - run: | - git config --global core.autocrlf false - git config --global core.symlinks true - - - name: install cygwin with choco - shell: bash {0} - run: | - choco --version - choco install git python39 python39-pip --source cygwin - - - name: Check out SageMath - uses: actions/checkout@v4 - with: - repository: ${{ inputs.sage_repo }} - ref: ${{ inputs.sage_ref }} - fetch-depth: 2000 - - - name: Check out git-trac-command - uses: actions/checkout@v4 - with: - repository: sagemath/git-trac-command - path: git-trac-command - if: inputs.sage_trac_git != '' - - name: Check out SageMath from trac.sagemath.org - shell: bash {0} - # Random sleep and retry to limit the load on trac.sagemath.org - run: | - git config --global user.email "ci-sage@example.com" - git config --global user.name "ci-sage workflow" - if [ ! -d .git ]; then git init; fi; git remote add trac ${{ inputs.sage_trac_git }} && x=1 && while [ $x -le 5 ]; do x=$(( $x + 1 )); sleep $(( $RANDOM % 60 + 1 )); if git-trac-command/git-trac fetch ${{ inputs.sage_trac_ticket }}; then git merge FETCH_HEAD || echo "(ignored)"; exit 0; fi; sleep 40; done; exit 1 - if: inputs.sage_trac_git != '' - - - name: Download upstream artifact - uses: actions/download-artifact@v3 - with: - path: upstream - name: ${{ inputs.upstream_artifact }} - if: inputs.upstream_artifact - - name: Update Sage packages from upstream artifact - run: | - C:\\tools\\cygwin\\bin\\bash -l -c 'cd $(cygpath -u "$GITHUB_WORKSPACE") && git config --global --add safe.directory $(pwd) && ls -l upstream/ && export PATH="$(pwd)/build/bin:$PATH:/usr/local/bin:/usr/bin" && (cd upstream && bash -x update-pkgs.sh) && git diff' - if: inputs.upstream_artifact - - - name: Download sage-local artifact - uses: actions/download-artifact@v3 - with: - name: ${{ env.LOCAL_ARTIFACT_NAME }} - path: C:\\tools\\cygwin\\tmp - if: inputs.previous_stages - - name: Extract sage-local artifact - run: | - C:\\tools\\cygwin\\bin\\dash -l -c 'cd $(cygpath -u "$GITHUB_WORKSPACE") && .github/workflows/extract-sage-local.sh /tmp/sage-local-*.tar && tar --create --listed-incremental=/tmp/sage-local.snar --file /dev/null "${{ env.SAGE_LOCAL }}"' - if: inputs.previous_stages - - name: tox - run: | - C:\\tools\\cygwin\\bin\\bash -l -x -c 'cat /proc/cpuinfo' - C:\\tools\\cygwin\\bin\\bash -l -x -c 'python3.9 -m pip install tox' - C:\\tools\\cygwin\\bin\\bash -l -x -c 'cd $(cygpath -u "$GITHUB_WORKSPACE") && PREFIX="${{ env.SAGE_LOCAL }}" TARGETS_PRE="${{ inputs.targets_pre }}" TARGETS_OPTIONAL="${{ inputs.targets_optional }}" tox -e ${{ inputs.toxenv }} -- ${{ inputs.targets }}' - - name: Prepare logs artifact - run: | - C:\\tools\\cygwin\\bin\\bash -l -c 'cd $(cygpath -u "$GITHUB_WORKSPACE") && mkdir -p "artifacts/$LOGS_ARTIFACT_NAME"; for a in "${{ env.SAGE_LOCAL }}"/var/tmp/sage/build/*; do if [ -d "$a" ]; then tar -c --remove-files -f "artifacts/$LOGS_ARTIFACT_NAME/"$(basename "$a")".tar" "$a"; fi; done; cp -r logs/* "artifacts/$LOGS_ARTIFACT_NAME"' - if: always() - - uses: actions/upload-artifact@v3 - with: - path: artifacts - name: ${{ env.LOGS_ARTIFACT_NAME }} - if: always() - - name: Print out logs for immediate inspection - # The markup in the output is a GitHub Actions logging command - # https://help.github.com/en/actions/automating-your-workflow-with-github-actions/development-tools-for-github-actions - shell: bash - run: | - find "artifacts/$LOGS_ARTIFACT_NAME" -type f -name "*.log" -exec sh -c 'if tail -20 "{}" 2>/dev/null | grep "^Error" >/dev/null; then echo :":"error file={}:":" ==== LOG FILE {} CONTAINS AN ERROR ====; cat {} ; fi' \; - if: always() - - name: Prepare sage-local artifact - # We specifically use the cygwin tar so that symlinks are saved/restored correctly on Windows. - # We remove the $SAGE_LOCAL/lib64 link, which will be recreated by the next stage. - run: | - C:\\tools\\cygwin\\bin\\bash -l -c 'cd $(cygpath -u "$GITHUB_WORKSPACE") && rm -f "${{ env.SAGE_LOCAL }}"/lib64; tar -cf /tmp/sage-local-${{ inputs.stage }}.tar --listed-incremental=/tmp/sage-local.snar "${{ env.SAGE_LOCAL }}"' - if: always() - - uses: actions/upload-artifact@v3 - # upload-artifact@v2 does not support whitespace in file names. - # so we tar up the directory ourselves - with: - path: C:\\tools\\cygwin\\tmp\\sage-local-${{ inputs.stage }}.tar - name: ${{ env.LOCAL_ARTIFACT_NAME }} - if: always() diff --git a/.github/workflows/extract-sage-local.sh b/.github/workflows/extract-sage-local.sh index 1d4928aa5bb..cd689926f9d 100755 --- a/.github/workflows/extract-sage-local.sh +++ b/.github/workflows/extract-sage-local.sh @@ -8,7 +8,6 @@ fi # Show all tar files ls -l $* -# Cygwin note: We specifically use the cygwin tar so that symlinks are saved/restored correctly on Windows. for a in $*; do echo Extracting $a (cd / && tar xf -) < $a diff --git a/COPYING.txt b/COPYING.txt index d5c28eacead..f1282bc4890 100644 --- a/COPYING.txt +++ b/COPYING.txt @@ -1229,9 +1229,7 @@ The following software used with SINGULAR have their own copyright: the omalloc library, the readline library, the Gnu Multiple Precision Library (GMP), NTL: A Library for doing Number Theory (NTL), the Multi Protocol library (MP), the Singular-Factory library, the -Singular-libfac library, surfex, and, for the Windows distributions the -Cygwin DLL and the Cygwin tools (Cygwin), and the XEmacs editor -(XEmacs). +Singular-libfac library, surfex, and the XEmacs editor (XEmacs). Their copyrights and licenses can be found in the accompanying files COPYING which are distributed along with these packages. (Since diff --git a/build/pkgs/ecl/spkg-install.in b/build/pkgs/ecl/spkg-install.in index 72083337942..1eb218a2f28 100644 --- a/build/pkgs/ecl/spkg-install.in +++ b/build/pkgs/ecl/spkg-install.in @@ -1,12 +1,5 @@ cd src -if [ "$UNAME" = "CYGWIN" ]; then - # Some of ECL's sources rely on GNU-isms that are allowed by default on - # most glibcs, but not in newlib; https://github.com/sagemath/sage/issues/25057 - CFLAGS="$CFLAGS -D_GNU_SOURCE" - CXXFLAGS="$CXXFLAGS -D_GNU_SOURCE" -fi - export CFLAGS export CXXFLAGS export LDFLAGS diff --git a/build/pkgs/eclib/spkg-install.in b/build/pkgs/eclib/spkg-install.in index 1611cfdd27d..2a83bdb5235 100644 --- a/build/pkgs/eclib/spkg-install.in +++ b/build/pkgs/eclib/spkg-install.in @@ -10,9 +10,6 @@ echo "would interfere with new builds..." rm -f "$SAGE_LOCAL"/lib/lib{curvesntl,g0nntl,jcntl,rankntl,mwrank}.* # Delete autotools libraries: rm -f "$SAGE_LOCAL"/lib/lib{e,j}c.* -if [ "$UNAME" = "CYGWIN" ]; then - rm -f "$SAGE_LOCAL"/lib/cyg{e,j}c-*.dll -fi echo "Deleting old include directory..." rm -rf "$SAGE_LOCAL"/include/eclib/ diff --git a/build/pkgs/ecm/spkg-install.in b/build/pkgs/ecm/spkg-install.in index ce58949c8ee..edc6bb2df5f 100644 --- a/build/pkgs/ecm/spkg-install.in +++ b/build/pkgs/ecm/spkg-install.in @@ -73,12 +73,6 @@ else echo "to, or '--with-pic' was given in ECM_CONFIGURE." fi -if [ "$UNAME" == "CYGWIN" ]; then - # Force shared library build only on Cygwin; it will not build otherwise - ECM_CONFIGURE="$ECM_CONFIGURE --enable-shared --disable-static" -fi - - if [ "$SAGE_DEBUG" = yes ]; then # Add debug symbols and disable optimization: echo >&2 "Warning: Setting SAGE_DEBUG=yes completely disables optimization." diff --git a/build/pkgs/fplll/spkg-check.in b/build/pkgs/fplll/spkg-check.in index 4ebb7d714c1..27cd9419538 100644 --- a/build/pkgs/fplll/spkg-check.in +++ b/build/pkgs/fplll/spkg-check.in @@ -1,8 +1,2 @@ cd src - -if [ "$UNAME" = "CYGWIN" ]; then - echo "Disable parallel testing on Cygwin" - MAKE="$MAKE -j1" -fi - $MAKE check diff --git a/build/pkgs/fplll/spkg-install.in b/build/pkgs/fplll/spkg-install.in index dda663d433c..68c0cb70ad2 100644 --- a/build/pkgs/fplll/spkg-install.in +++ b/build/pkgs/fplll/spkg-install.in @@ -2,20 +2,10 @@ cd src || exit INCLUDES="-I$SAGE_LOCAL/include/" -if [ "$UNAME" = "CYGWIN" ]; then - CXXFLAGS="$CXXFLAGS -std=gnu++11" -fi CXXFLAGS="$CXXFLAGS -fPIC $INCLUDES -L$SAGE_LOCAL/lib" CPPFLAGS="$INCLUDES" CONFIGUREFLAGS="--prefix=$SAGE_LOCAL --libdir=$SAGE_LOCAL/lib" -if [ "$UNAME" = "CYGWIN" ]; then - echo "Disable parallel building on Cygwin" - MAKE="$MAKE -j1" - export MAKE - CONFIGUREFLAGS="$CONFIGUREFLAGS --disable-recursive-enum" -fi - if [ "x$SAGE_DEBUG" = "xyes" ]; then CONFIGUREFLAGS="$CONFIGUREFLAGS --enable-debug" fi diff --git a/build/pkgs/gc/spkg-install.in b/build/pkgs/gc/spkg-install.in index f42295bb279..414513794b0 100644 --- a/build/pkgs/gc/spkg-install.in +++ b/build/pkgs/gc/spkg-install.in @@ -2,11 +2,6 @@ cd src GC_CONFIGURE="--enable-large-config" -if [ "$UNAME" = "CYGWIN" ]; then - # See https://github.com/sagemath/sage/issues/22694 - GC_CONFIGURE="$GC_CONFIGURE --enable-threads=posix --enable-handle-fork" -fi - sdh_configure $GC_CONFIGURE sdh_make sdh_make_install diff --git a/build/pkgs/gf2x/SPKG.rst b/build/pkgs/gf2x/SPKG.rst index d8b4694eb45..b31f78b7c48 100644 --- a/build/pkgs/gf2x/SPKG.rst +++ b/build/pkgs/gf2x/SPKG.rst @@ -35,8 +35,6 @@ Special Update/Build Instructions Patches ~~~~~~~ -- 0001-Trac-15014-Let-gf2x-build-a-shared-library-on-Cygwin.patch: pass - -no-undefined flag to libtool. - 0002-tr-portability.patch: backport upstream fix for non-portable tr use - 0003-Improve-detection-of-sse2-support.patch: backport upstream diff --git a/build/pkgs/giac/spkg-install.in b/build/pkgs/giac/spkg-install.in index c20671a7b88..e3eb86e6034 100644 --- a/build/pkgs/giac/spkg-install.in +++ b/build/pkgs/giac/spkg-install.in @@ -51,10 +51,6 @@ if [ "$UNAME" = "Darwin" ]; then echo "OS X Building without Native Language Support" DISABLENLS="--disable-nls" fi -if [ "$UNAME" = "CYGWIN" ]; then - export ac_cv_lib_nauty_main=no - export ac_cv_header_nauty_naututil_h=no -fi sdh_configure --disable-gui --disable-ao "$DISABLENLS" --enable-png=no --disable-samplerate --disable-static --disable-micropy --disable-quickjs diff --git a/build/pkgs/glpk/SPKG.rst b/build/pkgs/glpk/SPKG.rst index 4cabfae0ba1..dde5e8ce8fc 100644 --- a/build/pkgs/glpk/SPKG.rst +++ b/build/pkgs/glpk/SPKG.rst @@ -57,9 +57,6 @@ Patches - All patches below are currently used by spkg-src - src/01-zlib.patch: don't build the included zlib library. -- src/02-cygwin_sharedlib.patch: Let a shared library be built on - Cygwin by - passing the -no-undefined flag to libtool. The numbering reflect the order in which they have been created from glpk pristine's sources diff --git a/build/pkgs/glpk/patches/src/02-cygwin_sharedlib.patch b/build/pkgs/glpk/patches/src/02-cygwin_sharedlib.patch deleted file mode 100644 index c554216ab56..00000000000 --- a/build/pkgs/glpk/patches/src/02-cygwin_sharedlib.patch +++ /dev/null @@ -1,56 +0,0 @@ -diff --git a/configure.ac b/configure.ac -index a65361a..2e86030 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -54,7 +54,7 @@ define([AC_LIBTOOL_LANG_GCJ_CONFIG], [:]) - dnl Check for programs - AC_PROG_CC - AC_PROG_INSTALL --AC_PROG_LIBTOOL -+LT_INIT([win32-dll]) - - dnl Check for math library - AC_CHECK_LIB([m], [exp]) -@@ -101,6 +101,42 @@ else - AC_MSG_RESULT([no]) - fi - -+dnl Configs for Windows DLLs. -+dnl libtool requires "-no-undefined" for win32 dll -+case $host_os in -+ cygwin* | mingw*) -+ if test "$enable_shared" = yes; then -+ NOUNDEFINED=" -no-undefined" -+ if test "$with_gmp" = yes; then -+ AC_MSG_CHECKING(for DLL/static GMP) -+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ -+#include "gmp.h" -+#if !__GMP_LIBGMP_DLL -+# error "Dead man" -+error -+#endif -+ ]], [[]])],[AC_MSG_RESULT(DLL)],[ -+ AC_MSG_RESULT(static) -+ AC_MSG_ERROR([gmp.h isn't a DLL: use --enable-static --disable-shared]) ]) -+ fi -+ fi -+ if test "$enable_static" = yes; then -+ if test "$with_gmp" = yes; then -+ AC_MSG_CHECKING(for DLL/static GMP) -+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ -+#include "gmp.h" -+#if __GMP_LIBGMP_DLL -+# error "Dead man" -+error -+#endif -+ ]], [[]])],[AC_MSG_RESULT(static)],[ -+ AC_MSG_RESULT(DLL) -+ AC_MSG_ERROR([gmp.h is a DLL: use --disable-static --enable-shared]) ]) -+ fi -+ fi -+ ;; -+esac -+ - case $host_os in - darwin* | macosx*) - LIBIODBC="libiodbc.dylib" diff --git a/build/pkgs/gmp/spkg-install.in b/build/pkgs/gmp/spkg-install.in index fa53576f8c6..27ebbd88c6b 100644 --- a/build/pkgs/gmp/spkg-install.in +++ b/build/pkgs/gmp/spkg-install.in @@ -122,15 +122,8 @@ export ABI CFLAGS CXXFLAGS LDFLAGS # Partially redundant, but safe(r). GMP_CONFIGURE="--enable-shared $GMP_CONFIGURE" # Also build the static library to be used by e.g. ECM -# unless we are on Cygwin where we can only build a shared -# or a static library but not both: -if [ "$UNAME" = "CYGWIN" ]; then - echo "Building GMP with the C++ interface and (only) shared libraries." - GMP_CONFIGURE="--enable-cxx $GMP_CONFIGURE --disable-static" -else - echo "Building GMP with the C++ interface and (also) static libraries." - GMP_CONFIGURE="--enable-cxx --enable-static $GMP_CONFIGURE" -fi +echo "Building GMP with the C++ interface and (also) static libraries." +GMP_CONFIGURE="--enable-cxx --enable-static $GMP_CONFIGURE" # If SAGE_FAT_BINARY is enabled, then add --enable-fat to configure # options on Linux x86 systems. On other systems, fat binaries are not diff --git a/build/pkgs/jmol/jmol b/build/pkgs/jmol/jmol index 4c5710099f0..fe1114e27b5 100755 --- a/build/pkgs/jmol/jmol +++ b/build/pkgs/jmol/jmol @@ -7,11 +7,6 @@ if [ ! -f "$JMOL_JAR" ]; then echo >&2 "Jmol.jar not found in $JMOL_HOME" fi -if [ "$UNAME" = "CYGWIN" ]; then - # We are using the native Windows Java so we must provide Windows paths - JMOL_JAR="$(cygpath -w "$JMOL_JAR")" -fi - # May also pass arguments to the Java interpreter, in which case they # should come first in the argument list java -Xmx512m -jar "$JMOL_JAR" $@ diff --git a/build/pkgs/libatomic_ops/spkg-install.in b/build/pkgs/libatomic_ops/spkg-install.in index 4953f4b0c1a..bcf36b76c24 100644 --- a/build/pkgs/libatomic_ops/spkg-install.in +++ b/build/pkgs/libatomic_ops/spkg-install.in @@ -5,10 +5,6 @@ if [ "$SAGE64" = "yes" ]; then export CFLAGS="-m64 $CFLAGS" fi -if [ "$UNAME" = "CYGWIN" ]; then - LIBATOMIC_OPS_CONFIGURE="$LIBATOMIC_OPS_CONFIGURE --enable-shared --disable-static" -fi - sdh_configure --enable-static $LIBATOMIC_OPS_CONFIGURE sdh_make sdh_make_install diff --git a/build/pkgs/libpng/spkg-install.in b/build/pkgs/libpng/spkg-install.in index 75a47f7fca5..95326748188 100644 --- a/build/pkgs/libpng/spkg-install.in +++ b/build/pkgs/libpng/spkg-install.in @@ -6,11 +6,6 @@ export CFLAGS="$CFLAGS -fPIC -g" # Pick up Sage's zlib: export CPPFLAGS="-I$SAGE_LOCAL/include $CPPFLAGS" -# Needed to generate a correct import library -if [ "$UNAME" = "CYGWIN" ]; then - MAKE="$MAKE SYMBOL_PREFIX= " -fi - cd src sdh_configure --enable-shared=yes diff --git a/build/pkgs/mcqd/spkg-install.in b/build/pkgs/mcqd/spkg-install.in index 38e13b69bfc..a866618913e 100644 --- a/build/pkgs/mcqd/spkg-install.in +++ b/build/pkgs/mcqd/spkg-install.in @@ -3,11 +3,6 @@ grep -v "std..cout.*current max" mcqd.h > mcqd2.h mv mcqd2.h mcqd.h case "$UNAME" in -"CYGWIN") - SO_NAME="cygmcqd.dll" - IMPLIB_NAME="libmcqd.dll.a" - MCQD_LDFLAGS="-Wl,--out-implib,$IMPLIB_NAME" - ;; "Darwin") SO_NAME="libmcqd.dylib" ;; @@ -19,12 +14,7 @@ esac $CXX -fPIC -O3 -c mcqd.cpp -o mcqd.o $CXX -shared mcqd.o -o "$SO_NAME" $MCQD_LDFLAGS -if [ "$UNAME" = "CYGWIN" ]; then - sdh_install "$SO_NAME" "$SAGE_LOCAL/bin/" - sdh_install "$IMPLIB_NAME" "$SAGE_LOCAL/lib/" -else - sdh_install "$SO_NAME" "$SAGE_LOCAL/lib/" -fi +sdh_install "$SO_NAME" "$SAGE_LOCAL/lib/" if [ "$UNAME" = "Darwin" ]; then install_name_tool -id ${SAGE_LOCAL}/lib/$SO_NAME \ diff --git a/build/pkgs/mpc/spkg-install.in b/build/pkgs/mpc/spkg-install.in index 3ee37482fd4..b260b531f17 100644 --- a/build/pkgs/mpc/spkg-install.in +++ b/build/pkgs/mpc/spkg-install.in @@ -8,10 +8,6 @@ unset CFLAGS EXTRA="" -if [ $UNAME = "CYGWIN" ]; then - EXTRA="--disable-static --enable-shared" -fi - # Building sdh_configure $SAGE_CONFIGURE_GMP $SAGE_CONFIGURE_MPFR $EXTRA sdh_make diff --git a/build/pkgs/mpfr/spkg-install.in b/build/pkgs/mpfr/spkg-install.in index fbd4c59d541..a0ecd15ec43 100644 --- a/build/pkgs/mpfr/spkg-install.in +++ b/build/pkgs/mpfr/spkg-install.in @@ -48,10 +48,6 @@ mpfr_configure() # currently causes problems on a few systems: SAGE_CONF_OPTS="--disable-thread-safe" - if [ "$UNAME" = CYGWIN ]; then - SAGE_CONF_OPTS="$SAGE_CONF_OPTS --disable-static --enable-shared" - fi - ########################################################################### # Pre-configure MPFR with CC and CFLAGS unset: ########################################################################### diff --git a/build/pkgs/ntl/spkg-install.in b/build/pkgs/ntl/spkg-install.in index db04aa6b546..a26c3b5026e 100644 --- a/build/pkgs/ntl/spkg-install.in +++ b/build/pkgs/ntl/spkg-install.in @@ -31,9 +31,6 @@ ntl_configure() echo "Setting SHAREDFLAGS to '-fno-common'" SHAREDFLAGS="-fno-common" ;; - CYGWIN) - LIBTOOL_LINK_FLAGS="-no-undefined" - ;; esac # If SAGE_FAT_BINARY is enabled we don't want NTL to be built with CPU- diff --git a/build/pkgs/numpy/spkg-install.in b/build/pkgs/numpy/spkg-install.in index baebfd466a7..38f74b9c7a4 100644 --- a/build/pkgs/numpy/spkg-install.in +++ b/build/pkgs/numpy/spkg-install.in @@ -7,11 +7,6 @@ set -e # -- this also affects numpy export CXX=$(echo "$CXX" | sed 's/-std=[a-z0-9+]*//g') -if [ "$UNAME" = "CYGWIN" ]; then - # Trac #30643 - export CPPFLAGS="${CPPFLAGS} -D_GNU_SOURCE" -fi - if [ "$SAGE_FAT_BINARY" = "yes" ]; then export NUMPY_FCONFIG="--cpu-baseline=NONE" else diff --git a/build/pkgs/palp/spkg-install.in b/build/pkgs/palp/spkg-install.in index f594cc307a9..e31d133daf2 100644 --- a/build/pkgs/palp/spkg-install.in +++ b/build/pkgs/palp/spkg-install.in @@ -5,11 +5,6 @@ cd src mv Global.h Global.h-template CFLAGS="-O3 -W -Wall $CFLAGS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE" -# On Cygwin the stack size is ridiculously low by default, so that the nef -# executable which allocates everything on the stack for speed reason blows it -if [ "$UNAME" = "CYGWIN" ] ; then - CFLAGS="$CFLAGS -Wl,--stack,8000000" -fi # Undefine NDEBUG. Palp source has assert statements and preprocessing them # away changes the syntactical meaning of the program. diff --git a/build/pkgs/patch/spkg-install.in b/build/pkgs/patch/spkg-install.in index 5e86a881ff1..57f66569cb0 100644 --- a/build/pkgs/patch/spkg-install.in +++ b/build/pkgs/patch/spkg-install.in @@ -10,7 +10,3 @@ cd src sdh_configure sdh_make sdh_make_install - -if [ "$UNAME" = "CYGWIN" ] ; then - cp ../patch.exe.manifest "$SAGE_DESTDIR$SAGE_LOCAL/bin/" -fi diff --git a/build/pkgs/ppl/spkg-install.in b/build/pkgs/ppl/spkg-install.in index 1f3162a6269..c986b3a20c6 100644 --- a/build/pkgs/ppl/spkg-install.in +++ b/build/pkgs/ppl/spkg-install.in @@ -17,12 +17,5 @@ if ! (sdh_configure --enable-interfaces=c,c++ $SAGE_CONFIGURE_GMP \ sdh_configure --enable-interfaces=c++ $SAGE_CONFIGURE_GMP $PPL_CONFIGURE fi -# Workaround to disable PPL's "watchdog timer", preventing it from clobbering -# Cysignals' SIGALRM handler on Cygwin; see -# https://github.com/sagemath/sage/issues/21190 -if [ "$UNAME" = "CYGWIN" ]; then - sed -i 's/#define HAVE_DECL_SETITIMER 1/#define HAVE_DECL_SETITIMER 0/' config.h -fi - sdh_make sdh_make_install From 8acab5a3293abd3efcf762948ecde8e78fbbe4ce Mon Sep 17 00:00:00 2001 From: Dima Pasechnik Date: Sun, 26 Nov 2023 22:45:07 +0000 Subject: [PATCH 05/23] more removals --- build/pkgs/iconv/spkg-check.in | 8 +-- build/pkgs/iconv/spkg-install.in | 16 ++---- .../pkgs/pari/patches/prot_none_cygwin.patch | 49 ------------------- .../pkgs/python3/patches/cygwin-ctypes.patch | 16 ------ build/pkgs/python3/spkg-install.in | 4 -- 5 files changed, 9 insertions(+), 84 deletions(-) delete mode 100644 build/pkgs/pari/patches/prot_none_cygwin.patch delete mode 100644 build/pkgs/python3/patches/cygwin-ctypes.patch diff --git a/build/pkgs/iconv/spkg-check.in b/build/pkgs/iconv/spkg-check.in index c0e91eff164..fe8b527f6aa 100644 --- a/build/pkgs/iconv/spkg-check.in +++ b/build/pkgs/iconv/spkg-check.in @@ -1,4 +1,4 @@ -# Only test iconv on Solaris, HP-UX and Cygwin, as those are the only +# Only test iconv on Solaris, HP-UX, as those are the only # platforms on which the iconv shipped with Sage will be installed. On # other platforms Sage uses the system's iconv. @@ -13,7 +13,7 @@ SunOS) echo " http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6550204" esac case "$UNAME" in -CYGWIN|HP-UX|SunOS) +HP-UX|SunOS) cd src @@ -26,10 +26,10 @@ CYGWIN|HP-UX|SunOS) echo "All the tests for iconv passed." exit 0 ;; -*) # Not CYGWIN, HP-UX or SunOS (Solaris) +*) # Not HP-UX or SunOS (Solaris) echo "iconv was not to be tested, since Sage will use the system's iconv" echo "and not the one shipped with Sage." - echo "The iconv supplied by Sage is only used on Cygwin, HP-UX and Solaris." + echo "The iconv supplied by Sage is only used on HP-UX and Solaris." exit 0 esac diff --git a/build/pkgs/iconv/spkg-install.in b/build/pkgs/iconv/spkg-install.in index 89b401c70e9..3c7a3ff3171 100644 --- a/build/pkgs/iconv/spkg-install.in +++ b/build/pkgs/iconv/spkg-install.in @@ -1,22 +1,16 @@ -# Only build iconv on Solaris, HP-UX and Cygwin. See +# Only build iconv on Solaris or HP-UX. See # https://github.com/sagemath/sage/issues/8567 and # https://github.com/sagemath/sage/issues/9603 # for details. case "$UNAME" in -CYGWIN|HP-UX|SunOS) - echo "iconv will be installed as the operating system is Cygwin, HP-UX or Solaris." +HP-UX|SunOS) + echo "iconv will be installed as the operating system is HP-UX or Solaris." echo "These systems either lack iconv, or do not have a sufficiently capable" echo "version of iconv. See:" echo " https://github.com/sagemath/sage/issues/8567" echo " https://github.com/sagemath/sage/issues/9603" - # Disable NLS on Cygwin to be able to build libiconv without the Cygwin - # libiconv package. - if [ "$UNAME" = "CYGWIN" ]; then - ICONV_CONFIGURE="--disable-nls $ICONV_CONFIGURE" - fi - cd src sdh_configure $ICONV_CONFIGURE @@ -24,9 +18,9 @@ CYGWIN|HP-UX|SunOS) sdh_make_install exit 0 ;; -*) # Not CYGWIN, HP-UX or SunOS (Solaris) +*) # Not HP-UX or SunOS (Solaris) echo "iconv will not be installed, as we only need to build it on" - echo "Solaris, HP-UX and Cygwin, as the system's iconv will be used" + echo "Solaris or HP-UX, as the system's iconv will be used" echo "on other platforms, rather than the one shipped with Sage." echo "See:" echo " https://github.com/sagemath/sage/issues/8567" diff --git a/build/pkgs/pari/patches/prot_none_cygwin.patch b/build/pkgs/pari/patches/prot_none_cygwin.patch deleted file mode 100644 index 16340dd492b..00000000000 --- a/build/pkgs/pari/patches/prot_none_cygwin.patch +++ /dev/null @@ -1,49 +0,0 @@ -Fix pari_mainstack_mreset() on Cygwin - -Rejected upstream because Cygwin is considered a dead platform - -diff --git a/src/language/init.c b/src/language/init.c -index 8473a3b..d9993cc 100644 ---- a/src/language/init.c -+++ b/src/language/init.c -@@ -884,8 +884,8 @@ pari_mainstack_mfree(void *s, size_t size) - /* Completely discard the memory mapped between the addresses "from" - * and "to" (which must be page-aligned). - * -- * We use mmap() with PROT_NONE, which means that the underlying memory -- * is freed and that the kernel should not commit memory for it. We -+ * We (generally) use mmap() with PROT_NONE, which means that the underlying -+ * memory is freed and that the kernel should not commit memory for it. We - * still keep the mapping such that we can change the flags to - * PROT_READ|PROT_WRITE later. - * -@@ -893,7 +893,12 @@ pari_mainstack_mfree(void *s, size_t size) - * calling mprotect(..., PROT_NONE) because the latter will keep the - * memory committed (this is in particular relevant on Linux with - * vm.overcommit = 2). This remains true even when calling -- * madvise(..., MADV_DONTNEED). */ -+ * madvise(..., MADV_DONTNEED). -+ * -+ * Unfortunately, the opposite is true on Cygwin--there, calling -+ * mprotect(..., PROT_NONE) does in fact decommit / free the mapped -+ * memory. Meanwhile there is a known bug that prevents already mapped -+ * memory to be re-mapped with MAP_FIXED and different protection flags. */ - static void - pari_mainstack_mreset(pari_sp from, pari_sp to) - { -@@ -902,11 +907,15 @@ pari_mainstack_mreset(pari_sp from, pari_sp to) - if (!s) return; - - addr = (void*)from; -+#ifdef __CYGWIN__ -+ if (mprotect(addr, s, PROT_NONE)) pari_err(e_MEM); -+#else - BLOCK_SIGINT_START; - res = mmap(addr, s, PROT_NONE, - MAP_FIXED|MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0); - BLOCK_SIGINT_END; - if (res != addr) pari_err(e_MEM); -+#endif - } - - /* Commit (make available) the virtual memory mapped between the diff --git a/build/pkgs/python3/patches/cygwin-ctypes.patch b/build/pkgs/python3/patches/cygwin-ctypes.patch deleted file mode 100644 index d3a0cc9053e..00000000000 --- a/build/pkgs/python3/patches/cygwin-ctypes.patch +++ /dev/null @@ -1,16 +0,0 @@ -This patch is needed for the ctypes library to get the correct name of the -libpython DLL, and is related to https://bugs.python.org/issue13756 -diff --git a/Lib/ctypes/__init__.py.orig b/Lib/ctypes/__init__.py -index f870968..8c87b7c 100644 ---- a/Lib/ctypes/__init__.py -+++ b/Lib/ctypes/__init__.py -@@ -431,7 +431,8 @@ pydll = LibraryLoader(PyDLL) - if _os.name == "nt": - pythonapi = PyDLL("python dll", None, _sys.dllhandle) - elif _sys.platform == "cygwin": -- pythonapi = PyDLL("libpython%d.%d.dll" % _sys.version_info[:2]) -+ import sysconfig as _sysconfig -+ pythonapi = PyDLL(_sysconfig.get_config_var('DLLLIBRARY')) - else: - pythonapi = PyDLL(None) - diff --git a/build/pkgs/python3/spkg-install.in b/build/pkgs/python3/spkg-install.in index eae0f39647a..caf91d20c6d 100644 --- a/build/pkgs/python3/spkg-install.in +++ b/build/pkgs/python3/spkg-install.in @@ -59,8 +59,4 @@ fi if [ "$UNAME" = "Darwin" ] && \ [ `uname -r | cut '-d.' -f1` -gt 9 ]; then rm -f "${SAGE_DESTDIR}${PYTHON_CONFIG_DIR}/libpython${PYTHON_LDVERSION}.a" -elif [ "$UNAME" = "CYGWIN" ]; then - # See https://github.com/sagemath/sage/issues/20437 - ln -sf "${PYTHON_CONFIG_DIR}/libpython${PYTHON_LDVERSION}.dll.a" \ - "${SAGE_DESTDIR_LOCAL}/lib/libpython${PYTHON_LDVERSION}.dll.a" fi From df6204810d6ec91c72c6a6616a0ef12390f1de98 Mon Sep 17 00:00:00 2001 From: Dima Pasechnik Date: Sun, 26 Nov 2023 23:05:38 +0000 Subject: [PATCH 06/23] remove easy cygwin things in build and tox.ini --- build/pkgs/giac/patches/cygwin-icas.patch | 23 ------------------- .../ppl/patches/cygwin-weak-symbols.patch | 14 ----------- build/pkgs/readline/spkg-install.in | 3 --- build/pkgs/rpy2/SPKG.rst | 9 -------- build/pkgs/singular/spkg-install.in | 18 +++------------ build/pkgs/tachyon/spkg-install.in | 12 ++-------- build/pkgs/zlib/SPKG.rst | 8 ------- build/pkgs/zlib/patches/cygwin-gzopen_w.patch | 13 ----------- .../pkgs/zlib/patches/cygwin-windef.diff_bin | 9 -------- build/pkgs/zlib/spkg-install.in | 21 ++++------------- tox.ini | 4 ---- 11 files changed, 9 insertions(+), 125 deletions(-) delete mode 100644 build/pkgs/giac/patches/cygwin-icas.patch delete mode 100644 build/pkgs/ppl/patches/cygwin-weak-symbols.patch delete mode 100644 build/pkgs/zlib/patches/cygwin-gzopen_w.patch delete mode 100644 build/pkgs/zlib/patches/cygwin-windef.diff_bin diff --git a/build/pkgs/giac/patches/cygwin-icas.patch b/build/pkgs/giac/patches/cygwin-icas.patch deleted file mode 100644 index 56321e78b26..00000000000 --- a/build/pkgs/giac/patches/cygwin-icas.patch +++ /dev/null @@ -1,23 +0,0 @@ -Disable threaded eval function on Cygwin since it's currently -buggy, and not strictly needed in the first place since we don't -build giac with FLTK support; see https://github.com/sagemath/sage/issues/27385 ---- a/src/icas.cc 2018-12-22 17:08:24.000000000 +0100 -+++ b/src/icas.cc 2019-03-06 14:38:19.814030200 +0100 -@@ -160,7 +160,7 @@ - using namespace giac; - #define STDIN_FILENO 0 - namespace xcas { -- /* -+#ifdef __CYGWIN__ - void icas_eval(giac::gen & g,giac::gen & gg,int & reading_file,std::string &filename,giac::context * contextptr){ - gg=protecteval(g,10,contextptr); - } -@@ -168,7 +168,7 @@ - bool fltk_view(const giac::gen & g,giac::gen & ge,const std::string & filename,std::string & figure_filename,int file_type,const giac::context *contextptr){ - return false; - } -- */ -+#endif - } - - #else diff --git a/build/pkgs/ppl/patches/cygwin-weak-symbols.patch b/build/pkgs/ppl/patches/cygwin-weak-symbols.patch deleted file mode 100644 index 535a009f82d..00000000000 --- a/build/pkgs/ppl/patches/cygwin-weak-symbols.patch +++ /dev/null @@ -1,14 +0,0 @@ -weak symbols don't work properly in 64-bit Cygwin and should not -be used (even though it will compile with __attribute__((weak)), -it will not linke; see https://github.com/sagemath/sage/issues/16152 ---- a/src/assertions.hh 2016-07-26 16:21:22.591434100 +0200 -+++ b/src/assertions.hh 2016-07-26 16:35:09.500888200 +0200 -@@ -98,7 +98,7 @@ - - namespace Parma_Polyhedra_Library { - --#if PPL_CXX_SUPPORTS_ATTRIBUTE_WEAK -+#if PPL_CXX_SUPPORTS_ATTRIBUTE_WEAK && ! (defined(__CYGWIN__) && defined(__x86_64__)) - #define PPL_WEAK_NORETURN __attribute__((weak, noreturn)) - #else - #define PPL_WEAK_NORETURN __attribute__((noreturn)) diff --git a/build/pkgs/readline/spkg-install.in b/build/pkgs/readline/spkg-install.in index 126c4372169..69b4e686d75 100644 --- a/build/pkgs/readline/spkg-install.in +++ b/build/pkgs/readline/spkg-install.in @@ -20,9 +20,6 @@ sdh_make_install case "$UNAME" in Darwin) DYLIB_NAME=libreadline.dylib;; - CYGWIN) - # It is of course very lame that readline names the file .dll.a, but that's what it does. - DYLIB_NAME=libreadline.dll.a;; OpenBSD) # Untested. (David Kirkby, 11th November 2010) # Extension changed from 6.1 to 6.2; still untested. (October 2011) diff --git a/build/pkgs/rpy2/SPKG.rst b/build/pkgs/rpy2/SPKG.rst index a4d119802f1..3ba34445021 100644 --- a/build/pkgs/rpy2/SPKG.rst +++ b/build/pkgs/rpy2/SPKG.rst @@ -21,12 +21,3 @@ Upstream Contact ---------------- - https://rpy2.bitbucket.io - -Special Update/Build Instructions ---------------------------------- - -Patches -~~~~~~~ - -- setup.patch: takes care of a few parsing issues. -- cygwin.patch: let rpy2 build on Cygwin. diff --git a/build/pkgs/singular/spkg-install.in b/build/pkgs/singular/spkg-install.in index c20def91a2f..1c24a5d7ef8 100644 --- a/build/pkgs/singular/spkg-install.in +++ b/build/pkgs/singular/spkg-install.in @@ -40,16 +40,9 @@ remove_old_version() singular_resources # 4.x and up gfan ) - if [ "$UNAME" = "CYGWIN" ]; then - for name in ${libs[*]}; do - rm -f "$SAGE_LOCAL"/bin/cyg${name}*.dll - rm -f "$SAGE_LOCAL"/lib/lib${name}*.a - done - else - for name in ${libs[*]}; do - rm -f "$SAGE_LOCAL"/lib/lib${name}* - done - fi + for name in ${libs[*]}; do + rm -f "$SAGE_LOCAL"/lib/lib${name}* + done rm -f "$SAGE_LOCAL"/lib/p_Procs_Field* # 3.x only rm -rf "$SAGE_LOCAL/share/singular" @@ -58,11 +51,6 @@ remove_old_version() config() { - if [ "$UNAME" = "CYGWIN" ]; then - # from Hans Schoenemann - https://github.com/Singular/Singular/issues/1017 - SINGULAR_CONFIGURE="$SINGULAR_CONFIGURE --disable-p-procs-dynamic --enable-p-procs-static --with-builtinmodules=gfanlib,gitfan,interval,loctriv,partialgb,syzextra,customstd,cohomo,subsets,freealgebra,systhreads --disable-cf-inline --disable-Order-module --disable-bigintm-module --disable-pyobject-module" - fi - # configure notes (dates from Singular 3.x, maybe outdated for 4.x): # 1) We really need to add --exec-prefix and --bindir as Singular # uses some weird defaults. diff --git a/build/pkgs/tachyon/spkg-install.in b/build/pkgs/tachyon/spkg-install.in index ec52842b6a5..5f0d2980dc3 100644 --- a/build/pkgs/tachyon/spkg-install.in +++ b/build/pkgs/tachyon/spkg-install.in @@ -4,9 +4,6 @@ cd "$CUR/src/unix" TARGET="" case "$UNAME" in -"CYGWIN") - TARGET=win32 - ;; "Darwin") TARGET=macosx ;; @@ -59,12 +56,7 @@ sdh_make "$TARGET" echo "Installing the Tachyon binary..." cd "$CUR" -if [ "$UNAME" = CYGWIN ]; then - binary_name=tachyon.exe -else - binary_name=tachyon -fi +binary_name=tachyon -# The '*' is a place-holder for the arch just built (e.g. 'win32' for -# Cygwin, other directories won't exist): +# The '*' is a place-holder for the arch just built: sdh_install src/compile/*/"${binary_name}" "$SAGE_LOCAL/bin" diff --git a/build/pkgs/zlib/SPKG.rst b/build/pkgs/zlib/SPKG.rst index 5a3496935cf..dd001ab087e 100644 --- a/build/pkgs/zlib/SPKG.rst +++ b/build/pkgs/zlib/SPKG.rst @@ -17,11 +17,3 @@ Upstream Contact ---------------- - http://www.zlib.net/ - -Special Update/Build Instructions ---------------------------------- - -Patches -~~~~~~~ - -- cygwin_symbols.patch: remove undefined symbols on Cygwin. diff --git a/build/pkgs/zlib/patches/cygwin-gzopen_w.patch b/build/pkgs/zlib/patches/cygwin-gzopen_w.patch deleted file mode 100644 index 3de4978c306..00000000000 --- a/build/pkgs/zlib/patches/cygwin-gzopen_w.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/gzguts.h b/gzguts.h -index 990a4d2..6378d46 100644 ---- a/gzguts.h -+++ b/gzguts.h -@@ -39,7 +39,7 @@ - # include - #endif - --#if defined(_WIN32) || defined(__CYGWIN__) -+#if defined(_WIN32) - # define WIDECHAR - #endif - diff --git a/build/pkgs/zlib/patches/cygwin-windef.diff_bin b/build/pkgs/zlib/patches/cygwin-windef.diff_bin deleted file mode 100644 index a16ef1ac239..00000000000 --- a/build/pkgs/zlib/patches/cygwin-windef.diff_bin +++ /dev/null @@ -1,9 +0,0 @@ -diff --git a/win32/zlib.def b/win32/zlib.def -index 784b138..b69fa3e 100644 ---- a/win32/zlib.def -+++ b/win32/zlib.def -@@ -91,4 +91,3 @@ EXPORTS - inflateCodesUsed - inflateResetKeep - deflateResetKeep -- gzopen_w diff --git a/build/pkgs/zlib/spkg-install.in b/build/pkgs/zlib/spkg-install.in index 6b21192934b..b70d55e02a2 100644 --- a/build/pkgs/zlib/spkg-install.in +++ b/build/pkgs/zlib/spkg-install.in @@ -1,22 +1,9 @@ cd src/ -echo "patching win32/zlib.def with a binary patch" -patch -p1 --posix --binary <"$SAGE_ROOT/build/pkgs/zlib/patches/cygwin-windef.diff_bin" -if [ "$UNAME" = CYGWIN ]; then - export BINARY_PATH="$SAGE_LOCAL/bin" - export INCLUDE_PATH="$SAGE_LOCAL/include" - export LIBRARY_PATH="$SAGE_LOCAL/lib" - cp -f win32/Makefile.gcc Makefile || \ - sdh_die "Error copying over zlib's Makefile for Cygwin." - - # We want to install shared objects - sed -i 's/SHARED_MODE=0/SHARED_MODE=1/' Makefile -else - # Trac #28890: zlib does not use a standard autoconf-generated configure - # script, so don't use the sdh_configure helper as it may have minor - # incompatibilities - ./configure --shared --prefix="$SAGE_LOCAL" --libdir="$SAGE_LOCAL/lib" || sdh_die "Error configuring $PKG_NAME" -fi +# Trac #28890: zlib does not use a standard autoconf-generated configure +# script, so don't use the sdh_configure helper as it may have minor +# incompatibilities +./configure --shared --prefix="$SAGE_LOCAL" --libdir="$SAGE_LOCAL/lib" || sdh_die "Error configuring $PKG_NAME" sdh_make sdh_make_install diff --git a/tox.ini b/tox.ini index 438c1ca8763..8e8d0852e1c 100644 --- a/tox.ini +++ b/tox.ini @@ -699,10 +699,6 @@ commands = local-conda: bash -c 'case "{env:SKIP_SYSTEM_PKG_INSTALL:}" in 1|y*|Y*);; *) {env:SETENV} && {env:CONDA_PREFIX}/bin/conda update -n base --yes conda;; esac' local-conda: bash -c 'export PATH="build/bin:$PATH" && PACKAGES=$(sage-get-system-packages conda $(sage-package list {env:SAGE_PACKAGE_LIST_ARGS}) {env:ALL_EXTRA_SAGE_PACKAGES}); {env:SETENV} && {env:CONDA_PREFIX}/bin/conda install --yes --quiet $PACKAGES' # - # local-cygwin-choco: Use choco to install cygwin packages - # - local-cygwin-choco: bash -c 'export PATH="build/bin:$PATH" && PACKAGES=$(sage-get-system-packages {env:SYSTEM} $(sage-package list {env:SAGE_PACKAGE_LIST_ARGS}) _bootstrap); /cygdrive/c/ProgramData/Chocolatey/bin/choco install $PACKAGES --source cygwin' - # # local-root: Assume we are root, run the system package commands # local-sudo: Use sudo to run the system package commands as root # From 99099b0240c6c9b5147a5fb446a819b7ed2563ed Mon Sep 17 00:00:00 2001 From: Dima Pasechnik Date: Sun, 26 Nov 2023 23:37:29 +0000 Subject: [PATCH 07/23] remove cygwin stuff in src/, pkgs/, configure.ac --- configure.ac | 1 - pkgs/sage-conf/README.rst | 4 +- pkgs/sage-docbuild/README.rst | 2 +- pkgs/sagemath-bliss/README.rst | 2 +- pkgs/sagemath-categories/README.rst | 2 +- pkgs/sagemath-coxeter3/README.rst | 2 +- pkgs/sagemath-environment/README.rst | 2 +- pkgs/sagemath-mcqd/README.rst | 2 +- pkgs/sagemath-meataxe/README.rst | 2 +- pkgs/sagemath-objects/README.rst | 2 +- pkgs/sagemath-repl/README.rst | 2 +- pkgs/sagemath-sirocco/README.rst | 2 +- pkgs/sagemath-standard/README.rst | 2 +- pkgs/sagemath-tdlib/README.rst | 2 +- src/bin/sage-env | 16 ---- src/doc/bootstrap | 2 +- src/doc/en/developer/git_setup.rst | 4 - src/doc/en/developer/packaging.rst | 3 +- src/doc/en/developer/portability_testing.rst | 7 +- src/doc/en/installation/source.rst | 91 +------------------- src/sage/cpython/__init__.py | 39 --------- src/sage/env.py | 25 ++---- src/sage/interfaces/mathematica.py | 21 ----- src/sage/libs/singular/singular.pyx | 13 ++- src/sage/misc/compat.py | 27 +----- src/sage/misc/cython.py | 86 ------------------ src/sage/misc/inline_fortran.py | 14 ++- src/sage/misc/persist.pyx | 2 - src/sage/misc/sage_ostools.pyx | 42 --------- src/sage/misc/sageinspect.py | 2 - src/sage/misc/timing.py | 3 +- src/sage/misc/viewer.py | 13 --- src/sage_docbuild/utils.py | 8 +- src/sage_setup/library_order.py | 3 +- src/sage_setup/setenv.py | 1 - 35 files changed, 42 insertions(+), 409 deletions(-) diff --git a/configure.ac b/configure.ac index 62d80bc79ca..cbd6e0241d0 100644 --- a/configure.ac +++ b/configure.ac @@ -206,7 +206,6 @@ The Sage community would also appreciate any patches you submit]]);; *-*-linux*);; *-*-darwin*);; *-*-solaris*);; -*-*-cygwin*);; # Wildcard for other unsupported platforms *) diff --git a/pkgs/sage-conf/README.rst b/pkgs/sage-conf/README.rst index 5730592e35a..590e5ba1356 100644 --- a/pkgs/sage-conf/README.rst +++ b/pkgs/sage-conf/README.rst @@ -66,8 +66,8 @@ this symlink is necessary for the prebuilt libraries and programs to work. ``/var/tmp`` is a sticky directory on all Linux distributions -following the Filesystem Hierarchy Standard, as well as on macOS and -on Cygwin. On multi-user systems, only one user can use a given +following the Filesystem Hierarchy Standard, as well as on macOS. +On multi-user systems, only one user can use a given version of the distribution; other installation schemes are recommended for systems with multiple Sage users. diff --git a/pkgs/sage-docbuild/README.rst b/pkgs/sage-docbuild/README.rst index 16ed52cdd52..178f9f213c9 100644 --- a/pkgs/sage-docbuild/README.rst +++ b/pkgs/sage-docbuild/README.rst @@ -12,7 +12,7 @@ About SageMath https://www.sagemath.org -SageMath fully supports all major Linux distributions, recent versions of macOS, and Windows (using Cygwin or Windows Subsystem for Linux). +SageMath fully supports all major Linux distributions, recent versions of macOS, and Windows (using Windows Subsystem for Linux). The traditional and recommended way to install SageMath is from source via Sage-the-distribution (https://www.sagemath.org/download-source.html). Sage-the-distribution first builds a large number of open source packages from source (unless it finds suitable versions installed in the system) and then installs the Sage Library (sagelib, implemented in Python and Cython). diff --git a/pkgs/sagemath-bliss/README.rst b/pkgs/sagemath-bliss/README.rst index 9e1cb2e826f..72526111226 100644 --- a/pkgs/sagemath-bliss/README.rst +++ b/pkgs/sagemath-bliss/README.rst @@ -13,7 +13,7 @@ About SageMath https://www.sagemath.org SageMath fully supports all major Linux distributions, recent versions of -macOS, and Windows (using Cygwin or Windows Subsystem for Linux). +macOS, and Windows (Windows Subsystem for Linux). The traditional and recommended way to install SageMath is from source via Sage-the-distribution (https://www.sagemath.org/download-source.html). diff --git a/pkgs/sagemath-categories/README.rst b/pkgs/sagemath-categories/README.rst index 55cddc3c95c..398b5f81a91 100644 --- a/pkgs/sagemath-categories/README.rst +++ b/pkgs/sagemath-categories/README.rst @@ -13,7 +13,7 @@ About SageMath https://www.sagemath.org SageMath fully supports all major Linux distributions, recent versions of -macOS, and Windows (using Cygwin or Windows Subsystem for Linux). +macOS, and Windows (Windows Subsystem for Linux). The traditional and recommended way to install SageMath is from source via Sage-the-distribution (https://www.sagemath.org/download-source.html). diff --git a/pkgs/sagemath-coxeter3/README.rst b/pkgs/sagemath-coxeter3/README.rst index 8b605bda499..c75e83995a3 100644 --- a/pkgs/sagemath-coxeter3/README.rst +++ b/pkgs/sagemath-coxeter3/README.rst @@ -13,7 +13,7 @@ About SageMath https://www.sagemath.org SageMath fully supports all major Linux distributions, recent versions of -macOS, and Windows (using Cygwin or Windows Subsystem for Linux). +macOS, and Windows (Windows Subsystem for Linux). The traditional and recommended way to install SageMath is from source via Sage-the-distribution (https://www.sagemath.org/download-source.html). diff --git a/pkgs/sagemath-environment/README.rst b/pkgs/sagemath-environment/README.rst index eaeb4078fed..a8003060bd9 100644 --- a/pkgs/sagemath-environment/README.rst +++ b/pkgs/sagemath-environment/README.rst @@ -13,7 +13,7 @@ About SageMath https://www.sagemath.org SageMath fully supports all major Linux distributions, recent versions of -macOS, and Windows (using Cygwin or Windows Subsystem for Linux). +macOS, and Windows (Windows Subsystem for Linux). The traditional and recommended way to install SageMath is from source via Sage-the-distribution (https://www.sagemath.org/download-source.html). diff --git a/pkgs/sagemath-mcqd/README.rst b/pkgs/sagemath-mcqd/README.rst index 00ef5f8ea3e..4fcf37ec1a3 100644 --- a/pkgs/sagemath-mcqd/README.rst +++ b/pkgs/sagemath-mcqd/README.rst @@ -13,7 +13,7 @@ About SageMath https://www.sagemath.org SageMath fully supports all major Linux distributions, recent versions of -macOS, and Windows (using Cygwin or Windows Subsystem for Linux). +macOS, and Windows (Windows Subsystem for Linux). The traditional and recommended way to install SageMath is from source via Sage-the-distribution (https://www.sagemath.org/download-source.html). diff --git a/pkgs/sagemath-meataxe/README.rst b/pkgs/sagemath-meataxe/README.rst index 659edb3cf9f..e38540cc304 100644 --- a/pkgs/sagemath-meataxe/README.rst +++ b/pkgs/sagemath-meataxe/README.rst @@ -13,7 +13,7 @@ About SageMath https://www.sagemath.org SageMath fully supports all major Linux distributions, recent versions of -macOS, and Windows (using Cygwin or Windows Subsystem for Linux). +macOS, and Windows (Windows Subsystem for Linux). The traditional and recommended way to install SageMath is from source via Sage-the-distribution (https://www.sagemath.org/download-source.html). diff --git a/pkgs/sagemath-objects/README.rst b/pkgs/sagemath-objects/README.rst index 4426d8683a3..e2959d72eae 100644 --- a/pkgs/sagemath-objects/README.rst +++ b/pkgs/sagemath-objects/README.rst @@ -13,7 +13,7 @@ About SageMath https://www.sagemath.org SageMath fully supports all major Linux distributions, recent versions of -macOS, and Windows (using Cygwin or Windows Subsystem for Linux). +macOS, and Windows (Windows Subsystem for Linux). The traditional and recommended way to install SageMath is from source via Sage-the-distribution (https://www.sagemath.org/download-source.html). diff --git a/pkgs/sagemath-repl/README.rst b/pkgs/sagemath-repl/README.rst index 90b73be3cf5..115614a5d7e 100644 --- a/pkgs/sagemath-repl/README.rst +++ b/pkgs/sagemath-repl/README.rst @@ -13,7 +13,7 @@ About SageMath https://www.sagemath.org SageMath fully supports all major Linux distributions, recent versions of -macOS, and Windows (using Cygwin or Windows Subsystem for Linux). +macOS, and Windows (Windows Subsystem for Linux). The traditional and recommended way to install SageMath is from source via Sage-the-distribution (https://www.sagemath.org/download-source.html). diff --git a/pkgs/sagemath-sirocco/README.rst b/pkgs/sagemath-sirocco/README.rst index 0207d63b9a5..824ca3b03a6 100644 --- a/pkgs/sagemath-sirocco/README.rst +++ b/pkgs/sagemath-sirocco/README.rst @@ -13,7 +13,7 @@ About SageMath https://www.sagemath.org SageMath fully supports all major Linux distributions, recent versions of -macOS, and Windows (using Cygwin or Windows Subsystem for Linux). +macOS, and Windows (Windows Subsystem for Linux). The traditional and recommended way to install SageMath is from source via Sage-the-distribution (https://www.sagemath.org/download-source.html). diff --git a/pkgs/sagemath-standard/README.rst b/pkgs/sagemath-standard/README.rst index f624d1414a7..f429984aa4c 100644 --- a/pkgs/sagemath-standard/README.rst +++ b/pkgs/sagemath-standard/README.rst @@ -12,7 +12,7 @@ About SageMath https://www.sagemath.org -SageMath fully supports all major Linux distributions, recent versions of macOS, and Windows (using Cygwin or Windows Subsystem for Linux). +SageMath fully supports all major Linux distributions, recent versions of macOS, and Windows (Windows Subsystem for Linux). The traditional and recommended way to install SageMath is from source via Sage-the-distribution (https://www.sagemath.org/download-source.html). Sage-the-distribution first builds a large number of open source packages from source (unless it finds suitable versions installed in the system) and then installs the Sage Library (sagelib, implemented in Python and Cython). diff --git a/pkgs/sagemath-tdlib/README.rst b/pkgs/sagemath-tdlib/README.rst index 0c91ddcf1c6..fb1729a073c 100644 --- a/pkgs/sagemath-tdlib/README.rst +++ b/pkgs/sagemath-tdlib/README.rst @@ -13,7 +13,7 @@ About SageMath https://www.sagemath.org SageMath fully supports all major Linux distributions, recent versions of -macOS, and Windows (using Cygwin or Windows Subsystem for Linux). +macOS, and Windows (Windows Subsystem for Linux). The traditional and recommended way to install SageMath is from source via Sage-the-distribution (https://www.sagemath.org/download-source.html). diff --git a/src/bin/sage-env b/src/bin/sage-env index b4fca91b314..3393315a5f6 100644 --- a/src/bin/sage-env +++ b/src/bin/sage-env @@ -267,13 +267,6 @@ if [ -n "$SAGE_LOCAL" -a -f "$SAGE_LOCAL"/toolchain/toolchain-env ]; then source "$SAGE_LOCAL"/toolchain/toolchain-env fi -# setting of the variable UNAME (describing the o.s.) -# On Cygwin the result of `uname` depends on the version of Windows -# it is running on, e.g. CYGWIN_NT-5.1 on 32 bits Windows XP or -# CYGWIN_NT-6.1-WOW64 on 64 bits Windows 7. -# Currently, this information is of no use to us so we discard it. -export UNAME=`uname | sed 's/CYGWIN.*/CYGWIN/' ` - # Mac OS X-specific setup if [ "$UNAME" = "Darwin" ]; then export MACOSX_VERSION=`uname -r | awk -F. '{print $1}'` @@ -547,15 +540,6 @@ if [ "$TOUCH" = "" ]; then TOUCH="touch" && export TOUCH fi -if [ "$UNAME" = "CYGWIN" -a -n "$SAGE_LOCAL" ]; then - # Cygwin needs pathnames in PATH to resolve runtime dependencies - PATH="$SAGE_LOCAL/lib/R/lib:$SAGE_LOCAL/lib:$PATH" && export PATH - # And "dlopen" needs them in LD_LIBRARY_PATH, just as on Linuces, - # except that on Cygwin shared libraries are usually stored in "bin" - # and not in "lib" - LD_LIBRARY_PATH="$SAGE_LOCAL/bin:$LD_LIBRARY_PATH" && export LD_LIBRARY_PATH -fi - # Handle parallel building/testing/... case "$SAGE_NUM_THREADS,$SAGE_NUM_THREADS_PARALLEL" in [1-9][0-9]*,[1-9][0-9]*) diff --git a/src/doc/bootstrap b/src/doc/bootstrap index fde83e4fd1b..b6830ad7bb3 100755 --- a/src/doc/bootstrap +++ b/src/doc/bootstrap @@ -28,7 +28,7 @@ shopt -s extglob RECOMMENDED_SPKG_PATTERN="@(_recommended$(for a in $(head -n 1 build/pkgs/_recommended/dependencies); do echo -n "|"$a; done))" DEVELOP_SPKG_PATTERN="@(_develop$(for a in $(head -n 1 build/pkgs/_develop/dependencies); do echo -n "|"$a; done))" -for SYSTEM in arch debian fedora cygwin homebrew opensuse; do +for SYSTEM in arch debian fedora homebrew opensuse; do SYSTEM_PACKAGES= OPTIONAL_SYSTEM_PACKAGES= SAGELIB_SYSTEM_PACKAGES= diff --git a/src/doc/en/developer/git_setup.rst b/src/doc/en/developer/git_setup.rst index 49218288afa..f95b0d653da 100644 --- a/src/doc/en/developer/git_setup.rst +++ b/src/doc/en/developer/git_setup.rst @@ -18,10 +18,6 @@ Debian / Ubuntu Fedora Run ``sudo yum install git-core`` -Windows (Cygwin) - Install the Cygwin package Git. Do not attempt to use native - Windows installations of Git. - Windows (WSL) We strongly recommend to install the package using the Linux distribution's package manager. Native Windows installations of diff --git a/src/doc/en/developer/packaging.rst b/src/doc/en/developer/packaging.rst index 9f8bd2528ef..97904e97ea7 100644 --- a/src/doc/en/developer/packaging.rst +++ b/src/doc/en/developer/packaging.rst @@ -514,7 +514,6 @@ containing files with names like :: arch.txt conda.txt - cygwin.txt debian.txt homebrew.txt ... @@ -1216,7 +1215,7 @@ must meet the following requirements: them `_. - **Build Support**. The code must build on all the fully supported - platforms (Linux, macOS, Cygwin); see :ref:`chapter-portability_testing`. + platforms (Linux, macOS); see :ref:`chapter-portability_testing`. It must be installed either from source as a normal package, or as a Python (platform-independent) wheel package, see :ref:`section-package-source-types`. diff --git a/src/doc/en/developer/portability_testing.rst b/src/doc/en/developer/portability_testing.rst index b95bb7b5ab7..0ad863f4e0f 100644 --- a/src/doc/en/developer/portability_testing.rst +++ b/src/doc/en/developer/portability_testing.rst @@ -10,7 +10,7 @@ Testing on Multiple Platforms Sage is intended to build and run on a variety of platforms, including all major Linux distributions, as well as MacOS, and -Windows (with Cygwin and WSL). +Windows (with WSL). There is considerable variation among these platforms. To ensure that Sage continues to build correctly on users' @@ -967,11 +967,6 @@ This is defined in the files - `$SAGE_ROOT/.github/workflows/ci-macos.yml `_, and -- `$SAGE_ROOT/.github/workflows/ci-cygwin-standard.yml - `_ - (which calls `$SAGE_ROOT/.github/workflows/cygwin.yml - `_). - GitHub Actions runs these build jobs on 2-core machines with 7 GB of RAM memory and 14 GB of SSD disk space, cf. `here `_, diff --git a/src/doc/en/installation/source.rst b/src/doc/en/installation/source.rst index a13aed9250a..283c1919bec 100644 --- a/src/doc/en/installation/source.rst +++ b/src/doc/en/installation/source.rst @@ -288,95 +288,6 @@ WSL post-installation notes When the installation is complete, you may be interested in :ref:`sec-launching-wsl-post-installation`. -.. _section_cygwinprereqs: - -Cygwin prerequisite installation -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -Previous versions of Sage targeted the Windows platform using `Cygwin -`_. - -As of Sage 9.7, we no longer recommend attempting to build Sage on -Cygwin and instead suggest that users on Windows 10 and 11 switch to -installing Sage using Windows Subsystem for Linux (WSL), which gives a -better performance and user/developer experience than Cygwin. - -Users on hardware configurations that do not support running WSL, as -well as users on legacy versions of Windows such as Windows 8 may find -it necessary to build Sage on Cygwin. - -.. WARNING:: - - As of Sage 9.7, :trac:`known issues with several packages - ` - will prevent a successful installation. Users need to be prepared - to contribute to Sage by fixing these issues. - -Use the following instructions to get started. - -1. Download `the 64-bit version of Cygwin `_ - (do not get the 32-bit version; it is not supported by Sage). - -2. Run the ``setup-x86_64.exe`` graphical installer. Pick the default - options in most cases. At the package selection screen, use the - search bar to find and select at least the following packages: - ``bzip2``, ``coreutils``, ``curl``, ``gawk``, ``gzip``, ``tar``, ``wget``, ``git``. - -3. Start the Cygwin terminal and ensure you get a working bash prompt. - -4. Make sure the path of your Cygwin home directory does not contain - space characters. Also avoid building in home directories of Windows domain - users or in paths with capital letters. - - By default, your username in Cygwin is the same as your username in - Windows. This might contain spaces and other traditionally - non-UNIX-friendly characters, e.g., if it is your full name. You - can check this as follows:: - - $ whoami - Erik M. Bray - - This means your default home directory on Cygwin contains this - username verbatim; in the above example, ``/home/Erik M. Bray``. - It will save some potential trouble if you change your Cygwin home - directory to contain only alphanumeric characters, for example, - ``/home/embray``. The easiest way to do this is to first create - the home directory you want to use instead, then create an - ``/etc/passwd`` file specifying that directory as your home, as follows:: - - $ whocanibe=embray - $ mkdir /home/$whocanibe - $ mkpasswd.exe -l -u "$(whoami)" | sed -r 's,/home/[^:]+,/home/'$whocanibe, > /etc/passwd - - After this, close all Cygwin terminals (ensure nothing in - ``C:\cygwin64`` is running), then start a new Cygwin terminal and - your home directory should have moved. - - There are `other ways to do - this `_, - but the above seems to be the simplest that's still supported. - -5. (Optional) Although it is possible to install Sage's dependencies using the - Cygwin graphical installer, it is recommended to install the - `apt-cyg `_ - command-line package installer, which is used for the remainder of - these instructions. To install ``apt-cyg``, run:: - - $ curl -OL https://rawgit.com/transcode-open/apt-cyg/master/apt-cyg - $ install apt-cyg /usr/local/bin - $ rm -f apt-cyg - -6. Then, to install the current set of system packages known to work for building - Sage, run the following command (or use the graphical installer to - select and install these packages): - - .. literalinclude:: cygwin.txt - - Optional packages that are also known to be installable via system packages - include: - - .. literalinclude:: cygwin-optional.txt - Other platforms ^^^^^^^^^^^^^^^ @@ -475,7 +386,7 @@ Installation steps If the log files are very large (and many are), then don't paste the whole file, but make sure to include any error messages. It would also be helpful to include the type of operating system - (Linux, macOS, Solaris, OpenSolaris, Cygwin, or any other system), + (Linux, macOS, Solaris, OpenSolaris, or any other system), the version and release date of that operating system and the version of the copy of Sage you are using. (There are no formal requirements for bug reports -- just send them; diff --git a/src/sage/cpython/__init__.py b/src/sage/cpython/__init__.py index cb262984002..0e4de12a8b1 100644 --- a/src/sage/cpython/__init__.py +++ b/src/sage/cpython/__init__.py @@ -15,42 +15,3 @@ if hasattr(_ExtensionFileLoader, 'get_source'): del _ExtensionFileLoader.get_source del _ExtensionFileLoader - -# Work around a Cygwin-specific bug caused by sqlite3; see -# https://github.com/sagemath/sage/issues/30157 and the docstring for -# fix_for_ticket_30157 -# Here we monkey-patch the sqlite3 module to ensure the fix is -# applied the very first time a connection is made to a sqlite3 -# database -import sys as _sys -if _sys.platform == 'cygwin': - def _patch_sqlite3(): - try: - from sage.misc.sage_ostools import fix_for_ticket_30157 - except ImportError: - # The module might not have been re-built yet; don't worry about it - # then - return - - import sqlite3 - import functools - orig_sqlite3_connect = sqlite3.connect - - @functools.wraps(orig_sqlite3_connect) - def connect(*args, **kwargs): - if fix_for_ticket_30157(): - raise RuntimeError( - 'patch for Github issue #30157 failed; please report this ' - 'bug to https://github.com/sagemath/sage/issues') - - # Undo the monkey-patch - try: - return orig_sqlite3_connect(*args, **kwargs) - finally: - sqlite3.connect = orig_sqlite3_connect - - sqlite3.connect = connect - - _patch_sqlite3() - del _patch_sqlite3 - del _sys diff --git a/src/sage/env.py b/src/sage/env.py index 4515e90e912..8e801e90403 100644 --- a/src/sage/env.py +++ b/src/sage/env.py @@ -253,19 +253,12 @@ def var(key: str, *fallbacks: Optional[str], force: bool = False) -> Optional[st # post process if DOT_SAGE is not None and ' ' in DOT_SAGE: - if UNAME[:6] == 'CYGWIN': - # on windows/cygwin it is typical for the home directory - # to have a space in it. Fortunately, users also have - # write privileges to c:\cygwin\home, so we just put - # .sage there. - DOT_SAGE = var("DOT_SAGE", "/home/.sage", force=True) - else: - print("Your home directory has a space in it. This") - print("will probably break some functionality of Sage. E.g.,") - print("the GAP interface will not work. A workaround") - print("is to set the environment variable HOME to a") - print("directory with no spaces that you have write") - print("permissions to before you start sage.") + print("Your home directory has a space in it. This") + print("will probably break some functionality of Sage. E.g.,") + print("the GAP interface will not work. A workaround") + print("is to set the environment variable HOME to a") + print("directory with no spaces that you have write") + print("permissions to before you start sage.") def sage_include_directories(use_sources=False): @@ -461,8 +454,6 @@ def uname_specific(name, value, alternative): aliases["LINUX_NOEXECSTACK"] = uname_specific("Linux", ["-Wl,-z,noexecstack"], []) - aliases["CYGWIN_SQLITE3_LIBS"] = uname_specific("CYGWIN", ["sqlite3"], - []) # LinBox needs special care because it actually requires C++11 with # GNU extensions: -std=c++11 does not work, you need -std=gnu++11 @@ -478,8 +469,8 @@ def uname_specific(name, value, alternative): aliases["ARB_LIBRARY"] = ARB_LIBRARY # TODO: Remove Cygwin hack by installing a suitable cblas.pc - if os.path.exists('/usr/lib/libblas.dll.a'): - aliases["CBLAS_LIBS"] = ['gslcblas'] + # if os.path.exists('/usr/lib/libblas.dll.a'): + # aliases["CBLAS_LIBS"] = ['gslcblas'] try: aliases["M4RI_CFLAGS"].remove("-pedantic") diff --git a/src/sage/interfaces/mathematica.py b/src/sage/interfaces/mathematica.py index 9c6e3ca86e9..02cf7ff502e 100644 --- a/src/sage/interfaces/mathematica.py +++ b/src/sage/interfaces/mathematica.py @@ -341,8 +341,6 @@ - William Stein (2005): first version -- Doug Cutrell (2006-03-01): Instructions for use under Cygwin/Windows. - - Felix Lawrence (2009-08-21): Added support for importing Mathematica lists and floats with exponents. @@ -585,25 +583,6 @@ def _install_hints(self): that's the only ways at present). """ -# The following only works with Sage for Cygwin. - -# Create a file named "math", which you place in the Sage root -# directory. The file contained a single line, which was the -# path to the mathematica math.exe file. In my case, this might be: - -# C:/Program Files/Wolfram Research/Mathematica/4.0/math.exe - -# The key points are -# 1) there is a file named "math.exe", and it will generally be -# located in a place analogous to the above (depending on where -# Mathematica has been installed). This file is used only for -# launching the kernel with a text-based interface. -# 2) a cygwin batch file must be created which executes this file, -# which means using forward slashes rather than back slashes, -# and probably surrounding everything in quotes -# 3) this cygwin batch file must be on the path for Sage (placing -# it in /bin/ is an easy way to ensure this). - def eval(self, code, strip=True, **kwds): s = Expect.eval(self, code, **kwds) if strip: diff --git a/src/sage/libs/singular/singular.pyx b/src/sage/libs/singular/singular.pyx index 63a6e9b332f..d1989366dcb 100644 --- a/src/sage/libs/singular/singular.pyx +++ b/src/sage/libs/singular/singular.pyx @@ -1777,13 +1777,12 @@ cdef init_libsingular() noexcept: os.environ["SINGULAR_BIN_DIR"] = dirname(singular_executable) import platform - if not platform.system().startswith("CYGWIN"): - # reload the current module to force reload of libSingular (see #33446) - lib = str_to_bytes(__loader__.path, FS_ENCODING, "surrogateescape") - handle = dlopen(lib, RTLD_GLOBAL|RTLD_LAZY) - if not handle: - err = dlerror() - raise RuntimeError(f"Could not reload Singular library with RTLD_GLOBAL ({err})") + # reload the current module to force reload of libSingular (see #33446) + lib = str_to_bytes(__loader__.path, FS_ENCODING, "surrogateescape") + handle = dlopen(lib, RTLD_GLOBAL|RTLD_LAZY) + if not handle: + err = dlerror() + raise RuntimeError(f"Could not reload Singular library with RTLD_GLOBAL ({err})") # load SINGULAR siInit(lib) diff --git a/src/sage/misc/compat.py b/src/sage/misc/compat.py index 4ad6d3fe5ef..e374cf97aac 100644 --- a/src/sage/misc/compat.py +++ b/src/sage/misc/compat.py @@ -21,32 +21,7 @@ # Replacements (as needed) for Python stdlib functions to provide # better platform compatibility ################################################################# -if sys.platform == 'cygwin': - # find_library that works in cygwin adapted from - # http://cygwin-ports.svn.sourceforge.net/viewvc/cygwin-ports/ports/trunk/lang/python/2.5.2-ctypes-util-find_library.patch?revision=8245&view=markup - def _find_library(name): - libdirs = [] - if SAGE_LOCAL: - libdirs.append(os.path.join(SAGE_LOCAL, 'lib')) - libdirs.extend(['/usr/local/lib', '/usr/lib']) - for libdir in libdirs: - for libext in ['dll.a', 'a']: - implib = os.path.join(libdir, - 'lib{0}.{1}'.format(name, libext)) - if not os.path.exists(implib): - continue - - cmd = ['dlltool', '-I', implib] - - p = subprocess.Popen(cmd, stdout=subprocess.PIPE, - stderr=subprocess.PIPE, - universal_newlines=True) - - stdout, stderr = p.communicate() - - if p.returncode == 0: - return stdout.strip() -elif sys.platform == 'darwin': +if sys.platform == 'darwin': # On OSX non-standard library paths are not automatically found by the # find_library implementation without setting DYLD_LIBRARY_PATH; see # https://github.com/sagemath/sage/issues/21399#comment:25 diff --git a/src/sage/misc/cython.py b/src/sage/misc/cython.py index 13781e2585d..f631e9eea23 100644 --- a/src/sage/misc/cython.py +++ b/src/sage/misc/cython.py @@ -78,10 +78,6 @@ def _standard_libs_libdirs_incdirs_aliases(): sequence_number = {} -# Only used on Cygwin; see note below about --enable-auto-image-base -CYTHON_IMAGE_BASE = 0x580000000 - - def cython(filename, verbose=0, compile_message=False, use_cache=False, create_local_c_file=False, annotate=True, sage_namespace=True, create_local_so_file=False): @@ -696,85 +692,3 @@ def cython_compile(code, **kwds): with open(tmpfile, 'w') as f: f.write(code) return cython_import_all(tmpfile, get_globals(), **kwds) - - -# THe following utility functions are used on Cygwin only to work around a -# shortcoming in ld/binutils; see https://github.com/sagemath/sage/issues/28258 -def _strhash(s): - """ - Implementation of the strhash function from binutils - - See - https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob;f=binutils/dllwrap.c;hb=d0e6d77b3fb64561ca66535f8ed6ca523eac923e#l449 - - This is used to re-implement support for --enable-auto-image-base with a - custom base address, which is currently broken in ld/binutils for PE32+ - binaries. - - TESTS:: - - sage: from sage.misc.cython import _strhash - sage: hex(_strhash('test.pyx')) - '0x3d99a20' - """ - - s = str_to_bytes(s) - h = 0 - l = len(s) - - for c in s: - h += c + (c << 17) - h ^= h >> 2 - - h += l + (l << 17) - h ^= h >> 2 - return h - - -def _compute_dll_image_base(filename, auto_image_base=None): - """ - Compute a DLL image base address from a hash of its filename, using the - same implementation as --enable-auto-image-base from binutils, but with - support for a custom minimum base address. - - See - https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob;f=ld/emultempl/pe.em;h=c18cb266beb23d14108044571382e0c7f4dbedb3;hb=d0e6d77b3fb64561ca66535f8ed6ca523eac923e#l919 - which implements this for PE32 images (for PE32+ images the support for - custom base addresses is broken). - - See also :trac:`28258`. - - TESTS:: - - sage: from sage.misc.cython import _compute_dll_image_base - sage: hex(_compute_dll_image_base('test.pyx')) - '0x59a200000' - - Test that given a random filename it is always below 0x6:00000000; in - principle this could fail randomly, but if it never fails then no problem. - We do not test for collisions since there is always a random chance of - collisions with two arbitrary filenames:: - - sage: from sage.misc.temporary_file import tmp_filename - sage: image_base = _compute_dll_image_base(tmp_filename(ext='.pyx')) - sage: hex(image_base) # random - '0x59a200000' - sage: image_base <= (0x600000000 - 0x10000) - True - """ - - if auto_image_base is None: - # The default, which can in principle be modified at runtime if needed - auto_image_base = CYTHON_IMAGE_BASE - - # See https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob;f=ld/emultempl/pep.em;h=dca36cc341aabfa2ec9db139b8ec94690165201a;hb=d0e6d77b3fb64561ca66535f8ed6ca523eac923e#l113 - # where move_default_addr_high=1 on Cygwin targets. - # This is actually derived from taking the upper limit 0x6:00000000 minus - # the lower limit 0x4:00000000 minus a gap of at least 0x10000. I don't - # know why but this is supposed to work: https://narkive.com/HCyWCS6h.23 - # Currently in binutils auto_image_base of 0x4:00000000 is hard-coded, so - # this comes out to 0x1:ffff0000, but here we must compute it. - NT_DLL_AUTO_IMAGE_MASK = 0x600000000 - auto_image_base - 0x10000 - - h = _strhash(filename) - return auto_image_base + ((h << 16) & NT_DLL_AUTO_IMAGE_MASK) diff --git a/src/sage/misc/inline_fortran.py b/src/sage/misc/inline_fortran.py index 5d4fc7831bb..82da6982bec 100644 --- a/src/sage/misc/inline_fortran.py +++ b/src/sage/misc/inline_fortran.py @@ -191,15 +191,11 @@ def eval(self, x, globals=None, locals=None): finally: os.chdir(old_cwd) - if sys.platform != 'cygwin': - # Do not delete temporary DLLs on Cygwin; this will cause - # future forks of this process to fail. Instead temporary DLLs - # will be cleaned up upon process exit - try: - shutil.rmtree(mytmpdir) - except OSError: - # This can fail for example over NFS - pass + try: + shutil.rmtree(mytmpdir) + except OSError: + # This can fail for example over NFS + pass for k, x in mod.__dict__.items(): if k[0] != '_': diff --git a/src/sage/misc/persist.pyx b/src/sage/misc/persist.pyx index 670a9a6ac17..0a9a62952aa 100644 --- a/src/sage/misc/persist.pyx +++ b/src/sage/misc/persist.pyx @@ -1041,8 +1041,6 @@ def picklejar(obj, dir=None): ....: uid = -1 sage: if uid == 0: ....: print("OK (cannot test this as root)") - ....: elif sys.platform == 'cygwin': - ....: print("OK (cannot test this on Cygwin)") ....: else: ....: try: ....: sage.misc.persist.picklejar(1, dir + '/noaccess') diff --git a/src/sage/misc/sage_ostools.pyx b/src/sage/misc/sage_ostools.pyx index 0034f7a5d89..64e9c42809b 100644 --- a/src/sage/misc/sage_ostools.pyx +++ b/src/sage/misc/sage_ostools.pyx @@ -1,4 +1,3 @@ -# distutils: libraries = CYGWIN_SQLITE3_LIBS """ Miscellaneous operating system functions """ @@ -304,44 +303,3 @@ cdef class redirection: if self.close_dest: self.dest_file.close() self.dest_fd = -1 - - -IF PY_PLATFORM == 'cygwin': - from libc.stddef cimport wchar_t - - cdef extern from "Windows.h": - int SetDllDirectoryW(wchar_t* lpPathName) - - cdef extern from "sqlite3.h": - int sqlite3_initialize() - - def fix_for_ticket_30157(): - """ - Cygwin-only workaround for an issue caused by the sqlite3 library. - - See :trac:`30157`. - - The issue here is that when the sqlite3 library is first initialized - it modifies Windows' default DLL search path order, which can possibly - break the correct search path for subsequent DLL loads. - - This workaround ensures that the sqlite3 library is initialized very - early on (this does not add any significant overhead) and then - immediately undoes its deleterious effects. In particular, calling - SetDllDirectoryW(NULL) restores the default DLL search path. - - To be clear, there's no reason sqlite3 needs this to function - correctly; it's just a poorly-considered hack that attempted to work - around a problem that doesn't affect us. - - Returns 0 if it succeeeds or a non-zero value if not. - """ - - ret = sqlite3_initialize() - - if ret != 0: - # Library initialization failed for some reason - return ret - - # SetDllDirectory returns 1 if it succeeds. - return not SetDllDirectoryW(NULL) diff --git a/src/sage/misc/sageinspect.py b/src/sage/misc/sageinspect.py index 0fa8551a271..4d7c3f9c19c 100644 --- a/src/sage/misc/sageinspect.py +++ b/src/sage/misc/sageinspect.py @@ -178,8 +178,6 @@ def loadable_module_extension(): r""" Return the filename extension of loadable modules, including the dot. - It is '.dll' on cygwin, '.so' otherwise. - This function is deprecated. EXAMPLES:: diff --git a/src/sage/misc/timing.py b/src/sage/misc/timing.py index cc2753e50b8..5e5c49b9594 100644 --- a/src/sage/misc/timing.py +++ b/src/sage/misc/timing.py @@ -32,8 +32,7 @@ def cputime(t=0, subprocesses=False): ``cputime()`` implementation into account. The measurement for the main Sage process is done via a call to - :func:`resource.getrusage()`, so it avoids the wraparound problems in - :func:`time.clock()` on Cygwin. + :func:`resource.getrusage()`. INPUT: diff --git a/src/sage/misc/viewer.py b/src/sage/misc/viewer.py index 439dedc5e75..85ff09aa341 100644 --- a/src/sage/misc/viewer.py +++ b/src/sage/misc/viewer.py @@ -73,19 +73,6 @@ def default_viewer(viewer=None): PDF_VIEWER = BROWSER PNG_VIEWER = BROWSER - elif os.uname()[0][:6] == 'CYGWIN': - # Windows is also easy, since it has a system for - # determining what opens things. However, on Cygwin we - # should access this through the 'cygstart' program rather - # than trying to run rundll32 directly, which on newer Windows versions - # has security implications - # Indeed, on Sage for Windows, BROWSER is set by default to cygstart, - # so we just canonize that here - BROWSER = os.environ.get('BROWSER', 'cygstart') - DVI_VIEWER = BROWSER - PDF_VIEWER = BROWSER - PNG_VIEWER = BROWSER - elif have_program('xdg-open'): # On other OS'es try xdg-open if present. # See http://portland.freedesktop.org/xdg-utils-1.0. diff --git a/src/sage_docbuild/utils.py b/src/sage_docbuild/utils.py index 28677d9b6c4..d9c1109850e 100644 --- a/src/sage_docbuild/utils.py +++ b/src/sage_docbuild/utils.py @@ -107,10 +107,7 @@ def build_many(target, args, processes=None): also require significant cleanup. It also avoids starting new processes from a pthread, which results in at - least two known issues: - - * On versions of Cygwin prior to 3.0.0 there were bugs in mmap handling - on threads (see :trac:`27214#comment:25`). + least one known issue: * When PARI is built with multi-threading support, forking a Sage process from a thread leaves the main Pari interface instance broken @@ -136,8 +133,7 @@ def build_many(target, args, processes=None): Processed task ... Processed task ... - Unlike the first version of ``build_many`` which was only intended to get - around the Cygwin bug, this version can also return a result, and thus can + This version can also return a result, and thus can be used as a replacement for ``multiprocessing.Pool.map`` (i.e. it still blocks until the result is ready):: diff --git a/src/sage_setup/library_order.py b/src/sage_setup/library_order.py index f40690f8d22..4576ddd4e7d 100644 --- a/src/sage_setup/library_order.py +++ b/src/sage_setup/library_order.py @@ -6,8 +6,7 @@ # be put *before* any library it links to. Cython allows # defining libraries using "# distutils: libraries = LIB". However, if # there are multiple libraries, the order is undefined so we need to -# manually reorder the libraries according to this list. The order is -# important in particular for Cygwin. Any libraries which are not +# manually reorder the libraries according to this list. Any libraries which are not # listed here will be added at the end of the list (without changing # their relative order). from sage.env import cython_aliases, default_required_modules, default_optional_modules diff --git a/src/sage_setup/setenv.py b/src/sage_setup/setenv.py index 7ff9a05ef2e..b868360d612 100644 --- a/src/sage_setup/setenv.py +++ b/src/sage_setup/setenv.py @@ -45,5 +45,4 @@ def setenv(): # not done: PATH prepend of SAGE_SRC/bin, SAGE_ROOT/build/bin # not done: MACOSX_DEPLOYMENT_TARGET # not done: PATH prepend for ccache & CCACHE_BASEDIR - # not done: Cygwin LD_LIBRARY_PATH # not done: OPENBLAS_NUM_THREADS From 7861f3b72a5a708548b3a4178913d1c71eab93f6 Mon Sep 17 00:00:00 2001 From: Dima Pasechnik Date: Sun, 26 Nov 2023 23:42:52 +0000 Subject: [PATCH 08/23] remove outdated section in SPKG.rst --- build/pkgs/gf2x/SPKG.rst | 29 ----------------------------- 1 file changed, 29 deletions(-) diff --git a/build/pkgs/gf2x/SPKG.rst b/build/pkgs/gf2x/SPKG.rst index b31f78b7c48..0dc6335894b 100644 --- a/build/pkgs/gf2x/SPKG.rst +++ b/build/pkgs/gf2x/SPKG.rst @@ -23,32 +23,3 @@ Upstream Contact - Pierrick Gaudry - Emmanuel Thomé - Paul Zimmermann - -Special Update/Build Instructions ---------------------------------- - -- As some patches touch config/acinclude.m4, we have to touch - aclocal.m4, - configure, Makefile.in and gf2x/gf2x-config.h.in to prevent autotools - to try to regenerate these files. - -Patches -~~~~~~~ - -- 0002-tr-portability.patch: backport upstream fix for non-portable tr - use -- 0003-Improve-detection-of-sse2-support.patch: backport upstream - improved check for sse2 - -- 0004-Add-disable-hardware-specific-code.patch: add option - -disable-hardware-specific-code to build system. This is partly - backported from upstream. - -- 0005-Update-autotooled-files.patch: the above patches make changes to - code used by autotools for generation of the build system. This - patches - those files, so that autotools need not be installed. - -- 0006-Fix_make_check_not_failing_on_errors.patch: (upstream patch) - Fix bug in shell script such that 'make check' always fails upon - errors. From 7b45aaf2c31caf5cb959598b54077a2f7696f662 Mon Sep 17 00:00:00 2001 From: Dima Pasechnik Date: Sun, 26 Nov 2023 23:47:40 +0000 Subject: [PATCH 09/23] keep verbatim notice from Singular --- COPYING.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/COPYING.txt b/COPYING.txt index f1282bc4890..d5c28eacead 100644 --- a/COPYING.txt +++ b/COPYING.txt @@ -1229,7 +1229,9 @@ The following software used with SINGULAR have their own copyright: the omalloc library, the readline library, the Gnu Multiple Precision Library (GMP), NTL: A Library for doing Number Theory (NTL), the Multi Protocol library (MP), the Singular-Factory library, the -Singular-libfac library, surfex, and the XEmacs editor (XEmacs). +Singular-libfac library, surfex, and, for the Windows distributions the +Cygwin DLL and the Cygwin tools (Cygwin), and the XEmacs editor +(XEmacs). Their copyrights and licenses can be found in the accompanying files COPYING which are distributed along with these packages. (Since From 68c460021f76a0c613279555d5c3fb3dff886a0a Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Tue, 28 Nov 2023 09:33:58 -0800 Subject: [PATCH 10/23] build/pkgs/iconv: Reduce to a dummy package --- build/pkgs/iconv/SPKG.rst | 7 ------ build/pkgs/iconv/checksums.ini | 4 --- build/pkgs/iconv/dependencies | 4 --- build/pkgs/iconv/package-version.txt | 1 - build/pkgs/iconv/spkg-check.in | 37 ---------------------------- build/pkgs/iconv/spkg-install.in | 31 ----------------------- 6 files changed, 84 deletions(-) delete mode 100644 build/pkgs/iconv/checksums.ini delete mode 100644 build/pkgs/iconv/dependencies delete mode 100644 build/pkgs/iconv/package-version.txt delete mode 100644 build/pkgs/iconv/spkg-check.in delete mode 100644 build/pkgs/iconv/spkg-install.in diff --git a/build/pkgs/iconv/SPKG.rst b/build/pkgs/iconv/SPKG.rst index 48e0ffe761f..cd51fd5f0a2 100644 --- a/build/pkgs/iconv/SPKG.rst +++ b/build/pkgs/iconv/SPKG.rst @@ -18,10 +18,3 @@ Upstream Contact - http://www.gnu.org/software/libiconv/ - Bug reports to bug-gnu-libiconv@gnu.org - -Special Update/Build Instructions ---------------------------------- - -- None, other than anyone updating this package should be familiar with - how - to write shell scripts. diff --git a/build/pkgs/iconv/checksums.ini b/build/pkgs/iconv/checksums.ini deleted file mode 100644 index d45d8b0fb87..00000000000 --- a/build/pkgs/iconv/checksums.ini +++ /dev/null @@ -1,4 +0,0 @@ -tarball=libiconv-VERSION.tar.gz -sha1=7af3149fa7c4bd1d3a36a30f02e95a0ebfd6b18f -md5=ace8b5f2db42f7b3b3057585e80d9808 -cksum=538361871 diff --git a/build/pkgs/iconv/dependencies b/build/pkgs/iconv/dependencies deleted file mode 100644 index 4f00de20375..00000000000 --- a/build/pkgs/iconv/dependencies +++ /dev/null @@ -1,4 +0,0 @@ -# no dependencies - ----------- -All lines of this file are ignored except the first. diff --git a/build/pkgs/iconv/package-version.txt b/build/pkgs/iconv/package-version.txt deleted file mode 100644 index d40acaaea09..00000000000 --- a/build/pkgs/iconv/package-version.txt +++ /dev/null @@ -1 +0,0 @@ -1.15 diff --git a/build/pkgs/iconv/spkg-check.in b/build/pkgs/iconv/spkg-check.in deleted file mode 100644 index fe8b527f6aa..00000000000 --- a/build/pkgs/iconv/spkg-check.in +++ /dev/null @@ -1,37 +0,0 @@ -# Only test iconv on Solaris, HP-UX, as those are the only -# platforms on which the iconv shipped with Sage will be installed. On -# other platforms Sage uses the system's iconv. - -case "$UNAME" in -SunOS) - # We must test iconv, but on Solaris some tests will always fail. - echo "If you see 3 core dumps, don't be too alarmed." - echo "This is a known Solaris bug and can safely be ignored. See" - echo " https://github.com/sagemath/sage/issues/8270" - echo "It will probably be fixed in later releases of Solaris 10," - echo "and was fixed in build 66 of OpenSolaris:" - echo " http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6550204" -esac -case "$UNAME" in -HP-UX|SunOS) - - cd src - - $MAKE check - - if [ $? -ne 0 ]; then - echo "Error encountered while running the iconv test suite ... exiting" - exit 1 - fi - echo "All the tests for iconv passed." - exit 0 - ;; -*) # Not HP-UX or SunOS (Solaris) - echo "iconv was not to be tested, since Sage will use the system's iconv" - echo "and not the one shipped with Sage." - echo "The iconv supplied by Sage is only used on HP-UX and Solaris." - exit 0 -esac - -# NOT REACHED - diff --git a/build/pkgs/iconv/spkg-install.in b/build/pkgs/iconv/spkg-install.in deleted file mode 100644 index 3c7a3ff3171..00000000000 --- a/build/pkgs/iconv/spkg-install.in +++ /dev/null @@ -1,31 +0,0 @@ -# Only build iconv on Solaris or HP-UX. See -# https://github.com/sagemath/sage/issues/8567 and -# https://github.com/sagemath/sage/issues/9603 -# for details. - -case "$UNAME" in -HP-UX|SunOS) - echo "iconv will be installed as the operating system is HP-UX or Solaris." - echo "These systems either lack iconv, or do not have a sufficiently capable" - echo "version of iconv. See:" - echo " https://github.com/sagemath/sage/issues/8567" - echo " https://github.com/sagemath/sage/issues/9603" - - cd src - - sdh_configure $ICONV_CONFIGURE - sdh_make - sdh_make_install - exit 0 - ;; -*) # Not HP-UX or SunOS (Solaris) - echo "iconv will not be installed, as we only need to build it on" - echo "Solaris or HP-UX, as the system's iconv will be used" - echo "on other platforms, rather than the one shipped with Sage." - echo "See:" - echo " https://github.com/sagemath/sage/issues/8567" - echo " https://github.com/sagemath/sage/issues/9603" - exit 0 -esac - -# NOT REACHED From 1713eed49f4c468eb1cbef84cd299cee37d1d4b2 Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Tue, 28 Nov 2023 09:35:31 -0800 Subject: [PATCH 11/23] src/sage/env.py: Remove commented-out cygwin code --- src/sage/env.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/sage/env.py b/src/sage/env.py index 8e801e90403..ea3c99b1823 100644 --- a/src/sage/env.py +++ b/src/sage/env.py @@ -468,10 +468,6 @@ def uname_specific(name, value, alternative): aliases["ARB_LIBRARY"] = ARB_LIBRARY - # TODO: Remove Cygwin hack by installing a suitable cblas.pc - # if os.path.exists('/usr/lib/libblas.dll.a'): - # aliases["CBLAS_LIBS"] = ['gslcblas'] - try: aliases["M4RI_CFLAGS"].remove("-pedantic") except (ValueError, KeyError): From 128e3483e1d35573226730f61a181f1933d4e135 Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Tue, 28 Nov 2023 09:37:44 -0800 Subject: [PATCH 12/23] src/bin/sage-env: Restore lost setting of UNAME --- src/bin/sage-env | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/bin/sage-env b/src/bin/sage-env index 3393315a5f6..29b96c3c895 100644 --- a/src/bin/sage-env +++ b/src/bin/sage-env @@ -267,6 +267,9 @@ if [ -n "$SAGE_LOCAL" -a -f "$SAGE_LOCAL"/toolchain/toolchain-env ]; then source "$SAGE_LOCAL"/toolchain/toolchain-env fi +# setting of the variable UNAME (describing the o.s.) +export UNAME=`uname` + # Mac OS X-specific setup if [ "$UNAME" = "Darwin" ]; then export MACOSX_VERSION=`uname -r | awk -F. '{print $1}'` From 822a9f95ea37928f32a93fca482ba5713162d7e2 Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Tue, 28 Nov 2023 09:38:27 -0800 Subject: [PATCH 13/23] src/sage/libs/singular/singular.pyx: Remove unused import --- src/sage/libs/singular/singular.pyx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/sage/libs/singular/singular.pyx b/src/sage/libs/singular/singular.pyx index d1989366dcb..cf0124e0a35 100644 --- a/src/sage/libs/singular/singular.pyx +++ b/src/sage/libs/singular/singular.pyx @@ -1776,7 +1776,6 @@ cdef init_libsingular() noexcept: else: os.environ["SINGULAR_BIN_DIR"] = dirname(singular_executable) - import platform # reload the current module to force reload of libSingular (see #33446) lib = str_to_bytes(__loader__.path, FS_ENCODING, "surrogateescape") handle = dlopen(lib, RTLD_GLOBAL|RTLD_LAZY) From 76aad01bab87ec31312d554ff9e5be523974d526 Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Tue, 28 Nov 2023 09:45:04 -0800 Subject: [PATCH 14/23] src/sage/interfaces/mathematica.py: Restore AUTHORS item --- src/sage/interfaces/mathematica.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/sage/interfaces/mathematica.py b/src/sage/interfaces/mathematica.py index 02cf7ff502e..2a6353c113f 100644 --- a/src/sage/interfaces/mathematica.py +++ b/src/sage/interfaces/mathematica.py @@ -341,6 +341,8 @@ - William Stein (2005): first version +- Doug Cutrell (2006-03-01): Instructions for use under Cygwin/Windows. + - Felix Lawrence (2009-08-21): Added support for importing Mathematica lists and floats with exponents. From 52a657ab127c65a294b5747777cd6fd6ae830ede Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Tue, 28 Nov 2023 09:47:36 -0800 Subject: [PATCH 15/23] build/bin/sage-bootstrap-python: Restore pwd checking - for WSL --- build/bin/sage-bootstrap-python | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/build/bin/sage-bootstrap-python b/build/bin/sage-bootstrap-python index 53cdae3a515..2b185a8f43d 100755 --- a/build/bin/sage-bootstrap-python +++ b/build/bin/sage-bootstrap-python @@ -36,7 +36,9 @@ SAGE_ORIG_PATH=${NEW_PATH%%':'} # a defect of sage_bootstrap on macOS regarding SSL URLs. # Trac #30177: Also check for hashlib.sha1 to guard against broken python2 -# from old homebrew installations. +# from old homebrew installations. Also check whether the current directory +# is accessible by this python; this is to guard on WSL against Pythons +# installed somewhere else in Windows. # Trac #29285: Do not accept pythons that manipulate PATH, such as # the shims provided by pyenv. @@ -58,7 +60,7 @@ PYTHONS="python python3 python3.12 python3.11 python3.10 python3.9 python3.8 pyt for PY in $PYTHONS; do PYTHON="$(PATH="$SAGE_ORIG_PATH" command -v $PY)" if [ -n "$PYTHON" ]; then - if CHECK_PATH="$PATH" "$PYTHON" -c "import argparse; import urllib; from hashlib import sha1; from ssl import HAS_SNI; assert HAS_SNI; from os import environ; assert environ[\"PATH\"] == environ[\"CHECK_PATH\"];" 2>/dev/null; then + if CHECK_PATH="$PATH" "$PYTHON" -c "import argparse; import urllib; from hashlib import sha1; from ssl import HAS_SNI; assert HAS_SNI; from os import listdir, environ; listdir(\"$(pwd)\"); assert environ[\"PATH\"] == environ[\"CHECK_PATH\"];" 2>/dev/null; then exec "$PYTHON" "$@" fi fi @@ -67,7 +69,7 @@ done for PY in $PYTHONS; do PYTHON="$(PATH="$SAGE_ORIG_PATH" command -v $PY)" if [ -n "$PYTHON" ]; then - if CHECK_PATH="$PATH" "$PYTHON" -c "import argparse; import urllib; from hashlib import sha1; from os import environ; assert environ[\"PATH\"] == environ[\"CHECK_PATH\"];" 2>/dev/null; then + if CHECK_PATH="$PATH" "$PYTHON" -c "import argparse; import urllib; from hashlib import sha1; from os import listdir, environ; listdir(\"$(pwd)\"); assert environ[\"PATH\"] == environ[\"CHECK_PATH\"];" 2>/dev/null; then exec "$PYTHON" "$@" fi fi From 99796aded4da11ecbd3bb50bfd67ced79a1ed070 Mon Sep 17 00:00:00 2001 From: "Erik M. Bray" Date: Tue, 10 Apr 2018 17:33:59 +0000 Subject: [PATCH 16/23] Fix spkg-installs of packages with legacy uninstall commands; moving those commands into spkg-legacy-uninstall scripts --- build/pkgs/eclib/spkg-install.in | 14 --------- build/pkgs/ecm/spkg-install.in | 11 ------- build/pkgs/fplll/spkg-install.in | 4 --- build/pkgs/freetype/spkg-install.in | 6 ---- build/pkgs/gf2x/spkg-install.in | 4 --- build/pkgs/giac/spkg-install.in | 18 ----------- build/pkgs/glpk/spkg-install.in | 4 --- build/pkgs/m4ri/spkg-install.in | 3 -- build/pkgs/m4rie/spkg-install.in | 6 ---- build/pkgs/mathjax/spkg-install.in | 2 -- build/pkgs/meataxe/spkg-install.in | 14 --------- build/pkgs/mpc/spkg-install.in | 8 ----- build/pkgs/mpfr/spkg-install.in | 8 ----- build/pkgs/ntl/spkg-install.in | 5 --- build/pkgs/qhull/spkg-install.in | 5 --- build/pkgs/readline/spkg-install.in | 10 ------ build/pkgs/singular/spkg-install.in | 47 +---------------------------- build/pkgs/sqlite/spkg-install.in | 2 -- 18 files changed, 1 insertion(+), 170 deletions(-) diff --git a/build/pkgs/eclib/spkg-install.in b/build/pkgs/eclib/spkg-install.in index 1611cfdd27d..4998cff1676 100644 --- a/build/pkgs/eclib/spkg-install.in +++ b/build/pkgs/eclib/spkg-install.in @@ -3,20 +3,6 @@ CXXFLAGS="$CXXFLAGS_O3_NON_NATIVE" export CFLAGS CXXFLAGS - -echo "Deleting old versions of eclib libraries, which" -echo "would interfere with new builds..." -# Delete any pre-autotools libraries: -rm -f "$SAGE_LOCAL"/lib/lib{curvesntl,g0nntl,jcntl,rankntl,mwrank}.* -# Delete autotools libraries: -rm -f "$SAGE_LOCAL"/lib/lib{e,j}c.* -if [ "$UNAME" = "CYGWIN" ]; then - rm -f "$SAGE_LOCAL"/lib/cyg{e,j}c-*.dll -fi -echo "Deleting old include directory..." -rm -rf "$SAGE_LOCAL"/include/eclib/ - - cd src/ ############################################################# diff --git a/build/pkgs/ecm/spkg-install.in b/build/pkgs/ecm/spkg-install.in index ce58949c8ee..04b51033818 100644 --- a/build/pkgs/ecm/spkg-install.in +++ b/build/pkgs/ecm/spkg-install.in @@ -238,17 +238,6 @@ sdh_configure $SAGE_CONFIGURE_GMP $ECM_CONFIGURE sdh_make -############################################################################### -# Remove old executable/header/libraries/manpage: -############################################################################### - -echo -echo "Build succeeded. Now removing old binary, header file, manual page and libraries..." -rm -f "$SAGE_LOCAL"/bin/ecm -rm -f "$SAGE_LOCAL"/lib/libecm.* -rm -f "$SAGE_LOCAL"/include/ecm.h -rm -f "$SAGE_LOCAL"/share/man/man1/ecm.1 - ############################################################################### # Now install ECM: ############################################################################### diff --git a/build/pkgs/fplll/spkg-install.in b/build/pkgs/fplll/spkg-install.in index dda663d433c..4cceae7fc88 100644 --- a/build/pkgs/fplll/spkg-install.in +++ b/build/pkgs/fplll/spkg-install.in @@ -32,7 +32,3 @@ export CXX="$CXX" sdh_configure $CONFIGUREFLAGS sdh_make sdh_make_install - -# Pretend that the "libfplll" package is not installed. This is needed to -# support renaming libfplll -> fplll done on Trac #24042 -rm -f "$SAGE_SPKG_INST/"libfplll-* diff --git a/build/pkgs/freetype/spkg-install.in b/build/pkgs/freetype/spkg-install.in index c1615626e72..9d8c0075ec0 100644 --- a/build/pkgs/freetype/spkg-install.in +++ b/build/pkgs/freetype/spkg-install.in @@ -4,9 +4,3 @@ cd src GNUMAKE=${MAKE} sdh_configure --enable-freetype-config $FREETYPE_CONFIGURE sdh_make sdh_make_install - -# The following file may be present from old builds of freetype, and -# its presence can break the matplotlib build. So remove it. (The -# current version is $SAGE_LOCAL/include/freetype2/ftbuild.h.) - -rm -f "$SAGE_LOCAL/include/ft2build.h" diff --git a/build/pkgs/gf2x/spkg-install.in b/build/pkgs/gf2x/spkg-install.in index 057be0a5953..c8e4c83e6d2 100644 --- a/build/pkgs/gf2x/spkg-install.in +++ b/build/pkgs/gf2x/spkg-install.in @@ -1,7 +1,3 @@ -echo "Deleting old gf2x files." -rm -f "$SAGE_LOCAL"/lib/libgf2x* -rm -rf "$SAGE_LOCAL"/include/gf2x* - cd src # Use newer version of config.guess and config.sub (see Trac #19727) diff --git a/build/pkgs/giac/spkg-install.in b/build/pkgs/giac/spkg-install.in index c20671a7b88..2e8d88d23f3 100644 --- a/build/pkgs/giac/spkg-install.in +++ b/build/pkgs/giac/spkg-install.in @@ -64,24 +64,6 @@ sdh_configure --disable-gui --disable-ao "$DISABLENLS" --enable-png=no --disable sdh_make -############################################################# -# Clean old install -############################################################# -echo "Cleaning giac..." -rm -f ${SAGE_LOCAL}/lib/libgiac* -rm -f ${SAGE_LOCAL}/bin/icas -rm -f ${SAGE_LOCAL}/bin/xcas -rm -f ${SAGE_LOCAL}/bin/cas_help -rm -f ${SAGE_LOCAL}/bin/pgiac -rm -f ${SAGE_LOCAL}/bin/en_cas_help -rm -f ${SAGE_LOCAL}/bin/es_cas_help -rm -f ${SAGE_LOCAL}/bin/fr_cas_help -rm -f ${SAGE_LOCAL}/bin/giac -rm -f ${SAGE_LOCAL}/bin/xcasnew -rm -rf ${SAGE_LOCAL}/share/giac -rm -rf ${SAGE_LOCAL}/share/doc/giac -rm -rf ${SAGE_LOCAL}/include/giac - ############################################################# # Install ############################################################# diff --git a/build/pkgs/glpk/spkg-install.in b/build/pkgs/glpk/spkg-install.in index a911c46f024..f592a562148 100644 --- a/build/pkgs/glpk/spkg-install.in +++ b/build/pkgs/glpk/spkg-install.in @@ -25,8 +25,4 @@ export CFLAGS LDFLAGS CPPFLAGS sdh_configure --with-gmp --disable-static sdh_make -# Remove old libraries to make sure we can downgrade it if needed. -# See https://github.com/sagemath/sage/issues/23596#comment:4 and later. -rm -f "$SAGE_LOCAL"/lib/libglpk.* - sdh_make_install diff --git a/build/pkgs/m4ri/spkg-install.in b/build/pkgs/m4ri/spkg-install.in index c3ae2270406..0af3234ed16 100644 --- a/build/pkgs/m4ri/spkg-install.in +++ b/build/pkgs/m4ri/spkg-install.in @@ -24,9 +24,6 @@ else DISABLE_SSE2="" fi -# otherwise we might run into problems with old headers -rm -rf "$SAGE_LOCAL/include/m4ri" - cd src # Configure and build M4RI diff --git a/build/pkgs/m4rie/spkg-install.in b/build/pkgs/m4rie/spkg-install.in index 925706f0581..bc0c13ffe1e 100644 --- a/build/pkgs/m4rie/spkg-install.in +++ b/build/pkgs/m4rie/spkg-install.in @@ -27,12 +27,6 @@ export CFLAGS export CPPFLAGS export LDFLAGS -# otherwise we might run into problems with old headers - -if [ -d "$SAGE_LOCAL/include/m4rie" ]; then - rm -rf "$SAGE_LOCAL/include/m4rie" -fi - # build M4RIE cd $ROOT_DIR/src/ diff --git a/build/pkgs/mathjax/spkg-install.in b/build/pkgs/mathjax/spkg-install.in index 31cdb426992..2eeaf6e84b4 100644 --- a/build/pkgs/mathjax/spkg-install.in +++ b/build/pkgs/mathjax/spkg-install.in @@ -1,4 +1,2 @@ TARGET="${SAGE_SHARE}/mathjax" -# Cleanup installed version -rm -rf "${TARGET}" sdh_install src/* "${TARGET}" diff --git a/build/pkgs/meataxe/spkg-install.in b/build/pkgs/meataxe/spkg-install.in index 433e5ba7c86..231519fac23 100644 --- a/build/pkgs/meataxe/spkg-install.in +++ b/build/pkgs/meataxe/spkg-install.in @@ -1,16 +1,3 @@ -# Delete old (Shared)MeatAxe libraries. This ensures a sane state if -# installation of this package fails: the mtx library should exist if -# and only if meataxe is installed. In detail: the build-time check in -# src/setup.py checks whether or not the "meataxe" package is -# marked as installed but the run-time check for the matrix_gfpn_dense -# module checks whether it can be imported. We need to ensure that these -# two conditions are equivalent, otherwise strange things can happen. -# See also https://github.com/sagemath/sage/issues/24359#comment:154 -# -# This also deletes the static library left behind from the installation -# of MeatAxe (as opposed to SharedMeatAxe). -rm -f "$SAGE_LOCAL"/lib/libmtx.* - # Directory where executables are installed. export MTXBIN="$SAGE_LOCAL"/bin @@ -34,4 +21,3 @@ sdh_make_install if [ "$SAGE_SPKG_INSTALL_DOCS" = yes ] ; then $MAKE doc || sdh_die "Error documenting SharedMeatAxe" fi - diff --git a/build/pkgs/mpc/spkg-install.in b/build/pkgs/mpc/spkg-install.in index 3ee37482fd4..b0cfb07c6a6 100644 --- a/build/pkgs/mpc/spkg-install.in +++ b/build/pkgs/mpc/spkg-install.in @@ -16,13 +16,5 @@ fi sdh_configure $SAGE_CONFIGURE_GMP $SAGE_CONFIGURE_MPFR $EXTRA sdh_make -# Cleaning -echo "Deleting old headers" -rm -f "$SAGE_LOCAL"/include/mpc.h -# Do not delete old libraries as this causes gcc to break during -# parallel builds. -# echo "Deleting old libraries" -# rm -f "$SAGE_LOCAL"/lib/libmpc.* - # Installing sdh_make_install diff --git a/build/pkgs/mpfr/spkg-install.in b/build/pkgs/mpfr/spkg-install.in index fbd4c59d541..3bbf5b1645e 100644 --- a/build/pkgs/mpfr/spkg-install.in +++ b/build/pkgs/mpfr/spkg-install.in @@ -149,14 +149,6 @@ mpfr_build() { mpfr_configure sdh_make - - echo - echo "Building MPFR succeeded. Now deleting old headers..." - rm -f "$SAGE_LOCAL"/include/*mpfr* - # Do not delete old libraries as this causes gcc to break during - # parallel builds. - # rm -f "$SAGE_LOCAL"/lib/libmpfr.* - sdh_make_install } diff --git a/build/pkgs/ntl/spkg-install.in b/build/pkgs/ntl/spkg-install.in index db04aa6b546..78cdb5dde39 100644 --- a/build/pkgs/ntl/spkg-install.in +++ b/build/pkgs/ntl/spkg-install.in @@ -115,11 +115,6 @@ ntl_build() ntl_install() { - echo - echo "Removing old NTL files." - rm -rf "$SAGE_LOCAL"/lib/libntl* - rm -rf "$SAGE_LOCAL"/include/NTL - echo echo "Installing NTL." diff --git a/build/pkgs/qhull/spkg-install.in b/build/pkgs/qhull/spkg-install.in index 73810f54625..c3df534ad86 100644 --- a/build/pkgs/qhull/spkg-install.in +++ b/build/pkgs/qhull/spkg-install.in @@ -5,9 +5,4 @@ sdh_cmake -DCMAKE_VERBOSE_MAKEFILE=ON \ sdh_make -# clean old install -rm -rf "${SAGE_LOCAL}"/include/libqhull -rm -rf "${SAGE_LOCAL}"/include/qhull -rm -rf "${SAGE_LOCAL}"/lib/libqhull* - sdh_make_install diff --git a/build/pkgs/readline/spkg-install.in b/build/pkgs/readline/spkg-install.in index 126c4372169..1b6bd4cdffb 100644 --- a/build/pkgs/readline/spkg-install.in +++ b/build/pkgs/readline/spkg-install.in @@ -4,16 +4,6 @@ sdh_configure --with-curses --enable-shared --disable-static echo "Now building static and shared readline libraries..." sdh_make -echo "Build succeedeed. Deleting old readline headers and libs" -echo "before installing the new ones..." -# (Note; Actually also readline does this by itself, but doing it -# here, too, doesn't hurt either.) -rm -rf "$SAGE_LOCAL"/include/readline/ "$SAGE_LOCAL"/lib/libreadline.* -if [[ $? -ne 0 ]]; then - echo >&2 "Error removing old version of readline." - exit 1 -fi - echo "Now installing the new readline headers and libraries..." sdh_make_install diff --git a/build/pkgs/singular/spkg-install.in b/build/pkgs/singular/spkg-install.in index c20def91a2f..9b31c4d505b 100644 --- a/build/pkgs/singular/spkg-install.in +++ b/build/pkgs/singular/spkg-install.in @@ -11,51 +11,6 @@ if [ "x$SAGE_DEBUG" = "xyes" ]; then SINGULAR_CONFIGURE="$SINGULAR_CONFIGURE --enable-debug --disable-optimizationflags" fi -remove_old_version() -{ - # the following is a little verbose but it ensures we leave no trace of 3.x - # _or_ 4.x - rm -f "$SAGE_LOCAL"/bin/*Singular* - rm -f "$SAGE_LOCAL"/bin/*singular* - rm -rf "$SAGE_LOCAL/include/singular" # 3.x and 4.x - rm -rf "$SAGE_LOCAL/include/factory" # 3.x and 4.x - rm -f "$SAGE_LOCAL/include/factor.h" # 3.x only - rm -f "$SAGE_LOCAL/include/factoryconf.h" # 3.x only - rm -rf "$SAGE_LOCAL/include/omalloc" #4.x only - rm -f "$SAGE_LOCAL/include/omalloc.h" # 3.x only - rm -f "$SAGE_LOCAL/include/omlimits.h" # 3.x only - rm -rf "$SAGE_LOCAL/include/resources" #4.x only - rm -rf "$SAGE_LOCAL/include/gfanlib" #4.x only - - # Clean up all Singular-related libraries - libs=( - singular # 3.x with lower case - singcf # 3.x only additional archives - singfac # 3.x only additional archives - Singular # 4.x with upper case - polys - factory - omalloc - resources # 3.x - singular_resources # 4.x and up - gfan - ) - if [ "$UNAME" = "CYGWIN" ]; then - for name in ${libs[*]}; do - rm -f "$SAGE_LOCAL"/bin/cyg${name}*.dll - rm -f "$SAGE_LOCAL"/lib/lib${name}*.a - done - else - for name in ${libs[*]}; do - rm -f "$SAGE_LOCAL"/lib/lib${name}* - done - fi - - rm -f "$SAGE_LOCAL"/lib/p_Procs_Field* # 3.x only - rm -rf "$SAGE_LOCAL/share/singular" - rm -f "$SAGE_LOCAL"/share/info/singular* -} - config() { if [ "$UNAME" = "CYGWIN" ]; then @@ -104,7 +59,7 @@ build_singular() # Actually run all the functions defined above -for i in remove_old_version config build_singular; do +for i in config build_singular; do echo "############### Singular stage $i ###############" cd "$SRC" && $i done diff --git a/build/pkgs/sqlite/spkg-install.in b/build/pkgs/sqlite/spkg-install.in index d13df2ba1b8..0ddfea7a619 100644 --- a/build/pkgs/sqlite/spkg-install.in +++ b/build/pkgs/sqlite/spkg-install.in @@ -1,5 +1,3 @@ -rm -f "$SAGE_LOCAL/bin/sqlite3" - cd src export CPPFLAGS="$CPPFLAGS -I$SAGE_LOCAL/include" From 25ce68f6264ac235d70fd6ab76dea58d80ca9ab8 Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Thu, 7 Dec 2023 19:20:27 -0800 Subject: [PATCH 17/23] Remove redundant spkg-legacy-uninstall scripts --- build/pkgs/boost_cropped/spkg-legacy-uninstall | 2 -- build/pkgs/ecl/spkg-legacy-uninstall | 6 ------ build/pkgs/gfan/spkg-legacy-uninstall | 3 --- build/pkgs/jmol/spkg-legacy-uninstall | 5 ----- build/pkgs/libgd/spkg-legacy-uninstall | 5 ----- build/pkgs/numpy/spkg-legacy-uninstall | 2 -- build/pkgs/python3/spkg-build.in | 11 ----------- 7 files changed, 34 deletions(-) delete mode 100755 build/pkgs/boost_cropped/spkg-legacy-uninstall delete mode 100755 build/pkgs/ecl/spkg-legacy-uninstall delete mode 100755 build/pkgs/gfan/spkg-legacy-uninstall delete mode 100755 build/pkgs/jmol/spkg-legacy-uninstall delete mode 100755 build/pkgs/libgd/spkg-legacy-uninstall delete mode 100755 build/pkgs/numpy/spkg-legacy-uninstall diff --git a/build/pkgs/boost_cropped/spkg-legacy-uninstall b/build/pkgs/boost_cropped/spkg-legacy-uninstall deleted file mode 100755 index ef170323b6a..00000000000 --- a/build/pkgs/boost_cropped/spkg-legacy-uninstall +++ /dev/null @@ -1,2 +0,0 @@ -#! /usr/bin/env bash -rm -rf "${SAGE_LOCAL}"/include/boost diff --git a/build/pkgs/ecl/spkg-legacy-uninstall b/build/pkgs/ecl/spkg-legacy-uninstall deleted file mode 100755 index 375d99ebcf1..00000000000 --- a/build/pkgs/ecl/spkg-legacy-uninstall +++ /dev/null @@ -1,6 +0,0 @@ -#! /usr/bin/env bash -rm -f "$SAGE_LOCAL"/bin/ecl -rm -rf "$SAGE_LOCAL"/include/ecl -rm -rf "$SAGE_LOCAL"/lib/ecl -rm -rf "$SAGE_LOCAL"/lib/ecl-* -rm -rf "$SAGE_LOCAL"/lib/libecl.* diff --git a/build/pkgs/gfan/spkg-legacy-uninstall b/build/pkgs/gfan/spkg-legacy-uninstall deleted file mode 100755 index 74552b0b71c..00000000000 --- a/build/pkgs/gfan/spkg-legacy-uninstall +++ /dev/null @@ -1,3 +0,0 @@ -#! /usr/bin/env bash -echo "Removing old version of gfan (if any)..." -rm -f "$SAGE_LOCAL"/bin/gfan* diff --git a/build/pkgs/jmol/spkg-legacy-uninstall b/build/pkgs/jmol/spkg-legacy-uninstall deleted file mode 100755 index 6c9bd1a2c08..00000000000 --- a/build/pkgs/jmol/spkg-legacy-uninstall +++ /dev/null @@ -1,5 +0,0 @@ -#! /usr/bin/env bash -# Cleanup of previous installation -rm -rf "${SAGE_SHARE}/jsmol/" -rm -rf "${SAGE_SHARE}/jmol/" -rm -f "${SAGE_LOCAL}/bin/jmol" diff --git a/build/pkgs/libgd/spkg-legacy-uninstall b/build/pkgs/libgd/spkg-legacy-uninstall deleted file mode 100755 index c67f4d2167d..00000000000 --- a/build/pkgs/libgd/spkg-legacy-uninstall +++ /dev/null @@ -1,5 +0,0 @@ -#! /usr/bin/env bash -# Critical to get rid of old versions, since they will break the install, since -# at some point one of the libraries accidently links against what's in SAGE_LOCAL, -# instead of what is in the build directory! -rm "$SAGE_LOCAL"/lib/libgd.* diff --git a/build/pkgs/numpy/spkg-legacy-uninstall b/build/pkgs/numpy/spkg-legacy-uninstall deleted file mode 100755 index 9cb6a63a5a3..00000000000 --- a/build/pkgs/numpy/spkg-legacy-uninstall +++ /dev/null @@ -1,2 +0,0 @@ -#! /usr/bin/env bash -rm -rf "$SAGE_LOCAL"/lib/python*/site-packages/numpy diff --git a/build/pkgs/python3/spkg-build.in b/build/pkgs/python3/spkg-build.in index 0c08814a242..4cd421bf4b8 100644 --- a/build/pkgs/python3/spkg-build.in +++ b/build/pkgs/python3/spkg-build.in @@ -62,17 +62,6 @@ fi # common in Cython-generated code. export EXTRA_CFLAGS="`testcflags.sh -Wno-unused $OLD_CFLAGS`" -# Remove old symbolic link: it is not needed and its presence can -# interfere with the Python build. -rm -f "$SAGE_LOCAL/lib/python" - -# Remove old libraries. We really need to do this before building Python -# since Python tries to import some modules (e.g. ctypes) at build-time. -# We need to make sure that the old installed libraries in local/lib are -# not used for that. See https://github.com/sagemath/sage/issues/24605 -rm -f "$SAGE_LOCAL"/lib/lib"$PKG_BASE"* - - # Note: --without-ensurepip ensures that setuptools+pip are *not* installed # automatically when installing python3. They will be installed instead by # the separate setuptools and pip packages; see From 07726464376065ee153233a329e36060e05e705d Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Thu, 7 Dec 2023 19:31:14 -0800 Subject: [PATCH 18/23] Remove remaining redundant spkg-legacy-uninstall scripts --- build/pkgs/brial/spkg-legacy-uninstall | 5 ----- build/pkgs/gap/spkg-legacy-uninstall | 11 ----------- build/pkgs/gsl/spkg-legacy-uninstall | 3 --- build/pkgs/lcalc/spkg-legacy-uninstall | 2 -- build/pkgs/mpfrcx/spkg-legacy-uninstall | 4 ---- 5 files changed, 25 deletions(-) delete mode 100755 build/pkgs/brial/spkg-legacy-uninstall delete mode 100755 build/pkgs/gap/spkg-legacy-uninstall delete mode 100755 build/pkgs/gsl/spkg-legacy-uninstall delete mode 100755 build/pkgs/lcalc/spkg-legacy-uninstall delete mode 100755 build/pkgs/mpfrcx/spkg-legacy-uninstall diff --git a/build/pkgs/brial/spkg-legacy-uninstall b/build/pkgs/brial/spkg-legacy-uninstall deleted file mode 100755 index 59e01958685..00000000000 --- a/build/pkgs/brial/spkg-legacy-uninstall +++ /dev/null @@ -1,5 +0,0 @@ -#! /usr/bin/env bash -echo "Cleaning out old PolyBoRi and BRiAl installations" -rm -f "$SAGE_LOCAL"/lib/lib{polybori,brial}* -rm -rf "$SAGE_LOCAL"/include/polybori* -rm -rf "$SAGE_LOCAL"/share/polybori diff --git a/build/pkgs/gap/spkg-legacy-uninstall b/build/pkgs/gap/spkg-legacy-uninstall deleted file mode 100755 index a8e5c59e1fb..00000000000 --- a/build/pkgs/gap/spkg-legacy-uninstall +++ /dev/null @@ -1,11 +0,0 @@ -#! /usr/bin/env bash -# Remove existing GAP 4.x install(s) -rm -rf "$SAGE_LOCAL/gap/gap-4."* -rm -rf "$SAGE_SHARE/gap" -rm -f "$SAGE_LOCAL/gap/latest" -rm -f "$SAGE_LOCAL/bin/gap" -rm -f "$SAGE_LOCAL/bin/gac" - -# Remove old libgap headers and library -rm -rf "$SAGE_LOCAL/include/gap" -rm -rf "$SAGE_LOCAL/lib/gap" diff --git a/build/pkgs/gsl/spkg-legacy-uninstall b/build/pkgs/gsl/spkg-legacy-uninstall deleted file mode 100755 index 6c42f90b665..00000000000 --- a/build/pkgs/gsl/spkg-legacy-uninstall +++ /dev/null @@ -1,3 +0,0 @@ -#! /usr/bin/env bash -rm -rf "$SAGE_LOCAL"/include/gsl -rm -rf "$SAGE_LOCAL"/lib/libgsl* diff --git a/build/pkgs/lcalc/spkg-legacy-uninstall b/build/pkgs/lcalc/spkg-legacy-uninstall deleted file mode 100755 index 4cacdfd9367..00000000000 --- a/build/pkgs/lcalc/spkg-legacy-uninstall +++ /dev/null @@ -1,2 +0,0 @@ -#! /usr/bin/env bash -rm -fr "$SAGE_LOCAL"/include/libLfunction diff --git a/build/pkgs/mpfrcx/spkg-legacy-uninstall b/build/pkgs/mpfrcx/spkg-legacy-uninstall deleted file mode 100755 index 3538ccc54e4..00000000000 --- a/build/pkgs/mpfrcx/spkg-legacy-uninstall +++ /dev/null @@ -1,4 +0,0 @@ -#! /usr/bin/env bash -echo "Deleting old headers" -rm -f "$SAGE_LOCAL"/include/mpfrcx.h -rm -f "$SAGE_LOCAL"/lib/libmpfrcx.* From 04c327f9d9caa48713a0faee017768ef1b919c2c Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Thu, 7 Dec 2023 20:10:18 -0800 Subject: [PATCH 19/23] build/pkgs/openblas: Move removal of pkgconfig symlinks to spkg-preinst.in; fixes #30480 --- build/pkgs/openblas/spkg-install.in | 3 --- build/pkgs/openblas/spkg-preinst.in | 2 ++ 2 files changed, 2 insertions(+), 3 deletions(-) create mode 100644 build/pkgs/openblas/spkg-preinst.in diff --git a/build/pkgs/openblas/spkg-install.in b/build/pkgs/openblas/spkg-install.in index 2f8aea512bc..dbfcb6c1a75 100644 --- a/build/pkgs/openblas/spkg-install.in +++ b/build/pkgs/openblas/spkg-install.in @@ -59,9 +59,6 @@ if ! (sdh_make libs $OPENBLAS_CONFIGURE && sdh_make netlib $OPENBLAS_CONFIGURE & fi fi -# See https://github.com/sagemath/sage/issues/30335 -rm -f "$SAGE_LOCAL/lib/pkgconfig/cblas.pc" "$SAGE_LOCAL/lib/pkgconfig/blas.pc" "$SAGE_LOCAL/lib/pkgconfig/lapack.pc" - sdh_make_install PREFIX="$SAGE_LOCAL" NO_STATIC=1 $OPENBLAS_CONFIGURE cd .. ./write_pc_file.py diff --git a/build/pkgs/openblas/spkg-preinst.in b/build/pkgs/openblas/spkg-preinst.in new file mode 100644 index 00000000000..ced306d2d4e --- /dev/null +++ b/build/pkgs/openblas/spkg-preinst.in @@ -0,0 +1,2 @@ +# See https://github.com/sagemath/sage/issues/30335 +rm -f "$SAGE_LOCAL/lib/pkgconfig/cblas.pc" "$SAGE_LOCAL/lib/pkgconfig/blas.pc" "$SAGE_LOCAL/lib/pkgconfig/lapack.pc" From be27325a298902e4866ca492b5369829327a9592 Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Thu, 7 Dec 2023 21:06:53 -0800 Subject: [PATCH 20/23] build/pkgs/ipython/spkg-install.in: Remove legacy uninstall --- build/pkgs/ipython/spkg-install.in | 4 ---- 1 file changed, 4 deletions(-) diff --git a/build/pkgs/ipython/spkg-install.in b/build/pkgs/ipython/spkg-install.in index 5096a907a95..058b1344dc2 100644 --- a/build/pkgs/ipython/spkg-install.in +++ b/build/pkgs/ipython/spkg-install.in @@ -1,7 +1,3 @@ -# Old installations of ipython can leave a symlink which can interfere -# with proper installation. -rm -f "$SAGE_LOCAL"/bin/ipython - cd src sdh_pip_install . From cc2f2a19fd9c0074512979a5190d69f295e070cd Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Thu, 7 Dec 2023 21:09:07 -0800 Subject: [PATCH 21/23] build/pkgs/cvxopt/spkg-install.in: Remove legacy uninstall of docs --- build/pkgs/cvxopt/spkg-install.in | 4 ---- 1 file changed, 4 deletions(-) diff --git a/build/pkgs/cvxopt/spkg-install.in b/build/pkgs/cvxopt/spkg-install.in index 0081c40f819..8179125fc9a 100644 --- a/build/pkgs/cvxopt/spkg-install.in +++ b/build/pkgs/cvxopt/spkg-install.in @@ -82,10 +82,6 @@ sdh_pip_install . if [ "x$SAGE_SPKG_INSTALL_DOCS" = xyes ] ; then cd doc - # checking to see if there is previously installed documentation. - if [ -d $SAGE_LOCAL/share/doc/cvxopt/html ] ; then - rm -rf $SAGE_LOCAL/share/doc/cvxopt/html - fi mkdir -p "${SAGE_DESTDIR}${SAGE_LOCAL}/share/doc/cvxopt/html" cp -r html/* "${SAGE_DESTDIR}${SAGE_LOCAL}/share/doc/cvxopt/html/" fi From 96b7196f9da34c96a5e9579fc0e8ea7f9a327339 Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Thu, 7 Dec 2023 21:16:01 -0800 Subject: [PATCH 22/23] build/pkgs/frobby: Stage in DESTDIR, create spkg-legacy-uninstall --- build/pkgs/frobby/spkg-install.in | 13 +------------ build/pkgs/frobby/spkg-legacy-uninstall | 2 ++ 2 files changed, 3 insertions(+), 12 deletions(-) create mode 100755 build/pkgs/frobby/spkg-legacy-uninstall diff --git a/build/pkgs/frobby/spkg-install.in b/build/pkgs/frobby/spkg-install.in index 1a97cc6b682..60ed2c67207 100644 --- a/build/pkgs/frobby/spkg-install.in +++ b/build/pkgs/frobby/spkg-install.in @@ -1,4 +1,3 @@ -rm -rf "$SAGE_LOCAL/bin/frobby" GMP_INC_DIR="$SAGE_LOCAL/include"; export GMP_INC_DIR ldflags="-Wl,-rpath,$SAGE_LOCAL/lib -L$SAGE_LOCAL/lib/ -lgmpxx -lgmp"; export ldflags @@ -12,14 +11,4 @@ if [ $? -ne 0 ]; then exit 1 fi -if [ ! -f bin/release/frobby ]; then - echo "Frobby executable not found." - exit 1 -fi - -$CP bin/release/frobby "$SAGE_LOCAL/bin/" - -if [ ! -f "$SAGE_LOCAL/bin/frobby" ]; then - echo "Frobby executable not copied." - exit 1 -fi +sdh_install bin/release/frobby "$SAGE_LOCAL/bin" diff --git a/build/pkgs/frobby/spkg-legacy-uninstall b/build/pkgs/frobby/spkg-legacy-uninstall new file mode 100755 index 00000000000..a262741b2a9 --- /dev/null +++ b/build/pkgs/frobby/spkg-legacy-uninstall @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +rm -f "$SAGE_LOCAL/bin/frobby" From 77c6c0410deda2922c282b28be33a91ec359ae6f Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Thu, 7 Dec 2023 21:29:12 -0800 Subject: [PATCH 23/23] build/pkgs/sagetex/spkg-install.in: Remove legacy uninstall --- build/pkgs/sagetex/spkg-install.in | 3 --- 1 file changed, 3 deletions(-) diff --git a/build/pkgs/sagetex/spkg-install.in b/build/pkgs/sagetex/spkg-install.in index 55f0e9c76e5..058b1344dc2 100644 --- a/build/pkgs/sagetex/spkg-install.in +++ b/build/pkgs/sagetex/spkg-install.in @@ -1,6 +1,3 @@ cd src sdh_pip_install . - -echo "Removing old SageTex version(s)" -rm -rf $SAGE_LOCAL/share/texmf/tex/generic/sagetex