Re: poudriere: "Permission denied" in the extract phase?

2018-03-02 Thread Marcin Cieslak
On Thu, 1 Mar 2018, Yuri wrote:

> On 02/26/18 17:11, Marcin Cieslak wrote:
> > So I don't know what has changed and why but the temporary fix is to
> > use "if" to check if the desired files are not already there, and
> > then proceeding with "post-fetch" only if the files are not found.
> 
> 
> Some time back I was working on nodejs support:
> https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=204577
> 
> So far, I couldn't make it stable because after a week or two files fetched
> from the npm server change without an apparent reason.
> 
> I will return to it to see if the situation improved.

Hi Yuri,

thanks for the pointer - it is very useful! Also I find a very useful reference
to Olivier Duchateau's work as well.

I share your pain. I am maintaining this local port for 2 years and it is a 
pain.
I must admit the pain comes not only from npm volatility (I somehow managed
to handle that) but mostly from the fact that I still needed to maintain
node 0.10, node 0.12 and io.js support while they were gone.

It is also interesting how the two different approaches - your approach
to help build larger applications ports simply (that could help, for example,
the current net-im/mastodon port by jrm@) or more comprehensive apporach
from Oliver - ruby-style, one port per registry package.

The latter approach is more correct but will be problematic in case of
when package A requires package B~1.0 and package C requires package B~2.0.

So we will need some why to have "local" modules installed under application
specific node_modules 
(/usr/local/lib/node_modules/package_c/node_modules/package_b_2.0).

Good news is that for binary modules (where I am mostly interested) we will
need to simply disallow this - not because we believe we are the best in the 
world,
but because trying dlopen() second binary module with the same name into node
will not work as expected.

I also would like to have possibility to build for multiple node engines 
(node4-,
node6-, node8- and node9-) which is a must for binary packages. I would even
use NODE_MODULES_VERSION API number instead of 4, 6, 8, 9.

So, for binary modules we have to have Oliver's approach, for the rest, it will 
be hard.

I'll try to examine your patches and come up with something reasonable.

Marcin

smime.p7s
Description: S/MIME Cryptographic Signature


Re: poudriere: "Permission denied" in the extract phase?

2018-03-01 Thread Yuri

On 02/26/18 17:11, Marcin Cieslak wrote:

So I don't know what has changed and why but the temporary fix is to
use "if" to check if the desired files are not already there, and
then proceeding with "post-fetch" only if the files are not found.



Some time back I was working on nodejs support: 
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=204577


So far, I couldn't make it stable because after a week or two files 
fetched from the npm server change without an apparent reason.


I will return to it to see if the situation improved.


Yuri


___
freebsd-ports@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to "freebsd-ports-unsubscr...@freebsd.org"


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

2018-03-01 Thread Marcin Cieslak
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
> ===
> ===
> ===>  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
> ===
> ===
> ===>  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.
> ===
> ===
> ===
> ===
> ===>  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 
.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

smime.p7s
Description: S/MIME Cryptographic Signature


Re: poudriere: "Permission denied" in the extract phase?

2018-02-26 Thread Marcin Cieslak
On Tue, 27 Feb 2018, Marcin Cieslak wrote:

> On Sun, 25 Feb 2018, Yuri wrote:
> 
> > On 02/25/18 05:37, Marcin Cieslak wrote:
> > > Yes, this is my private port that I am using to produce FreeBSD binaries
> > > for node-sass. Getting binary npm modules into our ports tree is another
> > > conversation.
> > > 
> > > The problem here is that a whole thing worked for me before for months
> > > so I am aware of all those limitations for particular build phases
> > > (it took me long to figure out that).
> > 
> > 
> > npm is an extremely volatile technology. Some package might work now, and 
> > then
> > break in a week due to a dependency package update.
> > 
> > It continuously automatically updates files that are downloaded as
> > dependencies.
> > 
> > NodeJS is largely incompatible with the FreeBSD ports system because of this
> > volatility.
> > 
> > NodeJS is also a very insecure technology. It brings files directly from
> > github without any vetting. So if somebody will update some github package
> > with malware, it is extremely likely that next day this malware will end up 
> > on
> > your production servers. There is nobody in between, you have to always 
> > trust
> > hundreds of parties.
> 
> I think I have some idea how we can tame this somewhat without allowing for
> a wild fetch.
> 
> It seems that I need to learn more about the code that checks the completness
> of the distfiles, since "make checksum" insists on redoing things all again:
> 
> # rm -rf distinfo 
> # make makesum
> 

(...)

