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