mirror of
https://codeberg.org/kiss-community/kiss
synced 2024-12-24 16:10:05 -07:00
kiss: cleanup pkg_conflicts
This commit is contained in:
parent
4cde4248cb
commit
737ef0c147
25
kiss
25
kiss
@ -733,7 +733,6 @@ pkg_conflicts() {
|
|||||||
printf '%s\n' "${PWD#"$KISS_ROOT"}/${file##*/}"
|
printf '%s\n' "${PWD#"$KISS_ROOT"}/${file##*/}"
|
||||||
done < "$tar_dir/$1/$pkg_db/$1/manifest" > "$mak_dir/$pid-m"
|
done < "$tar_dir/$1/$pkg_db/$1/manifest" > "$mak_dir/$pid-m"
|
||||||
|
|
||||||
p_name=$1
|
|
||||||
set +f
|
set +f
|
||||||
set -f "$sys_db"/*/manifest
|
set -f "$sys_db"/*/manifest
|
||||||
|
|
||||||
@ -744,7 +743,8 @@ pkg_conflicts() {
|
|||||||
for manifest do
|
for manifest do
|
||||||
shift
|
shift
|
||||||
|
|
||||||
[ "$sys_db/$p_name/manifest" = "$manifest" ] && continue
|
[ "$sys_db/$pkg/manifest" = "$manifest" ] &&
|
||||||
|
continue
|
||||||
|
|
||||||
set -- "$@" "$manifest"
|
set -- "$@" "$manifest"
|
||||||
done
|
done
|
||||||
@ -760,7 +760,8 @@ pkg_conflicts() {
|
|||||||
# Enable alternatives automatically if it is safe to do so.
|
# Enable alternatives automatically if it is safe to do so.
|
||||||
# This checks to see that the package that is about to be installed
|
# This checks to see that the package that is about to be installed
|
||||||
# doesn't overwrite anything it shouldn't in '/var/db/kiss/installed'.
|
# doesn't overwrite anything it shouldn't in '/var/db/kiss/installed'.
|
||||||
grep -q ":/var/db/kiss/installed/" "$mak_dir/$pid-c" || choice_auto=1
|
grep -q ":/var/db/kiss/installed/" "$mak_dir/$pid-c" ||
|
||||||
|
choice_auto=1
|
||||||
|
|
||||||
if [ "$KISS_CHOICE" != 0 ] &&
|
if [ "$KISS_CHOICE" != 0 ] &&
|
||||||
[ "$choice_auto" = 1 ] &&
|
[ "$choice_auto" = 1 ] &&
|
||||||
@ -787,11 +788,11 @@ pkg_conflicts() {
|
|||||||
#
|
#
|
||||||
# Pretty nifty huh?
|
# Pretty nifty huh?
|
||||||
while IFS=: read -r _ con; do
|
while IFS=: read -r _ con; do
|
||||||
printf '%s\n' "Found conflict $con"
|
printf 'Found conflict %s\n' "$con"
|
||||||
|
|
||||||
# Create the "choices" directory inside of the tarball.
|
# Create the "choices" directory inside of the tarball.
|
||||||
# This directory will store the conflicting file.
|
# This directory will store the conflicting file.
|
||||||
mkdir -p "$tar_dir/$p_name/${cho_dir:=var/db/kiss/choices}"
|
mkdir -p "$tar_dir/$pkg/${cho_dir:=var/db/kiss/choices}"
|
||||||
|
|
||||||
# Construct the file name of the "db" entry of the
|
# Construct the file name of the "db" entry of the
|
||||||
# conflicting file. (pkg_name>usr>bin>ls)
|
# conflicting file. (pkg_name>usr>bin>ls)
|
||||||
@ -799,26 +800,26 @@ pkg_conflicts() {
|
|||||||
|
|
||||||
# Move the conflicting file to the choices directory
|
# Move the conflicting file to the choices directory
|
||||||
# and name it according to the format above.
|
# and name it according to the format above.
|
||||||
mv -f "$tar_dir/$p_name/$con" \
|
mv -f "$tar_dir/$pkg/$con" \
|
||||||
"$tar_dir/$p_name/$cho_dir/$p_name$con_name" 2>/dev/null || {
|
"$tar_dir/$pkg/$cho_dir/$pkg$con_name" 2>/dev/null || {
|
||||||
log "File must be in ${con%/*} and not a symlink to it"
|
log "File must be in ${con%/*} and not a symlink to it"
|
||||||
log "This usually occurs when a binary is installed to"
|
log "This usually occurs when a binary is installed to"
|
||||||
log "/sbin instead of /usr/bin (example)"
|
log "/sbin instead of /usr/bin (example)"
|
||||||
log "Before this package can be used as an alternative,"
|
log "Before this package can be used as an alternative,"
|
||||||
log "this must be fixed in $p_name. Contact the maintainer"
|
log "this must be fixed in $pkg. Contact the maintainer"
|
||||||
die "by finding their details via 'kiss-maintainer'" "" "!>"
|
die "by finding their details via 'kiss-maintainer'" "" "!>"
|
||||||
}
|
}
|
||||||
done < "$mak_dir/$pid-c"
|
done < "$mak_dir/$pid-c"
|
||||||
|
|
||||||
log "$p_name" "Converted all conflicts to choices (kiss a)"
|
log "$pkg" "Converted all conflicts to choices (kiss a)"
|
||||||
|
|
||||||
# Rewrite the package's manifest to update its location
|
# Rewrite the package's manifest to update its location
|
||||||
# to its new spot (and name) in the choices directory.
|
# to its new spot (and name) in the choices directory.
|
||||||
pkg_manifest "$p_name" "$tar_dir" 2>/dev/null
|
pkg_manifest "$pkg" "$tar_dir" 2>/dev/null
|
||||||
|
|
||||||
elif [ -s "$mak_dir/$pid-c" ]; then
|
elif [ -s "$mak_dir/$pid-c" ]; then
|
||||||
log "Package '$p_name' conflicts with another package" "" "!>"
|
log "Package '$pkg' conflicts with another package" "" "!>"
|
||||||
log "Run 'KISS_CHOICE=1 kiss i $p_name' to add conflicts" "" "!>"
|
log "Run 'KISS_CHOICE=1 kiss i $pkg' to add conflicts" "" "!>"
|
||||||
die "as alternatives." "" "!>"
|
die "as alternatives." "" "!>"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user