Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Linux: canvas@2.5.0 install fail after previous successful installs #1439

Closed
owntheweb-archive opened this issue Jun 6, 2019 · 9 comments
Closed

Comments

@owntheweb-archive
Copy link

After about a month ago of successful canvas install and work (thank you for this excellent module!), I'm returning to resume work on a fun belena.io Raspberry Pi LED display (will share code soon of course). Recent build of my project has resulted in a canvas module build fail. I'm wondering if there was an update made in the last month to break it. I'll take a stab at it as time allows if not beaten to it.

Issue or Feature

Here's the terminal output that gives clues to what is happening.

...
[main]     Step 7/10 : RUN JOBS=MAX npm install --production --unsafe-perm && npm cache verify && rm -rf /tmp/*
[main]      ---> Running in 22df4c69bce0
[main]     npm WARN deprecated cross-spawn-async@2.2.5: cross-spawn no longer requires a build toolchain, use it instead
[main]     
[main]     > canvas@2.5.0 install /usr/src/app/node_modules/canvas
[main]     > node-pre-gyp install --fallback-to-build
[main]     node-pre-gyp
[main]      WARN
[main]      Using needle for node-pre-gyp https download
[main]     
[main]     node-pre-gyp WARN Tried to download(404): https://github.com/node-gfx/node-canvas-prebuilt/releases/download/v2.5.0/canvas-v2.5.0-node-v64-linux-glibc-arm.tar.gz
[main]     
[main]     
[main]     node-pre-gyp
[main]      
[main]     WARN
[main]      
[main]     Pre-built binaries not found for canvas@2.5.0 and node@10.16.0 (node-v64 ABI, glibc) (falling back to source compile with node-gyp)
[main]     
[main]     make: Entering directory '/usr/src/app/node_modules/canvas/build'
[main]       SOLINK_MODULE(target) Release/obj.target/canvas-postbuild.node
[main]       CXX(target) Release/obj.target/canvas/src/backend/Backend.o
[main]       CXX(target) Release/obj.target/canvas/src/backend/ImageBackend.o
[main]       CXX(target) Release/obj.target/canvas/src/backend/PdfBackend.o
[main]       CXX(target) Release/obj.target/canvas/src/backend/SvgBackend.o
[main]       CXX(target) Release/obj.target/canvas/src/bmp/BMPParser.o
[main]       CXX(target) Release/obj.target/canvas/src/Backends.o
[main]       CXX(target) Release/obj.target/canvas/src/Canvas.o
[main]       CXX(target) Release/obj.target/canvas/src/CanvasGradient.o
[main]       CXX(target) Release/obj.target/canvas/src/CanvasPattern.o
[main]       CXX(target) Release/obj.target/canvas/src/CanvasRenderingContext2d.o
[main]       CXX(target) Release/obj.target/canvas/src/closure.o
[main]       CXX(target) Release/obj.target/canvas/src/color.o
[main]       CXX(target) Release/obj.target/canvas/src/Image.o
[main]       CXX(target) Release/obj.target/canvas/src/ImageData.o
[main]       CXX(target) Release/obj.target/canvas/src/init.o
[main]       CXX(target) Release/obj.target/canvas/src/register_font.o
[main]       COPY Release/canvas-postbuild.node
[main]     ../src/bmp/BMPParser.cc: In member function ‘void BMPParser::Parser::parse(uint8_t*, int, uint8_t*)’:
[main]     ../src/bmp/BMPParser.cc:193:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
[main]        E(ptr - data > imgdOffset, "image data overlaps with another structure");
[main]          ~~~~~~~~~~~^~~
[main]     ../src/bmp/BMPParser.cc:10:25: note: in definition of macro ‘E’
[main]      #define E(cond, msg) if(cond) return setErr(msg)
[main]                              ^~~~
[main]     
[main]     ../src/bmp/BMPParser.cc:208:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
[main]        E(ptr - data + imgdSize > len, "not enough image data");
[main]          ~~~~~~~~~~~~~~~~~~~~~~^~~
[main]     ../src/bmp/BMPParser.cc:10:25: note: in definition of macro ‘E’
[main]      #define E(cond, msg) if(cond) return setErr(msg)
[main]                              ^~~~
[main]     
[main]     ../src/CanvasRenderingContext2d.cc: In static member function ‘static Nan::NAN_METHOD_RETURN_TYPE Context2d::DrawImage(Nan::NAN_METHOD_ARGS_TYPE)’:
[main]     ../src/CanvasRenderingContext2d.cc:1291:45: error: call of overloaded ‘abs(double&)’ is ambiguous
[main]        double current_scale_x = abs(transforms[1]);
[main]                                                  ^
[main]     
[main]     In file included from /usr/include/c++/6/cstdlib:75:0,
[main]                      from /usr/include/c++/6/ext/string_conversions.h:41,
[main]                      from /usr/include/c++/6/bits/basic_string.h:5417,
[main]                      from /usr/include/c++/6/string:52,
[main]                      from /usr/include/c++/6/stdexcept:39,
[main]                      from /usr/include/c++/6/array:39,
[main]                      from /usr/include/c++/6/tuple:39,
[main]                      from /usr/include/c++/6/functional:55,
[main]                      from /usr/include/c++/6/memory:79,
[main]                      from /root/.node-gyp/10.16.0/include/node/v8.h:21,
[main]                      from /root/.node-gyp/10.16.0/include/node/node.h:63,
[main]                      from ../../nan/nan.h:54,
[main]                      from ../src/backend/Backend.h:6,
[main]                      from ../src/Canvas.h:5,
[main]                      from ../src/CanvasRenderingContext2d.h:6,
[main]                      from ../src/CanvasRenderingContext2d.cc:3:
[main]     /usr/include/stdlib.h:735:12: note: candidate: int abs(int)
[main]      extern int abs (int __x) __THROW __attribute__ ((__const__)) __wur;
[main]                 ^~~
[main]     In file included from /usr/include/c++/6/ext/string_conversions.h:41:0,
[main]                      from /usr/include/c++/6/bits/basic_string.h:5417,
[main]                      from /usr/include/c++/6/string:52,
[main]                      from /usr/include/c++/6/stdexcept:39,
[main]                      from /usr/include/c++/6/array:39,
[main]                      from /usr/include/c++/6/tuple:39,
[main]                      from /usr/include/c++/6/functional:55,
[main]                      from /usr/include/c++/6/memory:79,
[main]                      from /root/.node-gyp/10.16.0/include/node/v8.h:21,
[main]                      from /root/.node-gyp/10.16.0/include/node/node.h:63,
[main]                      from ../../nan/nan.h:54,
[main]                      from ../src/backend/Backend.h:6,
[main]                      from ../src/Canvas.h:5,
[main]                      from ../src/CanvasRenderingContext2d.h:6,
[main]                      from ../src/CanvasRenderingContext2d.cc:3:
[main]     /usr/include/c++/6/cstdlib:180:3: note: candidate: long long int std::abs(long long int)
[main]        abs(long long __x) { return __builtin_llabs (__x); }
[main]        ^~~
[main]     /usr/include/c++/6/cstdlib:172:3: note: candidate: long int std::abs(long int)
[main]        abs(long __i) { return __builtin_labs(__i); }
[main]        ^~~
[main]     ../src/CanvasRenderingContext2d.cc:1292:45: error: call of overloaded ‘abs(double&)’ is ambiguous
[main]        double current_scale_y = abs(transforms[2]);
[main]                                                  ^
[main]     In file included from /usr/include/c++/6/cstdlib:75:0,
[main]                      from /usr/include/c++/6/ext/string_conversions.h:41,
[main]                      from /usr/include/c++/6/bits/basic_string.h:5417,
[main]                      from /usr/include/c++/6/string:52,
[main]                      from /usr/include/c++/6/stdexcept:39,
[main]                      from /usr/include/c++/6/array:39,
[main]                      from /usr/include/c++/6/tuple:39,
[main]                      from /usr/include/c++/6/functional:55,
[main]                      from /usr/include/c++/6/memory:79,
[main]                      from /root/.node-gyp/10.16.0/include/node/v8.h:21,
[main]                      from /root/.node-gyp/10.16.0/include/node/node.h:63,
[main]                      from ../../nan/nan.h:54,
[main]                      from ../src/backend/Backend.h:6,
[main]                      from ../src/Canvas.h:5,
[main]                      from ../src/CanvasRenderingContext2d.h:6,
[main]                      from ../src/CanvasRenderingContext2d.cc:3:
[main]     /usr/include/stdlib.h:735:12: note: candidate: int abs(int)
[main]      extern int abs (int __x) __THROW __attribute__ ((__const__)) __wur;
[main]                 ^~~
[main]     In file included from /usr/include/c++/6/ext/string_conversions.h:41:0,
[main]                      from /usr/include/c++/6/bits/basic_string.h:5417,
[main]                      from /usr/include/c++/6/string:52,
[main]                      from /usr/include/c++/6/stdexcept:39,
[main]                      from /usr/include/c++/6/array:39,
[main]                      from /usr/include/c++/6/tuple:39,
[main]                      from /usr/include/c++/6/functional:55,
[main]                      from /usr/include/c++/6/memory:79,
[main]                      from /root/.node-gyp/10.16.0/include/node/v8.h:21,
[main]                      from /root/.node-gyp/10.16.0/include/node/node.h:63,
[main]                      from ../../nan/nan.h:54,
[main]                      from ../src/backend/Backend.h:6,
[main]                      from ../src/Canvas.h:5,
[main]                      from ../src/CanvasRenderingContext2d.h:6,
[main]                      from ../src/CanvasRenderingContext2d.cc:3:
[main]     /usr/include/c++/6/cstdlib:180:3: note: candidate: long long int std::abs(long long int)
[main]        abs(long long __x) { return __builtin_llabs (__x); }
[main]        ^~~
[main]     /usr/include/c++/6/cstdlib:172:3: note: candidate: long int std::abs(long int)
[main]        abs(long __i) { return __builtin_labs(__i); }
[main]        ^~~
[main]     
[main]     make: *** [Release/obj.target/canvas/src/CanvasRenderingContext2d.o] Error 1
[main]     make: *** Waiting for unfinished jobs....
[main]     
[main]     canvas.target.mk:138: recipe for target 'Release/obj.target/canvas/src/CanvasRenderingContext2d.o' failed
[main]     make: Leaving directory '/usr/src/app/node_modules/canvas/build'
[main]     gyp
[main]      ERR! 
[main]     build error
[main]     
[main]     gyp ERR! stack
[main]      Error: `make` failed with exit code: 2
[main]     
[main]     gyp 
[main]     ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:262:23)
[main]     
[main]     gyp 
[main]     ERR!
[main]      
[main]     stack     at ChildProcess.emit (events.js:198:13)
[main]     
[main]     gyp
[main]      
[main]     ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:248:12)
[main]     
[main]     gyp ERR! 
[main]     System
[main]      Linux 4.15.0-45-generic
[main]     
[main]     gyp ERR! 
[main]     command
[main]      "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "build" "--fallback-to-build" "--module=/usr/src/app/node_modules/canvas/build/Release/canvas.node" "--module_name=canvas" "--module_path=/usr/src/app/node_modules/canvas/build/Release" "--napi_version=4" "--node_abi_napi=napi" "--napi_build_version=0" "--node_napi_label=node-v64"
[main]     gyp 
[main]     ERR! cwd
[main]      /usr/src/app/node_modules/canvas
[main]     gyp 
[main]     ERR! 
[main]     node -v v10.16.0
[main]     gyp
[main]      
[main]     ERR!
[main]      
[main]     node-gyp -v v3.8.0
[main]     gyp
[main]      
[main]     ERR! not ok
[main]     
[main]     node-pre-gyp ERR! build error
[main]     
[main]     
[main]     node-pre-gyp ERR! 
[main]     stack Error: Failed to execute '/usr/local/bin/node /usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --module=/usr/src/app/node_modules/canvas/build/Release/canvas.node --module_name=canvas --module_path=/usr/src/app/node_modules/canvas/build/Release --napi_version=4 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=node-v64' (1)
[main]     node-pre-gyp ERR! 
[main]     stack     at ChildProcess.<anonymous> (/usr/src/app/node_modules/node-pre-gyp/lib/util/compile.js:83:29)
[main]     node-pre-gyp ERR! stack     at ChildProcess.emit (events.js:198:13)
[main]     
[main]     node-pre-gyp ERR! 
[main]     stack
[main]          at maybeClose (internal/child_process.js:982:16)
[main]     node-pre-gyp ERR!
[main]      stack
[main]          at Process.ChildProcess._handle.onexit (internal/child_process.js:259:5)
[main]     
[main]     node-pre-gyp 
[main]     ERR!
[main]      
[main]     System Linux 4.15.0-45-generic
[main]     
[main]     node-pre-gyp ERR! 
[main]     command "/usr/local/bin/node" "/usr/src/app/node_modules/.bin/node-pre-gyp" "install" "--fallback-to-build"
[main]     
[main]     node-pre-gyp ERR! 
[main]     cwd
[main]      /usr/src/app/node_modules/canvas
[main]     
[main]     node-pre-gyp ERR! 
[main]     node -v
[main]      v10.16.0
[main]     
[main]     node-pre-gyp ERR! 
[main]     node-pre-gyp -v
[main]      v0.11.0
[main]     
[main]     node-pre-gyp ERR! 
[main]     not ok
[main]     
[main]     
[main]     Failed to execute '/usr/local/bin/node /usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --module=/usr/src/app/node_modules/canvas/build/Release/canvas.node --module_name=canvas --module_path=/usr/src/app/node_modules/canvas/build/Release --napi_version=4 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=node-v64' (1)
[main]     npm WARN pi-day-led@0.1.0 No repository field.
[main]     
[main]     
[main]     
[main]     npm ERR! code
[main]      ELIFECYCLE
[main]     
[main]     npm ERR! 
[main]     errno 1
[main]     
[main]     npm ERR! canvas@2.5.0 install: `node-pre-gyp install --fallback-to-build`
[main]     npm ERR! Exit status 1
[main]     
[main]     npm ERR!
[main]     
[main]     npm ERR!
[main]      Failed at the canvas@2.5.0 install script.
[main]     npm ERR!
[main]      This is probably not a problem with npm. There is likely additional logging output above.
...

Steps to Reproduce

The error is occurring during npm install. I have read the install instructions and have had this running previously without edits being made to install scripts.

Your Environment

  • canvas@2.5.0
  • node -v v10.16.0
  • node-gyp -v v3.8.0
  • belana.io Node 10 base Linux image on Raspberry Pi, running the following (I know this makes it more fuzzy, canvas did work with this last month):

apt-get install -yq --no-install-recommends build-essential libraspberrypi-bin libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev python make g++ nodejs git openssh-server gcc

Thanks for taking a look! I'll attempt to dig in as well as soon and will try an older version next.

@owntheweb-archive
Copy link
Author

2.4.1 is working great.

@zbjornson
Copy link
Collaborator

I think @Hakerh400 fixed one or both of the warnings there in #1435. The actual error was fixed in #1418 but isn't in a release yet. Since you're not using prebuilds, you could try installing from master until a release is made, yarn add Automattic/node-canvas#master.

@LinusU
Copy link
Collaborator

LinusU commented Jun 11, 2019

Please test with 2.6.0 that was just released, npm install canvas@2.6.0 🚀

@stephenwithav
Copy link

@LinusU This same error occurred while attempting to npm install --build-from-source canvas from a Dockerfile based on Node, which oddly pulled 2.5.0 by default.

Specifying canvas@2.6.0 resolved the issue for me, so it likely works on the Pi, too.

@lf1991
Copy link

lf1991 commented Jul 3, 2019

this problem is also to me ,I hava no idea

@lf1991
Copy link

lf1991 commented Jul 3, 2019

case:
canvas@2.5.0 install /home/lifei/workspace/express_workspace/shot-screen/node_modules/canvas

node-pre-gyp install --fallback-to-build
node-pre-gyp WARN Using needle for node-pre-gyp https download

env:node v12.5.0 kali2.0 linux 64
ps:I step by this requirement,but not working ,I wait online

@stephenwithav
Copy link

@lf1991 Try npm install --build-from-source canvas@2.6.0.

@qdk0901
Copy link

qdk0901 commented Sep 12, 2019

run npm with --verbose
npm install canvas@2.6.0 --verbose
it will show what library is missing that needed by canvas
for me, when I install libpixman-1-dev and libcairo-2-dev, everything work fine

@owntheweb-archive
Copy link
Author

Team,
I'm sorry for the amount of time it took to get back. Life took over. Suggestions worked great. Thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants