Fix file modes after extracting.

Some port's archives contains files modes that are a bit too restrictive
for some usage.  For example:
BUILD_DEPENDS=		${NONEXISTENT}:foo/bar:configure
When building as a regular user, dependencies are installed/built as
root, so if the archive contains files that have a mode of, say, 600,
they will not be readable by the port requesting the dependency.
This will also fix broken distribution files where directories don't
have the executable bit on.

OSVERSION 1100077 is after base r283997:

  Change directory permissions in pre-order.
  In this order, it won't try to recurse into a directory for which it
  doesn't have permission, before changing that permission.
  This follows an existing behavior in other BSDs, linux, OS X.

PR:		213574
Submitted by:	mat
Exp-run by:	antoine
Sponsored by:	Absolight
This commit is contained in:
Mathieu Arnold
2016-10-29 09:30:14 +00:00
parent db5f7b6cf1
commit d7df3c0f7d
4 changed files with 29 additions and 3 deletions

View File

@@ -3830,6 +3830,17 @@ checksum: fetch
.endif
.endif
# Some port's archives contains files modes that are a bit too restrictive for
# some usage. For example:
# BUILD_DEPENDS= ${NONEXISTENT}:foo/bar:configure
# When building as a regular user, dependencies are installed/built as root, so
# if the archive contains files that have a mode of, say, 600, they will not be
# readable by the port requesting the dependency.
# This will also fix broken distribution files where directories don't have the
# executable bit on.
extract-fixup-modes:
@${CHMOD} -R u+w,a+rX ${WRKDIR}
################################################################
# The special package-building targets
# You probably won't need to touch these
@@ -5201,6 +5212,7 @@ _EXTRACT_SEQ= 010:check-build-conflicts 050:extract-message 100:checksum \
150:extract-depends 190:clean-wrkdir 200:${EXTRACT_WRKDIR} \
300:pre-extract 450:pre-extract-script 500:do-extract \
700:post-extract 850:post-extract-script \
999:extract-fixup-modes \
${_OPTIONS_extract} ${_USES_extract} ${_SITES_extract}
_PATCH_DEP= extract
_PATCH_SEQ= 050:ask-license 100:patch-message 150:patch-depends \

View File

@@ -74,7 +74,7 @@ COMPAT4X_MASTER_SITES= LOCAL/kris/${COMPAT4X_ARCH}
do-extract:
@${MKDIR} ${WRKDIR}
@(cd ${DISTDIR}/${DIST_SUBDIR} && ${CAT} ${DISTFILES} | ${TAR} -xzf - -C ${WRKDIR} )
@(cd ${DISTDIR}/${DIST_SUBDIR} && ${CAT} ${DISTFILES} | ${TAR} -xzf - -C ${WRKDIR} usr/lib/compat )
.if !defined(FORCE_VULNERABLE_OPENSSL)
.for lib in ${OPENSSL_LIBS}
@${RM} ${WRKSRC}/${lib}

View File

@@ -55,4 +55,11 @@ post-install-DOCS-on:
@${MKDIR} ${STAGEDIR}${DOCSDIR}
@(cd ${WRKSRC}/doc && ${COPYTREE_SHARE} . ${STAGEDIR}${DOCSDIR})
.include <bsd.port.mk>
.include <bsd.port.pre.mk>
.if ${OSVERSION} < 1100077
post-extract:
${CHMOD} +x ${WRKSRC}/lib/unix ${WRKSRC}/lib/windows
.endif
.include <bsd.port.post.mk>

View File

@@ -25,4 +25,11 @@ post-patch:
@${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|g ; \
s|/usr/X11R6|${LOCALBASE}|g' ${WRKSRC}/src/fluxbg_conf.cc
.include <bsd.port.mk>
.include <bsd.port.pre.mk>
.if ${OSVERSION} < 1100077
post-extract:
${CHMOD} +x ${WRKSRC}/autom4te.cache
.endif
.include <bsd.port.post.mk>