Skip to content

workflows: Re-implement the get-llvm-version action as a composite #101554

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 3 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
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
26 changes: 26 additions & 0 deletions .github/workflows/get-llvm-version/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: Get LLVM Version
description: >-
Get the LLVM version from the llvm-project source tree. This action assumes
the llvm-project sources have already been checked out into GITHUB_WORKSPACE.

outputs:
major:
description: LLVM major version
value: ${{ steps.version.outputs.major }}
minor:
description: LLVM minor version
value: ${{ steps.version.outputs.minor }}
patch:
description: LLVM patch version
value: ${{ steps.version.outputs.patch }}

runs:
using: "composite"
steps:
- name: Get Version
shell: bash
id: version
run: |
for v in major minor patch; do
echo "$v=`llvm/utils/release/get-llvm-version.sh --$v`" >> $GITHUB_OUTPUT
done
16 changes: 8 additions & 8 deletions .github/workflows/libclang-abi-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,9 @@ jobs:
ABI_HEADERS: ${{ steps.vars.outputs.ABI_HEADERS }}
ABI_LIBS: ${{ steps.vars.outputs.ABI_LIBS }}
BASELINE_VERSION_MAJOR: ${{ steps.vars.outputs.BASELINE_VERSION_MAJOR }}
LLVM_VERSION_MAJOR: ${{ steps.version.outputs.LLVM_VERSION_MAJOR }}
LLVM_VERSION_MINOR: ${{ steps.version.outputs.LLVM_VERSION_MINOR }}
LLVM_VERSION_PATCH: ${{ steps.version.outputs.LLVM_VERSION_PATCH }}
LLVM_VERSION_MAJOR: ${{ steps.version.outputs.major }}
LLVM_VERSION_MINOR: ${{ steps.version.outputs.minor }}
LLVM_VERSION_PATCH: ${{ steps.version.outputs.patch }}
steps:
- name: Checkout source
uses: actions/checkout@v4
Expand All @@ -44,14 +44,14 @@ jobs:

- name: Get LLVM version
id: version
uses: llvm/actions/get-llvm-version@main
uses: ./.github/workflows/get-llvm-version

- name: Setup Variables
id: vars
run: |
remote_repo='https://github.com/llvm/llvm-project'
if [ ${{ steps.version.outputs.LLVM_VERSION_PATCH }} -eq 0 ]; then
major_version=$(( ${{ steps.version.outputs.LLVM_VERSION_MAJOR }} - 1))
if [ ${{ steps.version.outputs.patch }} -eq 0 ]; then
major_version=$(( ${{ steps.version.outputs.major }} - 1))
baseline_ref="llvmorg-$major_version.1.0"

# If there is a minor release, we want to use that as the base line.
Expand All @@ -73,8 +73,8 @@ jobs:
} >> "$GITHUB_OUTPUT"
else
{
echo "BASELINE_VERSION_MAJOR=${{ steps.version.outputs.LLVM_VERSION_MAJOR }}"
echo "BASELINE_REF=llvmorg-${{ steps.version.outputs.LLVM_VERSION_MAJOR }}.1.0"
echo "BASELINE_VERSION_MAJOR=${{ steps.version.outputs.major }}"
echo "BASELINE_REF=llvmorg-${{ steps.version.outputs.major }}.1.0"
echo "ABI_HEADERS=."
echo "ABI_LIBS=libclang.so libclang-cpp.so"
} >> "$GITHUB_OUTPUT"
Expand Down
14 changes: 7 additions & 7 deletions .github/workflows/llvm-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,9 @@ jobs:
ABI_HEADERS: ${{ steps.vars.outputs.ABI_HEADERS }}
BASELINE_VERSION_MAJOR: ${{ steps.vars.outputs.BASELINE_VERSION_MAJOR }}
BASELINE_VERSION_MINOR: ${{ steps.vars.outputs.BASELINE_VERSION_MINOR }}
LLVM_VERSION_MAJOR: ${{ steps.version.outputs.LLVM_VERSION_MAJOR }}
LLVM_VERSION_MINOR: ${{ steps.version.outputs.LLVM_VERSION_MINOR }}
LLVM_VERSION_PATCH: ${{ steps.version.outputs.LLVM_VERSION_PATCH }}
LLVM_VERSION_MAJOR: ${{ steps.version.outputs.major }}
LLVM_VERSION_MINOR: ${{ steps.version.outputs.minor }}
LLVM_VERSION_PATCH: ${{ steps.version.outputs.patch }}
steps:
- name: Checkout source
uses: actions/checkout@v4
Expand All @@ -54,7 +54,7 @@ jobs:

