AppImage / AppImageKit

Package desktop applications as AppImages that run on common Linux-based operating systems, such as RHEL, CentOS, openSUSE, SLED, Ubuntu, Fedora, debian and derivatives. Join #AppImage on irc.libera.chat
http://appimage.org
Other
8.76k stars 563 forks source link

Error compiling AppimageKit for Arch Linux #854

Open DanielPrjct opened 6 years ago

DanielPrjct commented 6 years ago

Hi!

I'm trying to generate a PKGBUILD to compile AppimageKit on Arch Linux via makepkg script, without installing appimaged daemon (thus, users must run appimage files from file manager or console).

I've found mksquashfs errors, that aborts compilation:

Scanning dependencies of target mksquashfs [ 11%] Creating directories for 'mksquashfs' [ 12%] Performing download step (git clone) for 'mksquashfs' Cloning into 'mksquashfs'... Note: checking out '5be5d61'.

You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may do so (now or later) by using -b with the checkout command again. Example:

git checkout -b

HEAD is now at 5be5d61 pseudo.c: Fix pseudo format error message [ 14%] Performing patch step for 'mksquashfs' patching file squashfs-tools/mksquashfs.c [ 15%] No update step for 'mksquashfs' [ 16%] Performing configure step for 'mksquashfs' [ 18%] Performing build step for 'mksquashfs' mksquashfs.c: In function ‘create_inode’: mksquashfs.c:996:24: error: called object ‘major’ is not a function or function pointer unsigned int major = major(buf->st_rdev); ^~~~~ mksquashfs.c:996:16: note: declared here unsigned int major = major(buf->st_rdev); ^~~~~ mksquashfs.c:997:24: error: called object ‘minor’ is not a function or function pointer unsigned int minor = minor(buf->st_rdev); ^~~~~ mksquashfs.c:997:16: note: declared here unsigned int minor = minor(buf->st_rdev); ^~~~~ mksquashfs.c:1020:24: error: called object ‘major’ is not a function or function pointer unsigned int major = major(buf->st_rdev); ^~~~~ mksquashfs.c:1020:16: note: declared here unsigned int major = major(buf->st_rdev); ^~~~~ mksquashfs.c:1021:24: error: called object ‘minor’ is not a function or function pointer unsigned int minor = minor(buf->st_rdev); ^~~~~ mksquashfs.c:1021:16: note: declared here unsigned int minor = minor(buf->st_rdev); ^~~~~ mksquashfs.c: In function ‘dir_scan2’: mksquashfs.c:3559:17: warning: implicit declaration of function ‘makedev’ [-Wimplicit-function-declaration] buf.st_rdev = makedev(pseudo_ent->dev->major, ^~~ make[3]: [: mksquashfs.o] Error 1 make[2]: [CMakeFiles/mksquashfs.dir/build.make:115: mksquashfs-prefix/src/mksquashfs-stamp/mksquashfs-build] Error 2 make[1]: [CMakeFiles/Makefile2:937: CMakeFiles/mksquashfs.dir/all] Error 2 make: [Makefile:163: all] Error 2 ==> ERROR: A failure occurred in build(). Aborting...

What can I do to solve this?

probonopd commented 6 years ago

Why do you want to compile it yourself rather than using binaries we provide?

Building AppImageKIt on a rolling release distribution like Arch is a bad idea, since you will be pulling in dependencies that are newer than those coming with the oldest still-supported operating systems. Hence we recommend to build on the oldest still-supported distributions, e.g., we are using CentOS 6. This ensures best compatibility with various target systems out there.

Compiling AppImageKit on Arch Linux is not something we support for this reason.

Reference: https://docs.appimage.org/

TheAssassin commented 6 years ago

The error is in external dependencies being compiled with a compiler enforcing C98 or newer standards. Not sure if we can fix that, but it's likely to cause issue on newer, stable distributions soon, too. Therefore reopening with "low priority" and "PRs welcome".

Perhaps you could add some flags to our CFLAGS we apply to all dependencies on compilation. PRs welcome.