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

2024-04-05 Thread James Valleroy

On Thu, 04 Apr 2024 19:01:58 +0200 Jonas Smedegaard  wrote:

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:
> > 
> > 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.


I see, thanks for pointing that out. I think there isn't a need to use 
mktemp here, so the patch can be simplified to this:



diff --git a/Makefile b/Makefile
index c9e03c2..f5a954b 100644
--- a/Makefile
+++ b/Makefile
@@ -77,7 +77,8 @@ install:

 package.json: src/package.js
@rm -f $@
-   node src/package.js > $@
+   node src/package.js > package.json.temp
+   mv package.json.temp $@
@chmod a-w $@

 clean:


OpenPGP_signature.asc
Description: OpenPGP digital signature
-- 
Pkg-javascript-devel mailing list
Pkg-javascript-devel@alioth-lists.debian.net
https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/pkg-javascript-devel


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

2024-04-04 Thread Jonas Smedegaard
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
-- 
Pkg-javascript-devel mailing list
Pkg-javascript-devel@alioth-lists.debian.net
https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/pkg-javascript-devel