[libcxx-commits] [libcxx] [llvm] [CI][Github] Add linux premerge workflow (PR #119635)

Aiden Grossman via libcxx-commits libcxx-commits at lists.llvm.org
Sat Dec 14 14:03:00 PST 2024


https://github.com/boomanaiden154 updated https://github.com/llvm/llvm-project/pull/119635

>From 6ffa419968dd2c10c11f66c380fba2f77a18767a Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Wed, 11 Dec 2024 09:38:33 +0000
Subject: [PATCH 01/42] [CI] Refactor common functionality into separate script

This patch refactors some common functionality present in the CI scripts
to a separate shell script. This is mainly intended to make it easier to
reuse this functionality inside of a Github Actions pipeline as we make
the switch.
---
 .ci/compute-projects.sh                  | 165 +++++++++++++++++++++
 .ci/generate-buildkite-pipeline-premerge | 179 +----------------------
 2 files changed, 166 insertions(+), 178 deletions(-)
 create mode 100644 .ci/compute-projects.sh

diff --git a/.ci/compute-projects.sh b/.ci/compute-projects.sh
new file mode 100644
index 00000000000000..b33158339ef3fd
--- /dev/null
+++ b/.ci/compute-projects.sh
@@ -0,0 +1,165 @@
+#!/usr/bin/env bash
+#===----------------------------------------------------------------------===##
+#
+# 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
+#
+#===----------------------------------------------------------------------===##
+
+#
+# This file contains functions to compute which projects should be built by CI
+# systems and is intended to provide common functionality applicable across
+# multiple systems during a transition period.
+#
+
+function compute-projects-to-test() {
+  isForWindows=$1
+  shift
+  projects=${@}
+  for project in ${projects}; do
+    echo "${project}"
+    case ${project} in
+    lld)
+      for p in bolt cross-project-tests; do
+        echo $p
+      done
+    ;;
+    llvm)
+      for p in bolt clang clang-tools-extra lld lldb mlir polly; do
+        echo $p
+      done
+      # Flang is not stable in Windows CI at the moment
+      if [[ $isForWindows == 0 ]]; then
+        echo flang
+      fi
+    ;;
+    clang)
+      # lldb is temporarily removed to alleviate Linux pre-commit CI waiting times
+      for p in clang-tools-extra compiler-rt cross-project-tests; do
+        echo $p
+      done
+    ;;
+    clang-tools-extra)
+      echo libc
+    ;;
+    mlir)
+      # Flang is not stable in Windows CI at the moment
+      if [[ $isForWindows == 0 ]]; then
+        echo flang
+      fi
+    ;;
+    *)
+      # Nothing to do
+    ;;
+    esac
+  done
+}
+
+function compute-runtimes-to-test() {
+  projects=${@}
+  for project in ${projects}; do
+    case ${project} in
+    clang)
+      for p in libcxx libcxxabi libunwind; do
+        echo $p
+      done
+    ;;
+    *)
+      # Nothing to do
+    ;;
+    esac
+  done
+}
+
+function add-dependencies() {
+  projects=${@}
+  for project in ${projects}; do
+    echo "${project}"
+    case ${project} in
+    bolt)
+      for p in clang lld llvm; do
+        echo $p
+      done
+    ;;
+    cross-project-tests)
+      for p in lld clang; do
+        echo $p
+      done
+    ;;
+    clang-tools-extra)
+      for p in llvm clang; do
+        echo $p
+      done
+    ;;
+    compiler-rt|libc|openmp)
+      echo clang lld
+    ;;
+    flang|lldb|libclc)
+      for p in llvm clang; do
+        echo $p
+      done
+    ;;
+    lld|mlir|polly)
+      echo llvm
+    ;;
+    *)
+      # Nothing to do
+    ;;
+    esac
+  done
+}
+
+# Prints only projects that are both present in $modified_dirs and the passed
+# list.
+function keep-modified-projects() {
+  projects=${@}
+  modified_dirs=${1}
+  for project in ${projects}; do
+    if echo "$modified_dirs" | grep -q -E "^${project}$"; then
+      echo "${project}"
+    fi
+  done
+}
+
+function check-targets() {
+  # Do not use "check-all" here because if there is "check-all" plus a
+  # project specific target like "check-clang", that project's tests
+  # will be run twice.
+  projects=${@}
+  for project in ${projects}; do
+    case ${project} in
+    clang-tools-extra)
+      echo "check-clang-tools"
+    ;;
+    compiler-rt)
+      echo "check-compiler-rt"
+    ;;
+    cross-project-tests)
+      echo "check-cross-project"
+    ;;
+    libcxx)
+      echo "check-cxx"
+    ;;
+    libcxxabi)
+      echo "check-cxxabi"
+    ;;
+    libunwind)
+      echo "check-unwind"
+    ;;
+    lldb)
+      echo "check-lldb"
+    ;;
+    pstl)
+      # Currently we do not run pstl tests in CI.
+    ;;
+    libclc)
+      # Currently there is no testing for libclc.
+    ;;
+    *)
+      echo "check-${project}"
+    ;;
+    esac
+  done
+}
+
diff --git a/.ci/generate-buildkite-pipeline-premerge b/.ci/generate-buildkite-pipeline-premerge
index 190dd1e5ba5af0..ddcaca813be3c0 100755
--- a/.ci/generate-buildkite-pipeline-premerge
+++ b/.ci/generate-buildkite-pipeline-premerge
@@ -52,184 +52,7 @@ modified_dirs=$(echo "$MODIFIED_FILES" | cut -d'/' -f1 | sort -u)
 echo "Directories modified:" >&2
 echo "$modified_dirs" >&2
 
-function compute-projects-to-test() {
-  isForWindows=$1
-  shift
-  projects=${@}
-  for project in ${projects}; do
-    echo "${project}"
-    case ${project} in
-    lld)
-      for p in bolt cross-project-tests; do
-        echo $p
-      done
-    ;;
-    llvm)
-      for p in bolt clang clang-tools-extra lld lldb mlir polly; do
-        echo $p
-      done
-      # Flang is not stable in Windows CI at the moment
-      if [[ $isForWindows == 0 ]]; then
-        echo flang
-      fi
-    ;;
-    clang)
-      # lldb is temporarily removed to alleviate Linux pre-commit CI waiting times
-      for p in clang-tools-extra compiler-rt cross-project-tests; do
-        echo $p
-      done
-    ;;
-    clang-tools-extra)
-      echo libc
-    ;;
-    mlir)
-      # Flang is not stable in Windows CI at the moment
-      if [[ $isForWindows == 0 ]]; then
-        echo flang
-      fi
-    ;;
-    *)
-      # Nothing to do
-    ;;
-    esac
-  done
-}
-
-function compute-runtimes-to-test() {
-  projects=${@}
-  for project in ${projects}; do
-    case ${project} in
-    clang)
-      for p in libcxx libcxxabi libunwind; do
-        echo $p
-      done
-    ;;
-    *)
-      # Nothing to do
-    ;;
-    esac
-  done
-}
-
-function add-dependencies() {
-  projects=${@}
-  for project in ${projects}; do
-    echo "${project}"
-    case ${project} in
-    bolt)
-      for p in clang lld llvm; do
-        echo $p
-      done
-    ;;
-    cross-project-tests)
-      for p in lld clang; do
-        echo $p
-      done
-    ;;
-    clang-tools-extra)
-      for p in llvm clang; do
-        echo $p
-      done
-    ;;
-    compiler-rt|libc|openmp)
-      echo clang lld
-    ;;
-    flang|lldb|libclc)
-      for p in llvm clang; do
-        echo $p
-      done
-    ;;
-    lld|mlir|polly)
-      echo llvm
-    ;;
-    *)
-      # Nothing to do
-    ;;
-    esac
-  done
-}
-
-function exclude-linux() {
-  projects=${@}
-  for project in ${projects}; do
-    case ${project} in
-    cross-project-tests) ;; # tests failing
-    openmp)              ;; # https://github.com/google/llvm-premerge-checks/issues/410
-    *)
-      echo "${project}"
-    ;;
-    esac
-  done
-}
-
-function exclude-windows() {
-  projects=${@}
-  for project in ${projects}; do
-    case ${project} in
-    cross-project-tests) ;; # tests failing
-    compiler-rt)         ;; # tests taking too long
-    openmp)              ;; # TODO: having trouble with the Perl installation
-    libc)                ;; # no Windows support
-    lldb)                ;; # custom environment requirements (https://github.com/llvm/llvm-project/pull/94208#issuecomment-2146256857)
-    bolt)                ;; # tests are not supported yet
-    *)
-      echo "${project}"
-    ;;
-    esac
-  done
-}
-
-# Prints only projects that are both present in $modified_dirs and the passed
-# list.
-function keep-modified-projects() {
-  projects=${@}
-  for project in ${projects}; do
-    if echo "$modified_dirs" | grep -q -E "^${project}$"; then
-      echo "${project}"
-    fi
-  done
-}
-
-function check-targets() {
-  # Do not use "check-all" here because if there is "check-all" plus a
-  # project specific target like "check-clang", that project's tests
-  # will be run twice.
-  projects=${@}
-  for project in ${projects}; do
-    case ${project} in
-    clang-tools-extra)
-      echo "check-clang-tools"
-    ;;
-    compiler-rt)
-      echo "check-compiler-rt"
-    ;;
-    cross-project-tests)
-      echo "check-cross-project"
-    ;;
-    libcxx)
-      echo "check-cxx"
-    ;;
-    libcxxabi)
-      echo "check-cxxabi"
-    ;;
-    libunwind)
-      echo "check-unwind"
-    ;;
-    lldb)
-      echo "check-lldb"
-    ;;
-    pstl)
-      # Currently we do not run pstl tests in CI.
-    ;;
-    libclc)
-      # Currently there is no testing for libclc.
-    ;;
-    *)
-      echo "check-${project}"
-    ;;
-    esac
-  done
-}
+. compute-projects.sh
 
 # Project specific pipelines.
 

>From d858ae3560e4385a653cf22972ac4c8557b0313e Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Wed, 11 Dec 2024 09:42:31 +0000
Subject: [PATCH 02/42] Maybe fix paths

---
 .ci/generate-buildkite-pipeline-premerge | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.ci/generate-buildkite-pipeline-premerge b/.ci/generate-buildkite-pipeline-premerge
index ddcaca813be3c0..31186bef9c8933 100755
--- a/.ci/generate-buildkite-pipeline-premerge
+++ b/.ci/generate-buildkite-pipeline-premerge
@@ -52,7 +52,7 @@ modified_dirs=$(echo "$MODIFIED_FILES" | cut -d'/' -f1 | sort -u)
 echo "Directories modified:" >&2
 echo "$modified_dirs" >&2
 
-. compute-projects.sh
+. ./ci/compute-projects.sh
 
 # Project specific pipelines.
 

>From a8eae851d0ce8621cc10cfa0b9df87b2d35aaa48 Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Wed, 11 Dec 2024 09:43:24 +0000
Subject: [PATCH 03/42] Fix spelling

---
 .ci/generate-buildkite-pipeline-premerge | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.ci/generate-buildkite-pipeline-premerge b/.ci/generate-buildkite-pipeline-premerge
index 31186bef9c8933..9d9ca321839449 100755
--- a/.ci/generate-buildkite-pipeline-premerge
+++ b/.ci/generate-buildkite-pipeline-premerge
@@ -52,7 +52,7 @@ modified_dirs=$(echo "$MODIFIED_FILES" | cut -d'/' -f1 | sort -u)
 echo "Directories modified:" >&2
 echo "$modified_dirs" >&2
 
-. ./ci/compute-projects.sh
+. ./.ci/compute-projects.sh
 
 # Project specific pipelines.
 

>From 1c020bba94fe2e70820a9d2e1221dd73b9676332 Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Wed, 11 Dec 2024 09:44:40 +0000
Subject: [PATCH 04/42] Add missing functions

---
 .ci/compute-projects.sh | 31 ++++++++++++++++++++++++++++++-
 1 file changed, 30 insertions(+), 1 deletion(-)

diff --git a/.ci/compute-projects.sh b/.ci/compute-projects.sh
index b33158339ef3fd..32baf26b4f0a05 100644
--- a/.ci/compute-projects.sh
+++ b/.ci/compute-projects.sh
@@ -110,11 +110,40 @@ function add-dependencies() {
   done
 }
 
+function exclude-linux() {
+  projects=${@}
+  for project in ${projects}; do
+    case ${project} in
+    cross-project-tests) ;; # tests failing
+    openmp)              ;; # https://github.com/google/llvm-premerge-checks/issues/410
+    *)
+      echo "${project}"
+    ;;
+    esac
+  done
+}
+
+function exclude-windows() {
+  projects=${@}
+  for project in ${projects}; do
+    case ${project} in
+    cross-project-tests) ;; # tests failing
+    compiler-rt)         ;; # tests taking too long
+    openmp)              ;; # TODO: having trouble with the Perl installation
+    libc)                ;; # no Windows support
+    lldb)                ;; # custom environment requirements (https://github.com/llvm/llvm-project/pull/94208#issuecomment-2146256857)
+    bolt)                ;; # tests are not supported yet
+    *)
+      echo "${project}"
+    ;;
+    esac
+  done
+}
+
 # Prints only projects that are both present in $modified_dirs and the passed
 # list.
 function keep-modified-projects() {
   projects=${@}
-  modified_dirs=${1}
   for project in ${projects}; do
     if echo "$modified_dirs" | grep -q -E "^${project}$"; then
       echo "${project}"

>From 19f4098c0934f242ed5b332533dfe03c44e82de8 Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Wed, 11 Dec 2024 23:31:07 +0000
Subject: [PATCH 05/42] [CI][Github] Add linux premerge workflow

This patch adds a Github Actions workflow for Linux premerge. This currently
just calls into the existing CI scripts as a starting point.
---
 .github/workflows/premerge.yaml | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)
 create mode 100644 .github/workflows/premerge.yaml

diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
new file mode 100644
index 00000000000000..33a5b57ab3548f
--- /dev/null
+++ b/.github/workflows/premerge.yaml
@@ -0,0 +1,20 @@
+name: LLVM Premerge Checks
+
+permissions:
+  contents: read
+
+on:
+  pull_request:
+    paths:
+      - .github/workflows/premerge.yaml
+
+jobs:
+  premerge-checks-linux:
+    if: github.repository_owner == 'llvm'
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout LLVM
+        uses: actions/checkout at v4
+      - name: Build and Test
+        run: |
+          echo test

>From 9c8661960efcbfee9164dcc74bca22c5e30adbc9 Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Wed, 11 Dec 2024 23:44:30 +0000
Subject: [PATCH 06/42] Modification stuff

---
 .github/workflows/premerge.yaml | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index 33a5b57ab3548f..e471f0d3aa256c 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -17,4 +17,8 @@ jobs:
         uses: actions/checkout at v4
       - name: Build and Test
         run: |
-          echo test
+          ${MODIFIED_FILES:=$(git diff --name-only HEAD~1...HEAD)}
+          echo $MODIFIED_FILES
+          modified_dirs=$(echo "$MODIFIED_FILES" | cut -d'/' -f1 | sort -u)
+          echo "$modified_dirs" >&2
+

>From 60c621205f3994c7a0b4e34d087bb11f6dbda7f4 Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Wed, 11 Dec 2024 23:51:04 +0000
Subject: [PATCH 07/42] Adjust depth

---
 .github/workflows/premerge.yaml | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index e471f0d3aa256c..632c5ca38a1784 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -15,6 +15,8 @@ jobs:
     steps:
       - name: Checkout LLVM
         uses: actions/checkout at v4
+        with:
+          fetch-depth: 2
       - name: Build and Test
         run: |
           ${MODIFIED_FILES:=$(git diff --name-only HEAD~1...HEAD)}

>From 49b3859a055e7aa788c74e09a438001602fc00c1 Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Wed, 11 Dec 2024 23:53:31 +0000
Subject: [PATCH 08/42] maybe

---
 .github/workflows/premerge.yaml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index 632c5ca38a1784..1964085cbf0cfc 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -22,5 +22,5 @@ jobs:
           ${MODIFIED_FILES:=$(git diff --name-only HEAD~1...HEAD)}
           echo $MODIFIED_FILES
           modified_dirs=$(echo "$MODIFIED_FILES" | cut -d'/' -f1 | sort -u)
-          echo "$modified_dirs" >&2
+          echo "$modified_dirs"
 

>From 41efe71d08fe063f1ee96731ea32f313e6422a1d Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Wed, 11 Dec 2024 23:54:41 +0000
Subject: [PATCH 09/42] fix thing

---
 .github/workflows/premerge.yaml | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index 1964085cbf0cfc..17094574499281 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -19,8 +19,8 @@ jobs:
           fetch-depth: 2
       - name: Build and Test
         run: |
-          ${MODIFIED_FILES:=$(git diff --name-only HEAD~1...HEAD)}
-          echo $MODIFIED_FILES
-          modified_dirs=$(echo "$MODIFIED_FILES" | cut -d'/' -f1 | sort -u)
+          modified_files=$(git diff --name-only HEAD~1...HEAD)
+          echo $modified_files
+          modified_dirs=$(echo "$modified_files" | cut -d'/' -f1 | sort -u)
           echo "$modified_dirs"
 

>From cb5cf35c20e40ba461fb0f6f75f0409ce14ec7ad Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Wed, 11 Dec 2024 23:59:54 +0000
Subject: [PATCH 10/42] incremental testing

---
 .github/workflows/premerge.yaml | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index 17094574499281..94b0f97ba49509 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -24,3 +24,16 @@ jobs:
           modified_dirs=$(echo "$modified_files" | cut -d'/' -f1 | sort -u)
           echo "$modified_dirs"
 
+          . ./.ci/compute-projects.sh
+
+          all_projects="bolt clang clang-tools-extra compiler-rt cross-project-tests flang libc libclc lld lldb llvm mlir openmp polly pstl"
+          modified_projects="$(keep-modified-projects ${all_projects})"
+
+          linux_projects_to_test=$(exclude-linux $(compute-projects-to-test 0 ${modified_projects}))
+          linux_check_targets=$(check-targets ${linux_projects_to_test} | sort | uniq)
+          linux_projects=$(add-dependencies ${linux_projects_to_test} | sort | uniq)
+
+          linux_runtimes_to_test=$(compute-runtimes-to-test ${linux_projects_to_test})
+          linux_runtime_check_targets=$(check-targets ${linux_runtimes_to_test} | sort | uniq)
+          linux_runtimes=$(echo ${linux_runtimes_to_test} | sort | uniq)
+

>From 43ca65316a18d34a4557281467d2f3baa94d9ecb Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Thu, 12 Dec 2024 00:04:04 +0000
Subject: [PATCH 11/42] Add pipeline

---
 .github/workflows/premerge.yaml | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index 94b0f97ba49509..a32847c94a6093 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -20,9 +20,7 @@ jobs:
       - name: Build and Test
         run: |
           modified_files=$(git diff --name-only HEAD~1...HEAD)
-          echo $modified_files
           modified_dirs=$(echo "$modified_files" | cut -d'/' -f1 | sort -u)
-          echo "$modified_dirs"
 
           . ./.ci/compute-projects.sh
 
@@ -37,3 +35,9 @@ jobs:
           linux_runtime_check_targets=$(check-targets ${linux_runtimes_to_test} | sort | uniq)
           linux_runtimes=$(echo ${linux_runtimes_to_test} | sort | uniq)
 
+          echo "Building projects: ${linux_projects}"
+          echo "Running project checks targets: ${linux_check_targets}"
+          echo "Building runtimes: ${linux_runtimes}"
+          echo "Running runtimes checks targets: ${linux_runtime_check_targets}"
+
+          ./.ci/monolithic-linux.sh "$(echo ${linux_projects} | tr ' ' ';')" "$(echo ${linux_check_targets})" "$(echo ${linux_runtimes} | tr ' ' ';')" "$(echo ${linux_runtime_check_targets})"

>From 67b537d6fe00877ffd318e5fe26094d39211be78 Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Thu, 12 Dec 2024 00:09:06 +0000
Subject: [PATCH 12/42] Switch container

---
 .github/workflows/premerge.yaml | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index a32847c94a6093..e9a4f47428206e 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -12,6 +12,8 @@ jobs:
   premerge-checks-linux:
     if: github.repository_owner == 'llvm'
     runs-on: ubuntu-latest
+    container:
+      image: ghcr.io/llvm/ci-ubuntu-22.04:latest
     steps:
       - name: Checkout LLVM
         uses: actions/checkout at v4

>From 5f4e4517ced8a40ca78368b1eab14a18cc904d00 Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Thu, 12 Dec 2024 00:23:04 +0000
Subject: [PATCH 13/42] debugging

---
 .github/workflows/premerge.yaml | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index e9a4f47428206e..ece3483f2284fa 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -21,6 +21,9 @@ jobs:
           fetch-depth: 2
       - name: Build and Test
         run: |
+          ls
+          pwd
+
           modified_files=$(git diff --name-only HEAD~1...HEAD)
           modified_dirs=$(echo "$modified_files" | cut -d'/' -f1 | sort -u)
 

>From cd8094f61d8e9836ee5edfc72d963aef29f5f110 Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Thu, 12 Dec 2024 00:25:26 +0000
Subject: [PATCH 14/42] debugging2

---
 .github/workflows/premerge.yaml | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index ece3483f2284fa..bb7e9674f2a25c 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -21,8 +21,7 @@ jobs:
           fetch-depth: 2
       - name: Build and Test
         run: |
-          ls
-          pwd
+          ls -a
 
           modified_files=$(git diff --name-only HEAD~1...HEAD)
           modified_dirs=$(echo "$modified_files" | cut -d'/' -f1 | sort -u)

>From 58860c6b2526a1540f9847568c0015c5e03a8da4 Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Thu, 12 Dec 2024 00:33:42 +0000
Subject: [PATCH 15/42] debugging 3

---
 .github/workflows/premerge.yaml | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index bb7e9674f2a25c..8eb5f1baa8f911 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -23,6 +23,8 @@ jobs:
         run: |
           ls -a
 
+          echo $(pwd)
+
           modified_files=$(git diff --name-only HEAD~1...HEAD)
           modified_dirs=$(echo "$modified_files" | cut -d'/' -f1 | sort -u)
 

>From c6260931f40a6ec7e5a3dbc52f2ee6ba8910045e Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Thu, 12 Dec 2024 00:41:32 +0000
Subject: [PATCH 16/42] debugging 4

---
 .github/workflows/premerge.yaml | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index 8eb5f1baa8f911..5535732329116a 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -21,9 +21,7 @@ jobs:
           fetch-depth: 2
       - name: Build and Test
         run: |
-          ls -a
-
-          echo $(pwd)
+          echo $(git status)
 
           modified_files=$(git diff --name-only HEAD~1...HEAD)
           modified_dirs=$(echo "$modified_files" | cut -d'/' -f1 | sort -u)

>From a99b5a356fa1b4c9d238345a0c88fe08cca0e050 Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Thu, 12 Dec 2024 00:44:05 +0000
Subject: [PATCH 17/42] debugging 5

---
 .github/workflows/premerge.yaml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index 5535732329116a..17a65973031b70 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -21,6 +21,7 @@ jobs:
           fetch-depth: 2
       - name: Build and Test
         run: |
+          git config --global --add safe.directory '*'
           echo $(git status)
 
           modified_files=$(git diff --name-only HEAD~1...HEAD)

>From 4d17c170bf6fc832dc65daed6070aa46922acc91 Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Thu, 12 Dec 2024 00:47:07 +0000
Subject: [PATCH 18/42] debugging 6

---
 .github/workflows/premerge.yaml | 1 -
 1 file changed, 1 deletion(-)

diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index 17a65973031b70..d5012a9df931a8 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -22,7 +22,6 @@ jobs:
       - name: Build and Test
         run: |
           git config --global --add safe.directory '*'
-          echo $(git status)
 
           modified_files=$(git diff --name-only HEAD~1...HEAD)
           modified_dirs=$(echo "$modified_files" | cut -d'/' -f1 | sort -u)

>From 61a9e618d2ec28660c88823a9ca484837f01f34a Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Thu, 12 Dec 2024 01:14:57 +0000
Subject: [PATCH 19/42] debugging 7

---
 .github/workflows/premerge.yaml | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index d5012a9df931a8..9561c588e0a957 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -25,6 +25,9 @@ jobs:
 
           modified_files=$(git diff --name-only HEAD~1...HEAD)
           modified_dirs=$(echo "$modified_files" | cut -d'/' -f1 | sort -u)
+          
+          echo $modified_files
+          echo $modified_dirs
 
           . ./.ci/compute-projects.sh
 

>From 41296b6a5e0ff54aa3ca4bfaf85f1cd2f79de3d2 Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Thu, 12 Dec 2024 01:17:45 +0000
Subject: [PATCH 20/42] debugging 8

---
 .github/workflows/premerge.yaml | 28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index 9561c588e0a957..55c2f5c2d79057 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -29,22 +29,22 @@ jobs:
           echo $modified_files
           echo $modified_dirs
 
-          . ./.ci/compute-projects.sh
+          #. ./.ci/compute-projects.sh
 
-          all_projects="bolt clang clang-tools-extra compiler-rt cross-project-tests flang libc libclc lld lldb llvm mlir openmp polly pstl"
-          modified_projects="$(keep-modified-projects ${all_projects})"
+          #all_projects="bolt clang clang-tools-extra compiler-rt cross-project-tests flang libc libclc lld lldb llvm mlir openmp polly pstl"
+          #modified_projects="$(keep-modified-projects ${all_projects})"
 
-          linux_projects_to_test=$(exclude-linux $(compute-projects-to-test 0 ${modified_projects}))
-          linux_check_targets=$(check-targets ${linux_projects_to_test} | sort | uniq)
-          linux_projects=$(add-dependencies ${linux_projects_to_test} | sort | uniq)
+          #linux_projects_to_test=$(exclude-linux $(compute-projects-to-test 0 ${modified_projects}))
+          #linux_check_targets=$(check-targets ${linux_projects_to_test} | sort | uniq)
+          #linux_projects=$(add-dependencies ${linux_projects_to_test} | sort | uniq)
 
-          linux_runtimes_to_test=$(compute-runtimes-to-test ${linux_projects_to_test})
-          linux_runtime_check_targets=$(check-targets ${linux_runtimes_to_test} | sort | uniq)
-          linux_runtimes=$(echo ${linux_runtimes_to_test} | sort | uniq)
+          #linux_runtimes_to_test=$(compute-runtimes-to-test ${linux_projects_to_test})
+          #linux_runtime_check_targets=$(check-targets ${linux_runtimes_to_test} | sort | uniq)
+          #linux_runtimes=$(echo ${linux_runtimes_to_test} | sort | uniq)
 
-          echo "Building projects: ${linux_projects}"
-          echo "Running project checks targets: ${linux_check_targets}"
-          echo "Building runtimes: ${linux_runtimes}"
-          echo "Running runtimes checks targets: ${linux_runtime_check_targets}"
+          #echo "Building projects: ${linux_projects}"
+          #echo "Running project checks targets: ${linux_check_targets}"
+          #echo "Building runtimes: ${linux_runtimes}"
+          #echo "Running runtimes checks targets: ${linux_runtime_check_targets}"
 
-          ./.ci/monolithic-linux.sh "$(echo ${linux_projects} | tr ' ' ';')" "$(echo ${linux_check_targets})" "$(echo ${linux_runtimes} | tr ' ' ';')" "$(echo ${linux_runtime_check_targets})"
+          #./.ci/monolithic-linux.sh "$(echo ${linux_projects} | tr ' ' ';')" "$(echo ${linux_check_targets})" "$(echo ${linux_runtimes} | tr ' ' ';')" "$(echo ${linux_runtime_check_targets})"

>From 80db3871dc0c9cac2e41b10029274023863a85b5 Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Thu, 12 Dec 2024 01:19:39 +0000
Subject: [PATCH 21/42] debugging 9

---
 .github/workflows/premerge.yaml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index 55c2f5c2d79057..c6526202e215e5 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -29,7 +29,7 @@ jobs:
           echo $modified_files
           echo $modified_dirs
 
-          #. ./.ci/compute-projects.sh
+          . ./.ci/compute-projects.sh
 
           #all_projects="bolt clang clang-tools-extra compiler-rt cross-project-tests flang libc libclc lld lldb llvm mlir openmp polly pstl"
           #modified_projects="$(keep-modified-projects ${all_projects})"

>From ed2f888ab7b28b145e37feb5112cf0695e89e743 Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Thu, 12 Dec 2024 01:25:46 +0000
Subject: [PATCH 22/42] debugging 10

---
 .github/workflows/premerge.yaml | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index c6526202e215e5..60c60cd8fbe045 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -29,6 +29,8 @@ jobs:
           echo $modified_files
           echo $modified_dirs
 
+          cat ./.ci/compute-projects.sh
+
           . ./.ci/compute-projects.sh
 
           #all_projects="bolt clang clang-tools-extra compiler-rt cross-project-tests flang libc libclc lld lldb llvm mlir openmp polly pstl"

>From 47c666fbaa4d2fae812caaa6fe791ed1af488e06 Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Thu, 12 Dec 2024 01:36:35 +0000
Subject: [PATCH 23/42] debugging 11

---
 .github/workflows/premerge.yaml | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index 60c60cd8fbe045..2e6e1402973acf 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -14,6 +14,9 @@ jobs:
     runs-on: ubuntu-latest
     container:
       image: ghcr.io/llvm/ci-ubuntu-22.04:latest
+    defaults:
+      run:
+        shell: bash
     steps:
       - name: Checkout LLVM
         uses: actions/checkout at v4
@@ -29,8 +32,6 @@ jobs:
           echo $modified_files
           echo $modified_dirs
 
-          cat ./.ci/compute-projects.sh
-
           . ./.ci/compute-projects.sh
 
           #all_projects="bolt clang clang-tools-extra compiler-rt cross-project-tests flang libc libclc lld lldb llvm mlir openmp polly pstl"

>From 264ae7f19c556467070288081401d81a50dda806 Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Thu, 12 Dec 2024 01:38:35 +0000
Subject: [PATCH 24/42] debugging 12

---
 .github/workflows/premerge.yaml | 2 --
 1 file changed, 2 deletions(-)

diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index 2e6e1402973acf..f21bf1607bf633 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -24,8 +24,6 @@ jobs:
           fetch-depth: 2
       - name: Build and Test
         run: |
-          git config --global --add safe.directory '*'
-
           modified_files=$(git diff --name-only HEAD~1...HEAD)
           modified_dirs=$(echo "$modified_files" | cut -d'/' -f1 | sort -u)
           

>From 8ecd16d3db571e50604999c2889200212fb09813 Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Thu, 12 Dec 2024 01:40:58 +0000
Subject: [PATCH 25/42] Reenable

---
 .github/workflows/premerge.yaml | 28 +++++++++++++++-------------
 1 file changed, 15 insertions(+), 13 deletions(-)

diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index f21bf1607bf633..7b211774c98419 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -24,6 +24,8 @@ jobs:
           fetch-depth: 2
       - name: Build and Test
         run: |
+          git config --global --add safe.directory '*'
+
           modified_files=$(git diff --name-only HEAD~1...HEAD)
           modified_dirs=$(echo "$modified_files" | cut -d'/' -f1 | sort -u)
           
@@ -32,20 +34,20 @@ jobs:
 
           . ./.ci/compute-projects.sh
 
-          #all_projects="bolt clang clang-tools-extra compiler-rt cross-project-tests flang libc libclc lld lldb llvm mlir openmp polly pstl"
-          #modified_projects="$(keep-modified-projects ${all_projects})"
+          all_projects="bolt clang clang-tools-extra compiler-rt cross-project-tests flang libc libclc lld lldb llvm mlir openmp polly pstl"
+          modified_projects="$(keep-modified-projects ${all_projects})"
 
-          #linux_projects_to_test=$(exclude-linux $(compute-projects-to-test 0 ${modified_projects}))
-          #linux_check_targets=$(check-targets ${linux_projects_to_test} | sort | uniq)
-          #linux_projects=$(add-dependencies ${linux_projects_to_test} | sort | uniq)
+          linux_projects_to_test=$(exclude-linux $(compute-projects-to-test 0 ${modified_projects}))
+          linux_check_targets=$(check-targets ${linux_projects_to_test} | sort | uniq)
+          linux_projects=$(add-dependencies ${linux_projects_to_test} | sort | uniq)
 
-          #linux_runtimes_to_test=$(compute-runtimes-to-test ${linux_projects_to_test})
-          #linux_runtime_check_targets=$(check-targets ${linux_runtimes_to_test} | sort | uniq)
-          #linux_runtimes=$(echo ${linux_runtimes_to_test} | sort | uniq)
+          linux_runtimes_to_test=$(compute-runtimes-to-test ${linux_projects_to_test})
+          linux_runtime_check_targets=$(check-targets ${linux_runtimes_to_test} | sort | uniq)
+          linux_runtimes=$(echo ${linux_runtimes_to_test} | sort | uniq)
 
-          #echo "Building projects: ${linux_projects}"
-          #echo "Running project checks targets: ${linux_check_targets}"
-          #echo "Building runtimes: ${linux_runtimes}"
-          #echo "Running runtimes checks targets: ${linux_runtime_check_targets}"
+          echo "Building projects: ${linux_projects}"
+          echo "Running project checks targets: ${linux_check_targets}"
+          echo "Building runtimes: ${linux_runtimes}"
+          echo "Running runtimes checks targets: ${linux_runtime_check_targets}"
 
-          #./.ci/monolithic-linux.sh "$(echo ${linux_projects} | tr ' ' ';')" "$(echo ${linux_check_targets})" "$(echo ${linux_runtimes} | tr ' ' ';')" "$(echo ${linux_runtime_check_targets})"
+          ./.ci/monolithic-linux.sh "$(echo ${linux_projects} | tr ' ' ';')" "$(echo ${linux_check_targets})" "$(echo ${linux_runtimes} | tr ' ' ';')" "$(echo ${linux_runtime_check_targets})"

>From 240908a619a2b269c8022fafa22eff48546838f8 Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Thu, 12 Dec 2024 01:43:36 +0000
Subject: [PATCH 26/42] Add missing system dep

---
 .github/workflows/premerge.yaml | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index 7b211774c98419..c45842ac6873b6 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -22,6 +22,9 @@ jobs:
         uses: actions/checkout at v4
         with:
           fetch-depth: 2
+      - name: Setup system deps
+        run: |
+          apt-get install -y ccache
       - name: Build and Test
         run: |
           git config --global --add safe.directory '*'

>From 9ad6ac925d22ff59d10998951bf4519bb62aa63e Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Thu, 12 Dec 2024 01:45:48 +0000
Subject: [PATCH 27/42] More system deps

---
 .github/workflows/premerge.yaml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index c45842ac6873b6..a83d1fb2817b43 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -24,7 +24,7 @@ jobs:
           fetch-depth: 2
       - name: Setup system deps
         run: |
-          apt-get install -y ccache
+          apt-get install -y ccache python3 python3-pip
       - name: Build and Test
         run: |
           git config --global --add safe.directory '*'

>From 740ac188abb8827703f864970536d9dddb072edf Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Thu, 12 Dec 2024 01:48:09 +0000
Subject: [PATCH 28/42] Also update

---
 .github/workflows/premerge.yaml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index a83d1fb2817b43..2bc96c0ae4be25 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -24,7 +24,7 @@ jobs:
           fetch-depth: 2
       - name: Setup system deps
         run: |
-          apt-get install -y ccache python3 python3-pip
+          apt-get update && apt-get install -y ccache python3 python3-pip
       - name: Build and Test
         run: |
           git config --global --add safe.directory '*'

>From e6a428234aac6f53075a2f5c74a48b11d6db04a2 Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Thu, 12 Dec 2024 01:52:32 +0000
Subject: [PATCH 29/42] Force clang

---
 .github/workflows/premerge.yaml | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index 2bc96c0ae4be25..922c6be82a8fef 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -53,4 +53,7 @@ jobs:
           echo "Building runtimes: ${linux_runtimes}"
           echo "Running runtimes checks targets: ${linux_runtime_check_targets}"
 
+          export CC=/opt/llvm/bin/clang
+          export CXX=/opt/llvm/bin/clang++
+
           ./.ci/monolithic-linux.sh "$(echo ${linux_projects} | tr ' ' ';')" "$(echo ${linux_check_targets})" "$(echo ${linux_runtimes} | tr ' ' ';')" "$(echo ${linux_runtime_check_targets})"

>From 715079b846cae6b27c4a3c0ef1f47dd9776502b4 Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Thu, 12 Dec 2024 01:57:19 +0000
Subject: [PATCH 30/42] Early exit

---
 .github/workflows/premerge.yaml | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index 922c6be82a8fef..16363303ee03eb 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -48,6 +48,11 @@ jobs:
           linux_runtime_check_targets=$(check-targets ${linux_runtimes_to_test} | sort | uniq)
           linux_runtimes=$(echo ${linux_runtimes_to_test} | sort | uniq)
 
+          if [[ "${linux_projects}" == "" ]]; then
+            echo "No projects to build"
+            exit 0
+          fi
+
           echo "Building projects: ${linux_projects}"
           echo "Running project checks targets: ${linux_check_targets}"
           echo "Building runtimes: ${linux_runtimes}"

>From 7ad0671285f562c5d901aee669d4659a6d0fec4f Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Thu, 12 Dec 2024 02:00:05 +0000
Subject: [PATCH 31/42] Switch to premerge runners

---
 .github/workflows/premerge.yaml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index 16363303ee03eb..e4dc380582d98e 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -11,7 +11,7 @@ on:
 jobs:
   premerge-checks-linux:
     if: github.repository_owner == 'llvm'
-    runs-on: ubuntu-latest
+    runs-on: llvm-premerge-linux-runners
     container:
       image: ghcr.io/llvm/ci-ubuntu-22.04:latest
     defaults:

>From 14b4b9aba794beec8c758d8f9d55756de0e38bd7 Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Thu, 12 Dec 2024 02:18:56 +0000
Subject: [PATCH 32/42] test commit

---
 llvm/tools/llvm-exegesis/llvm-exegesis.cpp | 1 -
 1 file changed, 1 deletion(-)

diff --git a/llvm/tools/llvm-exegesis/llvm-exegesis.cpp b/llvm/tools/llvm-exegesis/llvm-exegesis.cpp
index 546ec770a8d221..6b5c2d4d6186ed 100644
--- a/llvm/tools/llvm-exegesis/llvm-exegesis.cpp
+++ b/llvm/tools/llvm-exegesis/llvm-exegesis.cpp
@@ -5,7 +5,6 @@
 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 //
 //===----------------------------------------------------------------------===//
-///
 /// \file
 /// Measures execution properties (latencies/uops) of an instruction.
 ///

>From 86d4a9b603503888fb893f36af080d0ec2737a23 Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Fri, 13 Dec 2024 04:53:35 +0000
Subject: [PATCH 33/42] Minor fixes

---
 .github/workflows/premerge.yaml   | 2 +-
 bolt/test/unreadable-profile.test | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index e4dc380582d98e..7021f371bfa7f7 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -24,7 +24,7 @@ jobs:
           fetch-depth: 2
       - name: Setup system deps
         run: |
-          apt-get update && apt-get install -y ccache python3 python3-pip
+          apt-get update && apt-get install -y ccache python3 python3-pip file
       - name: Build and Test
         run: |
           git config --global --add safe.directory '*'
diff --git a/bolt/test/unreadable-profile.test b/bolt/test/unreadable-profile.test
index fe1ca93f3221e8..4c1cd8af0a62c1 100644
--- a/bolt/test/unreadable-profile.test
+++ b/bolt/test/unreadable-profile.test
@@ -1,4 +1,4 @@
-REQUIRES: system-linux
+REQUIRES: system-linux, non-root-user
 
 RUN: touch %t.profile && chmod 000 %t.profile
 RUN: %clang %S/Inputs/hello.c -o %t

>From b4a8ef7480cdcfc17d0573de927153b1c69a92e6 Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Fri, 13 Dec 2024 22:27:25 +0000
Subject: [PATCH 34/42] Add tzdata for libc++

---
 .github/workflows/premerge.yaml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index 7021f371bfa7f7..378d92619d5b57 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -24,7 +24,7 @@ jobs:
           fetch-depth: 2
       - name: Setup system deps
         run: |
-          apt-get update && apt-get install -y ccache python3 python3-pip file
+          apt-get update && apt-get install -y ccache python3 python3-pip file tzdata
       - name: Build and Test
         run: |
           git config --global --add safe.directory '*'

