[Pkg-javascript-devel] Bug#1058552: Bug#1058552: science.js: FTBFS: SyntaxError: Error parsing /<<PKGBUILDDIR>>/package.json: Unexpected end of JSON input

Jonas Smedegaard jonas at jones.dk
Thu Apr 4 18:01:58 BST 2024


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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: signature
URL: <http://alioth-lists.debian.net/pipermail/pkg-javascript-devel/attachments/20240404/e76aaa05/attachment.sig>


More information about the Pkg-javascript-devel mailing list