Skip to content

Commit 77c1e95

Browse files
authored
Merge branch 'main' into duplicate-header-option
2 parents b29140a + ace77c2 commit 77c1e95

File tree

1,184 files changed

+20709
-10243
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,184 files changed

+20709
-10243
lines changed

.ci/monolithic-windows.sh

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ cmake -S "${MONOREPO_ROOT}"/llvm -B "${BUILD_DIR}" \
4747
-D CMAKE_EXE_LINKER_FLAGS="/MANIFEST:NO" \
4848
-D CMAKE_MODULE_LINKER_FLAGS="/MANIFEST:NO" \
4949
-D CMAKE_SHARED_LINKER_FLAGS="/MANIFEST:NO" \
50-
-D CMAKE_CXX_FLAGS="-Wno-c++98-compat -Wno-c++14-compat -Wno-unsafe-buffer-usage -Wno-old-style-cast" \
5150
-D LLVM_ENABLE_RUNTIMES="${runtimes}"
5251

5352
start-group "ninja"
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
name: Build Container
2+
description: >-
3+
Build and test a container using the standard llvm naming scheme for containers.
4+
5+
inputs:
6+
tag:
7+
description: >-
8+
The tag to use for this container.
9+
required: false
10+
container-name:
11+
description: >-
12+
The name for the container.
13+
required: true
14+
dockerfile:
15+
description: >-
16+
Path to docker file.
17+
required: false
18+
target:
19+
description: >-
20+
The container target to build 'passed to podman via ---target option'
21+
required: false
22+
context:
23+
description: >-
24+
Path to context for the container build.
25+
required: false
26+
test-command:
27+
description: >-
28+
Test command to run to ensure the container is working correctly.
29+
required: false
30+
31+
runs:
32+
using: "composite"
33+
steps:
34+
# podman is not installed by default on the ARM64 images.
35+
- name: Install Podman
36+
if: runner.arch == 'ARM64'
37+
shell: bash
38+
run: |
39+
sudo apt-get install podman
40+
41+
- name: Build Container
42+
shell: bash
43+
env:
44+
INPUT_TAG: ${{inputs.tag }}
45+
INPUT_CONTAINER_NAME: ${{ inputs.container-name }}
46+
INPUT_TARGET: ${{ inputs.target }}
47+
INPUT_DOCKERFILE: ${{ inputs.dockerfile }}
48+
INPUT_CONTEXT: ${{ inputs.context }}
49+
id: build
50+
run: |
51+
env
52+
tag="${INPUT_TAG:-$(git rev-parse --short=12 HEAD)}"
53+
54+
case "$RUNNER_ARCH" in
55+
ARM64)
56+
container_arch="arm64v8"
57+
;;
58+
*)
59+
container_arch="amd64"
60+
;;
61+
esac
62+
63+
container_name="ghcr.io/$GITHUB_REPOSITORY_OWNER/$container_arch/$INPUT_CONTAINER_NAME:$tag"
64+
container_filename="$(echo $container_name | sed -e 's/\//-/g' -e 's/:/-/g').tar"
65+
if [ -n "$INPUT_TARGET" ]; then
66+
podman_options="$podman_options --target $INPUT_TARGET"
67+
fi
68+
if [ -n "$INPUT_DOCKERFILE" ]; then
69+
podman_options="$podman_options -f $INPUT_DOCKERFILE"
70+
fi
71+
podman_options="$podman_options ${INPUT_CONTEXT:-.}"
72+
echo "Podman Options: $podman_options"
73+
74+
podman build -t $container_name $podman_options
75+
76+
podman save $container_name > $container_filename
77+
78+
echo "container-full-name=$container_name" >> $GITHUB_OUTPUT
79+
80+
- name: Create container artifact
81+
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
82+
with:
83+
name: ${{ inputs.container-name }}-${{ runner.arch }}
84+
path: "*.tar"
85+
retention-days: 14
86+
87+
- name: Test container
88+
shell: bash
89+
if: inputs.test-command
90+
env:
91+
INPUT_TEST_COMMAND: ${{ inputs.test-command }}
92+
CONTAINER_FULL_NAME: ${{ steps.build.outputs.container-full-name }}
93+
run: |
94+
podman run --pull=never --rm -it $CONTAINER_FULL_NAME /usr/bin/bash -x -c "$INPUT_TEST_COMMAND"
95+
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
name: Push Container
2+
description: >-
3+
Download all container artifacts for this job and push them to the GitHub registry.
4+
5+
inputs:
6+
token:
7+
description: >-
8+
Token to use to authenticate with the container registry.
9+
required: true
10+
11+
runs:
12+
using: "composite"
13+
steps:
14+
- name: Download container
15+
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
16+
17+
- name: Push Container
18+
env:
19+
GITHUB_TOKEN: ${{ inputs.token }}
20+
shell: bash
21+
run: |
22+
function push_container {
23+
image_name=$1
24+
latest_name=$(echo $image_name | sed 's/:[a-f0-9]\+$/:latest/g')
25+
podman tag $image_name $latest_name
26+
echo "Pushing $image_name ..."
27+
podman push --compression-format=zstd $image_name
28+
echo "Pushing $latest_name ..."
29+
podman push --compression-format=zstd $latest_name
30+
}
31+
32+
podman login -u ${{ github.actor }} -p $GITHUB_TOKEN ghcr.io
33+
for f in $(find . -iname '*.tar'); do
34+
image_name=$(podman load -q -i $f | sed 's/Loaded image: //g')
35+
push_container $image_name
36+
37+
if echo $image_name | grep '/amd64/'; then
38+
# For amd64, create an alias with the arch component removed.
39+
# This matches the convention used on dockerhub.
40+
default_image_name=$(echo $(dirname $(dirname $image_name))/$(basename $image_name))
41+
podman tag $image_name $default_image_name
42+
push_container $default_image_name
43+
fi
44+
done

