From owner-svn-ports-all@FreeBSD.ORG Mon Apr 21 16:22:20 2014 Return-Path: Delivered-To: svn-ports-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D0BD02CB; Mon, 21 Apr 2014 16:22:20 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 956C618FB; Mon, 21 Apr 2014 16:22:20 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.8/8.14.8) with ESMTP id s3LGMKGh014782; Mon, 21 Apr 2014 16:22:20 GMT (envelope-from bdrewery@svn.freebsd.org) Received: (from bdrewery@localhost) by svn.freebsd.org (8.14.8/8.14.8/Submit) id s3LGMKkF014781; Mon, 21 Apr 2014 16:22:20 GMT (envelope-from bdrewery@svn.freebsd.org) Message-Id: <201404211622.s3LGMKkF014781@svn.freebsd.org> From: Bryan Drewery Date: Mon, 21 Apr 2014 16:22:20 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r351693 - head/Mk/Scripts X-SVN-Group: ports-head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: SVN commit messages for the ports tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 21 Apr 2014 16:22:21 -0000 Author: bdrewery Date: Mon Apr 21 16:22:20 2014 New Revision: 351693 URL: http://svnweb.freebsd.org/changeset/ports/351693 QAT: https://qat.redports.org/buildarchive/r351693/ Log: - Sort directories by Lexicographical Depth-First order (find -ds) With hat: portmgr Modified: head/Mk/Scripts/check-stagedir.sh Modified: head/Mk/Scripts/check-stagedir.sh ============================================================================== --- head/Mk/Scripts/check-stagedir.sh Mon Apr 21 16:11:18 2014 (r351692) +++ head/Mk/Scripts/check-stagedir.sh Mon Apr 21 16:22:20 2014 (r351693) @@ -23,6 +23,12 @@ listmtree() { # mtreefile prefix } | tar -tf- | sed "s,^,$2/,;s,^$2/\.$,$2,;s,^$,/," } +sort_dfs() { + while read dir; do + grep "^[0-9]* ${dir}$" ${WRKDIR}/.staged-dirs-dfs-sorted + done | sort -n | cut -d ' ' -f2- +} + # obtain operating mode from command line makeplist=0 case "$1" in @@ -234,10 +240,14 @@ comm -13 ${WRKDIR}/.plist-files ${WRKDIR ### HANDLE DIRS cat ${WRKDIR}/.plist-dirs-unsorted ${WRKDIR}/.mtree \ ${WRKDIR}/.run-depends-dirs | sort -u >${WRKDIR}/.traced-dirs -find ${STAGEDIR} -type d | sed -e "s,^${STAGEDIR},,;/^$/d" | \ - sort >${WRKDIR}/.staged-dirs -comm -13 ${WRKDIR}/.traced-dirs ${WRKDIR}/.staged-dirs \ - | sort -r | sed "${sed_dirs}" \ +find -sd ${STAGEDIR} -type d | sed -e "s,^${STAGEDIR},,;/^$/d" \ + >${WRKDIR}/.staged-dirs-dfs +sort ${WRKDIR}/.staged-dirs-dfs >${WRKDIR}/.staged-dirs-sorted +awk '{print FNR, $0}' ${WRKDIR}/.staged-dirs-dfs \ + >${WRKDIR}/.staged-dirs-dfs-sorted +# Find all staged dirs and then sort them by depth-first (find -ds) +comm -13 ${WRKDIR}/.traced-dirs ${WRKDIR}/.staged-dirs-sorted \ + | sort_dfs | sed "${sed_dirs}" \ >>${WRKDIR}/.staged-plist || : # If just making plist, show results and exit successfully. @@ -270,7 +280,7 @@ cat ${WRKDIR}/.mtree ${WRKDIR}/.run-depe >${WRKDIR}/.restricted-dirs : >${WRKDIR}/.invalid-plist-dependencies comm -12 ${WRKDIR}/.plist-dirs-sorted-no-comments ${WRKDIR}/.restricted-dirs \ - | sort -r | sed "${sed_dirs}" \ + | sort_dfs | sed "${sed_dirs}" \ >>${WRKDIR}/.invalid-plist-dependencies || : if [ -s "${WRKDIR}/.invalid-plist-dependencies" ]; then ret=1 @@ -285,9 +295,19 @@ comm -23 ${WRKDIR}/.plist-files-no-comme sed -e "${sed_files}" \ >>${WRKDIR}/.invalid-plist-missing || : -comm -23 ${WRKDIR}/.plist-dirs-sorted-no-comments ${WRKDIR}/.staged-dirs \ - | sort -r | sed "${sed_dirs}" \ +# Look for directories, then sort them by DFS. Must create the dirs +# so find -ds can be used to sort them. +rm -rf ${WRKDIR}/.missing-dirs > /dev/null 2>&1 || : +mkdir ${WRKDIR}/.missing-dirs +comm -23 ${WRKDIR}/.plist-dirs-sorted-no-comments \ + ${WRKDIR}/.staged-dirs-sorted > ${WRKDIR}/.missing-plist-dirs +sed "s,^,${WRKDIR}/.missing-dirs," ${WRKDIR}/.missing-plist-dirs | \ + xargs mkdir -p +find -ds ${WRKDIR}/.missing-dirs | sed -e "s,^${WRKDIR}/.missing-dirs,," | \ + while read dir; do grep -x "${dir}" ${WRKDIR}/.missing-plist-dirs || :; done | \ + sed "${sed_dirs}" \ >>${WRKDIR}/.invalid-plist-missing || : +rm -rf ${WRKDIR}/.missing-dirs if [ -s "${WRKDIR}/.invalid-plist-missing" ]; then ret=1 while read line; do