AppImage / type2-runtime

The runtime is the executable part of every AppImage. It mounts the payload via FUSE and executes the entrypoint.
Other
17 stars 13 forks source link

Find a better way to detect the build environment architecture #55

Open TheAssassin opened 1 month ago

TheAssassin commented 1 month ago

The architecture check introduced in https://github.com/AppImage/type2-runtime/pull/49 breaks the detection on OSes other than Alpine because of them using busybox. On Ubuntu 22.04, file returns the following:

> file -L /bin/bash 
/bin/bash: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=7a6408ba82a2d86dd98f1f75ac8edcb695f6fd60, for GNU/Linux 3.2.0, stripped

The output does not match x86_64, the string probed by the bash script. Edit: to clarify: the issue here is that it probes against the loader path, not the architecture reported by file.

Please note that this is not an imminent problem since I need to use the Alpine containerized build environment anyway due to the very simplistic build scripts. However, the chosen solution is not portable in any way.

By the way, x86-64 would be working on both systems. However, I'd rather use a dedicated tool like uname. Unfortunately, busybox's implementation doesn't support -p properly in containers, it returns unknown there.

probonopd commented 1 month ago

So this can be closed now?

TheAssassin commented 1 month ago

I'd still prefer to use an alternative solution. Let's please keep this open. It's really low priority, but maybe I'll come across a nicer solution than using file on the shell.

probonopd commented 1 month ago

Use the value from the env matrix in the GitHub Actions yml file?

TheAssassin commented 1 month ago

That's one option. But as said, this has got no priority at the moment.