>From f49ac63a5c527d85d5d4b9b61cb539de05c148ff Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Fri, 13 Dec 2024 22:43:54 +0000
Subject: [PATCH 35/42] no prompting during package install

---
 .github/workflows/premerge.yaml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index 378d92619d5b57..31b4cb3b56a08a 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -24,7 +24,7 @@ jobs:
           fetch-depth: 2
       - name: Setup system deps
         run: |
-          apt-get update && apt-get install -y ccache python3 python3-pip file tzdata
+          DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y ccache python3 python3-pip file tzdata
       - name: Build and Test
         run: |
           git config --global --add safe.directory '*'

>From 89d14aaa834b707990ddf0d708f2140befe99d3e Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Fri, 13 Dec 2024 22:47:16 +0000
Subject: [PATCH 36/42] test

---
 .github/workflows/premerge.yaml | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index 31b4cb3b56a08a..6454b66270c9ac 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -24,7 +24,8 @@ jobs:
           fetch-depth: 2
       - name: Setup system deps
         run: |
-          DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y ccache python3 python3-pip file tzdata
+          apt-get update
+          DEBIAN_FRONTEND=noninteractive apt-get install -y ccache python3 python3-pip file tzdata
       - name: Build and Test
         run: |
           git config --global --add safe.directory '*'

>From 8f0dd031771b3b0371deff5c5e38736ca83a80cd Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Sat, 14 Dec 2024 00:16:51 +0000
Subject: [PATCH 37/42] Fix libc++ test failures

---
 .../class.directory_entry/directory_entry.cons/path.pass.cpp    | 2 +-
 .../class.directory_entry/directory_entry.mods/assign.pass.cpp  | 2 +-
 .../class.directory_entry/directory_entry.mods/refresh.pass.cpp | 2 +-
 .../directory_entry.mods/replace_filename.pass.cpp              | 2 +-
 .../directory_entry.obs/file_size.pass.cpp                      | 2 +-
 .../directory_entry.obs/file_type_obs.pass.cpp                  | 2 +-
 .../directory_entry.obs/hard_link_count.pass.cpp                | 2 +-
 .../directory_entry.obs/last_write_time.pass.cpp                | 2 +-
 .../directory_iterator.members/ctor.pass.cpp                    | 2 +-
 .../class.rec.dir.itr/rec.dir.itr.members/ctor.pass.cpp         | 2 +-
 .../class.rec.dir.itr/rec.dir.itr.members/increment.pass.cpp    | 2 +-
 .../filesystems/fs.op.funcs/fs.op.exists/exists.pass.cpp        | 2 +-
 .../fs.op.funcs/fs.op.is_block_file/is_block_file.pass.cpp      | 2 +-
 .../fs.op.funcs/fs.op.is_char_file/is_character_file.pass.cpp   | 2 +-
 .../fs.op.funcs/fs.op.is_directory/is_directory.pass.cpp        | 2 +-
 .../filesystems/fs.op.funcs/fs.op.is_empty/is_empty.pass.cpp    | 2 +-
 .../filesystems/fs.op.funcs/fs.op.is_fifo/is_fifo.pass.cpp      | 2 +-
 .../filesystems/fs.op.funcs/fs.op.is_other/is_other.pass.cpp    | 2 +-
 .../fs.op.funcs/fs.op.is_regular_file/is_regular_file.pass.cpp  | 2 +-
 .../filesystems/fs.op.funcs/fs.op.is_socket/is_socket.pass.cpp  | 2 +-
 .../fs.op.funcs/fs.op.is_symlink/is_symlink.pass.cpp            | 2 +-
 .../fs.op.funcs/fs.op.last_write_time/last_write_time.pass.cpp  | 2 +-
 .../filesystems/fs.op.funcs/fs.op.remove/remove.pass.cpp        | 2 +-
 .../fs.op.funcs/fs.op.remove_all/remove_all.pass.cpp            | 2 +-
 .../filesystems/fs.op.funcs/fs.op.status/status.pass.cpp        | 2 +-
 .../fs.op.funcs/fs.op.symlink_status/symlink_status.pass.cpp    | 2 +-
 .../fs.op.temp_dir_path/temp_directory_path.pass.cpp            | 1 +
 27 files changed, 27 insertions(+), 26 deletions(-)

diff --git a/libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.cons/path.pass.cpp b/libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.cons/path.pass.cpp
index a1a37012369d4c..89e41afbf92d11 100644
--- a/libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.cons/path.pass.cpp
+++ b/libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.cons/path.pass.cpp
@@ -6,7 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-// REQUIRES: can-create-symlinks
+// REQUIRES: can-create-symlinks, non-root-user
 // UNSUPPORTED: c++03, c++11, c++14
 
 // <filesystem>
diff --git a/libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.mods/assign.pass.cpp b/libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.mods/assign.pass.cpp
index ba14af1240d4b7..ea7a5a3a6f8d81 100644
--- a/libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.mods/assign.pass.cpp
+++ b/libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.mods/assign.pass.cpp
@@ -6,7 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-// REQUIRES: can-create-symlinks
+// REQUIRES: can-create-symlinks, non-root-user
 // UNSUPPORTED: c++03, c++11, c++14
 
 // <filesystem>
diff --git a/libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.mods/refresh.pass.cpp b/libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.mods/refresh.pass.cpp
index 20a545b719ed6f..6ea2e1fb1b281f 100644
--- a/libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.mods/refresh.pass.cpp
+++ b/libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.mods/refresh.pass.cpp
@@ -6,7 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-// REQUIRES: can-create-symlinks
+// REQUIRES: can-create-symlinks, non-root-user
 // UNSUPPORTED: c++03, c++11, c++14
 
 // The string reported on errors changed, which makes those tests fail when run
diff --git a/libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.mods/replace_filename.pass.cpp b/libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.mods/replace_filename.pass.cpp
index 03e9de882ab0ab..95591dc9359a1f 100644
--- a/libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.mods/replace_filename.pass.cpp
+++ b/libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.mods/replace_filename.pass.cpp
@@ -6,7 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-// REQUIRES: can-create-symlinks
+// REQUIRES: can-create-symlinks, non-root-user
 // UNSUPPORTED: c++03, c++11, c++14
 
 // <filesystem>
diff --git a/libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/file_size.pass.cpp b/libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/file_size.pass.cpp
index 10829f8a73db1f..439f5a4011a295 100644
--- a/libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/file_size.pass.cpp
+++ b/libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/file_size.pass.cpp
@@ -6,7 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-// REQUIRES: can-create-symlinks
+// REQUIRES: can-create-symlinks, non-root-user
 // UNSUPPORTED: c++03, c++11, c++14
 
 // The string reported on errors changed, which makes those tests fail when run
diff --git a/libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/file_type_obs.pass.cpp b/libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/file_type_obs.pass.cpp
index 303a95a0128bc9..61ffb42819c2ca 100644
--- a/libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/file_type_obs.pass.cpp
+++ b/libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/file_type_obs.pass.cpp
@@ -6,7 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-// REQUIRES: can-create-symlinks
+// REQUIRES: can-create-symlinks, non-root-user
 // UNSUPPORTED: c++03, c++11, c++14
 
 // Starting in Android N (API 24), SELinux policy prevents the shell user from
diff --git a/libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/hard_link_count.pass.cpp b/libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/hard_link_count.pass.cpp
index 5d931891dd0eb6..ad16e13760bd78 100644
--- a/libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/hard_link_count.pass.cpp
+++ b/libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/hard_link_count.pass.cpp
@@ -6,7 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-// REQUIRES: can-create-symlinks
+// REQUIRES: can-create-symlinks, non-root-user
 // UNSUPPORTED: c++03, c++11, c++14
 
 // The string reported on errors changed, which makes those tests fail when run
diff --git a/libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/last_write_time.pass.cpp b/libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/last_write_time.pass.cpp
index 82b94a3d6bf5f9..7ea042e9755258 100644
--- a/libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/last_write_time.pass.cpp
+++ b/libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/last_write_time.pass.cpp
@@ -6,7 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-// REQUIRES: can-create-symlinks
+// REQUIRES: can-create-symlinks, non-root-user
 // UNSUPPORTED: c++03, c++11, c++14
 
 // The string reported on errors changed, which makes those tests fail when run
