chiark / gitweb /
blog.git
7 months agodocumentation/doxygen: noexcept and constexpr no longer leaks into types.
Vladimír Vondruš [Fri, 13 Sep 2024 21:25:09 +0000 (23:25 +0200)]
documentation/doxygen: noexcept and constexpr no longer leaks into types.

Since Doxygen 1.11. Which means I now have to use the attributes. No
change to the test files is needed, without this change 1.11+ would
produce output that doesn't have noexcept and constexpr.

7 months agodocumentation/doxygen: Doxygen 1.12 can produce up to <sect6>.
Vladimír Vondruš [Fri, 13 Sep 2024 21:23:25 +0000 (23:23 +0200)]
documentation/doxygen: Doxygen 1.12 can produce up to <sect6>.

And is slightly less broken when encountering Markdown headers where
it's not #'s at the start of the line but underneath.

7 months agodocumentation/doxygen: normalize hashes before comparing files.
Vladimír Vondruš [Fri, 13 Sep 2024 21:21:40 +0000 (23:21 +0200)]
documentation/doxygen: normalize hashes before comparing files.

Each Doxygen version differs slightly in those and I just have no
patience for it. The actual on-disk files keep the originals so anchors
and everything works, but they're replaced when comparing.

7 months agodocumentation/doxygen: properly adapt all tests to graphviz 10.
Vladimír Vondruš [Fri, 13 Sep 2024 22:28:15 +0000 (00:28 +0200)]
documentation/doxygen: properly adapt all tests to graphviz 10.

Forgot this in 182939f4d403c42c061b6d37907fab2286b6da24.

7 months agodocumentation/doxygen: remove static keyword from variable types as well.
Vladimír Vondruš [Fri, 13 Sep 2024 22:16:34 +0000 (00:16 +0200)]
documentation/doxygen: remove static keyword from variable types as well.

Like was done in a74bdefc58a34b8054e61e84b480ad6cf0105ad2 for functions.
I didn't notice until now, but Doxygen 1.11 finally fixed that, which
uncovered the mistake in the test_compound.Listing test.

7 months agodocumentation/doxygen: normalize spacing around inline <mcss:*> tags.
Vladimír Vondruš [Fri, 13 Sep 2024 21:47:00 +0000 (23:47 +0200)]
documentation/doxygen: normalize spacing around inline <mcss:*> tags.

Those are \xmlonly, and Doxygen 1.12 (or anything between 1.12 and
1.8.16) seems to put one more space there, causing useless differences
in test files. Replacing those with just one space to have a consistent
output across all versions.

7 months agotest: fix Python 3.12 warnings about invalid escape sequences.
Vladimír Vondruš [Fri, 13 Sep 2024 21:20:25 +0000 (23:20 +0200)]
test: fix Python 3.12 warnings about invalid escape sequences.

Or maybe 3.11 warned too and I just didn't notice?

7 months agodocumentation/python: adapt to changes in Python 3.12 builtins docs.
Vladimír Vondruš [Fri, 13 Sep 2024 21:14:52 +0000 (23:14 +0200)]
documentation/python: adapt to changes in Python 3.12 builtins docs.

7 months agodocumentation/doxygen: whoops, bad test filename.
Vladimír Vondruš [Fri, 13 Sep 2024 00:14:23 +0000 (02:14 +0200)]
documentation/doxygen: whoops, bad test filename.

Broken since 182939f4d403c42c061b6d37907fab2286b6da24.

7 months agodocumentation/doxygen: fix hopefully all ElementTree deprecation warnings.
Vladimír Vondruš [Tue, 10 Sep 2024 13:35:10 +0000 (15:35 +0200)]
documentation/doxygen: fix hopefully all ElementTree deprecation warnings.

No, it didn't get any better with this change. Only more brittle.

7 months agodocumentation/doxygen: fix anonymous enum parsing with 1.9.7+.
Vladimír Vondruš [Tue, 10 Sep 2024 10:07:15 +0000 (12:07 +0200)]
documentation/doxygen: fix anonymous enum parsing with 1.9.7+.

7 months agodocumentation/doxygen: expand the enum test with anonymous enums.
Vladimír Vondruš [Tue, 10 Sep 2024 09:41:09 +0000 (11:41 +0200)]
documentation/doxygen: expand the enum test with anonymous enums.

This was verified only in an "integration" test along with a ton of other
features, better to have a dedicated case for it as well.

8 months agodocummentation/python: adapt __weakref__ ignore to Python 3.11.
Vladimír Vondruš [Wed, 21 Aug 2024 11:50:08 +0000 (13:50 +0200)]
docummentation/python: adapt __weakref__ ignore to Python 3.11.

