| Message ID | 20251205-build-docs-container-tlmgr-v1-3-de30623e664d@bootlin.com |
|---|---|
| State | Superseded |
| Headers | show |
| Series | Add missing CentOS Stream / RockyLinux distros to the system-requirements.rst doc | expand |
Hi Antonin, On 12/5/25 3:51 PM, Antonin Godard via lists.yoctoproject.org wrote: [...] > diff --git a/documentation/tools/build-docs-container b/documentation/tools/build-docs-container > index 7d25b15b9..d753e2153 100755 > --- a/documentation/tools/build-docs-container > +++ b/documentation/tools/build-docs-container > @@ -41,6 +41,7 @@ $0 OCI_IMAGE [make arguments...] > - fedora:42 > - leap:15.5 > - leap:15.6 > + - tgagor/centos:stream9 quay.io/centos/centos:stream9 is probably better? We would need to remove the docker.io prefix from the ARG_FROM and make it configurable but that should be easy to do. [...] > diff --git a/documentation/tools/containerfiles/entrypoint b/documentation/tools/containerfiles/entrypoint > new file mode 100644 > index 000000000..97ee93c29 > --- /dev/null > +++ b/documentation/tools/containerfiles/entrypoint > @@ -0,0 +1,6 @@ > +#!/usr/bin/env sh > + > +tldir=/opt/docs-build-tex-tools/tl/bin/x86_64-linux > +[ -d $tldir ] && export PATH="$PATH:$tldir" > + > +make -C documentation/ "$@" Doesn't ENV PATH="$PATH:$TEXTOOLDIR/tl/bin/x86_64-linux" in Containerfile.stream work just fine instead of having to go through an ENTRYPOINT? This also makes the instructions x86_64-only. I have no clue if one can run the current instructions on Aarch64 and make it work, but this for sure won't help. > diff --git a/documentation/tools/host_packages_scripts/centosstream_docs.sh b/documentation/tools/host_packages_scripts/centosstream_docs.sh > new file mode 100644 > index 000000000..9202afc5b > --- /dev/null > +++ b/documentation/tools/host_packages_scripts/centosstream_docs.sh > @@ -0,0 +1 @@ > +sudo dnf install -y git glibc-locale-source librsvg2-tools make python3-pip which > diff --git a/documentation/tools/host_packages_scripts/centosstream_essential.sh b/documentation/tools/host_packages_scripts/centosstream_essential.sh > new file mode 100644 > index 000000000..e38fa93c2 > --- /dev/null > +++ b/documentation/tools/host_packages_scripts/centosstream_essential.sh > @@ -0,0 +1,5 @@ > +sudo dnf install -y epel-release > +sudo yum install -y dnf-plugins-core > +sudo dnf config-manager --set-enabled crb > +sudo dnf makecache > +sudo dnf install -y bzip2 ccache chrpath cpio cpp diffstat diffutils gawk gcc gcc-c++ git glibc-devel glibc-langpack-en gzip libacl make patch perl perl-Data-Dumper perl-Text-ParseWords perl-Thread-Queue python3 python3-GitPython python3-jinja2 python3-pexpect python3-pip rpcgen socat tar texinfo unzip wget which xz zstd > diff --git a/documentation/tools/host_packages_scripts/tlmgr_docs_pdf.sh b/documentation/tools/host_packages_scripts/tlmgr_docs_pdf.sh > new file mode 100644 > index 000000000..f3b81da3e > --- /dev/null > +++ b/documentation/tools/host_packages_scripts/tlmgr_docs_pdf.sh > @@ -0,0 +1,7 @@ > +textooldir=${TEXTOOLDIR:-"./docs-build-tex-tools"} > +mkdir -p "$textooldir"/tl > +wget https://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz -O "$textooldir"/install-tl-unx.tar.gz > +zcat < "$textooldir"/install-tl-unx.tar.gz | tar xf - -C "$textooldir" Can't this simply be tar xzf "$textooldir"/install-tl-unx.tar.gz -C "$textooldir" ? Cheers, Quentin
Hi, On Fri Dec 5, 2025 at 4:29 PM CET, Quentin Schulz wrote: > Hi Antonin, > > On 12/5/25 3:51 PM, Antonin Godard via lists.yoctoproject.org wrote: > > [...] > >> diff --git a/documentation/tools/build-docs-container b/documentation/tools/build-docs-container >> index 7d25b15b9..d753e2153 100755 >> --- a/documentation/tools/build-docs-container >> +++ b/documentation/tools/build-docs-container >> @@ -41,6 +41,7 @@ $0 OCI_IMAGE [make arguments...] >> - fedora:42 >> - leap:15.5 >> - leap:15.6 >> + - tgagor/centos:stream9 > > quay.io/centos/centos:stream9 is probably better? > > We would need to remove the docker.io prefix from the ARG_FROM and make > it configurable but that should be easy to do. Indeed, I'll do that thanks. >> diff --git a/documentation/tools/containerfiles/entrypoint b/documentation/tools/containerfiles/entrypoint >> new file mode 100644 >> index 000000000..97ee93c29 >> --- /dev/null >> +++ b/documentation/tools/containerfiles/entrypoint >> @@ -0,0 +1,6 @@ >> +#!/usr/bin/env sh >> + >> +tldir=/opt/docs-build-tex-tools/tl/bin/x86_64-linux >> +[ -d $tldir ] && export PATH="$PATH:$tldir" >> + >> +make -C documentation/ "$@" > > Doesn't > > ENV PATH="$PATH:$TEXTOOLDIR/tl/bin/x86_64-linux" > > in Containerfile.stream work just fine instead of having to go through > an ENTRYPOINT? Works nicely! That will allow some simplifications, thanks. > This also makes the instructions x86_64-only. I have no clue if one can > run the current instructions on Aarch64 and make it work, but this for > sure won't help. Yeah correct, well I will add a warning for that, as I don't think I'll have the time to add support for other archs or if even possible with this installer. >> diff --git a/documentation/tools/host_packages_scripts/centosstream_docs.sh b/documentation/tools/host_packages_scripts/centosstream_docs.sh >> new file mode 100644 >> index 000000000..9202afc5b >> --- /dev/null >> +++ b/documentation/tools/host_packages_scripts/centosstream_docs.sh >> @@ -0,0 +1 @@ >> +sudo dnf install -y git glibc-locale-source librsvg2-tools make python3-pip which >> diff --git a/documentation/tools/host_packages_scripts/centosstream_essential.sh b/documentation/tools/host_packages_scripts/centosstream_essential.sh >> new file mode 100644 >> index 000000000..e38fa93c2 >> --- /dev/null >> +++ b/documentation/tools/host_packages_scripts/centosstream_essential.sh >> @@ -0,0 +1,5 @@ >> +sudo dnf install -y epel-release >> +sudo yum install -y dnf-plugins-core >> +sudo dnf config-manager --set-enabled crb >> +sudo dnf makecache >> +sudo dnf install -y bzip2 ccache chrpath cpio cpp diffstat diffutils gawk gcc gcc-c++ git glibc-devel glibc-langpack-en gzip libacl make patch perl perl-Data-Dumper perl-Text-ParseWords perl-Thread-Queue python3 python3-GitPython python3-jinja2 python3-pexpect python3-pip rpcgen socat tar texinfo unzip wget which xz zstd >> diff --git a/documentation/tools/host_packages_scripts/tlmgr_docs_pdf.sh b/documentation/tools/host_packages_scripts/tlmgr_docs_pdf.sh >> new file mode 100644 >> index 000000000..f3b81da3e >> --- /dev/null >> +++ b/documentation/tools/host_packages_scripts/tlmgr_docs_pdf.sh >> @@ -0,0 +1,7 @@ >> +textooldir=${TEXTOOLDIR:-"./docs-build-tex-tools"} >> +mkdir -p "$textooldir"/tl >> +wget https://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz -O "$textooldir"/install-tl-unx.tar.gz >> +zcat < "$textooldir"/install-tl-unx.tar.gz | tar xf - -C "$textooldir" > > Can't this simply be > > tar xzf "$textooldir"/install-tl-unx.tar.gz -C "$textooldir" It can! Thanks. Antonin
diff --git a/documentation/ref-manual/system-requirements.rst b/documentation/ref-manual/system-requirements.rst index 9ed29a1df..02b6a0cb9 100644 --- a/documentation/ref-manual/system-requirements.rst +++ b/documentation/ref-manual/system-requirements.rst @@ -266,6 +266,37 @@ documentation in PDF format: .. literalinclude:: ../tools/host_packages_scripts/almalinux_docs_pdf.sh :language: shell +CentOS Stream Packages +---------------------- + +Here are the packages needed to build an image on a headless system +with a supported CentOS Stream distribution: + +.. literalinclude:: ../tools/host_packages_scripts/centosstream_essential.sh + :language: shell + +Here are the packages needed to build Project documentation manuals: + +.. literalinclude:: ../tools/host_packages_scripts/centosstream_docs.sh + :language: shell + +.. literalinclude:: ../tools/host_packages_scripts/pip3_docs.sh + :language: shell + +In addition to the previous packages, the following TeX Live packages +are needed to build the documentation in PDF format and can be installed with +the `TeX Live package manager <https://tug.org/texlive/tlmgr.html>`__: + +.. literalinclude:: ../tools/host_packages_scripts/tlmgr_docs_pdf.sh + :language: shell + +Before building the documentation PDF, setup the ``PATH`` to use the installed +packages: + +.. code-block:: console + + $ export PATH="${PATH}:${textooldir}/tl/bin/x86_64-linux" + .. _system-requirements-buildtools: Required Git, tar, Python, make and gcc Versions diff --git a/documentation/tools/build-docs-container b/documentation/tools/build-docs-container index 7d25b15b9..d753e2153 100755 --- a/documentation/tools/build-docs-container +++ b/documentation/tools/build-docs-container @@ -41,6 +41,7 @@ $0 OCI_IMAGE [make arguments...] - fedora:42 - leap:15.5 - leap:15.6 + - tgagor/centos:stream9 - ubuntu:22.04 - ubuntu:24.04 - ubuntu:25.04 @@ -119,6 +120,13 @@ main () docs_pdf=opensuse_docs_pdf.sh pip3=pip3_docs.sh ;; + "tgagor/centos:stream9"*) + containerfile=Containerfile.stream + essential=centosstream_essential.sh + docs=centosstream_docs.sh + docs_pdf=tlmgr_docs_pdf.sh + pip3=pip3_docs.sh + ;; "ubuntu:22.04"*|\ "ubuntu:24.04"*|\ "ubuntu:25.04"*|\ @@ -143,6 +151,7 @@ main () --build-arg DOCS="host_packages_scripts/$docs" \ --build-arg DOCS_PDF="host_packages_scripts/$docs_pdf" \ --build-arg PIP3="host_packages_scripts/${pip3:-}" \ + --build-arg ENTRY="containerfiles/entrypoint" \ --file "$SCRIPT_DIR/containerfiles/$containerfile" \ "$SCRIPT_DIR" diff --git a/documentation/tools/containerfiles/Containerfile.apt b/documentation/tools/containerfiles/Containerfile.apt index a573786f0..c3e1660a6 100644 --- a/documentation/tools/containerfiles/Containerfile.apt +++ b/documentation/tools/containerfiles/Containerfile.apt @@ -5,6 +5,7 @@ ARG INCLUDE_ESSENTIAL_PACKAGES=0 ARG ESSENTIAL=ubuntu_essential.sh ARG DOCS=ubuntu_docs.sh ARG DOCS_PDF=ubuntu_docs_pdf.sh +ARG ENTRY=entrypoint ENV DEBIAN_FRONTEND=noninteractive ARG TZ=Europe/Vienna @@ -26,5 +27,7 @@ RUN ln -fs "/usr/share/zoneinfo/$TZ" /etc/localtime \ RUN git config --global --add safe.directory /docs -ENTRYPOINT ["/usr/bin/env", "make", "-C", "documentation/"] +COPY --chmod=777 $ENTRY /entrypoint + +ENTRYPOINT ["/entrypoint"] CMD ["publish"] diff --git a/documentation/tools/containerfiles/Containerfile.dnf b/documentation/tools/containerfiles/Containerfile.dnf index 65c526705..d00bb5adc 100644 --- a/documentation/tools/containerfiles/Containerfile.dnf +++ b/documentation/tools/containerfiles/Containerfile.dnf @@ -6,6 +6,7 @@ ARG ESSENTIAL=fedora_essential.sh ARG DOCS=fedora_docs.sh ARG DOCS_PDF=fedora_docs_pdf.sh ARG PIP3=pip3_docs.sh +ARG ENTRY=entrypoint # relative to the location of the dockerfile COPY --chmod=777 ${ESSENTIAL} /temp/host_packages_essential.sh @@ -25,5 +26,7 @@ RUN dnf update -y \ RUN git config --global --add safe.directory /docs -ENTRYPOINT ["/usr/bin/env", "make", "-C", "documentation/"] +COPY --chmod=777 $ENTRY /entrypoint + +ENTRYPOINT ["/entrypoint"] CMD ["publish"] diff --git a/documentation/tools/containerfiles/Containerfile.stream b/documentation/tools/containerfiles/Containerfile.stream new file mode 100644 index 000000000..5968f94ba --- /dev/null +++ b/documentation/tools/containerfiles/Containerfile.stream @@ -0,0 +1,34 @@ +ARG ARG_FROM=fedora:40 # default value to avoid warning +FROM $ARG_FROM + +ARG INCLUDE_ESSENTIAL_PACKAGES=0 +ARG ESSENTIAL=fedora_essential.sh +ARG DOCS=fedora_docs.sh +ARG DOCS_PDF=fedora_docs_pdf.sh +ARG PIP3=pip3_docs.sh +ARG ENTRY=entrypoint + +ENV TEXTOOLDIR=/opt/docs-build-tex-tools + +# relative to the location of the dockerfile +COPY --chmod=777 ${ESSENTIAL} /temp/host_packages_essential.sh +COPY --chmod=777 ${DOCS} /temp/host_packages_docs.sh +COPY --chmod=777 ${DOCS_PDF} /temp/host_packages_docs_pdf.sh +COPY --chmod=777 ${PIP3} /temp/pip3_docs.sh + +RUN dnf update -y \ + && dnf install -y sudo \ + && if [ "$INCLUDE_ESSENTIAL_PACKAGES" = "1" ]; then yes | /temp/host_packages_essential.sh; fi \ + && yes | /temp/host_packages_docs.sh \ + && yes | /temp/host_packages_docs_pdf.sh \ + && yes | /temp/pip3_docs.sh \ + && dnf autoremove -y \ + && dnf clean all -y \ + && rm -rf /temp + +RUN git config --global --add safe.directory /docs + +COPY --chmod=777 $ENTRY /entrypoint + +ENTRYPOINT ["/entrypoint"] +CMD ["publish"] diff --git a/documentation/tools/containerfiles/Containerfile.zypper b/documentation/tools/containerfiles/Containerfile.zypper index 3850b9ff9..d7302ef6f 100644 --- a/documentation/tools/containerfiles/Containerfile.zypper +++ b/documentation/tools/containerfiles/Containerfile.zypper @@ -6,6 +6,7 @@ ARG ESSENTIAL=opensuse_essential.sh ARG DOCS=opensuse_docs.sh ARG DOCS_PDF=opensuse_docs_pdf.sh ARG PIP3=pip3_docs.sh +ARG ENTRY=entrypoint # relative to the location of the dockerfile COPY --chmod=777 ${ESSENTIAL} /temp/host_packages_essential.sh @@ -32,5 +33,7 @@ RUN zypper update -y \ RUN git config --global --add safe.directory /docs -ENTRYPOINT ["/usr/bin/env", "make", "-C", "documentation/"] +COPY --chmod=777 $ENTRY /entrypoint + +ENTRYPOINT ["/entrypoint"] CMD ["publish"] diff --git a/documentation/tools/containerfiles/entrypoint b/documentation/tools/containerfiles/entrypoint new file mode 100644 index 000000000..97ee93c29 --- /dev/null +++ b/documentation/tools/containerfiles/entrypoint @@ -0,0 +1,6 @@ +#!/usr/bin/env sh + +tldir=/opt/docs-build-tex-tools/tl/bin/x86_64-linux +[ -d $tldir ] && export PATH="$PATH:$tldir" + +make -C documentation/ "$@" diff --git a/documentation/tools/host_packages_scripts/centosstream_docs.sh b/documentation/tools/host_packages_scripts/centosstream_docs.sh new file mode 100644 index 000000000..9202afc5b --- /dev/null +++ b/documentation/tools/host_packages_scripts/centosstream_docs.sh @@ -0,0 +1 @@ +sudo dnf install -y git glibc-locale-source librsvg2-tools make python3-pip which diff --git a/documentation/tools/host_packages_scripts/centosstream_essential.sh b/documentation/tools/host_packages_scripts/centosstream_essential.sh new file mode 100644 index 000000000..e38fa93c2 --- /dev/null +++ b/documentation/tools/host_packages_scripts/centosstream_essential.sh @@ -0,0 +1,5 @@ +sudo dnf install -y epel-release +sudo yum install -y dnf-plugins-core +sudo dnf config-manager --set-enabled crb +sudo dnf makecache +sudo dnf install -y bzip2 ccache chrpath cpio cpp diffstat diffutils gawk gcc gcc-c++ git glibc-devel glibc-langpack-en gzip libacl make patch perl perl-Data-Dumper perl-Text-ParseWords perl-Thread-Queue python3 python3-GitPython python3-jinja2 python3-pexpect python3-pip rpcgen socat tar texinfo unzip wget which xz zstd diff --git a/documentation/tools/host_packages_scripts/tlmgr_docs_pdf.sh b/documentation/tools/host_packages_scripts/tlmgr_docs_pdf.sh new file mode 100644 index 000000000..f3b81da3e --- /dev/null +++ b/documentation/tools/host_packages_scripts/tlmgr_docs_pdf.sh @@ -0,0 +1,7 @@ +textooldir=${TEXTOOLDIR:-"./docs-build-tex-tools"} +mkdir -p "$textooldir"/tl +wget https://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz -O "$textooldir"/install-tl-unx.tar.gz +zcat < "$textooldir"/install-tl-unx.tar.gz | tar xf - -C "$textooldir" +"$textooldir"/install-tl-*/install-tl --scheme=small --texdir="${textooldir}"/tl --no-interaction +PATH="$PATH:${textooldir}/tl/bin/x86_64-linux" tlmgr install titlesec varwidth tabulary needspace upquote framed capt-of wrapfig fncychap gnu-freefont ctex latexmk nimbus15 +rm -r "$textooldir"/install-tl*
Add support for building the docs in CentOS Stream 9. As there are no official images for CentOS Stream, use tgagor/centos from dockerhub which is actively updated. The centosstream_essential.sh centosstream_docs.sh files are based on the almalinux files. Introduce a new installation script: tlmgr_docs_pdf.sh. As I wasn't able to locate all the necessary tex packages to build the documentation in a PDF format, I resorted to using what is used on the Autobuilder: a local installation of texlive packages through tlmgr. This will allow us to provide a way of building the docs as PDF for the distros that lack this support at the moment. Use a new Containerfile.stream file as it needs TEXTOOLDIR exported for installing the texlive tools in a known directory (we assume the base dnf Containerfile does not need it, as it is currently the case for Fedora). Signed-off-by: Antonin Godard <antonin.godard@bootlin.com> --- documentation/ref-manual/system-requirements.rst | 31 ++++++++++++++++++++ documentation/tools/build-docs-container | 9 ++++++ .../tools/containerfiles/Containerfile.apt | 5 +++- .../tools/containerfiles/Containerfile.dnf | 5 +++- .../tools/containerfiles/Containerfile.stream | 34 ++++++++++++++++++++++ .../tools/containerfiles/Containerfile.zypper | 5 +++- documentation/tools/containerfiles/entrypoint | 6 ++++ .../host_packages_scripts/centosstream_docs.sh | 1 + .../centosstream_essential.sh | 5 ++++ .../tools/host_packages_scripts/tlmgr_docs_pdf.sh | 7 +++++ 10 files changed, 105 insertions(+), 3 deletions(-)