Opened 21 months ago

Last modified 2 months ago

#25828 needs_work enhancement

Replace OptionalExtension(...., package='bliss') by condition=BlissLibrary().is_present()

Reported by: gh-timokau Owned by:
Priority: major Milestone: sage-9.1
Component: build Keywords:
Cc: jdemeyer, arojas, fbissey, dimpase, embray, isuruf Merged in:
Authors: Matthias Koeppe, Timo Kaufmann Reviewers: Dima Pasechnik
Report Upstream: N/A Work issues:
Branch: u/mkoeppe/optional-extension-features (Commits) Commit: ef1219e1493d418ae33bfb93d836b7eda91f8c9e
Dependencies: Stopgaps:

Description (last modified by mkoeppe)

The last remaining (after #25825) piece of code that uses is_package_installed is OptionalExtension. Since it only provides the package kwarg for convenience, I thought it would make sense to just move to condition and add feature checks to use in module_list.py.

Moreover, OptionalExtension(..., package=....) does not take system packages checked for by spkg-configure.m4 (#27330) into account.

setup.py build_cython is extended by an option --require-features for the benefit of distribution builders who want to ensure a predictable build. For example:

./sage -sh -c "cd src && sage-python -u setup.py build_cython --require-features=sage.features.databases.DatabaseCremona"
....
sage.features.FeatureNotPresentError: Cremona's database of elliptic curves is not available.
'cremona/cremona.db' not found in any of ['/Users/mkoeppe/s/sage/sage-rebasing/local/share']
To install Cremona's database of elliptic curves you can try to run 'sage -i database_cremona_ellcurve'.
Further installation instructions might be available at https://github.com/JohnCremona/ecdata.

On the branch is one module for which a feature test is already available (bliss).

See also:

  • #28175: Move sage optimization backends to separate Cython packages to remove OptionalExtension problems
  • Follow-up: #28815: Don't pass SAGE_PKGS to src/setup.py. Replace OptionalExtension(...., package=....) by condition=Feature.is_present()

Change History (42)

comment:1 Changed 21 months ago by gh-timokau

  • Cc jdemeyer added

Jeroen, according to git log you seem most experienced with what is going on in setup.py (second just to William Stein in number of commits). Do you have a opinion?

comment:2 Changed 21 months ago by jdemeyer

I don't know. There is no obvious "best" solution.

comment:3 Changed 21 months ago by arojas

  • Cc arojas added

comment:4 follow-up: Changed 21 months ago by gh-timokau

I think #2 (two steps) would probably be the cleaner solution. Creating and then deleting a stub during installation would be pretty hacky.

I tried implementing that but having basically no experience with distutils I'm confused. ext_modules is imported from module_list but then never used. Instead some magic self.distribution.ext_modules that appears out of nowhere is used.

Do you think #1 is feasible?

comment:5 in reply to: ↑ 4 Changed 21 months ago by jdemeyer

Replying to gh-timokau:

ext_modules is imported from module_list but then never used.

Please read the very last line of src/setup.py

comment:6 Changed 21 months ago by gh-timokau

Oh right, thanks.

So ext_modules is a distutils concept and they expect one single list of modules? If that is the case some pretty ugly hacks would probably be needed to cythonize the extensions in two sets.

comment:7 Changed 4 months ago by mkoeppe

  • Milestone changed from sage-8.3 to sage-9.0

I'd suggest to use #28791 (Implement Feature without using sage.misc.cachefunc, sage.structure.unique_representation) - I have an implementation that does the caching by hand and implements a TrivialUniqueRepresentation in a few lines to remove the dependencies.

comment:8 Changed 4 months ago by mkoeppe

When implementing this ticket, one should watch out to preserve what was intended in #21288.

comment:9 Changed 4 months ago by gh-timokau

I don't currently have time to work on this, so if anyone wants to take over that would be great.

comment:10 Changed 4 months ago by mkoeppe

  • Cc fbissey dimpase added
  • Dependencies set to #28791
  • Description modified (diff)
  • Summary changed from Move OptionalExtension to features to Move OptionalExtension to features, don't pass SAGE_PKGS to src/setup.py

comment:11 follow-up: Changed 4 months ago by fbissey

A move away to the current use of is_package_installed is welcome. My only issue with the current implementation example is that it is automagical. The extension is automatically built on detection. Packagers usually prefer enable and then check availability. The default position of sage has always been to build on presence but as a packager I want to be able to have some control mechanism where I can disable the feature even if the necessary bits are present.

This would be a major step in avoid sage's packaging system at build time. Testing time remains an issue as it calls list_packages but nothing short of an overall of the option system in doctest may be able to get rid of it.

comment:12 Changed 4 months ago by mkoeppe

  • Branch changed from u/gh-timokau/optional-extension-features to u/mkoeppe/optional-extension-features

comment:13 in reply to: ↑ 11 Changed 4 months ago by mkoeppe

  • Commit changed from ecf8693e20bed10cf377ad8c880f6c892142dc14 to e9738acf59f5cca24513c89c3ff96a8033ebb593

Replying to fbissey:

My only issue with the current implementation example is that it is automagical. The extension is automatically built on detection. Packagers usually prefer enable and then check availability. The default position of sage has always been to build on presence but as a packager I want to be able to have some control mechanism where I can disable the feature even if the necessary bits are present.

Great point. We could add options to setup.py build such as --require-feature=sage.features.bliss.BlissLibrary. If this setup.py build is invoked with this option but the feature is not found, an error would be signaled.


New commits:

5543692Replace is_package_installed("bliss") by features
24921a0Implement Feature without using sage.misc.cachefunc, sage.structure.unique_representation
e9738acMerge branch 't/28791/feature_without_using_sage_modules' into t/25828/optional-extension-features

comment:14 Changed 4 months ago by git

  • Commit changed from e9738acf59f5cca24513c89c3ff96a8033ebb593 to 4392be34cd78d95e7fdd7999400328639eb2600d

Branch pushed to git repo; I updated commit sha1. New commits:

4392be3./setup.py build_cython --require-features=sage.features.bliss.BlissLibrary

comment:15 Changed 4 months ago by git

  • Commit changed from 4392be34cd78d95e7fdd7999400328639eb2600d to 0575b96f0717dc4daaeb0dff1d1af942b2e0d960

Branch pushed to git repo; I updated commit sha1. New commits:

0575b96WIP: Disable bliss Feature test

comment:16 follow-up: Changed 4 months ago by fbissey

As a prototype it looks promising but the option is quite complicated. Even when adding proper documentation of the available features. We may want to have some kind of dictionary matching simple option names to features. But that has to come later when we add more stuff.

comment:17 Changed 4 months ago by mkoeppe

  • Description modified (diff)

comment:18 Changed 4 months ago by mkoeppe

I would need help from a distutils expert on how to make the option --require-features also usable with build, rather than just build_cython.

comment:19 follow-up: Changed 4 months ago by mkoeppe

In the ticket description I have added an example sage.features.databases.DatabaseCremona, which is a StaticFile feature.

Supporting CythonFeature (such as the previously mentioned sage.features.bliss.BlissLibrary) needs more work because it pulls in other modules that are not available at build time:

running build_cython
Enabling Cython debugging support
************************************************************************
Traceback (most recent call last):
  File "setup.py", line 887, in <module>
    ext_modules = ext_modules)
  File "/Users/mkoeppe/s/sage/sage-rebasing/local/lib/python3.7/distutils/core.py", line 148, in setup
    dist.run_commands()
  File "/Users/mkoeppe/s/sage/sage-rebasing/local/lib/python3.7/distutils/dist.py", line 966, in run_commands
    self.run_command(cmd)
  File "/Users/mkoeppe/s/sage/sage-rebasing/local/lib/python3.7/distutils/dist.py", line 984, in run_command
    cmd_obj.ensure_finalized()
  File "/Users/mkoeppe/s/sage/sage-rebasing/local/lib/python3.7/distutils/cmd.py", line 107, in ensure_finalized
    self.finalize_options()
  File "setup.py", line 296, in finalize_options
    feature.require()
  File "/Users/mkoeppe/s/sage/sage-rebasing/src/sage/features/__init__.py", line 189, in require
    presence = self.is_present()
  File "/Users/mkoeppe/s/sage/sage-rebasing/src/sage/features/__init__.py", line 161, in is_present
    res = self._is_present()
  File "/Users/mkoeppe/s/sage/sage-rebasing/src/sage/features/__init__.py", line 551, in _is_present
    with open(tmp_filename(ext=".pyx"), 'w') as pyx:
  File "/Users/mkoeppe/s/sage/sage-rebasing/src/sage/misc/temporary_file.py", line 149, in tmp_filename
    from sage.misc.misc import SAGE_TMP
  File "/Users/mkoeppe/s/sage/sage-rebasing/src/sage/misc/misc.py", line 51, in <module>
    import sage.misc.prandom as random
  File "/Users/mkoeppe/s/sage/sage-rebasing/src/sage/misc/prandom.py", line 58, in <module>
    from sage.misc.randstate import current_randstate
ModuleNotFoundError: No module named 'sage.misc.randstate'

comment:20 in reply to: ↑ 16 Changed 4 months ago by mkoeppe

Replying to fbissey:

As a prototype it looks promising but the option is quite complicated. Even when adding proper documentation of the available features. We may want to have some kind of dictionary matching simple option names to features. But that has to come later when we add more stuff.

Yes, I agree, of course we can make it more user-friendly later.

comment:21 Changed 4 months ago by mkoeppe

  • Cc embray added

comment:22 Changed 4 months ago by mkoeppe

  • Description modified (diff)

comment:23 Changed 4 months ago by git

  • Commit changed from 0575b96f0717dc4daaeb0dff1d1af942b2e0d960 to 4af7b45c8933b831ae53d0a09e9afdd1c8649578

Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:

ac45c74CythonFeature._is_present: Use version of tmp_filename without dependence on SAGE_TMP
8ca2e68src/sage/misc/misc.py: Move import of sage.misc.prandom to functions that need it
1cee8f1sage.misc.cython.cython: New options capture_stderr=True, target_dir=None
8b85b4dsage.misc.cython: Move global imports into the functions where they are used
4a85117sage.features.CythonFeature._is_present: Use tempfile.mkdtemp for cython test file and build
fdd4ab7sage.features.CythonFeature._is_present: Improve error reporting in FeatureTestResult
4af7b45sage.misc.cython.cython: Replace imported sage_makedirs, restore_cwd by local copies

comment:24 Changed 4 months ago by mkoeppe

  • Authors set to Matthias Koeppe, Timo Kaufmann
  • Status changed from new to needs_review

comment:25 in reply to: ↑ 19 Changed 4 months ago by mkoeppe

Replying to mkoeppe:

Supporting CythonFeature (such as the previously mentioned sage.features.bliss.BlissLibrary) needs more work because it pulls in other modules that are not available at build time

Done

comment:26 Changed 4 months ago by mkoeppe

  • Description modified (diff)
  • Summary changed from Move OptionalExtension to features, don't pass SAGE_PKGS to src/setup.py to Replace OptionalExtension(...., package='bliss') by condition=BlissLibrary().is_present()

comment:27 Changed 3 months ago by mkoeppe

  • Description modified (diff)

comment:28 Changed 3 months ago by git

  • Commit changed from 4af7b45c8933b831ae53d0a09e9afdd1c8649578 to aa87fab54db20d73d11d3edfe7c9cd30daea1a97

Branch pushed to git repo; I updated commit sha1. New commits:

aa87fabMerge tag '9.0.beta10' into t/25828/optional-extension-features

comment:29 Changed 3 months ago by mkoeppe

  • Milestone changed from sage-9.0 to sage-9.1

comment:30 Changed 3 months ago by mkoeppe

  • Description modified (diff)

comment:31 Changed 3 months ago by git

  • Commit changed from aa87fab54db20d73d11d3edfe7c9cd30daea1a97 to 2c7108300d66473a2bfeedd5a3fd68a2ac9b9db8

Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:

d53931cReplace is_package_installed("bliss") by features
2c71083./setup.py build_cython --require-features=sage.features.bliss.BlissLibrary

comment:32 Changed 3 months ago by mkoeppe

  • Cc isuruf added
  • Dependencies #28791 deleted

Rebased on top of current beta.

comment:33 Changed 3 months ago by dimpase

I get an error while trying to build this branch, from scratch. Something to do with sage.misc.randstate not ready at the moment BlissLibrary().is_present() is called:

...
cp /home/scratch2/dimpase/sage/sage/src/ext/gap/sage.g /home/scratch2/dimpase/sage/sage/local/share/sage/ext/gap/sage.g
cp /home/scratch2/dimpase/sage/sage/src/ext/gap/joyner/hurwitz_crv_rr_sp.gap /home/scratch2/dimpase/sage/sage/local/share/sage/ext/gap/joyner/hurwitz_crv_rr_sp.gap
cp /home/scratch2/dimpase/sage/sage/src/ext/gap/joyner/modular_crv_rr_sp.gap /home/scratch2/dimpase/sage/sage/local/share/sage/ext/gap/joyner/modular_crv_rr_sp.gap
if [ -z "$SAGE_INSTALL_FETCH_ONLY" ]; then \
        cd /home/scratch2/dimpase/sage/sage/src && source bin/sage-env && \
        sage-logger -p 'time make sage' '/home/scratch2/dimpase/sage/sage/logs/pkgs/sagelib-9.1.beta0.log'; \
fi
[sagelib-9.1.beta0] make[4]: Entering directory '/home/scratch2/dimpase/sage/sage/src'
[sagelib-9.1.beta0] cd . && export                                    \
[sagelib-9.1.beta0]     SAGE_ROOT=/doesnotexist                               \
[sagelib-9.1.beta0]     SAGE_SRC=/doesnotexist                                \
[sagelib-9.1.beta0]     SAGE_SRC_ROOT=/doesnotexist                           \
[sagelib-9.1.beta0]     SAGE_DOC_SRC=/doesnotexist                            \
[sagelib-9.1.beta0]     SAGE_BUILD_DIR=/doesnotexist                          \
[sagelib-9.1.beta0]     SAGE_PKGS=/home/scratch2/dimpase/sage/sage/build/pkgs                \
[sagelib-9.1.beta0] && sage-python -u setup.py --no-user-cfg build install
[sagelib-9.1.beta0] /home/scratch2/dimpase/sage/sage/src/bin/sage-env: line 130: cd: /doesnotexist: No such file or directory
[sagelib-9.1.beta0] Warning: overwriting SAGE_ROOT environment variable:
[sagelib-9.1.beta0] Old SAGE_ROOT=/doesnotexist
[sagelib-9.1.beta0] New SAGE_ROOT=
[sagelib-9.1.beta0] ************************************************************************
[sagelib-9.1.beta0] Traceback (most recent call last):
[sagelib-9.1.beta0]   File "setup.py", line 72, in <module>
[sagelib-9.1.beta0]     from module_list import ext_modules, library_order
[sagelib-9.1.beta0]   File "/home/scratch2/dimpase/sage/sage/src/module_list.py", line 406, in <module>
[sagelib-9.1.beta0]     condition = BlissLibrary().is_present()),
[sagelib-9.1.beta0]   File "/home/scratch2/dimpase/sage/sage/src/sage/features/__init__.py", line 161, in is_present
[sagelib-9.1.beta0]     res = self._is_present()
[sagelib-9.1.beta0]   File "/home/scratch2/dimpase/sage/sage/src/sage/features/__init__.py", line 551, in _is_present
[sagelib-9.1.beta0]     with open(tmp_filename(ext=".pyx"), 'w') as pyx:
[sagelib-9.1.beta0]   File "/home/scratch2/dimpase/sage/sage/src/sage/misc/temporary_file.py", line 149, in tmp_filename
[sagelib-9.1.beta0]     from sage.misc.misc import SAGE_TMP
[sagelib-9.1.beta0]   File "/home/scratch2/dimpase/sage/sage/src/sage/misc/misc.py", line 51, in <module>
[sagelib-9.1.beta0]     import sage.misc.prandom as random
[sagelib-9.1.beta0]   File "/home/scratch2/dimpase/sage/sage/src/sage/misc/prandom.py", line 58, in <module>
[sagelib-9.1.beta0]     from sage.misc.randstate import current_randstate
[sagelib-9.1.beta0] ModuleNotFoundError: No module named 'sage.misc.randstate'
[sagelib-9.1.beta0] ************************************************************************
[sagelib-9.1.beta0] Error building the Sage library
[sagelib-9.1.beta0] ************************************************************************
[sagelib-9.1.beta0] Please email sage-devel (http://groups.google.com/group/sage-devel)
[sagelib-9.1.beta0] explaining the problem and including the relevant part of the log file
[sagelib-9.1.beta0]   /home/scratch2/dimpase/sage/sage/logs/pkgs/sagelib-9.1.beta0.log
[sagelib-9.1.beta0] Describe your computer, operating system, etc.
[sagelib-9.1.beta0] ************************************************************************
[sagelib-9.1.beta0] Error in atexit._run_exitfuncs:
[sagelib-9.1.beta0] Traceback (most recent call last):
[sagelib-9.1.beta0]   File "<frozen importlib._bootstrap>", line 983, in _find_and_load
[sagelib-9.1.beta0]   File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
[sagelib-9.1.beta0]   File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
[sagelib-9.1.beta0]   File "<frozen importlib._bootstrap_external>", line 728, in exec_module
[sagelib-9.1.beta0]   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
[sagelib-9.1.beta0]   File "/home/scratch2/dimpase/sage/sage/src/sage/misc/misc.py", line 51, in <module>
[sagelib-9.1.beta0]     import sage.misc.prandom as random
[sagelib-9.1.beta0]   File "/home/scratch2/dimpase/sage/sage/src/sage/misc/prandom.py", line 58, in <module>
[sagelib-9.1.beta0]     from sage.misc.randstate import current_randstate
[sagelib-9.1.beta0] ModuleNotFoundError: No module named 'sage.misc.randstate'
[sagelib-9.1.beta0] make[4]: *** [Makefile:33: sage] Error 1
[sagelib-9.1.beta0] make[4]: Leaving directory '/home/scratch2/dimpase/sage/sage/src'
[sagelib-9.1.beta0]
[sagelib-9.1.beta0] real        0m0.369s
[sagelib-9.1.beta0] user        0m0.313s
[sagelib-9.1.beta0] sys 0m0.056s
make[3]: *** [Makefile:1981: sagelib] Error 2
make[3]: Leaving directory '/home/scratch2/dimpase/sage/sage/build/make'
make[2]: *** [Makefile:1842: all-start] Error 2
make[2]: Leaving directory '/home/scratch2/dimpase/sage/sage/build/make'

comment:34 Changed 3 months ago by dimpase

  • Reviewers set to Dima Pasechnik
  • Status changed from needs_review to needs_work

comment:35 Changed 3 months ago by mkoeppe

Sorry, looks like I lost a number of commits in the rebase.

comment:36 Changed 3 months ago by git

  • Commit changed from 2c7108300d66473a2bfeedd5a3fd68a2ac9b9db8 to ef1219e1493d418ae33bfb93d836b7eda91f8c9e

Branch pushed to git repo; I updated commit sha1. This was a forced push. Last 10 new commits:

4392be3./setup.py build_cython --require-features=sage.features.bliss.BlissLibrary
ac45c74CythonFeature._is_present: Use version of tmp_filename without dependence on SAGE_TMP
8ca2e68src/sage/misc/misc.py: Move import of sage.misc.prandom to functions that need it
1cee8f1sage.misc.cython.cython: New options capture_stderr=True, target_dir=None
8b85b4dsage.misc.cython: Move global imports into the functions where they are used
4a85117sage.features.CythonFeature._is_present: Use tempfile.mkdtemp for cython test file and build
fdd4ab7sage.features.CythonFeature._is_present: Improve error reporting in FeatureTestResult
4af7b45sage.misc.cython.cython: Replace imported sage_makedirs, restore_cwd by local copies
aa87fabMerge tag '9.0.beta10' into t/25828/optional-extension-features
ef1219eMerge tag '9.1.beta0' into HEAD

comment:37 Changed 3 months ago by dimpase

is it ready now?

comment:38 Changed 2 months ago by mkoeppe

  • Status changed from needs_work to needs_review

comment:39 follow-up: Changed 2 months ago by dimpase

something does not work with the build (docs get built, but then sage won't start) This is running make ptest (without bliss installed, I think)

...
[dochtml] [thematic_] ... done (4882 js index entries)
[dochtml] [thematic_] The HTML pages are in local/share/doc/sage/html/en/thematic_tutorials.
[dochtml] Build finished. The built documents can be found in /home/scratch2/dimpase/sage/sage/local/share/doc/sage/html/en/thematic_tutorials
[dochtml] Elapsed time: 486.8 seconds.
[dochtml] Done building the documentation!
make[3]: Leaving directory '/home/scratch2/dimpase/sage/sage/build/make'
make -j12 '/home/scratch2/dimpase/sage/sage/local/etc/sage-started.txt'
make[3]: Entering directory '/home/scratch2/dimpase/sage/sage/build/make'
make[3]: warning: -jN forced in submake: disabling jobserver mode.
if [ -z "$SAGE_INSTALL_FETCH_ONLY" ]; then \
        cd /home/scratch2/dimpase/sage/sage/src && source bin/sage-env && \
        sage-logger -p 'time make -j12 sage' '/home/scratch2/dimpase/sage/sage/logs/pkgs/sagelib-9.1.beta0.log'; \
fi
[sagelib-9.1.beta0] make[4]: Entering directory '/home/scratch2/dimpase/sage/sage/src'
[sagelib-9.1.beta0] make[4]: warning: -jN forced in submake: disabling jobserver mode.
[sagelib-9.1.beta0] cd . && export                                    \
[sagelib-9.1.beta0]     SAGE_ROOT=/doesnotexist                               \
[sagelib-9.1.beta0]     SAGE_SRC=/doesnotexist                                \
[sagelib-9.1.beta0]     SAGE_SRC_ROOT=/doesnotexist                           \
[sagelib-9.1.beta0]     SAGE_DOC_SRC=/doesnotexist                            \
[sagelib-9.1.beta0]     SAGE_BUILD_DIR=/doesnotexist                          \
[sagelib-9.1.beta0]     SAGE_PKGS=/home/scratch2/dimpase/sage/sage/build/pkgs                \
[sagelib-9.1.beta0] && sage-python -u setup.py --no-user-cfg build install
[sagelib-9.1.beta0] /home/scratch2/dimpase/sage/sage/src/bin/sage-env: line 130: cd: /doesnotexist: No such file or directory
[sagelib-9.1.beta0] Warning: overwriting SAGE_ROOT environment variable:
[sagelib-9.1.beta0] Old SAGE_ROOT=/doesnotexist
[sagelib-9.1.beta0] New SAGE_ROOT=
[sagelib-9.1.beta0] /tmp/tmp_sage_cython_featuref0w8sij7/target/featuretest.cpp:652:10: fatal error: bliss/graph.hh: No such file or directory
[sagelib-9.1.beta0]  #include "bliss/graph.hh"
[sagelib-9.1.beta0]           ^~~~~~~~~~~~~~~~
[sagelib-9.1.beta0] compilation terminated.
[sagelib-9.1.beta0] Discovering Python/Cython source code....
[sagelib-9.1.beta0] Discovered Python/Cython sources, time: 0.01 seconds.
[sagelib-9.1.beta0] running build
[sagelib-9.1.beta0] Generating auto-generated sources
[sagelib-9.1.beta0] Building interpreters for fast_callable
[sagelib-9.1.beta0] running build_cython
[sagelib-9.1.beta0] Enabling Cython debugging support
[sagelib-9.1.beta0] Updating Cython code....
[sagelib-9.1.beta0] Finished Cythonizing, time: 1.49 seconds.
[sagelib-9.1.beta0] running build_py
[sagelib-9.1.beta0] running build_ext
[sagelib-9.1.beta0] Executing 0 commands (using 1 thread)
[sagelib-9.1.beta0] Time to execute 0 commands: 0.11 seconds.
[sagelib-9.1.beta0] Total time spent compiling C/C++ extensions: 0.14 seconds.
[sagelib-9.1.beta0] running install
[sagelib-9.1.beta0] running install_lib
[sagelib-9.1.beta0] running install_egg_info
[sagelib-9.1.beta0] Removing /home/scratch2/dimpase/sage/sage/local/lib/python3.7/site-packages/sage-9.1.beta0-py3.7.egg-info
[sagelib-9.1.beta0] Writing /home/scratch2/dimpase/sage/sage/local/lib/python3.7/site-packages/sage-9.1.beta0-py3.7.egg-info
[sagelib-9.1.beta0] Cleaning up stale installed files....
[sagelib-9.1.beta0] - cleaning build/lib.linux-x86_64-3.7
[sagelib-9.1.beta0] - cleaning /home/scratch2/dimpase/sage/sage/local/lib/python3.7/site-packages
[sagelib-9.1.beta0] Finished cleaning, time: 0.15 seconds.
[sagelib-9.1.beta0] if [ "$UNAME" = "CYGWIN" ]; then                         \
[sagelib-9.1.beta0]     sage-rebase.sh "$SAGE_LOCAL" 2>/dev/null;            \
[sagelib-9.1.beta0] fi
[sagelib-9.1.beta0] make[4]: Leaving directory '/home/scratch2/dimpase/sage/sage/src'
[sagelib-9.1.beta0]
[sagelib-9.1.beta0] real        0m3.029s
[sagelib-9.1.beta0] user        0m2.510s
[sagelib-9.1.beta0] sys 0m0.419s
"/home/scratch2/dimpase/sage/sage/local/bin/sage-starts"

Testing that Sage starts...
[2020-01-14 15:30:54] SageMath version 9.1.beta0, Release Date: 2020-01-10
Yes, Sage starts.
make[3]: Leaving directory '/home/scratch2/dimpase/sage/sage/build/make'
make[2]: Leaving directory '/home/scratch2/dimpase/sage/sage/build/make'

real    46m41.281s
user    276m31.335s
sys     13m36.772s
Sage build/upgrade complete!
make[1]: Leaving directory '/home/scratch2/dimpase/sage/sage'
./sage -t -p --all --logfile=logs/ptest.log
Traceback (most recent call last):
  File "/home/scratch2/dimpase/sage/sage/src/bin/sage-runtests", line 177, in <module>
    from sage.doctest.control import DocTestController
  File "/home/scratch2/dimpase/sage/sage/local/lib/python3.7/site-packages/sage/doctest/control.py", line 33, in <module>
    from .sources import FileDocTestSource, DictAsObject
  File "/home/scratch2/dimpase/sage/sage/local/lib/python3.7/site-packages/sage/doctest/sources.py", line 33, in <module>
    from .parsing import SageDocTestParser
  File "/home/scratch2/dimpase/sage/sage/local/lib/python3.7/site-packages/sage/doctest/parsing.py", line 66, in <module>
    from sage.all import RealIntervalField
ImportError: cannot import name 'RealIntervalField' from 'sage.all' (unknown location)
make: *** [Makefile:172: ptest] Error 1

I guess

[sagelib-9.1.beta0] /tmp/tmp_sage_cython_featuref0w8sij7/target/featuretest.cpp:652:10: fatal error: bliss/graph.hh: No such file or directory

points somewhere...

comment:40 Changed 2 months ago by mkoeppe

Thanks for testing! I'll investigate

comment:41 in reply to: ↑ 39 Changed 2 months ago by mkoeppe

Replying to dimpase:

something does not work with the build

ImportError: cannot import name 'RealIntervalField' from 'sage.all' (unknown location)
make: *** [Makefile:172: ptest] Error 1

Yes, I also end up with a broken build. I'll look into it more.

I guess

[sagelib-9.1.beta0] /tmp/tmp_sage_cython_featuref0w8sij7/target/featuretest.cpp:652:10: fatal error: bliss/graph.hh: No such file or directory

points somewhere...

No, that is just the output of the feature test. I will try to make it look less scary.

$ ./sage -c 'from sage.features.bliss import BlissLibrary; print(BlissLibrary().is_present())'
/var/folders/38/wnh4gf1552g_crsjnv2vmmww0000gp/T/tmp_sage_cython_featurempyw50ji/target/featuretest.cpp:653:10: fatal error: 'bliss/graph.hh' file not found
#include "bliss/graph.hh"
         ^~~~~~~~~~~~~~~~
1 error generated.
FeatureTestResult('Bliss', False)

comment:42 Changed 2 months ago by mkoeppe

  • Status changed from needs_review to needs_work
Note: See TracTickets for help on using tickets.