8 months agopackage/ci: pin to numpy and pybind11 that work together.
Vladimír Vondruš [Wed, 21 Aug 2024 08:44:57 +0000 (10:44 +0200)]
package/ci: pin to numpy and pybind11 that work together.

Without breaking my tests. Gah, I hate this pointless churn.

8 months agodoc: adapt Build Status to codecov API changes.
Vladimír Vondruš [Wed, 21 Aug 2024 10:38:18 +0000 (12:38 +0200)]
doc: adapt Build Status to codecov API changes.

8 months agodoc: updated credits.
Vladimír Vondruš [Wed, 21 Aug 2024 10:31:22 +0000 (12:31 +0200)]
doc: updated credits.

8 months agom.htmlsanity: traverse() is deprecated since docutils 0.18.
Vladimír Vondruš [Wed, 21 Aug 2024 10:23:57 +0000 (12:23 +0200)]
m.htmlsanity: traverse() is deprecated since docutils 0.18.

Looks like it got changed to an iterator to be faster, unfortunately
Sphinx relied on it returning a list, so it got changed back and
deprecated in favor of findall().

Using the new name and adding it as an alias for traverse() on older
versions.

8 months agom.code: reprunicode() is also gone in docutils 0.21.
Vladimír Vondruš [Wed, 21 Aug 2024 10:19:13 +0000 (12:19 +0200)]
m.code: reprunicode() is also gone in docutils 0.21.

Their changelog says it was there just for compatibility with Python 2,
which m.css never supported anyway.

Co-authored-by: John Turner <7strbass@gmail.com>
8 months agom.code: stop using stuff removed in docutils 0.21.
Vladimír Vondruš [Wed, 21 Aug 2024 10:10:15 +0000 (12:10 +0200)]
m.code: stop using stuff removed in docutils 0.21.

The uses were just copypaste from the upstream implementation, and out
of all imports only the error string was used. The documentation
suggests using just str() instead, which is what I do, even though it's
different from what ErrorString actually formatted.

8 months agom.dot: adapt test to differences in output with graphviz 10.
Vladimír Vondruš [Wed, 21 Aug 2024 10:05:24 +0000 (12:05 +0200)]
m.dot: adapt test to differences in output with graphviz 10.

Or 9, or maybe 8 or 7. The version I tested with before was 2.44, no
idea why was it so important to suddenly change the versioning scheme
like this.

8 months agom.plots: adapt tests to different output with matplotlib 3.6+.
Vladimír Vondruš [Wed, 21 Aug 2024 10:02:33 +0000 (12:02 +0200)]
m.plots: adapt tests to different output with matplotlib 3.6+.

Unfortunately version 3.8+ has different output YET AGAIN, meaning I
have to pin again until I build up the patience to retry all this.

8 months agom.qr: adapt to different output in qrcode 7.4.
Vladimír Vondruš [Wed, 21 Aug 2024 10:00:29 +0000 (12:00 +0200)]
m.qr: adapt to different output in qrcode 7.4.

8 months agoStop using deprecated distutils.version.LooseVersion in tests.
Vladimír Vondruš [Wed, 21 Aug 2024 09:23:20 +0000 (11:23 +0200)]
Stop using deprecated distutils.version.LooseVersion in tests.

I was waiting *half a decade* for this to get resolved in a less than
insane way, but NOPE. Instead of using builtin functionality for such a
basic operation as version comparison (heck, even CMake has that
builtin!!) we're now instructed to PIP INSTALL PACKAGING. Where did the
"batteries included" spirit go? Why is everything increasingly
overengineered? Why can't a project stay in place for a few years, WHY
DO I HAVE TO ADAPT TO MEANINGLESS CHANGES ALL THE TIME?!

14 months agolatex2svg: restrict the libgs workaround to dvisvgm < 3.0.
Vladimír Vondruš [Thu, 22 Feb 2024 15:09:20 +0000 (16:09 +0100)]
latex2svg: restrict the libgs workaround to dvisvgm < 3.0.

On newer versions this isn't needed, and the hardcoded paths aren't
always enough. So better to just not try at all.

18 months agocss: support .m-image and .m-figure for <video> as well.
Vladimír Vondruš [Fri, 3 Nov 2023 12:50:40 +0000 (13:50 +0100)]
css: support .m-image and .m-figure for <video> as well.

21 months agolatex2svg: look for libgs.so.10 in /usr/lib64 as well.
Vladimír Vondruš [Wed, 9 Aug 2023 15:34:09 +0000 (17:34 +0200)]
latex2svg: look for libgs.so.10 in /usr/lib64 as well.

22 months agoUpdate copyright year.
Vladimír Vondruš [Wed, 28 Jun 2023 13:58:23 +0000 (15:58 +0200)]
Update copyright year.

Six months in, I could have waited until 2024, heh.

22 months agoStop mentioning Pelican -- it's a general site theme independent of it.
Vladimír Vondruš [Wed, 28 Jun 2023 13:46:14 +0000 (15:46 +0200)]
Stop mentioning Pelican -- it's a general site theme independent of it.

22 months agodoc: properly show that a class directive *is* needed for a table.
Vladimír Vondruš [Wed, 28 Jun 2023 13:44:33 +0000 (15:44 +0200)]
doc: properly show that a class directive *is* needed for a table.

The output markup had it but the snippet not, causing confusion.

22 months agom.code: make it work with newer docutils.
Vladimír Vondruš [Wed, 28 Jun 2023 13:48:24 +0000 (15:48 +0200)]
m.code: make it work with newer docutils.

Not sure when this got broken but omitting the option no longer works.

22 months agodocumentation/python: test external doc overload matching with * and /.
Vladimír Vondruš [Wed, 28 Jun 2023 13:42:36 +0000 (15:42 +0200)]
documentation/python: test external doc overload matching with * and /.

With the previous commit this now "just works", as the placeholders are
dropped from the final signature. The test thus works mainly for
documenting this feature.

22 months agodocumentation/python: recognize / and * in pybind11 signatures.
Vladimír Vondruš [Wed, 28 Jun 2023 12:11:52 +0000 (14:11 +0200)]
documentation/python: recognize / and * in pybind11 signatures.

22 months agodocumentation/python: ignore a new useless builtin on 3.11.
Vladimír Vondruš [Wed, 28 Jun 2023 13:14:51 +0000 (15:14 +0200)]
documentation/python: ignore a new useless builtin on 3.11.

22 months agodocumentation/python: don't use deprecated distutils.
Vladimír Vondruš [Wed, 28 Jun 2023 13:12:59 +0000 (15:12 +0200)]
documentation/python: don't use deprecated distutils.

Turns out the version info can be compared much more easily. Thanks
Python, this is nice.

2 years agolatex2svg: work around dvisvgm < 3.0 not detecting ghostscript 10.
Vladimír Vondruš [Thu, 2 Mar 2023 12:38:11 +0000 (13:38 +0100)]
latex2svg: work around dvisvgm < 3.0 not detecting ghostscript 10.

The latex stack and everything around it is ... interesting. A huge pile
of stuff that randomly breaks in very silent and non-obvious ways, and
it's all so huge and complicated that even distro package maintainers
have no way to know if the packages are mutually compatible.

Now that I figured this out, I still need to comment on that ArchLinux
bug.

2 years agolatex2svg: more robust handling of libgs not being found.
Vladimír Vondruš [Thu, 2 Mar 2023 12:34:20 +0000 (13:34 +0100)]
latex2svg: more robust handling of libgs not being found.

Instead of just looking it up upfront and then hoping for the best,
verify also that dvisvgm actually detected and used it. Because it not
always does, in particular with versions < 3.0 and ghostscript 10.

2 years agom.code: minor.
Vladimír Vondruš [Tue, 21 Feb 2023 10:51:49 +0000 (11:51 +0100)]
m.code: minor.

2 years agocss: reduce size of the jumbo header.
Vladimír Vondruš [Tue, 21 Feb 2023 10:50:08 +0000 (11:50 +0100)]
css: reduce size of the jumbo header.

The previous size was unbearable with longer titles such as in
https://blog.magnum.graphics/backstage/cpu-feature-detection-dispatch/

2 years agodoc: update command line for Pygments CSS generation.
Vladimír Vondruš [Tue, 21 Feb 2023 10:48:47 +0000 (11:48 +0100)]
doc: update command line for Pygments CSS generation.

2 years agom.code: support inverse video in the ANSI lexer.
Vladimír Vondruš [Tue, 21 Feb 2023 10:47:30 +0000 (11:47 +0100)]
m.code: support inverse video in the ANSI lexer.

I'm very glad for the extremely extensive code coverage here. Without
it, I'd break half of other stuff by accident.

2 years agom.code,doxygen: test inline ANSI code highlighting.
Vladimír Vondruš [Mon, 20 Feb 2023 15:40:36 +0000 (16:40 +0100)]
m.code,doxygen: test inline ANSI code highlighting.

Because it got broken with Pygments newer than the ancient 2.6.1 fork I
have (it now unconditionally adds a wrapper <div>), and unfortunately I
can't see how to not do that in 2.14 without delegating into private
APIs.

So just to have that problematic part reproduced in tests, once I get to
that. Unfortunately latest Pelican doesn't work with older Pygments
anymore for some reason (or, well, disallows it), so I can't generate
the website until I have this fixed properly. Ugh.

2 years agopackage/ci: the eternal trash fire of random packages breaking!!
Vladimír Vondruš [Mon, 13 Feb 2023 20:33:08 +0000 (21:33 +0100)]
package/ci: the eternal trash fire of random packages breaking!!

I have no patience for any of this.

2 years agodocumentation/python: test using :property: in a class docstring.
Vladimír Vondruš [Mon, 13 Feb 2023 20:27:03 +0000 (21:27 +0100)]
documentation/python: test using :property: in a class docstring.

It works, I just wasn't sure if there wasn't something special regarding
docstrings so I had to check explicitly.

2 years agodocumentation/doxygen: support styling <dl> with CSS classes.
Vladimír Vondruš [Thu, 29 Dec 2022 15:51:18 +0000 (16:51 +0100)]
documentation/doxygen: support styling <dl> with CSS classes.

So I can make my own footnotes. Finally I got to know what kind of
markup is abused for the autogenerated TODO lists.

2 years agocss: document that a <table> can be .m-fullwidth.
Vladimír Vondruš [Thu, 29 Dec 2022 15:50:27 +0000 (16:50 +0100)]
css: document that a <table> can be .m-fullwidth.

I kinda forgot all the particulars since I made this five years ago, so
better document everything for my old soul.

2 years agopackage/ci: I HATE WEB DEVELOPMENT
Vladimír Vondruš [Tue, 4 Oct 2022 11:05:15 +0000 (13:05 +0200)]
package/ci: I HATE WEB DEVELOPMENT

All packages getting changed all the time with stupid differences. IT IS
NOT POSSIBLE TO JUST HAVE A PROJECT WORKING FOR SIX MONTHS WITHOUT A
CONSTANT NEED FOR ADAPTING TO CHANGES IN DEPENDECIES FFS!!!

I miss developing against Qt, where the APIs I used in 2007 were still
there in 2014. ARGH

2 years agoUpdated CREDITS.md.
Vladimír Vondruš [Tue, 4 Oct 2022 10:41:01 +0000 (12:41 +0200)]
Updated CREDITS.md.

2 years agofix typos in m-components.css
Mark Gillard [Wed, 7 Sep 2022 02:19:20 +0000 (05:19 +0300)]
fix typos in m-components.css

2 years agom.code: fix ANSI lexer compatibility with Pygments 2.12+.
Vladimír Vondruš [Tue, 4 Oct 2022 10:38:31 +0000 (12:38 +0200)]
m.code: fix ANSI lexer compatibility with Pygments 2.12+.

I'm still pinned on an older version because of the significant
difference in output, but it shoulnd't crash at least.

2 years agom.dox: document a rather nasty abuse of lack of python variable scoping.
Vladimír Vondruš [Mon, 1 Aug 2022 12:41:00 +0000 (14:41 +0200)]
m.dox: document a rather nasty abuse of lack of python variable scoping.

2 years agom.dox: restore compatibility with cppreference tag files.
Vladimír Vondruš [Mon, 1 Aug 2022 12:39:00 +0000 (14:39 +0200)]
m.dox: restore compatibility with cppreference tag files.

These put the filename into a different tag, and don't use anchors.

2 years agom.dox: test & fix linking to files, defines and macros.
Vladimír Vondruš [Tue, 4 Oct 2022 10:13:46 +0000 (12:13 +0200)]
m.dox: test & fix linking to files, defines and macros.

The tagfile has an absolute path for some reason, but not going to
bother with that right now. The code was also appending one extra .html
extension, which is fixed.

2 years agom.dox: allow linking to variables as well.
Vladimír Vondruš [Tue, 4 Oct 2022 10:13:06 +0000 (12:13 +0200)]
m.dox: allow linking to variables as well.

I have *many* tags now, and need to be able to refer to them.

2 years agom.dox: properly test also links to typedefs, enums and enum values.
Vladimír Vondruš [Mon, 1 Aug 2022 12:04:56 +0000 (14:04 +0200)]
m.dox: properly test also links to typedefs, enums and enum values.

Instea of updating the Corrade tagfile, which would be several megabytes
of useless data, I'm now cherry-picking just what's changed.

Will make updates slightly harder but not impossible (can't just replace
the whole file but have to cherry-pick again). OTOH I can now use the
same approach for STL-tagfile-specific workarounds instead of bundling
another 2 MB of XML data.

2 years agoUse two-space indentation for Doxygen tagfiles.
Vladimír Vondruš [Tue, 4 Oct 2022 09:53:42 +0000 (11:53 +0200)]
Use two-space indentation for Doxygen tagfiles.

2 years agoUpdated CREDITS.rst.
Vladimír Vondruš [Fri, 13 May 2022 15:52:18 +0000 (17:52 +0200)]
Updated CREDITS.rst.

2 years agodocumentation/doxygen: explanatory comments for parts without CI coverage.
Vladimír Vondruš [Fri, 13 May 2022 15:50:54 +0000 (17:50 +0200)]
documentation/doxygen: explanatory comments for parts without CI coverage.

Also restoring the note about the cpp_function_attributes regression
test.

2 years agodoxygen: fix keywords leaking into return type
Mark Gillard [Sat, 30 Apr 2022 09:15:13 +0000 (12:15 +0300)]
doxygen: fix keywords leaking into return type

- fixes #225
- fixes #226

Also drive-by added support for C++20's `consteval` keyword.

2 years agoFix documentation typos
luz paz [Sun, 17 Apr 2022 20:04:39 +0000 (16:04 -0400)]
Fix documentation typos

2 years agoUpdated CREDITS.rst.
Vladimír Vondruš [Fri, 13 May 2022 11:13:48 +0000 (13:13 +0200)]
Updated CREDITS.rst.

3 years agodocumentation: Use https links instead of git links.
Varun Gandhi [Sat, 7 May 2022 05:21:09 +0000 (22:21 -0700)]
documentation: Use https links instead of git links.

GitHub no longer supports git:// links. Trying to
following the clone instructions leads to an error:
>  The unauthenticated git protocol on port 9418 is no longer supported.
> Please see https://github.blog/2021-09-01-improving-git-protocol-security-github/ for more information.

3 years agodocumentation/doxygen: don't omit functions w/o brief from file docs.
Vladimír Vondruš [Fri, 1 Apr 2022 10:52:39 +0000 (12:52 +0200)]
documentation/doxygen: don't omit functions w/o brief from file docs.

Before, functions that contained for example /** \overload */ were
omitted from file docs, leading to user confusion.

And document the behavior more thoroughly -- took me a while to realize
this condition was really responsible for this.

3 years agodocumentation: it's Doxyfile.xml I shall ignore, not Doxyfile.html.
Vladimír Vondruš [Fri, 1 Apr 2022 10:07:39 +0000 (12:07 +0200)]
documentation: it's Doxyfile.xml I shall ignore, not Doxyfile.html.

Made an error in 45911a18 and apparently it was fine because it silently
returned in some later check.

3 years agoJabber? What's that?
Vladimír Vondruš [Sun, 30 Jan 2022 22:30:18 +0000 (23:30 +0100)]
Jabber? What's that?

3 years agoUpdated CREDITS.rst.
Vladimír Vondruš [Sun, 30 Jan 2022 22:27:34 +0000 (23:27 +0100)]
Updated CREDITS.rst.

3 years agoFix various typos
luz paz [Sun, 30 Jan 2022 13:42:29 +0000 (08:42 -0500)]
Fix various typos

Found via `codespell -q 3 -L nd,te`

Co-authored-by: Vladimír Vondruš <mosra@centrum.cz>
3 years agodocumentation/doxygen: don't trip up on WEIRD macros parsed as functions.
Vladimír Vondruš [Fri, 14 Jan 2022 11:19:35 +0000 (12:19 +0100)]
documentation/doxygen: don't trip up on WEIRD macros parsed as functions.

3 years agodocumentation/doxygen: the xrefim order change was just "temporary".
Vladimír Vondruš [Mon, 10 Jan 2022 20:25:10 +0000 (21:25 +0100)]
documentation/doxygen: the xrefim order change was just "temporary".

Followup to 4ec09a2c97f60c2c673de337d7dabdc198592f4a. A temporary
regression from 1.8.18 to 1.8.20, 1.9.0 is back to what 1.8.17 had. Heh.
Heh.

3 years agodocumentation/doxygen: silly block-separating workaround for Doxygen 1.9.
Vladimír Vondruš [Mon, 10 Jan 2022 19:49:38 +0000 (20:49 +0100)]
documentation/doxygen: silly block-separating workaround for Doxygen 1.9.

Now the new test_contents.Blockquote test passes fully.

3 years agodocumentation/doxygen: drop STUPID &zwj; in <blockquote>.
Vladimír Vondruš [Mon, 10 Jan 2022 19:30:00 +0000 (20:30 +0100)]
documentation/doxygen: drop STUPID &zwj; in <blockquote>.

What the hell, such a pile of unnecessary work. FFS.

3 years agodocumentation/doxygen: fix Doxygen 1.9 code-after-blockquote bugs.
Vladimír Vondruš [Mon, 10 Jan 2022 19:02:37 +0000 (20:02 +0100)]
documentation/doxygen: fix Doxygen 1.9 code-after-blockquote bugs.

Before it was wrapped in a dedicated paragraph, now it's not anymore.
Thus, if a <programlisting> is right after a <blockquote> and there's
nothing else after it until the end of <para>, it should be treated as a
code block again.

3 years agodocumentation/doxygen: dedicated test for Doxygen 1.9 blockquote bugs.
Vladimír Vondruš [Mon, 10 Jan 2022 18:56:36 +0000 (19:56 +0100)]
documentation/doxygen: dedicated test for Doxygen 1.9 blockquote bugs.

And removing the problematic interaction from the general typography
test -- it's now here instead.

3 years agodocumentation/doxygen: adapt to different \dotfile handling in 1.9.3.
Vladimír Vondruš [Mon, 10 Jan 2022 17:40:58 +0000 (18:40 +0100)]
documentation/doxygen: adapt to different \dotfile handling in 1.9.3.

3 years agodocumentation/doxygen: don't add a space between <p> and <code>.
Vladimír Vondruš [Mon, 10 Jan 2022 19:48:28 +0000 (20:48 +0100)]
documentation/doxygen: don't add a space between <p> and <code>.

Seems obvious in retrospect, but for some reason I never realized.

3 years agodocumentation/doxygen: fix another void \return docs warning with 1.9.
Vladimír Vondruš [Mon, 10 Jan 2022 16:47:47 +0000 (17:47 +0100)]
documentation/doxygen: fix another void \return docs warning with 1.9.

Followup to 568edda0b4c2f4ff53652a28aa27a89cb54c2aac.

3 years agoUpdated CREDITS.md.
Vladimír Vondruš [Mon, 10 Jan 2022 12:33:02 +0000 (13:33 +0100)]
Updated CREDITS.md.

3 years agolatex2svgextra: adapt to minor changes in dvisvgm 2.12 preamble.
Carlos Brito [Fri, 3 Dec 2021 10:19:48 +0000 (11:19 +0100)]
latex2svgextra: adapt to minor changes in dvisvgm 2.12 preamble.

And add an actually useful assert message.

Co-authored-by: Vladimír Vondruš <mosra@centrum.cz>
3 years agodocumentation/doxygen: add a clarifying note to the test Doxyfile.
Vladimír Vondruš [Mon, 10 Jan 2022 12:04:07 +0000 (13:04 +0100)]
documentation/doxygen: add a clarifying note to the test Doxyfile.

3 years agodocumentation/doxygen: repro case & fix for a blockquote in brief.
Vladimír Vondruš [Mon, 10 Jan 2022 12:02:47 +0000 (13:02 +0100)]
documentation/doxygen: repro case & fix for a blockquote in brief.

Amazing. Such a *tiny* piece of functionality with a clear goal,
providing a single-line brief with no block elements. And yet this is
like the 50th bug I came across, so far.

3 years agoRevert "documentation/doxygen: drop handling for a Doxygen 1.8.15 bug."
Vladimír Vondruš [Mon, 10 Jan 2022 11:39:14 +0000 (12:39 +0100)]
Revert "documentation/doxygen: drop handling for a Doxygen 1.8.15 bug."

Turns out it's not really A Thing Of The Past yet -- the assertion is
firing for different cases and the message of it is utterly confusing.
Repro case for the others in the following commit.

This reverts commit 6bea7027cb2674e4c5f78a527ddab506d9785675.

3 years agodocumentation/doxygen: fix a friend class being parsed as a function.
Cris Luengo [Wed, 6 Jan 2021 17:22:12 +0000 (10:22 -0700)]
documentation/doxygen: fix a friend class being parsed as a function.

Doxygen 1.9 no longer contains a "friend" prefix in the <type>, causing
some conditions to trip up and some asserts to trip up even worse after
that.

Co-authored-by: Vladimír Vondruš <mosra@centrum.cz>
3 years agodocumentation/doxygen: silence a warning.
Vladimír Vondruš [Sun, 9 Jan 2022 22:46:57 +0000 (23:46 +0100)]
documentation/doxygen: silence a warning.

Hopefully this wasn't omitted there for some testing purpose.

3 years agodocumentation/doxygen: ah so that's why the warning is uncovered.
Vladimír Vondruš [Sun, 9 Jan 2022 22:45:36 +0000 (23:45 +0100)]
documentation/doxygen: ah so that's why the warning is uncovered.

