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

AppImage #212

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

AppImage #212

wants to merge 1 commit into from

Conversation

probonopd
Copy link

This PR, when merged, will compile this application on Travis CI upon each git push, and upload an AppImage to your GitHub Releases page.

Providing an AppImage would have, among others, these advantages:

  • Applications packaged as an AppImage can run on many distributions (including Ubuntu, Fedora, openSUSE, CentOS, elementaryOS, Linux Mint, and others)
  • One app = one file = super simple for users: just download one AppImage file, make it executable, and run
  • No unpacking or installation necessary
  • No root needed
  • No system libraries changed
  • Works out of the box, no installation of runtimes needed
  • Optional desktop integration with appimaged
  • Optional binary delta updates, e.g., for continuous builds (only download the binary diff) using AppImageUpdate
  • Can optionally GPG2-sign your AppImages (inside the file)
  • Works on Live ISOs
  • Can use the same AppImages when dual-booting multiple distributions
  • Can be listed in the AppImageHub central directory of available AppImages
  • Can double as a self-extracting compressed archive with the --appimage-extract parameter
  • No repositories needed. Suitable/optimized for air-gapped (offline) machines
  • Decentralized

Here is an overview of projects that are already distributing upstream-provided, official AppImages.

PLEASE NOTE: For this to work, you need to set up GITHUB_TOKEN in Travis CI for this to work; please see https://github.com/probonopd/uploadtool.

If you have questions, AppImage developers are on #AppImage on irc.freenode.net.

@probonopd
Copy link
Author

An AppImage is available for testing at https://github.com/probonopd/sk1-wx/releases/tag/continuous.
Some fine-tuning is expected to still be needed, so please test it carefully.

Here the AppImage is running on Xubuntu 18.04:

- cd ..
- wget -c -nv "https://github.com/AppImage/AppImageKit/releases/download/continuous/AppRun-x86_64" -O ./appdir/AppRun ; chmod +x ./appdir/AppRun
- cp appdir/usr/lib/sk1-wx-*/sk1/share/icons/generic/sk1-icon-64x64.png appdir/sk1.png
# FIXME: Icon naming in appdir/usr/share probably still broken
Copy link

@ghost ghost Aug 4, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

# FIXME: Icon naming in appdir/usr/share probably still broken

Think, this would be fixed before stable release of sK1 v2.0 (in one-two months)

Copy link

@ghost ghost left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some fine-tuning is expected to still be needed, so please test it carefully.

So, could I merge it just now?

Closes #86

FTR, @probonopd, how to disable Travis CI e-mail notifications in .travis.yml?

@probonopd
Copy link
Author

Please try my example AppImage; if it works for you it can imho be merged. I don’t know about Travis CI mail notifications

@ghost
Copy link

ghost commented Aug 4, 2019

Please try my example AppImage; if it works for you it can imho be merged.

OK, will test it in next 48 hours 😉

I don’t know about Travis CI mail notifications

BTW, I just found how to disable it:

  1. custom disable:
...
notifications:
  email:
    on_success: never
    on_failure: always
...
  1. fully disable (not sure is it still work or not):
...
notifications:
  email: false
...

@sk1project
Copy link
Owner

@probonopd great job! Hope this will resolve gtk3 related issue for latest distros versions. Gnome devs break UI of complex apps supporting tablet features.

We cannot merging this PR into sk1-wx:master because this destroys package build for Linux and Windows (bbox.py is removed). But I will refactor provided .travis.yml as a special routing inside build-box (box.py) to build AppImage in xenial or trusty docker image.

@probonopd
Copy link
Author

@probonopd great job! Hope this will resolve gtk3 related issue for latest distros versions. Gnome devs break UI of complex apps supporting tablet features.

Is there a bug report in the Gtk 3 project about this?

@probonopd
Copy link
Author

We cannot merging this PR into sk1-wx:master because this destroys package build for Linux and Windows (bbox.py is removed). But I will refactor provided .travis.yml as a special routing inside build-box (box.py) to build AppImage in xenial or trusty docker image.

No Docker needed. Just make Travis CI use a separate builder for the AppImage.

@sk1project
Copy link
Owner

