Automattic / Automattic/node-canvas

WOFF fonts do not work on 2.7.0 nor built-from-source 2.6.1

Open
#1,737 12 comments 3 reactions 0 assignees View on GitHub
Text & Fonts
Dominant language
JavaScript
Stars
10.7k
Forks
1.2k
Avg merge
4d 8h
Merged PRs (30d)
1

Description

## UPDATE

The issue seems limited to WOFF fonts, it works fine after i converted my font to TTF.

Furhtermore, with the new 2.7.0 version, even prebuilt binaries fail to load it, whereas with 2.6.1 prebuilt binaries worked but built-from-source did not. in 2.7.0 neither prebuilt nor built-from-source works.

## Issue

When installing a prebuilt binary, custom fonts load without an issue, however when building from source, custom fonts show up as squares instead.

Below are my testing results and build logs. Is there an issue with my dependencies or build environment?

## JS Code

```js
const Canvas = require("canvas");
Canvas.registerFont(`${process.cwd()}/astro.woff`, { family: "astro" });

const canvas = Canvas.createCanvas(200, 200);
const ctx = canvas.getContext("2d");
ctx.font = "100px astro";
ctx.fillText("\uE8A8", 100, 100);
const out = canvas.createPNGStream();
// send stream to output
```

## Installation tests
```
apt install build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev

nvm use v12.16.1

npm install canvas (prebuilt downloaded, fonts work)
npm rebuild canvas --build-from-source (fonts dont work)

nvm use v14.15.4

npm rebuild canvas --update-binary (prebuilt fails, fallsback to build, fonts dont work)
npm uninstall canvas --save
npm install canvas (prebuilt downloaded, fonts work)
npm rebuild canvas --build-from-source (fonts dont work)
npm uninstall canvas --save
npm install automattic/node-canvas (no prebuilt, fallsback to build, fonts dont work)
```

## Environment
ubuntu 20.04.1
node-canvas 2.6.1
node-canvas 2.7.0 master
node 12.16.1
node 14.15.4

## full rebuild logs for node 14.15.4 and canvas 2.6.1
```bash
root@GalaxyGate:~/astrobot# npm rebuild canvas --update-binary

> canvas@2.6.1 install /root/astrobot/node_modules/canvas
> node-pre-gyp install --fallback-to-build

node-pre-gyp WARN Using needle for node-pre-gyp https download
node-pre-gyp WARN Pre-built binaries not installable for canvas@2.6.1 and node@14.15.4 (node-v83 ABI, glibc) (falling back to source compile with node-gyp)
node-pre-gyp WARN Hit error Remote end closed socket abruptly.
make: Entering directory '/root/astrobot/node_modules/canvas/build'
SOLINK_MODULE(target) Release/obj.target/canvas-postbuild.node
COPY Release/canvas-postbuild.node
CXX(target) Release/obj.target/canvas/src/backend/Backend.o
In file included from ../src/backend/Backend.h:6,
from ../src/backend/Backend.cc:1:
../../nan/nan.h: In function ‘void Nan::AsyncQueueWorker(Nan::AsyncWorker*)’:
../../nan/nan.h:2298:62: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
2298 | , reinterpret_cast(AsyncExecuteComplete)
| ^
CXX(target) Release/obj.target/canvas/src/backend/ImageBackend.o
In file included from ../src/backend/Backend.h:6,
from ../src/backend/ImageBackend.h:3,
from ../src/backend/ImageBackend.cc:1:
../../nan/nan.h: In function ‘void Nan::AsyncQueueWorker(Nan::AsyncWorker*)’:
../../nan/nan.h:2298:62: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
2298 | , reinterpret_cast(AsyncExecuteComplete)
| ^
CXX(target) Release/obj.target/canvas/src/backend/PdfBackend.o
In file included from ../src/backend/Backend.h:6,
from ../src/backend/PdfBackend.h:3,
from ../src/backend/PdfBackend.cc:1:
../../nan/nan.h: In function ‘void Nan::AsyncQueueWorker(Nan::AsyncWorker*)’:
../../nan/nan.h:2298:62: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
2298 | , reinterpret_cast(AsyncExecuteComplete)
| ^
CXX(target) Release/obj.target/canvas/src/backend/SvgBackend.o
In file included from ../src/backend/Backend.h:6,
from ../src/backend/SvgBackend.h:3,
from ../src/backend/SvgBackend.cc:1:
../../nan/nan.h: In function ‘void Nan::AsyncQueueWorker(Nan::AsyncWorker*)’:
../../nan/nan.h:2298:62: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
2298 | , reinterpret_cast(AsyncExecuteComplete)
| ^
CXX(target) Release/obj.target/canvas/src/bmp/BMPParser.o
CXX(target) Release/obj.target/canvas/src/Backends.o
In file included from ../src/backend/Backend.h:6,
from ../src/Backends.h:3,
from ../src/Backends.cc:1:
../../nan/nan.h: In function ‘void Nan::AsyncQueueWorker(Nan::AsyncWorker*)’:
../../nan/nan.h:2298:62: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
2298 | , reinterpret_cast(AsyncExecuteComplete)
| ^
CXX(target) Release/obj.target/canvas/src/Canvas.o
In file included from ../src/backend/Backend.h:6,
from ../src/Canvas.h:5,
from ../src/Canvas.cc:3:
../../nan/nan.h: In function ‘void Nan::AsyncQueueWorker(Nan::AsyncWorker*)’:
../../nan/nan.h:2298:62: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
2298 | , reinterpret_cast(AsyncExecuteComplete)
| ^
../src/Canvas.cc: In static member function ‘static Nan::NAN_METHOD_RETURN_TYPE Canvas::ToBuffer(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/Canvas.cc:415:26: warning: comparison of integer expressions of different signedness: ‘int’ and ‘const size_t’ {aka ‘const long unsigned int’} [-Wsign-compare]
415 | if (canvas->nBytes() > node::Buffer::kMaxLength) {
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
../src/Canvas.cc:479:79: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
479 | uv_queue_work(uv_default_loop(), req, ToPngBufferAsync, (uv_after_work_cb)ToBufferAsyncAfter);
| ^~~~~~~~~~~~~~~~~~
../src/Canvas.cc:520:80: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
520 | uv_queue_work(uv_default_loop(), req, ToJpegBufferAsync, (uv_after_work_cb)ToBufferAsyncAfter);
| ^~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:2884,
from ../src/backend/Backend.h:6,
from ../src/Canvas.h:5,
from ../src/Canvas.cc:3:
../../nan/nan_typedarray_contents.h: In instantiation of ‘Nan::TypedArrayContents::TypedArrayContents(v8::Local) [with T = unsigned char]’:
../src/Canvas.cc:274:65: required from here
../../nan/nan_typedarray_contents.h:34:54: warning: ‘v8::ArrayBuffer::Contents v8::ArrayBuffer::GetContents()’ is deprecated: Use GetBackingStore. See http://crbug.com/v8/9908. [-Wdeprecated-declarations]
34 | data = static_cast(buffer->GetContents().Data()) + byte_offset;
| ~~~~~~~~~~~~~~~~~~~^~
In file included from /root/.cache/node-gyp/14.15.4/include/node/node.h:67,
from ../../nan/nan.h:54,
from ../src/backend/Backend.h:6,
from ../src/Canvas.h:5,
from ../src/Canvas.cc:3:
/root/.cache/node-gyp/14.15.4/include/node/v8.h:5273:12: note: declared here
5273 | Contents GetContents();
| ^~~~~~~~~~~
CXX(target) Release/obj.target/canvas/src/CanvasGradient.o
In file included from ../src/CanvasGradient.h:5,
from ../src/CanvasGradient.cc:3:
../../nan/nan.h: In function ‘void Nan::AsyncQueueWorker(Nan::AsyncWorker*)’:
../../nan/nan.h:2298:62: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
2298 | , reinterpret_cast(AsyncExecuteComplete)
| ^
CXX(target) Release/obj.target/canvas/src/CanvasPattern.o
In file included from ../src/CanvasPattern.h:6,
from ../src/CanvasPattern.cc:3:
../../nan/nan.h: In function ‘void Nan::AsyncQueueWorker(Nan::AsyncWorker*)’:
../../nan/nan.h:2298:62: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
2298 | , reinterpret_cast(AsyncExecuteComplete)
| ^
CXX(target) Release/obj.target/canvas/src/CanvasRenderingContext2d.o
In file included from ../src/backend/Backend.h:6,
from ../src/Canvas.h:5,
from ../src/CanvasRenderingContext2d.h:6,
from ../src/CanvasRenderingContext2d.cc:3:
../../nan/nan.h: In function ‘void Nan::AsyncQueueWorker(Nan::AsyncWorker*)’:
../../nan/nan.h:2298:62: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
2298 | , reinterpret_cast(AsyncExecuteComplete)
| ^
In file included from ../../nan/nan.h:2884,
from ../src/backend/Backend.h:6,
from ../src/Canvas.h:5,
from ../src/CanvasRenderingContext2d.h:6,
from ../src/CanvasRenderingContext2d.cc:3:
../../nan/nan_typedarray_contents.h: In instantiation of ‘Nan::TypedArrayContents::TypedArrayContents(v8::Local) [with T = unsigned char]’:
../src/CanvasRenderingContext2d.cc:1027:64: required from here
../../nan/nan_typedarray_contents.h:34:54: warning: ‘v8::ArrayBuffer::Contents v8::ArrayBuffer::GetContents()’ is deprecated: Use GetBackingStore. See http://crbug.com/v8/9908. [-Wdeprecated-declarations]
34 | data = static_cast(buffer->GetContents().Data()) + byte_offset;
| ~~~~~~~~~~~~~~~~~~~^~
In file included from /root/.cache/node-gyp/14.15.4/include/node/node.h:67,
from ../../nan/nan.h:54,
from ../src/backend/Backend.h:6,
from ../src/Canvas.h:5,
from ../src/CanvasRenderingContext2d.h:6,
from ../src/CanvasRenderingContext2d.cc:3:
/root/.cache/node-gyp/14.15.4/include/node/v8.h:5273:12: note: declared here
5273 | Contents GetContents();
| ^~~~~~~~~~~
In file included from ../../nan/nan.h:2884,
from ../src/backend/Backend.h:6,
from ../src/Canvas.h:5,
from ../src/CanvasRenderingContext2d.h:6,
from ../src/CanvasRenderingContext2d.cc:3:
../../nan/nan_typedarray_contents.h: In instantiation of ‘Nan::TypedArrayContents::TypedArrayContents(v8::Local) [with T = double]’:
../src/CanvasRenderingContext2d.cc:1752:43: required from here
../../nan/nan_typedarray_contents.h:34:54: warning: ‘v8::ArrayBuffer::Contents v8::ArrayBuffer::GetContents()’ is deprecated: Use GetBackingStore. See http://crbug.com/v8/9908. [-Wdeprecated-declarations]
34 | data = static_cast(buffer->GetContents().Data()) + byte_offset;
| ~~~~~~~~~~~~~~~~~~~^~
In file included from /root/.cache/node-gyp/14.15.4/include/node/node.h:67,
from ../../nan/nan.h:54,
from ../src/backend/Backend.h:6,
from ../src/Canvas.h:5,
from ../src/CanvasRenderingContext2d.h:6,
from ../src/CanvasRenderingContext2d.cc:3:
/root/.cache/node-gyp/14.15.4/include/node/v8.h:5273:12: note: declared here
5273 | Contents GetContents();
| ^~~~~~~~~~~
CXX(target) Release/obj.target/canvas/src/closure.o
In file included from ../src/backend/Backend.h:6,
from ../src/Canvas.h:5,
from ../src/closure.h:5,
from ../src/closure.cc:1:
../../nan/nan.h: In function ‘void Nan::AsyncQueueWorker(Nan::AsyncWorker*)’:
../../nan/nan.h:2298:62: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
2298 | , reinterpret_cast(AsyncExecuteComplete)
| ^
CXX(target) Release/obj.target/canvas/src/color.o
CXX(target) Release/obj.target/canvas/src/Image.o
In file included from ../src/Image.h:8,
from ../src/Image.cc:3:
../../nan/nan.h: In function ‘void Nan::AsyncQueueWorker(Nan::AsyncWorker*)’:
../../nan/nan.h:2298:62: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
2298 | , reinterpret_cast(AsyncExecuteComplete)
| ^
CXX(target) Release/obj.target/canvas/src/ImageData.o
In file included from ../src/ImageData.h:5,
from ../src/ImageData.cc:3:
../../nan/nan.h: In function ‘void Nan::AsyncQueueWorker(Nan::AsyncWorker*)’:
../../nan/nan.h:2298:62: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
2298 | , reinterpret_cast(AsyncExecuteComplete)
| ^
In file included from ../../nan/nan.h:2884,
from ../src/ImageData.h:5,
from ../src/ImageData.cc:3:
../../nan/nan_typedarray_contents.h: In instantiation of ‘Nan::TypedArrayContents::TypedArrayContents(v8::Local) [with T = unsigned char]’:
../src/ImageData.cc:116:53: required from here
../../nan/nan_typedarray_contents.h:34:54: warning: ‘v8::ArrayBuffer::Contents v8::ArrayBuffer::GetContents()’ is deprecated: Use GetBackingStore. See http://crbug.com/v8/9908. [-Wdeprecated-declarations]
34 | data = static_cast(buffer->GetContents().Data()) + byte_offset;
| ~~~~~~~~~~~~~~~~~~~^~
In file included from /root/.cache/node-gyp/14.15.4/include/node/node.h:67,
from ../../nan/nan.h:54,
from ../src/ImageData.h:5,
from ../src/ImageData.cc:3:
/root/.cache/node-gyp/14.15.4/include/node/v8.h:5273:12: note: declared here
5273 | Contents GetContents();
| ^~~~~~~~~~~
CXX(target) Release/obj.target/canvas/src/init.o
In file included from ../src/backend/Backend.h:6,
from ../src/Backends.h:3,
from ../src/init.cc:17:
../../nan/nan.h: In function ‘void Nan::AsyncQueueWorker(Nan::AsyncWorker*)’:
../../nan/nan.h:2298:62: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
2298 | , reinterpret_cast(AsyncExecuteComplete)
| ^
In file included from ../../nan/nan.h:54,
from ../src/backend/Backend.h:6,
from ../src/Backends.h:3,
from ../src/init.cc:17:
../src/init.cc: At global scope:
/root/.cache/node-gyp/14.15.4/include/node/node.h:758:43: warning: cast between incompatible function types from ‘void (*)(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE)’ {aka ‘void (*)(v8::Local)’} to ‘node::addon_register_func’ {aka ‘void (*)(v8::Local, v8::Local, void*)’} [-Wcast-function-type]
758 | (node::addon_register_func) (regfunc), \
| ^
/root/.cache/node-gyp/14.15.4/include/node/node.h:792:3: note: in expansion of macro ‘NODE_MODULE_X’
792 | NODE_MODULE_X(modname, regfunc, NULL, 0) // NOLINT (readability/null_usage)
| ^~~~~~~~~~~~~
../src/init.cc:88:1: note: in expansion of macro ‘NODE_MODULE’
88 | NODE_MODULE(canvas, init);
| ^~~~~~~~~~~
CXX(target) Release/obj.target/canvas/src/register_font.o
SOLINK_MODULE(target) Release/obj.target/canvas.node
COPY Release/canvas.node
make: Leaving directory '/root/astrobot/node_modules/canvas/build'
canvas@2.6.1 /root/astrobot/node_modules/canvas
```

## clean install logs for canvas 2.7.0 on node 14.15.4
```bash
root@GalaxyGate:~/astrobot# npm install automattic/node-canvas

> canvas@2.7.0 install /root/astrobot/node_modules/canvas
> node-pre-gyp install --fallback-to-build

node-pre-gyp WARN Using needle for node-pre-gyp https download
node-pre-gyp WARN Tried to download(404): https://github.com/Automattic/node-canvas/releases/download/v2.7.0/canvas-v2.7.0-node-v83-linux-glibc-x64.tar.gz
node-pre-gyp WARN Pre-built binaries not found for canvas@2.7.0 and node@14.15.4 (node-v83 ABI, glibc) (falling back to source compile with node-gyp)
make: Entering directory '/root/astrobot/node_modules/canvas/build'
SOLINK_MODULE(target) Release/obj.target/canvas-postbuild.node
COPY Release/canvas-postbuild.node
CXX(target) Release/obj.target/canvas/src/backend/Backend.o
CXX(target) Release/obj.target/canvas/src/backend/ImageBackend.o
CXX(target) Release/obj.target/canvas/src/backend/PdfBackend.o
CXX(target) Release/obj.target/canvas/src/backend/SvgBackend.o
CXX(target) Release/obj.target/canvas/src/bmp/BMPParser.o
CXX(target) Release/obj.target/canvas/src/Backends.o
CXX(target) Release/obj.target/canvas/src/Canvas.o
In file included from ../../nan/nan.h:2884,
from ../src/backend/Backend.h:6,
from ../src/Canvas.h:5,
from ../src/Canvas.cc:3:
../../nan/nan_typedarray_contents.h: In instantiation of ‘Nan::TypedArrayContents::TypedArrayContents(v8::Local) [with T = unsigned char]’:
../src/Canvas.cc:274:65: required from here
../../nan/nan_typedarray_contents.h:34:54: warning: ‘v8::ArrayBuffer::Contents v8::ArrayBuffer::GetContents()’ is deprecated: Use GetBackingStore. See http://crbug.com/v8/9908. [-Wdeprecated-declarations]
34 | data = static_cast(buffer->GetContents().Data()) + byte_offset;
| ~~~~~~~~~~~~~~~~~~~^~
In file included from /root/.cache/node-gyp/14.15.4/include/node/node.h:67,
from ../../nan/nan.h:54,
from ../src/backend/Backend.h:6,
from ../src/Canvas.h:5,
from ../src/Canvas.cc:3:
/root/.cache/node-gyp/14.15.4/include/node/v8.h:5273:12: note: declared here
5273 | Contents GetContents();
| ^~~~~~~~~~~
CXX(target) Release/obj.target/canvas/src/CanvasGradient.o
CXX(target) Release/obj.target/canvas/src/CanvasPattern.o
CXX(target) Release/obj.target/canvas/src/CanvasRenderingContext2d.o
In file included from ../../nan/nan.h:2884,
from ../src/backend/Backend.h:6,
from ../src/Canvas.h:5,
from ../src/CanvasRenderingContext2d.h:6,
from ../src/CanvasRenderingContext2d.cc:3:
../../nan/nan_typedarray_contents.h: In instantiation of ‘Nan::TypedArrayContents::TypedArrayContents(v8::Local) [with T = unsigned char]’:
../src/CanvasRenderingContext2d.cc:1037:64: required from here
../../nan/nan_typedarray_contents.h:34:54: warning: ‘v8::ArrayBuffer::Contents v8::ArrayBuffer::GetContents()’ is deprecated: Use GetBackingStore. See http://crbug.com/v8/9908. [-Wdeprecated-declarations]
34 | data = static_cast(buffer->GetContents().Data()) + byte_offset;
| ~~~~~~~~~~~~~~~~~~~^~
In file included from /root/.cache/node-gyp/14.15.4/include/node/node.h:67,
from ../../nan/nan.h:54,
from ../src/backend/Backend.h:6,
from ../src/Canvas.h:5,
from ../src/CanvasRenderingContext2d.h:6,
from ../src/CanvasRenderingContext2d.cc:3:
/root/.cache/node-gyp/14.15.4/include/node/v8.h:5273:12: note: declared here
5273 | Contents GetContents();
| ^~~~~~~~~~~
In file included from ../../nan/nan.h:2884,
from ../src/backend/Backend.h:6,
from ../src/Canvas.h:5,
from ../src/CanvasRenderingContext2d.h:6,
from ../src/CanvasRenderingContext2d.cc:3:
../../nan/nan_typedarray_contents.h: In instantiation of ‘Nan::TypedArrayContents::TypedArrayContents(v8::Local) [with T = double]’:
../src/CanvasRenderingContext2d.cc:1762:43: required from here
../../nan/nan_typedarray_contents.h:34:54: warning: ‘v8::ArrayBuffer::Contents v8::ArrayBuffer::GetContents()’ is deprecated: Use GetBackingStore. See http://crbug.com/v8/9908. [-Wdeprecated-declarations]
34 | data = static_cast(buffer->GetContents().Data()) + byte_offset;
| ~~~~~~~~~~~~~~~~~~~^~
In file included from /root/.cache/node-gyp/14.15.4/include/node/node.h:67,
from ../../nan/nan.h:54,
from ../src/backend/Backend.h:6,
from ../src/Canvas.h:5,
from ../src/CanvasRenderingContext2d.h:6,
from ../src/CanvasRenderingContext2d.cc:3:
/root/.cache/node-gyp/14.15.4/include/node/v8.h:5273:12: note: declared here
5273 | Contents GetContents();
| ^~~~~~~~~~~
CXX(target) Release/obj.target/canvas/src/closure.o
CXX(target) Release/obj.target/canvas/src/color.o
CXX(target) Release/obj.target/canvas/src/Image.o
CXX(target) Release/obj.target/canvas/src/ImageData.o
In file included from ../../nan/nan.h:2884,
from ../src/ImageData.h:5,
from ../src/ImageData.cc:3:
../../nan/nan_typedarray_contents.h: In instantiation of ‘Nan::TypedArrayContents::TypedArrayContents(v8::Local) [with T = unsigned char]’:
../src/ImageData.cc:116:53: required from here
../../nan/nan_typedarray_contents.h:34:54: warning: ‘v8::ArrayBuffer::Contents v8::ArrayBuffer::GetContents()’ is deprecated: Use GetBackingStore. See http://crbug.com/v8/9908. [-Wdeprecated-declarations]
34 | data = static_cast(buffer->GetContents().Data()) + byte_offset;
| ~~~~~~~~~~~~~~~~~~~^~
In file included from /root/.cache/node-gyp/14.15.4/include/node/node.h:67,
from ../../nan/nan.h:54,
from ../src/ImageData.h:5,
from ../src/ImageData.cc:3:
/root/.cache/node-gyp/14.15.4/include/node/v8.h:5273:12: note: declared here
5273 | Contents GetContents();
| ^~~~~~~~~~~
CXX(target) Release/obj.target/canvas/src/init.o
CXX(target) Release/obj.target/canvas/src/register_font.o
SOLINK_MODULE(target) Release/obj.target/canvas.node
COPY Release/canvas.node
make: Leaving directory '/root/astrobot/node_modules/canvas/build'
npm WARN astrobot@2.0.0 No repository field.

+ canvas@2.7.0
added 32 packages from 16 contributors and audited 126 packages in 43.546s

5 packages are looking for funding
run `npm fund` for details

found 0 vulnerabilities
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.