so you need to rebuild sagelib with new libvpx. In general after a major system update it's best to "make distclean" and rebuild from scratch.
Or you can touch pyx files which depend upon libvpx and run make, but if there were mo updates it might be in vain. On Wed, Mar 20, 2019 at 4:07 PM <david.coud...@gmail.com> wrote: > > I have a crash when starting sage :( > > Roughly it says "ImportError: libvpx.so.4: cannot open shared object file: No > such file or directory" > See the content of .sage/ipython-5.0.0/Sage_crash_report.txt below > > This is on a computer freshly updated to fedora 29, where we have libvpx.so.5 > > [root@nicoati /]# locate libvpx | grep so > /local/cache-dnf/so-fedora-e60da87e1e38600d/packages/libvpx-1.7.0-7.fc29.x86_64.rpm > /local/cache-dnf/so-fedora-e60da87e1e38600d/packages/libvpx-devel-1.7.0-7.fc29.x86_64.rpm > /usr/lib64/libvpx.so > /usr/lib64/libvpx.so.5 > /usr/lib64/libvpx.so.5.0 > /usr/lib64/libvpx.so.5.0.0 > /usr/lib64/vlc/plugins/codec/libvpx_plugin.so > /usr/share/doc/libvpx-devel/html/vp8_8h_source.html > /usr/share/doc/libvpx-devel/html/vp8cx_8h_source.html > /usr/share/doc/libvpx-devel/html/vp8dx_8h_source.html > /usr/share/doc/libvpx-devel/html/vpx__codec_8h_source.html > /usr/share/doc/libvpx-devel/html/vpx__decoder_8h_source.html > /usr/share/doc/libvpx-devel/html/vpx__encoder_8h_source.html > /usr/share/doc/libvpx-devel/html/vpx__frame__buffer_8h_source.html > /usr/share/doc/libvpx-devel/html/vpx__image_8h_source.html > /var/cache/dnf/so-fedora-e60da87e1e38600d/packages/libvpx-1.7.0-7.fc29.x86_64.rpm > /var/cache/dnf/so-fedora-e60da87e1e38600d/packages/libvpx-devel-1.7.0-7.fc29.x86_64.rpm > > > What can I do ? > > Thanks, > David. > > > > *************************************************************************** > > IPython post-mortem report > > {'commit_hash': u'033ab93c7', > 'commit_source': 'installation', > 'default_encoding': 'UTF-8', > 'ipython_path': > '/home/dcoudert/sage/local/lib/python2.7/site-packages/IPython', > 'ipython_version': '5.8.0', > 'os_name': 'posix', > 'platform': 'Linux-4.20.15-200.fc29.x86_64-x86_64-with-fedora-29-Twenty_Nine', > 'sys_executable': '/home/dcoudert/sage/local/bin/python2', > 'sys_platform': 'linux2', > 'sys_version': '2.7.15 (default, Mar 18 2019, 17:56:14) \n[GCC 7.3.1 20180712 > (Red Hat 7.3.1-6)]'} > > *************************************************************************** > > > > *************************************************************************** > > Crash traceback: > > --------------------------------------------------------------------------- > --------------------------------------------------------------------------- > ImportError Python 2.7.15: /home/dcoudert/sage/local/bin/python2 > Wed Mar 20 14:13:18 2019 > A problem occurred executing Python code. Here is the sequence of function > calls leading up to the error, with the most recent (innermost) call last. > /home/dcoudert/sage/src/bin/sage-ipython in <module>() > 1 #!/usr/bin/env sage-python23 > 2 # -*- coding: utf-8 -*- > 3 """ > 4 Sage IPython startup script. > 5 """ > 6 > 7 # Display startup banner. Do this before anything else to give the user > 8 # early feedback that Sage is starting. > 9 from sage.misc.banner import banner > 10 banner() > 11 > 12 from sage.repl.interpreter import SageTerminalApp > 13 > 14 app = SageTerminalApp.instance() > ---> 15 app.initialize() > global app.initialize = <bound method SageTerminalApp.initialize of > <sage.repl.interpreter.SageTerminalApp object at 0x7f82d3560a50>> > 16 app.start() > > <decorator-gen-110> in initialize(self=<sage.repl.interpreter.SageTerminalApp > object>, argv=None) > > /home/dcoudert/sage/local/lib/python2.7/site-packages/traitlets/config/application.pyc > in catch_config_error(method=<function initialize>, > app=<sage.repl.interpreter.SageTerminalApp object>, *args=(None,), > **kwargs={}) > 72 TRAITLETS_APPLICATION_RAISE_CONFIG_FILE_ERROR = False > 73 else: > 74 raise ValueError("Unsupported value for environment variable: > 'TRAITLETS_APPLICATION_RAISE_CONFIG_FILE_ERROR' is set to '%s' which is none > of {'0', '1', 'false', 'true', ''}."% _envvar ) > 75 > 76 > 77 @decorator > 78 def catch_config_error(method, app, *args, **kwargs): > 79 """Method decorator for catching invalid config > (Trait/ArgumentErrors) during init. > 80 > 81 On a TraitError (generally caused by bad config), this will print > the trait's > 82 message, and exit the app. > 83 > 84 For use on init methods, to prevent invoking excepthook on invalid > input. > 85 """ > 86 try: > ---> 87 return method(app, *args, **kwargs) > method = <function initialize at 0x7f82ce3c1c80> > app = <sage.repl.interpreter.SageTerminalApp object at 0x7f82d3560a50> > args = (None,) > kwargs = {} > 88 except (TraitError, ArgumentError) as e: > 89 app.print_help() > 90 app.log.fatal("Bad config encountered during initialization:") > 91 app.log.fatal(str(e)) > 92 app.log.debug("Config at the time: %s", app.config) > 93 app.exit(1) > 94 > 95 > 96 class ApplicationError(Exception): > 97 pass > 98 > 99 > 100 class LevelFormatter(logging.Formatter): > 101 """Formatter with additional `highlevel` record > 102 > > /home/dcoudert/sage/local/lib/python2.7/site-packages/IPython/terminal/ipapp.pyc > in initialize(self=<sage.repl.interpreter.SageTerminalApp object>, argv=None) > 301 > 302 return super(TerminalIPythonApp, self).parse_command_line(argv) > 303 > 304 @catch_config_error > 305 def initialize(self, argv=None): > 306 """Do actions after construct, but before starting the app.""" > 307 super(TerminalIPythonApp, self).initialize(argv) > 308 if self.subapp is not None: > 309 # don't bother initializing further, starting subapp > 310 return > 311 # print self.extra_args > 312 if self.extra_args and not self.something_to_run: > 313 self.file_to_run = self.extra_args[0] > 314 self.init_path() > 315 # create the shell > --> 316 self.init_shell() > self.init_shell = <bound method SageTerminalApp.init_shell of > <sage.repl.interpreter.SageTerminalApp object at 0x7f82d3560a50>> > 317 # and draw the banner > 318 self.init_banner() > 319 # Now a variety of things that happen after the banner is > printed. > 320 self.init_gui_pylab() > 321 self.init_extensions() > 322 self.init_code() > 323 > 324 def init_shell(self): > 325 """initialize the InteractiveShell instance""" > 326 # Create an InteractiveShell instance. > 327 # shell.display_banner should always be False for the terminal > 328 # based app, because we call shell.show_banner() by hand below > 329 # so the banner shows *before* all extension loading stuff. > 330 self.shell = self.interactive_shell_class.instance(parent=self, > 331 profile_dir=self.profile_dir, > > /home/dcoudert/sage/local/lib/python2.7/site-packages/sage/repl/interpreter.pyc > in init_shell(self=<sage.repl.interpreter.SageTerminalApp object>) > 743 self.shell.has_sage_extensions = SAGE_EXTENSION in > self.extensions > 744 > 745 # Load the %lprun extension if available > 746 try: > 747 import line_profiler > 748 except ImportError: > 749 pass > 750 else: > 751 self.extensions.append('line_profiler') > 752 > 753 if self.shell.has_sage_extensions: > 754 self.extensions.remove(SAGE_EXTENSION) > 755 > 756 # load sage extension here to get a crash if > 757 # something is wrong with the sage library > --> 758 > self.shell.extension_manager.load_extension(SAGE_EXTENSION) > self.shell.extension_manager.load_extension = <bound method > ExtensionManager.load_extension of <IPython.core.extensions.ExtensionManager > object at 0x7f82c404bb10>> > global SAGE_EXTENSION = 'sage' > 759 > 760 > > /home/dcoudert/sage/local/lib/python2.7/site-packages/IPython/core/extensions.pyc > in load_extension(self=<IPython.core.extensions.ExtensionManager object>, > module_str='sage') > 70 > 71 Returns the string "already loaded" if the extension is > already loaded, > 72 "no load function" if the module doesn't have a > load_ipython_extension > 73 function, or None if it succeeded. > 74 """ > 75 if module_str in self.loaded: > 76 return "already loaded" > 77 > 78 from IPython.utils.syspathcontext import prepended_to_syspath > 79 > 80 with self.shell.builtin_trap: > 81 if module_str not in sys.modules: > 82 with prepended_to_syspath(self.ipython_extension_dir): > 83 __import__(module_str) > 84 mod = sys.modules[module_str] > ---> 85 if self._call_load_ipython_extension(mod): > self._call_load_ipython_extension = <bound method > ExtensionManager._call_load_ipython_extension of > <IPython.core.extensions.ExtensionManager object at 0x7f82c404bb10>> > mod = <module 'sage' from > '/home/dcoudert/sage/local/lib/python2.7/site-packages/sage/__init__.pyc'> > 86 self.loaded.add(module_str) > 87 else: > 88 return "no load function" > 89 > 90 def unload_extension(self, module_str): > 91 """Unload an IPython extension by its module name. > 92 > 93 This function looks up the extension's name in ``sys.modules`` > and > 94 simply calls ``mod.unload_ipython_extension(self)``. > 95 > 96 Returns the string "no unload function" if the extension > doesn't define > 97 a function to unload itself, "not loaded" if the extension > isn't loaded, > 98 otherwise None. > 99 """ > 100 if module_str not in self.loaded: > > /home/dcoudert/sage/local/lib/python2.7/site-packages/IPython/core/extensions.pyc > in > _call_load_ipython_extension(self=<IPython.core.extensions.ExtensionManager > object>, mod=<module 'sage' from > '/home/dcoudert/sage/local/lib/python2.7/site-packages/sage/__init__.pyc'>) > 117 """ > 118 from IPython.utils.syspathcontext import prepended_to_syspath > 119 > 120 if (module_str in self.loaded) and (module_str in sys.modules): > 121 self.unload_extension(module_str) > 122 mod = sys.modules[module_str] > 123 with prepended_to_syspath(self.ipython_extension_dir): > 124 reload(mod) > 125 if self._call_load_ipython_extension(mod): > 126 self.loaded.add(module_str) > 127 else: > 128 self.load_extension(module_str) > 129 > 130 def _call_load_ipython_extension(self, mod): > 131 if hasattr(mod, 'load_ipython_extension'): > --> 132 mod.load_ipython_extension(self.shell) > mod.load_ipython_extension = <function load_ipython_extension at > 0x7f82e0ded8c0> > self.shell = <sage.repl.interpreter.SageTerminalInteractiveShell > object at 0x7f82ce364990> > 133 return True > 134 > 135 def _call_unload_ipython_extension(self, mod): > 136 if hasattr(mod, 'unload_ipython_extension'): > 137 mod.unload_ipython_extension(self.shell) > 138 return True > 139 > 140 def install_extension(self, url, filename=None): > 141 """Download and install an IPython extension. > 142 > 143 If filename is given, the file will be so named (inside the > extension > 144 directory). Otherwise, the name from the URL will be used. The > file must > 145 have a .py or .zip extension; otherwise, a ValueError will be > raised. > 146 > 147 Returns the full path to the installed file. > > /home/dcoudert/sage/local/lib/python2.7/site-packages/sage/__init__.pyc in > load_ipython_extension(*args=(<sage.repl.interpreter.SageTerminalInteractiveShell > object>,)) > 1 __all__ = ['all'] > 2 > 3 # Set sage.__version__ to the current version number. This is analogous > 4 # to many other Python packages. > 5 from sage.version import version as __version__ > 6 > 7 # Make sure that the correct zlib library is loaded. This is needed > 8 # to prevent the system zlib to be loaded instead of the Sage one. > 9 # See https://trac.sagemath.org/ticket/23122 > 10 import zlib > 11 > 12 # IPython calls this when starting up > 13 def load_ipython_extension(*args): > 14 import sage.repl.ipython_extension > ---> 15 sage.repl.ipython_extension.load_ipython_extension(*args) > sage.repl.ipython_extension.load_ipython_extension = <function > load_ipython_extension at 0x7f82bf775e60> > args = (<sage.repl.interpreter.SageTerminalInteractiveShell object at > 0x7f82ce364990>,) > 16 > 17 > 18 # Monkey-patch inspect.isfunction() to support Cython functions. > 19 def isfunction(obj): > 20 """ > 21 Check whether something is a function. > 22 > 23 We assume that anything which has a genuine ``__code__`` > 24 attribute (not using ``__getattr__`` overrides) is a function. > 25 This is meant to support Cython functions. > 26 > 27 EXAMPLES:: > 28 > 29 sage: from inspect import isfunction > 30 sage: def f(): pass > 31 sage: isfunction(f) > > /home/dcoudert/sage/local/lib/python2.7/site-packages/sage/repl/ipython_extension.pyc > in wrapper(*args=(<sage.repl.interpreter.SageTerminalInteractiveShell > object>,), **kwargs={}) > 547 ....: if work: > 548 ....: return 'foo worked' > 549 ....: raise RuntimeError("foo didn't work") > 550 sage: foo(False) > 551 Traceback (most recent call last): > 552 ... > 553 RuntimeError: foo didn't work > 554 sage: foo(True) > 555 'foo worked' > 556 sage: foo(False) > 557 sage: foo(True) > 558 """ > 559 @wraps(func) > 560 def wrapper(*args, **kwargs): > 561 if not wrapper.has_run: > --> 562 result = func(*args, **kwargs) > result = undefined > global func = undefined > args = (<sage.repl.interpreter.SageTerminalInteractiveShell object at > 0x7f82ce364990>,) > kwargs = {} > 563 wrapper.has_run = True > 564 return result > 565 wrapper.has_run = False > 566 return wrapper > 567 > 568 > 569 @run_once > 570 def load_ipython_extension(ip): > 571 """ > 572 Load the extension in IPython. > 573 """ > 574 # this modifies ip > 575 SageCustomizations(shell=ip) > > /home/dcoudert/sage/local/lib/python2.7/site-packages/sage/repl/ipython_extension.pyc > in > load_ipython_extension(ip=<sage.repl.interpreter.SageTerminalInteractiveShell > object>) > 560 def wrapper(*args, **kwargs): > 561 if not wrapper.has_run: > 562 result = func(*args, **kwargs) > 563 wrapper.has_run = True > 564 return result > 565 wrapper.has_run = False > 566 return wrapper > 567 > 568 > 569 @run_once > 570 def load_ipython_extension(ip): > 571 """ > 572 Load the extension in IPython. > 573 """ > 574 # this modifies ip > --> 575 SageCustomizations(shell=ip) > global SageCustomizations = <class > 'sage.repl.ipython_extension.SageCustomizations'> > global shell = undefined > ip = <sage.repl.interpreter.SageTerminalInteractiveShell object at > 0x7f82ce364990> > > /home/dcoudert/sage/local/lib/python2.7/site-packages/sage/repl/ipython_extension.pyc > in __init__(self=<sage.repl.ipython_extension.SageCustomizations object>, > shell=<sage.repl.interpreter.SageTerminalInteractiveShell object>) > 418 def __init__(self, shell=None): > 419 """ > 420 Initialize the Sage plugin. > 421 """ > 422 self.shell = shell > 423 > 424 self.auto_magics = SageMagics(shell) > 425 self.shell.register_magics(self.auto_magics) > 426 > 427 import sage.misc.edit_module as edit_module > 428 self.shell.set_hook('editor', edit_module.edit_devel) > 429 > 430 self.init_inspector() > 431 self.init_line_transforms() > 432 > --> 433 import sage.all # until sage's import hell is fixed > sage.all = undefined > 434 > 435 self.shell.verbose_quit = True > 436 self.set_quit_hook() > 437 > 438 self.register_interface_magics() > 439 > 440 if SAGE_IMPORTALL == 'yes': > 441 self.init_environment() > 442 > 443 def register_interface_magics(self): > 444 """ > 445 Register magics for each of the Sage interfaces > 446 """ > 447 from sage.repl.interface_magic import InterfaceMagic > 448 InterfaceMagic.register_all(self.shell) > > /home/dcoudert/sage/local/lib/python2.7/site-packages/sage/all.py in > <module>() > 81 > 82 import sage.misc.lazy_import > 83 from sage.misc.all import * # takes a while > 84 from sage.typeset.all import * > 85 from sage.repl.all import * > 86 > 87 from sage.misc.sh import sh > 88 > 89 from sage.libs.all import * > 90 from sage.data_structures.all import * > 91 from sage.doctest.all import * > 92 > 93 from sage.structure.all import * > 94 from sage.rings.all import * > 95 from sage.arith.all import * > ---> 96 from sage.matrix.all import * > global sage.matrix.all = undefined > 97 > 98 from sage.symbolic.all import * > 99 from sage.modules.all import * > 100 from sage.monoids.all import * > 101 from sage.algebras.all import * > 102 from sage.modular.all import * > 103 from sage.sat.all import * > 104 from sage.schemes.all import * > 105 from sage.graphs.all import * > 106 from sage.groups.all import * > 107 from sage.arith.power import generic_power as power > 108 from sage.databases.all import * > 109 from sage.categories.all import * > 110 from sage.sets.all import * > 111 from sage.probability.all import * > > /home/dcoudert/sage/local/lib/python2.7/site-packages/sage/matrix/__init__.py > in <module>() > 1 # Resolve a cyclic import > ----> 2 import sage.matrix.args > global sage.matrix.args = undefined > > /home/dcoudert/sage/local/lib/python2.7/site-packages/sage/matrix/args.pyx in > init sage.matrix.args (build/cythonized/sage/matrix/args.c:20075)() > 10 # This program is free software: you can redistribute it and/or modify > 11 # it under the terms of the GNU General Public License as published by > 12 # the Free Software Foundation, either version 2 of the License, or > 13 # (at your option) any later version. > 14 # http://www.gnu.org/licenses/ > 15 > #***************************************************************************** > 16 > 17 from __future__ import absolute_import, generator_stop > 18 > 19 cimport cython > 20 from cpython.sequence cimport PySequence_Fast > 21 from cysignals.signals cimport sig_check > 22 from cypari2.gen cimport Gen > 23 from cypari2.types cimport typ, t_MAT, t_VEC, t_COL, t_VECSMALL, > t_LIST, t_STR, t_CLOSURE > 24 > ---> 25 from .matrix_space import MatrixSpace > global matrix_space = undefined > global MatrixSpace = undefined > 26 from sage.rings.all import ZZ, RDF, CDF > 27 from sage.structure.coerce cimport (coercion_model, > 28 is_numpy_type, py_scalar_parent) > 29 from sage.structure.element cimport Element, RingElement > 30 from sage.arith.long cimport pyobject_to_long > 31 from sage.misc.misc_c import sized_iter > 32 from sage.categories import monoids > 33 > 34 > 35 CommutativeMonoids = monoids.Monoids().Commutative() > 36 > 37 > 38 cdef inline bint element_is_scalar(Element x): > 39 """ > 40 Should this element be considered a scalar (as opposed to a > vector)? > > /home/dcoudert/sage/local/lib/python2.7/site-packages/sage/matrix/matrix_space.pyc > in <module>() > 31 # (at your option) any later version. > 32 # https://www.gnu.org/licenses/ > 33 # > **************************************************************************** > 34 from __future__ import print_function, absolute_import > 35 from six.moves import range > 36 from six import iteritems, integer_types > 37 > 38 # System imports > 39 import sys > 40 import operator > 41 > 42 # Sage matrix imports > 43 from . import matrix_generic_dense > 44 from . import matrix_generic_sparse > 45 > ---> 46 from . import matrix_modn_sparse > global matrix_modn_sparse = undefined > 47 > 48 from . import matrix_mod2_dense > 49 from . import matrix_gf2e_dense > 50 > 51 from . import matrix_integer_dense > 52 from . import matrix_integer_sparse > 53 > 54 from . import matrix_rational_dense > 55 from . import matrix_rational_sparse > 56 > 57 from . import matrix_polynomial_dense > 58 from . import matrix_mpolynomial_dense > 59 > 60 # Sage imports > 61 from sage.misc.superseded import deprecation > > /home/dcoudert/sage/local/lib/python2.7/site-packages/sage/matrix/matrix_integer_sparse.pxd > in init sage.matrix.matrix_modn_sparse > (build/cythonized/sage/matrix/matrix_modn_sparse.cpp:16298)() > 1 from sage.modules.vector_integer_sparse cimport mpz_vector > 2 from sage.ext.mod_int cimport mod_int > 3 from .matrix_sparse cimport Matrix_sparse > 4 > ----> 5 cdef class Matrix_integer_sparse(Matrix_sparse): > global cdef = undefined > global Matrix_integer_sparse = undefined > global Matrix_sparse = undefined > 6 cdef mpz_vector* _matrix > 7 > 8 cdef _mod_int_c(self, mod_int p) > > /home/dcoudert/sage/local/lib/python2.7/site-packages/sage/matrix/matrix_integer_dense.pxd > in init sage.matrix.matrix_integer_sparse > (build/cythonized/sage/matrix/matrix_integer_sparse.cpp:15824)() > 1 from sage.libs.gmp.types cimport * > 2 from sage.libs.flint.types cimport fmpz_mat_t > 3 > 4 from .matrix_dense cimport Matrix_dense > 5 from sage.rings.integer cimport Integer > 6 from sage.ext.mod_int cimport * > 7 > 8 ctypedef long* GEN > 9 > ---> 10 cdef class Matrix_integer_dense(Matrix_dense): > global cdef = undefined > global Matrix_integer_dense = undefined > global Matrix_dense = undefined > 11 cdef fmpz_mat_t _matrix > 12 cdef object _pivots > 13 cdef int mpz_height(self, mpz_t height) except -1 > 14 cdef _mod_int_c(self, mod_int modulus) > 15 cdef _mod_two(self) > 16 cdef _pickle_version0(self) > 17 cdef _unpickle_version0(self, data) > 18 cpdef _export_as_string(self, int base=?) > 19 cdef void set_unsafe_mpz(self, Py_ssize_t i, Py_ssize_t j, const > mpz_t value) > 20 cdef void set_unsafe_si(self, Py_ssize_t i, Py_ssize_t j, long > value) > 21 cdef void set_unsafe_double(self, Py_ssize_t i, Py_ssize_t j, > double value) > 22 cdef inline void get_unsafe_mpz(self, Py_ssize_t i, Py_ssize_t j, > mpz_t value) > 23 cdef inline double get_unsafe_double(self, Py_ssize_t i, > Py_ssize_t j) > 24 > 25 # HNF Modn > 26 cdef int _hnf_modn(Matrix_integer_dense self, Matrix_integer_dense > res, > 27 unsigned int det) except -1 > 28 cdef int* _hnf_modn_impl(Matrix_integer_dense self, unsigned int > det, > 29 Py_ssize_t nrows, Py_ssize_t ncols) except NULL > 30 > 31 cdef Matrix_integer_dense _new(self, Py_ssize_t nrows, Py_ssize_t > ncols) > > /home/dcoudert/sage/local/lib/python2.7/site-packages/sage/matrix/matrix_mod2_dense.pxd > in init sage.matrix.matrix_integer_dense > (build/cythonized/sage/matrix/matrix_integer_dense.c:55342)() > 1 from .matrix_dense cimport Matrix_dense > 2 from sage.libs.m4ri cimport * > 3 > ----> 4 cdef class Matrix_mod2_dense(Matrix_dense): > global cdef = undefined > global Matrix_mod2_dense = undefined > global Matrix_dense = undefined > 5 cdef mzd_t *_entries > 6 cdef object _one > 7 cdef object _zero > 8 > 9 cdef set_unsafe_int(self, Py_ssize_t i, Py_ssize_t j, int value) > 10 > 11 cpdef Matrix_mod2_dense _multiply_m4rm(Matrix_mod2_dense self, > Matrix_mod2_dense right, int k) > 12 cpdef Matrix_mod2_dense _multiply_strassen(Matrix_mod2_dense self, > Matrix_mod2_dense right, int cutoff) > 13 > 14 # For conversion to other systems > 15 cpdef _export_as_string(self) > > ImportError: libvpx.so.4: cannot open shared object file: No such file or > directory > > *************************************************************************** > > History of session input: > *** Last line of input (may not be in above history): > > > > > > > Le mercredi 20 mars 2019 00:03:34 UTC+1, Volker Braun a écrit : >> >> As always, you can get the latest beta version from the "develop" git >> branch. Alternatively, the self-contained source tarball is at >> http://www.sagemath.org/download-latest.html >> > -- > You received this message because you are subscribed to the Google Groups > "sage-release" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to sage-release+unsubscr...@googlegroups.com. > To post to this group, send email to sage-release@googlegroups.com. > Visit this group at https://groups.google.com/group/sage-release. > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "sage-release" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-release+unsubscr...@googlegroups.com. To post to this group, send email to sage-release@googlegroups.com. Visit this group at https://groups.google.com/group/sage-release. For more options, visit https://groups.google.com/d/optout.