Skip to content

Conversation

tobiasdiez
Copy link
Contributor

@tobiasdiez tobiasdiez commented Aug 16, 2025

Migrate the pdf-doc building to meson. For this, a bug in the builder is fixed that prevented running Make against the sphinx-generated files when invoked via meson. Along the way, the output in case of an error of the make script is improved.

Generated pdfs can be found at https://github.com/sagemath/sage/actions/runs/17005745386/artifacts/3779209846.

📝 Checklist

  • The title is concise and informative.
  • The description explains in detail what this PR is about.
  • I have linked a relevant issue or discussion.
  • I have created tests covering the changes.
  • I have updated the documentation and checked the documentation preview.

⌛ Dependencies

Copy link

github-actions bot commented Aug 16, 2025

Documentation preview for this PR (built with commit 4487fc2; changes) is ready! 🎉
This preview will update shortly after each push to this PR.

@tobiasdiez tobiasdiez mentioned this pull request Aug 16, 2025
5 tasks
@user202729
Copy link
Contributor

user202729 commented Aug 16, 2025

this still doesn't reenable live doc, no?

remark: it doesn't speed up the build (understandable, since most of the time are spent on running lualatex)

@tobiasdiez
Copy link
Contributor Author

this still doesn't reenable live doc, no?

I didn't touch the live docs here, and leave this to #40586.

remark: it doesn't speed up the build (understandable, since most of the time are spent on running lualatex)

