mlc-doxygen-bin
mlc-doxygen-bin builds platform wheels containing the Doxygen command-line
executable. It is intended for Python-driven build systems that want a pinned
Doxygen binary without relying on a system package manager. The pinned Doxygen
release is recorded in version.py and exposed at runtime as
mlc_doxygen_bin.DOXYGEN_VERSION.
The wheel installs a doxygen console script that delegates to the executable
stored inside the Python package.
Build Wheels
On macOS:
scripts/wheel_macos.sh
On manylinux_2_28:
scripts/wheel_manylinux_2_28.sh
On Windows:
scripts\wheel_windows.ps1
The scripts run cibuildwheel==3.3.1 through uv. The package is built with
scikit-build-core: building a wheel runs scripts/prepare_doxygen.py, which
downloads the pinned upstream source archive, verifies its SHA-256 digest,
builds the CLI executable, and stages it into the wheel. Wheels are tagged
py3-none-<platform>; the manylinux script (and CI) retags scikit-build-core's
linux_<arch> tag to manylinux_2_28_<arch>.
Build artifacts are written to wheelhouse/.
Build From Source
Prebuilt wheels are published for common platforms; elsewhere pip builds from
the sdist like any other compiled package. That needs a C++17 compiler, Flex
(>= 2.6, see below) and Bison on PATH (or FLEX_EXECUTABLE /
BISON_EXECUTABLE), Python, and network access to download the pinned Doxygen
source; CMake and Ninja are pulled in as build requirements:
CMAKE_BUILD_PARALLEL_LEVEL=8 python -m pip install --no-binary mlc-doxygen-bin mlc-doxygen-bin
From a checkout, python -m build --wheel builds a wheel for the host.
Set MLC_DOXYGEN_BIN_SOURCE_DIR=/path/to/doxygen to build an existing source
tree instead of downloading the pinned archive.
Platform And Architecture
The Linux and macOS scripts default to the host architecture. Override the target architecture with:
MLC_DOXYGEN_BIN_ARCH=aarch64 scripts/wheel_manylinux_2_28.sh
MLC_DOXYGEN_BIN_ARCH=arm64 scripts/wheel_macos.sh
Supported values are:
- Linux:
x86_64,aarch64 - macOS:
arm64,x86_64 - Windows:
AMD64
Build Dependencies
The build needs CMake, Ninja, Python, Flex, Bison, and a C++ compiler. The
manylinux script installs Bison from the manylinux distribution and builds a
pinned Flex 2.6.4 into /usr/local, because AlmaLinux 8's Flex 2.6.1 can fail
while generating Doxygen's large scanners.
On macOS, use Homebrew Flex and Bison if the Apple-provided versions are too old:
brew install flex bison
The macOS script automatically prepends Homebrew's flex and bison
directories to PATH when Homebrew is available.
On Windows, install Visual Studio Build Tools and winflexbison3.
Windows ARM64 wheels are not published. Doxygen requires iconv and only bundles
prebuilt x86/x64 iconv libraries for Windows, and we do not add a third-party
iconv to the build. To build for Windows ARM64 yourself, supply an ARM64 iconv
with -DICONV_DIR=<prefix> through MLC_DOXYGEN_BIN_EXTRA_CMAKE_ARGS.
Runtime Scope
This package intentionally builds only the Doxygen CLI executable. It does not
bundle doxywizard, doxyindexer, doxysearch.cgi, libclang, Graphviz,
LaTeX, Ghostscript, or PlantUML. Those tools remain external runtime
dependencies for Doxygen features that need them.
License
The packaging code in this directory (build scripts, CMake, and the Python
wrapper) is licensed under the MIT License, which is compatible with GPL-2.0;
see LICENSE. The bundled Doxygen
executable is licensed by its authors under GPL-2.0-only. Its license text is
copied from the SHA-256-verified upstream source archive into the wheel as
mlc_doxygen_bin/licenses/LICENSE-Doxygen.txt, and the build fails if that
file is missing. The wheel metadata declares MIT AND GPL-2.0-only
to cover both.
Usage
python -m pip install mlc-doxygen-bin
doxygen --version
Programmatic path lookup is also available:
import mlc_doxygen_bin
print(mlc_doxygen_bin.get_executable_path())
print(mlc_doxygen_bin.metadata())
Tests
The pytest suite under tests/python/ exercises the installed package. The
tests check the version metadata and run the packaged executable through its
executable path, python -m mlc_doxygen_bin, and the doxygen console script,
including generating HTML for a tiny project. From this directory:
python -m pip install ".[test]" # or: python -m pip install <wheel> pytest
pytest
Run pytest against an installed wheel; the tests import the installed
package, not python/. cibuildwheel runs the same suite on every built wheel.
Bumping the version
version.py is the single version source. To move to a new
Doxygen release, edit only that file:
-
DOXYGEN_VERSION: the upstream release (the Git tag is derived asRelease_<major>_<minor>_<patch>). -
__version__: the Python package version; it must equalDOXYGEN_VERSION, orDOXYGEN_VERSIONplus a PEP 440 suffix such as.post1. -
DOXYGEN_ARCHIVE_SHA256: the SHA-256 of the source archivescripts/prepare_doxygen.pydownloads:curl -fsSL https://github.com/doxygen/doxygen/releases/download/Release_<X_Y_Z>/doxygen-<X.Y.Z>.src.tar.gz | sha256sum
Package metadata, the build scripts, the default build
directory, and the generated runtime module mlc_doxygen_bin/_version.py all
read these values. The publishing workflow's version_suffix input runs
scripts/stamp_version.py --suffix <suffix>, which rewrites __version__ in
the build checkout and rejects versions not based on DOXYGEN_VERSION.
Metadata
Release files for mlc-doxygen-bin 1.18.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| mlc_doxygen_bin-1.18.0.tar.gz | 16.2 kB | With provenance | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| mlc_doxygen_bin-1.18.0-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| mlc_doxygen_bin-1.18.0-py3-none-manylinux_2_28_x86_64.whl | Python 3 | none | Linux glibc 2.28+ x86-64 | Details |
| mlc_doxygen_bin-1.18.0-py3-none-manylinux_2_28_aarch64.whl | Python 3 | none | Linux glibc 2.28+ ARM64 | Details |
| mlc_doxygen_bin-1.18.0-py3-none-macosx_11_0_arm64.whl | Python 3 | none | macOS 11.0+ ARM64 | Details |
| mlc_doxygen_bin-1.18.0-py3-none-macosx_10_9_x86_64.whl | Python 3 | none | macOS 10.9+ x86-64 | Details |
Total release size: 40.2 MB
Release files / mlc_doxygen_bin-1.18.0.tar.gz
| Download URL | mlc_doxygen_bin-1.18.0.tar.gz |
|---|---|
| Size | 16.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3057cbd30f02d1825bfcbf6dda6a6d5d94f5573ec64d3d2d376345d62b724e18
|
|
BLAKE2b-256 checksum How to use checksums |
faa52b2a2db393308f7d554b5bcf0ff3e5e3be97b3da27f3fd0048e022aa7a9a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logRelease files / mlc_doxygen_bin-1.18.0-py3-none-win_amd64.whl
| Download URL | mlc_doxygen_bin-1.18.0-py3-none-win_amd64.whl |
|---|---|
| Size | 7.8 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
28521554e52018ab9431ba67557ef00709b75ba13b2ea0d0742002518c4bf577
|
|
BLAKE2b-256 checksum How to use checksums |
abb85175723dae3c82779be670b20d6fa31f80e4e205ae2d691eaa41960ef916
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logRelease files / mlc_doxygen_bin-1.18.0-py3-none-manylinux_2_28_x86_64.whl
| Download URL | mlc_doxygen_bin-1.18.0-py3-none-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 8.4 MB |
| Tags | Linux glibc 2.28+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
b5888e88fe0fc5ab49d8f8b569ff517ca381fd370635fe321c702fd044aa2224
|
|
BLAKE2b-256 checksum How to use checksums |
7dfb4cde036f4fbf7441da1f6208fcb55d2303ff50cbb47f155d45c0ff24b2c4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logRelease files / mlc_doxygen_bin-1.18.0-py3-none-manylinux_2_28_aarch64.whl
| Download URL | mlc_doxygen_bin-1.18.0-py3-none-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 7.9 MB |
| Tags | Linux glibc 2.28+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
2e4a9b90063cccf713fbba5052e3ed629014e3550945e4a2d6cff9bae92c5c8b
|
|
BLAKE2b-256 checksum How to use checksums |
eaf9c773869bcc2fc6e56533f0f872c16169a7820b153ba805a34b48f79363a5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logRelease files / mlc_doxygen_bin-1.18.0-py3-none-macosx_11_0_arm64.whl
| Download URL | mlc_doxygen_bin-1.18.0-py3-none-macosx_11_0_arm64.whl |
|---|---|
| Size | 7.9 MB |
| Tags | Python 3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
83432eac6f56c3780f4eb2f31fc3682b85f2ee7537756a5fe867f99564b755a9
|
|
BLAKE2b-256 checksum How to use checksums |
f82205542c0d10f0495b445827fddbef4453aaa91722f118afa7d116f9e28d00
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logRelease files / mlc_doxygen_bin-1.18.0-py3-none-macosx_10_9_x86_64.whl
| Download URL | mlc_doxygen_bin-1.18.0-py3-none-macosx_10_9_x86_64.whl |
|---|---|
| Size | 8.2 MB |
| Tags | Python 3 macOS 10.9+ x86-64 |
|
SHA-256 checksum How to use checksums |
5b467c8db53b404f4b1d18e1fcfca8d1ed578a594579deee0d0656c00f1ce7b7
|
|
BLAKE2b-256 checksum How to use checksums |
07da8456177db10941e3f189b3565d1aa03376361ca2889a88c3eaf9011b9f6d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logSecurity for mlc-doxygen-bin 1.18.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 6 files in this release have been uploaded with provenance metadata.
Attestation for mlc_doxygen_bin-1.18.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.