@probonopd Docker is a most preferable because building environment will be constant any way. Even we change base distro image. Also as you see in yml we build packages from a fork updating to upstream. In such case .travis.yml will have no effect. Therefore changes in bbox.py is better.

@probonopd
Copy link
Author

If you can make it work, good. For me it was just more straightforward without Docker.

@sk1project
Copy link
Owner

sk1project commented Aug 6, 2019

@probonopd I have checked a build and found missing following deps:

zlib freetype pixman cairo lcms2 gettext pcre libffi glib fontconfig fribidi 
libdatrie libthai graphite2 harfbuzz pangocairo liblqr xz tiff jbigkit jpeg openjpeg 
libwebp ImageMagick

Is this an issue or AppImage somehow resolves the problem?

@sk1project sk1project self-requested a review August 6, 2019 12:55
@probonopd
Copy link
Author

probonopd commented Aug 6, 2019

Not sure what exactly you mean by this but the AppImage is currently shipping private copies of the following libraries inside the AppImage:

(...)

(corrected below)

@sk1project
Copy link
Owner

sk1project commented Aug 6, 2019

@probonopd yep, ImageMagick and related libs are absent (tiff, jpeg etc). This will be problem because some distros have migrated to ImageMagick7 where as sk1 build on xenial uses ImageMagick6. Also there is no special libs for pango to support thai and other Eastern scripts.

I think the best solution is to build lib bundle from scratch on Ubuntu 14.04 and use it for AppImage build. We have done such job for macOS version so this will be not a complex issue.

Another question: why AppImage build adds Qt5 libs? Are they needed for AppImage functionality? Because sk1-wx has no bindings to Qt.

@probonopd
Copy link
Author

I made a mistake above. Actually it is:

