On Tue, Jun 16, 2020 at 03:05:14PM +0200, Marc Espie wrote:
> I was under the impression that you need if test  under set -e.
Ah, you don't.

> Please do 
> 
> if ... fi   anyway
> 
> I definitely prefer doing it that way.
Sure.

> > > I would just display failed patches if $$error, the "can't find patch 
> > > matching $$i" happens so seldom that it won't be confusing.
> > Why have inconsistent output in those seldom cases if we can do it
> > properly for relevant cases only?
> 
> Because it makes for simpler logic.   If you want to keep the test,
> it should definitely be under if $$error and not outside of it.
Makes sense, I'll do that.

> -u is not an option... we have a few things that are intentionally not
> in the environment, like _DEPENDS_CACHE, that break -u entirely.
I don't want to add -u, my point simply is setting the variable up front
never hurts.

Is this OK with you?



Index: infrastructure/mk/bsd.port.mk
===================================================================
RCS file: /cvs/ports/infrastructure/mk/bsd.port.mk,v
retrieving revision 1.1540
diff -u -p -r1.1540 bsd.port.mk
--- infrastructure/mk/bsd.port.mk       9 Jun 2020 11:01:08 -0000       1.1540
+++ infrastructure/mk/bsd.port.mk       16 Jun 2020 13:23:00 -0000
@@ -2758,6 +2758,7 @@ ${_PATCH_COOKIE}: ${_EXTRACT_COOKIE}
        @${_MAKE} _internal-distpatch
 .  endif
        @if cd ${PATCHDIR} 2>/dev/null || [ x"${PATCH_LIST:M/*}" != x"" ]; then 
\
+               failed_patches=''; \
                error=false; \
                for i in ${PATCH_LIST}; do \
                        case $$i in \
@@ -2773,6 +2774,7 @@ ${_PATCH_COOKIE}: ${_EXTRACT_COOKIE}
                                                if [ -s $$i ]; then \
                                                        ${_PBUILD} ${PATCH} 
${PATCH_ARGS} < $$i || \
                                                                { echo "***>   
$$i did not apply cleanly"; \
+                                                               
failed_patches="$$failed_patches\n    $$i"; \
                                                                error=true; }; \
                                                else \
                                                        ${ECHO_MSG} "===>   
Ignoring empty patchfile $$i"; \
@@ -2786,7 +2788,12 @@ ${_PATCH_COOKIE}: ${_EXTRACT_COOKIE}
                                        ;; \
                        esac; \
                done;\
-               if $$error; then exit 1; fi; \
+               if $$error; then \
+                       if [ -n "$$failed_patches" ]; then \
+                               echo "===>   Failed patches: 
$$failed_patches\n"; \
+                       fi; \
+                       exit 1; \
+               fi; \
        fi
 # End of PATCH.
 .endif

Reply via email to