On Tue, Aug 01, 2023 at 11:17:48AM +0200, Sebastien Marie wrote:
> On Mon, Jul 31, 2023 at 10:17:05PM +0000, Klemens Nanni wrote:
> > 'make patch' on a WXNEEDED=Yes port without wxallowed fails after
> > patching and before creating the patch cookie, so subsequent setting
> > of the option and rerunning the target will try to patch again.
> >
> > If the check is done right after extract, rerunning that target usually
> > has higher chances of just working.
> >
> > Is there a reason I'm not aware of that this is done after patch?
> >
> >
> > I just forgot to set wxallowed on /usr/ports/pobj when building
> > ungoogled-chromium where 'make clean && mount ... && make patch' takes
> > considerably longer than 'mount ... && make extract' to recover from
> > forgetting to set wxallowed.
>
> Personally, having it in extract step might be not convenient as extracting will
> require 'wxallowed', even if I just want to extract to look at source code.
Good point.
> Ideally, I would put such control code at start of 'configure' step.
Doesn't "gen" also run GNU auto* which potentially needs wxallowed?
That's why I have moved it there now.
Either way, making the check the first step of a target instead needs
its own target so that PORTS_PRIVSEP=Yes stays in effect.
post-* or *-finalize where the first diff put it do not need that, as
they're already run as _pbuild.
Does that still work for everyone's favourite USE_WXNEEDED=Yes workflow
without breaking other stuff, when you forget to set wxallowed?
Index: bsd.port.mk
===================================================================
RCS file: /cvs/ports/infrastructure/mk/bsd.port.mk,v
retrieving revision 1.1595
diff -u -p -r1.1595 bsd.port.mk
--- bsd.port.mk 8 Jul 2023 10:20:16 -0000 1.1595
+++ bsd.port.mk 6 Aug 2023 12:05:44 -0000
@@ -2858,14 +2858,6 @@ ${_PATCH_COOKIE}: ${_EXTRACT_COOKIE}
# Run as _pbuild
_post-patch-finalize:
-.if ${USE_WXNEEDED:L} == "yes"
- @wrktmp=`df -P ${WRKOBJDIR_${PKGPATH}} | awk 'END { print $$6 }'`; \
- if ! mount | grep -q " $${wrktmp} .*wxallowed"; then \
- echo "Fatal: ${WRKOBJDIR_${PKGPATH}} must be on a wxallowed filesystem" \
- "(in ${PKGPATH})" >&2; \
- false; \
- fi
-.endif
.if !empty(_LINKER_FLAGS) || ${_NONDEFAULT_LD:L} == "yes"
@printf '#!/bin/sh\nexec ${_LD_PROGRAM} ${_LINKER_FLAGS} "$$@"\n' >${WRKDIR}/bin/ld
@chmod 555 ${WRKDIR}/bin/ld
@@ -2905,10 +2897,23 @@ _gen-finalize:
esac; done
.endif
+.if ${USE_WXNEEDED:L} == "yes"
+_use-wxneeded:
+ @wrktmp=`df -P ${WRKOBJDIR_${PKGPATH}} | awk 'END { print $$6 }'`; \
+ if ! mount | grep -q " $${wrktmp} .*wxallowed"; then \
+ echo "Fatal: ${WRKOBJDIR_${PKGPATH}} must be on a wxallowed filesystem" \
+ "(in ${PKGPATH})" >&2; \
+ false; \
+ fi
+.endif
+
# The real gen stage
${_GEN_COOKIE}: ${_PATCH_COOKIE}
@${ECHO_MSG} "===> Generating configure for ${FULLPKGNAME}${_MASTER}"
+.if ${USE_WXNEEDED:L} == "yes"
+ @${_PMAKE} _use-wxneeded
+.endif
.if target(do-gen)
@${_PMAKE} do-gen
.endif
No comments:
Post a Comment