me@host:~/squashfs-root/usr/lib$ find . -name '*.so*'
./x86_64-linux-gnu/libwx_gtk2u_xrc-3.0.so.0.2.0
./x86_64-linux-gnu/libwx_gtk2u_xrc-3.0.so.0
./x86_64-linux-gnu/libwx_gtk2u_stc-3.0.so.0.2.0
./x86_64-linux-gnu/libwx_gtk2u_stc-3.0.so.0
./x86_64-linux-gnu/libwx_gtk2u_richtext-3.0.so.0.2.0
./x86_64-linux-gnu/libwx_gtk2u_richtext-3.0.so.0
./x86_64-linux-gnu/libwx_gtk2u_ribbon-3.0.so.0.2.0
./x86_64-linux-gnu/libwx_gtk2u_ribbon-3.0.so.0
./x86_64-linux-gnu/libwx_gtk2u_qa-3.0.so.0.2.0
./x86_64-linux-gnu/libwx_gtk2u_qa-3.0.so.0
./x86_64-linux-gnu/libwx_gtk2u_propgrid-3.0.so.0.2.0
./x86_64-linux-gnu/libwx_gtk2u_propgrid-3.0.so.0
./x86_64-linux-gnu/libwx_gtk2u_html-3.0.so.0.2.0
./x86_64-linux-gnu/libwx_gtk2u_html-3.0.so.0
./x86_64-linux-gnu/libwx_gtk2u_gl-3.0.so.0.2.0
./x86_64-linux-gnu/libwx_gtk2u_gl-3.0.so.0
./x86_64-linux-gnu/libwx_gtk2u_core-3.0.so.0.2.0
./x86_64-linux-gnu/libwx_gtk2u_core-3.0.so.0
./x86_64-linux-gnu/libwx_gtk2u_aui-3.0.so.0.2.0
./x86_64-linux-gnu/libwx_gtk2u_aui-3.0.so.0
./x86_64-linux-gnu/libwx_gtk2u_adv-3.0.so.0.2.0
./x86_64-linux-gnu/libwx_gtk2u_adv-3.0.so.0
./x86_64-linux-gnu/libwx_baseu_xml-3.0.so.0.2.0
./x86_64-linux-gnu/libwx_baseu_xml-3.0.so.0
./x86_64-linux-gnu/libwx_baseu_net-3.0.so.0.2.0
./x86_64-linux-gnu/libwx_baseu_net-3.0.so.0
./x86_64-linux-gnu/libwx_baseu-3.0.so.0.2.0
./x86_64-linux-gnu/libwx_baseu-3.0.so.0
./x86_64-linux-gnu/libpng12.so.0
./x86_64-linux-gnu/libpangoxft-1.0.so
./x86_64-linux-gnu/libpangoft2-1.0.so
./x86_64-linux-gnu/libpangocairo-1.0.so
./x86_64-linux-gnu/libpango-1.0.so
./x86_64-linux-gnu/libcairo.so.2.11400.6
./x86_64-linux-gnu/libcairo.so.2
./sk1-wx-2.0rc5/uc2/libpango/_libpango.so
./sk1-wx-2.0rc5/uc2/libimg/_libimg.so
./sk1-wx-2.0rc5/uc2/libcairo/_libcairo.so
./sk1-wx-2.0rc5/uc2/cms/_cms.so
./python2.7/lib-dynload/termios.x86_64-linux-gnu.so
./python2.7/lib-dynload/resource.x86_64-linux-gnu.so
./python2.7/lib-dynload/readline.x86_64-linux-gnu.so
./python2.7/lib-dynload/pyexpat.x86_64-linux-gnu.so
./python2.7/lib-dynload/parser.x86_64-linux-gnu.so
./python2.7/lib-dynload/ossaudiodev.x86_64-linux-gnu.so
./python2.7/lib-dynload/nis.x86_64-linux-gnu.so
./python2.7/lib-dynload/mmap.x86_64-linux-gnu.so
./python2.7/lib-dynload/linuxaudiodev.x86_64-linux-gnu.so
./python2.7/lib-dynload/future_builtins.x86_64-linux-gnu.so
./python2.7/lib-dynload/fpectl.x86_64-linux-gnu.so
./python2.7/lib-dynload/dbm.x86_64-linux-gnu.so
./python2.7/lib-dynload/crypt.x86_64-linux-gnu.so
./python2.7/lib-dynload/bz2.x86_64-linux-gnu.so
./python2.7/lib-dynload/audioop.x86_64-linux-gnu.so
./python2.7/lib-dynload/_testcapi.x86_64-linux-gnu.so
./python2.7/lib-dynload/_ssl.x86_64-linux-gnu.so
./python2.7/lib-dynload/_sqlite3.x86_64-linux-gnu.so
./python2.7/lib-dynload/_multiprocessing.x86_64-linux-gnu.so
./python2.7/lib-dynload/_multibytecodec.x86_64-linux-gnu.so
./python2.7/lib-dynload/_lsprof.x86_64-linux-gnu.so
./python2.7/lib-dynload/_json.x86_64-linux-gnu.so
./python2.7/lib-dynload/_hotshot.x86_64-linux-gnu.so
./python2.7/lib-dynload/_hashlib.x86_64-linux-gnu.so
./python2.7/lib-dynload/_elementtree.x86_64-linux-gnu.so
./python2.7/lib-dynload/_curses_panel.x86_64-linux-gnu.so
./python2.7/lib-dynload/_curses.x86_64-linux-gnu.so
./python2.7/lib-dynload/_ctypes_test.x86_64-linux-gnu.so
./python2.7/lib-dynload/_ctypes.x86_64-linux-gnu.so
./python2.7/lib-dynload/_csv.x86_64-linux-gnu.so
./python2.7/lib-dynload/_codecs_tw.x86_64-linux-gnu.so
./python2.7/lib-dynload/_codecs_kr.x86_64-linux-gnu.so
./python2.7/lib-dynload/_codecs_jp.x86_64-linux-gnu.so
./python2.7/lib-dynload/_codecs_iso2022.x86_64-linux-gnu.so
./python2.7/lib-dynload/_codecs_hk.x86_64-linux-gnu.so
./python2.7/lib-dynload/_codecs_cn.x86_64-linux-gnu.so
./python2.7/lib-dynload/_bsddb.x86_64-linux-gnu.so
./python2.7/dist-packages/wx-3.0-gtk2/wx/_xrc.x86_64-linux-gnu.so
./python2.7/dist-packages/wx-3.0-gtk2/wx/_wizard.x86_64-linux-gnu.so
./python2.7/dist-packages/wx-3.0-gtk2/wx/_windows_.x86_64-linux-gnu.so
./python2.7/dist-packages/wx-3.0-gtk2/wx/_webkit.x86_64-linux-gnu.so
./python2.7/dist-packages/wx-3.0-gtk2/wx/_stc.x86_64-linux-gnu.so
./python2.7/dist-packages/wx-3.0-gtk2/wx/_richtext.x86_64-linux-gnu.so
./python2.7/dist-packages/wx-3.0-gtk2/wx/_propgrid.x86_64-linux-gnu.so
./python2.7/dist-packages/wx-3.0-gtk2/wx/_misc_.x86_64-linux-gnu.so
./python2.7/dist-packages/wx-3.0-gtk2/wx/_html2.x86_64-linux-gnu.so
./python2.7/dist-packages/wx-3.0-gtk2/wx/_html.x86_64-linux-gnu.so
./python2.7/dist-packages/wx-3.0-gtk2/wx/_grid.x86_64-linux-gnu.so
./python2.7/dist-packages/wx-3.0-gtk2/wx/_glcanvas.x86_64-linux-gnu.so
./python2.7/dist-packages/wx-3.0-gtk2/wx/_gizmos.x86_64-linux-gnu.so
./python2.7/dist-packages/wx-3.0-gtk2/wx/_gdi_.x86_64-linux-gnu.so
./python2.7/dist-packages/wx-3.0-gtk2/wx/_dataview.x86_64-linux-gnu.so
./python2.7/dist-packages/wx-3.0-gtk2/wx/_core_.x86_64-linux-gnu.so
./python2.7/dist-packages/wx-3.0-gtk2/wx/_controls_.x86_64-linux-gnu.so
./python2.7/dist-packages/wx-3.0-gtk2/wx/_combo.x86_64-linux-gnu.so
./python2.7/dist-packages/wx-3.0-gtk2/wx/_calendar.x86_64-linux-gnu.so
./python2.7/dist-packages/wx-3.0-gtk2/wx/_aui.x86_64-linux-gnu.so
./python2.7/dist-packages/wx-3.0-gtk2/wx/_animate.x86_64-linux-gnu.so
./python2.7/dist-packages/cups.x86_64-linux-gnu.so
./python2.7/dist-packages/cairo/_cairo.x86_64-linux-gnu.so
./python2.7/dist-packages/PIL/_webp.x86_64-linux-gnu.so
./python2.7/dist-packages/PIL/_imagingmorph.x86_64-linux-gnu.so
./python2.7/dist-packages/PIL/_imagingmath.x86_64-linux-gnu.so
./python2.7/dist-packages/PIL/_imagingft.x86_64-linux-gnu.so
./python2.7/dist-packages/PIL/_imagingcms.x86_64-linux-gnu.so
./python2.7/dist-packages/PIL/_imaging.x86_64-linux-gnu.so
./debug/usr/lib/x86_64-linux-gnu/libpangoxft-1.0.so.0.3800.1
./debug/usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.0.3800.1
./debug/usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0.3800.1
./debug/usr/lib/x86_64-linux-gnu/libpango-1.0.so.0.3800.1

