}
pkg_info_gen_pkg_origin_table ()
{
+ local pkgname origin
# pkg query -g '%n-%v\t%o' \* 2> /dev/null > ${DBDIR}/installed_ports:pkg_vs_origin.tbl
- pkg info -qa 2> /dev/null | while read pkgname
+ for pkgname in `pkg info -qa 2> /dev/null`
do
- origin=`pkg_info_flavored_origin "$pkgname"`
- printf '%s\t%s\n' "$pkgname" "$origin"
+ for origin in `pkg_info_flavored_origins "$pkgname"`
+ do
+ printf '%s\t%s\n' "$pkgname" "$origin"
+ done
done
}
pkg_create_b ()
pkg_info -qe "$@" 2> /dev/null && echo
:
}
- pkg_info_flavored_origin ()
+ pkg_info_flavored_origins ()
{
local glob_unflavored tmp_stdout
glob_unflavored=$1
# ============= Get the flavored origin of this utility =============
pkgsys_get_my_origin ()
{
- pkgsys_get_my_current_pkg | while read pkgname
+ local pkgname
+ for pkgname in `pkgsys_get_my_current_pkg`
do
- pkg_info_flavored_origin "$pkgname"
+ pkg_info_flavored_origins "$pkgname"
done
}
{
local pkg origin tmporigin ambsuffix len_pkg pkg_regexp norigins
pkg=$1
- origin=`pkg_info_flavored_origin "$pkg"`
- [ -n "$origin" ] && { echo "$origin"; return; }
tmporigin=${TMPDIR}/pkgsys_init_pkg_orig_by_ambiguous_matching::origin
+ pkg_info_flavored_origins "$pkg" > $tmporigin
+ [ `wc -l < $tmporigin` -gt 0 ] && { cat "$tmporigin"; return; }
ambsuffix=
norigins=0
len_pkg=`echo -n "$pkg" | wc -c`
glob_regexp2=`echo "$glob_regexp" | sed -E 's/\$*$//' 2>&1 || :`'[[:space:]]'
env LANG=C grep -E "$glob_regexp2" "${DBDIR}/installed_ports:pkg_vs_origin.tbl" 2> /dev/null \
| cut -f 2 || :
- pkg_info_Ex "$glob_regexp" | while read pkgname
+ for pkgname in `pkg_info_Ex "$glob_regexp"`
do
- pkg_info_flavored_origin "$pkgname"
+ pkg_info_flavored_origins "$pkgname"
done
fi
done | sort -u
dstdir=$2
rm -rf "${TMPDIR}"/package.tmp
mkdir "${TMPDIR}"/package.tmp
- origin=`pkg_info_flavored_origin "$pkgname"`
- if backup_pkg_old=`pkgsys_get_backup_pkg "$origin"` && \
- [ ! -e "${DBDIR}/requires/$origin/installed_timestamp" -o \
- "$backup_pkg_old" -nt "${DBDIR}/requires/$origin/installed_timestamp" ]
- then
- echo "$backup_pkg_old"
- return
- fi
- if ( cd "${TMPDIR}"/package.tmp && pkg_create_b "$pkgname" > /dev/null )
- then
- pkgname_ptn=`str_escape_regexp "$pkgname"`
- backup_pkg=`ls "${TMPDIR}"/package.tmp | \
- env LANG=C grep -m 1 -E "^${pkgname_ptn}\.(txz|tbz|tgz|tar|pkg)$"` || :
- fi
- if [ -z "$backup_pkg" ]
- then
- message_echo "WARNING: Failed to create backup package for $pkgname." >&2
- return 1
- fi
- dbpath=${DBDIR}/backup/$origin
- mkdir -p "$dbpath"
- pkg_info_qL "$pkgname" > $dbpath/previously_installed_files
- mkdir -p "$dstdir"
- mv "${TMPDIR}/package.tmp/$backup_pkg" "$dstdir"
- pkgpath=$dstdir/$backup_pkg
- cat "${DBDIR}/backup_pkgarcs.lst" 2> /dev/null | \
- while read origin_cur pkgpath_cur
- do
- [ "$pkgpath_cur" = "$pkgpath" ] && continue
- if [ "$origin_cur" = "$origin" ]
- then
- rm -f "$pkgpath_cur"
- else
- printf '%s\t%s\n' "$origin_cur" "$pkgpath_cur"
- fi
- done > ${DBDIR}/backup_pkgarcs.lst.tmp
- printf '%s\t%s\n' "$origin" "$pkgpath" >> ${DBDIR}/backup_pkgarcs.lst.tmp
- mv "${DBDIR}/backup_pkgarcs.lst.tmp" "${DBDIR}/backup_pkgarcs.lst"
- echo "$pkgpath"
+ for origin in `pkg_info_flavored_origins "$pkgname"`
+ do
+ if backup_pkg_old=`pkgsys_get_backup_pkg "$origin"` && \
+ [ ! -e "${DBDIR}/requires/$origin/installed_timestamp" -o \
+ "$backup_pkg_old" -nt "${DBDIR}/requires/$origin/installed_timestamp" ]
+ then
+ echo "$backup_pkg_old"
+ return
+ fi
+ if ( cd "${TMPDIR}"/package.tmp && pkg_create_b "$pkgname" > /dev/null )
+ then
+ pkgname_ptn=`str_escape_regexp "$pkgname"`
+ backup_pkg=`ls "${TMPDIR}"/package.tmp | \
+ env LANG=C grep -m 1 -E "^${pkgname_ptn}\.(txz|tbz|tgz|tar|pkg)$"` || :
+ fi
+ if [ -z "$backup_pkg" ]
+ then
+ message_echo "WARNING: Failed to create backup package for $pkgname." >&2
+ return 1
+ fi
+ dbpath=${DBDIR}/backup/$origin
+ mkdir -p "$dbpath"
+ pkg_info_qL "$pkgname" > $dbpath/previously_installed_files
+ mkdir -p "$dstdir"
+ mv "${TMPDIR}/package.tmp/$backup_pkg" "$dstdir"
+ pkgpath=$dstdir/$backup_pkg
+ cat "${DBDIR}/backup_pkgarcs.lst" 2> /dev/null | \
+ while read origin_cur pkgpath_cur
+ do
+ [ "$pkgpath_cur" = "$pkgpath" ] && continue
+ if [ "$origin_cur" = "$origin" ]
+ then
+ rm -f "$pkgpath_cur"
+ else
+ printf '%s\t%s\n' "$origin_cur" "$pkgpath_cur"
+ fi
+ done > ${DBDIR}/backup_pkgarcs.lst.tmp
+ printf '%s\t%s\n' "$origin" "$pkgpath" >> ${DBDIR}/backup_pkgarcs.lst.tmp
+ mv "${DBDIR}/backup_pkgarcs.lst.tmp" "${DBDIR}/backup_pkgarcs.lst"
+ echo "$pkgpath"
+ done
}
# ============= Delete a back-up package archive for a flavored port origin =============
fi
done
eval "$var_is_reinstall_encouraged=\$_is_reinstall_encouraged"
- origin=`pkg_info_flavored_origin "$pkg"`
- if [ $opt_batch_mode = no ]
- then
- message_echo "[$pkg ($origin)]"
- sed 's/^/ /' "$tmp_sanity"
- message_echo
- else
- pkg_replace=`str_escape_replaceval "$pkg"`
- origin_replace=`str_escape_replaceval "$origin"`
- sed "s/^/$pkg_replace\\\\$origin_replace\\\\$_is_reinstall_encouraged\\\\/" "$tmp_sanity" | tr '\\' '\t'
- fi
+ for origin in `pkg_info_flavored_origins "$pkg"`
+ do
+ if [ $opt_batch_mode = no ]
+ then
+ message_echo "[$pkg ($origin)]"
+ sed 's/^/ /' "$tmp_sanity"
+ message_echo
+ else
+ pkg_replace=`str_escape_replaceval "$pkg"`
+ origin_replace=`str_escape_replaceval "$origin"`
+ sed "s/^/$pkg_replace\\\\$origin_replace\\\\$_is_reinstall_encouraged\\\\/" "$tmp_sanity" | tr '\\' '\t'
+ fi
+ done
return 1
}