poudriere: "Permission denied" in the extract phase? [solved]

Marcin Cieslak saper at saper.info
Thu Mar 1 11:32:34 UTC 2018


On Sun, 25 Feb 2018, Marcin Cieslak wrote:

> Hello,
> 
> why is poudriere on 11.1-STABLE trying to build by custom port which has the following
> in the Makefile:
> 
> post-fetch:
> 	${MKDIR} ${DISTDIR}/${PORTNAME}
> 	${MKDIR} ${NPM_CACHE}
> 	${CP} ${FILESDIR}/package-lock.json ${DISTDIR}/${PORTNAME}
> 	${CP} ${FILESDIR}/package.json ${DISTDIR}/${PORTNAME}
> 	(cd ${DISTDIR}/${PORTNAME} && ${SETENV} NPM_CONFIG_CACHE=${NPM_CACHE} npm install --ignore-scripts)
> 
> ( complete port: https://github.com/saper/ports-exp/tree/master/textproc/node-sass )
> 
> The results are those:
> 
> ===>   Returning to build of node-sass-4.7.2
> ===========================================================================
> =======================<phase: fetch          >============================
> ===>  License MIT accepted by the user
> ===> Fetching all distfiles required by node-sass-4.7.2 for building
> /bin/mkdir -p /portdistfiles/node-sass
> /bin/mkdir -p /portdistfiles/npm
> /bin/cp /usr/ports/textproc/node-sass/files/package-lock.json /portdistfiles/node-sass
> (cd /portdistfiles/node-sass && /usr/bin/env NPM_CONFIG_CACHE=/portdistfiles/npm npm install --ignore-scripts)
> npm WARN saveError ENOENT: no such file or directory, open '/portdistfiles/node-sass/package.json'
> npm WARN enoent ENOENT: no such file or directory, open '/portdistfiles/node-sass/package.json'
> npm WARN node-sass No description
> npm WARN node-sass No repository field.
> npm WARN node-sass No README data
> npm WARN node-sass No license field.
> 
> added 4 packages in 1.185s
> ===========================================================================
> =======================<phase: checksum       >============================
> ===>  License MIT accepted by the user
> ===> Fetching all distfiles required by node-sass-4.7.2 for building
> /bin/mkdir -p /portdistfiles/node-sass
> /bin/mkdir -p /portdistfiles/npm
> /bin/cp /usr/ports/textproc/node-sass/files/package-lock.json /portdistfiles/node-sass
> (cd /portdistfiles/node-sass && /usr/bin/env NPM_CONFIG_CACHE=/portdistfiles/npm npm install --ignore-scripts)
> npm WARN saveError ENOENT: no such file or directory, open '/portdistfiles/node-sass/package.json'
> npm WARN enoent ENOENT: no such file or directory, open '/portdistfiles/node-sass/package.json'
> npm WARN node-sass No description
> npm WARN node-sass No repository field.
> npm WARN node-sass No README data
> npm WARN node-sass No license field.
> 
> up to date in 0.514s
> => SHA256 Checksum OK for sass-node-sass-v4.7.2_GH0.tar.gz.
> ===========================================================================
> =======================<phase: extract-depends>============================
> ===========================================================================
> =======================<phase: extract        >============================
> ===>  License MIT accepted by the user
> ===> Fetching all distfiles required by node-sass-4.7.2 for building
> /bin/mkdir -p /portdistfiles/node-sass
> /bin/mkdir -p /portdistfiles/npm
> /bin/cp /usr/ports/textproc/node-sass/files/package-lock.json /portdistfiles/node-sass
> cp: /portdistfiles/node-sass/package-lock.json: Permission denied
> *** Error code 1
> 
> Stop.
> make: stopped in /usr/ports/textproc/node-sass
> 

For the archives:

I have solved it (and some other related problem that occured later) by
copying even more files to $WRKDIR like crazy:

DIST_NPM_CACHE=	${DISTDIR}/npm
BUILD_NPM_CACHE=	${WRKDIR}/npm

.include <bsd.port.pre.mk>
.if ${COMPILER_TYPE} == clang
MAKE_ENV+=      GYP_DEFINES=clang=1
.endif

fetch-specials:
	${MKDIR} ${DISTDIR}/${PORTNAME}
	${MKDIR} ${DIST_NPM_CACHE}
	if [ ! -f ${DISTDIR}/${PORTNAME}/package-lock.json ]; then ${CP} ${FILESDIR}/package-lock.json ${DISTDIR}/${PORTNAME}; \
		${CP} ${FILESDIR}/package.json ${DISTDIR}/${PORTNAME}; \
		(cd ${DISTDIR}/${PORTNAME} && ${SETENV} NPM_CONFIG_CACHE=${DIST_NPM_CACHE} npm install --ignore-scripts) \
	fi

post-extract:
	(cd ${DISTDIR}/${PORTNAME} && find node_modules | ${PAX} -rw ${WRKSRC})
	${MKDIR} ${BUILD_NPM_CACHE}
	(cd ${DIST_NPM_CACHE} && find . | ${PAX} -rw ${BUILD_NPM_CACHE})

do-build:
	(cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} ${MAKE_ENV} NPM_CONFIG_CACHE=${BUILD_NPM_CACHE} npm install --nodedir=${LOCALBASE})

Those things I simpler with yarn. Maybe we could consider using yarn as a basis for some way to bring binary node packages into ports tree.

Marcin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 3663 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://lists.freebsd.org/pipermail/freebsd-ports/attachments/20180301/0081583f/attachment.bin>


More information about the freebsd-ports mailing list