- name: Get LLVM version
id: version
uses: llvm/actions/get-llvm-version@main
uses: ./.github/workflows/get-llvm-version

- name: Setup Variables
id: vars
Expand All @@ -66,14 +66,14 @@ jobs:
# 18.1.0 We want to check 17.0.x
# 18.1.1 We want to check 18.1.0
echo "BASELINE_VERSION_MINOR=1" >> "$GITHUB_OUTPUT"
if [ ${{ steps.version.outputs.LLVM_VERSION_PATCH }} -eq 0 ]; then
if [ ${{ steps.version.outputs.patch }} -eq 0 ]; then
{
echo "BASELINE_VERSION_MAJOR=$(( ${{ steps.version.outputs.LLVM_VERSION_MAJOR }} - 1))"
echo "BASELINE_VERSION_MAJOR=$(( ${{ steps.version.outputs.major }} - 1))"
echo "ABI_HEADERS=llvm-c"
} >> "$GITHUB_OUTPUT"
else
{
echo "BASELINE_VERSION_MAJOR=${{ steps.version.outputs.LLVM_VERSION_MAJOR }}"
echo "BASELINE_VERSION_MAJOR=${{ steps.version.outputs.major }}"
echo "ABI_HEADERS=."
} >> "$GITHUB_OUTPUT"
fi
Expand Down
86 changes: 86 additions & 0 deletions llvm/utils/release/get-llvm-version.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
#!/usr/bin/env bash
#===-- get-llvm-version.sh - Test the LLVM release candidates --------------===#
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The comment here is copy and paste wrong right?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed here: PR#101569. I'll merge #101569 and then backport the change to the release branch.

#
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
# See https://llvm.org/LICENSE.txt for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
#
#===------------------------------------------------------------------------===#
#
# Extract the current LLVM version from the CMake files.
#
#===------------------------------------------------------------------------===#

cmake_file=$(dirname $0)/../../../cmake/Modules/LLVMVersion.cmake
function usage() {
echo "usage: `basename $0`"
echo ""
echo "Calling this script with now options will output the full version: e.g. 19.1.0"
echo " --cmake-file Path to cmake file with the version (default: $cmake_file)
echo " You can use at most one of the following options:
echo " --major Print the major version."
echo " --minor Print the minor version."
echo " --patch Print the patch version."
}

print=""

while [ $# -gt 0 ]; do
case $1 in
--cmake-file )
shift
cmake_file="$1"
;;
--major)
if [ -n "$print" ]; then
echo "Only one of --major, --minor, --patch is allowed"
exit 1
fi
print="major"
;;
--minor)
if [ -n "$print" ]; then
echo "Only one of --major, --minor, --patch is allowed"
exit 1
fi
print="minor"
;;
--patch)
if [ -n "$print" ]; then
echo "Only one of --major, --minor, --patch is allowed"
exit 1
fi
print="patch"
;;
--help | -h | -\? )
usage
exit 0
;;
* )
echo "unknown option: $1"
usage
exit 1
;;
esac
shift
done

major=`grep -o 'LLVM_VERSION_MAJOR[[:space:]]\+\([0-9]\+\)' $cmake_file | grep -o '[0-9]\+'`
minor=`grep -o 'LLVM_VERSION_MINOR[[:space:]]\+\([0-9]\+\)' $cmake_file | grep -o '[0-9]\+'`
patch=`grep -o 'LLVM_VERSION_PATCH[[:space:]]\+\([0-9]\+\)' $cmake_file | grep -o '[0-9]\+'`

case $print in
major)
echo "$major"
;;
minor)
echo "$minor"
;;
patch)
echo "$patch"
;;
*)
echo "$major.$minor.$patch"
;;
esac

Loading