Because 1.8.16+ just directly drops the whole <dotfile> tag if the
source doesn't exist. What a marvellous idea!!!

3 years agodocumentation/doxygen: fix Doxygen warning.
Vladimír Vondruš [Sun, 9 Jan 2022 20:40:40 +0000 (21:40 +0100)]
documentation/doxygen: fix Doxygen warning.

Funnily enough this doesn't make the multiline brief bug go away. So
what's even the point of checking those, Doxygen?!

3 years agodocumentation/doxygen: explicitly check for warning logs.
Vladimír Vondruš [Sun, 9 Jan 2022 18:32:30 +0000 (19:32 +0100)]
documentation/doxygen: explicitly check for warning logs.

The output was quite a mess already, and that's just because I didn't
know about assertLogs() until now.

3 years agodocumentation/doxygen: Doxygen 1.9.3 warns about \return for void.
Vladimír Vondruš [Sun, 9 Jan 2022 18:25:46 +0000 (19:25 +0100)]
documentation/doxygen: Doxygen 1.9.3 warns about \return for void.

And quite intensely. Don't do that, then.

3 years agodocumentation/doxygen: since 1.9.2, HAVE_DOT has to be explicitly set.
Vladimír Vondruš [Sun, 9 Jan 2022 18:14:14 +0000 (19:14 +0100)]
documentation/doxygen: since 1.9.2, HAVE_DOT has to be explicitly set.

Kinda silly to require that even for the XML output, where Graphviz
doesn't actually need to be used at all -- the content/files are pasted
verbatim.

3 years agodocumentation/doxygen: robustly skip unexpected XML files.
Vladimír Vondruš [Sun, 9 Jan 2022 18:01:59 +0000 (19:01 +0100)]
documentation/doxygen: robustly skip unexpected XML files.

This skips the Doxyfile.xml from 1.8.19 (without a warning, to avoid
polluting the output for everyone running newer Doxygen), and
additionally also all other files that don't have the expected root or
immediately following tags (with a warning, because that's likely
something to act on).

These checks used to be inconsistent between extract_metadata() and
parse_xml() (resulting extract_metadata() to continuing further and
dying on some other exception, sigh) and also was an assert instead of a
graceful handling.

A new test case is added to verify that all expected messages are
printed, all unexpected files are skipped but also the expected files
are not skipped. The warnings/errors are also printed just once, not
once during metadata extraction and once during actual page generation.

Co-authored-by: crf8472 <crf8472@web.de>
Co-authored-by: SRGDamia1 <sdamiano@stroudcenter.org>
3 years agodocumentation/doxygen: adapt test output for silly 1.8.18 differences.
Vladimír Vondruš [Sun, 9 Jan 2022 21:43:13 +0000 (22:43 +0100)]
documentation/doxygen: adapt test output for silly 1.8.18 differences.

Is this a random order? FFS.

3 years agodocumentation/doxygen: all strikethroughs are supported only in 1.8.17.
Vladimír Vondruš [Sun, 9 Jan 2022 21:20:06 +0000 (22:20 +0100)]
documentation/doxygen: all strikethroughs are supported only in 1.8.17.

3 years agodocumentation/doxygen: don't set a config value twice in the test.
Vladimír Vondruš [Sun, 9 Jan 2022 21:19:38 +0000 (22:19 +0100)]
documentation/doxygen: don't set a config value twice in the test.

3 years agodocumentation/doxygen: 1.8.16 doesn't support subpages of index.
Vladimír Vondruš [Sun, 9 Jan 2022 21:18:27 +0000 (22:18 +0100)]
documentation/doxygen: 1.8.16 doesn't support subpages of index.

These just aren't marked as such. So skip the direct test and rewrite
the other to not accidentally use this functionality.

3 years agopackage/ci: test against Doxygen 1.8.16 and 1.8.18 as well.
Vladimír Vondruš [Sun, 9 Jan 2022 20:45:46 +0000 (21:45 +0100)]
package/ci: test against Doxygen 1.8.16 and 1.8.18 as well.

Preparing for the final boss which is 1.9, but!

 * 1.8.13 downloads and runs fine, but there's way too many test
   failures and I'm not ready for these. Probably will just drop the
   support eventually.
 * 1.8.14 to 1.8.15 links to libclang.so.6, which is not a thing on
   Ubuntu 18.14. I suppose this is because SOMEBODY built the damn
   release binary on their own PC, instead of in an old enough sandboxed
   environment, HA?!
 * 1.8.16 and 1.8.17 work, just a bunch of fixes needed to make test
   pass on .16.
 * 1.8.18 works, except it relies on some silly libtinfo.so.5 that I had
   to install.

