[cygport RFC PATCH 1/1] Run install functions separately

Adam Dinwoodie adam@dinwoodie.org
Mon Oct 30 21:35:27 GMT 2023


When running as part of a `&&` chain, Bash's `set -e` behaviour is
suppressed entirely, which means calls that produce non-zero error codes
will be ignored if they're called inside functions that are part of such
a chain.

To avoid silent failures from commands in a src_install function being
ignored, don't chain the function calls with &&, and instead just let
Bash's `set -e` behaviour handle failures.
---
 bin/cygport.in | 26 +++++++++++++++++++-------
 1 file changed, 19 insertions(+), 7 deletions(-)

diff --git a/bin/cygport.in b/bin/cygport.in
index 3f89ac67..3bf4a4fa 100755
--- a/bin/cygport.in
+++ b/bin/cygport.in
@@ -679,7 +679,11 @@ do
 		inst*)
 			__stage Installing;
 			__log_init ${installlog};
-			(__prepinstalldirs && src_install && __src_postinst) 2>&1 | tee -a ${installlog};
+			{
+				__prepinstalldirs
+				src_install
+				__src_postinst
+			} 2>&1 | tee -a ${installog};
 			_status=${PIPESTATUS[0]};
 			;;
 		postinst*)
@@ -764,12 +768,20 @@ do
 			__stage Compiling && src_compile 2>&1 | tee -a ${compilelog} && \
 			test ${PIPESTATUS[0]} -eq 0 && \
 			__log_init ${installlog} && \
-			__stage Installing && (__prepinstalldirs && src_install && __src_postinst) 2>&1 | tee -a ${installlog} && \
-			test ${PIPESTATUS[0]} -eq 0 && \
-			__log_init ${pkglog} && \
-			__stage Packaging && (__pkg_binpkg && __pkg_pkgcheck && __pkg_srcpkg ${_pkg_tag} && __pkg_dist ${_pkg_tag}) 2>&1 | tee -a ${pkglog} && \
-			test ${PIPESTATUS[0]} -eq 0
-			_status=$?;
+			__stage Installing
+			{
+				__prepinstalldirs
+				src_install
+				__src_postinst
+			} 2>&1 | tee -a ${installlog};
+			if test ${PIPESTATUS[0]} -eq 0; then
+				__log_init ${pkglog} && \
+				__stage Packaging && (__pkg_binpkg && __pkg_pkgcheck && __pkg_srcpkg ${_pkg_tag} && __pkg_dist ${_pkg_tag}) 2>&1 | tee -a ${pkglog} && \
+				test ${PIPESTATUS[0]} -eq 0
+				_status=$?;
+			else
+				_status=1;
+			fi
 			;;
 		help)
 			__show_help;
-- 
2.40.1



More information about the Cygwin-apps mailing list