Skip to content
This repository was archived by the owner on Jan 30, 2023. It is now read-only.

Commit 54d0f99

Browse files
author
Matthias Koeppe
committed
Merge tag '9.2.beta6' into t/29441/public/29441
SageMath version 9.2.beta6, Release Date: 2020-07-25
2 parents 314b15f + ddaba54 commit 54d0f99

File tree

149 files changed

+6917
-753
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

149 files changed

+6917
-753
lines changed
+144
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
name: Test experimental packages with tox
2+
3+
## This GitHub Actions workflow runs SAGE_ROOT/tox.ini with select environments,
4+
## whenever a GitHub pull request is opened or synchronized in a repository
5+
## where GitHub Actions are enabled.
6+
##
7+
## It builds and checks some sage spkgs as defined in TARGETS.
8+
##
9+
## A job succeeds if there is no error.
10+
##
11+
## The build is run with "make V=0", so the build logs of individual packages are suppressed.
12+
##
13+
## At the end, all package build logs that contain an error are printed out.
14+
##
15+
## After all jobs have finished (or are canceled) and a short delay,
16+
## tar files of all logs are made available as "build artifacts".
17+
18+
#on: [push, pull_request]
19+
20+
on:
21+
pull_request:
22+
types: [opened, synchronize]
23+
push:
24+
tags:
25+
- '*'
26+
27+
env:
28+
TARGETS_PRE: build/make/Makefile
29+
TARGETS: build/make/Makefile
30+
# TARGETS_OPTIONAL see below
31+
32+
jobs:
33+
docker:
34+
runs-on: ubuntu-latest
35+
strategy:
36+
fail-fast: false
37+
max-parallel: 6
38+
matrix:
39+
tox_system_factor: [ubuntu-trusty, ubuntu-xenial, ubuntu-bionic, ubuntu-eoan, ubuntu-focal, debian-jessie, debian-stretch, debian-buster, debian-bullseye, debian-sid, linuxmint-17, linuxmint-18, linuxmint-19, linuxmint-19.3, fedora-26, fedora-27, fedora-28, fedora-29, fedora-30, fedora-31, centos-7, centos-8, gentoo, archlinux-latest, slackware-14.2, conda-forge, ubuntu-bionic-i386, ubuntu-eoan-i386, debian-buster-i386, centos-7-i386]
40+
tox_packages_factor: [maximal]
41+
targets_pattern: [0-g, h-o, p, q-z]
42+
env:
43+
TOX_ENV: docker-${{ matrix.tox_system_factor }}-${{ matrix.tox_packages_factor }}
44+
LOGS_ARTIFACT_NAME: logs-commit-${{ github.sha }}-tox-docker-${{ matrix.tox_system_factor }}-${{ matrix.tox_packages_factor }}
45+
DOCKER_TARGETS: configured with-targets with-targets-optional
46+
TARGETS_OPTIONAL: "$( echo $(PATH=build/bin:$PATH build/bin/sage-package list :experimental: | grep -v database_stein_watkins\\$ | grep -v polytopes_db_4d | grep '^[${{ matrix.targets_pattern }}]' ) )"
47+
steps:
48+
- uses: actions/checkout@v2
49+
with:
50+
fetch-depth: 500
51+
- name: fetch tags
52+
run: git fetch --depth=1 origin +refs/tags/*:refs/tags/*
53+
- name: free disk space
54+
run: |
55+
sudo swapoff -a
56+
sudo rm -f /swapfile
57+
sudo apt clean
58+
docker rmi $(docker image ls -aq)
59+
df -h
60+
- name: Install test prerequisites
61+
run: |
62+
sudo DEBIAN_FRONTEND=noninteractive apt-get update
63+
sudo DEBIAN_FRONTEND=noninteractive apt-get install python-tox
64+
- run: |
65+
set -o pipefail; EXTRA_DOCKER_BUILD_ARGS="--build-arg USE_MAKEFLAGS=\"-k V=0 SAGE_NUM_THREADS=3\"" tox -e $TOX_ENV -- $TARGETS 2>&1 | sed "/^configure: notice:/s|^|::warning file=artifacts/$LOGS_ARTIFACT_NAME/config.log::|;/^configure: warning:/s|^|::warning file=artifacts/$LOGS_ARTIFACT_NAME/config.log::|;/^configure: error:/s|^|::error file=artifacts/$LOGS_ARTIFACT_NAME/config.log::|;"
66+
- name: Copy logs from the docker image or build container
67+
run: |
68+
mkdir -p "artifacts/$LOGS_ARTIFACT_NAME"
69+
cp -r .tox/$TOX_ENV/Dockerfile .tox/$TOX_ENV/log "artifacts/$LOGS_ARTIFACT_NAME"
70+
if [ -f .tox/$TOX_ENV/Dockertags ]; then CONTAINERS=$(docker create $(tail -1 .tox/$TOX_ENV/Dockertags) /bin/bash || true); fi
71+
if [ -n "$CONTAINERS" ]; then for CONTAINER in $CONTAINERS; do for ARTIFACT in /sage/logs; do docker cp $CONTAINER:$ARTIFACT artifacts/$LOGS_ARTIFACT_NAME && HAVE_LOG=1; done; if [ -n "$HAVE_LOG" ]; then break; fi; done; fi
72+
if: always()
73+
- uses: actions/upload-artifact@v1
74+
with:
75+
path: artifacts
76+
name: ${{ env.LOGS_ARTIFACT_NAME }}
77+
if: always()
78+
- name: Print out logs for immediate inspection
79+
# and markup the output with GitHub Actions logging commands
80+
run: |
81+
.github/workflows/scan-logs.sh "artifacts/$LOGS_ARTIFACT_NAME"
82+
if: always()
83+
- name: Push docker images
84+
run: |
85+
if [ -f .tox/$TOX_ENV/Dockertags ]; then
86+
TOKEN="${{ secrets.DOCKER_PKG_GITHUB_TOKEN }}"
87+
if [ -z "$TOKEN" ]; then
88+
TOKEN="${{ secrets.GITHUB_TOKEN }}"
89+
fi
90+
echo "$TOKEN" | docker login docker.pkg.github.com -u ${{ github.actor }} --password-stdin
91+
for a in $(cat .tox/$TOX_ENV/Dockertags); do
92+
FULL_TAG=docker.pkg.github.com/${{ github.repository }}/$a
93+
docker tag $a $FULL_TAG
94+
echo Pushing $FULL_TAG
95+
docker push $FULL_TAG
96+
done || echo "(Ignoring errors)"
97+
fi
98+
if: always()
99+
100+
local-macos:
101+
102+
runs-on: macos-latest
103+
strategy:
104+
fail-fast: false
105+
max-parallel: 3
106+
matrix:
107+
tox_system_factor: [homebrew-macos, homebrew-macos-python3_xcode, homebrew-macos-python3_xcode-nokegonly, homebrew-macos-python3_pythonorg, conda-forge-macos]
108+
tox_packages_factor: [maximal]
109+
targets_pattern: [0-g, h-o, p, q-z]
110+
env:
111+
TOX_ENV: local-${{ matrix.tox_system_factor }}-${{ matrix.tox_packages_factor }}
112+
LOGS_ARTIFACT_NAME: logs-commit-${{ github.sha }}-tox-local-${{ matrix.tox_system_factor }}-${{ matrix.tox_packages_factor }}
113+
TARGETS_OPTIONAL: "$( echo $(PATH=build/bin:$PATH build/bin/sage-package list :experimental: | grep -v database_stein_watkins\\$ | grep -v polytopes_db_4d | grep '^[${{ matrix.targets_pattern }}]' ) )"
114+
steps:
115+
- uses: actions/checkout@v2
116+
- name: Install test prerequisites
117+
run: |
118+
brew install tox
119+
- name: Install python3 from python.org
120+
# As of 2020-03-30 (https://github.com/actions/virtual-environments/blob/master/images/macos/macos-10.15-Readme.md),
121+
# Python 3.7.7 is installed on GitHub Actions runners. But we install our own copy from the python.org binary package.
122+
run: |
123+
curl -o python3.pkg https://www.python.org/ftp/python/3.7.7/python-3.7.7-macosx10.9.pkg
124+
sudo installer -verbose -pkg python3.pkg -target /
125+
if: contains(matrix.tox_system_factor, 'python3_pythonorg')
126+
- name: Build and test with tox
127+
# We use a high parallelization on purpose in order to catch possible parallelization bugs in the build scripts.
128+
# For doctesting, we use a lower parallelization to avoid timeouts.
129+
run: |
130+
MAKE="make -j12" tox -e $TOX_ENV -- SAGE_NUM_THREADS=4 $TARGETS
131+
- name: Prepare logs artifact
132+
run: |
133+
mkdir -p "artifacts/$LOGS_ARTIFACT_NAME"; cp -r .tox/*/log "artifacts/$LOGS_ARTIFACT_NAME"
134+
if: always()
135+
- uses: actions/upload-artifact@v1
136+
with:
137+
path: artifacts
138+
name: ${{ env.LOGS_ARTIFACT_NAME }}
139+
if: always()
140+
- name: Print out logs for immediate inspection
141+
# and markup the output with GitHub Actions logging commands
142+
run: |
143+
.github/workflows/scan-logs.sh "artifacts/$LOGS_ARTIFACT_NAME"
144+
if: always()