There could be some speed gains if we convince sphinx to export a dep file (maybe similar to https://gitlab.com/qemu-project/qemu/-/blob/master/docs/sphinx/depfile.py?ref_type=heads) so that meson can watch the source files for each doc target and then incrementally rebuild the docs. That should be faster than sphinx' incrementally rebuild logic.

@user202729
Copy link
Contributor

that may not be necessary, the bottleneck is still in latexmk.

TeX's dependency tracker is quite fickle, I don't think we will ever be able to make a meson replacement for latexmk. But either way, likely out of scope here.

(latexmk's incremental tracking is not 100% correct either, but better than nothing.)

@tobiasdiez
Copy link
Contributor Author

Right, the idea with depfile was also more for the html build. Honestly, I don't care about the pdf. I think the website is fully sufficient and only a handful of people are actually looking at those pdfs. The only real purpose is to catch latex errors...

@tobiasdiez tobiasdiez requested a review from dimpase August 17, 2025 00:51
vbraun pushed a commit to vbraun/sage that referenced this pull request Aug 17, 2025
sagemathgh-40597: Migrate pdf-doc build to meson
    
<!-- ^ Please provide a concise and informative title. -->
<!-- ^ Don't put issue numbers in the title, do this in the PR
description below. -->
<!-- ^ For example, instead of "Fixes sagemath#12345" use "Introduce new method
to calculate 1 + 2". -->
<!-- v Describe your changes below in detail. -->
<!-- v Why is this change required? What problem does it solve? -->
<!-- v If this PR resolves an open issue, please link to it here. For
example, "Fixes sagemath#12345". -->

Migrate the pdf-doc building to meson. For this, a bug in the builder is
fixed that prevented running Make against the sphinx-generated files
when invoked via meson. Along the way, the output in case of an error of
the make script is improved.

Generated pdfs can be found at https://github.com/sagemath/sage/actions/
runs/17005745386/artifacts/3779209846.

### 📝 Checklist

<!-- Put an `x` in all the boxes that apply. -->

- [ ] The title is concise and informative.
- [ ] The description explains in detail what this PR is about.
- [ ] I have linked a relevant issue or discussion.
- [ ] I have created tests covering the changes.
- [ ] I have updated the documentation and checked the documentation
preview.

### ⌛ Dependencies

<!-- List all open PRs that this PR logically depends on. For example,
-->
<!-- - sagemath#12345: short description why this is a dependency -->
<!-- - sagemath#34567: ... -->
    
URL: sagemath#40597
Reported by: Tobias Diez
Reviewer(s):
vbraun pushed a commit to vbraun/sage that referenced this pull request Aug 17, 2025
<!-- ^ Please provide a concise and informative title. -->
<!-- ^ Don't put issue numbers in the title, do this in the PR
description below. -->
<!-- ^ For example, instead of "Fixes sagemath#12345" use "Introduce new method
to calculate 1 + 2". -->
<!-- v Describe your changes below in detail. -->
<!-- v Why is this change required? What problem does it solve? -->
<!-- v If this PR resolves an open issue, please link to it here. For
example, "Fixes sagemath#12345". -->

Migrate the pdf-doc building to meson. For this, a bug in the builder is
fixed that prevented running Make against the sphinx-generated files
when invoked via meson. Along the way, the output in case of an error of
the make script is improved.

Generated pdfs can be found at https://github.com/sagemath/sage/actions/
runs/17005745386/artifacts/3779209846.

### 📝 Checklist

<!-- Put an `x` in all the boxes that apply. -->

- [ ] The title is concise and informative.
- [ ] The description explains in detail what this PR is about.
- [ ] I have linked a relevant issue or discussion.
- [ ] I have created tests covering the changes.
- [ ] I have updated the documentation and checked the documentation
preview.

### ⌛ Dependencies

<!-- List all open PRs that this PR logically depends on. For example,
-->
<!-- - sagemath#12345: short description why this is a dependency -->
<!-- - sagemath#34567: ... -->

URL: sagemath#40597
Reported by: Tobias Diez
Reviewer(s):
vbraun pushed a commit to vbraun/sage that referenced this pull request Aug 17, 2025
<!-- ^ Please provide a concise and informative title. -->
<!-- ^ Don't put issue numbers in the title, do this in the PR
description below. -->
<!-- ^ For example, instead of "Fixes sagemath#12345" use "Introduce new method
to calculate 1 + 2". -->
<!-- v Describe your changes below in detail. -->
<!-- v Why is this change required? What problem does it solve? -->
<!-- v If this PR resolves an open issue, please link to it here. For
example, "Fixes sagemath#12345". -->

Migrate the pdf-doc building to meson. For this, a bug in the builder is
fixed that prevented running Make against the sphinx-generated files
when invoked via meson. Along the way, the output in case of an error of
the make script is improved.

Generated pdfs can be found at https://github.com/sagemath/sage/actions/
runs/17005745386/artifacts/3779209846.

### 📝 Checklist

<!-- Put an `x` in all the boxes that apply. -->

- [ ] The title is concise and informative.
- [ ] The description explains in detail what this PR is about.
- [ ] I have linked a relevant issue or discussion.
- [ ] I have created tests covering the changes.
- [ ] I have updated the documentation and checked the documentation
preview.

### ⌛ Dependencies

<!-- List all open PRs that this PR logically depends on. For example,
-->
<!-- - sagemath#12345: short description why this is a dependency -->
<!-- - sagemath#34567: ... -->

URL: sagemath#40597
Reported by: Tobias Diez
Reviewer(s):
@tobiasdiez tobiasdiez mentioned this pull request Aug 18, 2025
5 tasks
@user202729
Copy link
Contributor

maybe you should merge latest develop first (PDF build only starts failing there).

pyproject.toml Outdated
docs-pdf = [
"pkg:generic/latexmk",
"pkg:generic/lualatex",
]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is free_fonts and xindy not needed to be included here?

@@ -265,13 +265,37 @@ def pdf(self):
with open(tex_file, 'w') as f:
f.write(ref)

make_target = "cd '%s' && $MAKE %s && mv -f *.pdf '%s'"
error_message = "failed to run $MAKE %s in %s"
make_cmd = os.environ.get('MAKE', 'make')
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can the user set MAKE='make -j5'? if so the command below would fail.

(it's encouraged that they set MAKEFLAGS=-j5 instead, but still…)

@@ -177,6 +178,7 @@ def get_dependencies(pyproject_toml: Path, python: str, platform: str) -> set[st
"sagemath_giac",
"pynormaliz", # due to https://github.com/sagemath/sage/issues/40214
"latte-integrale", # due to https://github.com/sagemath/sage/issues/40216
"pkg:generic/lualatex", # texlive-core doesn't include lualatex
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

will this by default include texlive into the conda environment? Since most users/developers of sage don't want to build documentation and tex live is very heavy, I'd rather not.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point. I've now uncommented the info in pyproject.toml so that it doesn't get included in the conda env (or any other env that reads the "external" info for that matter). But it's still there for people to look at it.

@user202729
Copy link
Contributor

All I can say is the component that builds pdf on new pull request is working well, but what step have you taken to ensure that the things that need/does not need to be executed on new push to develop branch are also working?

@dimpase
Copy link
Member

dimpase commented Aug 23, 2025

the bottleneck is still in latexmk

latexmk needs to be told to ignore luatex-cache - which it apparently shares across a number of processes, so it's a potential source of race conditions. See e.g. https://tex.stackexchange.com/questions/347980/how-to-make-latexmk-ignore-certain-input-files-as-dependencies

without it I keep getting

[spkg-install] Latexmk: Maximum runs of pdflatex reached without getting stable files
[spkg-install] ----------------------
[spkg-install] This message may duplicate earlier message.
[spkg-install] Latexmk: Failure in processing file 'a_tour_of_sage.tex':
[spkg-install]    'pdflatex' needed too many passes
[spkg-install] ----------------------
[spkg-install] Latexmk: Sometimes, the -f option can be used to get latexmk
[spkg-install]   to try to force complete processing.
[spkg-install]   But normally, you will need to correct the file(s) that caused the
[spkg-install]   error, and then rerun latexmk.
[spkg-install]   In some cases, it is best to clean out generated files before rerunning
[spkg-install]   latexmk after you've corrected the files.
[spkg-install] Latexmk: Getting log file 'a_tour_of_sage.log'
[spkg-install] Latexmk: Examining 'a_tour_of_sage.fls'
[spkg-install] Latexmk: Examining 'a_tour_of_sage.log'
[spkg-install] Latexmk: Index file 'a_tour_of_sage.idx' was written
[spkg-install] Latexmk: Log file says output to 'a_tour_of_sage.pdf'
[spkg-install] Have index file 'a_tour_of_sage.idx', a_tour_of_sage.ind a_tour_of_sage
[spkg-install] Latexmk: applying rule 'pdflatex'...
[spkg-install] Rule 'pdflatex':  Reasons for rerun
[spkg-install] Changed files or newly in use/created:
[spkg-install]   /home/dima/.texlive/texmf-var/luatex-cache/generic/names/luaotfload-lookup-cache.luc
[spkg-install] Category 'changed_user':
[spkg-install]   /home/dima/.texlive/texmf-var/luatex-cache/generic/names/luaotfload-lookup-cache.luc

@dimpase
Copy link
Member

dimpase commented Aug 23, 2025

What I don't understand is where to put .latexmkrc file, which should contain

$hash_calc_ignore_pattern{'luc'}='^';

@tobiasdiez
Copy link
Contributor Author

tobiasdiez commented Aug 23, 2025

@user202729 Thanks for the review. I've addressed your comments now.

All I can say is the component that builds pdf on new pull request is working well, but what step have you taken to ensure that the things that need/does not need to be executed on new push to develop branch are also working?

There is nothing special about the "push to develop" situation. The pdf docs are built in the same way and published as github action output. That output is currently not used at all (except if someone downloads it manually).

@dimpase These parallelization issues look very much unrelated to the meson migration. I don't understand why they occur now, except if for some reason the old make build actually run the pdf compilation in serial, but meson now does it in parallel.

@user202729
Copy link
Contributor

user202729 commented Aug 23, 2025

@dimpase

What I don't understand is where to put .latexmkrc file, which should contain

$hash_calc_ignore_pattern{'luc'}='^';
   -e <code> - Execute specified Perl code (as part of latexmk start-up
               code)

try running latexmk -e '$hash_calc_ignore_pattern{"luc"}="^";' <the remaining arguments here> (use single quote to avoid accidental expansion) and see if it works for you.

also, how are you running it (since apparently the way it's ran on the CI at this point doesn't cause that error)?

@dimpase
Copy link
Member

dimpase commented Aug 23, 2025

These parallelization issues look very much unrelated to the meson migration. I don't understand why they occur now, except if for some reason the old make build actually run the pdf compilation in serial, but meson now does it in parallel.

this issue is probably due to the recent bump of sphinx to 8.2.3, and the fact that more and more people are moving to TeXLive 2024. I have an impression that sphinx project neglects the LaTeX builds. E.g. their use of luatex85.sty is something LaTeX gurus frown upon:
https://tex.stackexchange.com/questions/750092/correct-fonts-for-luatex85-for-utf-8-in-text/750097?noredirect=1#comment1870414_750097

And latexmk is obviously not designed for parallel workloads. How does one explicitly request serial processing in doc-pdf? make -j1 doc-pdf does not cut it (I'm talking about non-meson pdf docbuild, i.e. pre this PR)

@dimpase
Copy link
Member

dimpase commented Aug 23, 2025

I am now trying this on top of #39030, and I guess it will suffer the same shortcoming - absence of a way to clean up docs, but leave the rest (sagelib) in consistent state, ready for re-doing make doc-pdf

@dimpase
Copy link
Member

dimpase commented Aug 23, 2025

@tobiasdiez OK, this works on top of #39030, so how about merging this into #39030 ?

@tobiasdiez
Copy link
Contributor Author

@tobiasdiez OK, this works on top of #39030, so how about merging this into #39030 ?

Okay, done. Could you then please review this PR, so that it doesn't delay #39030?

@dimpase
Copy link
Member

dimpase commented Aug 24, 2025

How about just closing it and concentrating on #39030 ? reviewing this alone seems meaningless to me

@tobiasdiez
Copy link
Contributor Author

do not merge this without #39030

It can actually be merged without any problem without #39030. It just fixes a problem in the meson pdf build, and migrates the CI to meson. So in case #39030 get's delayed by yet another problem on volker's buildbots, this PR still can be merged.

@vbraun vbraun merged commit 51e8a9a into sagemath:develop Aug 27, 2025
20 of 26 checks passed
@user202729
Copy link
Contributor

user202729 commented Aug 27, 2025

good news: the build mostly works.

bad news… the build occasionally fails.

LaTeX files can be found in /home/runner/work/sage/sage/builddir/src/doc/latex/en/reference/references.
stdout from make:
latexmk -pdf -dvi- -ps-  'references.tex'
Rc files read:
  /etc/LatexMk
  latexmkrc
Latexmk: This is Latexmk, John Collins, 31 Jan. 2024. Version 4.83.
No existing .aux file, so I'll make a simple one, and require run of *latex.
Latexmk: applying rule 'pdflatex'...
Rule 'pdflatex':  Reasons for rerun
Category 'other':
  Rerun of 'pdflatex' forced or previously required:
    Reason or flag: 'Initial setup'

------------
Run number 1 of rule 'pdflatex'
------------
------------
Running 'lualatex   -recorder  "references.tex"'
------------
⋮
⋮
(/usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkvutils.tex
(/usr/share/texlive/texmf-dist/tex/generic/xkeyval/keyval.tex))))
(/usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty)
(/usr/share/texlive/texmf-dist/tex/luatex/luatexbase/luatexbase.sty
(/usr/share/texlive/texmf-dist/tex/luatex/ctablestack/ctablestack.sty))
(/usr/share/texlive/texmf-dist/tex/latex/polyglossia/gloss-latex.lde))
(/usr/share/texlive/texmf-dist/tex/latex/polyglossia/gloss-english.ldf)...mf-di
st/tex/luatex/luaotfload/luaotfload-harf-define.lua:404: attempt to perform ari
thmetic on a nil value (field 'height').
<to be read again> 
\scan_stop: 
l.61 ]
    
? 
! Emergency stop.
<to be read again> 
\scan_stop: 
l.61 ]
    