.github/workflows/bazel-checks.yml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,26 @@ jobs:
3030
- name: Run Buildifier
3131
run: |
3232
buildifier --mode=check $(find ./utils/bazel -name *BUILD*)
33+
34+
bazel-build:
35+
name: "Bazel Build/Test"
36+
runs-on: llvm-premerge-linux-runners
37+
if: github.repository == 'llvm/llvm-project'
38+
steps:
39+
- name: Fetch LLVM sources
40+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
41+
# TODO(boomanaiden154): We should use a purpose built container for this. Move
42+
# over when we have fixed the issues with using custom containers with Github
43+
# ARC in GKE.
44+
- name: Setup System Dependencies
45+
run: |
46+
sudo apt-get update
47+
sudo apt-get install -y libmpfr-dev libpfm4-dev
48+
sudo curl -L https://github.com/bazelbuild/bazelisk/releases/download/v1.27.0/bazelisk-amd64.deb > /tmp/bazelisk.deb
49+
sudo apt-get install -y /tmp/bazelisk.deb
50+
rm /tmp/bazelisk.deb
51+
- name: Build/Test
52+
working-directory: utils/bazel
53+
run: |
54+
bazelisk test --config=ci --sandbox_base="" \
55+
@llvm-project//llvm/unittests:adt_tests

.github/workflows/build-ci-container-tooling.yml

Lines changed: 28 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,30 @@ on:
1212
- '.github/workflows/containers/github-action-ci-tooling/**'
1313
- llvm/utils/git/requirements_formatting.txt
1414
- llvm/utils/git/requirements_linting.txt
15+
- '.github/actions/build-container/**'
16+
- '.github/actions/push-container/**'
1517
pull_request:
1618
paths:
1719
- .github/workflows/build-ci-container-tooling.yml
1820
- '.github/workflows/containers/github-action-ci-tooling/**'
1921
- llvm/utils/git/requirements_formatting.txt
2022
- llvm/utils/git/requirements_linting.txt
23+
- '.github/actions/build-container/**'
24+
- '.github/actions/push-container/**'
2125

2226
jobs:
2327
build-ci-container-tooling:
28+
name: Build Container ${{ matrix.container-name }}
2429
if: github.repository_owner == 'llvm'
2530
runs-on: ubuntu-24.04
31+
strategy:
32+
fail-fast: false
33+
matrix:
34+
include:
35+
- container-name: format
36+
test-command: 'cd $HOME && clang-format --version | grep version && git-clang-format -h | grep usage && black --version | grep black'
37+
- container-name: lint
38+
test-command: 'cd $HOME && clang-tidy --version | grep version && clang-tidy-diff.py -h | grep usage'
2639
steps:
2740
- name: Checkout LLVM
2841
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
@@ -32,48 +45,15 @@ jobs:
3245
llvm/utils/git/requirements_formatting.txt
3346
llvm/utils/git/requirements_linting.txt
3447
clang-tools-extra/clang-tidy/tool/clang-tidy-diff.py
48+
.github/actions/build-container
3549
36-
- name: Write Variables
37-
id: vars
38-
run: |
39-
tag=$(git rev-parse --short=12 HEAD)
40-
container_name="ghcr.io/$GITHUB_REPOSITORY_OWNER/amd64/ci-ubuntu-24.04"
41-
echo "container-name-format=$container_name-code-format" >> $GITHUB_OUTPUT
42-
echo "container-name-lint=$container_name-code-lint" >> $GITHUB_OUTPUT
43-
echo "container-name-format-tag=$container_name-format:$tag" >> $GITHUB_OUTPUT
44-
echo "container-name-lint-tag=$container_name-lint:$tag" >> $GITHUB_OUTPUT
45-
echo "container-format-filename=$(echo $container_name-format:$tag | sed -e 's/\//-/g' -e 's/:/-/g').tar" >> $GITHUB_OUTPUT
46-
echo "container-lint-filename=$(echo $container_name-lint:$tag | sed -e 's/\//-/g' -e 's/:/-/g').tar" >> $GITHUB_OUTPUT
47-
48-
- name: Build container
49-
run: |
50-
podman build --target ci-container-code-format \
51-
-f .github/workflows/containers/github-action-ci-tooling/Dockerfile \
52-
-t ${{ steps.vars.outputs.container-name-format-tag }} .
53-
podman build --target ci-container-code-lint \
54-
-f .github/workflows/containers/github-action-ci-tooling/Dockerfile \
55-
-t ${{ steps.vars.outputs.container-name-lint-tag }} .
56-
57-
# Save the container so we have it in case the push fails. This also
58-
# allows us to separate the push step into a different job so we can
59-
# maintain minimal permissions while building the container.
60-
- name: Save container image
61-
run: |
62-
podman save ${{ steps.vars.outputs.container-name-format-tag }} > ${{ steps.vars.outputs.container-format-filename }}
63-
podman save ${{ steps.vars.outputs.container-name-lint-tag }} > ${{ steps.vars.outputs.container-lint-filename }}
64-
65-
- name: Upload container image
66-
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
50+
- name: Build Container
51+
uses: ./.github/actions/build-container
6752
with:
68-
name: container-amd64
69-
path: "*.tar"
70-
retention-days: 14
71-
72-
- name: Test Container
73-
run: |
74-
# Use --pull=never to ensure we are testing the just built image.
75-
podman run --pull=never --rm -it ${{ steps.vars.outputs.container-name-format-tag }} /usr/bin/bash -x -c 'cd $HOME && clang-format --version | grep version && git-clang-format -h | grep usage && black --version | grep black'
76-
podman run --pull=never --rm -it ${{ steps.vars.outputs.container-name-lint-tag }} /usr/bin/bash -x -c 'cd $HOME && clang-tidy --version | grep version && clang-tidy-diff.py -h | grep usage'
53+
container-name: ci-ubuntu-24.04-${{ matrix.container-name }}
54+
dockerfile: .github/workflows/containers/github-action-ci-tooling/Dockerfile
55+
target: ci-container-code-${{ matrix.container-name }}
56+
test-command: ${{ matrix.test-command }}
7757

7858
push-ci-container:
7959
if: github.event_name == 'push'
@@ -82,34 +62,13 @@ jobs:
8262
permissions:
8363
packages: write
8464
runs-on: ubuntu-24.04
85-
env:
86-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
8765
steps:
88-
- name: Download container
89-
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
90-
91-
- name: Push Container
92-
run: |
93-
function push_container {
94-
image_name=$1
95-
latest_name=$(echo $image_name | sed 's/:[a-f0-9]\+$/:latest/g')
96-
podman tag $image_name $latest_name
97-
echo "Pushing $image_name ..."
98-
podman push $image_name
99-
echo "Pushing $latest_name ..."
100-
podman push $latest_name
101-
}
102-
103-
podman login -u ${{ github.actor }} -p $GITHUB_TOKEN ghcr.io
104-
for f in $(find . -iname '*.tar'); do
105-
image_name=$(podman load -q -i $f | sed 's/Loaded image: //g')
106-
push_container $image_name
66+
- name: Checkout LLVM
67+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
68+
with:
69+
sparse-checkout: |
70+
.github/actions/push-container
10771
108-
if echo $image_name | grep '/amd64/'; then
109-
# For amd64, create an alias with the arch component removed.
110-
# This matches the convention used on dockerhub.
111-
default_image_name=$(echo $(dirname $(dirname $image_name))/$(basename $image_name))
112-
podman tag $image_name $default_image_name
113-
push_container $default_image_name
114-
fi
115-
done
72+
- uses: ./.github/actions/push-container
73+
with:
74+
token: ${{ secrets.GITHUB_TOKEN }}

0 commit comments

Comments
 (0)