forked from woqidaideshi/openruyi-autotest
49 lines
1.6 KiB
Bash
49 lines
1.6 KiB
Bash
# library-prefix = llvm22
|
|
#
|
|
# llvm22 suite-level shared library
|
|
# Uses flag-file + reference counting to ensure the package
|
|
# is installed only ONCE and uninstalled only ONCE across all
|
|
# test cases.
|
|
|
|
PKG_FLAG="/tmp/.beakerlib_llvm22_suite"
|
|
DEVEL_PKG="llvm22-devel"
|
|
|
|
llvm22Setup() {
|
|
if [ ! -f "$PKG_FLAG" ]; then
|
|
if ! rpm -q "$DEVEL_PKG" 2>/dev/null; then
|
|
echo openruyi | sudo -S dnf install -y --nogpgcheck "$DEVEL_PKG" 2>/dev/null
|
|
echo "installed=1" > "$PKG_FLAG"
|
|
rlLogInfo "已安装 $DEVEL_PKG 软件包(首次)"
|
|
else
|
|
echo "installed=0" > "$PKG_FLAG"
|
|
rlLogInfo "$DEVEL_PKG 软件包已存在"
|
|
fi
|
|
echo "ref=1" >> "$PKG_FLAG"
|
|
else
|
|
local ref
|
|
ref=$(grep "^ref=" "$PKG_FLAG" | cut -d= -f2)
|
|
ref=$((ref + 1))
|
|
sed -i "s/^ref=.*/ref=$ref/" "$PKG_FLAG"
|
|
rlLogInfo "$DEVEL_PKG 已由其他测试安装,引用计数: $ref"
|
|
fi
|
|
rlCleanupAppend "llvm22Cleanup"
|
|
}
|
|
|
|
llvm22Cleanup() {
|
|
if [ ! -f "$PKG_FLAG" ]; then
|
|
return 0
|
|
fi
|
|
local ref
|
|
ref=$(grep "^ref=" "$PKG_FLAG" | cut -d= -f2)
|
|
ref=$((ref - 1))
|
|
if [ "$ref" -le 0 ]; then
|
|
if grep -q "^installed=1" "$PKG_FLAG"; then
|
|
echo openruyi | sudo -S dnf remove -y "$DEVEL_PKG" 2>/dev/null || true
|
|
rlLogInfo "已卸载 $DEVEL_PKG 软件包(最后一个测试)"
|
|
fi
|
|
rm -f "$PKG_FLAG"
|
|
else
|
|
sed -i "s/^ref=.*/ref=$ref/" "$PKG_FLAG"
|
|
rlLogInfo "$DEVEL_PKG 保留(还有 $ref 个测试未完成)"
|
|
fi
|
|
} |