So I don't know what has changed and why but the temporary fix is to
use "if" to check if the desired files are not already there, and
then proceeding with "post-fetch" only if the files are not found.

Marcin

smime.p7s
Description: S/MIME Cryptographic Signature


Re: poudriere: "Permission denied" in the extract phase?

2018-02-26 Thread Marcin Cieslak
On Sun, 25 Feb 2018, Yuri wrote:

> On 02/25/18 05:37, Marcin Cieslak wrote:
> > Yes, this is my private port that I am using to produce FreeBSD binaries
> > for node-sass. Getting binary npm modules into our ports tree is another
> > conversation.
> > 
> > The problem here is that a whole thing worked for me before for months
> > so I am aware of all those limitations for particular build phases
> > (it took me long to figure out that).
> 
> 
> npm is an extremely volatile technology. Some package might work now, and then
> break in a week due to a dependency package update.
> 
> It continuously automatically updates files that are downloaded as
> dependencies.
> 
> NodeJS is largely incompatible with the FreeBSD ports system because of this
> volatility.
> 
> NodeJS is also a very insecure technology. It brings files directly from
> github without any vetting. So if somebody will update some github package
> with malware, it is extremely likely that next day this malware will end up on
> your production servers. There is nobody in between, you have to always trust
> hundreds of parties.

I think I have some idea how we can tame this somewhat without allowing for
a wild fetch.

It seems that I need to learn more about the code that checks the completness
of the distfiles, since "make checksum" insists on redoing things all again:

# rm -rf distinfo 
# make makesum
# cat distinfo
TIMESTAMP = 1519691985
SHA256 (sass-node-sass-v4.7.2_GH0.tar.gz) = 
21cdea5c6bf73825eaec06e78a0bcc54ed75c0953e05c72fe4b4316d756b9e35
SIZE (sass-node-sass-v4.7.2_GH0.tar.gz) = 398635
# env TERM=dumb make checksum
===>  License MIT accepted by the user
===>   node-sass-4.7.2 depends on file: /usr/local/sbin/pkg - found
===>   node-sass-4.7.2 depends on package: npm>=0 - found
===> Fetching all distfiles required by node-sass-4.7.2 for building
/bin/mkdir -p /usr/ports/distfiles/node-sass
/bin/mkdir -p /usr/ports/distfiles/npm
cp -f /home/saper/sw/FreeBSD/ports/textproc/node-sass/files/package-lock.json 
/usr/ports/distfiles/node-sass
cp -f /home/saper/sw/FreeBSD/ports/textproc/node-sass/files/package.json 
/usr/ports/distfiles/node-sass
(cd /usr/ports/distfiles/node-sass && /usr/bin/env 
NPM_CONFIG_CACHE=/usr/ports/distfiles/npm npm install --ignore-scripts)
npm WARN lifecycle node-sass@4.7.2~install: cannot run in wd %s %s (wd=%s) 
node-sass@4.7.2 node scripts/install.js /usr/ports/distfiles/node-sass
npm WARN lifecycle node-sass@4.7.2~postinstall: cannot run in wd %s %s (wd=%s) 
node-sass@4.7.2 node scripts/build.js /usr/ports/distfiles/node-sass
npm WARN prepublish-on-install As of npm@5, `prepublish` scripts are deprecated.
npm WARN prepublish-on-install Use `prepare` for build steps and 
`prepublishOnly` for upload-only.
npm WARN prepublish-on-install See the deprecation note in `npm help scripts` 
for more information.
npm WARN lifecycle node-sass@4.7.2~prepublish: cannot run in wd %s %s (wd=%s) 
node-sass@4.7.2 not-in-install && node scripts/prepublish.js || in-install 
/usr/ports/distfiles/node-sass
up to date in 1.952s
=> SHA256 Checksum OK for sass-node-sass-v4.7.2_GH0.tar.gz.
# env TERM=dumb make checksum
===>  License MIT accepted by the user
===>   node-sass-4.7.2 depends on file: /usr/local/sbin/pkg - found
===>   node-sass-4.7.2 depends on package: npm>=0 - found
===> Fetching all distfiles required by node-sass-4.7.2 for building
/bin/mkdir -p /usr/ports/distfiles/node-sass
/bin/mkdir -p /usr/ports/distfiles/npm
cp -f /home/saper/sw/FreeBSD/ports/textproc/node-sass/files/package-lock.json 
/usr/ports/distfiles/node-sass
cp -f /home/saper/sw/FreeBSD/ports/textproc/node-sass/files/package.json 
/usr/ports/distfiles/node-sass
(cd /usr/ports/distfiles/node-sass && /usr/bin/env 
NPM_CONFIG_CACHE=/usr/ports/distfiles/npm npm install --ignore-scripts)
npm WARN lifecycle node-sass@4.7.2~install: cannot run in wd %s %s (wd=%s) 
node-sass@4.7.2 node scripts/install.js /usr/ports/distfiles/node-sass
npm WARN lifecycle node-sass@4.7.2~postinstall: cannot run in wd %s %s (wd=%s) 
node-sass@4.7.2 node scripts/build.js /usr/ports/distfiles/node-sass
npm WARN prepublish-on-install As of npm@5, `prepublish` scripts are deprecated.
npm WARN prepublish-on-install Use `prepare` for build steps and 
`prepublishOnly` for upload-only.
npm WARN prepublish-on-install See the deprecation note in `npm help scripts` 
for more information.
npm WARN lifecycle node-sass@4.7.2~prepublish: cannot run in wd %s %s (wd=%s) 
node-sass@4.7.2 not-in-install && node scripts/prepublish.js || in-install 
/usr/ports/distfiles/node-sass
up to date in 1.921s
=> SHA256 Checksum OK for sass-node-sass-v4.7.2_GH0.tar.gz.

So this is not poudriere's fault.

Marcin

smime.p7s
Description: S/MIME Cryptographic Signature


Re: poudriere: "Permission denied" in the extract phase?

2018-02-25 Thread Yuri

On 02/25/18 05:37, Marcin Cieslak wrote:

Yes, this is my private port that I am using to produce FreeBSD binaries
for node-sass. Getting binary npm modules into our ports tree is another 
conversation.

The problem here is that a whole thing worked for me before for months
so I am aware of all those limitations for particular build phases
(it took me long to figure out that).



npm is an extremely volatile technology. Some package might work now, 
and then break in a week due to a dependency package update.


It continuously automatically updates files that are downloaded as 
dependencies.


NodeJS is largely incompatible with the FreeBSD ports system because of 
this volatility.


NodeJS is also a very insecure technology. It brings files directly from 
github without any vetting. So if somebody will update some github 
package with malware, it is extremely likely that next day this malware 
will end up on your production servers. There is nobody in between, you 
have to always trust hundreds of parties.



Yuri


___
freebsd-ports@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to "freebsd-ports-unsubscr...@freebsd.org"


Re: poudriere: "Permission denied" in the extract phase?

2018-02-25 Thread Marcin Cieslak
On Sun, 25 Feb 2018, Adam Weinberger wrote:

> > > (full log:
> > > https://gist.github.com/saper/0be3f9b4e9eb819d3ec00f5273705517#file-node-sass-4-7-2-log
> > > )
> > > 
> > > Why are /bin/mkdir -p and /bin/cp commands invoked again in the "extract"
> > > phase?
> > > 
> > > FreeBSD 11.1-STABLE #10 r321629 running poudriere-3.2.4 (I have updated
> > > poudriere today)
> 
> First of all, just so you know, npm module ports won't be added to the ports
> tree. I just wanted to be clear in case you were planning on submitting it.
> There were a couple threads about this a while back.
> 
> With that out of the way, you're hitting errors for two reasons here.

Yes, this is my private port that I am using to produce FreeBSD binaries
for node-sass. Getting binary npm modules into our ports tree is another 
conversation.

The problem here is that a whole thing worked for me before for months
so I am aware of all those limitations for particular build phases
(it took me long to figure out that).

> The first problem is that npm needs network access, and poudriere prevents
> ports from dialing out. You can work around this with the
> ALLOW_NETWORKING_PACKAGES variable in poudriere.conf.
> 
> The other problem you're hitting is that npm saves a cache, and for some
> reason you're trying to run it from /usr/ports/distfiles/node-sass. Ports
> themselves should never, ever have the ability to create files in
> /usr/ports/distfiles. If you run 'npm install' from ${WRKSRC}, then you can
> do:
>   cd ${WRKSRC} && ${SETENV} HOME=/tmp npm install

Aren't ports allowed to write in /usr/ports/distfiles during the fetch phase?
That would be new to me...

This whole thing was working for me before (with older poudriere/bsd.port.mk 
maybe).
I try to force npm to fetch everything (including dependent modules)
in the fetch phase:

 42 post-fetch:
 43 ${MKDIR} ${DISTDIR}/${PORTNAME}
 44 ${MKDIR} ${NPM_CACHE}
 45 ${CP} ${FILESDIR}/package-lock.json ${DISTDIR}/${PORTNAME}
 46 ${CP} ${FILESDIR}/package.json ${DISTDIR}/${PORTNAME}
 47 (cd ${DISTDIR}/${PORTNAME} && ${SETENV} 
NPM_CONFIG_CACHE=${NPM_CACHE} npm install --ignore-scripts)

I copy everything I need from distfiles to ${WRKSRC} in the extract phase:

 49 post-extract:
 50 (cd ${DISTDIR}/${PORTNAME} && ${FIND} node_modules | ${PAX} -rw 
${WRKSRC})
 51 

I build everything without touching the network:

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

The problem in particular is that "post-fetch" target is invoked ALSO during 
the "extract" target,
I don't know why:

===
   
===>  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

It did that already in the fetch phase:

===
===
===>  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

and it tries that again in the checksum phase:

===
===
===>  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

Maybe there is an additional check for a successful fetch that I have missed.

Marcin

smime.p7s
Description: S/MIME Cryptographic Signature


Re: poudriere: "Permission denied" in the extract phase?

2018-02-25 Thread Adam Weinberger

On 24 Feb, 2018, at 19:53, Marcin Cieslak  wrote:

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:

( this was wrong, the full log is also corrected )

===>   Returning to build of node-sass-4.7.2
===
===
===>  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
/bin/cp /usr/ports/textproc/node-sass/files/package.json  
/portdistfiles/node-sass
(cd /portdistfiles/node-sass && /usr/bin/env  
NPM_CONFIG_CACHE=/portdistfiles/npm npm install --ignore-scripts)
npm WARN lifecycle node-sass@4.7.2~install: cannot run in wd %s %s  
(wd=%s) node-sass@4.7.2 node scripts/install.js /portdistfiles/node-sass
npm WARN lifecycle node-sass@4.7.2~postinstall: cannot run in wd %s %s  
(wd=%s) node-sass@4.7.2 node scripts/build.js /portdistfiles/node-sass
npm WARN prepublish-on-install As of npm@5, `prepublish` scripts are  
deprecated.
npm WARN prepublish-on-install Use `prepare` for build steps and  
`prepublishOnly` for upload-only.
npm WARN prepublish-on-install See the deprecation note in `npm help  
scripts` for more information.
npm WARN lifecycle node-sass@4.7.2~prepublish: cannot run in wd %s %s  
(wd=%s) node-sass@4.7.2 not-in-install && node scripts/prepublish.js ||  
in-install /portdistfiles/node-sass

added 356 packages in 10.684s
===
===
===>  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
/bin/cp /usr/ports/textproc/node-sass/files/package.json  
/portdistfiles/node-sass
(cd /portdistfiles/node-sass && /usr/bin/env  
NPM_CONFIG_CACHE=/portdistfiles/npm npm install --ignore-scripts)
npm WARN lifecycle node-sass@4.7.2~install: cannot run in wd %s %s  
(wd=%s) node-sass@4.7.2 node scripts/install.js /portdistfiles/node-sass
npm WARN lifecycle node-sass@4.7.2~postinstall: cannot run in wd %s %s  
(wd=%s) node-sass@4.7.2 node scripts/build.js /portdistfiles/node-sass
npm WARN prepublish-on-install As of npm@5, `prepublish` scripts are  
deprecated.
npm WARN prepublish-on-install Use `prepare` for build steps and  
`prepublishOnly` for upload-only.
npm WARN prepublish-on-install See the deprecation note in `npm help  
scripts` for more information.
npm WARN lifecycle node-sass@4.7.2~prepublish: cannot run in wd %s %s  
(wd=%s) node-sass@4.7.2 not-in-install && node scripts/prepublish.js ||  
in-install /portdistfiles/node-sass
npm WARN ajv-keywords@1.5.1 requires a peer of ajv@>=4.10.0 but none is  
installed. You must install peer dependencies yourself.


up to date in 2.13s
=> SHA256 Checksum OK for sass-node-sass-v4.7.2_GH0.tar.gz.
===
===
===
===
===>  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
=>> Cleaning up wrkdir
===>  Cleaning for node-sass-4.7.2
build of textproc/node-sass | node-sass-4.7.2 ended at Sun Feb 25  
02:33:55 UTC 2018



(full log:  
https://gist.github.com/saper/0be3f9b4e9eb819d3ec00f5273705517#file-node-sass-4-7-2-log  
)


Why are /bin/mkdir -p and /bin/cp commands invoked again in the  
"extract" phase?


FreeBSD 11.1-STABLE #10 r321629 running poudriere-3.2.4 (I have updated  
poudriere today)


