Quoting James Valleroy (2024-04-04 16:13:07) > On 3/28/24 4:08 AM, Petter Reinholdtsen wrote: > > [James Valleroy 2024-02-12] > >> Here is a patch that fixes the build: > > > > Thank you. Can you explain why changing the output from package.json to > > mktemp and then moving the result to package.json will solve the build > > problem? I fail to understand how this could change anything. > > The makefile receipe uses node to produce the content that will be > written to package.json. It seems that node is also trying to read in > and parse the contents of package.json. Apparently, writing the file is > not an atomic operation, so node is reading it before the write > operation has completed. So it reads some partially-written package.json > file, which is not yet valid JSON, and produces an error when trying to > parse it. > > I don't know enough about node to say why it does this (reading in > package.json after it has started running the src/package.js script). > > > Btw, did you mean TEMPFILE=$(shell mktemp) to get a random temp file > > name? > > > > I'm not sure. It may also work, but there is a difference in when a > shell command runs. Some people recommend not to use shell in a > makefile: https://stackoverflow.com/a/76121578
Each make target (i.e. each line indended by a tab) is executed within a shell. The point in the SO answer you reference is that calling the make function $(shell ...) *inside* a make target effectively spawns a shell within another shell, and *that* you rarely really want. What Petter is talking about above is that "TEMPFILE=mktemp", because it is a make target (i.e. on a TAB-indented line) is passed to a shell, which will *not* set TEMPFILE to the output of the shell command mktemp, but simply set TEMPFILE to the _string_ "mktemp" which is unlikely that you want. - Jonas -- * Jonas Smedegaard - idealist & Internet-arkitekt * Tlf.: +45 40843136 Website: http://dr.jones.dk/ * Sponsorship: https://ko-fi.com/drjones [x] quote me freely [ ] ask before reusing [ ] keep private
signature.asc
Description: signature