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
hooks:
- 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
rlPhaseStartSetup
declare tmp
rlRun "tmp=$(mktemp -d)" 0 "Create a temp dir"
# 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
# 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:]]*$")"
# 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
# local rpm database instead. That should handle packages installed
# using rpm, that are not in repos, and avoid timeouts if repo connection
@ -24,7 +23,7 @@ rlJournalStart
rlPhaseEnd
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
[[ -L $file ]] || continue
@ -37,13 +36,13 @@ rlJournalStart
# Up to this point, the linked file exists.
# If the owner of the target compiler-rt package itself that's
# correct and we can skip to the next file.
target=$(readlink -f "$file")
OWNER_NVR=$(rpm -qf "$target")
target=$(readlink -f $file)
OWNER_NVR=$(rpm -qf $target)
[[ "$OWNER_NVR" == "$COMPILER_RT_NVR" ]] && continue
# The target exists but it's not owned by compiler-rt. It must be
# 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"
fi
done

View file

@ -20,3 +20,7 @@ adjust+:
- enabled: false
because: "compiler-rt.i686 may not be available in snapshot builds when x86_64 tests are executed"
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
tmp=$(mktemp -d)
result=0
# Test the reproducer with all the optimization levels
for opt_level in 0 1 2 3; do
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
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
done
rm -rf "$tmp"
rm -rf $tmp
if [[ "$result" == 1 ]]; then
exit 1
fi

View file

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