deepjavalibrary / djl

An Engine-Agnostic Deep Learning Framework in Java
https://djl.ai
Apache License 2.0
4.14k stars 658 forks source link

Repo Build Failed on `ObjectDetectionTest` and `TfSsdTest` using Codespaces due to the lost package `fontconfig`. #2256

Closed Noricks closed 1 year ago

Noricks commented 1 year ago

Description

Hi, when I try to build the repo using the provided Codespaces environment, the following two tests FAILED:

  1. ai.djl.examples.inference.ObjectDetectionTest
  2. ai.djl.tensorflow.integration.modality.cv.TfSsdTest

The problem originated from java.desktop/sun.awt.X11FontManager.

It could be solved by adding the package fontconfig to the Codespaces Dockerfile or it can be skipped using TestRequirments.

The problem may have some relationship with the OpenJDK Dockerfile problem: https://gitlab.alpinelinux.org/alpine/aports/-/issues/7372

I am more than happy to submit a pull request if this approach is acceptable.

Expected Behavior

The tests should PASS or SKIP.

Error Message

ai.djl.examples.inference.ObjectDetectionTest

With Command: ./gradlew :examples:test --tests "ai.djl.examples.inference.ObjectDetectionTest" --info

Error Message:

Gradle suite > Gradle test > ai.djl.examples.inference.ObjectDetectionTest > testObjectDetection FAILED
    java.lang.InternalError: java.lang.reflect.InvocationTargetException
        at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:86)
        at java.base/java.security.AccessController.doPrivileged(Native Method)
        at java.desktop/sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
        at java.desktop/sun.font.SunFontManager.getInstance(SunFontManager.java:249)
        at java.desktop/sun.font.FontDesignMetrics.getMetrics(FontDesignMetrics.java:265)
        at java.desktop/sun.java2d.SunGraphics2D.getFontMetrics(SunGraphics2D.java:861)
        at ai.djl.modality.cv.BufferedImageFactory$BufferedImageWrapper.drawText(BufferedImageFactory.java:378)
        at ai.djl.modality.cv.BufferedImageFactory$BufferedImageWrapper.drawBoundingBoxes(BufferedImageFactory.java:322)
        at ai.djl.examples.inference.ObjectDetection.saveBoundingBoxImage(ObjectDetection.java:87)
        at ai.djl.examples.inference.ObjectDetection.predict(ObjectDetection.java:76)
        at ai.djl.examples.inference.ObjectDetectionTest.testObjectDetection(ObjectDetectionTest.java:39)

        Caused by:
        java.lang.reflect.InvocationTargetException
            at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
            at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
            at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
            at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
            at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:84)
            ... 10 more

            Caused by:
            java.lang.NullPointerException
                at java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264)
                at java.desktop/sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:225)
                at java.desktop/sun.awt.FontConfiguration.init(FontConfiguration.java:107)
                at java.desktop/sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:719)
                at java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:379)
                at java.base/java.security.AccessController.doPrivileged(Native Method)
                at java.desktop/sun.font.SunFontManager.<init>(SunFontManager.java:324)
                at java.desktop/sun.awt.FcFontManager.<init>(FcFontManager.java:35)
                at java.desktop/sun.awt.X11FontManager.<init>(X11FontManager.java:56)
                ... 15 more

ai.djl.tensorflow.integration.modality.cv.TfSsdTest

With command: ./gradlew :engines:tensorflow:tensorflow-model-zoo:test --tests "ai.djl.tensorflow.integration.modality.cv.TfSsdTest" --info

Error Message:

