ChurchApps / FreeShow

FreeShow is a free and open-source, user-friendly presenter software.
https://freeshow.app
GNU General Public License v3.0
519 stars 80 forks source link

Freeshow 1.2.0 snap fails to run #680

Closed eeickmeyer closed 2 months ago

eeickmeyer commented 2 months ago

Got a massive error. This is in the candidate version, which has not been promoted to stable for this reason:

A JavaScript error occurred in the main process
Uncaught Exception:
Error: libndi.so.5: cannot open shared object file: No such file or directory
    at process.func [as dlopen] (node:electron/js2c/asar_bundle:5:1810)
    at Module._extensions..node (node:internal/modules/cjs/loader:1205:18)
    at Object.func [as .node] (node:electron/js2c/asar_bundle:5:2037)
    at Module.load (node:internal/modules/cjs/loader:988:32)
    at Module._load (node:internal/modules/cjs/loader:829:12)
    at c._load (node:electron/js2c/asar_bundle:5:13339)
    at Module.require (node:internal/modules/cjs/loader:1012:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at bindings (/snap/freeshow/41/resources/app.asar/node_modules/bindings/bindings.js:112:48)
    at Object.<anonymous> (/snap/freeshow/41/resources/app.asar/node_modules/grandiose/index.js:18:34)
Gtk-Message: 10:41:57.864: Failed to load module "colorreload-gtk-module"
Gtk-Message: 10:41:57.864: Failed to load module "window-decorations-gtk-module"
libva error: vaGetDriverNames() failed with unknown libva error
vassbo commented 2 months ago

Thanks. Maybe related to this: https://github.com/ChurchApps/FreeShow/issues/562 Is it possible to build on a x64 machine instead of arm64 for now? And does that fix the problem?

eeickmeyer commented 2 months ago

I'm building on amd64, not arm64.

vassbo commented 2 months ago

Just tried building the AppImage on amd64 and that works fine, but I know the grandiose bindings has had simular issues in the past.

Do you see anything noticeable in these files?: https://github.com/vassbo/grandiose/blob/fa2ac4bf29ada2531ff796ea556fd477f2c53a68/binding.gyp#L38 https://github.com/vassbo/grandiose/blob/fa2ac4bf29ada2531ff796ea556fd477f2c53a68/ndi.js#L107

vassbo commented 2 months ago

Does it work if you replace the vassbo/grandiose#fa2ac4b package with hopejr/grandiose#50ffdfb?

eeickmeyer commented 2 months ago

Does it work if you replace the vassbo/grandiose#fa2ac4b package with hopejr/grandiose#50ffdfb?

This actually created a different error:

$ freeshow
g_module_open() failed for /snap/freeshow/45/gnome-platform/usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-svg.so: librsvg-2.so.2: cannot open shared object file: No such file or directory
A JavaScript error occurred in the main process
Uncaught Exception:
Error: Could not locate the bindings file. Tried:
 → /snap/freeshow/45/resources/app.asar/node_modules/grandiose/build/grandiose.node
 → /snap/freeshow/45/resources/app.asar/node_modules/grandiose/build/Debug/grandiose.node
 → /snap/freeshow/45/resources/app.asar/node_modules/grandiose/build/Release/grandiose.node
 → /snap/freeshow/45/resources/app.asar/node_modules/grandiose/out/Debug/grandiose.node
 → /snap/freeshow/45/resources/app.asar/node_modules/grandiose/Debug/grandiose.node
 → /snap/freeshow/45/resources/app.asar/node_modules/grandiose/out/Release/grandiose.node
 → /snap/freeshow/45/resources/app.asar/node_modules/grandiose/Release/grandiose.node
 → /snap/freeshow/45/resources/app.asar/node_modules/grandiose/build/default/grandiose.node
 → /snap/freeshow/45/resources/app.asar/node_modules/grandiose/compiled/16.16.0/linux/x64/grandiose.node
 → /snap/freeshow/45/resources/app.asar/node_modules/grandiose/addon-build/release/install-root/grandiose.node
 → /snap/freeshow/45/resources/app.asar/node_modules/grandiose/addon-build/debug/install-root/grandiose.node
 → /snap/freeshow/45/resources/app.asar/node_modules/grandiose/addon-build/default/install-root/grandiose.node
 → /snap/freeshow/45/resources/app.asar/node_modules/grandiose/lib/binding/node-v109-linux-x64/grandiose.node
    at bindings (/snap/freeshow/45/resources/app.asar/node_modules/bindings/bindings.js:126:9)
    at Object.<anonymous> (/snap/freeshow/45/resources/app.asar/node_modules/grandiose/index.js:19:24)
    at Module._compile (node:internal/modules/cjs/loader:1120:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1175:10)
    at Module.load (node:internal/modules/cjs/loader:988:32)
    at Module._load (node:internal/modules/cjs/loader:829:12)
    at c._load (node:electron/js2c/asar_bundle:5:13339)
    at Module.require (node:internal/modules/cjs/loader:1012:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at Object.<anonymous> (/snap/freeshow/45/resources/app.asar/build/electron/ndi/NdiSender.js:2:572)
Gtk-Message: 08:35:48.553: Failed to load module "colorreload-gtk-module"
Gtk-Message: 08:35:48.553: Failed to load module "window-decorations-gtk-module"
libva error: vaGetDriverNames() failed with unknown libva error

So, progress, but I'm not sure the right kind.

vassbo commented 2 months ago

The grandiose package itself have not changed since the last successful build, so that can't be the issue.

The only thing I remember changing, was this in package.json, but that should not affect the snap build (and it was before 1.1.9): https://github.com/ChurchApps/FreeShow/commit/6085de9e5c4d6745bb3bcdbe2fa672f3136d9e72#diff-7ae45ad102eab3b6d7e7896acd08c427a9b25b346470d7bc6507b6481575d519R112

"target": [
    "AppImage",
    "deb"
],

But you can try reverting the package.json, just to check if it makes a difference at all.

It also has this asarUnpack, but I don't think it's related:

"asarUnpack": [
    "node_modules/grandiose/**"
],
eeickmeyer commented 2 months ago

So good news! I basically re-did my build environment and got it working! It now runs with no issues! Feel free to test by installing via sudo snap install --channel candidate freeshow and it should work.

TL;DR, the Snapcraft folks pushed an update to snapcraft that caused it to malfunction on KDE Plasma, so I had to switch from building under Ubuntu Studio to Edubuntu (on GNOME), and now it works. I'm working with the Snapcraft folks now to solve that problem as it should be DE-agnostic.

vassbo commented 2 months ago

Awesome! Good to hear that. Thanks again for your help with snapcraft. :)