@unixino
Copy link

unixino commented Aug 8, 2019

Hi
Great work i was waiting for this from long time .
But I just tried to run it on Porteus linux but didn't work.
All other Appimages work fine like Krita for example.
Porteus is portable you can try it ( about 300 mb ), I tested on this iso :
http://www6.frugalware.org/mirrors/linux/porteus/x86_64/Porteus-v5.0/Porteus-LXQT-v5.0rc1-x86_64.iso
Can you help with that ?
Thank in advance and great work

@probonopd
Copy link
Author

didn't work.

Please elaborate.

@unixino
Copy link

unixino commented Aug 8, 2019

I execute the file but nothing happened, Not even an error message

@probonopd
Copy link
Author

Did you run it on the command line? If no, please do that and watch for errors. Please note that your distribution is not one we are explicitly targeting.

@unixino
Copy link

unixino commented Aug 9, 2019

guest@porteus:$ ./sK1_illustration_program-33761dc-x86_64.AppImage
/usr/bin/env: ‘python2’: No such file or directory
guest@porteus:
$

@probonopd
Copy link
Author

Do you have python2 on your system? Apparently it is needed.

@unixino
Copy link

unixino commented Aug 9, 2019

I installed python2 then there is this error

guest@porteus:$ ./sK1_illustration_program-33761dc-x86_64.AppImage
ImportError: No module named site
guest@porteus:
$

