fix(linux): resolve transitive deps
This commit is contained in:
@@ -131,6 +131,30 @@ if [[ -n "$GTK_LIBDIR" ]]; then
|
|||||||
bundle_module_dir "$PRINT_MODULE_DIR" "$PRINT_DEST"
|
bundle_module_dir "$PRINT_MODULE_DIR" "$PRINT_DEST"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# ── Resolve transitive deps of modules ────────────────────────────────────
|
||||||
|
# Module bundling above only resolves one level of deps. Re-run the iterative
|
||||||
|
# walk over everything now in lib/ to catch deeper transitive deps (e.g.
|
||||||
|
# GIO module → libsystemd → libselinux).
|
||||||
|
echo "==> Resolving transitive dependencies of bundled modules..."
|
||||||
|
mapfile -t seed_files < <(find "$LIB_DIR" -name '*.so*' -type f 2>/dev/null)
|
||||||
|
while true; do
|
||||||
|
mapfile -t deps < <(collect_deps "${seed_files[@]}")
|
||||||
|
new_files=()
|
||||||
|
for dep in "${deps[@]}"; do
|
||||||
|
base="$(basename "$dep")"
|
||||||
|
if [[ -z "${seen[$base]:-}" && ! -f "$LIB_DIR/$base" ]]; then
|
||||||
|
seen[$base]=1
|
||||||
|
cp -L "$dep" "$LIB_DIR/$base" 2>/dev/null || true
|
||||||
|
new_files+=("$LIB_DIR/$base")
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [[ ${#new_files[@]} -eq 0 ]]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
echo " Bundled ${#new_files[@]} new libraries"
|
||||||
|
seed_files=("${new_files[@]}")
|
||||||
|
done
|
||||||
|
|
||||||
# ── GSettings schemas ─────────────────────────────────────────────────────
|
# ── GSettings schemas ─────────────────────────────────────────────────────
|
||||||
SCHEMAS_SRC="/usr/share/glib-2.0/schemas"
|
SCHEMAS_SRC="/usr/share/glib-2.0/schemas"
|
||||||
SCHEMAS_DEST="$BUNDLE_DIR/share/glib-2.0/schemas"
|
SCHEMAS_DEST="$BUNDLE_DIR/share/glib-2.0/schemas"
|
||||||
|
|||||||
Reference in New Issue
Block a user