支持依赖解析

This commit is contained in:
2025-10-27 11:29:37 +08:00
parent 77ed80488d
commit dc12a54e8c
3 changed files with 70 additions and 25 deletions

View File

@@ -40,29 +40,45 @@ EOF
apm_exec(){
# 读取info文件中的所有行,按从下到上的顺序构建lowerdir
# 递归读取info文件构建lowerdir
local lowerdirs=()
# 检查info文件是否存在
if [[ ! -f "${PATH_PREFIX}/var/lib/apm/${coredir}/info" ]]; then
log.error "Info file not found for package: $coredir"
return 1
fi
# 读取info文件的每一行
while IFS= read -r basedir; do
[[ -z "$basedir" ]] && continue # 跳过空行
local current_dir="${PATH_PREFIX}/var/lib/apm/${coredir}/files" # 当前目录开始
local next_info_file=""
while : ; do
# 构建info文件的路径
next_info_file="${current_dir}/info"
# 检查ace-env目录是否存在
if [[ -d "${PATH_PREFIX}/var/lib/apm/${basedir}/files/ace-env" ]]; then
lowerdirs+=("${PATH_PREFIX}/var/lib/apm/${basedir}/files/ace-env")
# 如果ace-env不存在检查core目录
elif [[ -d "${PATH_PREFIX}/var/lib/apm/${basedir}/files/core" ]]; then
lowerdirs+=("${PATH_PREFIX}/var/lib/apm/${basedir}/files/core")
else
log.warn "Neither ace-env nor core directory found for base: $basedir"
# 检查info文件是否存在
if [[ ! -f "$next_info_file" ]]; then
log.debug "No more info files found, stopping recursion."
break
fi
done < "${PATH_PREFIX}/var/lib/apm/${coredir}/info"
# 读取info文件的每一行并构建lowerdir
while IFS= read -r basedir; do
[[ -z "$basedir" ]] && continue # 跳过空行
# 检查ace-env目录是否存在
if [[ -d "${current_dir}/${basedir}/files/ace-env" ]]; then
lowerdirs+=("${current_dir}/${basedir}/files/ace-env")
# 如果ace-env不存在检查core目录
elif [[ -d "${current_dir}/${basedir}/files/core" ]]; then
lowerdirs+=("${current_dir}/${basedir}/files/core")
else
log.warn "Neither ace-env nor core directory found for base: $basedir"
fi
done < "$next_info_file"
# 尝试获取下一个依赖信息的路径
local next_basedir=$(tail -n 1 "$next_info_file")
if [[ -z "$next_basedir" || ! -d "${current_dir}/${next_basedir}/files" ]]; then
log.debug "No further dependencies found, ending recursion."
break
fi
# 更新当前目录,递归处理下一个依赖
current_dir="${current_dir}/${next_basedir}/files"
done
# 检查是否找到了有效的lowerdir
if [[ ${#lowerdirs[@]} -eq 0 ]]; then
@@ -89,6 +105,7 @@ apm_exec(){
# 调试信息函数
debug_info() {
log.debug "======= APM Debug Information ======="