diff --git a/libcxx/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.members/ctor.pass.cpp b/libcxx/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.members/ctor.pass.cpp
index 3e363ae9bceec2..4197e31de7b590 100644
--- a/libcxx/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.members/ctor.pass.cpp
+++ b/libcxx/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.members/ctor.pass.cpp
@@ -6,7 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-// REQUIRES: can-create-symlinks
+// REQUIRES: can-create-symlinks, non-root-user
 // UNSUPPORTED: c++03, c++11, c++14
 // UNSUPPORTED: no-filesystem
 // UNSUPPORTED: availability-filesystem-missing
diff --git a/libcxx/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/ctor.pass.cpp b/libcxx/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/ctor.pass.cpp
index f0cc8d9a25ffc0..9c8ec2fef90504 100644
--- a/libcxx/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/ctor.pass.cpp
+++ b/libcxx/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/ctor.pass.cpp
@@ -6,7 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-// REQUIRES: can-create-symlinks
+// REQUIRES: can-create-symlinks, non-root-user
 // UNSUPPORTED: c++03, c++11, c++14
 // UNSUPPORTED: no-filesystem
 // UNSUPPORTED: availability-filesystem-missing
diff --git a/libcxx/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/increment.pass.cpp b/libcxx/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/increment.pass.cpp
index 243bed0783dba7..7435bb517e3596 100644
--- a/libcxx/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/increment.pass.cpp
+++ b/libcxx/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/increment.pass.cpp
@@ -6,7 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-// REQUIRES: can-create-symlinks
+// REQUIRES: can-create-symlinks, non-root-user
 // UNSUPPORTED: c++03, c++11, c++14
 // UNSUPPORTED: no-filesystem
 // UNSUPPORTED: availability-filesystem-missing
diff --git a/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.exists/exists.pass.cpp b/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.exists/exists.pass.cpp
index 50181cb8d76c84..541466ac4d940f 100644
--- a/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.exists/exists.pass.cpp
+++ b/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.exists/exists.pass.cpp
@@ -6,7 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-// REQUIRES: can-create-symlinks
+// REQUIRES: can-create-symlinks, non-root-user
 // UNSUPPORTED: c++03, c++11, c++14
 // UNSUPPORTED: no-filesystem
 // UNSUPPORTED: availability-filesystem-missing
diff --git a/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_block_file/is_block_file.pass.cpp b/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_block_file/is_block_file.pass.cpp
index c16664c9a3f56e..c743284a5e6917 100644
--- a/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_block_file/is_block_file.pass.cpp
+++ b/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_block_file/is_block_file.pass.cpp
@@ -6,7 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-// REQUIRES: can-create-symlinks
+// REQUIRES: can-create-symlinks, non-root-user
 // UNSUPPORTED: c++03, c++11, c++14
 // UNSUPPORTED: no-filesystem
 // UNSUPPORTED: availability-filesystem-missing
diff --git a/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_char_file/is_character_file.pass.cpp b/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_char_file/is_character_file.pass.cpp
index 79645b9c2cfded..62a4d6807b3736 100644
--- a/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_char_file/is_character_file.pass.cpp
+++ b/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_char_file/is_character_file.pass.cpp
@@ -6,7 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-// REQUIRES: can-create-symlinks
+// REQUIRES: can-create-symlinks, non-root-user
 // UNSUPPORTED: c++03, c++11, c++14
 // UNSUPPORTED: no-filesystem
 // UNSUPPORTED: availability-filesystem-missing
diff --git a/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_directory/is_directory.pass.cpp b/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_directory/is_directory.pass.cpp
index 70fc0122427eb4..1151915016d51d 100644
--- a/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_directory/is_directory.pass.cpp
+++ b/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_directory/is_directory.pass.cpp
@@ -6,7 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-// REQUIRES: can-create-symlinks
+// REQUIRES: can-create-symlinks, non-root-user
 // UNSUPPORTED: c++03, c++11, c++14
 // UNSUPPORTED: no-filesystem
 // UNSUPPORTED: availability-filesystem-missing
diff --git a/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_empty/is_empty.pass.cpp b/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_empty/is_empty.pass.cpp
index 647d2e6a255a95..b22209506d00fa 100644
--- a/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_empty/is_empty.pass.cpp
+++ b/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_empty/is_empty.pass.cpp
@@ -6,7 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-// REQUIRES: can-create-symlinks
+// REQUIRES: can-create-symlinks, non-root-user
 // UNSUPPORTED: c++03, c++11, c++14
 // UNSUPPORTED: no-filesystem
 // UNSUPPORTED: availability-filesystem-missing
diff --git a/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_fifo/is_fifo.pass.cpp b/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_fifo/is_fifo.pass.cpp
index 76375d7b3b78c3..aee746dc8a6763 100644
--- a/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_fifo/is_fifo.pass.cpp
+++ b/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_fifo/is_fifo.pass.cpp
@@ -6,7 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-// REQUIRES: can-create-symlinks
+// REQUIRES: can-create-symlinks, non-root-user
 // UNSUPPORTED: c++03, c++11, c++14
 // UNSUPPORTED: no-filesystem
 // UNSUPPORTED: availability-filesystem-missing
diff --git a/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_other/is_other.pass.cpp b/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_other/is_other.pass.cpp
index ba3070e7bdc7d1..725e34a5e313f6 100644
--- a/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_other/is_other.pass.cpp
+++ b/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_other/is_other.pass.cpp
@@ -6,7 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-// REQUIRES: can-create-symlinks
+// REQUIRES: can-create-symlinks, non-root-user
 // UNSUPPORTED: c++03, c++11, c++14
 // UNSUPPORTED: no-filesystem
 // UNSUPPORTED: availability-filesystem-missing
diff --git a/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_regular_file/is_regular_file.pass.cpp b/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_regular_file/is_regular_file.pass.cpp
index 06a6fb4d22debb..c983b5d12385bf 100644
--- a/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_regular_file/is_regular_file.pass.cpp
+++ b/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_regular_file/is_regular_file.pass.cpp
@@ -6,7 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-// REQUIRES: can-create-symlinks
+// REQUIRES: can-create-symlinks, non-root-user
 // UNSUPPORTED: c++03, c++11, c++14
 // UNSUPPORTED: no-filesystem
 // UNSUPPORTED: availability-filesystem-missing
diff --git a/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_socket/is_socket.pass.cpp b/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_socket/is_socket.pass.cpp
index b6f92e47a67a22..c20902b63f1ae4 100644
--- a/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_socket/is_socket.pass.cpp
+++ b/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_socket/is_socket.pass.cpp
@@ -6,7 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-// REQUIRES: can-create-symlinks
+// REQUIRES: can-create-symlinks, non-root-user
 // UNSUPPORTED: c++03, c++11, c++14
 // UNSUPPORTED: no-filesystem
 // UNSUPPORTED: availability-filesystem-missing
diff --git a/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_symlink/is_symlink.pass.cpp b/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_symlink/is_symlink.pass.cpp
index a71361c8470493..8f65202c0edf51 100644
--- a/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_symlink/is_symlink.pass.cpp
+++ b/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_symlink/is_symlink.pass.cpp
@@ -6,7 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-// REQUIRES: can-create-symlinks
+// REQUIRES: can-create-symlinks, non-root-user
 // UNSUPPORTED: c++03, c++11, c++14
 // UNSUPPORTED: no-filesystem
 // UNSUPPORTED: availability-filesystem-missing
diff --git a/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.last_write_time/last_write_time.pass.cpp b/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.last_write_time/last_write_time.pass.cpp
index 7024e50e81209c..1f2a5a5b369354 100644
--- a/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.last_write_time/last_write_time.pass.cpp
+++ b/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.last_write_time/last_write_time.pass.cpp
@@ -6,7 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-// REQUIRES: can-create-symlinks
+// REQUIRES: can-create-symlinks, non-root-user
 // UNSUPPORTED: c++03, c++11, c++14
 // UNSUPPORTED: no-filesystem
 // UNSUPPORTED: availability-filesystem-missing
diff --git a/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.remove/remove.pass.cpp b/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.remove/remove.pass.cpp
index c8a5d7f6aa10e4..399d340d1e5c37 100644
--- a/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.remove/remove.pass.cpp
+++ b/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.remove/remove.pass.cpp
@@ -6,7 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-// REQUIRES: can-create-symlinks
+// REQUIRES: can-create-symlinks, non-root-user
 // UNSUPPORTED: c++03, c++11, c++14
 // UNSUPPORTED: no-filesystem
 // UNSUPPORTED: availability-filesystem-missing
