Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Linux release as AppImage #112

Closed
Tracked by #29
crayxt opened this issue Mar 28, 2016 · 35 comments
Closed
Tracked by #29

Linux release as AppImage #112

crayxt opened this issue Mar 28, 2016 · 35 comments

Comments

@crayxt
Copy link
Collaborator

crayxt commented Mar 28, 2016

Out of curiosity, I am thinking of creating an universal appimage for Engauge.
http://appimage.org/

Engauge builds just fine on Centos 6 with EPEL repos enabled, so it can serve as a base.

@crayxt
Copy link
Collaborator Author

crayxt commented Mar 28, 2016

It would be truly portable Engauge for Linux

@markummitchell
Copy link
Owner

Excellent. Let me know if you need anything.
On Mar 28, 2016 8:18 AM, "Baurzhan Muftakhidinov" notifications@github.com
wrote:

It would be truly portable Engauge for Linux


You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub
#112 (comment)

@crayxt
Copy link
Collaborator Author

crayxt commented Mar 28, 2016

I need some time, as usual ;)

@probonopd
Copy link

See https://github.com/probonopd/AppImages/blob/master/recipes/scribus/Recipe for an example script that builds an AppImage of a Qt-based app on a CentOS 6 build host. Probably the easiest is to clone the https://github.com/probonopd/AppImages repository and go from there. Let me know if you run into issues bundling Engauge as an AppImage.

@crayxt
Copy link
Collaborator Author

crayxt commented Mar 29, 2016

@probonopd Thanks for your help, so you suggest to build in Docker container? I have built first appimage and it seems to run successfully

@crayxt
Copy link
Collaborator Author

crayxt commented Mar 29, 2016

It runs on Centos 6 and 7 but gives xcb error on Fedora 23

@crayxt
Copy link
Collaborator Author

crayxt commented Mar 30, 2016

@probonopd have you seen such error

Engauge-Digitizer-7.1-x86_64.AppImage: symbol lookup error: /lib64/libxcb-dri3.so.0: undefined symbol: xcb_send_fd

Does it mean that we don't need to remove libxcb from appimage?

@crayxt
Copy link
Collaborator Author

crayxt commented Mar 30, 2016

I'll try later with that library included

@crayxt
Copy link
Collaborator Author

crayxt commented Mar 30, 2016

No, it didn't help

@probonopd
Copy link

Thanks for your help, so you suggest to build in Docker container?

@crayxt yes I recommend building inside a CentOS 6 Docker container.

symbol lookup error: /lib64/libxcb-dri3.so.0: undefined symbol: xcb_send_fd means that you should delete libxcb.so.1 and any other library that is mentioned in https://github.com/probonopd/AppImages/blob/master/excludelist

If you are still running into issues, please upload your AppImage somewhere so that I can have a look at how this can be fixed.

@crayxt
Copy link
Collaborator Author

crayxt commented Mar 31, 2016

@probonopd yes, deleting libraries mentioned in excludelist did help. Check this build
3-Engauge-Digitizer-7.1-x86_64.AppImage.zip

@markummitchell
Copy link
Owner

What do you think about a 32 bit version?

In Kubuntu 15.04 I get the following error, which is hopefully easy to fix:

kubuntu@kubuntu:/Downloads$ chmod +x 3-Engauge-Digitizer-7.1-x86_64.AppImage
kubuntu@kubuntu:
/Downloads$ ./3-Engauge-Digitizer-7.1-x86_64.AppImage
./3-Engauge-Digitizer-7.1-x86_64.AppImage: error while loading shared libraries: libssl.so.10: cannot open shared object file: No such file or directory
kubuntu@kubuntu:/Downloads$ uname -a
Linux kubuntu 3.19.0-15-generic #15-Ubuntu SMP Thu Apr 16 23:32:37 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
kubuntu@kubuntu:
/Downloads$ cat /proc/version
Linux version 3.19.0-15-generic (buildd@komainu) (gcc version 4.9.2 (Ubuntu 4.9.2-10ubuntu13) ) #15-Ubuntu SMP Thu Apr 16 23:32:37 UTC 2015
kubuntu@kubuntu:~/Downloads$

@crayxt
Copy link
Collaborator Author

crayxt commented Mar 31, 2016

@markummitchell I am still learning how to create appimages, once the process is ready, 32 bit image will be made as well.

@crayxt
Copy link
Collaborator Author

crayxt commented Mar 31, 2016

@markummitchell Could you please provide output of ldconfig -p | grep libssl ? Thanks

@probonopd
Copy link

On Ubuntu 16.04 I am getting

3-Engauge-Digitizer-7.1-x86_64.AppImage: error while loading shared libraries: libssl.so.10: cannot open shared object file: No such file or directory

So libssl.so.10 should be bundled inside the AppImage. It is required by libQt5Network.so.5 and libQt5Help.so.5. You could do something like

# Copy in the indirect dependencies
FILES=$(find . -type f -executable)

for FILE in $FILES ; do
    ldd "${FILE}" | grep "=>" | awk '{print $3}' | xargs -I '{}' cp -v '{}' usr/lib || true