What's wrong? That part of port code didn't change for some time.

Marcin


First of all, just so you know, npm module ports won't be added to the  
ports tree. I just wanted to be clear in case you 

Re: poudriere: "Permission denied" in the extract phase?

2018-02-24 Thread Marcin Cieslak
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:
> 
( this was wrong, the full log is also corrected )

===>   Returning to build of node-sass-4.7.2
===
===
===>  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
/bin/cp /usr/ports/textproc/node-sass/files/package.json 
/portdistfiles/node-sass
(cd /portdistfiles/node-sass && /usr/bin/env 
NPM_CONFIG_CACHE=/portdistfiles/npm npm install --ignore-scripts)
npm WARN lifecycle node-sass@4.7.2~install: cannot run in wd %s %s (wd=%s) 
node-sass@4.7.2 node scripts/install.js /portdistfiles/node-sass
npm WARN lifecycle node-sass@4.7.2~postinstall: cannot run in wd %s %s (wd=%s) 
node-sass@4.7.2 node scripts/build.js /portdistfiles/node-sass
npm WARN prepublish-on-install As of npm@5, `prepublish` scripts are deprecated.
npm WARN prepublish-on-install Use `prepare` for build steps and 
`prepublishOnly` for upload-only.
npm WARN prepublish-on-install See the deprecation note in `npm help scripts` 
for more information.
npm WARN lifecycle node-sass@4.7.2~prepublish: cannot run in wd %s %s (wd=%s) 
node-sass@4.7.2 not-in-install && node scripts/prepublish.js || in-install 
/portdistfiles/node-sass
added 356 packages in 10.684s
===
===
===>  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
/bin/cp /usr/ports/textproc/node-sass/files/package.json 
/portdistfiles/node-sass
(cd /portdistfiles/node-sass && /usr/bin/env 
NPM_CONFIG_CACHE=/portdistfiles/npm npm install --ignore-scripts)
npm WARN lifecycle node-sass@4.7.2~install: cannot run in wd %s %s (wd=%s) 
node-sass@4.7.2 node scripts/install.js /portdistfiles/node-sass
npm WARN lifecycle node-sass@4.7.2~postinstall: cannot run in wd %s %s (wd=%s) 
node-sass@4.7.2 node scripts/build.js /portdistfiles/node-sass
npm WARN prepublish-on-install As of npm@5, `prepublish` scripts are deprecated.
npm WARN prepublish-on-install Use `prepare` for build steps and 
`prepublishOnly` for upload-only.
npm WARN prepublish-on-install See the deprecation note in `npm help scripts` 
for more information.
npm WARN lifecycle node-sass@4.7.2~prepublish: cannot run in wd %s %s (wd=%s) 
node-sass@4.7.2 not-in-install && node scripts/prepublish.js || in-install 
/portdistfiles/node-sass
npm WARN ajv-keywords@1.5.1 requires a peer of ajv@>=4.10.0 but none is 
installed. You must install peer dependencies yourself.

up to date in 2.13s
=> SHA256 Checksum OK for sass-node-sass-v4.7.2_GH0.tar.gz.
===
===
===
===
===>  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
=>> Cleaning up wrkdir
===>  Cleaning for node-sass-4.7.2
build of textproc/node-sass | node-sass-4.7.2 ended at Sun Feb 25 02:33:55 UTC 
2018


> (full log: 
> https://gist.github.com/saper/0be3f9b4e9eb819d3ec00f5273705517#file-node-sass-4-7-2-log
>  )
> 
> Why are /bin/mkdir -p and /bin/cp commands invoked again in the "extract" 
> phase?
> 
> FreeBSD 11.1-STABLE #10 r321629 running poudriere-3.2.4 (I have updated 
> poudriere today)
> 
> What's wrong? That part of port code didn't change for some time.
> 
> Marcin


smime.p7s
Description: S/MIME Cryptographic Signature


poudriere: "Permission denied" in the extract phase?

2018-02-24 Thread Marcin Cieslak
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
===
===
===>  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
===
===
===>  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.
===
===
===
===
===>  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

(full log: 
https://gist.github.com/saper/0be3f9b4e9eb819d3ec00f5273705517#file-node-sass-4-7-2-log
 )

Why are /bin/mkdir -p and /bin/cp commands invoked again in the "extract" phase?

FreeBSD 11.1-STABLE #10 r321629 running poudriere-3.2.4 (I have updated 
poudriere today)

What's wrong? That part of port code didn't change for some time.

Marcin

smime.p7s
Description: S/MIME Cryptographic Signature