Retired: Fails to install

See https://pagure.io/releng/issue/11685
This commit is contained in:
Miro Hrončok 2023-09-26 12:04:37 +02:00
parent 0aff64e56a
commit b63a64ed31
32 changed files with 3 additions and 5929 deletions

2
.gitignore vendored
View file

@ -1,2 +0,0 @@
/sage-*.tar.gz
/cremona-*.tar.gz

View file

@ -1,5 +0,0 @@
# sagemath
[Sage](https://www.sagemath.org/) is a free open-source mathematics software
system licensed under the GPL. It combines the power of many existing
open-source packages into a common Python-based interface.

3
dead.package Normal file
View file

@ -0,0 +1,3 @@
Retired: Fails to install
See https://pagure.io/releng/issue/11685

View file

@ -1,11 +0,0 @@
compatible = 0
/* gp prompt */
prompt = "? "
/* Disable timer */
timer = 0
/* Disable the break loop, otherwise gp will seem to hang on errors */
breakloop = 0

View file

@ -1,108 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop-application">
<id>org.sagemath.sage</id>
<metadata_license>CC0-1.0</metadata_license>
<project_license>GPL-2.0-or-later</project_license>
<name>sagemath</name>
<summary>Mathematics Software System</summary>
<description>
<p>
Sage is a free open-source mathematics software system licensed
under the GPL. It combines the power of many existing open-source
packages into a common Python-based interface.
</p>
</description>
<launchable type="desktop-id">org.sagemath.sage.desktop</launchable>
<screenshots>
<screenshot type="default">
<image>https://www.flickr.com/photos/sagescreenshots/2131280369/in/album-72157603532209437/</image>
<caption>Notebook</caption>
</screenshot>
<screenshot>
<image>https://www.flickr.com/photos/sagescreenshots/2131280403/in/album-72157603532209437/</image>
<caption>Symbolic computation</caption>
</screenshot>
<screenshot>
<image>https://www.flickr.com/photos/sagescreenshots/2131280441/in/album-72157603532209437/</image>
<caption>More symbolic computation</caption>
</screenshot>
<screenshot>
<image>https://www.flickr.com/photos/sagescreenshots/2132057124/in/album-72157603532209437/</image>
<caption>Basic plotting</caption>
</screenshot>
<screenshot>
<image>https://www.flickr.com/photos/sagescreenshots/2131280543/in/album-72157603532209437/</image>
<caption>Plotting multiple functions</caption>
</screenshot>
<screenshot>
<image>https://www.flickr.com/photos/sagescreenshots/2131280585/in/album-72157603532209437/</image>
<caption>Plotting options</caption>
</screenshot>
<screenshot>
<image>https://www.flickr.com/photos/sagescreenshots/2131280629/in/album-72157603532209437/</image>
<caption>Polygons</caption>
</screenshot>
<screenshot>
<image>https://www.flickr.com/photos/sagescreenshots/2131280689/in/album-72157603532209437/</image>
<caption>Text annotations</caption>
</screenshot>
<screenshot>
<image>https://www.flickr.com/photos/sagescreenshots/2131280719/in/album-72157603532209437/</image>
<caption>Parametric plotting</caption>
</screenshot>
<screenshot>
<image>https://www.flickr.com/photos/sagescreenshots/2132057406/in/album-72157603532209437/</image>
<caption>List comprehensions</caption>
</screenshot>
<screenshot>
<image>https://www.flickr.com/photos/sagescreenshots/2132057442/in/album-72157603532209437/</image>
<caption>Rubik's cube</caption>
</screenshot>
<screenshot>
<image>https://www.flickr.com/photos/sagescreenshots/2132057494/in/album-72157603532209437/</image>
<caption>Scrambled cube</caption>
</screenshot>
<screenshot>
<image>https://www.flickr.com/photos/sagescreenshots/2132057548/in/album-72157603532209437/</image>
<caption>3D cube</caption>
</screenshot>
<screenshot>
<image>https://www.flickr.com/photos/sagescreenshots/2131280959/in/album-72157603532209437/</image>
<caption>Interactive 3D cube</caption>
</screenshot>
<screenshot>
<image>https://www.flickr.com/photos/sagescreenshots/2132057724/in/album-72157603532209437/</image>
<caption>3D plotting with Tachyon</caption>
</screenshot>
<screenshot>
<image>https://www.flickr.com/photos/sagescreenshots/2132057802/in/album-72157603532209437/</image>
<caption>Parametric 3D plotting</caption>
</screenshot>
<screenshot>
<image>https://www.flickr.com/photos/sagescreenshots/2132057836/in/album-72157603532209437/</image>
<caption>JSMath and LaTeX</caption>
</screenshot>
<screenshot>
<image>https://www.flickr.com/photos/sagescreenshots/2132057874/in/album-72157603532209437/</image>
<caption>Matrix operations</caption>
</screenshot>
<screenshot>
<image>https://www.flickr.com/photos/sagescreenshots/2131281199/in/album-72157603532209437/</image>
<caption>Plotting of graphs</caption>
</screenshot>
<screenshot>
<image>https://www.flickr.com/photos/sagescreenshots/2131281877/in/album-72157603532209437/</image>
<caption>Contour plot</caption>
</screenshot>
</screenshots>
<update_contact>loganjerry@gmail.com</update_contact>
<url type="homepage">https://www.sagemath.org/</url>
<url type="bugtracker">https://trac.sagemath.org/</url>
<url type="faq">https://doc.sagemath.org/html/en/faq/</url>
<url type="help">https://doc.sagemath.org/</url>
<url type="donation">https://github.com/sponsors/sagemath</url>
<content_rating type="oars-1.0"></content_rating>
<provides>
<binary>sage</binary>
</provides>
</component>

View file

@ -1,20 +0,0 @@
diff -up src/sage/modular/arithgroup/farey.cpp.orig src/sage/modular/arithgroup/farey.cpp
--- src/sage/modular/arithgroup/farey.cpp.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/modular/arithgroup/farey.cpp 2023-03-13 12:54:35.465197691 -0600
@@ -24,6 +24,7 @@
#include <sstream>
#include <algorithm>
#include <cassert>
+#include <functional>
#include <gmpxx.h>
#include <Python.h>
@@ -737,7 +738,7 @@ size_t FareySymbol::nu3() const {
size_t FareySymbol::rank_pi() const {
if( index() == 2 ) return 1;
return count_if(pairing.begin(), pairing.end(),
- bind2nd(greater<int>(), 0))/2;
+ bind(greater<int>(), placeholders::_1, 0))/2;
}
size_t FareySymbol::number_of_cusps() const {

View file

@ -1,13 +0,0 @@
diff -up src/sage_setup/command/sage_build_cython.py.orig src/sage_setup/command/sage_build_cython.py
--- src/sage_setup/command/sage_build_cython.py.orig 2020-10-30 16:04:33.325411659 -0600
+++ src/sage_setup/command/sage_build_cython.py 2020-10-30 16:09:19.770071485 -0600
@@ -262,6 +262,9 @@ class sage_build_cython(Command):
with open(self._version_file, 'w') as f:
f.write(self._version_stamp)
+ # Remove buildroot paths from the generated files
+ subprocess.run(["find", "build/cythonized/sage", "-type", "f", "-exec", "sed", "-i", "s|@@BUILDROOT@@||g", "{}", "+"], check=True)
+
# Finally, copy relevant cythonized files from build/cythonized
# tree into the build-lib tree
for (dst_dir, src_files) in self.get_cythonized_package_files():

View file

@ -1,232 +0,0 @@
diff -up src/sage/graphs/base/boost_interface.cpp.orig src/sage/graphs/base/boost_interface.cpp
--- src/sage/graphs/base/boost_interface.cpp.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/graphs/base/boost_interface.cpp 2023-03-13 11:32:02.724494081 -0600
@@ -240,7 +240,7 @@ public:
try {
boost::dijkstra_shortest_paths(graph, vertices[s], distance_map(boost::make_iterator_property_map(distances.begin(), index))
.predecessor_map(boost::make_iterator_property_map(predecessors.begin(), index)));
- } catch (boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::negative_edge> > e) {
+ } catch (boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::negative_edge> >& e) {
return to_return;
}
diff -up src/sage/symbolic/ginac/function.cpp.orig src/sage/symbolic/ginac/function.cpp
--- src/sage/symbolic/ginac/function.cpp.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/symbolic/ginac/function.cpp 2023-03-13 11:32:31.540967570 -0600
@@ -961,12 +961,12 @@ ex function::evalf(int level, PyObject*
try {
return n.try_py_method(get_name());
}
- catch (std::logic_error) {
+ catch (std::logic_error&) {
try {
const numeric& nn = ex_to<numeric>(n.evalf()).try_py_method(get_name());
return nn.to_dict_parent(kwds);
}
- catch (std::logic_error) {}
+ catch (std::logic_error&) {}
}
}
return function(serial,eseq).hold();
diff -up src/sage/symbolic/ginac/inifcns_trans.cpp.orig src/sage/symbolic/ginac/inifcns_trans.cpp
--- src/sage/symbolic/ginac/inifcns_trans.cpp.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/symbolic/ginac/inifcns_trans.cpp 2023-03-13 11:32:57.173499217 -0600
@@ -379,7 +379,7 @@ static ex log_series(const ex &arg,
// maybe substitution of rel into arg fails because of a pole
try {
arg_pt = arg.subs(rel, subs_options::no_pattern);
- } catch (pole_error) {
+ } catch (pole_error&) {
must_expand_arg = true;
}
// or we are at the branch point anyways
diff -up src/sage/symbolic/ginac/mpoly-singular.cpp.orig src/sage/symbolic/ginac/mpoly-singular.cpp
--- src/sage/symbolic/ginac/mpoly-singular.cpp.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/symbolic/ginac/mpoly-singular.cpp 2023-03-13 11:33:28.275930939 -0600
@@ -76,7 +76,7 @@ static CanonicalForm num2canonical(const
try {
return n.to_canonical();
}
- catch (std::runtime_error) {
+ catch (std::runtime_error&) {
if (not n.is_real()) {
numeric re = n.real();
numeric im = n.imag();
@@ -233,7 +233,7 @@ const CanonicalForm ex::to_canonical(ex_
try {
return ::power(var, n.to_long());
}
- catch (std::runtime_error) {
+ catch (std::runtime_error&) {
throw std::runtime_error("exponent too big");
}
}
@@ -261,7 +261,7 @@ const CanonicalForm ex::to_canonical(ex_
try {
return ::power(var, n.to_long());
}
- catch (std::runtime_error) {
+ catch (std::runtime_error&) {
throw std::runtime_error("exponent too big");
}
}
diff -up src/sage/symbolic/ginac/numeric.cpp.orig src/sage/symbolic/ginac/numeric.cpp
--- src/sage/symbolic/ginac/numeric.cpp.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/symbolic/ginac/numeric.cpp 2023-03-13 12:53:12.671709229 -0600
@@ -3636,11 +3636,11 @@ const numeric numeric::real() const {
try {
return try_py_method("real");
}
- catch (std::logic_error) {}
+ catch (std::logic_error&) {}
try {
return try_py_method("real_part");
}
- catch (std::logic_error) {}
+ catch (std::logic_error&) {}
return *this;
}
default:
@@ -3664,11 +3664,11 @@ const numeric numeric::imag() const {
try {
return try_py_method("imag");
}
- catch (std::logic_error) {}
+ catch (std::logic_error&) {}
try {
return try_py_method("imag_part");
}
- catch (std::logic_error) {}
+ catch (std::logic_error&) {}
return *_num0_p;
}
default:
@@ -4945,11 +4945,11 @@ const numeric Li2(const numeric &x, PyOb
try {
return x.try_py_method("dilog");
}
- catch (std::logic_error) {}
+ catch (std::logic_error&) {}
try {
return x.try_py_method("polylog", *_num2_p);
}
- catch (std::logic_error) {}
+ catch (std::logic_error&) {}
return x.Li2(*_num2_p, parent);
}
diff -up src/sage/symbolic/ginac/pseries.cpp.orig src/sage/symbolic/ginac/pseries.cpp
--- src/sage/symbolic/ginac/pseries.cpp.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/symbolic/ginac/pseries.cpp 2023-03-13 11:34:56.953310716 -0600
@@ -855,7 +855,7 @@ ex mul::series(const relational & r, int
bool flag_redo = false;
try {
real_ldegree = buf.expand().ldegree(sym-r.rhs()).to_int();
- } catch (std::runtime_error) {}
+ } catch (std::runtime_error&) {}
if (real_ldegree == 0) {
if ( factor < 0 ) {
@@ -1053,7 +1053,7 @@ ex power::series(const relational & r, i
if (is_exactly_a<infinity>(basis_subs)) {
must_expand_basis = true;
}
- } catch (pole_error) {
+ } catch (pole_error&) {
must_expand_basis = true;
}
@@ -1063,7 +1063,7 @@ ex power::series(const relational & r, i
if (is_exactly_a<infinity>(exponent_subs)) {
exponent_is_regular = false;
}
- } catch (pole_error) {
+ } catch (pole_error&) {
exponent_is_regular = false;
}
@@ -1133,7 +1133,7 @@ ex power::series(const relational & r, i
ex result;
try {
result = ex_to<pseries>(e).power_const(numexp, order);
- } catch (pole_error) {
+ } catch (pole_error&) {
epvector ser;
ser.emplace_back(Order(_ex1), order);
result = pseries(r, ser);
@@ -1203,7 +1203,7 @@ ex ex::series(const ex & r, int order, u
order,
options);
}
- catch(flint_error) {
+ catch(flint_error&) {
;
}
}
diff -up src/sage/symbolic/ginac/sum.cpp.orig src/sage/symbolic/ginac/sum.cpp
--- src/sage/symbolic/ginac/sum.cpp.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/symbolic/ginac/sum.cpp 2023-03-13 11:35:12.139033264 -0600
@@ -562,7 +562,7 @@ ex gosper_sum_definite(ex f, ex s, ex a,
return res;
return t;
}
- catch (gosper_domain_error) {
+ catch (gosper_domain_error&) {
*success = 0;
return _ex0;
}
@@ -579,7 +579,7 @@ ex gosper_sum_indefinite(ex f, ex s, int
return res;
return t;
}
- catch (gosper_domain_error) {
+ catch (gosper_domain_error&) {
*success = 0;
return _ex0;
}
diff -up src/sage/symbolic/ginac/upoly-ginac.cpp.orig src/sage/symbolic/ginac/upoly-ginac.cpp
--- src/sage/symbolic/ginac/upoly-ginac.cpp.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/symbolic/ginac/upoly-ginac.cpp 2023-03-13 11:35:36.657585291 -0600
@@ -240,7 +240,7 @@ ex decomp_rational(const ex &a, const ex
try {
q = quo(numer, denom, x);
}
- catch (std::logic_error) {
+ catch (std::logic_error&) {
return a;
}
return q + rem(numer, denom, x) / denom;
@@ -536,7 +536,7 @@ ex parfrac(const ex & a, const ex & x)
// Convert N(x)/D(x) -> Q(x) + R(x)/D(x), so degree(R) < degree(D)
qr = quo_rem(numer, denom, x, true);
}
- catch (std::logic_error) {
+ catch (std::logic_error&) {
return a;
}
// Factorize denominator and compute cofactors
diff -up src/sage/symbolic/ginac/useries.cpp.orig src/sage/symbolic/ginac/useries.cpp
--- src/sage/symbolic/ginac/useries.cpp.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/symbolic/ginac/useries.cpp 2023-03-13 11:35:59.505167856 -0600
@@ -322,10 +322,10 @@ bool useries_can_handle(const ex& the_ex
(void) nd.op(1).degree(s).to_long();
(void) nd.op(1).ldegree(s).to_long();
}
- catch (conversion_error) {
+ catch (conversion_error&) {
throw std::runtime_error("exponent too big");
}
- catch (std::runtime_error) {}
+ catch (std::runtime_error&) {}
}
return ok;
}
@@ -406,7 +406,7 @@ ex useries(const ex& the_ex, const symbo
try {
ldeg = low_series_degree(the_ex);
}
- catch (ldegree_error) {
+ catch (ldegree_error&) {
may_extend = true;
}

View file

@ -1,34 +0,0 @@
Fix this error:
Inserting allgens.90000-99999
Committing...
Traceback (most recent call last):
File "/builddir/build/BUILD/sage-9.6/cremona.sage.py", line 10, in <module>
c._init_from_ftpdata('ecdata-2019-10-29')
File "/builddir/build/BUILDROOT/sagemath-9.6-4.fc38.x86_64/usr/lib64/python3.11/site-packages/sage/databases/cremona.py", line 1397, in _init_from_ftpdata
self.vacuum()
File "/builddir/build/BUILDROOT/sagemath-9.6-4.fc38.x86_64/usr/lib64/python3.11/site-packages/sage/databases/sql_db.py", line 2180, in vacuum
self.__connection__.execute('VACUUM')
sqlite3.OperationalError: cannot VACUUM from within a transaction
diff -up src/sage/databases/cremona.py.orig src/sage/databases/cremona.py
--- src/sage/databases/cremona.py.orig 2021-08-22 02:44:33.000000000 -0600
+++ src/sage/databases/cremona.py 2021-08-26 13:33:03.200366675 -0600
@@ -885,7 +885,8 @@ class MiniCremonaDatabase(SQLDatabase):
message = "There is no elliptic curve with label " \
+ label + " in the default database; try installing " \
+ "the optional package database_cremona_ellcurve which " \
- + "contains the complete Cremona database"
+ + "contains the complete Cremona database: " \
+ + "sudo dnf install sagemath-data-elliptic_curves_large"
raise ValueError(message)
ainvs = eval(c[0])
data = {'cremona_label': label,
@@ -1670,6 +1671,7 @@ class LargeCremonaDatabase(MiniCremonaDa
con.executemany("UPDATE t_curve SET gens=? WHERE curve=?",
curve_data)
print("Committing...")
+ self.commit()
if largest_conductor and int(v[0]) > largest_conductor:
break

View file

@ -1,24 +0,0 @@
diff -up src/sage/numerical/backends/cvxopt_backend.pyx.orig src/sage/numerical/backends/cvxopt_backend.pyx
--- src/sage/numerical/backends/cvxopt_backend.pyx.orig 2021-05-09 16:00:11.000000000 -0600
+++ src/sage/numerical/backends/cvxopt_backend.pyx 2021-05-28 12:05:47.551650940 -0600
@@ -550,7 +550,7 @@ cdef class CVXOPTBackend(GenericBackend)
self.answer = solvers.lp(c,G,h)
#possible outcomes
- if self.answer['status'] == 'optimized':
+ if self.answer['status'] in ['optimized', 'optimal']:
pass
elif self.answer['status'] == 'primal infeasible':
raise MIPSolverException("CVXOPT: primal infeasible")
diff -up src/sage/numerical/backends/cvxopt_sdp_backend.pyx.orig src/sage/numerical/backends/cvxopt_sdp_backend.pyx
--- src/sage/numerical/backends/cvxopt_sdp_backend.pyx.orig 2021-05-09 16:00:11.000000000 -0600
+++ src/sage/numerical/backends/cvxopt_sdp_backend.pyx 2021-05-28 12:05:47.552650940 -0600
@@ -150,7 +150,7 @@ cdef class CVXOPTSDPBackend(MatrixSDPBac
self.answer = solvers.sdp(c,Gs=G_matrix,hs=h_matrix)
#possible outcomes
- if self.answer['status'] == 'optimized':
+ if self.answer['status'] in ['optimized', 'optimal']:
pass
elif self.answer['status'] == 'primal infeasible':
raise SDPSolverException("CVXOPT: primal infeasible")

View file

@ -1,46 +0,0 @@
diff -up src/sage/env.py.orig src/sage/env.py
--- src/sage/env.py.orig 2023-01-15 17:04:08.814627154 -0700
+++ src/sage/env.py 2023-01-15 17:17:20.339009783 -0700
@@ -166,15 +166,15 @@ SAGE_DATE = var("SAGE_DATE", version.dat
SAGE_VERSION_BANNER = var("SAGE_VERSION_BANNER", version.banner)
# virtual environment where sagelib is installed
-SAGE_VENV = var("SAGE_VENV", os.path.abspath(sys.prefix))
+SAGE_VENV = var("SAGE_VENV", "@@SAGE_LOCAL@@")
SAGE_LIB = var("SAGE_LIB", os.path.dirname(os.path.dirname(__file__)))
-SAGE_EXTCODE = var("SAGE_EXTCODE", join(SAGE_LIB, "sage", "ext_data"))
+SAGE_EXTCODE = var("SAGE_EXTCODE", join("/usr", "share", "sagemath", "etc"))
SAGE_VENV_SPKG_INST = var("SAGE_VENV_SPKG_INST", join(SAGE_VENV, "var", "lib", "sage", "installed"))
# prefix hierarchy where non-Python packages are installed
SAGE_LOCAL = var("SAGE_LOCAL", SAGE_VENV)
-SAGE_SHARE = var("SAGE_SHARE", join(SAGE_LOCAL, "share"))
-SAGE_DOC = var("SAGE_DOC", join(SAGE_SHARE, "doc", "sage"))
+SAGE_SHARE = var("SAGE_SHARE", join("/usr", "share", "sagemath"))
+SAGE_DOC = var("SAGE_DOC", join("/usr", "share", "doc", "sagemath"))
SAGE_SPKG_INST = var("SAGE_SPKG_INST", join(SAGE_LOCAL, "var", "lib", "sage", "installed"))
# source tree of the Sage distribution
@@ -202,16 +202,16 @@ THEBE_DIR = var("THEBE_DIR", join(SAGE_S
COMBINATORIAL_DESIGN_DATA_DIR = var("COMBINATORIAL_DESIGN_DATA_DIR", join(SAGE_SHARE, "combinatorial_designs"))
CREMONA_MINI_DATA_DIR = var("CREMONA_MINI_DATA_DIR", join(SAGE_SHARE, "cremona"))
CREMONA_LARGE_DATA_DIR = var("CREMONA_LARGE_DATA_DIR", join(SAGE_SHARE, "cremona"))
-JMOL_DIR = var("JMOL_DIR", join(SAGE_SHARE, "jmol"))
-MATHJAX_DIR = var("MATHJAX_DIR", join(SAGE_SHARE, "mathjax"))
-MTXLIB = var("MTXLIB", join(SAGE_SHARE, "meataxe"))
+JMOL_DIR = var("JMOL_DIR", join("/usr", "share", "java", "jmol"))
+MATHJAX_DIR = var("MATHJAX_DIR", join("/usr", "share", "javascript", "mathjax"))
+MTXLIB = var("MTXLIB", join(DOT_SAGE, "meataxe"))
THREEJS_DIR = var("THREEJS_DIR", join(SAGE_SHARE, "threejs-sage"))
-PPLPY_DOCS = var("PPLPY_DOCS", join(SAGE_SHARE, "doc", "pplpy"))
+PPLPY_DOCS = var("PPLPY_DOCS", join("/usr", "share", "doc", "python3-pplpy-devel"))
MAXIMA = var("MAXIMA", "maxima")
MAXIMA_FAS = var("MAXIMA_FAS")
KENZO_FAS = var("KENZO_FAS")
-SAGE_NAUTY_BINS_PREFIX = var("SAGE_NAUTY_BINS_PREFIX", "")
-RUBIKS_BINS_PREFIX = var("RUBIKS_BINS_PREFIX", "")
+SAGE_NAUTY_BINS_PREFIX = var("SAGE_NAUTY_BINS_PREFIX", "nauty-")
+RUBIKS_BINS_PREFIX = var("RUBIKS_BINS_PREFIX", "rubiks_")
FOURTITWO_HILBERT = var("FOURTITWO_HILBERT")
FOURTITWO_MARKOV = var("FOURTITWO_MARKOV")
FOURTITWO_GRAVER = var("FOURTITWO_GRAVER")

View file

@ -1,371 +0,0 @@
diff -up src/sage/graphs/strongly_regular_db.pyx.orig src/sage/graphs/strongly_regular_db.pyx
--- src/sage/graphs/strongly_regular_db.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/graphs/strongly_regular_db.pyx 2023-03-13 08:43:22.143746071 -0600
@@ -2443,7 +2443,7 @@ def strongly_regular_from_two_intersecti
A set of points in the projective geometry `PG(k,q)` is said to be a
2-intersection set if it intersects every hyperplane in either `h_1` or
- `h_2` points, where `h_1,h_2\in \\NN`.
+ `h_2` points, where `h_1,h_2\in \NN`.
From a 2-intersection set `S` can be defined a strongly-regular graph in the
following way:
diff -up src/sage/groups/group.pyx.orig src/sage/groups/group.pyx
--- src/sage/groups/group.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/groups/group.pyx 2023-03-13 08:43:22.143746071 -0600
@@ -51,7 +51,7 @@ def is_Group(x):
cdef class Group(Parent):
- """
+ r"""
Base class for all groups
TESTS::
diff -up src/sage/groups/perm_gps/partn_ref/refinement_binary.pyx.orig src/sage/groups/perm_gps/partn_ref/refinement_binary.pyx
--- src/sage/groups/perm_gps/partn_ref/refinement_binary.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/groups/perm_gps/partn_ref/refinement_binary.pyx 2023-03-13 08:43:22.144746053 -0600
@@ -105,7 +105,7 @@ cdef class LinearBinaryCodeStruct(Binary
self.ith_word = &ith_word_linear
def run(self, partition=None):
- """
+ r"""
Perform the canonical labeling and automorphism group computation,
storing results to self.
diff -up src/sage/libs/ntl/ntl_mat_ZZ.pyx.orig src/sage/libs/ntl/ntl_mat_ZZ.pyx
--- src/sage/libs/ntl/ntl_mat_ZZ.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/libs/ntl/ntl_mat_ZZ.pyx 2023-03-13 08:43:33.262545927 -0600
@@ -129,7 +129,7 @@ cdef class ntl_mat_ZZ():
return unpickle_class_args, (ntl_mat_ZZ, (self.__nrows, self.__ncols, self.list()))
def __repr__(self):
- """
+ r"""
Return the string representation of self.
EXAMPLES::
diff -up src/sage/libs/symmetrica/sc.pxi.orig src/sage/libs/symmetrica/sc.pxi
--- src/sage/libs/symmetrica/sc.pxi.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/libs/symmetrica/sc.pxi 2023-03-13 08:43:36.725482994 -0600
@@ -103,7 +103,7 @@ def charvalue_symmetrica(irred, cls, tab
def kranztafel_symmetrica(a, b):
- """
+ r"""
you enter the INTEGER objects, say a and b, and res becomes a
MATRIX object, the charactertable of S_b \wr S_a, co becomes a
VECTOR object of classorders and cl becomes a VECTOR object of
diff -up src/sage/matrix/matrix_integer_dense.pyx.orig src/sage/matrix/matrix_integer_dense.pyx
--- src/sage/matrix/matrix_integer_dense.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/matrix/matrix_integer_dense.pyx 2023-03-13 08:43:36.727482958 -0600
@@ -757,7 +757,7 @@ cdef class Matrix_integer_dense(Matrix_d
return ans
def _multiply_classical(self, Matrix_integer_dense right):
- """
+ r"""
EXAMPLES::
sage: n = 3
diff -up src/sage/matrix/matrix_modn_dense_template.pxi.orig src/sage/matrix/matrix_modn_dense_template.pxi
--- src/sage/matrix/matrix_modn_dense_template.pxi.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/matrix/matrix_modn_dense_template.pxi 2023-03-13 08:43:36.728482940 -0600
@@ -649,7 +649,7 @@ cdef class Matrix_modn_dense_template(Ma
return (word_size, little_endian, s), 10
def _unpickle(self, data, int version):
- """
+ r"""
TESTS:
Test for char-sized modulus::
@@ -2261,7 +2261,7 @@ cdef class Matrix_modn_dense_template(Ma
return Matrix_dense.determinant(self)
cdef xgcd_eliminate(self, celement * row1, celement* row2, Py_ssize_t start_col):
- """
+ r"""
Reduces ``row1`` and ``row2`` by a unimodular transformation
using the xgcd relation between their first coefficients ``a`` and
``b``.
diff -up src/sage/misc/cachefunc.pyx.orig src/sage/misc/cachefunc.pyx
--- src/sage/misc/cachefunc.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/misc/cachefunc.pyx 2023-03-13 08:43:39.550431661 -0600
@@ -834,7 +834,7 @@ cdef class CachedFunction():
## forward other questions to the cached function.
def _instancedoc_(self):
- """
+ r"""
Provide documentation for the cached function.
A cached function shall inherit the documentation
diff -up src/sage/misc/sageinspect.py.orig src/sage/misc/sageinspect.py
--- src/sage/misc/sageinspect.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/misc/sageinspect.py 2023-03-13 08:43:39.551431643 -0600
@@ -948,7 +948,7 @@ def _grep_first_pair_of_parentheses(s):
def _split_syntactical_unit(s):
- """
+ r"""
Split off a sub-expression from the start of a given string.
INPUT:
diff -up src/sage/numerical/backends/generic_backend.pyx.orig src/sage/numerical/backends/generic_backend.pyx
--- src/sage/numerical/backends/generic_backend.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/numerical/backends/generic_backend.pyx 2023-03-13 08:43:39.552431625 -0600
@@ -1388,7 +1388,7 @@ cdef class GenericBackend:
raise NotImplementedError()
cpdef bint is_variable_basic(self, int index):
- """
+ r"""
Test whether the given variable is basic.
This assumes that the problem has been solved with the simplex method
@@ -1418,7 +1418,7 @@ cdef class GenericBackend:
raise NotImplementedError()
cpdef bint is_variable_nonbasic_at_lower_bound(self, int index):
- """
+ r"""
Test whether the given variable is nonbasic at lower bound.
This assumes that the problem has been solved with the simplex method
@@ -1448,7 +1448,7 @@ cdef class GenericBackend:
raise NotImplementedError()
cpdef bint is_slack_variable_basic(self, int index):
- """
+ r"""
Test whether the slack variable of the given row is basic.
This assumes that the problem has been solved with the simplex method
@@ -1478,7 +1478,7 @@ cdef class GenericBackend:
raise NotImplementedError()
cpdef bint is_slack_variable_nonbasic_at_lower_bound(self, int index):
- """
+ r"""
Test whether the given variable is nonbasic at lower bound.
This assumes that the problem has been solved with the simplex method
diff -up src/sage/numerical/backends/glpk_backend.pyx.orig src/sage/numerical/backends/glpk_backend.pyx
--- src/sage/numerical/backends/glpk_backend.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/numerical/backends/glpk_backend.pyx 2023-03-13 08:43:39.553431607 -0600
@@ -2316,7 +2316,7 @@ cdef class GLPKBackend(GenericBackend):
raise ValueError("This parameter is not available.")
cpdef bint is_variable_basic(self, int index):
- """
+ r"""
Test whether the given variable is basic.
This assumes that the problem has been solved with the simplex method
@@ -2347,7 +2347,7 @@ cdef class GLPKBackend(GenericBackend):
return self.get_col_stat(index) == GLP_BS
cpdef bint is_variable_nonbasic_at_lower_bound(self, int index):
- """
+ r"""
Test whether the given variable is nonbasic at lower bound.
This assumes that the problem has been solved with the simplex method
and a basis is available. Otherwise an exception will be raised.
@@ -2377,7 +2377,7 @@ cdef class GLPKBackend(GenericBackend):
return self.get_col_stat(index) == GLP_NL
cpdef bint is_slack_variable_basic(self, int index):
- """
+ r"""
Test whether the slack variable of the given row is basic.
This assumes that the problem has been solved with the simplex method
@@ -2408,7 +2408,7 @@ cdef class GLPKBackend(GenericBackend):
return self.get_row_stat(index) == GLP_BS
cpdef bint is_slack_variable_nonbasic_at_lower_bound(self, int index):
- """
+ r"""
Test whether the slack variable of the given row is nonbasic at lower bound.
This assumes that the problem has been solved with the simplex method
diff -up src/sage/numerical/backends/interactivelp_backend.pyx.orig src/sage/numerical/backends/interactivelp_backend.pyx
--- src/sage/numerical/backends/interactivelp_backend.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/numerical/backends/interactivelp_backend.pyx 2023-03-13 08:43:39.553431607 -0600
@@ -1065,7 +1065,7 @@ cdef class InteractiveLPBackend:
problem_type, ring, objective_constant_term=d)
cpdef bint is_variable_basic(self, int index):
- """
+ r"""
Test whether the given variable is basic.
This assumes that the problem has been solved with the simplex method
@@ -1095,7 +1095,7 @@ cdef class InteractiveLPBackend:
return self.lp_std_form.decision_variables()[index] in self.final_dictionary.basic_variables()
cpdef bint is_variable_nonbasic_at_lower_bound(self, int index):
- """
+ r"""
Test whether the given variable is nonbasic at lower bound.
This assumes that the problem has been solved with the simplex method
@@ -1125,7 +1125,7 @@ cdef class InteractiveLPBackend:
return self.lp_std_form.decision_variables()[index] in self.final_dictionary.nonbasic_variables()
cpdef bint is_slack_variable_basic(self, int index):
- """
+ r"""
Test whether the slack variable of the given row is basic.
This assumes that the problem has been solved with the simplex method
@@ -1155,7 +1155,7 @@ cdef class InteractiveLPBackend:
return self.lp_std_form.slack_variables()[index] in self.final_dictionary.basic_variables()
cpdef bint is_slack_variable_nonbasic_at_lower_bound(self, int index):
- """
+ r"""
Test whether the given variable is nonbasic at lower bound.
This assumes that the problem has been solved with the simplex method
@@ -1187,7 +1187,7 @@ cdef class InteractiveLPBackend:
cpdef dictionary(self):
# Proposed addition to the general interface,
# which would for other solvers return backend dictionaries (#18804)
- """
+ r"""
Return a dictionary representing the current basis.
EXAMPLES::
@@ -1222,7 +1222,7 @@ cdef class InteractiveLPBackend:
cpdef interactive_lp_problem(self):
- """
+ r"""
Return the :class:`InteractiveLPProblem` object associated with this backend.
EXAMPLES::
diff -up src/sage/rings/complex_interval.pyx.orig src/sage/rings/complex_interval.pyx
--- src/sage/rings/complex_interval.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/rings/complex_interval.pyx 2023-03-13 08:43:39.553431607 -0600
@@ -1114,7 +1114,7 @@ cdef class ComplexIntervalFieldElement(s
return x
def __invert__(self):
- """
+ r"""
Return the multiplicative inverse of ``self``.
EXAMPLES::
diff -up src/sage/rings/finite_rings/hom_finite_field.pyx.orig src/sage/rings/finite_rings/hom_finite_field.pyx
--- src/sage/rings/finite_rings/hom_finite_field.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/rings/finite_rings/hom_finite_field.pyx 2023-03-13 08:43:39.554431588 -0600
@@ -147,7 +147,7 @@ cdef class SectionFiniteFieldHomomorphis
def _repr_(self):
- """
+ r"""
Return a string representation of this section.
EXAMPLES::
diff -up src/sage/rings/finite_rings/integer_mod.pyx.orig src/sage/rings/finite_rings/integer_mod.pyx
--- src/sage/rings/finite_rings/integer_mod.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/rings/finite_rings/integer_mod.pyx 2023-03-13 08:43:39.555431570 -0600
@@ -2243,7 +2243,7 @@ cdef class IntegerMod_gmp(IntegerMod_abs
return int(self.lift())
def __pow__(IntegerMod_gmp self, exp, m): # NOTE: m ignored, always use modulus of parent ring
- """
+ r"""
EXAMPLES::
sage: R = Integers(10^10)
@@ -3540,7 +3540,7 @@ cdef class IntegerMod_int64(IntegerMod_a
return self._new_c(self.ivalue >> (-k))
def __pow__(IntegerMod_int64 self, exp, m): # NOTE: m ignored, always use modulus of parent ring
- """
+ r"""
EXAMPLES::
sage: R = Integers(10)
diff -up src/sage/rings/polynomial/multi_polynomial_libsingular.pyx.orig src/sage/rings/polynomial/multi_polynomial_libsingular.pyx
--- src/sage/rings/polynomial/multi_polynomial_libsingular.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/rings/polynomial/multi_polynomial_libsingular.pyx 2023-03-13 08:43:44.190347338 -0600
@@ -2487,7 +2487,7 @@ cdef class MPolynomial_libsingular(MPoly
return char_to_str(s)
def _latex_(self):
- """
+ r"""
Return a polynomial LaTeX representation of this polynomial.
EXAMPLES::
diff -up src/sage/rings/polynomial/polynomial_element.pyx.orig src/sage/rings/polynomial/polynomial_element.pyx
--- src/sage/rings/polynomial/polynomial_element.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/rings/polynomial/polynomial_element.pyx 2023-03-13 08:43:44.194347266 -0600
@@ -6832,8 +6832,8 @@ cdef class Polynomial(CommutativeAlgebra
where the roots `a` and `b` are to be considered in the algebraic
closure of the fraction field of the coefficients and counted with
multiplicities. If the polynomials are not monic this quantity is
- multiplied by `\\alpha_1^{deg(p_2)} \\alpha_2^{deg(p_1)}` where
- `\\alpha_1` and `\\alpha_2` are the leading coefficients of `p_1` and
+ multiplied by `\alpha_1^{deg(p_2)} \alpha_2^{deg(p_1)}` where
+ `\alpha_1` and `\alpha_2` are the leading coefficients of `p_1` and
`p_2` respectively.
INPUT:
diff -up src/sage/rings/real_double_element_gsl.pyx.orig src/sage/rings/real_double_element_gsl.pyx
--- src/sage/rings/real_double_element_gsl.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/rings/real_double_element_gsl.pyx 2023-03-13 08:43:45.742319138 -0600
@@ -227,7 +227,7 @@ cdef class RealDoubleElement_gsl(RealDou
return a
def log(self, base=None):
- """
+ r"""
Return the logarithm.
INPUT:
diff -up src/sage/rings/real_mpfi.pyx.orig src/sage/rings/real_mpfi.pyx
--- src/sage/rings/real_mpfi.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/rings/real_mpfi.pyx 2023-03-13 08:43:45.743319120 -0600
@@ -1309,7 +1309,7 @@ cdef class RealIntervalFieldElement(Ring
return self.str(10)
def _latex_(self):
- """
+ r"""
Return a latex representation of ``self``.
EXAMPLES::
diff -up src/sage/rings/tate_algebra_element.pyx.orig src/sage/rings/tate_algebra_element.pyx
--- src/sage/rings/tate_algebra_element.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/rings/tate_algebra_element.pyx 2023-03-13 08:43:46.838299224 -0600
@@ -3448,7 +3448,7 @@ cdef class TateAlgebraElement(Commutativ
@coerce_binop
def Spoly(self, other):
- """
+ r"""
Return the S-polynomial of this series and ``other``.
INPUT:
diff -up src/sage/symbolic/expression.pyx.orig src/sage/symbolic/expression.pyx
--- src/sage/symbolic/expression.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/symbolic/expression.pyx 2023-03-13 08:43:46.840299188 -0600
@@ -7,7 +7,7 @@
# distutils: include_dirs = SINGULAR_INCDIR
# pynac/basic.h includes
# factory/factory.h so this ^ is needed to find it
-"""
+r"""
Symbolic Expressions
RELATIONAL EXPRESSIONS:

View file

@ -1,182 +0,0 @@
diff -up src/sage/env.py.orig src/sage/env.py
--- src/sage/env.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/env.py 2023-03-13 09:26:16.468693261 -0600
@@ -523,7 +523,8 @@ def cython_aliases(required_modules=None
aliases[var + "INCDIR"] = pc['include_dirs']
aliases[var + "LIBDIR"] = pc['library_dirs']
aliases[var + "LIBEXTRA"] = list(filter(lambda s: not s.startswith(('-l','-L')), libs.split()))
- aliases[var + "LIBRARIES"] = pc['libraries']
+ aliases[var + "LIBRARIES"] = pc['libraries'] + ['gomp']
+ aliases['Singular_INCDIR'] = ['/usr/include/singular', '/usr/include/factory']
# uname-specific flags
UNAME = os.uname()
diff -up src/sage/graphs/mcqd.pyx.orig src/sage/graphs/mcqd.pyx
--- src/sage/graphs/mcqd.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/graphs/mcqd.pyx 2023-03-13 09:26:16.468693261 -0600
@@ -1,4 +1,5 @@
# distutils: language = c++
+# distutils: libraries = mcqd
# sage_setup: distribution = sagemath-mcqd
from cysignals.signals cimport sig_on, sig_off
diff -up src/sage/libs/arb/arb.pxd.orig src/sage/libs/arb/arb.pxd
--- src/sage/libs/arb/arb.pxd.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/libs/arb/arb.pxd 2023-03-13 09:26:16.468693261 -0600
@@ -1,4 +1,5 @@
# distutils: libraries = gmp flint ARB_LIBRARY
+# distutils: include_dirs = /usr/include/arb /usr/include/flint
# distutils: depends = arb.h
from sage.libs.arb.types cimport *
diff -up src/sage/libs/arb/arb_version.pyx.orig src/sage/libs/arb/arb_version.pyx
--- src/sage/libs/arb/arb_version.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/libs/arb/arb_version.pyx 2023-03-13 09:26:16.468693261 -0600
@@ -1,4 +1,5 @@
# -*- coding: utf-8
+# distutils: include_dirs = /usr/include/arb /usr/include/flint
from sage.libs.arb.arb cimport arb_version
from sage.cpython.string cimport char_to_str
diff -up src/sage/libs/arb/arith.pyx.orig src/sage/libs/arb/arith.pyx
--- src/sage/libs/arb/arith.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/libs/arb/arith.pyx 2023-03-13 09:26:16.468693261 -0600
@@ -1,3 +1,4 @@
+# distutils: include_dirs = /usr/include/arb /usr/include/flint
"""
Arithmetic functions using the arb library
"""
diff -up src/sage/libs/mpmath/ext_impl.pyx.orig src/sage/libs/mpmath/ext_impl.pyx
--- src/sage/libs/mpmath/ext_impl.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/libs/mpmath/ext_impl.pyx 2023-03-13 09:26:16.469693242 -0600
@@ -1,3 +1,4 @@
+# distutils: include_dirs = /usr/include/flint
"""
This module provides the core implementation of multiprecision
floating-point arithmetic. Operations are done in-place.
diff -up src/sage/libs/mpmath/ext_libmp.pyx.orig src/sage/libs/mpmath/ext_libmp.pyx
--- src/sage/libs/mpmath/ext_libmp.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/libs/mpmath/ext_libmp.pyx 2023-03-13 09:26:16.469693242 -0600
@@ -1,3 +1,4 @@
+# distutils: include_dirs = /usr/include/flint
"""
Faster versions of some key functions in mpmath.libmp
"""
diff -up src/sage/libs/mpmath/ext_main.pyx.orig src/sage/libs/mpmath/ext_main.pyx
--- src/sage/libs/mpmath/ext_main.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/libs/mpmath/ext_main.pyx 2023-03-13 09:26:16.469693242 -0600
@@ -1,3 +1,4 @@
+# distutils: include_dirs = /usr/include/flint
"""
mpmath floating-point numbers
diff -up src/sage/libs/mpmath/utils.pyx.orig src/sage/libs/mpmath/utils.pyx
--- src/sage/libs/mpmath/utils.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/libs/mpmath/utils.pyx 2023-03-13 09:26:16.470693224 -0600
@@ -1,3 +1,4 @@
+# distutils: include_dirs = /usr/include/flint
"""
Utilities for Sage-mpmath interaction
diff -up src/sage/matrix/matrix_complex_ball_dense.pyx.orig src/sage/matrix/matrix_complex_ball_dense.pyx
--- src/sage/matrix/matrix_complex_ball_dense.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/matrix/matrix_complex_ball_dense.pyx 2023-03-13 09:26:16.470693224 -0600
@@ -1,4 +1,5 @@
# distutils: libraries = ARB_LIBRARY
+# distutils: include_dirs = /usr/include/arb /usr/include/flint
r"""
Arbitrary precision complex ball matrices using Arb
diff -up src/sage/matrix/matrix_cyclo_dense.pyx.orig src/sage/matrix/matrix_cyclo_dense.pyx
--- src/sage/matrix/matrix_cyclo_dense.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/matrix/matrix_cyclo_dense.pyx 2023-03-13 09:26:16.470693224 -0600
@@ -1,7 +1,7 @@
# distutils: language = c++
# distutils: libraries = NTL_LIBRARIES
# distutils: extra_compile_args = NTL_CFLAGS
-# distutils: include_dirs = NTL_INCDIR
+# distutils: include_dirs = NTL_INCDIR /usr/include/arb /usr/include/flint
# distutils: library_dirs = NTL_LIBDIR
# distutils: extra_link_args = NTL_LIBEXTRA
"""
diff -up src/sage/matrix/matrix_mpolynomial_dense.pyx.orig src/sage/matrix/matrix_mpolynomial_dense.pyx
--- src/sage/matrix/matrix_mpolynomial_dense.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/matrix/matrix_mpolynomial_dense.pyx 2023-03-13 09:26:16.471693206 -0600
@@ -1,3 +1,4 @@
+# distutils: include_dirs = /usr/include/singular /usr/include/factory
"""
Dense matrices over multivariate polynomials over fields
diff -up src/sage/rings/complex_arb.pyx.orig src/sage/rings/complex_arb.pyx
--- src/sage/rings/complex_arb.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/rings/complex_arb.pyx 2023-03-13 09:26:16.471693206 -0600
@@ -1,4 +1,5 @@
# -*- coding: utf-8
+# distutils: include_dirs = /usr/include/arb /usr/include/flint
r"""
Arbitrary precision complex balls using Arb
diff -up src/sage/rings/number_field/number_field_element_quadratic.pyx.orig src/sage/rings/number_field/number_field_element_quadratic.pyx
--- src/sage/rings/number_field/number_field_element_quadratic.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/rings/number_field/number_field_element_quadratic.pyx 2023-03-13 10:54:33.688631507 -0600
@@ -1,6 +1,6 @@
# distutils: libraries = NTL_LIBRARIES
# distutils: extra_compile_args = NTL_CFLAGS
-# distutils: include_dirs = NTL_INCDIR
+# distutils: include_dirs = NTL_INCDIR /usr/include/arb /usr/include/flint
# distutils: library_dirs = NTL_LIBDIR
# distutils: extra_link_args = NTL_LIBEXTRA
# distutils: language = c++
diff -up src/sage/rings/polynomial/multi_polynomial_libsingular.pyx.orig src/sage/rings/polynomial/multi_polynomial_libsingular.pyx
--- src/sage/rings/polynomial/multi_polynomial_libsingular.pyx.orig 2023-03-13 08:43:44.190347338 -0600
+++ src/sage/rings/polynomial/multi_polynomial_libsingular.pyx 2023-03-13 09:26:16.473693169 -0600
@@ -1,3 +1,4 @@
+# distutils: include_dirs = /usr/include/singular /usr/include/factory
r"""
Multivariate Polynomials via libSINGULAR
diff -up src/sage/rings/polynomial/multi_polynomial.pyx.orig src/sage/rings/polynomial/multi_polynomial.pyx
--- src/sage/rings/polynomial/multi_polynomial.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/rings/polynomial/multi_polynomial.pyx 2023-03-13 09:26:16.473693169 -0600
@@ -1,3 +1,4 @@
+# distutils: include_dirs = /usr/include/singular /usr/include/factory
r"""
Base class for elements of multivariate polynomial rings
"""
diff -up src/sage/rings/polynomial/plural.pyx.orig src/sage/rings/polynomial/plural.pyx
--- src/sage/rings/polynomial/plural.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/rings/polynomial/plural.pyx 2023-03-13 09:26:16.474693151 -0600
@@ -1,3 +1,4 @@
+# distutils: include_dirs = /usr/include/singular /usr/include/factory
r"""
Noncommutative polynomials via libSINGULAR/Plural
diff -up src/sage/rings/polynomial/polynomial_complex_arb.pyx.orig src/sage/rings/polynomial/polynomial_complex_arb.pyx
--- src/sage/rings/polynomial/polynomial_complex_arb.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/rings/polynomial/polynomial_complex_arb.pyx 2023-03-13 09:26:16.474693151 -0600
@@ -1,4 +1,5 @@
# -*- coding: utf-8
+# distutils: include_dirs = /usr/include/arb /usr/include/flint
r"""
Univariate polynomials over `\CC` with interval coefficients using Arb.
diff -up src/sage/rings/real_arb.pyx.orig src/sage/rings/real_arb.pyx
--- src/sage/rings/real_arb.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/rings/real_arb.pyx 2023-03-13 09:26:16.474693151 -0600
@@ -1,4 +1,5 @@
# -*- coding: utf-8
+# distutils: include_dirs = /usr/include/arb /usr/include/flint
r"""
Arbitrary precision real balls using Arb
diff -up src/sage_setup/command/sage_build_cython.py.orig src/sage_setup/command/sage_build_cython.py
--- src/sage_setup/command/sage_build_cython.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage_setup/command/sage_build_cython.py 2023-03-13 09:26:16.475693132 -0600
@@ -205,6 +205,7 @@ class sage_build_cython(Command):
self.library_order = library_order
# Search for dependencies in the source tree and add to the list of include directories
self.sage_include_dirs = sage_include_directories(use_sources=True)
+ self.sage_include_dirs.extend(['@@CYSIGNALS@@'])
from Cython.Build import cythonize
import Cython.Compiler.Options

View file

@ -1,281 +0,0 @@
diff -up configure.orig configure
--- configure.orig 2022-09-19 16:39:46.000000000 -0600
+++ configure 2023-01-15 19:47:16.551480424 -0700
@@ -17604,12 +17604,12 @@ if test -n "$OPENBLAS_CFLAGS"; then
pkg_cv_OPENBLAS_CFLAGS="$OPENBLAS_CFLAGS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openblas >= 0.2.20\""; } >&5
- ($PKG_CONFIG --exists --print-errors "openblas >= 0.2.20") 2>&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"flexiblas >= 3.0.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "flexiblas >= 3.0.0") 2>&5
ac_status=$?
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_OPENBLAS_CFLAGS=`$PKG_CONFIG --cflags "openblas >= 0.2.20" 2>/dev/null`
+ pkg_cv_OPENBLAS_CFLAGS=`$PKG_CONFIG --cflags "flexiblas >= 3.0.0" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
@@ -17621,12 +17621,12 @@ if test -n "$OPENBLAS_LIBS"; then
pkg_cv_OPENBLAS_LIBS="$OPENBLAS_LIBS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openblas >= 0.2.20\""; } >&5
- ($PKG_CONFIG --exists --print-errors "openblas >= 0.2.20") 2>&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"flexiblas >= 3.0.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "flexiblas >= 3.0.0") 2>&5
ac_status=$?
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_OPENBLAS_LIBS=`$PKG_CONFIG --libs "openblas >= 0.2.20" 2>/dev/null`
+ pkg_cv_OPENBLAS_LIBS=`$PKG_CONFIG --libs "flexiblas >= 3.0.0" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
@@ -17647,9 +17647,9 @@ else
_pkg_short_errors_supported=no
fi
if test $_pkg_short_errors_supported = yes; then
- OPENBLAS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "openblas >= 0.2.20" 2>&1`
+ OPENBLAS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "flexiblas >= 3.0.0" 2>&1`
else
- OPENBLAS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "openblas >= 0.2.20" 2>&1`
+ OPENBLAS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "flexiblas >= 3.0.0" 2>&1`
fi
# Put the nasty error message in config.log where it belongs
echo "$OPENBLAS_PKG_ERRORS" >&5
@@ -17673,17 +17673,17 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
/* end confdefs.h. */
namespace conftest {
- extern "C" int openblas_get_config ();
+ extern "C" int flexiblas_get_version ();
}
int
main (void)
{
-return conftest::openblas_get_config ();
+return conftest::flexiblas_get_version ();
;
return 0;
}
_ACEOF
-for ac_lib in '' openblas cblas blas
+for ac_lib in '' flexiblas cblas blas
do
if test -z "$ac_lib"; then
ac_res="none required"
@@ -17740,22 +17740,20 @@ else $as_nop
/* end confdefs.h. */
#include <stdio.h>
- char *openblas_get_config(void);
+ void flexiblas_get_version(void);
int version[3];
int
main (void)
{
version[0] = version[1] = version[2] = 0;
/*printf("%s", openblas_get_config());*/
- if (sscanf(openblas_get_config(), "OpenBLAS %d.%d.%d",
- version, version+1, version+2) < 1)
- return 1;
+ flexiblas_get_version(&version[0], &version[1], &version[2]);
if ( 10000 * version[0]
+ 100 * version[1]
+ version[2]
- < 10000 * 0
- + 100 * 2
- + 20)
+ < 10000 * 3
+ + 100 * 0
+ + 0)
return 1;
;
return 0;
@@ -17806,7 +17804,7 @@ return conftest::cblas_dgemm ();
return 0;
}
_ACEOF
-for ac_lib in '' openblas cblas blas
+for ac_lib in '' flexiblas cblas blas
do
if test -z "$ac_lib"; then
ac_res="none required"
@@ -17873,7 +17871,7 @@ return conftest::dgeqrf ();
return 0;
}
_ACEOF
-for ac_lib in '' openblas lapack
+for ac_lib in '' flexiblas lapack
do
if test -z "$ac_lib"; then
ac_res="none required"
@@ -17940,7 +17938,7 @@ return conftest::dgeqrf_ ();
return 0;
}
_ACEOF
-for ac_lib in '' openblas lapack
+for ac_lib in '' flexiblas lapack
do
if test -z "$ac_lib"; then
ac_res="none required"
@@ -18007,7 +18005,7 @@ return conftest::DGEQRF ();
return 0;
}
_ACEOF
-for ac_lib in '' openblas lapack
+for ac_lib in '' flexiblas lapack
do
if test -z "$ac_lib"; then
ac_res="none required"
@@ -18074,7 +18072,7 @@ return conftest::DGEQRF_ ();
return 0;
}
_ACEOF
-for ac_lib in '' openblas lapack
+for ac_lib in '' flexiblas lapack
do
if test -z "$ac_lib"; then
ac_res="none required"
@@ -18165,17 +18163,17 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
/* end confdefs.h. */
namespace conftest {
- extern "C" int openblas_get_config ();
+ extern "C" int flexiblas_get_version ();
}
int
main (void)
{
-return conftest::openblas_get_config ();
+return conftest::flexiblas_get_version ();
;
return 0;
}
_ACEOF
-for ac_lib in '' openblas cblas blas
+for ac_lib in '' flexiblas cblas blas
do
if test -z "$ac_lib"; then
ac_res="none required"
@@ -18232,22 +18230,20 @@ else $as_nop
/* end confdefs.h. */
#include <stdio.h>
- char *openblas_get_config(void);
+ void flexiblas_get_version(void);
int version[3];
int
main (void)
{
version[0] = version[1] = version[2] = 0;
/*printf("%s", openblas_get_config());*/
- if (sscanf(openblas_get_config(), "OpenBLAS %d.%d.%d",
- version, version+1, version+2) < 1)
- return 1;
+ flexiblas_get_version(&version[0], &version[1], &version[2]);
if ( 10000 * version[0]
+ 100 * version[1]
+ version[2]
- < 10000 * 0
- + 100 * 2
- + 20)
+ < 10000 * 3
+ + 100 * 0
+ + 0)
return 1;
;
return 0;
@@ -18298,7 +18294,7 @@ return conftest::cblas_dgemm ();
return 0;
}
_ACEOF
-for ac_lib in '' openblas cblas blas
+for ac_lib in '' flexiblas cblas blas
do
if test -z "$ac_lib"; then
ac_res="none required"
@@ -18365,7 +18361,7 @@ return conftest::dgeqrf ();
return 0;
}
_ACEOF
-for ac_lib in '' openblas lapack
+for ac_lib in '' flexiblas lapack
do
if test -z "$ac_lib"; then
ac_res="none required"
@@ -18432,7 +18428,7 @@ return conftest::dgeqrf_ ();
return 0;
}
_ACEOF
-for ac_lib in '' openblas lapack
+for ac_lib in '' flexiblas lapack
do
if test -z "$ac_lib"; then
ac_res="none required"
@@ -18499,7 +18495,7 @@ return conftest::DGEQRF ();
return 0;
}
_ACEOF
-for ac_lib in '' openblas lapack
+for ac_lib in '' flexiblas lapack
do
if test -z "$ac_lib"; then
ac_res="none required"
@@ -18566,7 +18562,7 @@ return conftest::DGEQRF_ ();
return 0;
}
_ACEOF
-for ac_lib in '' openblas lapack
+for ac_lib in '' flexiblas lapack
do
if test -z "$ac_lib"; then
ac_res="none required"
@@ -18648,12 +18644,12 @@ if test -n "$OPENBLASPCDIR"; then
pkg_cv_OPENBLASPCDIR="$OPENBLASPCDIR"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openblas\""; } >&5
- ($PKG_CONFIG --exists --print-errors "openblas") 2>&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"flexiblas\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "flexiblas") 2>&5
ac_status=$?
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_OPENBLASPCDIR=`$PKG_CONFIG --variable="pcfiledir" "openblas" 2>/dev/null`
+ pkg_cv_OPENBLASPCDIR=`$PKG_CONFIG --variable="pcfiledir" "flexiblas" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
@@ -18876,7 +18872,7 @@ fi
then :
- SAGE_OPENBLAS_PC_COMMAND="\$(LN) -sf \"$OPENBLASPCDIR/openblas.pc\" \"\$(@)\""
+ SAGE_OPENBLAS_PC_COMMAND="\$(LN) -sf \"$OPENBLASPCDIR/flexiblas.pc\" \"\$(@)\""
if test x$sage_install_blas_pc = xyes
diff -up src/sage/env.py.orig src/sage/env.py
--- src/sage/env.py.orig 2023-01-15 17:21:15.296585738 -0700
+++ src/sage/env.py 2023-01-15 17:22:34.106086752 -0700
@@ -222,7 +222,7 @@ FOURTITWO_PPI = var("FOURTITWO_PPI")
FOURTITWO_CIRCUITS = var("FOURTITWO_CIRCUITS")
FOURTITWO_GROEBNER = var("FOURTITWO_GROEBNER")
ARB_LIBRARY = var("ARB_LIBRARY", "arb")
-CBLAS_PC_MODULES = var("CBLAS_PC_MODULES", "cblas:openblas:blas")
+CBLAS_PC_MODULES = var("CBLAS_PC_MODULES", "flexiblas:cblas:openblas:blas")
ECL_CONFIG = var("ECL_CONFIG", "ecl-config")
NTL_INCDIR = var("NTL_INCDIR")
NTL_LIBDIR = var("NTL_LIBDIR")
@@ -478,7 +478,7 @@ def cython_aliases(required_modules=None
for lib, required in itertools.chain(((lib, True) for lib in required_modules),
((lib, False) for lib in optional_modules)):
var = lib.upper().replace("-", "") + "_"
- if lib == 'cblas':
+ if lib == 'cblas' or lib == 'lapack':
lib = get_cblas_pc_module_name()
if lib == 'zlib':
aliases[var + "CFLAGS"] = ""

View file

@ -1,72 +0,0 @@
diff -up build/pkgs/giac/spkg-configure.m4.orig build/pkgs/giac/spkg-configure.m4
--- build/pkgs/giac/spkg-configure.m4.orig 2022-09-19 16:38:18.000000000 -0600
+++ build/pkgs/giac/spkg-configure.m4 2023-01-15 19:56:31.030581488 -0700
@@ -21,7 +21,7 @@ SAGE_SPKG_CONFIGURE([giac], [
AC_CHECK_HEADER([giac/giac.h], [
AC_SEARCH_LIBS([ConvertUTF16toUTF8], [giac], [
], [sage_spkg_install_giac=yes])
- ], [sage_spkg_install_giac=yes])
+ ], [sage_spkg_install_giac=yes], [typedef unsigned char uchar;])
m4_popdef([GIAC_MIN_VERSION])
m4_popdef([GIAC_MAX_VERSION])
])
diff -up configure.orig configure
--- configure.orig 2023-01-15 19:55:21.828822178 -0700
+++ configure 2023-01-15 19:58:12.425759949 -0700
@@ -26479,7 +26479,8 @@ printf "%s\n" "$ac_cv_path_GIAC" >&6; }
then :
sage_spkg_install_giac=yes
fi
- ac_fn_cxx_check_header_compile "$LINENO" "giac/giac.h" "ac_cv_header_giac_giac_h" "$ac_includes_default"
+ ac_fn_cxx_check_header_compile "$LINENO" "giac/giac.h" "ac_cv_header_giac_giac_h" "typedef unsigned char uchar;
+$ac_includes_default"
if test "x$ac_cv_header_giac_giac_h" = xyes
then :
diff -up src/sage/libs/giac/giac.pxd.orig src/sage/libs/giac/giac.pxd
--- src/sage/libs/giac/giac.pxd.orig 2022-09-19 16:38:18.000000000 -0600
+++ src/sage/libs/giac/giac.pxd 2023-01-15 19:55:21.830822142 -0700
@@ -12,6 +12,11 @@
from sage.libs.gmp.mpz cimport mpz_t, mpz_set
from libcpp.string cimport string
+cdef extern from *:
+ """
+ typedef unsigned char uchar;
+ """
+
cdef extern from "giac/giac.h" namespace "giac":
cdef cppclass context:
context()
diff -up src/sage/libs/giac/misc.h.orig src/sage/libs/giac/misc.h
--- src/sage/libs/giac/misc.h.orig 2022-09-19 16:38:18.000000000 -0600
+++ src/sage/libs/giac/misc.h 2023-01-15 19:55:21.830822142 -0700
@@ -1,5 +1,6 @@
#ifndef GIACPYMISC_H
#define GIACPYMISC_H
+typedef unsigned char uchar;
#include <giac/giac.h>
#include <fstream>
diff -up src/sage/symbolic/ginac/mpoly-giac.cpp.orig src/sage/symbolic/ginac/mpoly-giac.cpp
--- src/sage/symbolic/ginac/mpoly-giac.cpp.orig 2022-09-19 16:38:19.000000000 -0600
+++ src/sage/symbolic/ginac/mpoly-giac.cpp 2023-01-15 19:55:21.831822125 -0700
@@ -44,6 +44,7 @@
#include "function.h"
#include "utils.h"
+typedef unsigned char uchar;
#include <giac/global.h>
#include <giac/gausspol.h>
diff -up src/sage/symbolic/ginac/numeric.cpp.orig src/sage/symbolic/ginac/numeric.cpp
--- src/sage/symbolic/ginac/numeric.cpp.orig 2023-01-15 19:52:42.820659135 -0700
+++ src/sage/symbolic/ginac/numeric.cpp 2023-01-15 19:55:21.831822125 -0700
@@ -77,6 +77,7 @@
#undef _POSIX_C_SOURCE
#undef _XOPEN_SOURCE
+typedef unsigned char uchar;
#include <giac/global.h>
#include <giac/gausspol.h>
#include <giac/fraction.h>

View file

@ -1,15 +0,0 @@
diff -up src/sage_docbuild/conf.py.orig src/sage_docbuild/conf.py
--- src/sage_docbuild/conf.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage_docbuild/conf.py 2023-03-13 09:53:42.670555040 -0600
@@ -228,9 +228,8 @@ def set_intersphinx_mappings(app, config
app.config.intersphinx_mapping = {
'python': ('https://docs.python.org/',
- os.path.join(SAGE_DOC_SRC, "common",
- "python{}.inv".format(python_version))),
- 'pplpy': (PPLPY_DOCS, None)}
+ '/usr/share/doc/python3-docs/html/objects.inv'),
+ 'pplpy': (PPLPY_DOCS, '/usr/share/doc/python3-pplpy-devel/objects.inv')}
# Add master intersphinx mapping
dst = os.path.join(invpath, 'objects.inv')

View file

@ -1,33 +0,0 @@
diff -up src/sage/interfaces/jmoldata.py.orig src/sage/interfaces/jmoldata.py
--- src/sage/interfaces/jmoldata.py.orig 2022-09-19 16:38:18.000000000 -0600
+++ src/sage/interfaces/jmoldata.py 2023-01-15 17:05:52.942389170 -0700
@@ -153,8 +153,6 @@ class JmolData(SageObject):
True
sage: archive.close()
"""
- # Set up paths, file names and scripts
- jmolpath = os.path.join(JMOL_DIR, "JmolData.jar")
target_native = targetfile
if sys.platform == 'cygwin':
@@ -176,12 +174,14 @@ class JmolData(SageObject):
with open(scratchout, 'w') as jout:
# Now call the java application and write the file.
env = dict(os.environ)
- env['LC_ALL'] = 'C'
- env['LANG'] = 'C'
- subprocess.call(["java", "-Xmx512m", "-Djava.awt.headless=true",
- "-jar", jmolpath, "-iox", "-g", size_arg,
- "-J", launchscript, "-j", imagescript],
- stdout=jout, stderr=jout, env=env)
+ env['LC_ALL'] = 'C.UTF-8'
+ env['LANG'] = 'C.UTF-8'
+ try:
+ subprocess.call(["jmol", "-n", "-g", size_arg,
+ "-J", launchscript, "-j", imagescript],
+ timeout=300, stdout=jout, stderr=jout, env=env)
+ except:
+ pass
if not os.path.isfile(targetfile):
raise RuntimeError(f"Jmol failed to create file {targetfile}: {Path(scratchout).read_text()}")
os.unlink(scratchout)

View file

@ -1,21 +0,0 @@
diff -up src/sage/features/latte.py.orig src/sage/features/latte.py
--- src/sage/features/latte.py.orig 2022-05-15 16:11:11.000000000 -0600
+++ src/sage/features/latte.py 2022-06-01 11:03:23.813894057 -0600
@@ -21,7 +21,7 @@ class Latte_count(Executable):
sage: isinstance(Latte_count(), Latte_count)
True
"""
- Executable.__init__(self, "count", executable="count",
+ Executable.__init__(self, "count", executable="latte-count",
spkg="latte_int",
url=LATTE_URL)
@@ -38,7 +38,7 @@ class Latte_integrate(Executable):
sage: isinstance(Latte_integrate(), Latte_integrate)
True
"""
- Executable.__init__(self, "integrate", executable="integrate",
+ Executable.__init__(self, "integrate", executable="latte-integrate",
spkg="latte_int",
url=LATTE_URL)

View file

@ -1,10 +0,0 @@
diff -up src/sage/libs/lcalc/lcalc_Lfunction.pyx.orig src/sage/libs/lcalc/lcalc_Lfunction.pyx
--- src/sage/libs/lcalc/lcalc_Lfunction.pyx.orig 2021-05-09 16:00:11.000000000 -0600
+++ src/sage/libs/lcalc/lcalc_Lfunction.pyx 2021-06-02 17:12:56.077802570 -0600
@@ -1,5 +1,5 @@
# distutils: libraries = m NTL_LIBRARIES Lfunction
-# distutils: extra_compile_args = NTL_CFLAGS -O3 -ffast-math
+# distutils: extra_compile_args = NTL_CFLAGS -std=gnu++11 -ffast-math
# distutils: include_dirs = NTL_INCDIR
# distutils: library_dirs = NTL_LIBDIR
# distutils: extra_link_args = NTL_LIBEXTRA

View file

@ -1,701 +0,0 @@
diff -up src/doc/en/thematic_tutorials/lie/weyl_groups.rst.orig src/doc/en/thematic_tutorials/lie/weyl_groups.rst
--- src/doc/en/thematic_tutorials/lie/weyl_groups.rst.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/doc/en/thematic_tutorials/lie/weyl_groups.rst 2023-03-13 09:42:01.111404689 -0600
@@ -139,12 +139,12 @@ string, which you can print::
X.1 1 1 1 1 1 1 1 1 1 1 1 1 1
X.2 1 -1 1 1 -1 1 1 -1 -1 -1 1 1 1
X.3 2 . 2 -1 . 2 2 . . . -1 2 2
- X.4 3 -1 -1 . 1 -1 3 -1 1 -1 . -1 3
- X.5 3 -1 -1 . 1 3 -1 -1 -1 1 . -1 3
- X.6 3 1 -1 . -1 -1 3 1 -1 1 . -1 3
- X.7 3 1 -1 . -1 3 -1 1 1 -1 . -1 3
- X.8 3 -1 3 . -1 -1 -1 -1 1 1 . -1 3
- X.9 3 1 3 . 1 -1 -1 1 -1 -1 . -1 3
+ X.4 3 -1 -1 . 1 3 -1 -1 -1 1 . -1 3
+ X.5 3 1 -1 . -1 3 -1 1 1 -1 . -1 3
+ X.6 3 -1 3 . -1 -1 -1 -1 1 1 . -1 3
+ X.7 3 -1 -1 . 1 -1 3 -1 1 -1 . -1 3
+ X.8 3 1 3 . 1 -1 -1 1 -1 -1 . -1 3
+ X.9 3 1 -1 . -1 -1 3 1 -1 1 . -1 3
X.10 4 -2 . -1 . . . 2 . . 1 . -4
X.11 4 2 . -1 . . . -2 . . 1 . -4
X.12 6 . -2 . . -2 -2 . . . . 2 6
diff -up src/sage/coding/linear_code.py.orig src/sage/coding/linear_code.py
--- src/sage/coding/linear_code.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/coding/linear_code.py 2023-03-13 09:42:01.112404670 -0600
@@ -465,7 +465,10 @@ class AbstractLinearCode(AbstractLinearC
0
sage: C = codes.HammingCode(GF(4, 'z'), 3)
sage: C.automorphism_group_gens()
- ([((1, 1, 1, 1, 1, z + 1, z, z + 1, z, z, z, 1, 1, z + 1, z + 1, z, z + 1, z, z + 1, z + 1, z + 1); (1,14,6,7,4,10,11,19)(2,8,16,13,3,17,21,15)(9,12,18,20), Ring endomorphism of Finite Field in z of size 2^2
+ ([((1, 1, 1, z, z + 1, 1, 1, 1, 1, z + 1, z, z, z + 1, z + 1, z + 1, 1, z + 1, z, z, 1, z); (1,13,14,20)(2,21,8,18,7,16,19,15)(3,10,5,12,17,9,6,4), Ring endomorphism of Finite Field in z of size 2^2
+ Defn: z |--> z + 1),
+ ((z, 1, z, z, z, z + 1, z, z, z, z, z, z, z + 1, z, z, z, z, z + 1, z, z, z); (1,11,5,12,3,19)(2,8)(6,18,13)(7,17,15)(9,10,14,16,20,21), Ring endomorphism of Finite Field in z of size 2^2
+ Defn: z |--> z + 1),
Defn: z |--> z + 1),
((z + 1, 1, 1, z, z + 1, z, z, z + 1, z + 1, z + 1, 1, z + 1, z, z, 1, z + 1, 1, z, z + 1, z + 1, z); (1,18,6,19,2,9,17,10,13,14,21,11,4,5,12)(3,20,7,16,8), Ring endomorphism of Finite Field in z of size 2^2
Defn: z |--> z),
@@ -473,19 +476,20 @@ class AbstractLinearCode(AbstractLinearC
Defn: z |--> z)],
362880)
sage: C.automorphism_group_gens(equivalence="linear")
- ([((z + 1, 1, z + 1, z + 1, z + 1, z, 1, z, 1, 1, 1, 1, z + 1, z + 1, z + 1, z, z, 1, z, z, z); (1,15,2,8,16,18,3)(4,9,12,13,20,10,11)(5,21,14,6,7,19,17), Ring endomorphism of Finite Field in z of size 2^2
+ ([((z, 1, z + 1, z + 1, 1, z + 1, z, 1, z + 1, z + 1, 1, z, 1, z + 1, z, 1, z, 1, z + 1, 1, 1); (1,12,11,10,6,8,9,20,13,21,5,14,3,16,17,19,7,4,2,15,18), Ring endomorphism of Finite Field in z of size 2^2
Defn: z |--> z),
- ((z + 1, z + 1, z + 1, z + 1, z + 1, 1, z, 1, z, z, z, 1, z, 1, 1, 1, z + 1, z + 1, z + 1, 1, z); (1,15,21,8,9)(2,18,5,3,11,16,7,10,19,13,12,4,17,6,20), Ring endomorphism of Finite Field in z of size 2^2
+ ((z + 1, z + 1, z + 1, z, 1, 1, z, z, 1, z + 1, z, 1, 1, z, 1, z + 1, z, z + 1, z + 1, 1, z); (1,3,18,2,17,6,19)(4,15,13,20,7,14,16)(5,11,8,21,12,9,10), Ring endomorphism of Finite Field in z of size 2^2
+ Defn: z |--> z),
Defn: z |--> z),
((z + 1, z + 1, z + 1, z + 1, z + 1, z + 1, z + 1, z + 1, z + 1, z + 1, z + 1, z + 1, z + 1, z + 1, z + 1, z + 1, z + 1, z + 1, z + 1, z + 1, z + 1); (), Ring endomorphism of Finite Field in z of size 2^2
Defn: z |--> z)],
181440)
sage: C.automorphism_group_gens(equivalence="permutational")
- ([((1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); (1,19)(3,17)(4,21)(5,20)(7,14)(9,12)(10,16)(11,15), Ring endomorphism of Finite Field in z of size 2^2
+ ([((1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); (1,11)(3,10)(4,9)(5,7)(12,21)(14,20)(15,19)(16,17), Ring endomorphism of Finite Field in z of size 2^2
Defn: z |--> z),
- ((1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); (1,11)(3,10)(4,9)(5,7)(12,21)(14,20)(15,19)(16,17), Ring endomorphism of Finite Field in z of size 2^2
+ ((1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); (2,18)(3,19)(4,10)(5,16)(8,13)(9,14)(11,21)(15,20), Ring endomorphism of Finite Field in z of size 2^2
Defn: z |--> z),
- ((1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); (1,17)(2,8)(3,14)(4,10)(7,12)(9,19)(13,18)(15,20), Ring endomorphism of Finite Field in z of size 2^2
+ ((1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); (1,19)(3,17)(4,21)(5,20)(7,14)(9,12)(10,16)(11,15), Ring endomorphism of Finite Field in z of size 2^2
Defn: z |--> z),
((1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); (2,13)(3,14)(4,20)(5,11)(8,18)(9,19)(10,15)(16,21), Ring endomorphism of Finite Field in z of size 2^2
Defn: z |--> z)],
@@ -691,10 +695,10 @@ class AbstractLinearCode(AbstractLinearC
sage: C_iso == aut_group_can_label.get_canonical_form()
True
sage: aut_group_can_label.get_autom_gens()
- [((1, 1, 1, 1, 1, z + 1, z, z + 1, z, z, z, 1, 1, z + 1, z + 1, z, z + 1, z, z + 1, z + 1, z + 1); (1,14,6,7,4,10,11,19)(2,8,16,13,3,17,21,15)(9,12,18,20), Ring endomorphism of Finite Field in z of size 2^2
+ [((1, 1, 1, z, z + 1, 1, 1, 1, 1, z + 1, z, z, z + 1, z + 1, z + 1, 1, z + 1, z, z, 1, z); (1,13,14,20)(2,21,8,18,7,16,19,15)(3,10,5,12,17,9,6,4), Ring endomorphism of Finite Field in z of size 2^2
++ Defn: z |--> z + 1),
++ ((z, 1, z, z, z, z + 1, z, z, z, z, z, z, z + 1, z, z, z, z, z + 1, z, z, z); (1,11,5,12,3,19)(2,8)(6,18,13)(7,17,15)(9,10,14,16,20,21), Ring endomorphism of Finite Field in z of size 2^2
Defn: z |--> z + 1),
- ((z + 1, 1, 1, z, z + 1, z, z, z + 1, z + 1, z + 1, 1, z + 1, z, z, 1, z + 1, 1, z, z + 1, z + 1, z); (1,18,6,19,2,9,17,10,13,14,21,11,4,5,12)(3,20,7,16,8), Ring endomorphism of Finite Field in z of size 2^2
- Defn: z |--> z),
((z, z, z, z, z, z, z, z, z, z, z, z, z, z, z, z, z, z, z, z, z); (), Ring endomorphism of Finite Field in z of size 2^2
Defn: z |--> z)]
"""
diff -up src/sage/combinat/root_system/hecke_algebra_representation.py.orig src/sage/combinat/root_system/hecke_algebra_representation.py
--- src/sage/combinat/root_system/hecke_algebra_representation.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/combinat/root_system/hecke_algebra_representation.py 2023-03-13 09:42:01.112404670 -0600
@@ -357,7 +357,7 @@ class HeckeAlgebraRepresentation(WithEqu
sage: q1, q2 = K.gens()
sage: KW = W.algebra(K)
sage: x = KW.an_element(); x
- 123 + 3*32 + 2*3 + e
+ 123 + 3*2312 + 2*31 + e
sage: T = KW.demazure_lusztig_operators(q1,q2)
sage: T12 = T.Tw( (1,2) )
diff -up src/sage/combinat/symmetric_group_algebra.py.orig src/sage/combinat/symmetric_group_algebra.py
--- src/sage/combinat/symmetric_group_algebra.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/combinat/symmetric_group_algebra.py 2023-03-13 09:42:01.113404652 -0600
@@ -101,7 +101,7 @@ def SymmetricGroupAlgebra(R, W, category
sage: SGA.group()
Weyl Group of type ['A', 3] (as a matrix group acting on the ambient space)
sage: SGA.an_element()
- s1*s2*s3 + 3*s3*s2 + 2*s3 + 1
+ s1*s2*s3 + 3*s2*s3*s1*s2 + 2*s3*s1 + 1
The preferred way to construct the symmetric group algebra is to
go through the usual ``algebra`` method::
diff -up src/sage/env.py.orig src/sage/env.py
--- src/sage/env.py.orig 2023-03-13 09:26:16.468693261 -0600
+++ src/sage/env.py 2023-03-13 14:09:36.725081542 -0600
@@ -197,7 +197,7 @@ CONWAY_POLYNOMIALS_DATA_DIR = var("CONWA
GRAPHS_DATA_DIR = var("GRAPHS_DATA_DIR", join(SAGE_SHARE, "graphs"))
ELLCURVE_DATA_DIR = var("ELLCURVE_DATA_DIR", join(SAGE_SHARE, "ellcurves"))
POLYTOPE_DATA_DIR = var("POLYTOPE_DATA_DIR", join(SAGE_SHARE, "reflexive_polytopes"))
-GAP_ROOT_DIR = var("GAP_ROOT_DIR", join(SAGE_SHARE, "gap"))
+GAP_ROOT_DIRS = var("GAP_ROOT_DIR", ["/usr/share/gap", "/usr/lib64/gap"])
THEBE_DIR = var("THEBE_DIR", join(SAGE_SHARE, "thebe"))
COMBINATORIAL_DESIGN_DATA_DIR = var("COMBINATORIAL_DESIGN_DATA_DIR", join(SAGE_SHARE, "combinatorial_designs"))
CREMONA_MINI_DATA_DIR = var("CREMONA_MINI_DATA_DIR", join(SAGE_SHARE, "cremona"))
diff -up src/sage/groups/abelian_gps/abelian_group_gap.py.orig src/sage/groups/abelian_gps/abelian_group_gap.py
--- src/sage/groups/abelian_gps/abelian_group_gap.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/groups/abelian_gps/abelian_group_gap.py 2023-03-13 09:42:01.113404652 -0600
@@ -338,7 +338,7 @@ class AbelianGroup_gap(UniqueRepresentat
if isinstance(x, AbelianGroupElement_gap):
try:
if x in self._cover:
- x = self.gap().NaturalHomomorphism().Image(x.gap())
+ x = self._cover.gap().NaturalHomomorphismByNormalSubgroup(self._relations).Image(x.gap())
else:
x = x.gap()
except AttributeError:
@@ -1043,7 +1043,7 @@ class AbelianGroupQuotient_gap(AbelianGr
From: Abelian group with gap, generator orders (4,)
To: Quotient abelian group with generator orders (2,)
"""
- phi = self.gap().NaturalHomomorphism()
+ phi = self._cover.gap().NaturalHomomorphismByNormalSubgroup(self._relations)
Hom = self._cover.Hom(self)
return Hom(phi)
diff -up src/sage/groups/finitely_presented.py.orig src/sage/groups/finitely_presented.py
--- src/sage/groups/finitely_presented.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/groups/finitely_presented.py 2023-03-13 09:42:01.113404652 -0600
@@ -596,9 +596,9 @@ class RewritingSystem():
sage: k = G.rewriting_system()
sage: k.gap()
Knuth Bendix Rewriting System for Monoid( [ a, A, b, B ] ) with rules
- [ [ a^2, <identity ...> ], [ a*A, <identity ...> ],
- [ A*a, <identity ...> ], [ b^2, <identity ...> ],
- [ b*B, <identity ...> ], [ B*b, <identity ...> ] ]
+ [ [ a*A, <identity ...> ], [ A*a, <identity ...> ],
+ [ b*B, <identity ...> ], [ B*b, <identity ...> ],
+ [ a^2, <identity ...> ], [ b^2, <identity ...> ] ]
"""
return self._gap
diff -up src/sage/groups/fqf_orthogonal.py.orig src/sage/groups/fqf_orthogonal.py
--- src/sage/groups/fqf_orthogonal.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/groups/fqf_orthogonal.py 2023-03-13 09:42:01.114404634 -0600
@@ -143,7 +143,7 @@ class FqfOrthogonalGroup(AbelianGroupAut
[2/3 0 0]
[ 0 2/3 0]
[ 0 0 4/3]
- generated by 2 elements
+ generated by 3 elements
sage: q = matrix.diagonal(QQ, [3/2, 1/4, 1/4])
sage: T = TorsionQuadraticForm(q)
sage: T.orthogonal_group().order()
diff -up src/sage/groups/libgap_wrapper.pyx.orig src/sage/groups/libgap_wrapper.pyx
--- src/sage/groups/libgap_wrapper.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/groups/libgap_wrapper.pyx 2023-03-13 09:42:01.114404634 -0600
@@ -25,7 +25,7 @@ Note how we call the constructor of both
its output via LibGAP::
sage: FooGroup()
- <pc group of size 3 with 1 generators>
+ <pc group of size 3 with 1 generator>
sage: type(FooGroup().gap())
<class 'sage.libs.gap.element.GapElement'>
@@ -106,7 +106,7 @@ class ParentLibGAP(SageObject):
....: ParentLibGAP.__init__(self, lg)
....: Group.__init__(self)
sage: FooGroup()
- <pc group of size 3 with 1 generators>
+ <pc group of size 3 with 1 generator>
"""
def __init__(self, libgap_parent, ambient=None):
@@ -461,7 +461,7 @@ cdef class ElementLibGAP(MultiplicativeG
....: ParentLibGAP.__init__(self, lg)
....: Group.__init__(self)
sage: FooGroup()
- <pc group of size 3 with 1 generators>
+ <pc group of size 3 with 1 generator>
sage: FooGroup().gens()
(f1,)
"""
diff -up src/sage/groups/perm_gps/partn_ref2/refinement_generic.pyx.orig src/sage/groups/perm_gps/partn_ref2/refinement_generic.pyx
--- src/sage/groups/perm_gps/partn_ref2/refinement_generic.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/groups/perm_gps/partn_ref2/refinement_generic.pyx 2023-03-13 09:42:01.114404634 -0600
@@ -427,7 +427,7 @@ cdef class LabelledBranching:
sage: from sage.groups.perm_gps.partn_ref2.refinement_generic import LabelledBranching
sage: L = LabelledBranching(3)
sage: L.small_generating_set()
- []
+ [()]
sage: L.add_gen(libgap.eval('(1,2,3)'))
sage: L.small_generating_set()
[(1,2,3)]
diff -up src/sage/groups/perm_gps/permgroup.py.orig src/sage/groups/perm_gps/permgroup.py
--- src/sage/groups/perm_gps/permgroup.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/groups/perm_gps/permgroup.py 2023-03-13 09:42:01.115404615 -0600
@@ -926,7 +926,7 @@ class PermutationGroup_generic(FiniteGro
sage: f = PG._coerce_map_from_(MG)
sage: mg = MG.an_element()
sage: p = f(mg); p
- (2,33,32,23,31,55)(3,49,38,44,40,28)(4,17,59,62,58,46)(5,21,47,20,43,8)(6,53,50)(7,37,12,57,14,29)(9,41,56,34,64,10)(11,25,19)(13,61,26,51,22,15)(16,45,36)(18,27,35,48,52,54)(24,63,42)(30,39,60)
+ (1,2,6,19,35,33)(3,9,26,14,31,23)(4,13,5)(7,22,17)(8,24,12)(10,16,32,27,20,28)(11,30,18)(15,25,36,34,29,21)
sage: PG(p._gap_()) == p
True
@@ -972,12 +972,12 @@ class PermutationGroup_generic(FiniteGro
sage: P = G.as_permutation_group(algorithm='smaller', seed=5)
sage: P1 = G.as_permutation_group()
sage: P == P1
- False
+ True
sage: g1, g2, g3 = G.gens()
sage: P(g1*g2)
- (1,3,7,12)(2,4,8,10)(5,11)(6,9)
+ (1,4,13,11)(2,5,14,18)(3,15,8,16)(6,7)(9,20,19,12)(10,17)
sage: P1(g1*g2)
- (2,29,25,68)(3,57,13,54)(4,11,72,37)(5,39,60,23)(6,64,75,63)(7,21,50,73)(8,46,38,32)(9,74,35,18)(10,44,49,48)(12,16,34,71)(14,79,27,40)(15,26)(17,62,59,76)(19,78,70,65)(20,22,58,51)(24,33,36,43)(28,81,80,52)(30,53,56,69)(31,61)(41,42,67,55)(45,77)(47,66)
+ (1,4,13,11)(2,5,14,18)(3,15,8,16)(6,7)(9,20,19,12)(10,17)
Another check for :trac:`5583`::
@@ -4372,7 +4372,7 @@ class PermutationGroup_generic(FiniteGro
sage: G = PermutationGroup([[(1,2,3,4,5)],[(1,2)]]) #S_5 on [1..5]
sage: G.is_transitive([1,4,5])
- True
+ False
sage: G.is_transitive([2..6])
False
sage: G.is_transitive(G.non_fixed_points())
@@ -4437,7 +4437,7 @@ class PermutationGroup_generic(FiniteGro
sage: G.is_primitive([1..4])
False
sage: G.is_primitive([1,2,3])
- True
+ False
sage: G = PermutationGroup([[(3,4,5,6)],[(3,4)]]) #S_4 on [3..6]
sage: G.is_primitive(G.non_fixed_points())
True
diff -up src/sage/interfaces/gap.py.orig src/sage/interfaces/gap.py
--- src/sage/interfaces/gap.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/interfaces/gap.py 2023-03-13 09:42:01.115404615 -0600
@@ -1512,6 +1512,8 @@ def gap_reset_workspace(max_workspace_si
"""
# Create new workspace with filename WORKSPACE
g = Gap(use_workspace_cache=False, max_workspace_size=None)
+ g.eval('ColorPrompt(false)')
+ g.eval('SetUserPreference("UseColorPrompt", false)')
g.eval('SetUserPreference("HistoryMaxLines", 30)')
from sage.tests.gap_packages import all_installed_packages
for pkg in all_installed_packages(gap=g):
diff -up src/sage/libs/gap/element.pxd.orig src/sage/libs/gap/element.pxd
--- src/sage/libs/gap/element.pxd.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/libs/gap/element.pxd 2023-03-13 09:42:01.116404597 -0600
@@ -29,9 +29,9 @@ cdef GapElement_Boolean make_GapElement_
cdef GapElement_Function make_GapElement_Function(parent, Obj obj)
cdef GapElement_Permutation make_GapElement_Permutation(parent, Obj obj)
-cdef char *capture_stdout(Obj, Obj)
-cdef char *gap_element_str(Obj)
-cdef char *gap_element_repr(Obj)
+cdef str capture_stdout(Obj, Obj)
+cdef str gap_element_str(Obj)
+cdef str gap_element_repr(Obj)
cdef class GapElement(RingElement):
diff -up src/sage/libs/gap/element.pyx.orig src/sage/libs/gap/element.pyx
--- src/sage/libs/gap/element.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/libs/gap/element.pyx 2023-03-13 09:42:01.116404597 -0600
@@ -120,7 +120,7 @@ cdef Obj make_gap_matrix(sage_list, gap_
return l.value
-cdef char *capture_stdout(Obj func, Obj obj):
+cdef str capture_stdout(Obj func, Obj obj):
"""
Call a single-argument GAP function ``func`` with the argument ``obj``
and return the stdout from that function call.
@@ -130,6 +130,7 @@ cdef char *capture_stdout(Obj func, Obj
"""
cdef Obj s, stream, output_text_string
cdef UInt res
+ cdef TypOutputFile output
# The only way to get a string representation of an object that is truly
# consistent with how it would be represented at the GAP REPL is to call
# ViewObj on it. Unfortunately, ViewObj *prints* to the output stream,
@@ -139,36 +140,35 @@ cdef char *capture_stdout(Obj func, Obj
# that does not give consistent results.
# TODO: This is probably needlessly slow, but we might need better
# support from GAP to improve this...
- try:
- GAP_Enter()
- s = NEW_STRING(0)
- output_text_string = GAP_ValueGlobalVariable("OutputTextString")
- stream = CALL_2ARGS(output_text_string, s, GAP_True)
+ s = NEW_STRING(0)
+ output_text_string = GAP_ValueGlobalVariable("OutputTextString")
+ stream = CALL_2ARGS(output_text_string, s, GAP_True)
- if not OpenOutputStream(stream):
- raise GAPError("failed to open output capture stream for "
- "representing GAP object")
+ if not OpenOutputStream(&output, stream):
+ raise GAPError("failed to open output capture stream for "
+ "representing GAP object")
- CALL_1ARGS(func, obj)
- CloseOutput()
- return CSTR_STRING(s)
- finally:
- GAP_Leave()
+ CALL_1ARGS(func, obj)
+ CloseOutput(&output)
+ return char_to_str(CSTR_STRING(s))
-cdef char *gap_element_repr(Obj obj):
+cdef str gap_element_repr(Obj obj):
"""
Implement ``repr()`` of ``GapElement``s using the ``ViewObj()`` function,
which is by default closest to what you get when displaying an object in
GAP on the command-line (i.e. when evaluating an expression that returns
that object.
"""
+ cdef Obj func
+ try:
+ GAP_Enter()
+ func = GAP_ValueGlobalVariable("ViewObj")
+ return capture_stdout(func, obj)
+ finally:
+ GAP_Leave()
- cdef Obj func = GAP_ValueGlobalVariable("ViewObj")
- return capture_stdout(func, obj)
-
-
-cdef char *gap_element_str(Obj obj):
+cdef str gap_element_str(Obj obj):
"""
Implement ``str()`` of ``GapElement``s using the ``Print()`` function.
@@ -178,9 +178,13 @@ cdef char *gap_element_str(Obj obj):
slightly different approach more closely mirroring Python's str/repr
difference (though this does not map perfectly onto GAP).
"""
- cdef Obj func = GAP_ValueGlobalVariable("Print")
- return capture_stdout(func, obj)
-
+ cdef Obj func
+ try:
+ GAP_Enter()
+ func = GAP_ValueGlobalVariable("Print")
+ return capture_stdout(func, obj)
+ finally:
+ GAP_Leave()
cdef Obj make_gap_record(sage_dict) except NULL:
"""
@@ -760,7 +764,7 @@ cdef class GapElement(RingElement):
if self.value == NULL:
return 'NULL'
- s = char_to_str(gap_element_str(self.value))
+ s = gap_element_str(self.value)
return s.strip()
def _repr_(self):
@@ -782,7 +786,7 @@ cdef class GapElement(RingElement):
if self.value == NULL:
return 'NULL'
- s = char_to_str(gap_element_repr(self.value))
+ s = gap_element_repr(self.value)
return s.strip()
cpdef _set_compare_by_id(self):
@@ -955,7 +959,7 @@ cdef class GapElement(RingElement):
sig_on()
try:
GAP_Enter()
- return EQ(self.value, c_other.value)
+ return <bint>EQ(self.value, c_other.value)
finally:
GAP_Leave()
sig_off()
@@ -977,7 +981,7 @@ cdef class GapElement(RingElement):
sig_on()
try:
GAP_Enter()
- return LT(self.value, c_other.value)
+ return <bint>LT(self.value, c_other.value)
finally:
GAP_Leave()
sig_off()
@@ -1205,7 +1209,7 @@ cdef class GapElement(RingElement):
sage: a.is_function()
False
"""
- return IS_FUNC(self.value)
+ return <bint>IS_FUNC(self.value)
def is_list(self):
r"""
@@ -1222,7 +1226,7 @@ cdef class GapElement(RingElement):
sage: libgap.eval('3/2').is_list()
False
"""
- return IS_LIST(self.value)
+ return <bint>IS_LIST(self.value)
def is_record(self):
r"""
@@ -1239,7 +1243,7 @@ cdef class GapElement(RingElement):
sage: libgap.eval('rec(a:=1, b:=3)').is_record()
True
"""
- return IS_REC(self.value)
+ return <bint>IS_REC(self.value)
cpdef is_bool(self):
r"""
@@ -1272,7 +1276,7 @@ cdef class GapElement(RingElement):
sage: libgap('this is a string').is_string()
True
"""
- return IS_STRING(self.value)
+ return <bint>IS_STRING(self.value)
def is_permutation(self):
r"""
@@ -1469,7 +1473,7 @@ cdef class GapElement_Integer(GapElement
sage: N.IsInt()
true
"""
- return IS_INTOBJ(self.value)
+ return <bint>IS_INTOBJ(self.value)
def _rational_(self):
r"""
@@ -2806,7 +2810,7 @@ cdef class GapElement_List(GapElement):
...
ValueError: too many indices
"""
- cdef int j
+ cdef Int j
cdef Obj obj = self.value
if isinstance(i, tuple):
@@ -2877,7 +2881,7 @@ cdef class GapElement_List(GapElement):
if not IS_MUTABLE_OBJ(self.value):
raise TypeError('immutable Gap object does not support item assignment')
- cdef int j
+ cdef Int j
cdef Obj obj = self.value
if isinstance(i, tuple):
diff -up src/sage/libs/gap/gap_includes.pxd.orig src/sage/libs/gap/gap_includes.pxd
--- src/sage/libs/gap/gap_includes.pxd.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/libs/gap/gap_includes.pxd 2023-03-13 09:49:35.192090058 -0600
@@ -13,8 +13,8 @@ from libc.stdint cimport uintptr_t, uint
cdef extern from "gap/system.h" nogil:
ctypedef char Char
- ctypedef int Int
- ctypedef uintptr_t UInt
+ ctypedef long Int
+ ctypedef unsigned long UInt
ctypedef uint8_t UInt1
ctypedef uint16_t UInt2
ctypedef uint32_t UInt4
@@ -29,8 +29,8 @@ cdef extern from "gap/ariths.h" nogil:
Obj QUO(Obj, Obj)
Obj POW(Obj, Obj)
Obj MOD(Obj, Obj)
- bint EQ(Obj opL, Obj opR)
- bint LT(Obj opL, Obj opR)
+ Int EQ(Obj opL, Obj opR)
+ Int LT(Obj opL, Obj opR)
cdef extern from "gap/bool.h" nogil:
@@ -39,7 +39,7 @@ cdef extern from "gap/bool.h" nogil:
cdef extern from "gap/calls.h" nogil:
- bint IS_FUNC(Obj)
+ Int IS_FUNC(Obj)
Obj CALL_0ARGS(Obj f) # 0 arguments
Obj CALL_1ARGS(Obj f, Obj a1) # 1 argument
Obj CALL_2ARGS(Obj f, Obj a1, Obj a2)
@@ -61,7 +61,7 @@ cdef extern from "gap/gasman_intern.h" n
cdef extern from "gap/gvars.h" nogil:
- UInt GVarName "GVarName"(char* name)
+ UInt GVarName "GVarName"(const char* name)
void AssGVar "AssGVar"(UInt gvar, Obj val)
@@ -70,14 +70,16 @@ cdef extern from "gap/integer.h" nogil:
cdef extern from "gap/intobj.h" nogil:
- bint IS_INTOBJ(Obj obj)
+ Int IS_INTOBJ(Obj obj)
Obj INTOBJ_INT(Int)
Int INT_INTOBJ(Obj)
cdef extern from "gap/io.h" nogil:
- UInt OpenOutputStream(Obj stream)
- UInt CloseOutput()
+ ctypedef struct TypOutputFile:
+ pass
+ UInt OpenOutputStream(TypOutputFile* output, Obj stream)
+ UInt CloseOutput(TypOutputFile* output)
cdef extern from "gap/libgap-api.h" nogil:
@@ -100,11 +102,11 @@ cdef extern from "gap/libgap-api.h" nogi
cdef extern from "gap/lists.h" nogil:
- bint IS_LIST(Obj lst)
- int LEN_LIST(Obj lst)
- Obj ELM_LIST(Obj lst, int pos)
- Obj ELM0_LIST(Obj lst, int pos)
- void ASS_LIST(Obj lst, int pos, Obj elt)
+ Int IS_LIST(Obj lst)
+ Int LEN_LIST(Obj lst)
+ Obj ELM_LIST(Obj lst, Int pos)
+ Obj ELM0_LIST(Obj lst, Int pos)
+ void ASS_LIST(Obj lst, Int pos, Obj elt)
cdef extern from "gap/listfunc.h" nogil:
@@ -116,13 +118,13 @@ cdef extern from "gap/macfloat.h" nogil:
cdef extern from "gap/objects.h" nogil:
- bint IS_MUTABLE_OBJ(Obj obj)
+ Int IS_MUTABLE_OBJ(Obj obj)
Obj SHALLOW_COPY_OBJ(Obj obj)
- Obj CopyObj(Obj obj, int mut)
+ Obj CopyObj(Obj obj, Int mut)
UInt SIZE_OBJ(Obj obj)
UInt TNUM_OBJ(Obj obj)
- char* TNAM_OBJ(Obj obj)
+ const char* TNAM_OBJ(Obj obj)
cdef enum TNUM:
T_INT
@@ -163,23 +165,23 @@ cdef extern from "gap/permutat.h" nogil:
cdef extern from "gap/precord.h" nogil:
- Obj NEW_PREC(int len)
- int LEN_PREC(Obj rec)
- int GET_RNAM_PREC(Obj rec, int i)
- Obj GET_ELM_PREC(Obj rec, int i)
+ Obj NEW_PREC(UInt len)
+ UInt LEN_PREC(Obj rec)
+ Int GET_RNAM_PREC(Obj rec, UInt i)
+ Obj GET_ELM_PREC(Obj rec, UInt i)
void AssPRec(Obj rec, UInt rnam, Obj val)
cdef extern from "gap/records.h" nogil:
- char* NAME_RNAM(UInt rnam)
- bint IS_REC(Obj obj)
+ Obj NAME_RNAM(UInt rnam)
+ Int IS_REC(Obj obj)
Obj ELM_REC(Obj rec, UInt rnam)
- UInt RNamName(Char* name)
+ UInt RNamName(const Char* name)
cdef extern from "gap/stringobj.h" nogil:
char* CSTR_STRING(Obj list)
- bint IS_STRING(Obj obj)
- bint IsStringConv(Obj obj)
- Obj NEW_STRING(Int)
+ Int IS_STRING(Obj obj)
+ Int IsStringConv(Obj obj)
+ Obj NEW_STRING(Int len)
Obj MakeStringWithLen(const char* buf, size_t len)
diff -up src/sage/libs/gap/libgap.pyx.orig src/sage/libs/gap/libgap.pyx
--- src/sage/libs/gap/libgap.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/libs/gap/libgap.pyx 2023-03-13 09:42:01.117404579 -0600
@@ -695,7 +695,7 @@ class Gap(Parent):
sage: libgap.List
<Gap function "List">
sage: libgap.GlobalRandomSource
- <RandomSource in IsGlobalRandomSource>
+ <RandomSource in IsGAPRandomSource>
"""
if name in dir(self.__class__):
return getattr(self.__class__, name)
diff -up src/sage/libs/gap/saved_workspace.py.orig src/sage/libs/gap/saved_workspace.py
--- src/sage/libs/gap/saved_workspace.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/libs/gap/saved_workspace.py 2023-03-13 12:49:01.821288928 -0600
@@ -8,7 +8,7 @@ workspaces.
import os
import glob
-from sage.env import GAP_ROOT_DIR
+from sage.env import GAP_ROOT_DIRS
from sage.interfaces.gap_workspace import gap_workspace_file
@@ -31,7 +31,9 @@ def timestamp():
"""
libgap_dir = os.path.dirname(__file__)
libgap_files = glob.glob(os.path.join(libgap_dir, '*'))
- gap_packages = glob.glob(os.path.join(GAP_ROOT_DIR, 'pkg', '*'))
+ gap_packages = []
+ for path in GAP_ROOT_DIRS:
+ gap_packages += glob.glob(os.path.join(path, 'pkg', '*'))
files = libgap_files + gap_packages
if len(files) == 0:
print('Unable to find LibGAP files.')
diff -up src/sage/libs/gap/util.pyx.orig src/sage/libs/gap/util.pyx
--- src/sage/libs/gap/util.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/libs/gap/util.pyx 2023-03-13 14:13:48.497467652 -0600
@@ -173,22 +173,9 @@ def gap_root():
sage: from sage.libs.gap.util import gap_root
sage: gap_root() # random output
- '/home/vbraun/opt/sage-5.3.rc0/local/gap/latest'
+ '/usr/share/gap;/usr/lib64/gap']
"""
- if os.path.exists(sage.env.GAP_ROOT_DIR):
- return sage.env.GAP_ROOT_DIR
-
- # Attempt to figure out the appropriate GAP_ROOT by reading the
- # local/bin/gap shell script; this is an ugly hack that exists for
- # historical reasons; the best approach to setting where Sage looks for
- # the appropriate GAP_ROOT is to set the GAP_ROOT_DIR variable
- SAGE_LOCAL = sage.env.SAGE_LOCAL
- with open(os.path.join(SAGE_LOCAL, 'bin', 'gap')) as f:
- gap_sh = f.read().splitlines()
- gapdir = next(x for x in gap_sh if x.strip().startswith('GAP_ROOT'))
- gapdir = gapdir.split('"')[1]
- gapdir = gapdir.replace('$SAGE_LOCAL', SAGE_LOCAL)
- return gapdir
+ return ';'.join(sage.env.GAP_ROOT_DIRS)
# To ensure that we call initialize_libgap only once.
@@ -362,15 +349,9 @@ cdef Obj gap_eval(str gap_string) except
GAPError: Error, Variable: 'Complex' must have a value
Syntax error: ; expected in stream:1
Complex Field with 53 bits of precision;;
- ^^^^^^^^^^^^
+ ^^^^^
Error, Variable: 'with' must have a value
- Syntax error: ; expected in stream:1
- Complex Field with 53 bits of precision;;
- ^^^^^^^^^^^^^^^^^^^^
Error, Variable: 'bits' must have a value
- Syntax error: ; expected in stream:1
- Complex Field with 53 bits of precision;;
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Error, Variable: 'precision' must have a value
Test that on a subsequent attempt we get the same message (no garbage was
@@ -388,7 +369,7 @@ cdef Obj gap_eval(str gap_string) except
"""
initialize()
cdef Obj result
- cdef int i, j, nresults
+ cdef Int nresults
# Careful: We need to keep a reference to the bytes object here
# so that Cython doesn't deallocate it before GAP is done with
diff -up src/sage/tests/gap_packages.py.orig src/sage/tests/gap_packages.py
--- src/sage/tests/gap_packages.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/tests/gap_packages.py 2023-03-13 09:42:01.117404579 -0600
@@ -103,7 +103,7 @@ def all_installed_packages(ignore_dot_ga
sage: from sage.tests.gap_packages import all_installed_packages
sage: all_installed_packages()
- (...'GAPDoc'...)
+ (...'gapdoc'...)
sage: all_installed_packages(ignore_dot_gap=True) == all_installed_packages(gap=gap, ignore_dot_gap=True)
True
"""

View file

@ -1,34 +0,0 @@
diff -up src/sage/interfaces/maxima.py.orig src/sage/interfaces/maxima.py
--- src/sage/interfaces/maxima.py.orig 2022-09-19 16:38:18.000000000 -0600
+++ src/sage/interfaces/maxima.py 2023-01-15 17:05:26.283962150 -0700
@@ -568,7 +568,7 @@ class Maxima(MaximaAbstract, Expect):
Expect.__init__(self,
name='maxima',
prompt=r'\(\%i[0-9]+\) ',
- command='{0} -p {1}'.format(MAXIMA, shlex.quote(STARTUP)),
+ command='{0} --disable-readline -p {1}'.format(MAXIMA, shlex.quote(STARTUP)),
script_subdirectory=script_subdirectory,
restart_on_ctrlc=False,
verbose_start=False,
@@ -636,7 +636,8 @@ class Maxima(MaximaAbstract, Expect):
# Remove limit on the max heapsize (since otherwise it defaults
# to 256MB with ECL).
- self._sendline(":lisp (ext:set-limit 'ext:heap-size 0)")
+ self._sendline(":lisp #+ecl (ext:set-limit 'ext:heap-size 0) #-ecl 0")
+ self._sendline(':lisp #+gcl (progn (si:readline-off) (setf *error-output* (open "/dev/stderr" :direction :output) *standard-input* (open "/dev/stdin" :direction :input) *standard-output* (open "/dev/stdout" :direction :output))) #-gcl t')
self._eval_line('0;')
# set random seed
diff -up src/sage/interfaces/sage-maxima.lisp.orig src/sage/interfaces/sage-maxima.lisp
--- src/sage/interfaces/sage-maxima.lisp.orig 2022-09-19 16:38:18.000000000 -0600
+++ src/sage/interfaces/sage-maxima.lisp 2023-01-15 17:04:33.551095508 -0700
@@ -4,3 +4,8 @@
(setf *prompt-prefix* "<sage-display>")
+#+clisp
+(setf
+ *error-output* (open "/dev/stderr" :direction :output)
+ *standard-input* (open "/dev/stdin" :direction :input)
+ *standard-output* (open "/dev/stdout" :direction :output))

View file

@ -1,11 +0,0 @@
--- src/sage/symbolic/ginac/archive.cpp.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/symbolic/ginac/archive.cpp 2023-03-13 11:50:47.836951365 -0600
@@ -581,7 +581,7 @@ void archive::clear()
/** Delete cached unarchived expressions in all archive_nodes (mainly for debugging). */
void archive::forget()
{
- for_each(nodes.begin(), nodes.end(), std::mem_fun_ref(&archive_node::forget));
+ for (archive_node& node: nodes) node.forget();
}
/** Delete cached unarchived expressions from node (for debugging). */

View file

@ -1,356 +0,0 @@
diff -up src/sage/cpython/debugimpl.c.orig src/sage/cpython/debugimpl.c
--- src/sage/cpython/debugimpl.c.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/cpython/debugimpl.c 2023-03-13 09:38:55.609800668 -0600
@@ -148,6 +148,7 @@ static void _type_debug(PyTypeObject* tp
printf(" tp_basicsize: %ld\n", (long)tp->tp_basicsize);
printf(" tp_itemsize: %ld\n", (long)tp->tp_itemsize);
printf(" tp_dictoffset: %ld\n", (long)tp->tp_dictoffset);
+ printf(" tp_vectorcall_offset: %ld\n", (long)tp->tp_vectorcall_offset);
if HAVE_WEAKREFS(tp)
{
printf(" tp_weaklistoffset: %ld\n", (long)tp->tp_weaklistoffset);
@@ -178,7 +179,6 @@ static void _type_debug(PyTypeObject* tp
attr_pointer(tp_free);
attr_pointer_meth(tp_repr, "__repr__");
- attr_pointer(tp_print);
attr_pointer_meth(tp_hash, "__hash__");
attr_pointer_meth(tp_call, "__call__");
attr_pointer_meth(tp_str, "__str__");
diff -up src/sage/cpython/debug.pyx.orig src/sage/cpython/debug.pyx
--- src/sage/cpython/debug.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/cpython/debug.pyx 2023-03-13 09:38:55.610800649 -0600
@@ -231,6 +231,7 @@ def type_debug(cls):
tp_basicsize: 16
tp_itemsize: 0
tp_dictoffset: 0
+ tp_vectorcall_offset: 0
tp_weaklistoffset: 0
tp_base (__base__): NULL
tp_bases (__bases__): tuple:
@@ -258,7 +259,6 @@ def type_debug(cls):
tp_dealloc (__dealloc__): 0x7fc57d757010
tp_free: PyObject_Del
tp_repr (__repr__): 0x7fc57d75b990
- tp_print: NULL
tp_hash (__hash__): _Py_HashPointer
tp_call (__call__): NULL
tp_str (__str__): 0x7fc57d757020
diff -up src/sage/geometry/triangulation/point_configuration.py.orig src/sage/geometry/triangulation/point_configuration.py
--- src/sage/geometry/triangulation/point_configuration.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/geometry/triangulation/point_configuration.py 2023-03-13 09:38:55.610800649 -0600
@@ -617,11 +617,11 @@ class PointConfiguration(UniqueRepresent
['{{0,1,2,4},{1,2,3,4}}']
"""
timeout = 600
- proc = pexpect.spawn(executable, timeout=timeout)
+ proc = pexpect.spawn(executable, timeout=timeout, encoding='utf-8')
proc.expect(r'Evaluating Commandline Options \.\.\.')
proc.expect(r'\.\.\. done\.')
proc.setecho(0)
- assert proc.readline().strip() == b''
+ assert proc.readline().strip() == ''
if verbose:
print("#### TOPCOM input ####")
diff -up src/sage/interfaces/frobby.py.orig src/sage/interfaces/frobby.py
--- src/sage/interfaces/frobby.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/interfaces/frobby.py 2023-03-13 09:38:55.610800649 -0600
@@ -78,7 +78,7 @@ class Frobby:
print("Frobby command: ", repr(command))
print("Frobby input:\n", input)
- process = Popen(command, stdin=PIPE, stdout=PIPE, stderr=PIPE)
+ process = Popen(command, stdin=PIPE, stdout=PIPE, stderr=PIPE, encoding='utf-8')
if input:
frinput = str_to_bytes(input)
else:
diff -up src/sage/interfaces/gfan.py.orig src/sage/interfaces/gfan.py
--- src/sage/interfaces/gfan.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/interfaces/gfan.py 2023-03-13 09:38:55.611800631 -0600
@@ -109,7 +109,7 @@ class Gfan():
print("gfan input:\n%s" % input)
gfan_processes = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE,
- encoding='latin-1')
+ encoding='utf-8')
ans, err = gfan_processes.communicate(input=input)
# sometimes, gfan outputs stuff to stderr even though everything is fine
diff -up src/sage/interfaces/latte.py.orig src/sage/interfaces/latte.py
--- src/sage/interfaces/latte.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/interfaces/latte.py 2023-03-13 09:38:55.611800631 -0600
@@ -161,6 +161,7 @@ def count(arg, ehrhart_polynomial=False,
latte_proc = Popen(args,
stdin=PIPE, stdout=PIPE,
stderr=(None if verbose else PIPE),
+ encoding='utf-8',
cwd=tempd.name)
ans, err = latte_proc.communicate(arg)
@@ -393,6 +394,7 @@ def integrate(arg, polynomial=None, algo
latte_proc = Popen(args,
stdin=PIPE, stdout=PIPE,
stderr=(None if verbose else PIPE),
+ encoding='utf-8',
cwd=tempd.name)
ans, err = latte_proc.communicate(arg)
diff -up src/sage/interfaces/sagespawn.pyx.orig src/sage/interfaces/sagespawn.pyx
--- src/sage/interfaces/sagespawn.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/interfaces/sagespawn.pyx 2023-03-13 09:38:55.611800631 -0600
@@ -1,6 +1,6 @@
"""
Sage wrapper around pexpect's ``spawn`` class and
-the ptyprocess's ``PtyProcess`` class.
+the ptyprocess's ``PtyProcessUnicode`` class.
AUTHOR:
@@ -21,7 +21,7 @@ AUTHOR:
#*****************************************************************************
from pexpect import *
-from ptyprocess import PtyProcess
+from ptyprocess import PtyProcessUnicode
from cpython.ref cimport Py_INCREF
from libc.signal cimport *
@@ -30,7 +30,6 @@ from posix.unistd cimport getpid, getpgi
from time import sleep
-from sage.cpython.string cimport str_to_bytes
from sage.interfaces.process cimport ContainChildren
@@ -173,7 +172,7 @@ class SageSpawn(spawn):
return ret
-class SagePtyProcess(PtyProcess):
+class SagePtyProcess(PtyProcessUnicode):
def close(self, force=None):
"""
Quit the child process: send the quit string, close the
@@ -194,11 +193,7 @@ class SagePtyProcess(PtyProcess):
if self.quit_string is not None:
try:
# This can fail if the process already exited
- # PtyProcess.write takes bytes; ideally we would use
- # an encoding picked specifically for the target process
- # but the default (UTF-8) will do now, since I don't
- # think we have any non-ASCII quit_strings anyways.
- self.write(str_to_bytes(self.quit_string))
+ self.write(self.quit_string)
except (OSError, IOError):
pass
self.fileobj.close()
diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter.pyx
--- src/sage/libs/coxeter3/coxeter.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/libs/coxeter3/coxeter.pyx 2023-03-13 09:38:55.611800631 -0600
@@ -37,7 +37,7 @@ cdef class String:
EXAMPLES::
sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3
- sage: s = String("hello"); s # optional - coxeter3
+ sage: s = String(b"hello"); s # optional - coxeter3
hello
sage: del s # optional - coxeter3
"""
@@ -48,11 +48,11 @@ cdef class String:
EXAMPLES::
sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3
- sage: s = String('Hi') # optional - coxeter3
+ sage: s = String(b'Hi') # optional - coxeter3
sage: s # optional - coxeter3
Hi
"""
- return bytes_to_str(self.x.ptr())
+ return self.x.ptr().decode('utf-8')
def __hash__(self):
"""
@@ -64,7 +64,7 @@ cdef class String:
EXAMPLES::
sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3
- sage: s = String('hello') # optional - coxeter3
+ sage: s = String(b'hello') # optional - coxeter3
sage: hash(s) == hash('hello') # optional - coxeter3
True
"""
@@ -75,9 +75,9 @@ cdef class String:
EXAMPLES::
sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3
- sage: ta1 = String('A') # optional - coxeter3
- sage: ta2 = String('A') # optional - coxeter3
- sage: tb = String('b') # optional - coxeter3
+ sage: ta1 = String(b'A') # optional - coxeter3
+ sage: ta2 = String(b'A') # optional - coxeter3
+ sage: tb = String(b'b') # optional - coxeter3
sage: ta1 == ta2 # optional - coxeter3
True
sage: tb != ta1 # optional - coxeter3
@@ -113,7 +113,7 @@ cdef class String:
EXAMPLES::
sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3
- sage: s = String('Hi') # optional - coxeter3
+ sage: s = String(b'Hi') # optional - coxeter3
sage: len(s) # optional - coxeter3
2
"""
@@ -124,7 +124,7 @@ cdef class String:
EXAMPLES::
sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3
- sage: s = String('Hi') # optional - coxeter3
+ sage: s = String(b'Hi') # optional - coxeter3
sage: TestSuite(s).run() # optional - coxeter3
"""
return (String, (repr(self),) )
@@ -138,7 +138,7 @@ cdef class Type:
EXAMPLES::
sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3
- sage: t = Type('A'); t # optional - coxeter3
+ sage: t = Type(b'A'); t # optional - coxeter3
A
sage: del t # optional - coxeter3
"""
@@ -149,7 +149,7 @@ cdef class Type:
EXAMPLES::
sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3
- sage: t = Type('A'); t # optional - coxeter3
+ sage: t = Type(b'A'); t # optional - coxeter3
A
"""
return bytes_to_str(self.x.name().ptr())
@@ -159,7 +159,7 @@ cdef class Type:
EXAMPLES::
sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3
- sage: t = Type('A') # optional - coxeter3
+ sage: t = Type(b'A') # optional - coxeter3
sage: t.name() # optional - coxeter3
A
"""
@@ -175,8 +175,8 @@ cdef class Type:
EXAMPLES::
sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3
- sage: a = Type('A') # optional - coxeter3
- sage: b = Type('B') # optional - coxeter3
+ sage: a = Type(b'A') # optional - coxeter3
+ sage: b = Type(b'B') # optional - coxeter3
sage: hash(a) == hash(b) # optional - coxeter3
False
sage: d = {a: 1, b: 2} # optional - coxeter3
@@ -188,9 +188,9 @@ cdef class Type:
EXAMPLES::
sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3
- sage: ta1 = Type('A') # optional - coxeter3
- sage: ta2 = Type('A') # optional - coxeter3
- sage: tb = Type('b') # optional - coxeter3
+ sage: ta1 = Type(b'A') # optional - coxeter3
+ sage: ta2 = Type(b'A') # optional - coxeter3
+ sage: tb = Type(b'b') # optional - coxeter3
sage: ta1 == ta2 # optional - coxeter3
True
sage: tb != ta1 # optional - coxeter3
@@ -224,7 +224,7 @@ cdef class Type:
EXAMPLES::
sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3
- sage: t = Type('A') # optional - coxeter3
+ sage: t = Type(b'A') # optional - coxeter3
sage: TestSuite(t).run() # optional - coxeter3
"""
return (Type, (repr(self), ))
@@ -268,7 +268,7 @@ cdef class CoxGroup(SageObject):
pass
type = type.lower()
- type = 'B' if type == 'C' else type
+ type = b'B' if type == 'C' else type.encode('utf-8')
if rank == 0:
raise NotImplementedError("Coxeter group of type ['A',0] using Coxeter 3 not yet implemented")
diff -up src/sage/misc/sageinspect.py.orig src/sage/misc/sageinspect.py
--- src/sage/misc/sageinspect.py.orig 2023-03-13 08:43:39.551431643 -0600
+++ src/sage/misc/sageinspect.py 2023-03-13 09:38:55.612800613 -0600
@@ -516,12 +516,9 @@ class SageArgSpecVisitor(ast.NodeVisitor
"""
return node.id
- def visit_NameConstant(self, node):
- """
- Visit a Python AST :class:`ast.NameConstant` node.
-
- This is an optimization added in Python 3.4 for the special cases
- of True, False, and None.
+ def visit_Constant(self, node):
+ r"""
+ Visit a Python AST :class:`ast.Constant` node.
INPUT:
@@ -535,7 +532,7 @@ class SageArgSpecVisitor(ast.NodeVisitor
sage: import ast, sage.misc.sageinspect as sms
sage: visitor = sms.SageArgSpecVisitor()
- sage: vis = lambda x: visitor.visit_NameConstant(ast.parse(x).body[0].value)
+ sage: vis = lambda x: visitor.visit_Constant(ast.parse(x).body[0].value)
sage: [vis(n) for n in ['True', 'False', 'None']]
[True, False, None]
sage: [type(vis(n)) for n in ['True', 'False', 'None']]
diff -up src/sage/plot/plot3d/plot3d.py.orig src/sage/plot/plot3d/plot3d.py
--- src/sage/plot/plot3d/plot3d.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/plot/plot3d/plot3d.py 2023-03-13 09:38:55.612800613 -0600
@@ -219,6 +219,7 @@ from .shapes import arrow3d
from .base import Graphics3dGroup
from sage.plot.colors import rainbow
from .texture import Texture
+import inspect
from sage.functions.trig import cos, sin
from sage.misc.sageinspect import sage_getargspec, is_function_or_cython_function
@@ -255,7 +256,7 @@ class _Coordinates():
sage: arb((x+z,y*z,z), z, (x,y))
Arbitrary Coordinates coordinate transform (z in terms of x, y)
"""
- all_vars = sage_getargspec(self.transform).args[1:]
+ all_vars = inspect.getfullargspec(self.transform)[0][1:]
if set(all_vars) != set(indep_vars + [dep_var]):
raise ValueError('variables were specified incorrectly for this coordinate system; incorrect variables were %s'%list(set(all_vars).symmetric_difference(set(indep_vars+[dep_var]))))
self.dep_var = dep_var
diff -up src/sage/rings/polynomial/pbori/pbori.pyx.orig src/sage/rings/polynomial/pbori/pbori.pyx
--- src/sage/rings/polynomial/pbori/pbori.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/rings/polynomial/pbori/pbori.pyx 2023-03-13 11:29:13.157592229 -0600
@@ -4722,8 +4722,7 @@ cdef class PolynomialConstruct:
# So, it is just a conversion. [Simon King]
return (<BooleanPolynomialRing>ring)._element_constructor_(x)
- raise TypeError("cannot generate Boolean polynomial from %s , %s" %
- (type(x), type(ring)))
+ raise TypeError(f"cannot generate Boolean polynomial from {type(x)}, {type(ring)}")
cdef class MonomialConstruct:
diff -up src/sage/structure/sage_object.pyx.orig src/sage/structure/sage_object.pyx
--- src/sage/structure/sage_object.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/structure/sage_object.pyx 2023-03-13 09:38:55.613800594 -0600
@@ -694,7 +694,7 @@ cdef class SageObject:
try:
s = self._interface_init_(I)
except Exception:
- raise NotImplementedError("coercion of object %s to %s not implemented:\n%s\n%s" % (repr(self), I))
+ raise NotImplementedError(f"coercion of object {repr(self)} to {I} not implemented")
X = I(s)
if c:
try:

View file

@ -1,59 +0,0 @@
diff -up src/sage/interfaces/qepcad.py.orig src/sage/interfaces/qepcad.py
--- src/sage/interfaces/qepcad.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/interfaces/qepcad.py 2023-03-13 09:52:44.349623749 -0600
@@ -530,7 +530,7 @@ TESTS:
Check the qepcad configuration file::
- sage: with open(os.path.join(SAGE_LOCAL, 'etc', 'default.qepcadrc')) as f: # optional - qepcad
+ sage: with open(os.path.join('/usr/share/qepcad/default.qepcadrc')) as f: # optional - qepcad
....: f.readlines()[-1]
'SINGULAR yes\n'
@@ -604,7 +604,6 @@ AUTHORS:
# https://www.gnu.org/licenses/
# ****************************************************************************
import os
-from sage.env import SAGE_LOCAL
import pexpect
import re
import sys
@@ -619,6 +618,8 @@ from .expect import Expect, ExpectFuncti
from sage.interfaces.interface import AsciiArtString
+QEPCAD_LOCAL = "/usr/share/qepcad"
+
def _qepcad_atoms(formula):
r"""
Return the atoms of a qepcad quantifier-free formula, as a set of strings.
@@ -650,17 +651,17 @@ def _qepcad_cmd(memcells=None):
sage: from sage.interfaces.qepcad import _qepcad_cmd
sage: s = _qepcad_cmd()
- sage: s == 'env qe=%s qepcad '%SAGE_LOCAL
+ sage: s == 'env qe=/usr/share/qepcad qepcad '
True
sage: s = _qepcad_cmd(memcells=8000000)
- sage: s == 'env qe=%s qepcad +N8000000'%SAGE_LOCAL
+ sage: s == 'env qe=/usr/share/qepcad qepcad +N8000000'
True
"""
if memcells is not None:
memcells_arg = '+N%s' % memcells
else:
memcells_arg = ''
- return "env qe=%s qepcad %s"%(SAGE_LOCAL, memcells_arg)
+ return "env qe=%s qepcad %s"%(QEPCAD_LOCAL, memcells_arg)
_command_info_cache = None
@@ -685,7 +686,7 @@ def _update_command_info():
cache = {}
- with open(os.path.join(SAGE_LOCAL, 'share/qepcad', 'qepcad.help')) as help:
+ with open(os.path.join(QEPCAD_LOCAL, 'bin', 'qepcad.help')) as help:
assert help.readline().strip() == '@'
while True:

View file

@ -1,32 +0,0 @@
diff -up src/sage/misc/binary_tree.pyx.orig src/sage/misc/binary_tree.pyx
--- src/sage/misc/binary_tree.pyx.orig 2020-10-24 11:37:59.000000000 -0600
+++ src/sage/misc/binary_tree.pyx 2020-10-30 13:27:44.173427025 -0600
@@ -12,6 +12,8 @@ from cysignals.memory cimport sig_malloc
from cpython.ref cimport PyObject, Py_INCREF, Py_XDECREF
+from sage.misc.prandom import randint
+
cdef binary_tree_node *BinaryTreeNode(int key, object value):
cdef binary_tree_node *t
t = <binary_tree_node *>sig_malloc(sizeof(binary_tree_node))
@@ -121,10 +123,7 @@ cdef binary_tree_node *binary_tree_right
cdef binary_tree_node *binary_tree_head_excise(binary_tree_node *self):
cdef binary_tree_node *cur
cdef int right
- # We have a pointer we're about to free. Chances are, we'll never
- # see this pointer again. Thus, its least significant bit is
- # "random" enough to resist bias.
- right = (<int>self)&1
+ right = randint(0, 1)
if self.right == NULL:
return self.left
if self.left == NULL:
@@ -501,7 +500,6 @@ class Test:
sage: sage.misc.binary_tree.Test().random()
"""
- from sage.misc.prandom import randint
t = BinaryTree()
for i in xrange(cycles):
r = randint(0,8)

View file

@ -1,12 +0,0 @@
diff -up src/sage/misc/cython.py.orig src/sage/misc/cython.py
--- src/sage/misc/cython.py.orig 2021-08-26 13:10:09.114735665 -0600
+++ src/sage/misc/cython.py 2021-08-26 13:11:01.734797359 -0600
@@ -55,7 +55,7 @@ def _standard_libs_libdirs_incdirs_alias
'ntl']
standard_libdirs = []
if SAGE_LOCAL:
- standard_libdirs.append(os.path.join(SAGE_LOCAL, "lib"))
+ standard_libdirs.append(os.path.realpath(os.path.join(SAGE_LOCAL, "lib")))
standard_libdirs.extend(aliases["CBLAS_LIBDIR"] + aliases["NTL_LIBDIR"])
standard_incdirs = sage_include_directories() + aliases["CBLAS_INCDIR"] + aliases["NTL_INCDIR"]
return standard_libs, standard_libdirs, standard_incdirs, aliases

View file

@ -1,35 +0,0 @@
diff -up src/sage_docbuild/ext/multidocs.py.orig src/sage_docbuild/ext/multidocs.py
--- src/sage_docbuild/ext/multidocs.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage_docbuild/ext/multidocs.py 2023-03-13 10:54:54.452252122 -0600
@@ -83,8 +83,11 @@ def merge_environment(app, env):
for ind in newalldoc:
# treat sub-document source as orphaned file and don't complain
md = env.metadata.get(ind, dict())
- md['orphan'] = 1
- env.metadata[ind] = md
+ try:
+ md['orphan'] = 1
+ env.metadata[ind] = md
+ except AttributeError:
+ env.metadata[ind] = {'orphan'}
# merge the citations
newcite = {}
for ind, (path, tag, lineno) in citations.items():
diff -up src/sage/interfaces/singular.py.orig src/sage/interfaces/singular.py
--- src/sage/interfaces/singular.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/interfaces/singular.py 2023-03-13 10:54:54.452252122 -0600
@@ -2379,11 +2379,11 @@ def generate_docstring_dictionary():
L, in_node, curr_node = [], False, None
- from sage.libs.singular.singular import get_resource
- singular_info_file = get_resource('i')
+ singular_info_file = '/usr/share/info/singular.info.gz'
# singular.hlp contains a few iso-8859-1 encoded special characters
- with io.open(singular_info_file,
+ import gzip
+ with gzip.open(singular_info_file,
encoding='latin-1') as f:
for line in f:
m = re.match(new_node, line)

View file

@ -1,276 +0,0 @@
diff -up src/bin/sage.orig src/bin/sage
--- src/bin/sage.orig 2022-09-19 16:38:18.000000000 -0600
+++ src/bin/sage 2023-01-15 17:02:57.680034236 -0700
@@ -131,7 +131,6 @@ usage() {
echo " --gap [...] -- run Sage's Gap with given arguments"
command -v gp &>/dev/null && \
echo " --gp [...] -- run Sage's PARI/GP calculator with given arguments"
- echo " --pip [...] -- invoke pip, the Python package manager"
command -v maxima &>/dev/null && \
echo " --maxima [...] -- run Sage's Maxima with given arguments"
command -v mwrank &>/dev/null && \
@@ -178,60 +177,6 @@ if [ -f "${SELF}-env-config" ]; then
fi
#####################################################################
-# Special options to be processed without sage-env
-#####################################################################
-
-# Check for '--nodotsage' before sourcing sage-env; otherwise sage-env
-# will already have set some environment variables with the old
-# setting for DOT_SAGE.
-if [ "$1" = '--nodotsage' ]; then
- export DOT_SAGE=`mktemp -d ${TMPDIR:-/tmp}/dotsageXXXXXX`
- shift
- command "${SELF}" "$@"
- status=$?
- rm -rf "$DOT_SAGE"
- exit $status
-fi
-
-# Check for '--patchbot' before sourcing sage-env: patchbot needs
-# an unclobbered environment before testing unsafe tickets.
-if [ "$1" = '-patchbot' -o "$1" = "--patchbot" ]; then
- shift
- # We ask the Python from Sage where the patchbot is installed.
- # We set PYTHONPATH to that directory such that the system Python
- # should also find the sage_patchbot package.
- cmd='import sage_patchbot as p; import os; print(os.path.dirname(p.__path__[0]))'
- export PYTHONPATH=`"$SAGE_ROOT/sage" --python3 -c "$cmd"`
- if [ -z "$PYTHONPATH" ]; then
- # Something went wrong, assume that the patchbot is not installed
- echo >&2 "Error: cannot find installation path for sage_patchbot"
- echo >&2 "See https://wiki.sagemath.org/buildbot for instructions"
- exit 1
- fi
-
- shopt -s execfail # Do not exit if "exec" fails
- exec python3 -m sage_patchbot.patchbot "$@"
- echo >&2 "Error: cannot find a suitable Python 3 program."
- echo >&2 "The SageMath patchbot requires a system Python 3 installation."
- exit 127
-fi
-
-# Check for '-i' etc. before sourcing sage-env: running "make"
-# should be run outside of the Sage shell.
-case "$1" in
- -i|-f|-p)
- # Delegate further option handling to the non-installed sage-site script.
- # (These options become unavailable if the directory $SAGE_ROOT is removed.)
- if [ -d "$SAGE_ROOT" ]; then
- exec "$SAGE_ROOT/build/bin/sage-site" "$@"
- # fallthrough if there is no sage-site script
- fi
- echo >&2 "Error: unknown option: $1"
- exit 1
- ;;
-esac
-
-#####################################################################
# Report information about the Sage environment
#####################################################################
@@ -282,18 +227,6 @@ fi
# Prepare for running Sage, either interactively or non-interactively.
sage_setup() {
- # Check that we're not in a source tarball which hasn't been built yet (#13561).
- if [ "$SAGE_SRC_ENV_CONFIG" = 1 ] && [ ! -z "$SAGE_VENV" ] && [ ! -x "$SAGE_VENV/bin/sage" ]; then
- echo >&2 '************************************************************************'
- echo >&2 'It seems that you are attempting to run Sage from an unpacked source'
- echo >&2 'tarball, but you have not compiled it yet (or maybe the build has not'
- echo >&2 'finished). You should run `make` in the Sage root directory first.'
- echo >&2 'If you did not intend to build Sage from source, you should download'
- echo >&2 'a binary tarball instead. Read README.txt for more information.'
- echo >&2 '************************************************************************'
- exit 1
- fi
-
if [ ! -d "$IPYTHONDIR" ]; then
# make sure that $DOT_SAGE exists so that ipython will happily
# create its config directories there. If DOT_SAGE doesn't
@@ -338,8 +271,6 @@ usage_advanced() {
echo " --nodotsage -- run Sage without using the user's"
echo " .sage directory: create and use a temporary"
echo " .sage directory instead."
- echo " --gthread, --qthread, --q4thread, --wthread, --pylab"
- echo " -- pass the option through to IPython"
echo " --simple-prompt -- pass the option through to IPython: use"
echo " this option with sage-shell mode in emacs"
echo " --gdb -- run Sage under the control of gdb"
@@ -369,18 +300,9 @@ usage_advanced() {
echo " environment (not Sage), passing additional"
echo " additional options to IPython"
echo " --jupyter [...] -- run Sage's Jupyter with given arguments"
- echo " --kash [...] -- run Sage's Kash with the given arguments"
- command -v kash &>/dev/null || \
- echo " (not installed currently, run sage -i kash)"
- echo " --M2 [...] -- run Sage's Macaulay2 with the given arguments"
- command -v M2 &>/dev/null || \
- echo " (not installed currently, run sage -i macaulay2)"
echo " --maxima [...] -- run Sage's Maxima with the given arguments"
echo " --mwrank [...] -- run Sage's mwrank with the given arguments"
- echo " --pip [...] -- invoke pip, the Python package manager"
echo " --polymake [...] -- run Sage's Polymake with given arguments"
- command -v polymake &>/dev/null || \
- echo " (not installed currently, run sage -i polymake)"
echo " --python [...], --python3 [...]"
echo " -- run the Python 3 interpreter"
echo " -R [...] -- run Sage's R with the given arguments"
@@ -656,11 +578,6 @@ if [ "$1" = '-lisp' -o "$1" = '--lisp' ]
exec ecl "$@"
fi
-if [ "$1" = '-kash' -o "$1" = '--kash' ]; then
- shift
- exec kash "$@"
-fi
-
if [ "$1" = '-maxima' -o "$1" = '--maxima' ]; then
shift
maxima_cmd=$(sage-config MAXIMA 2>/dev/null)
@@ -685,11 +602,6 @@ if [ "$1" = '-R' -o "$1" = '--R' ]; then
exec R "$@"
fi
-if [ "$1" = '-git' -o "$1" = '--git' ]; then
- shift
- exec git "$@"
-fi
-
#####################################################################
# sage --sh and sage --buildsh
#####################################################################
@@ -856,10 +768,6 @@ fi
# build_sage, sage -b, sage -br, etc. could be moved to
# build/bin/sage-site. See #29111.
-build_sage() {
- ( cd "$SAGE_ROOT/build/make" && ./install sagelib-no-deps ) || exit $?
-}
-
if [[ "$1" =~ ^--notebook=.* || "$1" =~ ^-n=.* || "$1" =~ ^-notebook=.* ]] ; then
sage-cleaner &>/dev/null &
exec sage-notebook "$@"
@@ -870,13 +778,6 @@ if [ "$1" = "-notebook" -o "$1" = '--not
exec sage-notebook "$@"
fi
-if [ "$1" = "-bn" -o "$1" = "--build-and-notebook" ]; then
- shift
- build_sage
- sage-cleaner &>/dev/null &
- exec sage-notebook --notebook=default "$@"
-fi
-
if [ -n "$SAGE_SRC" -a -d "$SAGE_SRC" ]; then
# Source inspection facilities, supported on sage-the-distribution and on distributions
# that package the Sage sources.
@@ -893,46 +794,18 @@ if [ -n "$SAGE_SRC" -a -d "$SAGE_SRC" ];
fi
fi
-if [ "$1" = '-b' ]; then
- build_sage
- exit $?
-fi
-
-if [ "$1" = '-br' -o "$1" = "--br" ]; then
- build_sage
- interactive_sage
-fi
-
if [ "$1" = '-r' ]; then
shift
interactive_sage
fi
-if [ "$1" = '-ba-force' -o "$1" = '--ba-force' ]; then
- echo
- echo "WARNING: 'sage --ba-force' is deprecated; use 'sage -ba' instead."
- echo
- ( cd "$SAGE_ROOT/build/make" && make sagelib-clean )
- build_sage
- exit $?
-fi
-
-if [ "$1" = '-ba' ]; then
- ( cd "$SAGE_ROOT/build/make" && make sagelib-clean )
- build_sage
- exit $?
-fi
-
exec-runtests() {
sage_setup
export PYTHONIOENCODING="utf-8" # Fix encoding for doctests
exec sage-runtests "$@"
}
-if [ "$1" = '-t' -o "$1" = '-bt' -o "$1" = '-tp' -o "$1" = '-btp' ]; then
- if [ "$1" = '-bt' -o "$1" = '-btp' ]; then
- build_sage
- fi
+if [ "$1" = '-t' -o "$1" = '-tp' ]; then
if [ "$1" = '-tp' -o "$1" = '-btp' ]; then
shift
exec-runtests -p "$@"
@@ -942,34 +815,11 @@ if [ "$1" = '-t' -o "$1" = '-bt' -o "$1"
fi
fi
-if [ "$1" = '-tnew' -o "$1" = '-btnew' ]; then
- if [ "$1" = '-btnew' ]; then
- build_sage
- fi
- shift
- exec-runtests --new "$@"
-fi
-
if [ "$1" = '-testall' -o "$1" = "--testall" ]; then
shift
exec-runtests -a "$@"
fi
-if [ "$1" = '-fixdoctests' -o "$1" = '--fixdoctests' ]; then
- shift
- exec sage-fixdoctests "$@"
-fi
-
-if [ "$1" = "-coverage" -o "$1" = "--coverage" ]; then
- shift
- exec sage-coverage "$@"
-fi
-
-if [ "$1" = "-coverageall" -o "$1" = "--coverageall" ]; then
- shift
- exec sage-coverage --all "$@"
-fi
-
if [ "$1" = '-startuptime' -o "$1" = '--startuptime' ]; then
exec sage-startuptime.py "$@"
fi
@@ -1056,11 +906,6 @@ if [ "$1" = '-installed' -o "$1" = "--in
exec sage-list-packages all --installed-only $@
fi
-if [ "$1" = '-sdist' -o "$1" = "--sdist" ]; then
- shift
- exec sage-sdist "$@"
-fi
-
#####################################################################
# Debugging tools
#####################################################################
@@ -1110,12 +955,6 @@ if [ "$1" = '-callgrind' -o "$1" = "--ca
exec sage-callgrind "$@"
fi
-if [ "$1" = '-omega' -o "$1" = "--omega" ]; then
- shift
- sage_setup
- exec sage-omega "$@"
-fi
-
if [ "$1" = '-gthread' -o "$1" = '-qthread' -o "$1" = '-q4thread' -o "$1" = '-wthread' -o "$1" = '-pylab' -o "$1" = '--simple-prompt' -o "$1" = '-simple-prompt' ]; then
# Intentionally no "shift" here
interactive_sage "$@"

View file

@ -1,28 +0,0 @@
diff -up src/sage/graphs/graph_decompositions/sage_tdlib.cpp.orig src/sage/graphs/graph_decompositions/sage_tdlib.cpp
--- src/sage/graphs/graph_decompositions/sage_tdlib.cpp.orig 2021-05-09 16:00:11.000000000 -0600
+++ src/sage/graphs/graph_decompositions/sage_tdlib.cpp 2021-06-16 08:33:47.325415307 -0600
@@ -2,8 +2,8 @@
#include <map>
#include <boost/graph/adjacency_list.hpp>
-#include "tdlib/TD_combinations.hpp"
-#include "tdlib/TD_misc.hpp"
+#include <treedec/combinations.hpp>
+#include <treedec/misc.hpp>
#ifndef TD_STRUCT_VERTEX
#define TD_STRUCT_VERTEX
@@ -16,13 +16,6 @@ struct Vertex{
typedef boost::adjacency_list<boost::setS, boost::vecS, boost::undirectedS, Vertex> TD_graph_t;
-struct bag{
- std::set<unsigned int> bag;
-};
-
-typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS, bag> TD_tree_dec_t;
-
-
void make_tdlib_graph(TD_graph_t &G, std::vector<unsigned int> &V, std::vector<unsigned int> &E){
unsigned int max = 0;
for(unsigned int i = 0; i < V.size(); i++)

File diff suppressed because it is too large Load diff

View file

@ -1,2 +0,0 @@
SHA512 (cremona-2019-10-29.tar.gz) = 32fbb828f26f87191e39123762cfbd796aac9abf346f0dc981e8e3f390435b22d281be3031ea92ae7e18f4ce41af8054784ca0d550a08f17b05c54ca08b4c9c8
SHA512 (sage-9.8.tar.gz) = 1ba1c7bd07f13bb67f290d194b65234546fb6fee42693dd3d538e5f206b92a2f1ebf2d49b58541469a4c38b54c843ea0614f3d5c1b32f724f3176703ec5382e7

View file

@ -1,13 +0,0 @@
#!/bin/bash
type -atp java
OUT=$?
#echo $OUT
if [ $OUT -eq 0 ]; then
#found java now check 1.5<=version<=1.7
#version >1.7 may be OK just not checked yet.
java -version 2>&1|grep version.*[1]\.[567]
else
exit 1
fi
#OUT=$?
#echo $OUT