done

inside the AppImage to copy in the dependency libraries; then be careful to delete the ones you can safely assume to be part of every recent desktop distribution afterwards. See https://github.com/probonopd/AppImages/blob/master/recipes/krita/Recipe#L236-L293

If you post your Recipe I can give more concrete feedback. Thanks!

@markummitchell
Copy link
Owner

kubuntu@kubuntu:~/Downloads$ ldconfig -p | grep libssl
libssl3.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libssl3.so
libssl.so.1.0.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libssl.so.1.0.0

When I add a symbolic link to an existing libssl library removes the libssl error, but then I see a complaint about libcrytpo. Adding a symbolic link to an existing libcrypto library then brings up...

kubuntu@kubuntu:~/Downloads$ ./3-Engauge-Digitizer-7.1-x86_64.AppImage
./3-Engauge-Digitizer-7.1-x86_64.AppImage: /lib/x86_64-linux-gnu/libssl.so.10: version libssl.so.10' not found (required by ./lib/libQt5Network.so.5) ./3-Engauge-Digitizer-7.1-x86_64.AppImage: /lib/x86_64-linux-gnu/libcrypto.so.10: versionOPENSSL_1.0.1_EC' not found (required by ./lib/libQt5Network.so.5)
./3-Engauge-Digitizer-7.1-x86_64.AppImage: /lib/x86_64-linux-gnu/libcrypto.so.10: version `libcrypto.so.10' not found (required by ./lib/libQt5Network.so.5)

@crayxt
Copy link
Collaborator Author

crayxt commented Apr 1, 2016

https://dl.dropboxusercontent.com/u/1147076/4-Engauge-Digitizer-7.1-x86_64.AppImage.zip

Try this one, with libraries included as per @probonopd code snippet. Although, now engauge does not use GTK theme somehow

@crayxt
Copy link
Collaborator Author

crayxt commented Apr 1, 2016

Will post when ready, thanks for offering help!

@probonopd
Copy link

@crayxt It is running on Ubuntu 16.04 now but indeed the theme is messed up somehow, I don't know why yet.

@crayxt
Copy link
Collaborator Author

crayxt commented Apr 1, 2016

@probonopd probably because of inclusions of libgtk?

@probonopd
Copy link

Indeed. Please try inside the AppDir:

# Workaround for:
# GTK theme is broken
rm usr/lib/libgtk* usr/lib/libgdk* usr/lib/libpango* || true

# Workaround for:
# On Ubuntu, "symbol lookup error: /usr/lib/x86_64-linux-gnu/gtk-2.0/modules/liboverlay-scrollbar.so: undefined symbol: g_settings_new"
rm usr/lib/libgio* || true

@crayxt
Copy link
Collaborator Author

crayxt commented Apr 2, 2016

Created PR with build files for @probonopd review. AppImageCommunity/pkg2appimage#42
Here is the that image file
Engauge-Digitizer-7.1-x86_64.AppImage.zip

@markummitchell
Copy link
Owner

Kubuntu Live CD is not too happy. I tried the last two versions and got 'cannot mix incompatible Qt library' errors. LD_LIBRARY_PATH was empty.

kubuntu_15.04_64bits_live_cd.txt

@crayxt
Copy link
Collaborator Author

crayxt commented Apr 2, 2016

Ok, @probonopd please help ;)

@probonopd
Copy link

Looks like some part of Qt gets mixed up between inside and outside the AppImage. No Qt libraries from the outside should be loaded. Need to move those into the AppImage.

Will do more investigation.

@probonopd
Copy link

@crayxt
Copy link
Collaborator Author

crayxt commented Apr 2, 2016

@probonopd Thanks a lot! I've tested on Kubuntu 15.04 64-bit and it failed. BTW, do you produce 32-bit builds?

@crayxt
Copy link
Collaborator Author

crayxt commented Apr 2, 2016

I meant, I've tested my own build on Kubuntu and it failed. Haven't tested yours yet

@probonopd
Copy link

Mine is running on kubuntu-15.04-desktop-amd64.iso now

@markummitchell
Copy link
Owner

The file from bintray.com works on Fedora 22, Ubuntu 15.10, and Kubuntu 14.04 for me also.

@crayxt
Copy link
Collaborator Author

crayxt commented Apr 3, 2016

@markummitchell So what do you think about appimage version of Engauge?
I tried to bundle help and samples also, but somehow it does not load help docs. Will look into it.

@markummitchell
Copy link
Owner

I really like the appimage approach for Engauge - the self-contained packaging is very portable with only trivial penalties in terms of extra memory and hard drive usage. I also appreciate the effort you have put into making it work. Hopefully building the appimage can be incorporated into the release process.

@crayxt
Copy link
Collaborator Author

crayxt commented Apr 3, 2016

@probonopd By the way, the license should be GPLv2 see https://bintray.com/probono/AppImages/Engauge/view

@probonopd
Copy link

Done

@crayxt
Copy link
Collaborator Author

crayxt commented Apr 14, 2016

Ok, I think this one is good enough. KDE issue up to @probonopd ;)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants