Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 4 May 2020 10:49:34 -0700
From:      Bryan Drewery <bdrewery@FreeBSD.org>
To:        Mathieu Arnold <mat@FreeBSD.org>, ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@FreeBSD.ORG, "Conrad E. Meyer" <cem@FreeBSD.org>
Subject:   Re: svn commit: r533459 - head/Mk/Scripts
Message-ID:  <276aef88-4619-b4b7-ee92-44999b5c787d@FreeBSD.org>
In-Reply-To: <202004301448.03UEmMwc053196@repo.freebsd.org>
References:  <202004301448.03UEmMwc053196@repo.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--csJl1E6snwJ41j7qrLNBFsOIREdBenej6
Content-Type: multipart/mixed; boundary="ALemydNKtFqEhFoG523J4pyptM04O2Wg5";
 protected-headers="v1"
From: Bryan Drewery <bdrewery@FreeBSD.org>
To: Mathieu Arnold <mat@FreeBSD.org>, ports-committers@freebsd.org,
 svn-ports-all@freebsd.org, svn-ports-head@FreeBSD.ORG,
 "Conrad E. Meyer" <cem@FreeBSD.org>
Message-ID: <276aef88-4619-b4b7-ee92-44999b5c787d@FreeBSD.org>
Subject: Re: svn commit: r533459 - head/Mk/Scripts
References: <202004301448.03UEmMwc053196@repo.freebsd.org>
In-Reply-To: <202004301448.03UEmMwc053196@repo.freebsd.org>

--ALemydNKtFqEhFoG523J4pyptM04O2Wg5
Content-Type: text/plain; charset=utf-8
Content-Language: en-US
Content-Transfer-Encoding: quoted-printable

On 4/30/2020 7:48 AM, Mathieu Arnold wrote:
> Author: mat
> Date: Thu Apr 30 14:48:22 2020
> New Revision: 533459
> URL: https://svnweb.freebsd.org/changeset/ports/533459
>=20
> Log:
>   When one patch fails, continue with appling patches.
>  =20
>   This makes the process of make patch, fix fallout, make makepatch muc=
h
>   easier as only one iteration is required.
>  =20
>   While there, refactor things around, and streamline messages passed
>   between functions.
>  =20
>   PR:		244626
>   Reported by:	cem
>=20

Will this fail between stages? If a files/patch-* patch fails it should
not move on to extra patches as then makepatch / diffing will be wrong.
Even patch-* can lead to being wrong when considering local (not in
ports tree) patches.

I don't think this is good default behavior.

> Modified:
>   head/Mk/Scripts/do-patch.sh   (contents, props changed)
>=20
> Modified: head/Mk/Scripts/do-patch.sh
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
> --- 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
> =20
>  set -u
> =20
> +has_failed=3D""
> +
> +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=3D"$1"
>  	local msg=3D"$2"
> @@ -31,26 +53,13 @@ apply_one_patch() {
>  	esac
> =20
>  	if [ -n "${msg}" ]; then
> -		${dp_ECHO_MSG} "=3D=3D=3D>  ${msg} ${file}${patch_strip:+ with ${pat=
ch_strip}}"
> +		${dp_ECHO_MSG} "=3D=3D=3D>  Applying ${msg} ${file}${patch_strip:+ w=
ith ${patch_strip}}"
>  	fi
> =20
> -	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} "=3D=3D=3D>  FAILED Applying ${msg} ${file}${patch_st=
rip:+ with ${patch_strip}}"
> +		has_failed=3D1
> +	fi
>  }
> =20
>  do_patch() {
> @@ -61,6 +70,7 @@ patch_from_directory() {
>  	local dir=3D"$1"
>  	local msg=3D"$2"
>  	local patches_applied=3D""
> +	local patches_failed=3D""
> =20
>  	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} "=3D=3D=3D>   Ignoring patchfile ${i}"
> +						${dp_ECHO_MSG} "=3D=3D=3D=3D>   IGNORING patchfile ${i}"
>  						;;
>  					*)
>  						if [ -n "${dp_PATCH_DEBUG_TMP}" ]; then
> -							${dp_ECHO_MSG} "=3D=3D=3D>  Applying ${msg} patch ${i}"
> +							${dp_ECHO_MSG} "=3D=3D=3D=3D>  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=3D"${patches_applied} ${i}"
>  						else
> -							${dp_ECHO_MSG} "=3D> ${msg} patch ${i} failed to apply cleanly.=
"
> -							if [ -n "${patches_applied}" -a "${dp_PATCH_SILENT}" !=3D "yes"=
 ]; then
> -								${dp_ECHO_MSG} "=3D> Patch(es) ${patches_applied} applied clea=
nly."
> -							fi
> -							false
> +							${dp_ECHO_MSG} "=3D=3D=3D=3D> FAILED Applying ${msg} patch ${i}=
"
> +							patches_failed=3D"${patches_failed} ${i}"
>  						fi
>  						;;
>  				esac
>  			done
> +
> +			if [ -n "${patches_applied}" -a "${dp_PATCH_SILENT}" !=3D "yes" ]; =
then
> +				${dp_ECHO_MSG} "=3D=3D=3D> Cleanly applied ${msg} patch(es) ${patc=
hes_applied}"
> +			fi
> +			if [ -n "${patches_failed}" -a "${dp_PATCH_SILENT}" !=3D "yes" ]; t=
hen
> +				${dp_ECHO_MSG} "=3D=3D=3D> FAILED to apply cleanly ${msg} patch(es=
) ${patches_failed}"
> +				has_failed=3D1
> +			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}=
"
> =20
>  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} "=3D=3D> SOME PATCHES FAILED TO APPLY CLEANLY."
> +	${dp_ECHO_MSG} "=3D=3D> Look for FAILED messages above."
> +	false
>  fi
> =20
>=20


--=20
Regards,
Bryan Drewery


--ALemydNKtFqEhFoG523J4pyptM04O2Wg5--

--csJl1E6snwJ41j7qrLNBFsOIREdBenej6
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQGTBAEBCgB9FiEE+Rc8ssOq6npcih8JNddxu25Gl88FAl6wVbRfFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEY5
MTczQ0IyQzNBQUVBN0E1QzhBMUYwOTM1RDc3MUJCNkU0Njk3Q0YACgkQNddxu25G
l897MQf9EI/SmOjLPFhBVYNOb6B41tphz2qe6ig7zF1pDASrSCxl7f7/vY3GyD59
jhSVCkfBQlTy2Pzk73gUtWTVuacNZm5FJs8wOey6gMh6rIV7v+6JNYcJzIpR/k4M
MK3k35YC4UD+0vj7+erjdJCa4xwNhy5Y8ePAN4MPv7LA2CO7AsAV5U7oWRep4Szr
HJg5ShNp1bgsOe+z4Yg7Zxa+cON4qcoiEiDfI2XHFCa10E7jODpTVpI9cHWxkaHF
bC8KKxoEFqF9D9WQj4zRGw4VQ9u8oBbxo1eqfUeb//0Z+Teu8GNEU5ot5h/ZDLhp
4+dbOBuii5K1oQw7GkomtM6s3zFJXw==
=+riL
-----END PGP SIGNATURE-----

--csJl1E6snwJ41j7qrLNBFsOIREdBenej6--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?276aef88-4619-b4b7-ee92-44999b5c787d>