Closed mkoeppe closed 3 years ago
Alternatively, these directories could just be put into SAGE_ROOT:
SAGE_ROOT
- sage_conf
- sage_docbuild
- sage_sws2rst
- sagemath_standard
(made this change in the ticket description)
Description changed:
---
+++
@@ -1,14 +1,18 @@
-In the current layout, these embedded source trees are a little difficult to find.
+In the current layout, these embedded source trees are a little difficult to find / complicated to type.
The proposed location is:
SAGE_ROOT
+```
Description changed:
---
+++
@@ -12,7 +12,14 @@
that is, on the same level as
+Also, we rename the confusingly named directory SAGE_ROOT/build
(Python users expect a directory named build
to contains build artifacts only) to
+```
Description changed:
---
+++
@@ -5,21 +5,51 @@
SAGE_ROOT
sagemath_standard
-that is, on the same level as
+that is, these new directories on the same level as
- - src # the monolithic sagelib source tree - unchanged
+ - src
+```
+the unchanged monolithic sagelib source tree, which will continue to contain subdirectories
+
+```
+ - bin
+ - doc
+ - sage
+ - sage_docbuild
+ - sage_setup
Also, we rename the confusingly named directory SAGE_ROOT/build
(Python users expect a directory named build
to contains build artifacts only) to
- sage_bootstrap
+ - setup.py
+ - sage_bootstrap
+ - bin
+ - make
+ - pkgs
+```
+
+#29847 will add:
+
+```
+ - sage_setup
+ - setup.py
+ - sage_setup -> symlinks to SAGE_ROOT/src/sage_setup
-
Description changed:
---
+++
@@ -18,7 +18,7 @@
- sage -> symlinks to SAGE_ROOT/src/sage
- sage_setup -> symlinks to SAGE_ROOT/src/sage_setup
-that is, these new directories on the same level as +that is, these new directories will be on the same level as
- src
@@ -36,20 +36,29 @@
Also, we rename the confusingly named directory `SAGE_ROOT/build` (Python users expect a directory named `build` to contains build artifacts only) to
+Other modularization tickets (#29705) will add
+```
Description changed:
---
+++
@@ -33,7 +33,7 @@
- sage_setup
-Also, we rename the confusingly named directory SAGE_ROOT/build
(Python users expect a directory named build
to contains build artifacts only) to
+In follow-up ticket #31662, we rename the confusingly named directory SAGE_ROOT/build
(Python users expect a directory named build
to contains build artifacts only) to
- sage_bootstrap
Dependencies: #30913
Last 10 new commits:
0283da5 | build/make/Makefile.in: Add wheel, setuptools_wheel to PYTHON_TOOLCHAIN to make sure that PEP 517 packages have a complete build system |
f720722 | build/pkgs/sagelib/src/tox.ini: Add factor nobuildisolation |
c451b31 | src/setup.cfg.m4 (install_requires): Add sage_conf |
6700223 | Merge tag '9.3.rc0' into t/30913/sagelib__add_setup_cfg__install_requires_ |
04da2c6 | build/pkgs/ipywidgets: Patch out declaring install-requires of nbformat and jupyterlab-widgets |
68dc845 | Merge branch 't/30913/sagelib__add_setup_cfg__install_requires_' into t/31577/move_sage_root_build_pkgs___src_to_sage_root____rename_sage_root_build_to_sage_root_sage_bootstrap |
9181571 | Move /build/pkgs/sage_conf/src to /sage_conf, leave symlink behind |
4f480b4 | Move /build/pkgs/sage_docbuild/src to /sage_docbuild, leave symlink behind |
cc04151 | Move /build/pkgs/sage_sws2rst/src to /sage_sws2rst, leave symlink behind |
8862b55 | Move /build/pkgs/sagelib/src to /sagemath_standard, leave symlink behind |
Author: Matthias Koeppe
Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:
73d83c2 | Move /build/pkgs/sagelib/src to /sagemath_standard, leave symlink behind |
Branch pushed to git repo; I updated commit sha1. New commits:
ef2fee8 | WIP: Fix up docker build |
sage_docbuild -> symlinks to SAGE_ROOT/src/sage_docbuild
Would it make sense to reverse this: put the files in SAGE_ROOT/sage_docbuild
and then make SAGE_ROOT/src/sage_docbuild
into a link? Is there any reason to keep SAGE_ROOT/src/sage_docbuild
? If so, why also create the top-level directory?
What about SAGE_ROOT/src/sage_setup
, along the same lines?
This is a great question.
There is no technical reason for keeping SAGE_ROOT/src/sage_docbuild
at all.
Likewise, after #29847, there will be no technical reason for keeping SAGE_ROOT/src/sage_setup
.
But in #29705, I promised not to change the structure of the source tree, which I interpret as keeping the monolithic tree SAGE_ROOT/src
unchanged. It is so that we don't overwhelm the developer community by making too many changes at the same time.
Of course, it could be argued that sage_docbuild
is a new name anyway, and very few people will know or care about this package.
So if you think that's better, I can just move the sage_docbuild
sources to SAGE_ROOT/sage_docbuild/sage_docbuild
on this ticket.
(I'd rather not put reverse symlinks.)
Branch pushed to git repo; I updated commit sha1. New commits:
12df870 | No more src/sage_docbuild |
Description changed:
---
+++
@@ -9,10 +9,10 @@
- sage_conf.py.in
- sage_docbuild
- setup.py
- - sage_docbuild -> symlinks to SAGE_ROOT/src/sage_docbuild
+ - sage_docbuild # moved here from src/sage_docbuild - in Sage 9.2 was src/sage_setup/docbuild
- sage_sws2rst
- setup.py
- - ...
+ - sage_sws2rst
- sagemath_standard
- setup.py
- sage -> symlinks to SAGE_ROOT/src/sage
@@ -49,7 +49,7 @@
sage_setup
Other modularization tickets (#29705) will add
Description changed:
---
+++
@@ -23,13 +23,12 @@
src
-the unchanged monolithic sagelib source tree, which will continue to contain subdirectories
+the monolithic sagelib source tree, unchanged compared to Sage 9.2, which will continue to contain subdirectories
I will make another change, renaming the top-level directories from using underscores to using dashes. This will emphasize that these are the names of distribution packages (PyPI normalizes to dashes).
Description changed:
---
+++
@@ -4,16 +4,16 @@
SAGE_ROOT
SAGE_ROOT/build
(Python users expect a directory named build
to contains build artifacts only) to
@@ -54,10 +54,11 @@
Other modularization tickets (#29705) will add
etc.
(This change is making the kludge that I had to add to the top-level Makefile unnecessary. The command for building make sage_conf
, will no longer be fooled by the existence of a top-level directory of that name.)
Branch pushed to git repo; I updated commit sha1. New commits:
1fe5f3d | Spell distribution source directories sage-conf, sage-docbuild, sage-sws2rst, sagemath-standard with dashes, not underscores |
Description changed:
---
+++
@@ -6,17 +6,20 @@
SAGE_ROOT
- sage-conf
- setup.py
+ - bin/
- sage_conf.py.in
- sage-docbuild
- setup.py
- - sage_docbuild # moved here from src/sage_docbuild - in Sage 9.2 was src/sage_setup/docbuild
+ - sage_docbuild # moved here from src/sage_docbuild/ - in Sage 9.2 was src/sage_setup/docbuild/
- sage-sws2rst
- setup.py
- - sage_sws2rst
+ - bin/
+ - sage_sws2rst/
- sagemath-standard
- setup.py
- - sage -> symlinks to SAGE_ROOT/src/sage
- - sage_setup -> symlinks to SAGE_ROOT/src/sage_setup
+ - bin -> symlinks to SAGE_ROOT/src/bin/
+ - sage -> symlinks to SAGE_ROOT/src/sage/
+ - sage_setup -> symlinks to SAGE_ROOT/src/sage_setup/
that is, these new directories will be on the same level as
@@ -26,10 +29,10 @@ the monolithic sagelib source tree, unchanged compared to Sage 9.2, which will continue to contain subdirectories
- - bin
- - doc
- - sage
- - sage_setup
+ - bin/
+ - doc/
+ - sage/
+ - sage_setup/
In follow-up ticket #31662, we rename the confusingly named directory SAGE_ROOT/build
(Python users expect a directory named build
to contains build artifacts only) to
@@ -37,10 +40,10 @@
- sage-bootstrap
- setup.py
- - sage_bootstrap
- - bin
- - make
- - pkgs
+ - sage_bootstrap/
+ - bin/
+ - make/
+ - pkgs/
@@ -48,17 +51,17 @@
- sage-setup
- setup.py
- - sage_setup # SAGE_ROOT/src/sage_setup will be moved here
+ - sage_setup/ # SAGE_ROOT/src/sage_setup will be moved here
Other modularization tickets (#29705) will add
- - sagemath-core
- - sagemath-brial
- - sagemath-giac
- - sagemath-meataxe
- - sagemath-tdlib
+ - sagemath-core/
+ - sagemath-brial/
+ - sagemath-giac/
+ - sagemath-meataxe/
+ - sagemath-tdlib/
etc.
Description changed:
---
+++
@@ -10,7 +10,7 @@
- sage_conf.py.in
- sage-docbuild
- setup.py
- - sage_docbuild # moved here from src/sage_docbuild/ - in Sage 9.2 was src/sage_setup/docbuild/
+ - sage_docbuild/ # moved here from src/sage_docbuild/ - in Sage 9.2 was src/sage_setup/docbuild/
- sage-sws2rst
- setup.py
- bin/
Branch pushed to git repo; I updated commit sha1. New commits:
8ad9b3e | Fixup renames |
Branch pushed to git repo; I updated commit sha1. New commits:
4c0d38d | Also standardize on using dashes in distribution names in setup.cfg |
Description changed:
---
+++
@@ -65,3 +65,10 @@
etc.
+#29868 will add + +```
Branch pushed to git repo; I updated commit sha1. New commits:
47b890e | Merge tag '9.3.rc3' into t/31577/move_sage_root_build_pkgs___src_to_sage_root____rename_sage_root_build_to_sage_root_sage_bootstrap |
make ptestlong
fails to run any doctests because of this error:
Using --optional=build,dochtml,homebrew,pip,sage,sage_spkg
Doctesting entire Sage library.
Traceback (most recent call last):
File "/Users/palmieri/Desktop/Sage/sage_builds/TESTING/sage-9.3.rc2/src/bin/sage-runtests", line 144, in <module>
err = DC.run()
File "/Users/palmieri/Desktop/Sage/sage_builds/TESTING/sage-9.3.rc2/local/lib/python3.9/site-packages/sage/doctest/control.py", line 1204, in run
self.expand_files_into_sources()
File "/Users/palmieri/Desktop/Sage/sage_builds/TESTING/sage-9.3.rc2/local/lib/python3.9/site-packages/sage/doctest/control.py", line 788, in expand_files_into_sources
self.sources = [FileDocTestSource(path, self.options) for path in expand()]
File "/Users/palmieri/Desktop/Sage/sage_builds/TESTING/sage-9.3.rc2/local/lib/python3.9/site-packages/sage/doctest/control.py", line 788, in <listcomp>
self.sources = [FileDocTestSource(path, self.options) for path in expand()]
File "/Users/palmieri/Desktop/Sage/sage_builds/TESTING/sage-9.3.rc2/local/lib/python3.9/site-packages/sage/doctest/sources.py", line 528, in __init__
raise ValueError("unknown file extension %r"%ext)
ValueError: unknown file extension ''
make: *** [ptestlong] Error 1
I believe the problem is that it trying to doctest src/sage_docbuild
.
OK, I guess I have to retract my claim that there is no technical reason for having src/sage_docbuild
. In part that's #31352 though
I'm currently testing this change:
diff --git a/src/sage/doctest/control.py b/src/sage/doctest/control.py
index afb0d6cbcf..45ec2263fb 100644
--- a/src/sage/doctest/control.py
+++ b/src/sage/doctest/control.py
@@ -695,7 +695,7 @@ class DocTestController(SageObject):
# don't make sense to run outside a build environment
if have_git:
self.files.append(opj(SAGE_SRC, 'sage_setup'))
- self.files.append(opj(SAGE_SRC, 'sage_docbuild'))
+ self.files.append(opj(SAGE_ROOT, 'sage-docbuild'))
self.files.append(SAGE_DOC_SRC)
if self.options.all or (self.options.new and not have_git):
I think I'd rather undo the change in 12df870 and keep it for another ticket.
I think it's better to keep everything that is subject to Sage doctesting in one physical tree
(Modularization of doctesting is a separate issue.)
Replying to @jhpalmieri:
I'm currently testing this change:
diff --git a/src/sage/doctest/control.py b/src/sage/doctest/control.py index afb0d6cbcf..45ec2263fb 100644 --- a/src/sage/doctest/control.py +++ b/src/sage/doctest/control.py @@ -695,7 +695,7 @@ class DocTestController(SageObject): # don't make sense to run outside a build environment if have_git: self.files.append(opj(SAGE_SRC, 'sage_setup')) - self.files.append(opj(SAGE_SRC, 'sage_docbuild')) + self.files.append(opj(SAGE_ROOT, 'sage-docbuild')) self.files.append(SAGE_DOC_SRC) if self.options.all or (self.options.new and not have_git):
I really don't like that kind of changes. In sage-on-distro SAGE_SRC
becomes SAGE_LIB
at runtime when SAGE_ROOT
is undefined. That would break things there. Not to mention I am against introducing more SAGE_ROOT
outside of the build system as a matter of principle. As Matthias says modularization of doctesting is a separate issue and that's what would be most appropriate there.
Replying to @kiwifb:
Replying to @jhpalmieri:
I'm currently testing this change:
diff --git a/src/sage/doctest/control.py b/src/sage/doctest/control.py index afb0d6cbcf..45ec2263fb 100644 --- a/src/sage/doctest/control.py +++ b/src/sage/doctest/control.py @@ -695,7 +695,7 @@ class DocTestController(SageObject): # don't make sense to run outside a build environment if have_git: self.files.append(opj(SAGE_SRC, 'sage_setup')) - self.files.append(opj(SAGE_SRC, 'sage_docbuild')) + self.files.append(opj(SAGE_ROOT, 'sage-docbuild')) self.files.append(SAGE_DOC_SRC) if self.options.all or (self.options.new and not have_git):
I really don't like that kind of changes. In sage-on-distro
SAGE_SRC
becomesSAGE_LIB
at runtime whenSAGE_ROOT
is undefined. That would break things there. Not to mention I am against introducing moreSAGE_ROOT
outside of the build system as a matter of principle. As Matthias says modularization of doctesting is a separate issue and that's what would be most appropriate there.
I think that on distros, have_git
will be false (it tests whether SAGE_ROOT/.git
exists), so this block, and the resulting doctests, will be skipped entirely.
Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:
a24fe5c | Merge #30913 |
ca9935e | Move /build/pkgs/sage_conf/src to /sage_conf, leave symlink behind |
f81216a | Move /build/pkgs/sage_docbuild/src to /sage_docbuild, leave symlink behind |
b5e30f4 | Move /build/pkgs/sage_sws2rst/src to /sage_sws2rst, leave symlink behind |
25e6d14 | Move /build/pkgs/sagelib/src to /sagemath_standard, leave symlink behind |
e253a2b | .gitignore: Update for new source tree locations |
1cfeb06 | Spell distribution source directories sage-conf, sage-docbuild, sage-sws2rst, sagemath-standard with dashes, not underscores |
8d4ea4e | Also standardize on using dashes in distribution names in setup.cfg |
08b8306 | WIP: Fix up docker build |
You are right, it will skipped. Although technically they could be run if present.
Nevertheless I have removed that change. Too complicated for 1 ticket.
Description changed:
---
+++
@@ -10,7 +10,7 @@
- sage_conf.py.in
- sage-docbuild
- setup.py
- - sage_docbuild/ # moved here from src/sage_docbuild/ - in Sage 9.2 was src/sage_setup/docbuild/
+ - sage_docbuild -> symlinks to SAGE_ROOT/sage_docbuild/
- sage-sws2rst
- setup.py
- bin/
@@ -26,12 +26,13 @@
src
-the monolithic sagelib source tree, unchanged compared to Sage 9.2, which will continue to contain subdirectories
+the unchanged monolithic sagelib source tree, which will continue to contain subdirectories
@@ -51,7 +52,7 @@
- sage-setup
- setup.py
- - sage_setup/ # SAGE_ROOT/src/sage_setup will be moved here
+ - sage_setup -> symlinks to src/sage_setup/
Other modularization tickets (#29705) will add @@ -72,3 +73,7 @@
+All files that contain Sage doctests will remain in the monolithic src/
source tree; the source trees of the distributions symlink there. This may be changed in a follow-up ticket regarding the modularization of doctesting.
+
+
+
In the current layout, these embedded source trees are a little difficult to find / complicated to type.
The proposed location is:
that is, the new directory
pkgs
will be on the same level asthe unchanged monolithic sagelib source tree, which will continue to contain subdirectories
We add symlinks from the previous locations
SAGE_ROOT/build/pkgs/sage[math]_*/src
to the new locationsSAGE_ROOT/pkgs/sage[math]-*
29847 will add:
and remove
sage_setup
from thesagemath-standard
distribution.Other modularization tickets (#29705) will add
etc.
29868 will add
All files that contain Sage doctests will remain in the monolithic
src/
source tree; the source trees of the distributions symlink there. This may be changed in a follow-up ticket regarding the modularization of doctesting.Before merging this branch into a non-distclean worktree, it is useful to use
CC: @jhpalmieri @dimpase @kiwifb
Component: build
Author: Matthias Koeppe
Branch/Commit:
7568dc6
Reviewer: Dima Pasechnik
Issue created by migration from https://trac.sagemath.org/ticket/31577