.github/workflows/tox-optional.yml

+10-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Run SAGE_ROOT/tox.ini TARGETS_OPTIONAL
1+
name: Test optional packages with tox
22

33
## This GitHub Actions workflow runs SAGE_ROOT/tox.ini with select environments,
44
## whenever a GitHub pull request is opened or synchronized in a repository
@@ -27,7 +27,7 @@ on:
2727
env:
2828
TARGETS_PRE: build/make/Makefile
2929
TARGETS: build/make/Makefile
30-
TARGETS_OPTIONAL: 4ti2 pynormaliz qepcad lrslib latte_int topcom barvinok isl qhull sage_numerical_backends_coin primecount plantri polymake jupymake kenzo libsemigroups mcqd meataxe mpfrcx openssl p_group_cohomology rst2ipynb sirocco tdlib tides
30+
# TARGETS_OPTIONAL see below
3131

3232
jobs:
3333
docker:
@@ -38,10 +38,14 @@ jobs:
3838
matrix:
3939
tox_system_factor: [ubuntu-trusty, ubuntu-xenial, ubuntu-bionic, ubuntu-eoan, ubuntu-focal, debian-jessie, debian-stretch, debian-buster, debian-bullseye, debian-sid, linuxmint-17, linuxmint-18, linuxmint-19, linuxmint-19.3, fedora-26, fedora-27, fedora-28, fedora-29, fedora-30, fedora-31, centos-7, centos-8, gentoo, archlinux-latest, slackware-14.2, conda-forge, ubuntu-bionic-i386, ubuntu-eoan-i386, debian-buster-i386, centos-7-i386]
4040
tox_packages_factor: [maximal]
41+
targets_pattern: [0-g, h-o, p, q-z]
4142
env:
4243
TOX_ENV: docker-${{ matrix.tox_system_factor }}-${{ matrix.tox_packages_factor }}
4344
LOGS_ARTIFACT_NAME: logs-commit-${{ github.sha }}-tox-docker-${{ matrix.tox_system_factor }}-${{ matrix.tox_packages_factor }}
4445
DOCKER_TARGETS: configured with-targets with-targets-optional
46+
# Test all optional packages, but do not test huge packages,
47+
# and do not test packages that require external software
48+
TARGETS_OPTIONAL: "$( echo $(PATH=build/bin:$PATH build/bin/sage-package list :optional: | grep -v database_stein_watkins\\$ | grep -v polytopes_db_4d | grep -v cplex | grep -v gurobi | grep '^[${{ matrix.targets_pattern }}]' ) )"
4549
steps:
4650
- uses: actions/checkout@v2
4751
with:
@@ -104,9 +108,13 @@ jobs:
104108
matrix:
105109
tox_system_factor: [homebrew-macos, homebrew-macos-python3_xcode, homebrew-macos-python3_xcode-nokegonly, homebrew-macos-python3_pythonorg, conda-forge-macos]
106110
tox_packages_factor: [maximal]
111+
targets_pattern: [0-g, h-o, p, q-z]
107112
env:
108113
TOX_ENV: local-${{ matrix.tox_system_factor }}-${{ matrix.tox_packages_factor }}
109114
LOGS_ARTIFACT_NAME: logs-commit-${{ github.sha }}-tox-local-${{ matrix.tox_system_factor }}-${{ matrix.tox_packages_factor }}
115+
# Test all optional packages, but do not test huge packages
116+
# and do not test packages that require external software
117+
TARGETS_OPTIONAL: "$( echo $(PATH=build/bin:$PATH build/bin/sage-package list :optional: | grep -v database_stein_watkins\\$ | grep -v polytopes_db_4d | grep -v cplex | grep -v gurobi | grep '^[${{ matrix.targets_pattern }}]' ) )"
110118
steps:
111119
- uses: actions/checkout@v2
112120
- name: Install test prerequisites