https://github.com/sagemath/sage/actions/runs/17277815071/job/49038947643#step:8:1870

where line 61 is

\setmonofont{FreeMono}[Scale=0.9,
  Extension      = .otf,
  UprightFont    = *,
  ItalicFont     = *Oblique,
  BoldFont       = *Bold,
  BoldItalicFont = *BoldOblique,
]

[tutorial ] The LaTeX files are in src/doc/latex/fr/tutorial.
[tutorial ] Run 'make' in that directory to run these through (pdf)latex
[tutorial ] (use `make latexpdf' here to do that automatically).
LaTeX files can be found in /home/runner/work/sage/sage/builddir/src/doc/latex/fr/tutorial.
stdout from make:
latexmk -pdf -dvi- -ps-  'tutorial-fr.tex'
Rc files read:
  /etc/LatexMk
  latexmkrc
Latexmk: This is Latexmk, John Collins, 31 Jan. 2024. Version 4.83.
No existing .aux file, so I'll make a simple one, and require run of *latex.
Latexmk: applying rule 'pdflatex'...
Rule 'pdflatex':  Reasons for rerun
Category 'other':
  Rerun of 'pdflatex' forced or previously required:
    Reason or flag: 'Initial setup'

------------
Run number 1 of rule 'pdflatex'
------------
------------
Running 'lualatex   -recorder  "tutorial-fr.tex"'
------------
This is LuaHBTeX, Version 1.17.0 (TeX Live 2023/Debian) 
 restricted system commands enabled.
(./tutorial-fr.tex
LaTeX2e <2023-11-01> patch level 1
L3 programming layer <2024-01-22>
 (/usr/share/texlive/texmf-dist/tex/generic/luatex85/luatex85.sty)
(./sphinxmanual.cls
Document Class: sphinxmanual 2019/12/01 v2.3.0 Document class (Sphinx manual)
(/usr/share/texlive/texmf-dist/tex/latex/base/report.cls
Document Class: report 2023/05/17 v1.4n Standard LaTeX document class
⋮
⋮
(/usr/share/texlive/texmf-dist/tex/generic/babel/locale/fr/babel-french.tex)
(/usr/share/texlive/texmf-dist/tex/latex/carlisle/scalefnt.sty)
(/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty)
(/usr/share/texlive/texmf-dist/tex/latex/fncychap/fncychap.sty) (./sphinx.sty
(/usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty)
(/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty
(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg)
⋮
⋮
(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg))
*geometry* driver: auto-detecting
*geometry* detected driver: luatex
<<oml.cmap>><<oms.cmap>><<omx.cmap>>
(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd)
(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd)
(/usr/share/texlive/texmf-dist/tex/latex/jknapltx/ursfs.fd)<<ot1.cmap>>
[1{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] [2]
No file tutorial-fr.toc.
[1] [2] [1] [2]
Chapitre 1.
⋮
Rule 'makeindex tutorial-fr.idx':  Reasons for rerun
Category 'other':
  Rerun of 'makeindex tutorial-fr.idx' forced or previously required:
    Reason or flag: 'Initial set up of rule'

------------
Run number 1 of rule 'makeindex tutorial-fr.idx'
------------
⋮
⋮
------------
Run number 2 of rule 'pdflatex'
------------
------------
Running 'lualatex   -recorder  "tutorial-fr.tex"'
------------
This is LuaHBTeX, Version 1.17.0 (TeX Live 2023/Debian) 
 restricted system commands enabled.
(./tutorial-fr.tex
LaTeX2e <2023-11-01> patch level 1
L3 programming layer <2024-01-22>
 (/usr/share/texlive/texmf-dist/tex/generic/luatex85/luatex85.sty)
(./sphinxmanual.cls
Document Class: sphinxmanual 2019/12/01 v2.3.0 Document class (Sphinx manual)
(/usr/share/texlive/texmf-dist/tex/latex/base/report.cls
Document Class: report 2023/05/17 v1.4n Standard LaTeX document class
(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo)))
⋮
⋮
(/usr/share/texlive/texmf-dist/tex/generic/babel/locale/fr/babel-french.tex)
(/usr/share/texlive/texmf-dist/tex/latex/carlisle/scalefnt.sty)
(/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty)...xmf-dist/tex/lu
atex/luaotfload/fontloader-2023-08-19.lua:19296: bad argument #1 to 'for iterat
or' (table expected, got nil).
<to be read again> 
\scan_stop: 
l.46 ]
    
? 
! Emergency stop.
<to be read again> 
\scan_stop: 
l.46 ]
    
 471 words of node memory still in use:
   4 hlist, 1 rule, 1 dir, 3 glue, 3 kern, 1 penalty, 2 glyph, 16 attribute, 51
 glue_spec, 6 attribute_list, 1 write nodes
   avail lists: 1:1,2:16,3:1,4:1,5:7,9:2
!  ==> Fatal error occurred, no output PDF file produced!

https://github.com/sagemath/sage/actions/runs/17272791004/job/49021777269

happened again in https://github.com/sagemath/sage/actions/runs/17294516739/job/49089360398#step:8:6657

looks tough to debug.

Might be related to the LuaTeX font cache mentioned by dimpase above.

Maybe one can just clean-up and rerun on failure or something.

@tobiasdiez tobiasdiez deleted the meson-pdf-docs branch August 28, 2025 00:10
vbraun pushed a commit to vbraun/sage that referenced this pull request Aug 31, 2025
<!-- ^ Please provide a concise and informative title. -->
<!-- ^ Don't put issue numbers in the title, do this in the PR
description below. -->
<!-- ^ For example, instead of "Fixes sagemath#12345" use "Introduce new method
to calculate 1 + 2". -->
<!-- v Describe your changes below in detail. -->
<!-- v Why is this change required? What problem does it solve? -->
<!-- v If this PR resolves an open issue, please link to it here. For
example, "Fixes sagemath#12345". -->

Replace the old setuptools-based build by the new meson-based one in
sage-the-distro. Delete most of the old stuff that is no longer needed
now.

### 📝 Checklist

<!-- Put an `x` in all the boxes that apply. -->

- [ ] The title is concise and informative.
- [ ] The description explains in detail what this PR is about.
- [ ] I have linked a relevant issue or discussion.
- [ ] I have created tests covering the changes.
- [ ] I have updated the documentation and checked the documentation
preview.

### ⌛ Dependencies

- sagemath#40133
- sagemath#39973
- sagemath#40071
- sagemath#40597
<!-- List all open PRs that this PR logically depends on. For example,
-->
<!-- - sagemath#12345: short description why this is a dependency -->
<!-- - sagemath#34567: ... -->

URL: sagemath#39030
Reported by: Tobias Diez
Reviewer(s): Dima Pasechnik, François Bissey, Tobias Diez
vbraun pushed a commit to vbraun/sage that referenced this pull request Sep 1, 2025
sagemathgh-39030: Use meson in sage-the-distro
    
<!-- ^ Please provide a concise and informative title. -->
<!-- ^ Don't put issue numbers in the title, do this in the PR
description below. -->
<!-- ^ For example, instead of "Fixes sagemath#12345" use "Introduce new method
to calculate 1 + 2". -->
<!-- v Describe your changes below in detail. -->
<!-- v Why is this change required? What problem does it solve? -->
<!-- v If this PR resolves an open issue, please link to it here. For
example, "Fixes sagemath#12345". -->

Replace the old setuptools-based build by the new meson-based one in
sage-the-distro. Delete most of the old stuff that is no longer needed
now.

### 📝 Checklist

<!-- Put an `x` in all the boxes that apply. -->

- [ ] The title is concise and informative.
- [ ] The description explains in detail what this PR is about.
- [ ] I have linked a relevant issue or discussion.
- [ ] I have created tests covering the changes.
- [ ] I have updated the documentation and checked the documentation
preview.

### ⌛ Dependencies

- sagemath#40133
- sagemath#39973
- sagemath#40071
- sagemath#40597
<!-- List all open PRs that this PR logically depends on. For example,
-->
<!-- - sagemath#12345: short description why this is a dependency -->
<!-- - sagemath#34567: ... -->
    
URL: sagemath#39030
Reported by: Tobias Diez
Reviewer(s): Dima Pasechnik, François Bissey, Tobias Diez
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants