libfuse.so: error adding symbols: File in wrong format
-
@julien-f hi there,
I'm sorry for my delay but was a bit overwhelmed with other tasks.
So running only
npm i
now gives me the following output:# git checkout . Updated 13 paths from the index # git branch * fix_fuse_dependancy_arm master # git pull --ff-only remote: Enumerating objects: 79, done. remote: Counting objects: 100% (73/73), done. remote: Compressing objects: 100% (41/41), done. remote: Total 79 (delta 36), reused 61 (delta 30), pack-reused 6 Unpacking objects: 100% (79/79), 87.43 KiB | 3.01 MiB/s, done. From https://github.com/vatesfr/xen-orchestra f1ab62524..3d3b63a59 master -> origin/master + 2378c0882...2d9a44c6e tasks -> origin/tasks (forced update) Already up to date. # npm i npm WARN deprecated modular-cssify@12.1.3: Renamed to @modular-css/browserify npm WARN deprecated modular-css-core@12.1.3: Renamed to @modular-css/processor npm WARN deprecated chokidar@2.1.8: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies npm WARN deprecated core-js@2.6.12: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. added 267 packages, removed 204 packages, changed 54 packages, and audited 3280 packages in 37s 209 packages are looking for funding run `npm fund` for details 70 vulnerabilities (5 low, 13 moderate, 49 high, 3 critical) To address issues that do not require attention, run: npm audit fix To address all issues possible (including breaking changes), run: npm audit fix --force Some issues need review, and may require choosing a different dependency. Run `npm audit` for details. #
This seems to throw a lot of warnings but no fatal errors, do you confirm? Also it's not suggesting to use the
--legacy-peer-deps
flag.After using these commands and rebooting the host, XO is stopped.
Isnpm i
the same asyarn; yarn build
? Thank you!edit: when I get an hour I'll redo from scratch to see how that goes.
-
Hi, as I'm facing the same issue for the arm64 docker, I've build it in qemu with your
fix_fuse_dependancy_arm
branch and it works for me. -
@maverick
npm i
replaceyarn
, notyarn build
. -
@julien-f so i should issue
yarn build
after doingnpm i
gotcha. Give me a couple minutes will update you in an instant. -
after building when I open XO on the browser I only get an error saying
Cannot GET /
I'll have to redo from source. Give me a couple of days please I've been a bit overwhelmed these last days
-
@maverick No hurries, we have a lot on our plates too.
-
-
@maverick
I've use something like :
npm install && npm run build
and in doubt I've rebuild with:
npm install && yarn build
both work, no surprises here.
Note that the
npm install
step onarm64
takes ages in comparison to thex86_64
arch. It was already slow with yarn, but npm is a pain. I've try to build it on Github infra to release a multiarch docker but it reaches the max execution time -
I am also affected by this error message and now, according to the suggestions posted here, I had been able to build the version. However, now when I want to start the xo-server, I get the following message:
# /usr/local/bin/node ./dist/cli.mjs node:internal/modules/cjs/loader:985 const err = new Error(message); ^ Error: Cannot find module 'strnum' Require stack: - /opt/xen-orchestra/packages/xo-server/node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js - /opt/xen-orchestra/packages/xo-server/node_modules/fast-xml-parser/src/xmlparser/XMLParser.js - /opt/xen-orchestra/packages/xo-server/node_modules/fast-xml-parser/src/fxp.js at Function.Module._resolveFilename (node:internal/modules/cjs/loader:985:15) at Function.Module._load (node:internal/modules/cjs/loader:833:27) at Module.require (node:internal/modules/cjs/loader:1057:19) at require (node:internal/modules/cjs/helpers:103:18) at Object.<anonymous> (/opt/xen-orchestra/packages/xo-server/node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js:7:18) at Module._compile (node:internal/modules/cjs/loader:1155:14) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1209:10) at Module.load (node:internal/modules/cjs/loader:1033:32) at Function.Module._load (node:internal/modules/cjs/loader:868:12) at Module.require (node:internal/modules/cjs/loader:1057:19) at require (node:internal/modules/cjs/helpers:103:18) at Object.<anonymous> (/opt/xen-orchestra/packages/xo-server/node_modules/fast-xml-parser/src/xmlparser/XMLParser.js:2:26) at Module._compile (node:internal/modules/cjs/loader:1155:14) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1209:10) at Module.load (node:internal/modules/cjs/loader:1033:32) at Function.Module._load (node:internal/modules/cjs/loader:868:12) { code: 'MODULE_NOT_FOUND', requireStack: [ '/opt/xen-orchestra/packages/xo-server/node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js', '/opt/xen-orchestra/packages/xo-server/node_modules/fast-xml-parser/src/xmlparser/XMLParser.js', '/opt/xen-orchestra/packages/xo-server/node_modules/fast-xml-parser/src/fxp.js' ] }
What can I do here to get the interface working again?
TIA
-
@tamas said in libfuse.so: error adding symbols: File in wrong format:
fast-xml-parser
fast-xml-parser
is an older deps (last change is at least a few months old). Do you know which is the last working version on your system ? -
@florent said in libfuse.so: error adding symbols: File in wrong format:
@tamas said in libfuse.so: error adding symbols: File in wrong format:
fast-xml-parser
fast-xml-parser
is an older deps (last change is at least a few months old). Do you know which is the last working version on your system ?Unglücklicherweise weiß ich das nicht. Die funktionierende Version hatte ich vor circa 3 Monaten installiert.
-
@florent said in libfuse.so: error adding symbols: File in wrong format:
@maverick using system li b will add a tight dependency, it will be harder to make it work on exotic systems
I pushed a new patch on the same branch, can you tell me if it solves the problem ?
Hi @florent,
I know this is an old topic, but I was looking to build XO on ARM64 recently and I ran across the issue that the node fuse-native package doesn't support arm64 and appears to be abandoned, and your branch with making it an optional dependancy. Thanks!
However, digging a bit more, I found https://github.com/sagemathinc/fuse-native which looks to be a very recent derivation of the published fuse-native module that has been adjusted to use system libraries on the build host rather than binaries bundled into the module.
Reworking this fix to use this alternative might give working fuse support on ARM64.
What do you think? I guess in terms of the non-ARM64 builds, it is a risk/new dependancy to use the system's fuse libraries but maybe a better approach long term as the libfuse.so in fuse-friends is increasingly old and lacking in updates.
Mark
-
Sounds like a good idea However, I don't think our current XOAs are shipped with fuse libs directly, so that might break for our XOA users
At least we can take a look to test it!
-
@olivierlambert - thanks for getting back on this.
My limited testing so far was to substitute the alternate fuse-native module. ( There's probably a better way to do this but I didn't really want to fork the repo for some quick tests! )
- Make a build folder, then git clone https://github.com/sagemathinc/fuse-native
- Edit the sagemathinc package.json so that the name and version match the fuse-friends version (to avoid having to adjust any of the xen-orchestra files directly)
- git clone https://github.com/vatesfr/xen-orchestra.git
- copy the modified fuse-native folder into the xen-orchestra folder
- Run 'yarn link' in xen-orchestra/fuse-native folder to tell yarn to use this local module instead of the fuse-friends version
- Run 'yarn link fuse-native' in the xen-orchestra folder to have the xen-orchestra build use the local version
- Run yarn and yarn build as per the build-from-source page
I got a version of xo-server built from current master, and it started up. I haven't done anything with it yet beyond the initial smoke-test.
Wrinkles - I needed to add pkg-config to the debian 12 build and host VM as sagemathinc's fuse-native module uses that to locate the system libfuse libraries. So if you're looking at the XOA side, then pkg-config would be a new build dependancy in addition to the host's libfuse libraries.
Sincerely,
Mark
xo-server 5.120.2 / xo-web 5.122.2 / commit 3baa378
-
It's not a problem per se to add a new package in XOA, it's just that we can't do that for all existing/running XOAs for our existing customers. So we can't afford to break it. What we usually do, is to regen a new XOA from time to time (a fresh one is coming in September) on Debian 12.
I'll check to see if we can add a package for fuse, but this won't solve it for our existing users
-
@Mark-C I can't test easily for now, but I think there may be an easier path after reviewing your solution
fuse-native use fuse-shared-library 1.0.2
from version 1.1 , fuse-shared-library should support ARM , maybe it is possible to bump it in the dependencies of fuse-native ?This way , it should still work without libfuse on the system, but also build it on arm
-
@florent said in libfuse.so: error adding symbols: File in wrong format:
@Mark-C I can't test easily for now, but I think there may be an easier path after reviewing your solution
fuse-native use fuse-shared-library 1.0.2
from version 1.1 , fuse-shared-library should support ARM , maybe it is possible to bump it in the dependencies of fuse-native ?This way , it should still work without libfuse on the system, but also build it on arm
Hi @florent ,
I am building on aarch64 / ARM64 rather than just arm.
I did look at fuse-shared-library-linux-arm library - the embedded libfuse.so in that is a 32 bit version rather than 64 bit from what I could see:
root@xo-aarch64:/home/xo/xoi/xo-builds/xen-orchestra-202308250931/node_modules/fuse-shared-library-linux-arm/libfuse/lib# file libfuse.so
libfuse.so: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, BuildID[sha1]=6ed4a4b321ab69af9aeef3db322ba67396f4d52b, strippedThat's in contrast to the system library:
/usr/lib/aarch64-linux-gnu/libfuse.so: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[sha1]=29ce785f4418d869ead1b31501c4a82446de0cfe, stripped
@olivierlambert - I do appreciate the support issue for existing platforms and users. This is very much me looking at using a turing pi 2 as a low power setup in my home lab and I appreciate it is a niche case.
The more supportable fix would be to add ARM64 support into the fuse-friends version of fuse-native, but it seems that node's current policies don't allow adoption of orphaned/abandoned modules to avoid supply-chain attacks. [ https://docs.npmjs.com/policies/disputes - When not to use this process ].
-
-
Looking for a long term fix. Thanks.
-
Hi @maverick,
I've not done much with this since my 'bodge' to build an ARM64 version back in August.
The version I have running on a Raspberry Pi CM4 from back then does appear to be functioning as expected for everything I have tried. ( Basic start / stop / backup / restore / create / destroy for a small XCP-NG cluster running on x64. ). That satisfies my use case to have XO from the sources running on something that isn't the cluster it is managing.
I do understand the support issues @olivierlambert flagged up in August, and I don't have any good solutions to resolve those for existing deployments of XOA doing upgrades rather than fresh installs. That's something the real maintainers will have to consider around the (minor) benefit of building for ARM64 vs any related support overheads of existing XOA upgrade issues.
Sincerely,
Mark
-
@Mark-C Hi there
I had this fuse fix for arm working for a long while.
Recently due to another issue I was pushed towards updating, only to get a broken XO and issue abandoned. Even when shown that I was on this branch specifically,fix_fuse_dependancy_arm
.Also tried your suggestion as a fix, but not quite working.
# yarn yarn install v1.22.19 [1/5] Validating package.json... [2/5] Resolving packages... [3/5] Fetching packages... [4/5] Linking dependencies... warning "workspace-aggregator-7976f8d6-c4ac-4618-ae07-8b737c9d1cc1 > @xen-orchestra/fs > @aws-sdk/lib-storage@3.171.0" has unmet peer dependency "@aws-sdk/abort-controller@^3.0.0". warning Workspaces can only be enabled in private projects. [5/5] Building fresh packages... [1/12] ⠐ husky [6/12] ⠐ argon2 [3/12] ⠐ highlight.js [4/12] ⠐ esbuild warning Error running install script for optional dependency: "/opt/xen-orchestra/node_modules/fuse-native: Command failed. Exit code: 1 Command: node-gyp-build Arguments: Directory: /opt/xen-orchestra/node_modules/fuse-native Output: node:events:495 throw er; // Unhandled 'error' event ^ Error: spawn node-gyp ENOENT at ChildProcess._handle.onexit (node:internal/child_process:284:19) at onErrorNT (node:internal/child_process:477:16) at process.processTicksAndRejections (node:internal/process/task_queues:82:21) Emitted 'error' event on ChildProcess instance at: at ChildProcess._handle.onexit (node:internal/child_process:290:12) at onErrorNT (node:internal/child_process:477:16) at process.processTicksAndRejections (node:internal/process/task_queues:82:21) { errno: -2, code: 'ENOENT', syscall: 'spawn node-gyp', path: 'node-gyp', spawnargs: [ 'rebuild' ] [10/12] ⠠ core-js [6/12] ⠠ argon2 [8/12] ⠠ vuepress [7/12] ⠠ leveldown error /opt/xen-orchestra/node_modules/leveldown: Command failed. Exit code: 1 Command: node-gyp-build Arguments: Directory: /opt/xen-orchestra/node_modules/leveldown Output: node:events:495 throw er; // Unhandled 'error' event ^ Error: spawn node-gyp ENOENT at ChildProcess._handle.onexit (node:internal/child_process:284:19) at onErrorNT (node:internal/child_process:477:16) at process.processTicksAndRejections (node:internal/process/task_queues:82:21) Emitted 'error' event on ChildProcess instance at: at ChildProcess._handle.onexit (node:internal/child_process:290:12) at onErrorNT (node:internal/child_process:477:16) at process.processTicksAndRejections (node:internal/process/task_queues:82:21) { errno: -2, code: 'ENOENT', syscall: 'spawn node-gyp', path: 'node-gyp', spawnargs: [ 'rebuild' ]
Thank you for your reply either way. Cheers