@probonopd
Copy link
Author

probonopd commented Aug 11, 2019

We are bundling a minimal Python 2 inside the AppImage. The one on the system should not matter. Apparently this is not working for you and I am wondering why.

However, Porteus is some Slackware fork and we are not supporting this officially. Please try on a mainstream distribution such as Ubuntu, Fedora, openSUSE.

@unixino
Copy link

unixino commented Aug 11, 2019

Didn't work on Debian too

root@live:~/Downloads# ./sK1_illustration_program-33761dc-x86_64.AppImage
sh: gsettings: command not found
Traceback (most recent call last):
  File "/tmp/.mount_sK1_iloH6uxE/usr/bin//sk1", line 22, in <module>
    sk1_run()
  File "/tmp/.mount_sK1_iloH6uxE/usr/lib/python2.7/dist-packages/sk1/__init__.py", line 105, in sk1_run
    from sk1.application import SK1Application
  File "/tmp/.mount_sK1_iloH6uxE/usr/lib/python2.7/dist-packages/sk1/application.py", line 26, in <module>
    from sk1 import _, config, events, modes, dialogs, appconst
  File "/tmp/.mount_sK1_iloH6uxE/usr/lib/python2.7/dist-packages/sk1/dialogs/__init__.py", line 25, in <module>
    from palcoldlg import palette_collection_dlg
  File "/tmp/.mount_sK1_iloH6uxE/usr/lib/python2.7/dist-packages/sk1/dialogs/palcoldlg.py", line 24, in <module>
    from sk1.pwidgets import PaletteViewer
  File "/tmp/.mount_sK1_iloH6uxE/usr/lib/python2.7/dist-packages/sk1/pwidgets/__init__.py", line 19, in <module>
    from colorctrls import SbStrokeSwatch, SbFillSwatch, StyleMonitor
  File "/tmp/.mount_sK1_iloH6uxE/usr/lib/python2.7/dist-packages/sk1/pwidgets/colorctrls.py", line 23, in <module>
    from uc2.cms import get_registration_black, verbose_color, val_255_to_dec
  File "/tmp/.mount_sK1_iloH6uxE/usr/lib/python2.7/dist-packages/uc2/cms/__init__.py", line 21, in <module>
    import libcms
  File "/tmp/.mount_sK1_iloH6uxE/usr/lib/python2.7/dist-packages/uc2/cms/libcms.py", line 23, in <module>
    import _cms
ImportError: libpython2.7.so.1.0: cannot open shared object file: No such file or directory
root@live:~/Downloads# 

@unixino
Copy link

unixino commented Aug 11, 2019

I tried several ( Appimages ) on Debian and all worked fine.
I think there is a problem in the package itself.

@probonopd
Copy link
Author

Possibly. Can you debug a bit more and find out what exactly is going wrong?

@unixino
Copy link

unixino commented Aug 13, 2019

I wish I could, but I am a designer not a programmer.
I can help to test packages, give some ideas but in this case, I am useless sorry.
But the Appimage should work fine on any distro that's what it's built for.
Maybe it needs to add more libraries in the package, Try to open it on different distros.

@probonopd
Copy link
Author

Yes, we need someone who has the time to test and debug this.

@johnblommers
Copy link

On Pop!_OS 21.04 the AppImage complains:

/lib/x86_64-linux-gnu/: undefined symbol: cairo_tag_end

so perhaps the proper version of librsvg-2.so.2 needs to be included in the AppImage bundle. The results seems to be broken icons in the toolbar:

Screenshot from 2021-12-05 16-55-02

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

Successfully merging this pull request may close these issues.

4 participants