Fotoxx AppImage


#1

I managed to get my first AppImage running, somewhat. I have several issues, the main one being the topic title: finding the right libraries to package. I built on Ubuntu 16.04 and my target OSs are this one and 16.10 and 17.04 and related ones like Mint. I added all the libraries from 16.04 needed to make the AppImage load on 16.10 and 17.04, and it ran somewhat. Some operations crashed. I then added the first two library functions in the backtrace to the pile in AppDir/usr/lib, and the crashing went away. I suspect there are more of these lurking. How to find them?

The AppImage now runs on Ubuntu 17.04, but there is a worrysome diagnostic coming out:
Gtk-WARNING **: GModule … initialization check failed: GLib version too old (micro mismatch)
Is this fixable by including more libraries from 16.04? How do I find them? (all libraries directly called and any more called by these libraries).

If enough libraries are included in the AppImage package, does this guarantee compatibility with all kernel APIs in all the targeted systems?

The ubuntu launcher icon is showing as “[ ? ]”. I am executing the AppImage directly. Where else do I need to put the icon other than in AppDir and its name in the desktop file?

The AppImage will load on Fedora25 but will not run. Apparently this is hopeless because of Wayland instead of X11. True?

GRIPE: I wasted a lot of time being misled by obsolete documentation.

FWIW the application here is Fotoxx, a semi-popular photo editor and collection manager.
(see http://www.kornelix.net )


#2

Hi @kornelix, welcome to AppImage!

I built on Ubuntu 16.04 and my target OSs are this one and 16.10 and 17.04 and related ones like Mint.

If you can, I would strongly recommend that you build on an older distribution like 14.04 or earlier. The resulting AppImage will run on more than just the most recent systems this way.

I added all the libraries from 16.04 needed to make the AppImage load on
16.10 and 17.04, and it ran somewhat. Some operations crashed.

The trick is not to bundle all libraries. Please do not bundle the libraries mentioned in https://github.com/probonopd/AppImages/blob/master/excludelist.

To make things easier, please have a look at https://github.com/probonopd/AppImages/blob/master/functions.sh, especially its delete_blacklisted function. There are many examples in https://github.com/probonopd/AppImages/tree/master/recipes.

If enough libraries are included in the AppImage package, does this
guarantee compatibility with all kernel APIs in all the targeted
systems?

The Kernel ABI is stable. It’s more a question of whether you have bundled “all dependencies that cannot be reasonably expected to be part of each target system in a recent enough version”, which is a bit of experimentation. But rest assured, we have managed to find the ideal combinations for hundreds of AppImages so far.

But hey, I see that you are providing a Wheezy deb already. So it might be the easiest to convert this deb to an AppImage using a .yml file, which means that you can profit from the fact that I have already written the conversion script that does most of the hard work:

https://github.com/probonopd/AppImages/blob/master/recipes/meta/Fotoxx.yml

You can use this to generate an AppImage on any deb-based system like this:

wget "https://github.com/probonopd/AppImages/blob/master/recipes/meta/Recipe"
bash -ex Recipe Fotoxx

Let me know how it goes for you.

Do you have a more recent version of the app available for wheezy or Ubuntu 14.04 or earlier?

GRIPE: I wasted a lot of time being misled by obsolete documentation.

Which obsolete documentation did you come across? Please point to specific URLs.


#3

Thanks for the help.

Please indulge my ignorance. I know C/C++, GTK, some other libraries,
and enough Debian to make a package. I am no Linux expert, so some of
what I read in probono is mysterious.


#4

So let me ask, can you make a deb of the latest version of your software that runs on Ubuntu 16.04 or Debian oldstable or earlier?


#5

Yes, I can. This can be found here [4].

After removing the blacklisted libraries as you suggested, I now have an
AppImage that seems to run OK on 3 generations of Ubuntu: 16.04, 16.10,
and 17.04 (beta). I built the AppDir by hand.

Fedora 25 crashes, apparently because of Wayland instead of X11.

regards
Mike


#6

Unfortunately your “[4]” link does not show up here, can you please post it again?

I have successfully ran many AppImages on Fedora 25 under Wayland, so I think we will find a solution for your AppImage, too. Do you also have a link for it?

Thanks.


#7

When I replied to your message, my e-mail provider gave me a failure
message, but the e-mail seems to have been sent (twice).
This included two large attachments, a debian package (5 MB) and my
AppDir in a tar archive (20 MB).
If you did not receive these, let me know and I will put them on my
server and send you the links.

regards
Mike


#8

The e-mail with the large attachments was rejected by your server.

Here are links to these files on my server:
http://kornelix.net/downloads/AppDir.tar.gz
http://kornelix.net/downloads/packages-16.04/fotoxx-17.01.1-x86_64.deb
[5]

regards
Mike


#9

Can you please provide this for debian oldstable, Ubuntu 14.04 or earlier?


#10

I will have to install Ubuntu 14.04 and make a package for you. I will
try to get this done tomorrow.

The current source code will not build on 14.04 due to GTK and other API
changes, but I have old code that should work.

regards
Mike


#11

Here is the newest release of Fotoxx that will run on Ubuntu 14.04

  • debian package attached
  • next mail will have source tarball with Makefile

#12

Here is the source tarball with Makefile


#13

Please post the link to the deb for Ubuntu 14.04, thanks.


#14

Here it is:
http://www.kornelix.net/downloads/fotoxx-16.07.1-x86_64.deb [4]


#15

Is there really a dependency on GNOME Maps? Or can that be optional? If so, please change the Depends: in the deb.

This is the current fotoxx.yml:

app: Fotoxx
union: true

ingredients:
  packages:
    - fotoxx
    - libimage-exiftool-perl
  pretend:
    - xdg-utils 1.1.0~rc1+git20111210-6+deb7u3
    - binutils 2.22-8+deb7u2
  dist: trusty
  sources: 
    - deb http://archive.ubuntu.com/ubuntu/ trusty main universe
  script:
    - wget -c "http://www.kornelix.net/downloads/fotoxx-16.07.1-x86_64.deb"

script:
  - cp usr/share/fotoxx/icons/fotoxx.png .
  - sed -i -e 's|^Icon=.*|Icon=fotoxx|g' fotoxx.desktop

#16

This was an error. I fixed the .deb package. The link is unchanged.
thanks
Mike


#17

Can it be that your deb misses dependencies on

  • libimage-exiftool-perl
  • libraw-bin
  • libchamplain-gtk-0.12-0

See the AppImage here:
https://bintray.com/probono/AppImages/Fotoxx#files

See the file that controlled the conversion here:

https://github.com/probonopd/AppImages/blob/master/recipes/meta/Fotoxx.yml


#18

libimage-exiftool-perl was already declared
the libraw dependency is libraw9
the last one is libchamplain-gtk-0.12-0 ("-0" appended)
The debian package has been fixed.

thanks and regards
Mike


#19

Thanks Mike. Does the AppImage work for you?


#20

I tried it successfully on Ubuntu 14.04 and 16.04
It failed on 16.10 because it wanted and older libpng than the one
installed.
I moved the older library from 16.04 to 16.10, then it loaded OK.
I have not tried it further (U 17.04 and Fedora 25)

I take it that the old libpng needs to be added to AppDir/usr/lib

My exercise for tomorrow is to go back through the docs to see if I
can understand what you did and repeat this for a later release of
Fotoxx.
I still have no idea how to “execute” a yml file.

regards