From owner-svn-ports-all@freebsd.org Thu Apr 30 14:48:23 2020 Return-Path: Delivered-To: svn-ports-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 0A6AD2BF7E4; Thu, 30 Apr 2020 14:48:23 +0000 (UTC) (envelope-from mat@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 49CdY26YfKz4t6p; Thu, 30 Apr 2020 14:48:22 +0000 (UTC) (envelope-from mat@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id DC59C20826; Thu, 30 Apr 2020 14:48:22 +0000 (UTC) (envelope-from mat@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 03UEmMJe053197; Thu, 30 Apr 2020 14:48:22 GMT (envelope-from mat@FreeBSD.org) Received: (from mat@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 03UEmMwc053196; Thu, 30 Apr 2020 14:48:22 GMT (envelope-from mat@FreeBSD.org) Message-Id: <202004301448.03UEmMwc053196@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mat set sender to mat@FreeBSD.org using -f From: Mathieu Arnold Date: Thu, 30 Apr 2020 14:48:22 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r533459 - head/Mk/Scripts X-SVN-Group: ports-head X-SVN-Commit-Author: mat X-SVN-Commit-Paths: head/Mk/Scripts X-SVN-Commit-Revision: 533459 X-SVN-Commit-Repository: ports 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.29 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: Thu, 30 Apr 2020 14:48:23 -0000 Author: mat Date: Thu Apr 30 14:48:22 2020 New Revision: 533459 URL: https://svnweb.freebsd.org/changeset/ports/533459 Log: When one patch fails, continue with appling patches. This makes the process of make patch, fix fallout, make makepatch much easier as only one iteration is required. While there, refactor things around, and streamline messages passed between functions. PR: 244626 Reported by: cem Modified: head/Mk/Scripts/do-patch.sh (contents, props changed) Modified: head/Mk/Scripts/do-patch.sh ============================================================================== --- head/Mk/Scripts/do-patch.sh Thu Apr 30 14:47:59 2020 (r533458) +++ head/Mk/Scripts/do-patch.sh Thu Apr 30 14:48:22 2020 (r533459) @@ -17,6 +17,28 @@ validate_env dp_BZCAT dp_CAT dp_DISTDIR dp_ECHO_MSG dp set -u +has_failed="" + +cat_file() { + case "$1" in + *.Z|*.gz) + ${dp_GZCAT} "$1" + ;; + *.bz2) + ${dp_BZCAT} "$1" + ;; + *.xz) + ${dp_XZCAT} "$1" + ;; + *.zip) + ${dp_UNZIP_NATIVE_CMD} -p "$1" + ;; + *) + ${dp_CAT} "$1" + ;; + esac +} + apply_one_patch() { local file="$1" local msg="$2" @@ -31,26 +53,13 @@ apply_one_patch() { esac if [ -n "${msg}" ]; then - ${dp_ECHO_MSG} "===> ${msg} ${file}${patch_strip:+ with ${patch_strip}}" + ${dp_ECHO_MSG} "===> Applying ${msg} ${file}${patch_strip:+ with ${patch_strip}}" fi - case "${file}" in - *.Z|*.gz) - ${dp_GZCAT} "${file}" - ;; - *.bz2) - ${dp_BZCAT} "${file}" - ;; - *.xz) - ${dp_XZCAT} "${file}" - ;; - *.zip) - ${dp_UNZIP_NATIVE_CMD} -p "${file}" - ;; - *) - ${dp_CAT} "${file}" - ;; - esac | do_patch "$@" ${patch_strip} + if ! cat_file "$file" | do_patch "$@" ${patch_strip}; then + ${dp_ECHO_MSG} "===> FAILED Applying ${msg} ${file}${patch_strip:+ with ${patch_strip}}" + has_failed=1 + fi } do_patch() { @@ -61,6 +70,7 @@ patch_from_directory() { local dir="$1" local msg="$2" local patches_applied="" + local patches_failed="" if [ -d "${dir}" ]; then cd "${dir}" @@ -73,24 +83,29 @@ patch_from_directory() { for i in patch-*; do case ${i} in *.orig|*.rej|*~|*,v) - ${dp_ECHO_MSG} "===> Ignoring patchfile ${i}" + ${dp_ECHO_MSG} "====> IGNORING patchfile ${i}" ;; *) if [ -n "${dp_PATCH_DEBUG_TMP}" ]; then - ${dp_ECHO_MSG} "===> Applying ${msg} patch ${i}" + ${dp_ECHO_MSG} "====> Applying ${msg} patch ${i}" fi - if do_patch ${dp_PATCH_ARGS} < ${i}; then + if cat_file "$i" | do_patch ${dp_PATCH_ARGS}; then patches_applied="${patches_applied} ${i}" else - ${dp_ECHO_MSG} "=> ${msg} patch ${i} failed to apply cleanly." - if [ -n "${patches_applied}" -a "${dp_PATCH_SILENT}" != "yes" ]; then - ${dp_ECHO_MSG} "=> Patch(es) ${patches_applied} applied cleanly." - fi - false + ${dp_ECHO_MSG} "====> FAILED Applying ${msg} patch ${i}" + patches_failed="${patches_failed} ${i}" fi ;; esac done + + if [ -n "${patches_applied}" -a "${dp_PATCH_SILENT}" != "yes" ]; then + ${dp_ECHO_MSG} "===> Cleanly applied ${msg} patch(es) ${patches_applied}" + fi + if [ -n "${patches_failed}" -a "${dp_PATCH_SILENT}" != "yes" ]; then + ${dp_ECHO_MSG} "===> FAILED to apply cleanly ${msg} patch(es) ${patches_failed}" + has_failed=1 + fi fi fi } @@ -100,7 +115,7 @@ if [ -n "${dp_PATCHFILES}" ]; then cd "${dp_DISTDIR}" for i in ${dp_PATCHFILES}; do apply_one_patch "${i}" \ - "${dp_PATCH_DEBUG_TMP:+ Applying distribution patch}" \ + "${dp_PATCH_DEBUG_TMP:+ distribution patch}" \ ${dp_PATCH_DIST_ARGS} done fi @@ -112,7 +127,7 @@ if [ -n "${dp_EXTRA_PATCHES}" ]; then "extra patch" else apply_one_patch "${i}" \ - "Applying extra patch" \ + "extra patch" \ ${dp_PATCH_ARGS} fi done @@ -122,5 +137,11 @@ patch_from_directory "${dp_PATCHDIR}" "${dp_OPSYS}" if [ -n "${dp_EXTRA_PATCH_TREE}" ]; then patch_from_directory "${dp_EXTRA_PATCH_TREE}/${dp_PKGORIGIN}" "local" +fi + +if [ -n "$has_failed" ]; then + ${dp_ECHO_MSG} "==> SOME PATCHES FAILED TO APPLY CLEANLY." + ${dp_ECHO_MSG} "==> Look for FAILED messages above." + false fi