From owner-svn-src-user@FreeBSD.ORG Mon Oct 31 08:23:22 2011 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A500F106566C; Mon, 31 Oct 2011 08:23:22 +0000 (UTC) (envelope-from dougb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9564C8FC1C; Mon, 31 Oct 2011 08:23:22 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p9V8NMZ3006114; Mon, 31 Oct 2011 08:23:22 GMT (envelope-from dougb@svn.freebsd.org) Received: (from dougb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p9V8NMvW006112; Mon, 31 Oct 2011 08:23:22 GMT (envelope-from dougb@svn.freebsd.org) Message-Id: <201110310823.p9V8NMvW006112@svn.freebsd.org> From: Doug Barton Date: Mon, 31 Oct 2011 08:23:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r226957 - user/dougb/portmaster X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 31 Oct 2011 08:23:22 -0000 Author: dougb Date: Mon Oct 31 08:23:22 2011 New Revision: 226957 URL: http://svn.freebsd.org/changeset/base/226957 Log: Add a feature to allow users to list files that should be preserved across upgrades. Modified: user/dougb/portmaster/portmaster Modified: user/dougb/portmaster/portmaster ============================================================================== --- user/dougb/portmaster/portmaster Mon Oct 31 03:47:23 2011 (r226956) +++ user/dougb/portmaster/portmaster Mon Oct 31 08:23:22 2011 (r226957) @@ -3672,6 +3672,18 @@ if [ -n "$upg_port" -o -n "$ro_upg_port" # Could be empty if -o if [ -n "$upg_port" ]; then + case " $PM_PRESERVE_PORTS " in + *" $portdir "*) + preserve_port=`echo $portdir | sed 's#[-+/\.]#_#g'` + eval preserve_port_files="\$${preserve_port}_files" + preserve_dir=`mktemp -d ${TMPDIR}/d-${PM_PARENT_PID}-${preserve_port}` + for file in $preserve_port_files; do + cp -p $file ${preserve_dir}/ || + fail "Cannot copy $file, which is in \$${preserve_port}_files" + done + unset preserve_port files + esac + pm_sv "Running pkg_delete for $upg_port" pm_pkg_delete_s -f $upg_port fi @@ -3733,6 +3745,34 @@ else install_failed ${latest_pv}.tbz fi fi + +for file in $preserve_port_files; do + mv $file ${file}-new + mv ${preserve_dir}/${file##*/} $file + oldmd5="MD5:`md5 -q $file`" + + newcon=`pm_mktemp contents` + while read left right; do + case "$left" in + @cwd) short_file="${file#${right}/}" ;; + $short_file) found_it=found_it ; continue;; + @comment) if [ -n "$found_it" ]; then + echo -e "${short_file}-new\n$left $right" + echo -e "$short_file\n@comment $oldmd5" + unset found_it + continue + fi ;; + esac + echo "$left $right" + done < $pdb/$new_port/+CONTENTS > $newcon + mv $newcon $pdb/$new_port/+CONTENTS + unset file oldmd5 newcon left right short_file +done +if [ -n "$preserve_dir" ]; then + rmdir $preserve_dir 2>/dev/null + unset preserve_dir +fi + echo '' [ "$PM_DEL_BUILD_ONLY" = doing_build_only_dep ] &&