3 years agoUpdate copyright year.
Vladimír Vondruš [Sun, 9 Jan 2022 16:23:16 +0000 (17:23 +0100)]
Update copyright year.

Pro Tip: if you update only once every two years, you save 50% of the
work! 50%!!!!

3 years agodocumentation: expose search data packing options.
Vladimír Vondruš [Sun, 9 Jan 2022 15:52:26 +0000 (16:52 +0100)]
documentation: expose search data packing options.

There are new SEARCH_RESULT_ID_BYTES, SEARCH_FILE_OFFSET_BYTES and
SEARCH_NAME_SIZE_BYTES options exposed in both Doxygen and Python doc
generator. Because they affect some internals that the regular user
shouldn't need to care about and don't reflect anything tangible like
project symbol count, they're not really documented.

On the other hand, they can't really be estimated beforehand The
estimator would either overestimate, leading to files larger than they
could be, or it underestimates, leading to random corner cases that
would be impossible to track down. Thus the project just starts with the
small sizes and if they're not enough, an exception with a (hopefully
helpful-enough) message is raised, suggesting users to adjust their
config.

3 years agodocumentation: parametrize the search binary data type sizes.
Vladimír Vondruš [Sat, 8 Jan 2022 19:49:26 +0000 (20:49 +0100)]
documentation: parametrize the search binary data type sizes.

Needed in order to support more than 65k symbols or files larger than 16
MB. What I thought was "more than enough" during the initial design was
quickly stepped over by various projects, including my own Magnum Python
bindings.

To avoid having to either maintain two separate formats and two separate
en/decoders or needlessly inflate the format for everyone, certain data
types are parametrized based on how large the data is:

 * RESULT_ID_BYTES describes how many bytes is needed to store result
   IDs. By default it's 2 (so 65536 results) but can be also 3 (16M
   results) or 4.
 * FILE_OFFSET_BYTES describes how many bytes is needed to store file
   offsets. By default it's 3 (so 16 MB), but can be also 4.
 * NAME_SIZE_BYTES describes how many bytes is needed to store various
   name lengths (prefix, suffix lengths etc). By default it's 1 (so 256
   bytes at most), but can be also 2.

At first I tried to preserve 32-bit alignment as much as possible, but
eventually realized this is completely unimportant in the browser
environment -- there's other much worse performance pitfalls than
reading an unaligned value. This is also why there are 24-bit integer
types, even though they're quite annoying to pack from Python.

Furthermore, the original hack to reserve 11 bits for result count at
the cost of having only 4 bits for child count was changed to instead
expand the result count to a 15-bit value if there's > 127 results. Some
endianness tricks involved, but much cleaner than before. I briefly
considered having a global RESULT_COUNT_BYTES parameter as well, but
considering >90% of result counts fit into 8 bits and this is only for
weird outliers like Python __init__(), it would be a giant waste of
precious bytes.

The minor differences in the test file sizes are due to:

 * The header expanding symbol count from 16 to 32 bits (+2B)
 * The header containing type description and associated padding (+4B)
 * The result map no longer packing flags and offsets together, thus
   saving one byte from flags (-1B)

To ensure there's no hardcoded type size assumptions anymore, the tests
now go through all type size combinations.

3 years agom.htmlsanity: fix an exception raised for .. contents:: with a title.
Vladimír Vondruš [Sun, 9 Jan 2022 11:50:50 +0000 (12:50 +0100)]
m.htmlsanity: fix an exception raised for .. contents:: with a title.

I have a hunch I was looking at this corner case, but of course forgot
to actually try it out. Extending the test to prevent this from
regressing again in the future.

3 years agodocumentation: doc++
Vladimír Vondruš [Sat, 8 Jan 2022 21:34:11 +0000 (22:34 +0100)]
documentation: doc++

3 years agodocumentation: properly calculate child offset for 11bit result counts.
Vladimír Vondruš [Sat, 8 Jan 2022 20:51:24 +0000 (21:51 +0100)]
documentation: properly calculate child offset for 11bit result counts.

Instead of fetching the exact same value twice and then forgetting to
patch it in one case, let's just reuse the patched value.

Hmmmm, this was a bug! And no tests caught it! Though, it was rather
unlikely to be hit in practice as the 100+th result would be cut away,
thus not even giving the user a hint to type futther.

3 years agodocumentation: trie pretty printing didn't handle the 11bit special case.
Vladimír Vondruš [Sat, 8 Jan 2022 18:20:29 +0000 (19:20 +0100)]
documentation: trie pretty printing didn't handle the 11bit special case.

Better to have it tested directly, and not only through the JS
decoder part.