KhronosGroup / glTF-Render-Fidelity

Apache License 2.0
9 stars 2 forks source link

Platform support #4

Open emackey opened 5 months ago

emackey commented 5 months ago

Does this project support running (virtually or otherwise) under Windows?

Can it be done in a Docker container, or does it need a full Linux desktop?

elalish commented 5 months ago

I run it on Mac and the CI runs it on Linux. Seems like Windows ought to work, at the very least under WSL2, but we may need some particular directions. I'm pretty sure the CI is all docker containers, so that should be fine. Let me know what you run into.

emackey commented 5 months ago

So I've found some hints elsewhere that GitHub CI is based on VHD, not Docker. Still, there should be a way to get this going in a Docker container, I would expect.

This is what I've tried so far:

  1. Create a Docker container from the ubuntu:latest image, with the glTF-Render-Fidelity repo mapped into it under /mnt/render.
  2. Run some sequence of commands, such as the following:
cd /mnt/render
apt update
apt install nodejs
apt install npm
apt-get install xvfb
npm install
(NOTE: The above fails to run a script that installs the submodule, but I got that already.)

npm run build
/usr/bin/xvfb-run --auto-servernum npm run test -- --quiet

The above eventually gave me this message:

Error message: Could not find Chrome (ver. 121.0.6167.85). This can occur if either
 1. you did not perform an installation before running the script (e.g. `npx puppeteer browsers install chrome`) or
 2. your cache path is incorrectly configured (which is: /root/.cache/puppeteer)

So I tried running the npx command mentioned there, and now I get a different message:

Error message: Failed to launch the browser process!
/root/.cache/puppeteer/chrome/linux-121.0.6167.85/chrome-linux64/chrome:
error while loading shared libraries: libnss3.so: cannot open shared object file: No such file or directory

Any ideas?

elalish commented 5 months ago

I don't think you need xvfb, and that's probably making things more complicated than they need to be. Puppeteer uses standard Chrome with access to your monitor and GPU. The trouble with the CI is it can only run headless Chrome (no monitor, no GPU), which is what xvfb is for. Try just running npm test instead.

emackey commented 5 months ago

Well, I'm on Docker for Windows, so there's no X-windows on my system other than xvfb. I can see xvfb in use in the GitHub action, so I was trying to replicate that in Docker.

elalish commented 5 months ago

Have you tried following our windows directions from model-viewer? Maybe we need to copy those over here. I believe that avoids Docker.

elalish commented 4 months ago

@emackey Ping - did the above directions help, or are you still blocked?