README.md

-5
Original file line numberDiff line numberDiff line change
@@ -255,11 +255,6 @@ Guide](https://doc.sagemath.org/html/en/installation).
255255
powerful machines, you might even consider `-j16`, as building with
256256
more jobs than CPU cores can speed things up further.
257257

258-
If you want to run the test suite for each individual Sage package
259-
as it gets installed, type `export SAGE_CHECK="yes"`. This will run
260-
each test suite, raising an error if any failure occurs. If set to
261-
``warn``, then only a warning is printed in this case.
262-
263258
To reduce the terminal output during the build, type `export V=0`.
264259
(`V` stands for "verbosity".)
265260

VERSION.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
SageMath version 9.2.beta5, Release Date: 2020-07-12
1+
SageMath version 9.2.beta6, Release Date: 2020-07-25

bootstrap

+1
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,7 @@ mkdir config 2>/dev/null
206206
# Get autotools from our own package into PATH (Trac #21214).
207207
# If Sage has not been built yet, this will fail due to a missing
208208
# sage-env-config. We just ignore that error.
209+
source src/bin/sage-env-config 2>/dev/null
209210
source src/bin/sage-env 2>/dev/null
210211

211212

build/bin/sage-spkg

+2-1
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ fi
166166
# The following sets environment variables for building packages.
167167
# Since this is sourced, it returns a non-zero value on errors rather
168168
# than exiting. Using dot suggested by W. Cheung.
169+
. sage-env-config
169170
. sage-env
170171

171172

@@ -488,7 +489,7 @@ export PKG_NAME="$PKG_NAME"
488489
export PKG_BASE="$PKG_BASE"
489490
export PKG_VER="$PKG_VER"
490491
491-
for lib in "\$SAGE_ROOT/build/bin/sage-dist-helpers" "\$SAGE_SRC/bin/sage-env" "\$SAGE_ROOT/build/bin/sage-build-env-config"; do
492+
for lib in "\$SAGE_ROOT/build/bin/sage-dist-helpers" "\$SAGE_SRC/bin/sage-env-config" "\$SAGE_SRC/bin/sage-env" "\$SAGE_ROOT/build/bin/sage-build-env-config"; do
492493
source "\$lib"
493494
if [ \$? -ne 0 ]; then
494495
echo >&2 "Error: failed to source \$lib"

build/bin/write-dockerfile.sh

+5
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,11 @@ case $SYSTEM in
4343
ARG BASE_IMAGE=ubuntu:latest
4444
FROM \${BASE_IMAGE} as with-system-packages
4545
EOF
46+
if [ -n "$DIST_UPGRADE" ]; then
47+
cat <<EOF
48+
RUN sed -i.bak $DIST_UPGRADE /etc/apt/sources.list && apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y dist-upgrade
49+
EOF
50+
fi
4651
EXISTS="2>/dev/null >/dev/null apt-cache show"
4752
UPDATE="apt-get update &&"
4853
INSTALL="DEBIAN_FRONTEND=noninteractive apt-get install -qqq --no-install-recommends --yes"

build/make/Makefile.in

+8-2
Original file line numberDiff line numberDiff line change
@@ -517,13 +517,15 @@ endif
517517
#
518518
# $(INST)/<pkgname>-<pkgvers>: <dependencies>
519519
# $(AM_V_at)cd '$SAGE_ROOT' && \\
520+
# . '$SAGE_ROOT/src/bin/sage-env-config' && \\
520521
# . '$SAGE_ROOT/src/bin/sage-env' && \\
521522
# sage-logger -p '$SAGE_ROOT/build/pkgs/<pkgname>/spkg-install' '$(SAGE_LOGS)/<pkgname>.log'
522523
#
523524
# <pkgname>: $(INST)/<pkgname>-<pkgvers>
524525
#
525526
# <pkgname>-clean:
526527
# -$(AM_V_at)cd '$SAGE_ROOT' && \\
528+
# . '$SAGE_ROOT/src/bin/sage-env-config' && \\
527529
# . '$SAGE_ROOT/src/bin/sage-env' && \\
528530
# '$SAGE_ROOT/build/pkgs/$PKG_NAME/spkg-uninstall'
529531

@@ -536,15 +538,19 @@ $(1)-build-deps: $(3)
536538

537539
$$(INST)/$(1)-$(2): $(3)
538540
$(AM_V_at)cd '$$(SAGE_ROOT)/build/pkgs/$(1)' && \
539-
. '$$(SAGE_ROOT)/src/bin/sage-env' && . '$$(SAGE_ROOT)/build/bin/sage-build-env-config' && \
541+
. '$$(SAGE_ROOT)/src/bin/sage-env-config' && \
542+
. '$$(SAGE_ROOT)/src/bin/sage-env' && \
543+
. '$$(SAGE_ROOT)/build/bin/sage-build-env-config' && \
540544
sage-logger -p '$$(SAGE_ROOT)/build/pkgs/$(1)/spkg-install' '$$(SAGE_LOGS)/$(1)-$(2).log'
541545
touch "$$@"
542546

543547
$(1): $$(INST)/$(1)-$(2)
544548

545549
$(1)-uninstall:
546550
-$(AM_V_at)cd '$$(SAGE_ROOT)/build/pkgs/$(1)' && \
547-
. '$$(SAGE_ROOT)/src/bin/sage-env' && . '$$(SAGE_ROOT)/build/bin/sage-build-env-config' && \
551+
. '$$(SAGE_ROOT)/src/bin/sage-env-config' && \
552+
. '$$(SAGE_ROOT)/src/bin/sage-env' && \
553+
. '$$(SAGE_ROOT)/build/bin/sage-build-env-config' && \
548554
'$$(SAGE_ROOT)/build/pkgs/$(1)/spkg-uninstall'
549555
-rm -f "$$(INST)/$(1)-$(2)"
550556

build/pkgs/cmake/spkg-check.in

+7-23
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,8 @@
1-
if [ "$UNAME" = Darwin ]; then
2-
CC=clang
3-
CXX=clang++
4-
fi
5-
6-
cd src
7-
unset MACOSX_DEPLOYMENT_TARGET
8-
# Supress tests failing for reason out of our controls
9-
FAILING_TESTS="CTestTestStopTime|TestUpload|ctest_submit"
10-
# gui interface may pull dependency conflicting with
11-
# sage libraries
12-
# (1) QT libraries
13-
FAILING_TESTS="${FAILING_TESTS}|Qt5Autogen|Qt4Autogen|Qt4Targets|Qt4And5AutomocReverse"
14-
# (2) GTK2
15-
FAILING_TESTS="${FAILING_TESTS}|GTK2Components|GTK2Targets"
16-
# BundleUtilities test is failing on some platforms, skipped in Gentoo for that reason
17-
FAILING_TESTS="${FAILING_TESTS}|BundleUtilities"
18-
# Test failing on freeBSD. Upstream acknoledged the test is faulty
19-
# on that platform https://gitlab.kitware.com/cmake/cmake/issues/16887
20-
if [ "$UNAME" = "FreeBSD" ]; then
21-
FAILING_TESTS="${FAILING_TESTS}|RunCMake.GNUInstallDirs"
22-
fi
23-
ctest --extra-verbose --output-on-failure -E "(${FAILING_TESTS})"
1+
# Do not run a test suite: see https://trac.sagemath.org/ticket/30093.
2+
#
3+
# - The test suite takes a long time and can fail in minor ways.
4+
# - If some major aspect of cmake fails, it only affects the build
5+
# process of Sage, not the mathematical correctness of its results.
6+
# - If some minor aspect of cmake fails, it won't affect anything about Sage.
247

8+
echo "We skip the test suite for cmake: see https://trac.sagemath.org/ticket/30093."

build/pkgs/configure/checksums.ini

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
tarball=configure-VERSION.tar.gz
2-
sha1=1af52fa76e46ec00e41627bf8c3b2d4ac440968e
3-
md5=426664a892601af3cf54cd33648486a7
4-
cksum=1836178061
2+
sha1=eac827f97c1258cf6524a81084172a43bf7c4680
3+
md5=bf07fb027bc4c586edf10132298fa363
4+
cksum=546608769
+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
339b4599590f3dc3acec5eace4b7a82f210d3219
1+
e41d396f5d30996ae515399b28675a60e97a1996

build/pkgs/curl/spkg-check.in

+8-2
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,8 @@
1-
cd src
2-
$MAKE check
1+
# Do not run a test suite: see https://trac.sagemath.org/ticket/30093.
2+
#
3+
# - The test suite takes a long time and can fail in minor ways.
4+
# - If some major aspect of curl fails, it only affects the build
5+
# process of Sage, not the mathematical correctness of its results.
6+
# - If some minor aspect of curl fails, it won't affect anything about Sage.
7+
8+
echo "We skip the test suite for curl: see https://trac.sagemath.org/ticket/30093."

build/pkgs/cython/checksums.ini

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
tarball=Cython-VERSION.tar.gz
2-
sha1=02278e5a972ffc4856451f507903db68d08cfd6e
3-
md5=0936311ccd09f1164ab2f46ca5cd8c3b
4-
cksum=1144843552
2+
sha1=3aafce4489a7bc7a48c843cdfb8dac4677fdac50
3+
md5=12c5e45af71dcc6dff28cdcbcbef6f39
4+
cksum=3658613797
55
upstream_url=https://pypi.io/packages/source/C/Cython/Cython-VERSION.tar.gz

build/pkgs/cython/package-version.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.29.17
1+
0.29.21

build/pkgs/ecl/package-version.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
20.4.24.p0
1+
20.4.24.p1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
From 29239fa1b38f55b9a263b9582a43bae18cb5980d Mon Sep 17 00:00:00 2001
2+
From: Marius Gerbershagen <[email protected]>
3+
Date: Wed, 6 May 2020 20:58:20 +0200
4+
Subject: [PATCH 1/3] unicode: fix ecl_string_case for non-ascii characters
5+
6+
Problem reported and fix provided by Vladimir Sedach on the ecl-devel
7+
mailing list.
8+
---
9+
src/c/character.d | 9 +++++----
10+
1 file changed, 5 insertions(+), 4 deletions(-)
11+
12+
diff --git a/src/c/character.d b/src/c/character.d
13+
index a69b6e4b..c3ef328a 100644
14+
--- a/src/c/character.d
15+
+++ b/src/c/character.d
16+
@@ -99,6 +99,7 @@ cl_both_case_p(cl_object c)
17+
int
18+
ecl_string_case(cl_object s)
19+
{
20+
+ /* Returns 1 if string is all uppercase, -1 if all lowercase, and 0 if mixed case */
21+
int upcase;
22+
cl_index i;
23+
ecl_base_char *text;
24+
@@ -106,16 +107,16 @@ ecl_string_case(cl_object s)
25+
switch (ecl_t_of(s)) {
26+
#ifdef ECL_UNICODE
27+
case t_string:
28+
- s = si_coerce_to_base_string(s);
29+
#endif
30+
case t_base_string:
31+
- text = (ecl_base_char*)s->base_string.self;
32+
for (i = 0, upcase = 0; i < s->base_string.dim; i++) {
33+
- if (ecl_upper_case_p(text[i])) {
34+
+ ecl_character c = ecl_char(s, i);
35+
+
36+
+ if (ecl_upper_case_p(c)) {
37+
if (upcase < 0)
38+
return 0;
39+
upcase = +1;
40+
- } else if (ecl_lower_case_p(text[i])) {
41+
+ } else if (ecl_lower_case_p(c)) {
42+
if (upcase > 0)
43+
return 0;
44+
upcase = -1;
45+
--
46+
2.26.2
47+

0 commit comments

Comments
 (0)