Tweak info_item()

Cleanup and tweak info_item():
- the code to detect already available packages in $OUTPUT
  is now more robust and readable;
- the code to determine already installed versions of the
  package is now more robust and readable;
- the "Installed:" line now also lists non-SBo packages
  (this is useful for Slackware-current users, as well as
  for people using non-SBo third-party packages)
- the window title now also shows the package tag, to
  remove some ambiguity (e.g. as of now, Slackware-current
  has a libzip package with the same "signature" as the
  SBo one, and from the info_item() dialog it looks like
  they are the same package when in fact they are not).

Signed-off-by: Mauro Giachero <mauro.giachero@gmail.com>
This commit is contained in:
mauro.giachero 2009-05-26 09:05:38 +00:00
parent d21b989c27
commit 2b553679e8
2 changed files with 30 additions and 43 deletions

View file

@ -78,4 +78,7 @@ enhancements:
queuefiles much easier and more intuitive. queuefiles much easier and more intuitive.
* Add ability to load more than one queuefile at a time when building * Add ability to load more than one queuefile at a time when building
from command line interface. from command line interface.
* The info_item dialog now shows non-SBo installed packages and gained a
more robust approach to finding both the installed package names and
the available packages in $OUTPUT.
+--------------------------+ +--------------------------+

View file

@ -961,9 +961,9 @@ info_item() {
# Returns 0 unless the user asked to jump back to the main menu. # Returns 0 unless the user asked to jump back to the main menu.
local OLDPKG CATEGORY SHORTPATH CURVERSION CURARCH CURBUILD local OLDPKG CATEGORY SHORTPATH CURVERSION CURARCH CURBUILD
local CURAPP LONGAPP SHORTAPP local CURAPP OUTPUTFILES
local STRING INDEX NAME INST_ARCH VER BUILD DEFAULTITEM local STRING INDEX NAME INST_ARCH VER BUILD DEFAULTITEM
local CURPACKAGE INSTALLEDPACKAGE MENUPACKAGE TITLEPACKAGE RENAMEDPACKAGE local CURPACKAGE INSTALLEDPACKAGE MENUPACKAGE TITLEPACKAGE
local CHOICE PARSED_SLACK_DESC local CHOICE PARSED_SLACK_DESC
local APP="$(< $SBOPKGTMP/sbopkg_item_selection)" local APP="$(< $SBOPKGTMP/sbopkg_item_selection)"
local RETVAL=0 local RETVAL=0
@ -971,7 +971,7 @@ info_item() {
# We need to check and see if the APP has ever been renamed. # We need to check and see if the APP has ever been renamed.
get_old_name OLDPKG $APP get_old_name OLDPKG $APP
CATEGORY="$(< $SBOPKGTMP/sbopkg_category_selection)" CATEGORY=$(< $SBOPKGTMP/sbopkg_category_selection)
SHORTPATH=$REPO_DIR/$CATEGORY/$APP SHORTPATH=$REPO_DIR/$CATEGORY/$APP
CURVERSION=$(grep VERSION $SHORTPATH/$APP.info | CURVERSION=$(grep VERSION $SHORTPATH/$APP.info |
cut -d= -f2 | sed s/\"//g) cut -d= -f2 | sed s/\"//g)
@ -981,57 +981,41 @@ info_item() {
CURBUILD=$(egrep -m1 "^BUILD" $SHORTPATH/$APP.SlackBuild | CURBUILD=$(egrep -m1 "^BUILD" $SHORTPATH/$APP.SlackBuild |
sed -e 's/^.*[=-]//;s/\"//;s/[ #}\t].*$//g;s/\"//g') sed -e 's/^.*[=-]//;s/\"//;s/[ #}\t].*$//g;s/\"//g')
while :; do while :; do
CURAPP=$(ls /var/log/packages/*$REPO_TAG* 2> /dev/null | INSTALLEDPACKAGE=$(ls /var/log/packages |
grep "$APP\|$OLDPKG") egrep "^($APP|$OLDPKG)-[^-]*-[^-]*-[^-]*\$")
unset INSTALLEDPACKAGE # Only get the first package (not that the same package should be
for i in $CURAPP; do # installed more than once on a sane system...)
LONGAPP=$(echo $i | sed "s/$REPO_TAG$//;s/-[^-]*-[^-]*-[^-]*$//") INSTALLEDPACKAGE=$(head -n 1 <<< "$INSTALLEDPACKAGE")
SHORTAPP=$(echo $LONGAPP | sed -e 's/^.*\///g') # Find the available package to install, if any, using several
# "strictness levels" (to pick the right one if available, but falling
# back to "less right" alternatives when appropriate)
OUTPUTFILES=$(ls -1 $OUTPUT)
CURPACKAGE=$( \
grep "^$APP-$CURVERSION-$CURARCH-$CURBUILD$REPO_TAG\\.t.z\$" \
<<< "$OUTPUTFILES")
[[ -z $CURPACKAGE ]] && CURPACKAGE=$( \
grep "^$APP-$CURVERSION-[^-]*-$CURBUILD$REPO_TAG\\.t.z\$" \
<<< "$OUTPUTFILES")
[[ -z $CURPACKAGE ]] && CURPACKAGE=$( \
grep "^$APP-$CURVERSION-[^-]*-[^-]*$REPO_TAG\\.t.z\$" \
<<< "$OUTPUTFILES")
[[ -z $CURPACKAGE ]] && CURPACKAGE=$( \
grep "^$APP-[^-]*-[^-]*-[^-]*$REPO_TAG\\.t.z\$" \
<<< "$OUTPUTFILES")
if [[ $SHORTAPP == $APP || $SHORTAPP == $OLDPKG ]]; then
# Again, code from pkgtool
STRING=$(basename $i $REPO_TAG)
INDEX="$(echo $STRING | tr -d -c -)"
INDEX="$(expr length $INDEX + 1)"
NAME=$(expr $INDEX - 3)
NAME="$(echo $STRING | cut -f 1-$NAME -d -)"
VER=$(expr $INDEX - 2)
VER="$(echo $STRING | cut -f $VER -d -)"
INST_ARCH=$(expr $INDEX - 1)
INST_ARCH="$(echo $STRING | cut -f $INST_ARCH -d -)"
BUILD="$(echo $STRING | cut -f $INDEX -d -)"
if [[ $SHORTAPP == $APP ]]; then
INSTALLEDPACKAGE=$NAME-$VER-$INST_ARCH-$BUILD
else # Must be a renamed app
RENAMEDPACKAGE=$NAME-$VER-$INST_ARCH-$BUILD
fi
fi
done
if $(echo $(ls -1 $OUTPUT) | grep -E -q "$APP.*$CURVERSION"); then
CURPACKAGE="$(
basename $(ls -1 $OUTPUT/${APP}*${CURVERSION}*${CURBUILD}*t?z|
head -n 1)
)"
else
unset CURPACKAGE
fi
if [[ -z $CURPACKAGE ]]; then if [[ -z $CURPACKAGE ]]; then
unset MENUPACKAGE unset MENUPACKAGE
else else
CURPACKAGE=$(head -n 1 <<< "$CURPACKAGE")
MENUPACKAGE="Install $CURPACKAGE" MENUPACKAGE="Install $CURPACKAGE"
fi fi
if [[ -z $INSTALLEDPACKAGE ]]; then if [[ -z $INSTALLEDPACKAGE ]]; then
if [[ -z $RENAMEDPACKAGE ]]; then TITLEPACKAGE="$APP (Not Installed)"
TITLEPACKAGE="$APP (Not Installed)"
else
TITLEPACKAGE="$APP (Installed: $RENAMEDPACKAGE)"
fi
else else
TITLEPACKAGE="$APP (Installed: $INSTALLEDPACKAGE)" TITLEPACKAGE="$APP (Installed: $INSTALLEDPACKAGE)"
fi fi
dialog --default-item "$DEFAULTITEM" \ dialog --default-item "$DEFAULTITEM" \
--title "$APP ($CURVERSION-$CURARCH-$CURBUILD)" \ --title "$APP ($CURVERSION-$CURARCH-$CURBUILD$REPO_TAG)" \
--backtitle "$TITLEPACKAGE" --extra-button --extra-label "Back" \ --backtitle "$TITLEPACKAGE" --extra-button --extra-label "Back" \
--cancel-label "Main Menu" --menu \ --cancel-label "Main Menu" --menu \
"$(crunch "Please choose an item or press <Back> to go back \ "$(crunch "Please choose an item or press <Back> to go back \