OSDN Git Service

Version 3.0.0+toward_3.1.0_20130607080725
authorMamoru Sakaue / MwGhennndo <glmwghennndo@users.sourceforge.jp>
Thu, 6 Jun 2013 23:09:11 +0000 (08:09 +0900)
committerMamoru Sakaue / MwGhennndo <glmwghennndo@users.sourceforge.jp>
Thu, 6 Jun 2013 23:09:11 +0000 (08:09 +0900)
[IMPROVED] Correspondence to cases of duplicated packages for the same port is implemented.

modified:   Makefile
modified:   bin/portsreinstall
modified:   lib/libdatabase_build.sh
modified:   lib/libdeinstall.sh
modified:   lib/libreinstall.sh
modified:   man/portsreinstall.8

Makefile
bin/portsreinstall
lib/libdatabase_build.sh
lib/libdeinstall.sh
lib/libreinstall.sh
man/portsreinstall.8

index b0285ae..3ba1096 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -34,11 +34,14 @@ LIBS=       lib/liboptions.sh \
 all:
 
 install:
+       $(INSTALL_DIR) $(PREFIX)/bin
        $(INSTALL_SCRIPT) bin/$(PROGNAME) $(PREFIX)/bin
        $(INSTALL_DIR) $(PREFIX)/lib/$(PROGNAME)
        $(INSTALL_NOEXEC) $(LIBS) $(PREFIX)/lib/$(PROGNAME)
+       $(INSTALL_DIR) $(PREFIX)/man/man8
        $(INSTALL_NOEXEC) man/$(PROGNAME).8 $(PREFIX)/man/man8
        $(GZIP) ${PREFIX}/man/man8/$(PROGNAME).8
+       $(INSTALL_DIR) $(PREFIX)/etc
        $(INSTALL_NOEXEC) etc/$(PROGNAME).conf $(PREFIX)/etc/$(PROGNAME).conf.sample
        if [ ! -e $(PREFIX)/etc/$(PROGNAME).conf ]; then $(INSTALL_CONF) etc/$(PROGNAME).conf $(PREFIX)/etc; fi
 
index 3bab447..73f1800 100755 (executable)
@@ -15,7 +15,7 @@ APPNAME=`basename "$0"`
 # MYVERSION=3.0.0
 # COMPATIBLE_VERSIONS='^(3\.0\.[0-9]+)$'
 # Template for development versions
-MYVERSION=3.0.0+toward_3.1.0_20130606182950
+MYVERSION=3.0.0+toward_3.1.0_20130607080725
 COMPATIBLE_VERSIONS='^(3\.0\.0\+toward_3\.0\.1_[0-9]+|3\.0\.[0-9]+)$'
 
 MYPREFIX=`dirname "\`dirname \"$0\"\`" | sed 's|/bin$||'`
index dbee841..7f90a66 100644 (file)
@@ -91,7 +91,7 @@ database_build_register_obsolete_port ()
        [ -d "${DBDIR}/obsolete/$origin" ] || mkdir -p "${DBDIR}/obsolete/$origin"
        pkgtag=`pkgsys_pkg_info_qO_init "$origin"`
        [ -n "$pkgtag" ] || pkgtag='[not installed]'
-       echo "$pkgtag" > ${DBDIR}/obsolete/$origin/pkgtag
+       echo "$pkgtag" | tr '\n' ' ' > ${DBDIR}/obsolete/$origin/pkgtag
        for table in dependents requirements
        do
                for level in direct full
@@ -403,8 +403,8 @@ database_build_create_pkgtag ()
                        pkgtag="[new] $pkg_new"
                fi
        fi
-       echo "$pkgtag" > $dbdir/pkgtag.orig
-       echo "$pkgtag" > $dbdir/pkgtag
+       echo "$pkgtag" | tr '\n' ' ' > $dbdir/pkgtag.orig
+       echo "$pkgtag" | tr '\n' ' ' > $dbdir/pkgtag
 }
 
 # ============= Update the message tag showing the version upgrade =============
@@ -429,7 +429,7 @@ database_build_update_pkgtag ()
                fi
        fi
        pkgtag=`cat "${DBDIR}/requires/$origin/pkgtag.orig"`
