From 39fae54871413668850e97398e8468e63c0fe841 Mon Sep 17 00:00:00 2001 From: Stephan Hageboeck Date: Mon, 18 May 2026 13:42:09 +0200 Subject: [PATCH 01/15] [ci][docs] Move doxygen job to alma10. - Base the doxygen job on the alma10 container. - This allows for using a preinstalled doxygen in the container (currently 1.13.2), replacing the manual install of 1.10 - Also use preinstalled XRootD and qhelpgenerator --- .github/workflows/root-docs-ci.yml | 34 +++--------------------------- 1 file changed, 3 insertions(+), 31 deletions(-) diff --git a/.github/workflows/root-docs-ci.yml b/.github/workflows/root-docs-ci.yml index 1cd64060689c3..8ba2eca60e5b2 100644 --- a/.github/workflows/root-docs-ci.yml +++ b/.github/workflows/root-docs-ci.yml @@ -33,7 +33,7 @@ jobs: - x64 env: - PLATFORM: alma9 + PLATFORM: alma10 DOC_DIR: master DOC_LOCATION: /github/home BASE_REF: master @@ -44,7 +44,7 @@ jobs: contents: read container: - image: registry.cern.ch/root-ci/alma9:buildready + image: registry.cern.ch/root-ci/alma10:buildready options: '--security-opt label=disable --rm' env: OS_APPLICATION_CREDENTIAL_ID: '7f5b64a265244623a3a933308569bdba' @@ -74,32 +74,10 @@ jobs: echo TAR_NAME=html${BASE_REF}.tar >> $GITHUB_ENV echo DOCDIR_NAME=${BASE_REF} >> $GITHUB_ENV - # TODO: install latest versions in image on root-ci-images - - name: Install Doxygen 1.10.0 - run : | - mkdir -p ${{ github.workspace }}/doxygen - curl -L https://github.com/doxygen/doxygen/releases/download/Release_1_10_0/doxygen-1.10.0.linux.bin.tar.gz | tar -xz -C ${{ github.workspace }}/doxygen/ --strip-components=1 - echo PATH=$PATH:${{ github.workspace }}/doxygen/bin >> $GITHUB_ENV -# git clone --branch Release_1_12_0 https://github.com/doxygen/doxygen.git -# cd doxygen -# mkdir build -# cd build -# cmake .. -# make -j$(nproc) -# echo PATH=$PATH:${{ github.workspace }}/doxygen/build/bin >> $GITHUB_ENV -# cd ${{ github.workspace }} -# doxygen --version - - - name: Install qhelpgenerator-qt5 - run: | - dnf upgrade -y - dnf install -y qt5-doctools - which qhelpgenerator-qt5 - - name: Apply option overrides env: OVERRIDES: "testing=Off roottest=Off" - CONFIGFILE: '.github/workflows/root-ci-config/buildconfig/alma9.txt' + CONFIGFILE: '.github/workflows/root-ci-config/buildconfig/alma10.txt' shell: bash run: | set -x @@ -170,12 +148,6 @@ jobs: path: ${{env.DOC_LOCATION}}/${{env.TAR_NAME}}.gz if-no-files-found: error - - name: Install Kerberos utilities - run: dnf -y install krb5-workstation - - - name: Install XRootD client - run: dnf -y install xrootd-client - - name: Sync documentation to EOS env: RWEBEOS_KT: ${{ secrets.RWEBEOS_KT }} From 9b03f0a9791628526e452246dc95626ccb4be21f Mon Sep 17 00:00:00 2001 From: Stephan Hageboeck Date: Tue, 19 May 2026 13:17:51 +0200 Subject: [PATCH 02/15] [ci][docs] Mount the alma10 ccache volume for the doxygen job. --- .github/workflows/root-docs-ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/root-docs-ci.yml b/.github/workflows/root-docs-ci.yml index 8ba2eca60e5b2..cf059a03dc66b 100644 --- a/.github/workflows/root-docs-ci.yml +++ b/.github/workflows/root-docs-ci.yml @@ -46,6 +46,8 @@ jobs: container: image: registry.cern.ch/root-ci/alma10:buildready options: '--security-opt label=disable --rm' + volumes: + - alma10_ccache_volume:/github/home/.cache/ccache env: OS_APPLICATION_CREDENTIAL_ID: '7f5b64a265244623a3a933308569bdba' OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }} From 716d3de05bf471b59fd098d6ede68f3ab1378a2c Mon Sep 17 00:00:00 2001 From: Stephan Hageboeck Date: Mon, 18 May 2026 13:52:08 +0200 Subject: [PATCH 03/15] [ci][docs] Simplify the doxygen job. - Remove the override step from the doxygen job. Overrides can be specified as command-line arguments, which significantly shortens the job file. - Remove duplicated build step. There is no difference between the jobs, so we don't need build job based on the workflow trigger. - Create & compress the tar archive in one go. --- .github/workflows/root-docs-ci.yml | 56 +++++------------------------- 1 file changed, 8 insertions(+), 48 deletions(-) diff --git a/.github/workflows/root-docs-ci.yml b/.github/workflows/root-docs-ci.yml index cf059a03dc66b..5db4406ac2170 100644 --- a/.github/workflows/root-docs-ci.yml +++ b/.github/workflows/root-docs-ci.yml @@ -38,7 +38,7 @@ jobs: DOC_LOCATION: /github/home BASE_REF: master WEB_DIR_NAME: master - TAR_NAME: htmlmaster.tar + TAR_FILE: htmlmaster.tar.gz permissions: contents: read @@ -71,45 +71,7 @@ jobs: # code of the `if`. run: 'if [ -d /py-venv/ROOT-CI/bin/ ]; then . /py-venv/ROOT-CI/bin/activate && echo PATH=$PATH >> $GITHUB_ENV; fi' - - name: Set up directory name and tar filenames - run: | - echo TAR_NAME=html${BASE_REF}.tar >> $GITHUB_ENV - echo DOCDIR_NAME=${BASE_REF} >> $GITHUB_ENV - - - name: Apply option overrides - env: - OVERRIDES: "testing=Off roottest=Off" - CONFIGFILE: '.github/workflows/root-ci-config/buildconfig/alma10.txt' - shell: bash - run: | - set -x - echo '' >> "$CONFIGFILE" - for ENTRY in $OVERRIDES; do - KEY=$( echo "$ENTRY" | cut -d '=' -f 1 ) - # Add entry to file if not exists, otherwise replace - if grep -q "$KEY=" "$CONFIGFILE"; then - sed -i "s/$KEY=.*\$/$ENTRY/" "$CONFIGFILE" - else - echo "$ENTRY" >> "$CONFIGFILE" - fi - done - cat "$CONFIGFILE" || true - - - name: Build ROOT - Workflow Dispatch - if: github.event_name == 'workflow_dispatch' - env: - INCREMENTAL: ${{ inputs.incremental == 'true' }} - run: ".github/workflows/root-ci-config/build_root.py - --buildtype Release - --platform ${{ env.PLATFORM }} - --incremental ${{ env.INCREMENTAL }} - --base_ref ${BASE_REF} - --head_ref ${BASE_REF} - --binaries false - --repository ${{ github.server_url }}/${{ github.repository }}" - - - name: Build ROOT - Schedule - if: github.event_name == 'schedule' + - name: Build ROOT run: ".github/workflows/root-ci-config/build_root.py --buildtype Release --platform ${{ env.PLATFORM }} @@ -117,7 +79,8 @@ jobs: --base_ref ${BASE_REF} --head_ref ${BASE_REF} --binaries false - --repository ${{ github.server_url }}/${{ github.repository }}" + --repository ${{ github.server_url }}/${{ github.repository }} + --overrides testing=Off roottest=Off" - name: Run Doxygen working-directory: ${{ env.DOC_LOCATION }} @@ -134,11 +97,8 @@ jobs: run: | pwd ls -l - echo ${DOC_DIR} - echo ${TAR_NAME} ls -l ${DOC_DIR} - tar cf ${TAR_NAME} ${DOC_DIR} - gzip ${TAR_NAME} + tar -caf ${TAR_FILE} ${DOC_DIR} ls -l #Upload to GitHub as an artifact @@ -146,8 +106,8 @@ jobs: if: ${{ !cancelled() }} uses: actions/upload-artifact@v6 with: - name: ${{env.TAR_NAME}}.gz - path: ${{env.DOC_LOCATION}}/${{env.TAR_NAME}}.gz + name: ${{env.TAR_FILE}} + path: ${{env.DOC_LOCATION}}/${{env.TAR_FILE}} if-no-files-found: error - name: Sync documentation to EOS @@ -180,5 +140,5 @@ jobs: rm -r html xrdcp --parallel 64 -rf ./ ${EOS_ENDPOINT}/${EOS_BASE_PATH}/doc/${WEB_DIR_NAME} || failure=1 cd .. - xrdcp -rf ${TAR_NAME}.gz ${EOS_ENDPOINT}/${EOS_BASE_PATH}/download || failure=1 + xrdcp -rf ${TAR_FILE} ${EOS_ENDPOINT}/${EOS_BASE_PATH}/download || failure=1 exit $failure From 14fa4df8963703e9c820efa0231226205591dea5 Mon Sep 17 00:00:00 2001 From: Stephan Hageboeck Date: Mon, 18 May 2026 14:16:25 +0200 Subject: [PATCH 04/15] [ci][docs] Add job inputs for manually triggered workflows. - Add two job inputs for the workflow trigger. These should allow for choosing a ROOT version to build docs for, and for choosing a directory where the generated page should be served. Omitting the page means no upload to eos. - Remove the input "incremental". Since the documentation jobs don't upload or download anything, it never had an effect. --- .github/workflows/root-docs-ci.yml | 37 ++++++++++++++++++------------ 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/.github/workflows/root-docs-ci.yml b/.github/workflows/root-docs-ci.yml index 5db4406ac2170..605998c0e7ae7 100644 --- a/.github/workflows/root-docs-ci.yml +++ b/.github/workflows/root-docs-ci.yml @@ -6,22 +6,28 @@ on: # providing the relevant branch as "default" value here: workflow_call: inputs: - incremental: - type: boolean - default: true + input_branch: + description: 'Which branch to build documentation for' + type: string + required: true + eos_upload_directory: + description: 'Make documentation available at /doc/. Leave empty for skipping the upload to eos.' + type: string + required: false + default: '' workflow_dispatch: inputs: - incremental: - description: 'Do full build' - type: boolean + input_branch: + description: 'Which branch to build documentation for' + type: string + required: false + default: 'master' + eos_upload_directory: + description: 'Make documentation available at /doc/. Leave empty for skipping the upload to eos.' + type: string required: false - default: false - # docu_input: # opportunity: overwrite makeinput.sh with these args - # description: Folders to build documentation for. All folders are built if empty. - # type: string - # default: "" - # required: false + default: 'master' jobs: build-docs: @@ -36,8 +42,8 @@ jobs: PLATFORM: alma10 DOC_DIR: master DOC_LOCATION: /github/home - BASE_REF: master - WEB_DIR_NAME: master + BASE_REF: ${{ inputs.input_branch == null && 'master' || inputs.input_branch }} + WEB_DIR_NAME: ${{ inputs.eos_upload_directory == null && '' || inputs.eos_upload_directory }} TAR_FILE: htmlmaster.tar.gz permissions: @@ -75,7 +81,7 @@ jobs: run: ".github/workflows/root-ci-config/build_root.py --buildtype Release --platform ${{ env.PLATFORM }} - --incremental ${{ inputs.incremental }} + --incremental false --base_ref ${BASE_REF} --head_ref ${BASE_REF} --binaries false @@ -111,6 +117,7 @@ jobs: if-no-files-found: error - name: Sync documentation to EOS + if: ${{ env.WEB_DIR_NAME != null && env.WEB_DIR_NAME != '' }} env: RWEBEOS_KT: ${{ secrets.RWEBEOS_KT }} KRB5USER: ${{ secrets.KRB5USER }} From 9fb38af2a75b820be3f7126b512c81d6cc0cbd35 Mon Sep 17 00:00:00 2001 From: Stephan Hageboeck Date: Mon, 18 May 2026 14:19:02 +0200 Subject: [PATCH 05/15] [ci][docs] Make actionlint and shellcheck happier with the workflow. - Quote many variables to prevent word splitting or unwanted globbing --- .github/workflows/root-docs-ci.yml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/root-docs-ci.yml b/.github/workflows/root-docs-ci.yml index 605998c0e7ae7..7061fcf1374e6 100644 --- a/.github/workflows/root-docs-ci.yml +++ b/.github/workflows/root-docs-ci.yml @@ -93,9 +93,9 @@ jobs: shell: bash run: | source ROOT-CI/build/bin/thisroot.sh - export DOXYGEN_OUTPUT_DIRECTORY=/github/home/${DOC_DIR} + export DOXYGEN_OUTPUT_DIRECTORY="/github/home/${DOC_DIR}" cd ROOT-CI/src/documentation/doxygen - make -j `nproc --all` + make -j "$(nproc --all)" - name: Create documentation archives working-directory: ${{ env.DOC_LOCATION }} @@ -133,19 +133,19 @@ jobs: # instead. run: | failure=0 - echo ${RWEBEOS_KT} | base64 -d > ${KT_FILE_NAME} - kinit -p ${{ secrets.KRB5USER }}@${{ secrets.KRB5REALM }} -kt ${KT_FILE_NAME} - cd ${DOC_DIR}/html/ - rm -rf *.map # Intermediate files to create dot graphs - rm -rf *.md5 # As above - xrdcp --parallel 64 -rf ./*.html ${EOS_ENDPOINT}/${EOS_BASE_PATH}/doc/${WEB_DIR_NAME} || failure=1 + echo "${RWEBEOS_KT}" | base64 -d > "${KT_FILE_NAME}" + kinit -p ${{ secrets.KRB5USER }}@${{ secrets.KRB5REALM }} -kt "${KT_FILE_NAME}" + cd "${DOC_DIR}/html/" + rm -f *.map # Intermediate files to create dot graphs + rm -f *.md5 # As above + xrdcp --parallel 64 -rf ./*.html "${EOS_ENDPOINT}/${EOS_BASE_PATH}/doc/${WEB_DIR_NAME}" || failure=1 rm -rf *.html - xrdcp --parallel 64 -rf ./*.svg ${EOS_ENDPOINT}/${EOS_BASE_PATH}/doc/${WEB_DIR_NAME} || failure=1 + xrdcp --parallel 64 -rf ./*.svg "${EOS_ENDPOINT}/${EOS_BASE_PATH}/doc/${WEB_DIR_NAME}" || failure=1 rm -rf *.svg - xrdcp --parallel 64 -rf ./ ${EOS_ENDPOINT}/${EOS_BASE_PATH}/doc/${WEB_DIR_NAME} || failure=1 + xrdcp --parallel 64 -rf ./ "${EOS_ENDPOINT}/${EOS_BASE_PATH}/doc/${WEB_DIR_NAME}" || failure=1 cd .. rm -r html - xrdcp --parallel 64 -rf ./ ${EOS_ENDPOINT}/${EOS_BASE_PATH}/doc/${WEB_DIR_NAME} || failure=1 + xrdcp --parallel 64 -rf ./ "${EOS_ENDPOINT}/${EOS_BASE_PATH}/doc/${WEB_DIR_NAME}" || failure=1 cd .. - xrdcp -rf ${TAR_FILE} ${EOS_ENDPOINT}/${EOS_BASE_PATH}/download || failure=1 + xrdcp -rf "${TAR_FILE}" "${EOS_ENDPOINT}/${EOS_BASE_PATH}/download" || failure=1 exit $failure From 6cd771ff4518b154597e2404506c4c2c0c595345 Mon Sep 17 00:00:00 2001 From: Stephan Hageboeck Date: Tue, 19 May 2026 13:18:32 +0200 Subject: [PATCH 06/15] [ci][docs] Add a pull request trigger for the doxygen job. When the workflow file or the doxygen folder are touched, the CI will also run the doxygen build. --- .github/workflows/root-docs-ci.yml | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/.github/workflows/root-docs-ci.yml b/.github/workflows/root-docs-ci.yml index 7061fcf1374e6..583f1162ede2c 100644 --- a/.github/workflows/root-docs-ci.yml +++ b/.github/workflows/root-docs-ci.yml @@ -1,9 +1,13 @@ name: 'ROOT Docs CI' on: + pull_request: + paths: + - '.github/workflows/root-docs-ci.yml' + - 'documentation/doxygen/**' + branches: + - 'master' - # Allows nightly builds to trigger one run for each branch easily, by - # providing the relevant branch as "default" value here: workflow_call: inputs: input_branch: @@ -84,9 +88,10 @@ jobs: --incremental false --base_ref ${BASE_REF} --head_ref ${BASE_REF} - --binaries false --repository ${{ github.server_url }}/${{ github.repository }} - --overrides testing=Off roottest=Off" + --overrides testing=Off roottest=Off + --upload_artifacts false + --binaries false" - name: Run Doxygen working-directory: ${{ env.DOC_LOCATION }} From e8f555e2b0be5a621c28597ed7832df3ec2fca1f Mon Sep 17 00:00:00 2001 From: Stephan Hageboeck Date: Tue, 19 May 2026 16:56:16 +0200 Subject: [PATCH 07/15] [ci][docs] Fix escaping of regexes in converttonotebook. Strings such as "\s" are not correct, any more. --- documentation/doxygen/converttonotebook.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/documentation/doxygen/converttonotebook.py b/documentation/doxygen/converttonotebook.py index bb13fb99d0625..f4cb4f6bc701d 100755 --- a/documentation/doxygen/converttonotebook.py +++ b/documentation/doxygen/converttonotebook.py @@ -423,7 +423,7 @@ def findBracedBlock(text, startpos, openingBraceChar): def findStuffBeforeFunc(text, searchStart, searchEnd): - beforeFunctionRe = re.compile("(;|}|//[^\n]*)\s*$", flags = re.MULTILINE) + beforeFunctionRe = re.compile("(;|}|//[^\n]*)\\s*$", flags = re.MULTILINE) try: # Find the last '}' or comment line etc before function definition: lastMatchBeforeFunc = [thisMatch for thisMatch in beforeFunctionRe.finditer(text, searchStart, searchEnd)][-1] @@ -622,7 +622,7 @@ def changeString(matchObject): matchString = matchString.replace("THISISASPACE" , " ") return matchString - newcode = re.sub("#\s\s?\w\s[\w-]\s\w.*", changeString , code) + newcode = re.sub(r"#\s\s?\w\s[\w-]\s\w.*", changeString , code) return newcode def declareNamespace(code): From 00d4f0d6144c6bc05fef47fca704e9fbef127e7f Mon Sep 17 00:00:00 2001 From: Stephan Hageboeck Date: Tue, 19 May 2026 17:49:23 +0200 Subject: [PATCH 08/15] [ci][docs] Add a step to clean temporary files. The md5 and map files are used only when doxygen is run on an existing folder. They therefore should not be uploaded or put in the tar archive. --- .github/workflows/root-docs-ci.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/root-docs-ci.yml b/.github/workflows/root-docs-ci.yml index 583f1162ede2c..3b456e1c6b230 100644 --- a/.github/workflows/root-docs-ci.yml +++ b/.github/workflows/root-docs-ci.yml @@ -102,6 +102,14 @@ jobs: cd ROOT-CI/src/documentation/doxygen make -j "$(nproc --all)" + - name: Clean temporary files + # These files are used when doxygen runs incrementally + shell: bash + run: | + cd "/github/home/${DOC_DIR}" + rm html/*.md5 + rm html/*.map + - name: Create documentation archives working-directory: ${{ env.DOC_LOCATION }} shell: bash From 2ddf45756a0063caf866071375a29e0ac49ab54e Mon Sep 17 00:00:00 2001 From: Stephan Hageboeck Date: Wed, 20 May 2026 08:36:17 +0200 Subject: [PATCH 09/15] [ci][docs] Don't compress a tar archive twice; shorter retention. By default, the upload action puts the archive into an archive and tries to compress it. This is unnecessary. Furthermore, reduce the retention period to a week. The default of 90 days is excessive for a nightly job. --- .github/workflows/root-docs-ci.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/root-docs-ci.yml b/.github/workflows/root-docs-ci.yml index 3b456e1c6b230..b87fde96d4070 100644 --- a/.github/workflows/root-docs-ci.yml +++ b/.github/workflows/root-docs-ci.yml @@ -128,6 +128,8 @@ jobs: name: ${{env.TAR_FILE}} path: ${{env.DOC_LOCATION}}/${{env.TAR_FILE}} if-no-files-found: error + archive: false + retention-days: 8 - name: Sync documentation to EOS if: ${{ env.WEB_DIR_NAME != null && env.WEB_DIR_NAME != '' }} @@ -161,4 +163,4 @@ jobs: xrdcp --parallel 64 -rf ./ "${EOS_ENDPOINT}/${EOS_BASE_PATH}/doc/${WEB_DIR_NAME}" || failure=1 cd .. xrdcp -rf "${TAR_FILE}" "${EOS_ENDPOINT}/${EOS_BASE_PATH}/download" || failure=1 - exit $failure + exit "$failure" From 238b97b4efa0789584f5e544eb580e655a5b5b8d Mon Sep 17 00:00:00 2001 From: Stephan Hageboeck Date: Mon, 25 May 2026 17:47:20 +0700 Subject: [PATCH 10/15] [docs][ci] Add qhelpgenerator to the PATH. In qt6, with Alma10, qhelpgenerator moved to /usr/lib64, so doxygen didn't find it. --- .github/workflows/root-docs-ci.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/root-docs-ci.yml b/.github/workflows/root-docs-ci.yml index b87fde96d4070..3e6dfe8c98286 100644 --- a/.github/workflows/root-docs-ci.yml +++ b/.github/workflows/root-docs-ci.yml @@ -69,6 +69,12 @@ jobs: PYTHONUNBUFFERED: true steps: + - name: Prepare qhelpgenerator + # Qt6's libexec executables are not in the PATH by default + run: | + which qhelpgenerator && exit 0 # Already in PATH + PATH=/usr/lib64/qt6/libexec/:${PATH} which qhelpgenerator && echo "/usr/lib64/qt6/libexec/" >> "${GITHUB_PATH}" + - name: Checkout uses: actions/checkout@v6 with: @@ -79,7 +85,7 @@ jobs: # if the `if` expr is false, `if` still has exit code 0. # if the `if` block is entered, the block's exit code becomes the exit # code of the `if`. - run: 'if [ -d /py-venv/ROOT-CI/bin/ ]; then . /py-venv/ROOT-CI/bin/activate && echo PATH=$PATH >> $GITHUB_ENV; fi' + run: 'if [ -d /py-venv/ROOT-CI/bin/ ]; then . /py-venv/ROOT-CI/bin/activate && echo ${PATH%:*} >> "${GITHUB_PATH}"; fi' - name: Build ROOT run: ".github/workflows/root-ci-config/build_root.py From 4e9f9ee926c7dcf084672a1eddae40cad048ab5b Mon Sep 17 00:00:00 2001 From: Stephan Hageboeck Date: Thu, 28 May 2026 13:48:59 +0700 Subject: [PATCH 11/15] [docs] Upgrade qhelgenerator. --- documentation/doxygen/Doxyfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/doxygen/Doxyfile b/documentation/doxygen/Doxyfile index 50515a212a3d5..147183104a63c 100644 --- a/documentation/doxygen/Doxyfile +++ b/documentation/doxygen/Doxyfile @@ -1700,7 +1700,7 @@ QHP_SECT_FILTER_ATTRS = # run qhelpgenerator on the generated .qhp file. # This tag requires that the tag GENERATE_QHP is set to YES. -QHG_LOCATION = qhelpgenerator-qt5 +QHG_LOCATION = qhelpgenerator # If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be # generated, together with the HTML files, they form an Eclipse help plugin. To From c1aab1c3329a57e03d308ef9b354cb79f83a7650 Mon Sep 17 00:00:00 2001 From: Stephan Hageboeck Date: Thu, 28 May 2026 16:58:30 +0700 Subject: [PATCH 12/15] [docs] Call qhelpgenerator from Qt6. --- .github/workflows/root-docs-ci.yml | 4 ++-- documentation/doxygen/Doxyfile | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/root-docs-ci.yml b/.github/workflows/root-docs-ci.yml index 3e6dfe8c98286..9c6174f1f612f 100644 --- a/.github/workflows/root-docs-ci.yml +++ b/.github/workflows/root-docs-ci.yml @@ -72,8 +72,8 @@ jobs: - name: Prepare qhelpgenerator # Qt6's libexec executables are not in the PATH by default run: | - which qhelpgenerator && exit 0 # Already in PATH - PATH=/usr/lib64/qt6/libexec/:${PATH} which qhelpgenerator && echo "/usr/lib64/qt6/libexec/" >> "${GITHUB_PATH}" + QHELPGENERATOR=$(which qhelpgenerator) && echo "QHELPGENERATOR=${QHELPGENERATOR}" >> "${GITHUB_ENV}" + PATH=/usr/lib64/qt6/libexec/:${PATH} QHELPGENERATOR=$(which qhelpgenerator) && echo "QHELPGENERATOR=${QHELPGENERATOR}" >> "${GITHUB_ENV}" - name: Checkout uses: actions/checkout@v6 diff --git a/documentation/doxygen/Doxyfile b/documentation/doxygen/Doxyfile index 147183104a63c..86586b41b1086 100644 --- a/documentation/doxygen/Doxyfile +++ b/documentation/doxygen/Doxyfile @@ -1700,7 +1700,7 @@ QHP_SECT_FILTER_ATTRS = # run qhelpgenerator on the generated .qhp file. # This tag requires that the tag GENERATE_QHP is set to YES. -QHG_LOCATION = qhelpgenerator +QHG_LOCATION = $(QHELPGENERATOR) # If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be # generated, together with the HTML files, they form an Eclipse help plugin. To From 8df72b4bddc06be57769e49653d33c280baa7f3d Mon Sep 17 00:00:00 2001 From: Stephan Hageboeck Date: Tue, 9 Jun 2026 09:29:11 +0300 Subject: [PATCH 13/15] [WIP] Debug doxygen config --- documentation/doxygen/Makefile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/documentation/doxygen/Makefile b/documentation/doxygen/Makefile index 7b22aadb1a11a..1b1a9b5d008a7 100644 --- a/documentation/doxygen/Makefile +++ b/documentation/doxygen/Makefile @@ -77,6 +77,9 @@ doxygen: filter pyzdoc htmlfooter $(call MkDir,$(DOXYGEN_EXAMPLE_PATH)) $(call MkDir,$(DOXYGEN_NOTEBOOK_PATH)) ./makeinput.sh + echo "*** Diff of config file with default template:" + doxygen -x + echo "*** Run doxygen" doxygen bash ./CleanNamespaces.sh gzip $(DOXYGEN_IMAGE_PATH)/ROOT.tag From aefba6dfe96ea8d88a4b584af7b386e43e545db5 Mon Sep 17 00:00:00 2001 From: Stephan Hageboeck Date: Tue, 9 Jun 2026 16:38:29 +0300 Subject: [PATCH 14/15] fixup! [ci][docs] Don't compress a tar archive twice; shorter retention. --- .github/workflows/root-docs-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/root-docs-ci.yml b/.github/workflows/root-docs-ci.yml index 9c6174f1f612f..b3b07c5b1d599 100644 --- a/.github/workflows/root-docs-ci.yml +++ b/.github/workflows/root-docs-ci.yml @@ -129,7 +129,7 @@ jobs: #Upload to GitHub as an artifact - name: Upload tar file for GH if: ${{ !cancelled() }} - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@v7 with: name: ${{env.TAR_FILE}} path: ${{env.DOC_LOCATION}}/${{env.TAR_FILE}} From bb580c2cd209950c25d9b85fd609a45fb7f001cf Mon Sep 17 00:00:00 2001 From: Stephan Hageboeck Date: Tue, 9 Jun 2026 16:40:45 +0300 Subject: [PATCH 15/15] [WIP] Debugging --- documentation/doxygen/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/doxygen/Makefile b/documentation/doxygen/Makefile index 1b1a9b5d008a7..a62392f441af5 100644 --- a/documentation/doxygen/Makefile +++ b/documentation/doxygen/Makefile @@ -83,7 +83,7 @@ doxygen: filter pyzdoc htmlfooter doxygen bash ./CleanNamespaces.sh gzip $(DOXYGEN_IMAGE_PATH)/ROOT.tag - gzip $(DOXYGEN_IMAGE_PATH)/ROOT.qch + gzip $(DOXYGEN_IMAGE_PATH)/ROOT.qch || find $(DOXYGEN_OUTPUT_DIRECTORY) -name "*.qch" rm -rf files c1* *.ps *.eps *.png *.jpg *.tex *.svg *.pdf *.root *.xpm *.out *.dat *.dtd *.dot *.txt *.csv *.log *.rs rm -rf listofclass.sh tmva* data* result* config* test* Roo* My* Freq* rm -f Doxyfile_INPUT filter htmlfooter.html MDF.C pca.C