Gradle suite > Gradle test > ai.djl.tensorflow.integration.modality.cv.TfSsdTest > testTfSSD FAILED
    java.lang.InternalError: java.lang.reflect.InvocationTargetException
        at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:86)
        at java.base/java.security.AccessController.doPrivileged(Native Method)
        at java.desktop/sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
        at java.desktop/sun.font.SunFontManager.getInstance(SunFontManager.java:249)
        at java.desktop/sun.font.FontDesignMetrics.getMetrics(FontDesignMetrics.java:265)
        at java.desktop/sun.java2d.SunGraphics2D.getFontMetrics(SunGraphics2D.java:861)
        at ai.djl.modality.cv.BufferedImageFactory$BufferedImageWrapper.drawText(BufferedImageFactory.java:378)
        at ai.djl.modality.cv.BufferedImageFactory$BufferedImageWrapper.drawBoundingBoxes(BufferedImageFactory.java:322)
        at ai.djl.tensorflow.integration.modality.cv.TfSsdTest.saveBoundingBoxImage(TfSsdTest.java:131)
        at ai.djl.tensorflow.integration.modality.cv.TfSsdTest.testTfSSD(TfSsdTest.java:98)

        Caused by:
        java.lang.reflect.InvocationTargetException
            at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
            at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
            at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
            at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
            at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:84)
            ... 9 more

            Caused by:
            java.lang.NullPointerException
                at java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264)
                at java.desktop/sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:225)
                at java.desktop/sun.awt.FontConfiguration.init(FontConfiguration.java:107)
                at java.desktop/sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:719)
                at java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:379)
                at java.base/java.security.AccessController.doPrivileged(Native Method)
                at java.desktop/sun.font.SunFontManager.<init>(SunFontManager.java:324)
                at java.desktop/sun.awt.FcFontManager.<init>(FcFontManager.java:35)
                at java.desktop/sun.awt.X11FontManager.<init>(X11FontManager.java:56)
                ... 14 more

How to Reproduce?

Environment

Open the repo in the Codespaces, which will use the Docker environment provided along with DJL repo.

It is worth noting that the 8GB memory might not be sufficient to execute some of the tests.

Steps to reproduce

Single Command

Dedicated Commands

What have you tried to solve it?

Approaches that DO work

Approach 1: Install package fontconfig in the provided Dockerfile (.devcontainer/Dockerfile)

RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
     && apt-get -y install --no-install-recommends fontconfig

Approach 2: SKIP the tests using TestRequirments

Add the following lines in the TestRequirments:

    /** Requires that the test runs on a machine with a display. */
    public static void display() {
        if (System.getenv("DISPLAY") == null) {
            throw new SkipException("This test requires a display.");
        }
    }

Approaches that do not work

  1. Run with headless -Djava.awt.headless=true
  2. unset DISPLAY

Environment Info

> Task :integration:debugEnv
[DEBUG] - Registering EngineProvider: XGBoost
[DEBUG] - Registering EngineProvider: LightGBM
[DEBUG] - Registering EngineProvider: MXNet
[DEBUG] - Registering EngineProvider: PyTorch
[DEBUG] - Registering EngineProvider: TensorFlow
[DEBUG] - Found default engine: MXNet
----------- System Properties -----------
awt.toolkit: sun.awt.X11.XToolkit
java.specification.version: 11
sun.cpu.isalist: 
sun.jnu.encoding: UTF-8
java.class.path: /workspaces/djl/integration/build/classes/java/main:/workspaces/djl/integration/build/resources/main:/home/vscode/.gradle/caches/modules-2/files-2.1/commons-cli/commons-cli/1.5.0/dc98be5d5390230684a092589d70ea76a147925c/commons-cli-1.5.0.jar:/home/vscode/.gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4j-impl/2.19.0/1a0c9615ba9fd5b96db8c1136afbef4394286e93/log4j-slf4j-impl-2.19.0.jar:/workspaces/djl/basicdataset/build/libs/basicdataset-0.21.0-SNAPSHOT.jar:/workspaces/djl/model-zoo/build/libs/model-zoo-0.21.0-SNAPSHOT.jar:/workspaces/djl/testing/build/libs/testing-0.21.0-SNAPSHOT.jar:/workspaces/djl/engines/mxnet/mxnet-model-zoo/build/libs/mxnet-model-zoo-0.21.0-SNAPSHOT.jar:/workspaces/djl/engines/pytorch/pytorch-model-zoo/build/libs/pytorch-model-zoo-0.21.0-SNAPSHOT.jar:/workspaces/djl/engines/pytorch/pytorch-jni/build/libs/pytorch-jni-1.13.1-0.21.0-SNAPSHOT.jar:/workspaces/djl/engines/tensorflow/tensorflow-model-zoo/build/libs/tensorflow-model-zoo-0.21.0-SNAPSHOT.jar:/workspaces/djl/engines/ml/xgboost/build/libs/xgboost-0.21.0-SNAPSHOT.jar:/workspaces/djl/engines/ml/lightgbm/build/libs/lightgbm-0.21.0-SNAPSHOT.jar:/workspaces/djl/engines/mxnet/mxnet-engine/build/libs/mxnet-engine-0.21.0-SNAPSHOT.jar:/workspaces/djl/engines/pytorch/pytorch-engine/build/libs/pytorch-engine-0.21.0-SNAPSHOT.jar:/workspaces/djl/engines/tensorflow/tensorflow-engine/build/libs/tensorflow-engine-0.21.0-SNAPSHOT.jar:/workspaces/djl/api/build/libs/api-0.21.0-SNAPSHOT.jar:/home/vscode/.gradle/caches/modules-2/files-2.1/org.testng/testng/7.7.0/5298a6662b94d9ee438b95a2d44ea3ac6ce2cb8e/testng-7.7.0.jar:/home/vscode/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-api/1.7.36/6c62681a2f655b49963a5983b8b0950a6120ae14/slf4j-api-1.7.36.jar:/home/vscode/.gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-core/2.19.0/3b6eeb4de4c49c0fe38a4ee27188ff5fee44d0bb/log4j-core-2.19.0.jar:/home/vscode/.gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.19.0/ea1b37f38c327596b216542bc636cfdc0b8036fa/log4j-api-2.19.0.jar:/home/vscode/.gradle/caches/modules-2/files-2.1/org.apache.commons/commons-csv/1.9.0/b59d8f64cd0b83ee1c04ff1748de2504457018c1/commons-csv-1.9.0.jar:/home/vscode/.gradle/caches/modules-2/files-2.1/ml.dmlc/xgboost4j_2.12/1.7.1/badb8561aab6c1534353d951f409d883c08aeefb/xgboost4j_2.12-1.7.1.jar:/home/vscode/.gradle/caches/modules-2/files-2.1/commons-logging/commons-logging/1.2/4bfc12adfe4842bf07b657f0369c4cb522955686/commons-logging-1.2.jar:/home/vscode/.gradle/caches/modules-2/files-2.1/com.microsoft.ml.lightgbm/lightgbmlib/3.2.110/f6c85e5d7cc44d49c4544240ea5c96004680007b/lightgbmlib-3.2.110.jar:/home/vscode/.gradle/caches/modules-2/files-2.1/com.google.code.gson/gson/2.10/dd9b193aef96e973d5a11ab13cd17430c2e4306b/gson-2.10.jar:/home/vscode/.gradle/caches/modules-2/files-2.1/net.java.dev.jna/jna/5.12.1/b1e93a735caea94f503e95e6fe79bf9cdc1e985d/jna-5.12.1.jar:/home/vscode/.gradle/caches/modules-2/files-2.1/org.apache.commons/commons-compress/1.22/691a8b4e6cf4248c3bc72c8b719337d5cb7359fa/commons-compress-1.22.jar:/home/vscode/.gradle/caches/modules-2/files-2.1/com.beust/jcommander/1.82/a7c5fef184d238065de38f81bbc6ee50cca2e21/jcommander-1.82.jar:/home/vscode/.gradle/caches/modules-2/files-2.1/org.webjars/jquery/3.6.1/d08df6250157cd2db3d9b01b11b76e9b7225083a/jquery-3.6.1.jar:/workspaces/djl/engines/tensorflow/tensorflow-api/build/libs/tensorflow-api-0.21.0-SNAPSHOT.jar:/home/vscode/.gradle/caches/modules-2/files-2.1/org.tensorflow/tensorflow-core-api/0.4.2/3a40c3304bede0e750c9247800c41e627e094c39/tensorflow-core-api-0.4.2.jar:/home/vscode/.gradle/caches/modules-2/files-2.1/org.bytedeco/javacpp/1.5.6/1f18a820aadd943577b0b372554f9e35e1232e25/javacpp-1.5.6.jar:/home/vscode/.gradle/caches/modules-2/files-2.1/com.google.protobuf/protobuf-java/3.21.9/ed1240d9231044ce6ccf1978512f6e44416bb7e7/protobuf-java-3.21.9.jar:/home/vscode/.gradle/caches/modules-2/files-2.1/org.tensorflow/ndarray/0.3.3/1b6d8cc3e3762f6e465b884580d9fc17ab7aeb4/ndarray-0.3.3.jar
java.vm.vendor: Microsoft
sun.arch.data.model: 64
user.variant: 
java.vendor.url: https://www.microsoft.com
user.timezone: Etc/UTC
os.name: Linux
java.vm.specification.version: 11
sun.java.launcher: SUN_STANDARD
user.country: US
sun.boot.library.path: /usr/lib/jvm/msopenjdk-current/lib:/usr/lib/jvm/msopenjdk-current/lib
sun.java.command: ai.djl.integration.util.DebugEnvironment
jdk.debug: release
sun.cpu.endian: little
user.home: /home/vscode
org.gradle.appname: gradlew
user.language: en
java.specification.vendor: Oracle Corporation
java.version.date: 2022-10-18
java.home: /usr/lib/jvm/msopenjdk-current
ai.djl.logging.level: debug
org.gradle.internal.http.connectionTimeout: 60000
file.separator: /
java.vm.compressedOopsMode: Zero based
line.separator: 

