Skip to content
Draft
Show file tree
Hide file tree
Changes from 60 commits
Commits
Show all changes
69 commits
Select commit Hold shift + click to select a range
2bc5c1a
Add Windows release binary builds
tstellar Jul 26, 2025
860dff2
Fix
tstellar Jul 26, 2025
6533e44
Fix
tstellar Jul 26, 2025
04381bb
Fix
tstellar Jul 26, 2025
1a9dddd
Fix
tstellar Jul 27, 2025
d2dcb30
Fix
tstellar Aug 11, 2025
02bb6da
Merge branch 'main' into windows-release-build
tstellar Oct 4, 2025
ccd8dc7
Disable tests
tstellar Oct 4, 2025
fd92cc4
Disable tests more
tstellar Oct 4, 2025
abd2683
Change ref
tstellar Oct 4, 2025
efb08ab
Use subst
tstellar Oct 18, 2025
b349aea
Merge remote-tracking branch 'origin/main' into windows-release-build
tstellar Oct 18, 2025
23f5d4a
Use local
tstellar Oct 18, 2025
4216795
Fix
tstellar Oct 19, 2025
006890e
Fix
tstellar Oct 19, 2025
824b6ba
XXX: fix
tstellar Oct 19, 2025
7da80e7
Fix typo
tstellar Oct 19, 2025
3c6be6c
Fix paths
tstellar Oct 21, 2025
71d8dea
Add offload
tstellar Oct 21, 2025
3e7b095
Disable openmp
tstellar Oct 21, 2025
a67009d
debug
tstellar Oct 21, 2025
4dc458a
debug
tstellar Oct 21, 2025
b1edfb3
Remove subst
tstellar Oct 21, 2025
c7d970e
Remove diff
tstellar Oct 21, 2025
84e8055
Fixes
tstellar Oct 21, 2025
4e92806
Don't run tests so many times
tstellar Oct 21, 2025
33283a8
Autocrlf
tstellar Oct 21, 2025
80daeaf
Fix typo
tstellar Oct 21, 2025
c6b62cb
Fix
tstellar Oct 21, 2025
f12b824
Fix
tstellar Oct 21, 2025
83d7b48
Setup windows
tstellar Oct 22, 2025
f0e129a
Merge remote-tracking branch 'origin/main' into HEAD
tstellar Nov 14, 2025
7c70b55
Update
tstellar Nov 14, 2025
16d8f1e
Fix version
tstellar Nov 17, 2025
0e922b6
Remove subst
tstellar Nov 17, 2025
a28d6ca
No subst
tstellar Nov 17, 2025
4c28998
Revert "No subst"
tstellar Nov 17, 2025
44da3b2
Revert "Remove subst"
tstellar Nov 17, 2025
8b243f2
Fixes for release script
tstellar Nov 17, 2025
eddcf32
Setup python
tstellar Nov 17, 2025
c1d9b44
Try to fix python
tstellar Nov 17, 2025
676d58f
More python removal
tstellar Nov 18, 2025
261e061
Fix python again
tstellar Nov 18, 2025
3890307
Fix python
tstellar Nov 18, 2025
7671714
Try with python3.9
tstellar Nov 18, 2025
36a3d0c
Debug
tstellar Nov 19, 2025
f613030
Debug
tstellar Nov 19, 2025
d0587a9
Debug
tstellar Nov 19, 2025
302d295
debug
tstellar Nov 20, 2025
2ffbafc
Disable tests
tstellar Nov 20, 2025
aee79f4
Retry
tstellar Nov 20, 2025
d463f0b
fixes
tstellar Nov 21, 2025
dd7aa0e
Add upload
tstellar Nov 22, 2025
f48bd50
Fix typo
tstellar Nov 22, 2025
a636473
Fix typo
tstellar Nov 22, 2025
af9dc8b
Fix typo
tstellar Nov 22, 2025
cd0aee7
Undo script hacks
tstellar Nov 22, 2025
81a0b9c
workflows: Factor out artifact attestation and upload into a composit…
tstellar Nov 24, 2025
1175fa4
Merge commit '81a0b9c35c57' into windows-release-build
tstellar Nov 26, 2025
5105f2d
Lots of changes
tstellar Nov 26, 2025
0994cfb
Fix
tstellar Nov 26, 2025
16e2c77
Fixes to disable python
tstellar Nov 26, 2025
60eb734
Fix verbose flag
tstellar Nov 26, 2025
0e5f6bd
lldb debug
tstellar Nov 26, 2025
911b195
Debug
tstellar Nov 26, 2025
23ac07e
Debug
tstellar Nov 26, 2025
f298a1d
Debug
tstellar Nov 26, 2025
b9b23cb
Python fix
tstellar Nov 26, 2025
1764bd5
Fix moving binaries
tstellar Nov 27, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
91 changes: 91 additions & 0 deletions .github/workflows/release-binaries-windows.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
name: Release Binaries Windows

on:
pull_request:
workflow_dispatch:
inputs:
release-version:
description: 'Release Version'
required: false
type: string
upload:
description: 'Upload binaries to the release page'
required: true
default: false


permissionks:
contents: read # Default everything to read-only

jobs:
build-windows-release:
runs-on: ${{ matrix.runs-on }}
if: github.repository_owner == 'llvm'
strategy:
fail-fast: false
matrix:
runs-on:
- depot-windows-2022-16
- windows-11-arm
steps:
- name: Setup crlf
run: |
git config --global core.autocrlf false
- name: Setup Python
id: setup-python
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
with:
python-version: '3.9'
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1A
with:
ref: ${{ (inputs.release-version && format('llvmorg-{0}', inputs.release-version)) || github.sha }}
- id: version
uses: ./.github/workflows/get-llvm-version
- id: variables
shell: bash
run: |
if [ -z "${{ inputs.release-version }}" ]; then
version_string="${{ format('{0}.{1}.{2}', steps.version.outputs.major, steps.version.outputs.minor, steps.version.outputs.patch) }}"
else
version_string="${{inputs.release-version }}"
fi
case $RUNNER_ARCH in
"X64" )
installer_arch="win64"
tar_arch="x86_64"
installer_dir_arch="amd64"
script_options="--x64"
;;
"ARM64" )
installer_arch="woa64"
tar_arch="aarch64"
installer_dir_arch="arm64"
script_options="--arm64"
;;
esac
echo "installer-name=LLVM-$version_string-$installer_arch.exe" >> $GITHUB_OUTPUT
echo "tar-name=$tar_arch-pc-windows-msvc.tar.xz" >> $GITHUB_OUTPUT
echo "installer-dir=build_$installer_dir_arch" >> $GITHUB_OUTPUT
echo "script-options=$script_options" >> $GITHUB_OUTPUT
echo "version-string=$version_string" >> $GITHUB_OUTPUT
- env:
LDFLAGS: "-Wl,--verbose"
run: |
subst S: ${{ github.workspace }}
cd S:\llvm\utils\release\
.\build_llvm_release.bat ${{ steps.variables.outputs.script-options }} --version ${{ steps.variables.outputs.version-string }} --local-python --skip-checkout
# Move installer to top-level directory so it is easier to upload.
mv ${{ steps.variables.outputs.installer-dir }}/${{ steps.variables.outputs.installer-name }} .

- name: Upload Installer
uses: ./.github/workflows/upload-release-artifact
with:
files: ${{ steps.variables.outputs.installer-name }}
upload: false

- name: Upload Tar
uses: ./.github/workflows/upload-release-artifact
with:
files: ${{ steps.variables.outputs.tar-name }}
upload: false

32 changes: 10 additions & 22 deletions .github/workflows/release-sources.yml
Original file line number Diff line number Diff line change
Expand Up @@ -79,30 +79,18 @@ jobs:
run: |
pip install --require-hashes -r ./llvm/utils/git/requirements.txt

- name: Check Permissions
if: github.event_name != 'pull_request'
env:
GITHUB_TOKEN: ${{ github.token }}
USER_TOKEN: ${{ secrets.RELEASE_TASKS_USER_TOKEN }}
run: |
./llvm/utils/release/./github-upload-release.py --token "$GITHUB_TOKEN" --user ${{ github.actor }} --user-token "$USER_TOKEN" check-permissions
- name: Create Tarballs
run: |
./llvm/utils/release/export.sh ${{ needs.inputs.outputs.export-args }}
- name: Attest Build Provenance
if: github.event_name != 'pull_request'
id: provenance
uses: actions/attest-build-provenance@977bb373ede98d70efdf65b84cb5f73e068dcc2a # v3.0.0
with:
subject-path: "*.xz"
- if: github.event_name != 'pull_request'
run: |
mv ${{ steps.provenance.outputs.bundle-path }} .
- name: Create Tarball Artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
path: |
*.xz
attestation.jsonl