diff --git a/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.remove_all/remove_all.pass.cpp b/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.remove_all/remove_all.pass.cpp
index 5513c18f00585e..d33b24278bb19e 100644
--- a/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.remove_all/remove_all.pass.cpp
+++ b/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.remove_all/remove_all.pass.cpp
@@ -6,7 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-// REQUIRES: can-create-symlinks
+// REQUIRES: can-create-symlinks, non-root-user
 // UNSUPPORTED: c++03, c++11, c++14
 // UNSUPPORTED: no-filesystem
 // UNSUPPORTED: availability-filesystem-missing
diff --git a/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.status/status.pass.cpp b/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.status/status.pass.cpp
index 75eae80194ba80..7942189c755481 100644
--- a/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.status/status.pass.cpp
+++ b/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.status/status.pass.cpp
@@ -6,7 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-// REQUIRES: can-create-symlinks
+// REQUIRES: can-create-symlinks, non-root-user
 // UNSUPPORTED: c++03, c++11, c++14
 // UNSUPPORTED: no-filesystem
 // UNSUPPORTED: availability-filesystem-missing
diff --git a/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.symlink_status/symlink_status.pass.cpp b/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.symlink_status/symlink_status.pass.cpp
index 7a4658756f0c30..412c1e2dbdae71 100644
--- a/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.symlink_status/symlink_status.pass.cpp
+++ b/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.symlink_status/symlink_status.pass.cpp
@@ -6,7 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-// REQUIRES: can-create-symlinks
+// REQUIRES: can-create-symlinks, non-root-user
 // UNSUPPORTED: c++03, c++11, c++14
 // UNSUPPORTED: no-filesystem
 // UNSUPPORTED: availability-filesystem-missing
diff --git a/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.temp_dir_path/temp_directory_path.pass.cpp b/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.temp_dir_path/temp_directory_path.pass.cpp
index aed87b73121d06..ea9890102e163d 100644
--- a/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.temp_dir_path/temp_directory_path.pass.cpp
+++ b/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.temp_dir_path/temp_directory_path.pass.cpp
@@ -6,6 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 
+// REQUIRES: non-root-user
 // UNSUPPORTED: c++03, c++11, c++14
 // UNSUPPORTED: no-filesystem
 // UNSUPPORTED: availability-filesystem-missing

>From 536fa843a0d7275d69828800044e7c7eeabb4829 Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Sat, 14 Dec 2024 05:00:30 +0000
Subject: [PATCH 38/42] Only run buildkite agent if it exists

---
 .ci/monolithic-linux.sh         | 7 +++++--
 .github/workflows/premerge.yaml | 3 ++-
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/.ci/monolithic-linux.sh b/.ci/monolithic-linux.sh
index a4aeea7a16addc..4bfebd5f752795 100755
--- a/.ci/monolithic-linux.sh
+++ b/.ci/monolithic-linux.sh
@@ -34,8 +34,11 @@ function at-exit {
 
   # If building fails there will be no results files.
   shopt -s nullglob
-  python3 "${MONOREPO_ROOT}"/.ci/generate_test_report.py ":linux: Linux x64 Test Results" \
-    "linux-x64-test-results" "${BUILD_DIR}"/test-results.*.xml
+  if command -v buildkite-agent 2>&1 >/dev/null
+  then
+    python3 "${MONOREPO_ROOT}"/.ci/generate_test_report.py ":linux: Linux x64 Test Results" \
+      "linux-x64-test-results" "${BUILD_DIR}"/test-results.*.xml
+  fi
 }
 trap at-exit EXIT
 
diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index 6454b66270c9ac..0fd81a3b2cf4e5 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -62,4 +62,5 @@ jobs:
           export CC=/opt/llvm/bin/clang
           export CXX=/opt/llvm/bin/clang++
 
-          ./.ci/monolithic-linux.sh "$(echo ${linux_projects} | tr ' ' ';')" "$(echo ${linux_check_targets})" "$(echo ${linux_runtimes} | tr ' ' ';')" "$(echo ${linux_runtime_check_targets})"
+          #./.ci/monolithic-linux.sh "$(echo ${linux_projects} | tr ' ' ';')" "$(echo ${linux_check_targets})" "$(echo ${linux_runtimes} | tr ' ' ';')" "$(echo ${linux_runtime_check_targets})"
+          ./.ci/monolitic-linux.sh "clang;bolt;lld" "check-bolt" "libcxx" "check-cxx"

>From fe5e092985defe3f98a2f6b70aec79cfe0e19041 Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Sat, 14 Dec 2024 05:04:13 +0000
Subject: [PATCH 39/42] Fix spelling

---
 .github/workflows/premerge.yaml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index 0fd81a3b2cf4e5..93d3ed7c5c1d1e 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -63,4 +63,4 @@ jobs:
           export CXX=/opt/llvm/bin/clang++
 
           #./.ci/monolithic-linux.sh "$(echo ${linux_projects} | tr ' ' ';')" "$(echo ${linux_check_targets})" "$(echo ${linux_runtimes} | tr ' ' ';')" "$(echo ${linux_runtime_check_targets})"
-          ./.ci/monolitic-linux.sh "clang;bolt;lld" "check-bolt" "libcxx" "check-cxx"
+          ./.ci/monolithic-linux.sh "clang;bolt;lld" "check-bolt" "libcxx" "check-cxx"

>From 14dcc62b1251aae8158bd415f3e20caa7b5024cc Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Sat, 14 Dec 2024 05:14:38 +0000
Subject: [PATCH 40/42] fix runtimes

---
 .github/workflows/premerge.yaml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index 93d3ed7c5c1d1e..830646f5cea0be 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -63,4 +63,4 @@ jobs:
           export CXX=/opt/llvm/bin/clang++
 
           #./.ci/monolithic-linux.sh "$(echo ${linux_projects} | tr ' ' ';')" "$(echo ${linux_check_targets})" "$(echo ${linux_runtimes} | tr ' ' ';')" "$(echo ${linux_runtime_check_targets})"
-          ./.ci/monolithic-linux.sh "clang;bolt;lld" "check-bolt" "libcxx" "check-cxx"
+          ./.ci/monolithic-linux.sh "clang;bolt;lld" "check-bolt" "libcxx;libcxxabi;libunwind" "check-cxx"

>From 0e86199ebbed68d973e9c047092d5daeb8c6f3cc Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Sat, 14 Dec 2024 05:39:12 +0000
Subject: [PATCH 41/42] Try full build

---
 .github/workflows/premerge.yaml | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index 830646f5cea0be..6454b66270c9ac 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -62,5 +62,4 @@ jobs:
           export CC=/opt/llvm/bin/clang
           export CXX=/opt/llvm/bin/clang++
 
-          #./.ci/monolithic-linux.sh "$(echo ${linux_projects} | tr ' ' ';')" "$(echo ${linux_check_targets})" "$(echo ${linux_runtimes} | tr ' ' ';')" "$(echo ${linux_runtime_check_targets})"
-          ./.ci/monolithic-linux.sh "clang;bolt;lld" "check-bolt" "libcxx;libcxxabi;libunwind" "check-cxx"
+          ./.ci/monolithic-linux.sh "$(echo ${linux_projects} | tr ' ' ';')" "$(echo ${linux_check_targets})" "$(echo ${linux_runtimes} | tr ' ' ';')" "$(echo ${linux_runtime_check_targets})"

>From 7c9b0e01f5ae914ca4ce69311a382046563b8587 Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Sat, 14 Dec 2024 22:02:27 +0000
Subject: [PATCH 42/42] Try non-root user

---
 .github/workflows/premerge.yaml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index 6454b66270c9ac..65c8c3dabc27ef 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -13,7 +13,7 @@ jobs:
     if: github.repository_owner == 'llvm'
     runs-on: llvm-premerge-linux-runners
     container:
-      image: ghcr.io/llvm/ci-ubuntu-22.04:latest
+      image: ghcr.io/keenuts-test-org/linux-ci-testing:latest
     defaults:
       run:
         shell: bash



More information about the libcxx-commits mailing list