java.specification.name: Java Platform API Specification
java.vm.specification.vendor: Oracle Corporation
java.awt.graphicsenv: sun.awt.X11GraphicsEnvironment
sun.management.compiler: HotSpot 64-Bit Tiered Compilers
java.runtime.version: 11.0.17+8-LTS
user.name: vscode
path.separator: :
os.version: 5.4.0-1094-azure
java.runtime.name: OpenJDK Runtime Environment
file.encoding: UTF-8
java.vm.name: OpenJDK 64-Bit Server VM
java.vendor.version: Microsoft-6841889
java.vendor.url.bug: https://github.com/microsoft/openjdk/issues
java.io.tmpdir: /tmp
org.gradle.internal.http.socketTimeout: 120000
java.version: 11.0.17
user.dir: /workspaces/djl/integration
os.arch: amd64
java.vm.specification.name: Java Virtual Machine Specification
java.awt.printerjob: sun.print.PSPrinterJob
sun.os.patch.level: unknown
java.library.path: /usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib
java.vm.info: mixed mode
java.vendor: Microsoft
java.vm.version: 11.0.17+8-LTS
sun.io.unicode.encoding: UnicodeLittle
library.jansi.path: /home/vscode/.gradle/native/jansi/1.18/linux64
java.class.version: 55.0
org.gradle.internal.publish.checksums.insecure: true

--------- Environment Variables ---------
NVM_RC_VERSION: 
PATH: /vscode/bin/linux-x64/e8a3071ea4344d9d48ef8a4df2c097372b0c5161/bin/remote-cli:/usr/local/share/nvm/current/bin:/usr/local/sdkman/bin:/usr/local/sdkman/candidates/java/current/bin:/usr/local/sdkman/candidates/gradle/current/bin:/usr/local/sdkman/candidates/maven/current/bin:/usr/lib/jvm/msopenjdk-current/bin:/usr/local/share/nvm/current/bin:/usr/local/sdkman/bin:/usr/local/sdkman/candidates/java/current/bin:/usr/local/sdkman/candidates/gradle/current/bin:/usr/local/sdkman/candidates/maven/current/bin:/usr/lib/jvm/msopenjdk-current/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/vscode/.local/bin
SDKMAN_VERSION: 5.16.0
CODESPACES: true
CODESPACE_VSCODE_FOLDER: /workspaces/djl
PROMPT_DIRTRIM: 4
VSCODE_GIT_IPC_HANDLE: /tmp/vscode-git-f708e88fae.sock
GITHUB_API_URL: https://api.github.com
COLORTERM: truecolor
SDKMAN_DIR: /usr/local/sdkman
VSCODE_GIT_ASKPASS_NODE: /vscode/bin/linux-x64/e8a3071ea4344d9d48ef8a4df2c097372b0c5161/node
PWD: /workspaces/djl
TERM_PROGRAM_VERSION: 1.74.2
GIT_ASKPASS: /vscode/bin/linux-x64/e8a3071ea4344d9d48ef8a4df2c097372b0c5161/extensions/git/dist/askpass.sh
NVM_CD_FLAGS: 
SHELL: /bin/bash
SDKMAN_CANDIDATES_API: https://api.sdkman.io/2
GITHUB_TOKEN: ******
GITHUB_GRAPHQL_URL: https://api.github.com/graphql
OLDPWD: /workspaces/djl
GITHUB_CODESPACE_TOKEN: *****
ContainerVersion: 12
GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN: preview.app.github.dev
NVM_SYMLINK_CURRENT: true
GITHUB_USER: Noricks
LS_COLORS: rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
SHLVL: 2
BROWSER: /vscode/bin/linux-x64/e8a3071ea4344d9d48ef8a4df2c097372b0c5161/bin/helpers/browser.sh
GITHUB_SERVER_URL: https://github.com
CLOUDENV_ENVIRONMENT_ID: 2a345531-52f7-441d-97a4-7b4d1d85cb48
JAVA_HOME: /usr/lib/jvm/msopenjdk-current
GIT_EDITOR: code --wait
RepositoryName: djl
TERM: xterm-256color
LANG: en_US.UTF-8
VSCODE_GIT_ASKPASS_MAIN: /vscode/bin/linux-x64/e8a3071ea4344d9d48ef8a4df2c097372b0c5161/extensions/git/dist/askpass-main.js
INTERNAL_VSCS_TARGET_URL: https://eastus.online.visualstudio.com
GITHUB_REPOSITORY: Noricks/djl
VSCODE_IPC_HOOK_CLI: /tmp/vscode-ipc-62573652-b6ea-49a1-863a-77b847feede9.sock
VSCODE_GIT_ASKPASS_EXTRA_ARGS: 
SDKMAN_CANDIDATES_DIR: /usr/local/sdkman/candidates
_: ./gradlew
NVM_DIR: /usr/local/share/nvm
TERM_PROGRAM: vscode
SHELL_LOGGED_IN: true
SDKMAN_PLATFORM: linuxx64
USER: vscode
HOSTNAME: codespaces-952b80
CODESPACE_NAME: noricks-cautious-xylophone-vpjj4556p542xqj7
HOME: /home/vscode

-------------- Directories --------------
temp directory: /tmp
DJL cache directory: /home/vscode/.djl.ai
Engine cache directory: /home/vscode/.djl.ai

------------------ CUDA -----------------
[DEBUG] - cudart library not found.
GPU Count: 0

----------------- Engines ---------------
DJL version: 0.21.0-SNAPSHOT
[DEBUG] - Using cache dir: /home/vscode/.djl.ai/mxnet/1.9.1-mkl-linux-x86_64
[INFO ] - Downloading libgfortran.so.3 ...
[INFO ] - Downloading libgomp.so.1 ...
[INFO ] - Downloading libquadmath.so.0 ...
[INFO ] - Downloading libopenblas.so.0 ...
[INFO ] - Downloading libmxnet.so ...
[DEBUG] - Loading mxnet library from: /home/vscode/.djl.ai/mxnet/1.9.1-mkl-linux-x86_64/libmxnet.so
[DEBUG] - Using cache dir: /home/vscode/.djl.ai/mxnet/1.9.1-mkl-linux-x86_64
Default Engine: MXNet:1.9.0, capabilities: [
        CPU_SSE,
        SIGNAL_HANDLER,
        LAPACK,
        BLAS_OPEN,
        CPU_SSE2,
        DIST_KVSTORE,
        CPU_SSE3,
        OPENMP,
        OPENCV,
        MKLDNN,
]
MXNet Library: /home/vscode/.djl.ai/mxnet/1.9.1-mkl-linux-x86_64/libmxnet.so
Default Device: cpu()
PyTorch: 2
MXNet: 0
XGBoost: 10
LightGBM: 10
TensorFlow: 3

--------------- Hardware --------------
Available processors (cores): 8
Byte Order: LITTLE_ENDIAN
Free memory (bytes): 223427904
Maximum memory (bytes): 4198498304
Total memory available to JVM (bytes): 264241152
Heap committed: 264241152
Heap nonCommitted: 40222720
GCC: 
gcc (Debian 10.2.1-6) 10.2.1 20210110
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
frankfliu commented 1 year ago

@Noricks Thanks so much for your investigation. I think we should do both.

Please go ahead and create a PR to address this issue.

frankfliu commented 1 year ago

I dig a bit more. This seems specific to mcr.microsoft.com/vscode/devcontainers/java:11 docker image. I think we only need to install fontconfig in Dockerfile

frankfliu commented 1 year ago

@Noricks Your GITHUB_TOKEN has been posted in this issue description. I have updated the description and removed it. Please make sure revoke the TOKEN on your side.