Compare commits

..

1 commit

Author SHA1 Message Date
Jesus Checa Hidalgo
9bc730b132 Create compat18 branch 2024-07-16 13:59:35 +02:00
5 changed files with 16 additions and 20 deletions

View file

@ -12,10 +12,3 @@ repos:
rev: 1.32.2 rev: 1.32.2
hooks: hooks:
- id: tmt-lint - id: tmt-lint
- repo: https://github.com/koalaman/shellcheck-precommit
rev: v0.10.0
hooks:
- id: shellcheck
require_serial: true # Podman has trouble running concurrently
args: ["--exclude=SC1091"] # Ignore "Not following" sourced scripts

View file

@ -4,14 +4,13 @@
rlJournalStart rlJournalStart
rlPhaseStartSetup rlPhaseStartSetup
declare tmp
rlRun "tmp=$(mktemp -d)" 0 "Create a temp dir" rlRun "tmp=$(mktemp -d)" 0 "Create a temp dir"
# Get the compiler-rt package name from the tmt required packages, which should # Get the compiler-rt package name from the tmt required packages, which should
# address the issue of getting the correct name regardless it's a compat package # address the issue of getting the correct name regardless it's a compat package
# or not. The package can be named either compiler-rt or compiler-rt[0-9]+ # or not. The package can be named either compiler-rt or compiler-rt[0-9]+
rlRun "COMPILER_RT=$(rlGetYAMLdeps | tr ' ' '\n' | grep -E "compiler-rt[[:digit:]]*$")" rlRun "COMPILER_RT=$(rlGetYAMLdeps | tr ' ' '\n' | grep -E "compiler-rt[[:digit:]]*$")"
# Make sure to get only the main arch, so we can deal with multilib issues. # Make sure to get only the main arch, so we can deal with multilib issues.
rlRun "COMPILER_RT_NVR=$(rpm -q "${COMPILER_RT}" | grep "$(uname -m)")" rlRun "COMPILER_RT_NVR=$(rpm -q ${COMPILER_RT} | grep $(uname -m))"
# Use dnf repoquery --installed so we *don't* query any repos but the # Use dnf repoquery --installed so we *don't* query any repos but the
# local rpm database instead. That should handle packages installed # local rpm database instead. That should handle packages installed
# using rpm, that are not in repos, and avoid timeouts if repo connection # using rpm, that are not in repos, and avoid timeouts if repo connection
@ -24,7 +23,7 @@ rlJournalStart
rlPhaseEnd rlPhaseEnd
rlPhaseStartTest rlPhaseStartTest
for file in $(rpm -ql "$COMPILER_RT_NVR"); do for file in $(rpm -ql $COMPILER_RT_NVR); do
# Skip iteration if the file is not a symlink # Skip iteration if the file is not a symlink
[[ -L $file ]] || continue [[ -L $file ]] || continue
@ -37,13 +36,13 @@ rlJournalStart
# Up to this point, the linked file exists. # Up to this point, the linked file exists.
# If the owner of the target compiler-rt package itself that's # If the owner of the target compiler-rt package itself that's
# correct and we can skip to the next file. # correct and we can skip to the next file.
target=$(readlink -f "$file") target=$(readlink -f $file)
OWNER_NVR=$(rpm -qf "$target") OWNER_NVR=$(rpm -qf $target)
[[ "$OWNER_NVR" == "$COMPILER_RT_NVR" ]] && continue [[ "$OWNER_NVR" == "$COMPILER_RT_NVR" ]] && continue
# The target exists but it's not owned by compiler-rt. It must be # The target exists but it's not owned by compiler-rt. It must be
# owned by one of its dependencies, else flag a failure. # owned by one of its dependencies, else flag a failure.
if ! grep "$OWNER_NVR" "$tmp/dependencies.log"; then if ! cat $tmp/dependencies.log | grep $OWNER_NVR; then
rlFail "$file pointing to $target is a dangling symlink owned by $OWNER_NVR" rlFail "$file pointing to $target is a dangling symlink owned by $OWNER_NVR"
fi fi
done done

View file

@ -20,3 +20,7 @@ adjust+:
- enabled: false - enabled: false
because: "compiler-rt.i686 may not be available in snapshot builds when x86_64 tests are executed" because: "compiler-rt.i686 may not be available in snapshot builds when x86_64 tests are executed"
when: snapshot is defined when: snapshot is defined
- enabled: false
because: "i686 packages not available for compat"
when: compat is defined

View file

@ -1,15 +1,15 @@
#!/bin/bash -ux #!/bin/sh -ux
# Do NOT set exit after error flag (set -e). Let all the optimizations to be run # Do NOT set exit after error flag (set -e). Let all the optimizations to be run
tmp=$(mktemp -d) tmp=$(mktemp -d)
result=0 result=0
# Test the reproducer with all the optimization levels # Test the reproducer with all the optimization levels
for opt_level in 0 1 2 3; do for opt_level in 0 1 2 3; do
clang++ --rtlib=compiler-rt -O$opt_level test.cpp -o "${tmp}/test_O${opt_level}" clang++ --rtlib=compiler-rt -O$opt_level test.cpp -o $tmp/test_O$opt_level
"${tmp}/test_O${opt_level}" | grep '0.122986' || result=1 $tmp/test_O$opt_level | grep '0.122986' || result=1
done done
rm -rf "$tmp" rm -rf $tmp
if [[ "$result" == 1 ]]; then if [[ "$result" == 1 ]]; then
exit 1 exit 1
fi fi

View file

@ -14,7 +14,7 @@ framework: shell
# Always define "test" key and override in adjust or in each specific test # Always define "test" key and override in adjust or in each specific test
# metadata if needed. # metadata if needed.
test: ./test.sh test: "PATH=/usr/lib64/llvm18/bin:$PATH ./test.sh"
# Commonly used keys are initialized to empty. # Commonly used keys are initialized to empty.
require: [] require: []
@ -24,8 +24,8 @@ tag: []
adjust+: adjust+:
# Common requirements when LLVM is not SCL-ized # Common requirements when LLVM is not SCL-ized
- require+: - require+:
- clang - clang18
- compiler-rt - compiler-rt18
when: collection is not defined when: collection is not defined
# Requirements for SCL-ized LLVM # Requirements for SCL-ized LLVM