-       echo "$pkgtag$detail" > ${DBDIR}/requires/$origin/pkgtag
+       echo "$pkgtag$detail" | tr '\n' ' ' > ${DBDIR}/requires/$origin/pkgtag
 }
 
 # ============= Check whether the currently installed package version is the latest =============
index 4aa67bd..97577f3 100644 (file)
@@ -199,12 +199,12 @@ deinstall_restore ()
 # ============= Deinstallation of a package for an origin =============
 deinstall_exec ()
 {
-       local origin origin_regexp currentpkg backup_pkgdir backup_pkg
+       local origin origin_regexp currentpkg backup_pkgdir backup_pkg pkg
        origin=$1
        origin_regexp=`str_escape_regexp "$origin"`
        grep -v -E "^${origin_regexp}[[:space:]]" "${DBDIR}/deleted_conflicts" > ${DBDIR}/deleted_conflicts.tmp || :
        mv "${DBDIR}/deleted_conflicts.tmp" "${DBDIR}/deleted_conflicts"
-       currentpkg=`pkg_info_qO "$origin" 2> /dev/null`
+       currentpkg=`pkg_info_qO "$origin" 2> /dev/null | tr '\n' ' '`
        [ -n "$currentpkg" ] || return 0
        temp_set_msg_current_stage "a ${_MSG_CURRENT_STAGE_general} process for $origin ($currentpkg) $PROGRAM_STEP_COUNTER"
        database_query_get_target_attributes currentorigin "$origin"
@@ -241,7 +241,8 @@ deinstall_exec ()
                        backup_pkgdir=${PKGREPOSITORY}
                fi
                [ -d "$backup_pkgdir" ] || mkdir -p "$backup_pkgdir"
-               backup_pkg=`pkgsys_create_backup_pkg "$currentpkg" "$backup_pkgdir"` || :
+               pkg=`echo "$currentpkg" | tr ' ' '\n' | grep -v '^$' | tail -n 1`
+               backup_pkg=`pkgsys_create_backup_pkg "$pkg" "$backup_pkgdir"` || :
                if [ -n "$backup_pkg" ]
                then
                        message_echo "INFO: The backup is saved at $backup_pkg."
@@ -254,13 +255,13 @@ deinstall_exec ()
                fi
        fi
        message_echo "-- (Deleting package for $origin as $currentpkg)"
-       if ! pkg_delete_f "$currentpkg"
-       then
-               message_echo "*** Continuating forcibly by hoping success..."
-               message_echo
-               temp_set_msg_current_stage "${_MSG_CURRENT_STAGE_general}"
-               return
-       fi
+       echo "$REINSTALL_CURRENTPKG" | tr ' ' '\n' | grep -v '^$' | while read pkg
+       do
+               if ! pkg_delete_f "$currentpkg"
+               then
+                       message_echo "*** Continuating forcibly by hoping success..."
+               fi
+       done
        temp_set_msg_current_stage "${_MSG_CURRENT_STAGE_general}"
        message_echo
 }
index cc891ea..3e243cd 100644 (file)
@@ -315,16 +315,20 @@ reinstall_chk_and_restore_requirements ()
 # ============= Back-up of the currently installed package =============
 reinstall_pkg_backup ()
 {
-       local backup_pkg
+       local backup_pkg pkg
        reinstall_chk_stage_complete PKG_BACKUP && return
-       if [ -n "$REINSTALL_CURRENTPKG" ]
+       pkg=`echo "$REINSTALL_CURRENTPKG" | tr ' ' '\n' | grep -v '^$' | tail -n 1`
+       if [ -n "$pkg" ]
        then
                message_echo "-- (Creating temporary backup package for $REINSTALL_ORIGPKGTAG)"
-               backup_pkg=`pkgsys_create_backup_pkg "$REINSTALL_CURRENTPKG" "${DBDIR}/backup_packages"` || \
+               if backup_pkg=`pkgsys_create_backup_pkg "$pkg" "${DBDIR}/backup_packages"`
+               then
+                       echo "$pkg" > $REINSTALL_DBNODE_DIR/backedup_version
+                       echo "$backup_pkg" > $REINSTALL_DBNODE_DIR/backedup_pkgfile
+               else
                        message_echo "WARNING: Failed to create the backup package, but ignored by hoping success." >&2
-               cd "${PORTSDIR}/$REINSTALL_ORIGIN"
-               echo "$REINSTALL_CURRENTPKG" > $REINSTALL_DBNODE_DIR/backedup_version
-               echo "$backup_pkg" > $REINSTALL_DBNODE_DIR/backedup_pkgfile
+                       break
+               fi
        fi
        reinstall_register_stage_complete PKG_BACKUP
 }
@@ -334,10 +338,13 @@ reinstall_deinstall ()
 {
        [ -n "$REINSTALL_CURRENTPKG" ] || return 0
        reinstall_chk_stage_complete DEINSTALL && return
-       pkg_delete_f "$REINSTALL_CURRENTPKG" || \
-       {
-               message_echo "WARNING: Failed to deinstall $REINSTALL_CURRENTPKG by $PKGSYS_CMD_PKG_DELETE." >&2
-       }
+       echo "$REINSTALL_CURRENTPKG" | tr ' ' '\n' | grep -v '^$' | while read pkg
+       do
+               pkg_delete_f "$pkg" || \
+               {
+                       message_echo "WARNING: Failed to deinstall $pkg by $PKGSYS_CMD_PKG_DELETE." >&2
+               }
+       done
        message_echo "-- (Trying to deinstall by ports to make sure. This usually ends up with warnings.)"
        reinstall_make deinstall || \
        {
@@ -438,7 +445,7 @@ reinstall_exec ()
        ( set -e
        REINSTALL_ORIGIN=$1
        REINSTALL_DBNODE_DIR=${DBDIR}/requires/$REINSTALL_ORIGIN
-       REINSTALL_CURRENTPKG=`database_build_update_pkgname "$REINSTALL_ORIGIN"`
+       REINSTALL_CURRENTPKG=`database_build_update_pkgname "$REINSTALL_ORIGIN" | tr '\n' ' '`
        REINSTALL_IS_CURRENTPKG_LATEST=no
        database_build_is_currentpkg_latest "$REINSTALL_ORIGIN" && REINSTALL_IS_CURRENTPKG_LATEST=yes
        database_build_update_pkgtag "$REINSTALL_ORIGIN"
@@ -454,56 +461,61 @@ reinstall_exec ()
                return
        fi
        reinstall_skip_if_in_a_list 'Skipped because being a leaf port' leaf_ports_to_delete && return
-       if [ -e "${DBDIR}/target_all" ]
-       then
-               if [ $REINSTALL_IS_CURRENTPKG_LATEST = yes ]
-               then
-                       reinstall_restore_if_temporarily_deinstalled
-                       reinstall_skip 'Skipped because being already latest' "$REINSTALL_ORIGIN"
-                       return
-               fi
-       elif [ ! -e "$REINSTALL_DBNODE_DIR/conf_updated" ]
+       if expr "$REINSTALL_CURRENTPKG" : '.* .*' > /dev/null
        then
-               if [ -e "$nodedir/installed_by_pkg" ] && database_query_is_default_conf "$REINSTALL_ORIGIN" quiet
-               then
-                       reinstall_restore_if_temporarily_deinstalled
-                       reinstall_skip 'Skipped because already upgraded with a prebuilt package'
-                       return
-               fi
-               reinstall_skip_if_in_a_list 'Skipped because the reinstallation has been already completed' \
-                       "success.${REINSTALL_DBSUFFIX}.list" restore && return
-               if [ $opt_skip_unchanged = yes ]
+               message_echo "WARNING: Multiple packages are registered for this port. Reinstallation is needed to fix it." >&2
+       else
+               if [ -e "${DBDIR}/target_all" ]
                then
-                       if [ ! -e "$REINSTALL_DBNODE_DIR/necessary_upgrade.${REINSTALL_DBSUFFIX}" ]
+                       if [ $REINSTALL_IS_CURRENTPKG_LATEST = yes ]
                        then
                                reinstall_restore_if_temporarily_deinstalled
-                               if [ -e "$REINSTALL_DBNODE_DIR/installed_version" ]
-                               then
-                                       reinstall_skip 'Skipped because being already latest as well as the all requirements'
-                               else
-                                       reinstall_skip 'Skipped because being an only-build-time dependency of already latest packages'
-                               fi
+                               reinstall_skip 'Skipped because being already latest' "$REINSTALL_ORIGIN"
                                return
                        fi
-               fi
-               if [ \( $opt_skip_unchanged = no -a -e "$REINSTALL_DBNODE_DIR/succeeded_once" \) \
-                       -o \( $opt_skip_unchanged = yes -a $REINSTALL_IS_CURRENTPKG_LATEST = yes \) ]
+               elif [ ! -e "$REINSTALL_DBNODE_DIR/conf_updated" ]
                then
-                       if [ ! -e "$REINSTALL_DBNODE_DIR/need_reinstall_due_to_upgraded_requirements.${REINSTALL_DBSUFFIX}" ]
+                       if [ -e "$nodedir/installed_by_pkg" ] && database_query_is_default_conf "$REINSTALL_ORIGIN" quiet
+                       then
+                               reinstall_restore_if_temporarily_deinstalled
+                               reinstall_skip 'Skipped because already upgraded with a prebuilt package'
+                               return
+                       fi
+                       reinstall_skip_if_in_a_list 'Skipped because the reinstallation has been already completed' \
+                               "success.${REINSTALL_DBSUFFIX}.list" restore && return
+                       if [ $opt_skip_unchanged = yes ]
                        then
-                               if ! database_query_is_necessary_upgrade "$REINSTALL_ORIGIN"
+                               if [ ! -e "$REINSTALL_DBNODE_DIR/necessary_upgrade.${REINSTALL_DBSUFFIX}" ]
                                then
                                        reinstall_restore_if_temporarily_deinstalled
-                                       fileedit_add_a_line_if_new "$REINSTALL_ORIGIN" \
-                                               "${DBDIR}/todo_after_requirements_succeed.${REINSTALL_DBSUFFIX}.list"
-                                       reinstall_skip 'Skipped because being already latest or failed as well as the all requirements'
+                                       if [ -e "$REINSTALL_DBNODE_DIR/installed_version" ]
+                                       then
+                                               reinstall_skip 'Skipped because being already latest as well as the all requirements'
+                                       else
+                                               reinstall_skip 'Skipped because being an only-build-time dependency of already latest packages'
+                                       fi
                                        return
                                fi
                        fi
+                       if [ \( $opt_skip_unchanged = no -a -e "$REINSTALL_DBNODE_DIR/succeeded_once" \) \
+                               -o \( $opt_skip_unchanged = yes -a $REINSTALL_IS_CURRENTPKG_LATEST = yes \) ]
+                       then
+                               if [ ! -e "$REINSTALL_DBNODE_DIR/need_reinstall_due_to_upgraded_requirements.${REINSTALL_DBSUFFIX}" ]
+                               then
+                                       if ! database_query_is_necessary_upgrade "$REINSTALL_ORIGIN"
+                                       then
+                                               reinstall_restore_if_temporarily_deinstalled
+                                               fileedit_add_a_line_if_new "$REINSTALL_ORIGIN" \
+                                                       "${DBDIR}/todo_after_requirements_succeed.${REINSTALL_DBSUFFIX}.list"
+                                               reinstall_skip 'Skipped because being already latest or failed as well as the all requirements'
+                                               return
+                                       fi
+                               fi
+                       fi
                fi
+               reinstall_skip_if_in_a_list 'Marked to be manually-done' manually_done.list restore && return
        fi
        reinstall_skip_if_in_a_list 'Skipped because being a hold package' conf/HOLD:PORTS.parsed restore && return
-       reinstall_skip_if_in_a_list 'Marked to be manually-done' manually_done.list restore && return
        if database_query_is_a_port_suppressed "$REINSTALL_ORIGIN"
        then
                reinstall_restore_if_temporarily_deinstalled
index d34e375..df0b3f4 100644 (file)
@@ -897,6 +897,8 @@ Configuration file of \fBportupgrade\fR(1).
 
 [IMPROVED] Changes are made so that uninspected ports are skipped in \fBreconf\fR command.
 
+[IMPROVED] Correspondence to cases of duplicated packages for the same port is implemented.
+
 [BUG FIX] Commands permitted for unprivileged users did not work for the users.
 
 [BUG FIX] This manual page, comments and messages contained some wrong English words and incorrect descriptions.