[llvm-branch-commits] [llvm] workflows/release-documentation: Rework workflow to make it testable (PR #212689)

Tom Stellard via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Mon Aug 3 21:56:17 PDT 2026


https://github.com/tstellar updated https://github.com/llvm/llvm-project/pull/212689

>From c3a73d8cfa2610da3d6f6379545f617f8970bd05 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Tue, 28 Jul 2026 22:48:55 -0700
Subject: [PATCH 01/27] workflows/release-documentation: Rework workflow to
 make it testable

Removed the environment declaration from the validation job and split
out the www-releases update into a separate job.  This makes it safe
and possible to add a pull_request trigger so we can at least test
building the documentation when someone submits a pull request.
---
 .github/workflows/release-documentation.yml | 48 +++++++++++++++------
 1 file changed, 34 insertions(+), 14 deletions(-)

diff --git a/.github/workflows/release-documentation.yml b/.github/workflows/release-documentation.yml
index d0b6a9994edb5..5347d4136bc26 100644
--- a/.github/workflows/release-documentation.yml
+++ b/.github/workflows/release-documentation.yml
@@ -38,6 +38,24 @@ on:
       LLVM_TOKEN_GENERATOR_PRIVATE_KEY:
         description: "Private key for our GitHub App we use for generating access tokens."
         required: true
+  # Run on pull_requests for testing purposes.
+  pull_request:
+    paths:
+      - '.github/workflows/release-documentation.yml'
+      - 'llvm/utils/release/build-docs.sh'
+    types:
+      - opened
+      - synchronize
+      - reopened
+      # When a PR is closed, we still start this workflow, but then skip
+      # all the jobs, which makes it effectively a no-op.  The reason to
+      # do this is that it allows us to take advantage of concurrency groups
+      # to cancel in progress CI jobs whenever the PR is closed.
+      - closed
+
+concurrency:
+  group: ${{ github.workflow }}-${{ inputs.release-version || github.event.pull_request.number }}
+  cancel-in-progress: True
 
 jobs:
   # This job checks permissions and validates inputs to prevent potential
@@ -47,9 +65,6 @@ jobs:
   release-man-pages-validate-input:
     name: Release Man Pages Validate Input
     runs-on: ubuntu-24.04
-    environment:
-      name: release
-      deployment: false
     permissions:
       contents: read
     steps:
@@ -59,13 +74,6 @@ jobs:
           sparse-checkout: |
             .github/workflows/
 
-      - name: Check Permissions
-        uses: ./.github/workflows/require-team-membership
-        with:
-          team-slug: llvm-release-managers
-          LLVM_TOKEN_GENERATOR_CLIENT_ID: ${{ secrets.LLVM_TOKEN_GENERATOR_CLIENT_ID }}
-          LLVM_TOKEN_GENERATOR_PRIVATE_KEY: ${{ secrets.LLVM_TOKEN_GENERATOR_PRIVATE_KEY }}
-
       - name: Validate Input
         uses: ./.github/workflows/validate-release-version
         with:
@@ -84,8 +92,6 @@ jobs:
       man-page-tarball-name: ${{ steps.vars.outputs.man-page-tarball-name }}
       man-page-upload: ${{ steps.vars.outputs.man-page-upload }}
       man-page-attestation-name: ${{ steps.vars.outputs.man-page-attestation-name }}
-    env:
-      upload: ${{ inputs.upload && !contains(inputs.release-version, 'rc') }}
     steps:
       - name: Collect Variables
         id: vars
@@ -155,8 +161,23 @@ jobs:
           name: release-notes
           path: docs-build/html-export/
 
+
+  upload-release-notes:
+    name: "Upload Release Notes"
+    runs-on: ubuntu-24.04
+    environment:
+      deployment: false
+      name: release
+    needs:
+      - release-documentation
+    if: >-
+      github.event_name != 'pull_request' &&
+      inputs.upload &&
+      !contains(inputs.release-version, 'rc')
+    permissions:
+      contents: read
+    steps:
       - name: Clone www-releases
-        if: env.upload
         uses: actions/checkout at df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
         with:
           repository: ${{ github.repository_owner }}/www-releases
@@ -166,7 +187,6 @@ jobs:
           persist-credentials: false
 
       - name: Upload Release Notes
-        if: env.upload
         env:
           PUSH_TOKEN: ${{ secrets.LLVMBOT_WWW_RELEASES_PUSH }}
           GH_TOKEN: ${{ secrets.WWW_RELEASES_TOKEN }}

>From 32f690d630f6d95fec6e60f49ee1e14ed66aa5f9 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Wed, 29 Jul 2026 11:18:49 -0700
Subject: [PATCH 02/27] More fixes

---
 .github/workflows/release-documentation.yml | 48 +++++++--------------
 1 file changed, 15 insertions(+), 33 deletions(-)

diff --git a/.github/workflows/release-documentation.yml b/.github/workflows/release-documentation.yml
index 5347d4136bc26..3c080dce679c9 100644
--- a/.github/workflows/release-documentation.yml
+++ b/.github/workflows/release-documentation.yml
@@ -58,41 +58,25 @@ concurrency:
   cancel-in-progress: True
 
 jobs:
-  # This job checks permissions and validates inputs to prevent potential
-  # malicious actions.  Since the release-documentation job has contents: write
-  # permissions we need to be extra careful about who can run the job and what
-  # inputs can be provided.
-  release-man-pages-validate-input:
-    name: Release Man Pages Validate Input
-    runs-on: ubuntu-24.04
-    permissions:
-      contents: read
-    steps:
-      - uses: actions/checkout at df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
-        with:
-          persist-credentials: false
-          sparse-checkout: |
-            .github/workflows/
-
-      - name: Validate Input
-        uses: ./.github/workflows/validate-release-version
-        with:
-          release-version: ${{ inputs.release-version }}
-
   release-documentation:
     name: Build and Upload Release Documentation and Man Pages
     runs-on: ubuntu-24.04
-    needs:
-      - release-man-pages-validate-input
+    permissions:
+      contents: read
     outputs:
       man-page-digest: ${{ steps.man-page-digest.outputs.man-page-digest }}
       man-page-artifact-id: ${{ steps.man-page-artifact-upload.outputs.artifact-id }}
 
       man-page-release-version: ${{ steps.vars.outputs.man-page-release-version }}
-      man-page-tarball-name: ${{ steps.vars.outputs.man-page-tarball-name }}
       man-page-upload: ${{ steps.vars.outputs.man-page-upload }}
       man-page-attestation-name: ${{ steps.vars.outputs.man-page-attestation-name }}
     steps:
+      - name: Validate Input
+        if: inputs.release-version
+        uses: ./.github/workflows/validate-release-version
+        with:
+          release-version: ${{ inputs.release-version }}
+
       - name: Collect Variables
         id: vars
         env:
@@ -102,7 +86,6 @@ jobs:
         run: |
           {
             echo "man-page-release-version=$INPUTS_RELEASE_VERSION"
-            echo "man-page-tarball-name=llvm_man_pages-$INPUTS_RELEASE_VERSION.tar.xz"
             echo "man-page-ref=llvmorg-$INPUTS_RELEASE_VERSION"
             echo "man-page-upload=$UPLOAD_MAN_PAGES"
             echo "man-page-attestation-name=$RUNNER_OS-$RUNNER_ARCH-release-man-page-attestation"
@@ -113,11 +96,6 @@ jobs:
         with:
           persist-credentials: false
 
-      - name: Validate Input
-        uses: ./.github/workflows/validate-release-version
-        with:
-          release-version: ${{ inputs.release-version }}
-
       - name: Setup Python env
         uses: actions/setup-python at ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
         with:
@@ -135,17 +113,21 @@ jobs:
           pip3 install --require-hashes --user -r ./llvm/docs/requirements.txt
 
       - name: Build Documentation
+        id: build
         env:
           GITHUB_TOKEN: ${{ github.token }}
           INPUTS_RELEASE_VERSION: ${{ inputs.release-version }}
         run: |
-          ./llvm/utils/release/build-docs.sh -release "$INPUTS_RELEASE_VERSION" -no-doxygen
+          ./llvm/utils/release/build-docs.sh \
+            $(test -n "$INPUTS_RELEASE_VERSION" && echo -release $INPUTS_RELEASE_VERSION || echo -srcdir llvm) -no-doxygen
+          echo "man-page-tarball-name=$(find . -iname 'llvm_man_pages-*')" >> "$GITHUB_OUTPUT"
+
 
       - name: Generate sha256 digest for man page tarball
         id: man-page-digest
         shell: bash
         env:
-          TARBALL_NAME: ${{ steps.vars.outputs.man-page-tarball-name }}
+          TARBALL_NAME: ${{ steps.build.outputs.man-page-tarball-name }}
         run: |
             echo "man-page-digest=$(cat "$TARBALL_NAME" | sha256sum | cut -d ' ' -f 1)" >> $GITHUB_OUTPUT
 
@@ -153,7 +135,7 @@ jobs:
         uses: actions/upload-artifact at 043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
         with:
           path: |
-            ${{ steps.vars.outputs.man-page-tarball-name }}
+            ${{ steps.build.outputs.man-page-tarball-name }}
 
       - name: Create Release Notes Artifact
         uses: actions/upload-artifact at 043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1

>From cb399024cbe90862b9184d0b05412185fcea0630 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Wed, 29 Jul 2026 14:07:40 -0700
Subject: [PATCH 03/27] Cleanups

---
 .github/workflows/release-documentation.yml | 24 +++------------------
 1 file changed, 3 insertions(+), 21 deletions(-)

diff --git a/.github/workflows/release-documentation.yml b/.github/workflows/release-documentation.yml
index 3c080dce679c9..b1bc2f586f935 100644
--- a/.github/workflows/release-documentation.yml
+++ b/.github/workflows/release-documentation.yml
@@ -66,10 +66,6 @@ jobs:
     outputs:
       man-page-digest: ${{ steps.man-page-digest.outputs.man-page-digest }}
       man-page-artifact-id: ${{ steps.man-page-artifact-upload.outputs.artifact-id }}
-
-      man-page-release-version: ${{ steps.vars.outputs.man-page-release-version }}
-      man-page-upload: ${{ steps.vars.outputs.man-page-upload }}
-      man-page-attestation-name: ${{ steps.vars.outputs.man-page-attestation-name }}
     steps:
       - name: Validate Input
         if: inputs.release-version
@@ -77,20 +73,6 @@ jobs:
         with:
           release-version: ${{ inputs.release-version }}
 
-      - name: Collect Variables
-        id: vars
-        env:
-          INPUTS_RELEASE_VERSION: ${{ inputs.release-version }}
-          UPLOAD_MAN_PAGES: ${{ inputs.upload }}
-        shell: bash
-        run: |
-          {
-            echo "man-page-release-version=$INPUTS_RELEASE_VERSION"
-            echo "man-page-ref=llvmorg-$INPUTS_RELEASE_VERSION"
-            echo "man-page-upload=$UPLOAD_MAN_PAGES"
-            echo "man-page-attestation-name=$RUNNER_OS-$RUNNER_ARCH-release-man-page-attestation"
-          } >> "$GITHUB_OUTPUT"
-
       - name: Checkout LLVM
         uses: actions/checkout at df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
         with:
@@ -205,10 +187,10 @@ jobs:
        id: man-page-artifact-upload
        uses: $/.github/workflows/upload-release-artifact
        with:
-         release-version: ${{ needs.release-documentation.outputs.man-page-release-version }}
+         release-version: ${{ inputs.release-version }}
          artifact-id: ${{ needs.release-documentation.outputs.man-page-artifact-id }}
-         attestation-name: ${{ needs.release-documentation.outputs.man-page-attestation-name }}
+         attestation-name: ${{ runner.os }}-${{ runner.arch }}-release-man-page-attestation
          digest: ${{ needs.release-documentation.outputs.man-page-digest }}
-         upload: ${{ needs.release-documentation.outputs.man-page-upload }}
+         upload: ${{ inputs.upload }}
          LLVM_TOKEN_GENERATOR_CLIENT_ID: ${{ secrets.LLVM_TOKEN_GENERATOR_CLIENT_ID }}
          LLVM_TOKEN_GENERATOR_PRIVATE_KEY: ${{ secrets.LLVM_TOKEN_GENERATOR_PRIVATE_KEY }}

>From 3903d540a1f4c13cdf7b5efecda907624e02e983 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Wed, 29 Jul 2026 14:20:58 -0700
Subject: [PATCH 04/27] Fix build of libcxx docs

---
 llvm/utils/release/build-docs.sh | 14 +++-----------
 1 file changed, 3 insertions(+), 11 deletions(-)

diff --git a/llvm/utils/release/build-docs.sh b/llvm/utils/release/build-docs.sh
index 648c829a62618..12f437e1d3ca7 100755
--- a/llvm/utils/release/build-docs.sh
+++ b/llvm/utils/release/build-docs.sh
@@ -149,22 +149,14 @@ export CXX=clang++
 
 cmake -G Ninja $srcdir -B $builddir \
                -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;lld;polly;flang${extra_man_page_projects}" \
+               -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind;${extra_man_page_runtimes}" \
                -DCMAKE_BUILD_TYPE=Release \
                -DLLVM_BUILD_DOCS=ON \
                $sphinx_flag \
                $doxygen_flag \
                $man_page_flag
 
-ninja -C $builddir $sphinx_targets $doxygen_targets $man_page_targets
-
-cmake -G Ninja $srcdir/../runtimes -B $builddir/runtimes-doc \
-               -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind;${extra_man_page_runtimes}" \
-               -DLLVM_ENABLE_SPHINX=ON \
-               -DLLVM_BUILD_DOCS=ON \
-               -DSPHINX_WARNINGS_AS_ERRORS=OFF
-
-ninja -C $builddir/runtimes-doc \
-               docs-libcxx-html
+ninja -C $builddir $sphinx_targets $doxygen_targets $man_page_targets docs-libcxx-html
 
 if [ "${no_man_page}" != "yes" ]; then
   output="llvm_man_pages-${release}"
@@ -196,5 +188,5 @@ done
 # Keep the documentation for the runtimes under /projects/ to avoid breaking existing links.
 for d in libcxx/docs/; do
   mkdir -p $html_dir/projects/$d
-  mv $builddir/runtimes-doc/$d/html/* $html_dir/projects/$d/
+  mv $builddir/$d/html/* $html_dir/projects/$d/
 done

>From 0a2c1abbe06944d9910ea2f42be01defcfe6532d Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Wed, 29 Jul 2026 14:27:50 -0700
Subject: [PATCH 05/27] Fix typo

---
 llvm/utils/release/build-docs.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/llvm/utils/release/build-docs.sh b/llvm/utils/release/build-docs.sh
index 12f437e1d3ca7..04f17b629c669 100755
--- a/llvm/utils/release/build-docs.sh
+++ b/llvm/utils/release/build-docs.sh
@@ -128,7 +128,7 @@ if [ "${no_man_pages}" != "yes" ]; then
   install_prefix=${builddir}/install
   man_page_flag=" -DLLVM_ENABLE_SPHINX=ON -DSPHINX_WARNINGS_AS_ERRORS=OFF -DSPHINX_OUTPUT_MAN:BOOL=ON -DCMAKE_INSTALL_PREFIX=${install_prefix}"
   extra_man_page_projects=";lldb;mlir;bolt"
-  extra_man_page_runtimes=";compiler-rt;openmp;"
+  extra_man_page_runtimes=";compiler-rt;openmp"
 else
   echo "Man pages: disabled"
 fi

>From 75bfe65962f1ea843dd1fa08c12e6e053e755e02 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Wed, 29 Jul 2026 14:38:23 -0700
Subject: [PATCH 06/27] XXX: Debug

---
 llvm/utils/release/build-docs.sh | 1 +
 1 file changed, 1 insertion(+)

diff --git a/llvm/utils/release/build-docs.sh b/llvm/utils/release/build-docs.sh
index 04f17b629c669..0f630b2e600d5 100755
--- a/llvm/utils/release/build-docs.sh
+++ b/llvm/utils/release/build-docs.sh
@@ -147,6 +147,7 @@ fi
 export CC=clang
 export CXX=clang++
 
+set -ex
 cmake -G Ninja $srcdir -B $builddir \
                -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;lld;polly;flang${extra_man_page_projects}" \
                -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind;${extra_man_page_runtimes}" \

>From eb9667fa754e0b49d46d0ae5993968e20cb94d94 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Wed, 29 Jul 2026 14:42:26 -0700
Subject: [PATCH 07/27] Fix typo

---
 llvm/utils/release/build-docs.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/llvm/utils/release/build-docs.sh b/llvm/utils/release/build-docs.sh
index 0f630b2e600d5..c7f440c638d34 100755
--- a/llvm/utils/release/build-docs.sh
+++ b/llvm/utils/release/build-docs.sh
@@ -150,7 +150,7 @@ export CXX=clang++
 set -ex
 cmake -G Ninja $srcdir -B $builddir \
                -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;lld;polly;flang${extra_man_page_projects}" \
-               -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind;${extra_man_page_runtimes}" \
+               -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind${extra_man_page_runtimes}" \
                -DCMAKE_BUILD_TYPE=Release \
                -DLLVM_BUILD_DOCS=ON \
                $sphinx_flag \

>From d207ede60437c8809a253ae3bed441527bacdd6b Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Wed, 29 Jul 2026 16:00:55 -0700
Subject: [PATCH 08/27] Revert "Fix typo"

This reverts commit a5d98fb1210839d7b0fe58b0be77ed6d379226b4.
---
 llvm/utils/release/build-docs.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/llvm/utils/release/build-docs.sh b/llvm/utils/release/build-docs.sh
index c7f440c638d34..0f630b2e600d5 100755
--- a/llvm/utils/release/build-docs.sh
+++ b/llvm/utils/release/build-docs.sh
@@ -150,7 +150,7 @@ export CXX=clang++
 set -ex
 cmake -G Ninja $srcdir -B $builddir \
                -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;lld;polly;flang${extra_man_page_projects}" \
-               -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind${extra_man_page_runtimes}" \
+               -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind;${extra_man_page_runtimes}" \
                -DCMAKE_BUILD_TYPE=Release \
                -DLLVM_BUILD_DOCS=ON \
                $sphinx_flag \

>From 552261e3848c3c5d726235a056cf675f82883f1d Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Wed, 29 Jul 2026 16:00:58 -0700
Subject: [PATCH 09/27] Revert "XXX: Debug"

This reverts commit 028443c5e4e259ca9f4d38145350a7d3d6494a66.
---
 llvm/utils/release/build-docs.sh | 1 -
 1 file changed, 1 deletion(-)

diff --git a/llvm/utils/release/build-docs.sh b/llvm/utils/release/build-docs.sh
index 0f630b2e600d5..04f17b629c669 100755
--- a/llvm/utils/release/build-docs.sh
+++ b/llvm/utils/release/build-docs.sh
@@ -147,7 +147,6 @@ fi
 export CC=clang
 export CXX=clang++
 
-set -ex
 cmake -G Ninja $srcdir -B $builddir \
                -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;lld;polly;flang${extra_man_page_projects}" \
                -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind;${extra_man_page_runtimes}" \

>From e896a5010132f0911a697682cd9d6701e2a42adb Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Wed, 29 Jul 2026 16:01:00 -0700
Subject: [PATCH 10/27] Revert "Fix typo"

This reverts commit f90c6dd3e5c5855b327b059982eb94d0ab3a0f73.
---
 llvm/utils/release/build-docs.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/llvm/utils/release/build-docs.sh b/llvm/utils/release/build-docs.sh
index 04f17b629c669..12f437e1d3ca7 100755
--- a/llvm/utils/release/build-docs.sh
+++ b/llvm/utils/release/build-docs.sh
@@ -128,7 +128,7 @@ if [ "${no_man_pages}" != "yes" ]; then
   install_prefix=${builddir}/install
   man_page_flag=" -DLLVM_ENABLE_SPHINX=ON -DSPHINX_WARNINGS_AS_ERRORS=OFF -DSPHINX_OUTPUT_MAN:BOOL=ON -DCMAKE_INSTALL_PREFIX=${install_prefix}"
   extra_man_page_projects=";lldb;mlir;bolt"
-  extra_man_page_runtimes=";compiler-rt;openmp"
+  extra_man_page_runtimes=";compiler-rt;openmp;"
 else
   echo "Man pages: disabled"
 fi

>From cf5a93a31a41fdbebc29da37926c95f7d8ed81d7 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Wed, 29 Jul 2026 16:01:02 -0700
Subject: [PATCH 11/27] Revert "Fix build of libcxx docs"

This reverts commit 179432674685f1eb5a7546f1fa1434ab75fee36f.
---
 llvm/utils/release/build-docs.sh | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/llvm/utils/release/build-docs.sh b/llvm/utils/release/build-docs.sh
index 12f437e1d3ca7..648c829a62618 100755
--- a/llvm/utils/release/build-docs.sh
+++ b/llvm/utils/release/build-docs.sh
@@ -149,14 +149,22 @@ export CXX=clang++
 
 cmake -G Ninja $srcdir -B $builddir \
                -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;lld;polly;flang${extra_man_page_projects}" \
-               -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind;${extra_man_page_runtimes}" \
                -DCMAKE_BUILD_TYPE=Release \
                -DLLVM_BUILD_DOCS=ON \
                $sphinx_flag \
                $doxygen_flag \
                $man_page_flag
 
-ninja -C $builddir $sphinx_targets $doxygen_targets $man_page_targets docs-libcxx-html
+ninja -C $builddir $sphinx_targets $doxygen_targets $man_page_targets
+
+cmake -G Ninja $srcdir/../runtimes -B $builddir/runtimes-doc \
+               -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind;${extra_man_page_runtimes}" \
+               -DLLVM_ENABLE_SPHINX=ON \
+               -DLLVM_BUILD_DOCS=ON \
+               -DSPHINX_WARNINGS_AS_ERRORS=OFF
+
+ninja -C $builddir/runtimes-doc \
+               docs-libcxx-html
 
 if [ "${no_man_page}" != "yes" ]; then
   output="llvm_man_pages-${release}"
@@ -188,5 +196,5 @@ done
 # Keep the documentation for the runtimes under /projects/ to avoid breaking existing links.
 for d in libcxx/docs/; do
   mkdir -p $html_dir/projects/$d
-  mv $builddir/$d/html/* $html_dir/projects/$d/
+  mv $builddir/runtimes-doc/$d/html/* $html_dir/projects/$d/
 done

>From f834d30965598fd138d333f47e2ff749fe874fc5 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Wed, 29 Jul 2026 16:10:40 -0700
Subject: [PATCH 12/27] Fix

---
 llvm/utils/release/build-docs.sh | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/llvm/utils/release/build-docs.sh b/llvm/utils/release/build-docs.sh
index 648c829a62618..e19d1a39aeabc 100755
--- a/llvm/utils/release/build-docs.sh
+++ b/llvm/utils/release/build-docs.sh
@@ -144,8 +144,8 @@ fi
 # This is just to ensure we're using the right compiler
 # When running this locally, the script otherwise might
 # prefer GCC.
-export CC=clang
-export CXX=clang++
+#export CC=clang
+#export CXX=clang++
 
 cmake -G Ninja $srcdir -B $builddir \
                -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;lld;polly;flang${extra_man_page_projects}" \

>From d315d49db09582c6bb17487fc85770fdde6bb6cd Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Wed, 29 Jul 2026 16:25:07 -0700
Subject: [PATCH 13/27] debug

---
 llvm/utils/release/build-docs.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/llvm/utils/release/build-docs.sh b/llvm/utils/release/build-docs.sh
index e19d1a39aeabc..a2c6a3776d03c 100755
--- a/llvm/utils/release/build-docs.sh
+++ b/llvm/utils/release/build-docs.sh
@@ -20,7 +20,7 @@
 #   * pip install --user -r ./llvm/docs/requirements.txt
 #===------------------------------------------------------------------------===#
 
-set -e
+set -ex
 
 builddir=docs-build
 srcdir=$(readlink -f $(dirname "$(readlink -f "$0")")/../..)

>From 94ddb9013b63a1f69c69bdd3fb2ac0eb1a45ad5e Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Wed, 29 Jul 2026 16:41:12 -0700
Subject: [PATCH 14/27] Fix

---
 .github/workflows/release-documentation.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/release-documentation.yml b/.github/workflows/release-documentation.yml
index b1bc2f586f935..0efb9e5ff44c4 100644
--- a/.github/workflows/release-documentation.yml
+++ b/.github/workflows/release-documentation.yml
@@ -102,7 +102,7 @@ jobs:
         run: |
           ./llvm/utils/release/build-docs.sh \
             $(test -n "$INPUTS_RELEASE_VERSION" && echo -release $INPUTS_RELEASE_VERSION || echo -srcdir llvm) -no-doxygen
-          echo "man-page-tarball-name=$(find . -iname 'llvm_man_pages-*')" >> "$GITHUB_OUTPUT"
+          echo "man-page-tarball-name=$(basename $(find . -iname 'llvm_man_pages-*'))" >> "$GITHUB_OUTPUT"
 
 
       - name: Generate sha256 digest for man page tarball

>From c5cafa6d6add19fcbf42e3e61f9864d008a3ad61 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Wed, 29 Jul 2026 16:58:50 -0700
Subject: [PATCH 15/27] Add artifact name

---
 .github/workflows/release-documentation.yml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.github/workflows/release-documentation.yml b/.github/workflows/release-documentation.yml
index 0efb9e5ff44c4..bf9c400d3bfc2 100644
--- a/.github/workflows/release-documentation.yml
+++ b/.github/workflows/release-documentation.yml
@@ -116,6 +116,7 @@ jobs:
       - id: man-page-artifact-upload
         uses: actions/upload-artifact at 043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
         with:
+          name: man-pages
           path: |
             ${{ steps.build.outputs.man-page-tarball-name }}
 

>From 69f79bb0526e5a2914b1db7f3bdb3620bd72b8a8 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Wed, 29 Jul 2026 17:12:40 -0700
Subject: [PATCH 16/27] Fixes and cleanups

---
 .github/workflows/release-documentation.yml | 10 +++++-----
 llvm/utils/release/build-docs.sh            |  8 +-------
 2 files changed, 6 insertions(+), 12 deletions(-)

diff --git a/.github/workflows/release-documentation.yml b/.github/workflows/release-documentation.yml
index bf9c400d3bfc2..03fa40edcc91b 100644
--- a/.github/workflows/release-documentation.yml
+++ b/.github/workflows/release-documentation.yml
@@ -67,17 +67,17 @@ jobs:
       man-page-digest: ${{ steps.man-page-digest.outputs.man-page-digest }}
       man-page-artifact-id: ${{ steps.man-page-artifact-upload.outputs.artifact-id }}
     steps:
+      - name: Checkout LLVM
+        uses: actions/checkout at df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
+        with:
+          persist-credentials: false
+
       - name: Validate Input
         if: inputs.release-version
         uses: ./.github/workflows/validate-release-version
         with:
           release-version: ${{ inputs.release-version }}
 
-      - name: Checkout LLVM
-        uses: actions/checkout at df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
-        with:
-          persist-credentials: false
-
       - name: Setup Python env
         uses: actions/setup-python at ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
         with:
diff --git a/llvm/utils/release/build-docs.sh b/llvm/utils/release/build-docs.sh
index a2c6a3776d03c..3c80af1317d11 100755
--- a/llvm/utils/release/build-docs.sh
+++ b/llvm/utils/release/build-docs.sh
@@ -20,7 +20,7 @@
 #   * pip install --user -r ./llvm/docs/requirements.txt
 #===------------------------------------------------------------------------===#
 
-set -ex
+set -e
 
 builddir=docs-build
 srcdir=$(readlink -f $(dirname "$(readlink -f "$0")")/../..)
@@ -141,12 +141,6 @@ else
    echo "Doxygen: disabled"
 fi
 
-# This is just to ensure we're using the right compiler
-# When running this locally, the script otherwise might
-# prefer GCC.
-#export CC=clang
-#export CXX=clang++
-
 cmake -G Ninja $srcdir -B $builddir \
                -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;lld;polly;flang${extra_man_page_projects}" \
                -DCMAKE_BUILD_TYPE=Release \

>From fdd1f1c979c72e48acbc9e405c29259a4f4a9e16 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Thu, 30 Jul 2026 09:25:50 -0700
Subject: [PATCH 17/27] Fix

---
 .github/workflows/release-documentation.yml | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/.github/workflows/release-documentation.yml b/.github/workflows/release-documentation.yml
index 03fa40edcc91b..7e6171f2ab1d0 100644
--- a/.github/workflows/release-documentation.yml
+++ b/.github/workflows/release-documentation.yml
@@ -102,7 +102,7 @@ jobs:
         run: |
           ./llvm/utils/release/build-docs.sh \
             $(test -n "$INPUTS_RELEASE_VERSION" && echo -release $INPUTS_RELEASE_VERSION || echo -srcdir llvm) -no-doxygen
-          echo "man-page-tarball-name=$(basename $(find . -iname 'llvm_man_pages-*'))" >> "$GITHUB_OUTPUT"
+          echo "man-page-tarball-name=$(basename $(find . -iname 'llvm_man_pages-*.tar.xz'))" >> "$GITHUB_OUTPUT"
 
 
       - name: Generate sha256 digest for man page tarball
@@ -151,15 +151,20 @@ jobs:
           path: www-releases
           persist-credentials: false
 
+      - name: Download Release Notes Artifact
+        uses: actions/download-artifact at 3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
+        id: download-artifact
+        with:
+          name: ${{ github.workspace }}/www-releases/${{ inputs.release-version }}
+
       - name: Upload Release Notes
         env:
           PUSH_TOKEN: ${{ secrets.LLVMBOT_WWW_RELEASES_PUSH }}
           GH_TOKEN: ${{ secrets.WWW_RELEASES_TOKEN }}
           INPUTS_RELEASE_VERSION: ${{ inputs.release-version }}
         run: |
-          mkdir -p www-releases/$INPUTS_RELEASE_VERSION
-          mv ./docs-build/html-export/* www-releases/$INPUTS_RELEASE_VERSION
           cd www-releases
+          ls -ltr www-releases/$INPUT_RELEASE_VERSION/*
           git checkout -b $INPUTS_RELEASE_VERSION
           git add $INPUTS_RELEASE_VERSION
           git config user.email "llvmbot at llvm.org"

>From 1c65ba5f1d8c813e498edb0a77a827c7e5b9bc9e Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Thu, 30 Jul 2026 09:27:46 -0700
Subject: [PATCH 18/27] XXX: Debug

---
 .github/workflows/release-documentation.yml | 7 -------
 1 file changed, 7 deletions(-)

diff --git a/.github/workflows/release-documentation.yml b/.github/workflows/release-documentation.yml
index 7e6171f2ab1d0..f5dd9b170c3e7 100644
--- a/.github/workflows/release-documentation.yml
+++ b/.github/workflows/release-documentation.yml
@@ -130,15 +130,8 @@ jobs:
   upload-release-notes:
     name: "Upload Release Notes"
     runs-on: ubuntu-24.04
-    environment:
-      deployment: false
-      name: release
     needs:
       - release-documentation
-    if: >-
-      github.event_name != 'pull_request' &&
-      inputs.upload &&
-      !contains(inputs.release-version, 'rc')
     permissions:
       contents: read
     steps:

>From b6a39d128577f7ee07ae9ab9109246bdb1ca1a24 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Thu, 30 Jul 2026 09:45:58 -0700
Subject: [PATCH 19/27] Fix

---
 .github/workflows/release-documentation.yml | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/release-documentation.yml b/.github/workflows/release-documentation.yml
index f5dd9b170c3e7..c082c1245ed74 100644
--- a/.github/workflows/release-documentation.yml
+++ b/.github/workflows/release-documentation.yml
@@ -148,7 +148,8 @@ jobs:
         uses: actions/download-artifact at 3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
         id: download-artifact
         with:
-          name: ${{ github.workspace }}/www-releases/${{ inputs.release-version }}
+          name: release-notes
+          path: ${{ github.workspace }}/www-releases/${{ inputs.release-version }}
 
       - name: Upload Release Notes
         env:

>From d3f3fb4c19e23a3d8f9f0a82b1b770c100840be4 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Thu, 30 Jul 2026 10:00:32 -0700
Subject: [PATCH 20/27] Debug

---
 .github/workflows/release-documentation.yml | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/release-documentation.yml b/.github/workflows/release-documentation.yml
index c082c1245ed74..cf16df8fa6b78 100644
--- a/.github/workflows/release-documentation.yml
+++ b/.github/workflows/release-documentation.yml
@@ -158,7 +158,8 @@ jobs:
           INPUTS_RELEASE_VERSION: ${{ inputs.release-version }}
         run: |
           cd www-releases
-          ls -ltr www-releases/$INPUT_RELEASE_VERSION/*
+          ls -ltr *
+          ls -ltr $INPUT_RELEASE_VERSION/*
           git checkout -b $INPUTS_RELEASE_VERSION
           git add $INPUTS_RELEASE_VERSION
           git config user.email "llvmbot at llvm.org"

>From c110e71d569ea0f95e8226bb0c840961985c0948 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Thu, 30 Jul 2026 10:25:49 -0700
Subject: [PATCH 21/27] Remove debug

---
 .github/workflows/release-documentation.yml | 2 --
 1 file changed, 2 deletions(-)

diff --git a/.github/workflows/release-documentation.yml b/.github/workflows/release-documentation.yml
index cf16df8fa6b78..4ecd012d337d2 100644
--- a/.github/workflows/release-documentation.yml
+++ b/.github/workflows/release-documentation.yml
@@ -158,8 +158,6 @@ jobs:
           INPUTS_RELEASE_VERSION: ${{ inputs.release-version }}
         run: |
           cd www-releases
-          ls -ltr *
-          ls -ltr $INPUT_RELEASE_VERSION/*
           git checkout -b $INPUTS_RELEASE_VERSION
           git add $INPUTS_RELEASE_VERSION
           git config user.email "llvmbot at llvm.org"

>From 977d086160d917cd95cb0bc6176f24f05adc8d36 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Thu, 30 Jul 2026 10:27:05 -0700
Subject: [PATCH 22/27] Revert "XXX: Debug"

This reverts commit ef443b1bebd360a4aad44d46b2a63621ccaba589.
---
 .github/workflows/release-documentation.yml | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/.github/workflows/release-documentation.yml b/.github/workflows/release-documentation.yml
index 4ecd012d337d2..ccfc649ba151e 100644
--- a/.github/workflows/release-documentation.yml
+++ b/.github/workflows/release-documentation.yml
@@ -130,8 +130,15 @@ jobs:
   upload-release-notes:
     name: "Upload Release Notes"
     runs-on: ubuntu-24.04
+    environment:
+      deployment: false
+      name: release
     needs:
       - release-documentation
+    if: >-
+      github.event_name != 'pull_request' &&
+      inputs.upload &&
+      !contains(inputs.release-version, 'rc')
     permissions:
       contents: read
     steps:

>From d15670a49c5636f8fc78c8ef268391f09fd3a5e2 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Thu, 30 Jul 2026 16:56:28 -0700
Subject: [PATCH 23/27] Remove permissions

---
 .github/workflows/release-documentation.yml | 2 --
 1 file changed, 2 deletions(-)

diff --git a/.github/workflows/release-documentation.yml b/.github/workflows/release-documentation.yml
index ccfc649ba151e..58229407b0f5b 100644
--- a/.github/workflows/release-documentation.yml
+++ b/.github/workflows/release-documentation.yml
@@ -61,8 +61,6 @@ jobs:
   release-documentation:
     name: Build and Upload Release Documentation and Man Pages
     runs-on: ubuntu-24.04
-    permissions:
-      contents: read
     outputs:
       man-page-digest: ${{ steps.man-page-digest.outputs.man-page-digest }}
       man-page-artifact-id: ${{ steps.man-page-artifact-upload.outputs.artifact-id }}

>From 07b6aef5b643f2e3c41f6be62398e9e988c513dd Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Fri, 31 Jul 2026 05:11:43 -0700
Subject: [PATCH 24/27] Add missing if

---
 .github/workflows/release-documentation.yml | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/.github/workflows/release-documentation.yml b/.github/workflows/release-documentation.yml
index 58229407b0f5b..c0b188eac6d24 100644
--- a/.github/workflows/release-documentation.yml
+++ b/.github/workflows/release-documentation.yml
@@ -61,6 +61,9 @@ jobs:
   release-documentation:
     name: Build and Upload Release Documentation and Man Pages
     runs-on: ubuntu-24.04
+    if: >-
+      github.repository_owner == 'llvm' &&
+      github.event.action != 'closed'
     outputs:
       man-page-digest: ${{ steps.man-page-digest.outputs.man-page-digest }}
       man-page-artifact-id: ${{ steps.man-page-artifact-upload.outputs.artifact-id }}

>From 8f376b886e99d93f5ae78838244918abe2767211 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Fri, 31 Jul 2026 08:53:29 -0700
Subject: [PATCH 25/27] Fixes

---
 .github/workflows/release-documentation.yml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.github/workflows/release-documentation.yml b/.github/workflows/release-documentation.yml
index c0b188eac6d24..34e8e59f094d9 100644
--- a/.github/workflows/release-documentation.yml
+++ b/.github/workflows/release-documentation.yml
@@ -55,7 +55,7 @@ on:
 
 concurrency:
   group: ${{ github.workflow }}-${{ inputs.release-version || github.event.pull_request.number }}
-  cancel-in-progress: True
+  cancel-in-progress: true
 
 jobs:
   release-documentation:
@@ -102,7 +102,7 @@ jobs:
           INPUTS_RELEASE_VERSION: ${{ inputs.release-version }}
         run: |
           ./llvm/utils/release/build-docs.sh \
-            $(test -n "$INPUTS_RELEASE_VERSION" && echo -release $INPUTS_RELEASE_VERSION || echo -srcdir llvm) -no-doxygen
+            $(test -n "$INPUTS_RELEASE_VERSION" && echo -release "$INPUTS_RELEASE_VERSION" || echo -srcdir llvm) -no-doxygen
           echo "man-page-tarball-name=$(basename $(find . -iname 'llvm_man_pages-*.tar.xz'))" >> "$GITHUB_OUTPUT"
 
 

>From 9b5c4a56d7dd6b8d45e07477f0c6cfefceacadad Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Fri, 31 Jul 2026 11:37:13 -0700
Subject: [PATCH 26/27] Quote variable

---
 .github/workflows/release-documentation.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/release-documentation.yml b/.github/workflows/release-documentation.yml
index 34e8e59f094d9..82cbfd72416e0 100644
--- a/.github/workflows/release-documentation.yml
+++ b/.github/workflows/release-documentation.yml
@@ -112,7 +112,7 @@ jobs:
         env:
           TARBALL_NAME: ${{ steps.build.outputs.man-page-tarball-name }}
         run: |
-            echo "man-page-digest=$(cat "$TARBALL_NAME" | sha256sum | cut -d ' ' -f 1)" >> $GITHUB_OUTPUT
+            echo "man-page-digest=$(cat "$TARBALL_NAME" | sha256sum | cut -d ' ' -f 1)" >> "$GITHUB_OUTPUT"
 
       - id: man-page-artifact-upload
         uses: actions/upload-artifact at 043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1

>From b11533f1725d153727fb434ff23e164b60ea0ecb Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Sat, 1 Aug 2026 15:48:36 -0700
Subject: [PATCH 27/27] Fix concurrency

---
 .github/workflows/release-documentation.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/release-documentation.yml b/.github/workflows/release-documentation.yml
index 82cbfd72416e0..c19148017cfec 100644
--- a/.github/workflows/release-documentation.yml
+++ b/.github/workflows/release-documentation.yml
@@ -54,7 +54,7 @@ on:
       - closed
 
 concurrency:
-  group: ${{ github.workflow }}-${{ inputs.release-version || github.event.pull_request.number }}
+  group: release-documentation-${{ inputs.release-version || github.event.pull_request.number }}
   cancel-in-progress: true
 
 jobs:



More information about the llvm-branch-commits mailing list