cpt

[ARCHIVED] Carbs Packaging Tools
git clone git://git.ckyln.com/~cem/cpt.git
Log | Files | Refs | README | LICENSE

commit c8a29c451eb774350c1e143be5cbb019b84a2bd7
parent 98b5cbd75b5ff8b4c18880151ba93f0dac906c54
Author: Dylan Araps <dylan.araps@gmail.com>
Date:   Mon,  6 Jan 2020 07:49:52 +0200

kiss: fix pkg conflicts

Diffstat:
Mkiss | 38++++++++++++++++++++++++++------------
1 file changed, 26 insertions(+), 12 deletions(-)

diff --git a/kiss b/kiss @@ -574,8 +574,6 @@ pkg_conflicts() { # Check to see if a package conflicts with another. log "$2" "Checking for package conflicts" - set +ef - # Filter the tarball's manifest and select only files # and any files they resolve to on the filesystem \ # (/bin/ls -> /usr/bin/ls). @@ -584,20 +582,36 @@ pkg_conflicts() { printf '%s\n' "$file" - (cd "$KISS_ROOT/" && readlink -f "./$file") ||: - done | + readlink -f "$KISS_ROOT/$file" ||: + done > "$cac_dir/$pid-m" + + p_name=$2 + + # Generate a list of all installed package manifests. + set +ef + set -f -- "$sys_db"/*/manifest + + # Filter the manifest list and remove the previously + # installed version of the package if it exists. + for pkg; do + i_name=${pkg%/*} + i_name=${i_name##*/} + + shift - # Filter the existing file list through the manifest of the - # presently installed version of the package (if it exists). - grep -svFxf "$sys_db/$2/manifest" - 2>/dev/null > "$cac_dir/$pid-m" + [ "$p_name" = "$i_name" ] && continue + + set -- "$@" "$pkg" + done - # If the generated manifest contains matches, check the - # contents for conflicts. + # Use 'grep' to list matching lines between the to + # be installed package's manifest and the above filtered + # list. [ -s "$cac_dir/$pid-m" ] && - grep -Fxf "$cac_dir/$pid-m" -- "$sys_db"/*/manifest && - die "Package '$2' conflicts with another package" + grep -Fxf "$cac_dir/$pid-m" -- "$@" && + die "Package '$p_name' conflicts with another package" - set -ef + set -e } pkg_remove() {