svn commit: r225465 - user/dougb/portmaster
Doug Barton
dougb at FreeBSD.org
Sat Sep 10 07:16:53 UTC 2011
Author: dougb
Date: Sat Sep 10 07:16:53 2011
New Revision: 225465
URL: http://svn.freebsd.org/changeset/base/225465
Log:
In find_and_delete_distfiles() (run after a successful install) change
the default pattern to be foo-[0-9]* instead of foo* [1]
This matches 19,305 out of 25,106 unique distfiles, and dramatically
reduces false positives for files like foo-1.23 vs. foo-bar-2.34. Of the
ones that this pattern misses, 4,713 don't match the traditional distfile
format anyway, so it's a huge net win; and should make running without -D
much less annoying.
When the new pattern doesn't match any existing distfiles, fall back to
the old one. Do this by calling with the pattern, not the file name. This
simplifies processing in the function a bit.
Also in find_and_delete_distfiles(), cache matches to $DI_FILES so that
we don't have to re-test that same file again.
Change the method used to print the prompt in get_answer_g() to echo -e
so that I can be more flexible in formatting prompt messages.
Suggested by: Lapo Luchini <lapo at lapo.it> [1]
Modified:
user/dougb/portmaster/portmaster
Modified: user/dougb/portmaster/portmaster
==============================================================================
--- user/dougb/portmaster/portmaster Fri Sep 9 19:39:54 2011 (r225464)
+++ user/dougb/portmaster/portmaster Sat Sep 10 07:16:53 2011 (r225465)
@@ -937,7 +937,7 @@ get_answer_g () {
default=$1 ; option=$2 ; shift 2
while : ; do
- echo -n "${*} [${default}] "
+ echo -e "${*} [${default}] \c"
read answer
echo ''
@@ -1015,7 +1015,7 @@ IFS='
echo " ===>>> but there is no installed version"
echo ''
if [ -n "$CHECK_DEPENDS" ]; then
- get_answer_yn n " ===>>> Delete this dependency data"
+ get_answer_yn n "\t===>>> Delete this dependency data"
case "$?" in 0) unset prev_line line ; continue ;; esac
else
echo " ===>>> Try ${0##*/} --check-depends"
@@ -1298,7 +1298,7 @@ if [ -n "$CLEAN_DISTFILES" ]; then
for df in `find $DISTDIR -type f | sort`; do
f=${df#$DISTDIR}
if ! grep -ql $f $DI_FILES; then
- get_answer_yn n " ===>>> Delete stale file: ${f}"
+ get_answer_yn n "\t===>>> Delete stale file: ${f}"
case "$?" in
0) echo " Deleting $f" ; echo ''
/bin/unlink $df ;;
@@ -1341,7 +1341,7 @@ if [ -n "$CLEAN_PACKAGES" ]; then
if [ ! -d "${pdb}/${pkg_dir}" ]; then
echo " ===>>> $pkg_dir is not installed"
echo " ===>>> Path: ${package}"
- get_answer_yn y " ===>>> Delete stale package: ${package##*/}"
+ get_answer_yn y "\n\t===>>> Delete stale package: ${package##*/}"
case "$?" in
0) echo " ===>>> Deleting $package"
pm_unlink_s $package ;;
@@ -1365,7 +1365,7 @@ if [ -n "$CLEAN_PACKAGES" ]; then
echo " ===>>> Path: ${package}"
- get_answer_yn n " ===>>> Delete stale package: ${package##*/}"
+ get_answer_yn n "\n\t===>>> Delete stale package: ${package##*/}"
case "$?" in
0) echo " ===>>> Deleting $package"
pm_unlink_s $package ;;
@@ -1478,7 +1478,7 @@ if [ -n "$CHECK_PORT_DBDIR" ]; then
*:${dbdir}:*) pm_v "Ok" ;;
*) pm_v
echo " ===>>> $dbdir does not seem to be installed"
- get_answer_yn n " ===>>> Delete ${dir}"
+ get_answer_yn n "\n\t===>>> Delete ${dir}"
case "$?" in 0) pm_rm_s -rf $dir ;; esac
echo '' ;;
esac
@@ -1715,8 +1715,7 @@ pm_pkg_create () {
echo "===>>> Ignore this error [i]"
echo "===>>> Abort [a]"
- echo ''
- get_answer_g i a "===>>> How would you like to proceed?"
+ get_answer_g i a "\n===>>> How would you like to proceed?"
case "$?" in 1) fail "Package creation failed for $2" ;; esac
fi
}
@@ -1771,17 +1770,16 @@ delete_dist_list () {
find_and_delete_distfiles () {
# Global: port_subdir DISTDIR distfiles distfiles_checked delete_all
- local ps pattern file answer
+ local ps file answer
ps=${port_subdir#$DISTDIR}
- pattern=${1%[_-]*}
- for file in ${pattern}*; do
+ for file in ${1}*; do
# This generally means the pattern did not match
case "$file" in
- *\*) [ "$pattern" = "${pattern%[_-]*}" ] && return 0
+ *\*) [ "$1" = "${1%[_-]*}" ] && return 0
# This will happen for files like foo-bar_baz-1.23
- find_and_delete_distfiles $pattern ;;
+ find_and_delete_distfiles ${1%[_-]*} ;;
esac
case "$distfiles_checked" in *:${file}:*) continue ;; esac
@@ -1793,7 +1791,11 @@ find_and_delete_distfiles () {
pm_v "===>>> Keeping current distfile: $file"
continue ;; # Do not delete current version
*) if [ -s "$DI_FILES" ]; then
- grep -ql ${ps}$file $DI_FILES && continue
+ if grep -ql ${ps}$file $DI_FILES; then
+ distfiles_checked="${distfiles_checked}${file}:"
+ pm_v "===>>> Keeping current distfile: $file"
+ continue # Do not delete current version
+ fi
fi
if [ -n "$ALWAYS_SCRUB_DISTFILES" -o -n "$delete_all" ]; then
@@ -1802,7 +1804,7 @@ find_and_delete_distfiles () {
continue
fi
- get_answer_g n y "===>>> Delete $file? y/n"
+ get_answer_g n y "\n===>>> Delete $file? y/n"
case "$?" in
1) pm_unlink $file ;;
0) distfiles_checked="${distfiles_checked}${file}:" ;;
@@ -1877,7 +1879,7 @@ delete_stale_distfiles () {
continue
fi
- get_answer_g n y "===>>> Delete $file? y/n"
+ get_answer_g n y "\n===>>> Delete $file? y/n"
case "$?" in
1) pm_unlink $file ;;
0) distfiles_checked="${distfiles_checked}${file}:" ;;
@@ -1889,7 +1891,7 @@ delete_stale_distfiles () {
# flag, but until the DISTFILE stuff is well populated in PORT_DBDIR,
# keep doing it both ways.
for file in $distfiles $dist_list_files; do
- find_and_delete_distfiles $file
+ find_and_delete_distfiles ${file%[-]*}-[0-9]
done
pm_v "===>>> Distfile cleaning complete" ; pm_v
@@ -2026,8 +2028,7 @@ if [ -n "$EXPUNGE" ]; then
for dep in $deplist; do
dep=${dep%/+CON*} ; echo " ${dep##*/}"
done
- echo ''
- get_answer_yn n " ===>>> Delete this dependency data"
+ get_answer_yn n "\n\t===>>> Delete this dependency data"
case "$?" in
0) for f in $deplist; do
update_contents delete $f $origin
@@ -2071,7 +2072,7 @@ if [ -n "$CLEAN_STALE" ]; then
pkg_info $iport
- get_answer_yn n " ===>>> ${iport} is no longer depended on, delete"
+ get_answer_yn n "\t===>>> ${iport} is no longer depended on, delete"
case "$?" in
0) [ -n "$BACKUP" ] && { init_packages ; pm_pkg_create $pbu $iport; }
[ -z "$DONT_SCRUB_DISTFILES" ] && { delete_all_distfiles $origin; delete_dist_list; }
@@ -2080,7 +2081,7 @@ if [ -n "$CLEAN_STALE" ]; then
pm_pkg_delete_s -f $iport || fail 'pkg_delete failed'
exec $0 -s $ARGS ;;
- *) get_answer_yn n " ===>>> Delete this dependency data"
+ *) get_answer_yn n "\t===>>> Delete this dependency data"
case "$?" in
0) pm_unlink_s $file ;;
*) no_del_list="${no_del_list}${iport}:" ;;
@@ -2127,8 +2128,8 @@ check_interactive () {
if [ -e "$pdb/$1/+IGNOREME" ]; then
echo ''
echo "===>>> +IGNOREME file is present for $1"
+ echo ''
fi
- echo ''
get_answer_g y n "===>>> Update ${1}${update_to}? y/n"
case "$?" in
0) INTERACTIVE_YES="${INTERACTIVE_YES}${1}:" ;;
@@ -3086,8 +3087,7 @@ if [ -e "$pdb/$upg_port/+IGNOREME" ]; th
*) if [ -z "$FETCH_ONLY" ]; then
echo ''
echo "===>>> $upg_port has an +IGNOREME file"
- echo ''
- get_answer_g n y "===>>> Update anyway? y/n"
+ get_answer_g n y "\t===>>> Update anyway? y/n"
case "$?" in
1) ;; # Let it build
0) CUR_DEPS="${CUR_DEPS}${upg_port}:${portdir}:"
More information about the svn-src-user
mailing list