- name: Store Tarball Names
id: filenames
run: |
echo "filenames=*.xz" >> $GITHUB_OUTPUT

- name: Upload Artifacts
uses: ./.github/workflows/upload-release-artifact
with:
files: ${{ steps.filenames.outputs.filenames }}
attestation-name: ${{ needs.inputs.outputs.ref }}-sources
upload: false
92 changes: 92 additions & 0 deletions .github/workflows/upload-release-artifact/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
name: Upload Release Artifact
description: >-
Upload release artifact along with an attestation. The action assumes that
the llvm-project repository has already been checked out.
inputs:
files:
description: >-
Files to be uploaded. This can contain bash wildcards.
required: true
release-version:
description: >-
The release where the artifact will be attached.
required: true
upload:
description: >-
Whether or not to upload the file and attestation to the release. If this
is set to false, then the atteastion will still be generated and attached as
an artifact to the workflow, but won't be uploaded to the release.
default: true
user-token:
description: >-
Token with premissions to read llvm teams that is used to ensure that
the person who triggred the action has permission to upload artifacts.
This is required if upload is true.
requred: false
attestation-name:
description: >-
This will be used for the artifact name that is attached to the workflow and
will be used as the basename for the attestation file which will be called
$attestation-name.jsonl. If this is not set, it will default
to the falue of `files`.
required: false


runs:
using: "composite"
steps:
- name: Collect Variables
id: vars
shell: bash
env:
INPUTS_ATTESTATION_NAME: ${{ inputs.attestation-name }}
INPUTS_FILES: ${{ inputs.files }}
run: |
if [ -z "$INPUTS_ATTESTATION_NAME" ]; then
name="$INPUTS_FILES"
else
name="$INPUTS_ATTESTATION_NAME"
fi
echo "attestation-name=$name" >> $GITHUB_OUTPUT
- name: Attest Build Provenance
id: provenance
uses: actions/attest-build-provenance@977bb373ede98d70efdf65b84cb5f73e068dcc2a # v3.0.0
with:
subject-path: ${{ inputs.files }}

- name: Rename attestation file
shell: bash
run: |
mv ${{ steps.provenance.outputs.bundle-path }} ${{ steps.vars.outputs.attestation-name }}.jsonl

- name: Upload Build Provenance
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: ${{ steps.vars.outputs.attestation-name }}
path: |
${{ inputs.files }}
${{ steps.vars.outputs.attestation-name }}.jsonl

- name: Install Python Requirements
if: inputs.upload == 'true'
shell: bash
run: |
pip install --require-hashes -r ./llvm/utils/git/requirements.txt

- name: Check Permissions
if: inputs.upload == 'true'
env:
GITHUB_TOKEN: ${{ github.token }}
USER_TOKEN: ${{ inputs.user-token }}
shell: bash
run: |
./llvm/utils/release/./github-upload-release.py --token "$GITHUB_TOKEN" --user "$GITHUB_ACTOR" --user-token "$USER_TOKEN" check-permissions
- name: Upload Release
shell: bash
if: inputs.upload == 'true'
run: |
./llvm/utils/release/github-upload-release.py \
--token ${{ github.token }} \
--release ${{ inputs.release-version }} \
upload \
--files ${{ inputs.files }} ${{ steps.vars.outputs.attestation-name}}.jsonl
2 changes: 1 addition & 1 deletion llvm/utils/release/build_llvm_release.bat
Original file line number Diff line number Diff line change
Expand Up @@ -347,7 +347,7 @@ if "%arch%"=="amd64" (
set filename=clang+llvm-%version%-aarch64-pc-windows-msvc
)
cmake -GNinja %cmake_flags% %cmake_profile_flags% -DLLVM_INSTALL_TOOLCHAIN_ONLY=OFF ^
-DCMAKE_INSTALL_PREFIX=%build_dir%/%filename% ..\llvm-project\llvm || exit /b 1
-DCMAKE_INSTALL_PREFIX=%build_dir%/%filename% %llvm_src%\llvm || exit /b 1
ninja install || exit /b 1
:: check llvm_config is present & returns something
%build_dir%/%filename%/bin/llvm-config.exe --bindir || exit /b 1
Expand Down
Loading