ktechlab / ktechlab

an IDE for microcontrollers and electronics
https://userbase.kde.org/KTechlab
GNU General Public License v2.0
406 stars 55 forks source link

AppImage for Linux #47

Open probonopd opened 5 years ago

probonopd commented 5 years ago

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

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

Please let me know if you are interested, I'm happy to help making an AppImage for Linux.

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

zoltanp commented 5 years ago

Hi,

thank you for the suggesion; I agree that it is useful to allow people to use KTechlab as easily as possible. Currently I use my time available for KTechlab to port it towards Qt5 and KF5, so for me at least this packaging activity has lower priority than porting.

In case someone would like to do this packaging, I'm fine with it and if some help is needed, I will try to help.

megastallman commented 5 years ago

Hi @probonopd and @zoltanp ! I really am happy to use those two greatest pieces of software you are doing. Thanks much.

The short story long... Sometime near 2012, I had no more possibility to install the old qt3 version of Ktechlab with apt. I did tons of patching a couple of times and just packed an /opt-prefixed tarball. Then I've discovered Appimage and did this: https://gitlab.com/megastallman/ktechlab-0.3.7-appimage and https://github.com/megastallman/ktechlab-0.3.7-appimage But you don't need that anymore. That ancient code, that has been patched to get built with GCC7.

Recently I've successfully built the new qt4/5 Ktechlab easily. It's alive. So I think I can do Appimage packaging again. That looks easier than it was years ago.

probonopd commented 5 years ago

Hi @megastallman great to hear this. Maybe you can use copy-and-paste of https://github.com/probonopd/linuxdeployqt/#using-linuxdeployqt-with-travis-ci and/or have a look at http://docs.appimage.org/. Let me know if you are running into issues or have questions. Thanks!

zoltanp commented 5 years ago

Hi @megastallman , it would be great if you could do the AppImage packaging. I assume that many people would use it. If you need any help from my side, please let me know.

People are already asking for stand-alone packages, for example see the first comment here: https://zoltanp.github.io/2019/01/ktechlab-0-40-1.html

megastallman commented 5 years ago

Ok, yesterday I've managed to build a qt4 prefix. Now I'm distilling patches. It has less problems than qt3 had long ago...

probonopd commented 5 years ago

Why are you interested in Qt 4 at this point?

zoltanp commented 5 years ago

Hope I understood the question correctly: KTechLab master currently depends on Qt4, so it is one of its dependencies. Other notable one kdelibs4, and some more of KDE runtime are needed for running properly.

probonopd commented 5 years ago

Currently I use my time available for KTechlab to port it towards Qt5 and KF5, so for me at least this packaging activity has lower priority than porting.

Is this in a compile-able state?

zoltanp commented 5 years ago

Currently I don't have any Qt5-specific code. Just recently I've managed to fix all of the bugs after getting rid of qt3support. In theory moving from Qt4 to Qt5 should be relatively easy. First I want to replace the dependencies in the buildsystem and then see how things are going.

megastallman commented 5 years ago

Ok, now I'd stick with QT4 then.

megastallman commented 5 years ago

Hi everyone! I've recently built QT4 without webkit and openssl. Hope these components are not needed for Kdelibs-4.14.38 and Ktecklab. But now I've got problems with Kdelibs. I still cannot figure out what I miss here. Here is my output: https://hastebin.com/siqukavaqo.bash

zoltanp commented 5 years ago

Based on the log, Kdelibs depends on Qt compiled with SSL support, so openssl is needed. AFAIK Webkit should not be needed.

CMake Error at kdecore/network/ConfigureChecks.cmake:22 (message):
  KDE Requires Qt to be built with SSL support
Call Stack (most recent call first):
  kdecore/CMakeLists.txt:23 (include)

Otherwise the feature summary looks good to me.

megastallman commented 5 years ago

Hi @zoltanp !

Thanks much! I've added the required openssl patches. Now I've got another problem with Kdelibs build: https://pastebin.com/4VghAV7z Looks like it needs a static libdbusmenu-qt library... If that is a reason, I've got only a dynamic one(*.so) in my prefix. Have you got any ideas? Maybe I can supply some more info?

zoltanp commented 5 years ago

Based on the error it does not look like as a dynamic/static linking issue, but a "typical" C++ issue when some virtual methods of a class are not implemented, the class becomes abstract, and thus linking errors are generated around its constructor/destructor. I suspect that some version of KDBusMenuExporter 's dependency is not the one expected. I do not have any more concrete ideas about the source of the error.

Somewhat related: there is a discussion about cross-building KDE apps for windows (using KF5) on kde-devel mailing list. The mailing list archive does not appear to work (for me?), so I'm linking the code repository mentioned in the discussion:

TLDR: Here are some scripts to build KDE frameworks and okular statically using gcc/musl and cross-building for mingw: https://github.com/jschultz/kde-static Look in the file patch-kde.sh to see the interesting stuff.

https://github.com/jschultz/kde-static

megastallman commented 5 years ago

OK, Thanks. I'll take a look...

megastallman commented 5 years ago

OK, I still miss some of the KDE4 libs, but Ktechlab is getting built if I copy those from my host system.

So the prefix is not ready yet. I'll continue poking with Kdelibs build options.

zoltanp commented 5 years ago

Nice :-) Having something built with manual intervention is a significant milestone in this project.

megastallman commented 5 years ago

Now I've got a 46MB Appimage file, that, kind of "works for me". So I consider to test it under Xubuntu_14.04, OpenSUSE Thumbleweed and Centos VMs. None of them will include any QT installation.

probonopd commented 5 years ago

Now I've got a 46MB Appimage file

Where can it be downloaded? Happy to run it through my test suite.

megastallman commented 5 years ago

I see, it lacks phonon at least... So I'm adding it.

megastallman commented 5 years ago

https://my-files.ru/2leg0f - This tarball contains everything, but it still lacks some dependencies. Its md5sum is 7f16af4f36aa8f773f6eefb3b44c299e

megastallman commented 5 years ago

My scripts are residing here: https://gitlab.com/megastallman/ktechlab_qt4_appimage Now my appimage is working on newer *buntu LiveCDs and on Manjaro. It doesn't yet run on Xubuntu 14.04 and OpenSUSE Leap due to GLIBC problems, so I'm rebuilding on Ubuntu 14.04.

probonopd commented 5 years ago

Applications run on newer, but not older systems than the one that was used for building. https://github.com/AppImage/AppImageKit/wiki/Creating-AppImages#creating-appimages-that-are-compatible-with-many-systems

zoltanp commented 5 years ago

https://my-files.ru/2leg0f - This tarball contains everything, but it still lacks some dependencies. Its md5sum is 7f16af4f36aa8f773f6eefb3b44c299e

I've tried to run it on XUbuntu 16.04, amd64, and got missing library errors; I assume that it is built for newer system (yep, it's probably time to upgrade this Linux installation :-) ):

$ ./KTechlab-x86_64.AppImage 
Current directory is: /tmp/.mount_KTechl6fSlu8
ktechlab: error while loading shared libraries: libpng16.so.16: cannot open shared object file: No such file or directory

and after installing libpng16-16, I've got this:

$ ./KTechlab-x86_64.AppImage 
Current directory is: /tmp/.mount_KTechlViWcxo
ktechlab: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

My scripts are residing here: https://gitlab.com/megastallman/ktechlab_qt4_appimage Now my appimage is working on newer *buntu LiveCDs and on Manjaro. It doesn't yet run on Xubuntu 14.04 and OpenSUSE Leap due to GLIBC problems, so I'm rebuilding on Ubuntu 14.04.

Thanks for sharing it!

probonopd commented 5 years ago

Please use a tool like linuxdeployqt. Just running appimagetool will not bundle all required dependencies, and doing this manually would be very cumbersome.

megastallman commented 5 years ago

Hi @probonopd !

Looks like Linuxdeployqt should be a much easier way to build it, but I've got some problems here. I've tried both ./linuxdeployqt-6-x86_64.AppImage /tmp/ktechlab-prefix/usr/bin/ktechlab -bundle-non-qt-libs and ./linuxdeployqt-6-x86_64.AppImage /tmp/ktechlab-prefix/usr/bin/ktechlab , but still got the same error. Setting -qmake=/usr/bin/qmake didn't help either, as long as I've got the single qmake instance on Ubuntu 14.04 and just qt4, as I need for Ktechlab. linuxdeployqt 5 (commit 37631e5), build 631 built on 2019-01-25 22:47:58 UTC FHS-like mode with PREFIX, fhsPrefix: "/tmp/ktechlab-prefix/usr" app-binary: "/tmp/ktechlab-prefix/usr/bin/ktechlab" appDirPath: "/tmp/ktechlab-prefix" relativeBinPath: "usr/bin/ktechlab" ERROR: Could not find any translations in "/usr/share/qt4/translations" (developer build?)

The "/usr/share/qt4/translations" directory contains *.qm files, though...

probonopd commented 5 years ago

Does it build the AppImage (but without translations) or does not not create the AppImage at all?

megastallman commented 5 years ago

It doesn't create anything at all.

probonopd commented 5 years ago

That's not what should happen. I have opened an issue at https://github.com/probonopd/linuxdeployqt/issues/360.

rosset commented 5 years ago

0.40.1 is also available for Fedora 30+ https://bodhi.fedoraproject.org/updates/ktechlab-0.40.1-2.fc30 https://koji.fedoraproject.org/koji/buildinfo?buildID=1252276

megastallman commented 5 years ago

Hi @rosset The great thing about Fedora, is that they(or you) are not dropping old libs. Long ago KTechlab_0.3 has disappeared from Ubuntu, but it is still fairly easy to build on Fedora. Version .40 is absolutely easy to build everywhere. That's great. But there are some problems with universal packages, see my post below...

megastallman commented 5 years ago

@probonopd Hi! I've patched and rebuilt Linuxdeployqt according to https://github.com/probonopd/linuxdeployqt/issues/360. It grabs QT4 binaries fine. But... The application still depends on KDElibs, basically on a bigger part of KDE4, including kinit and ksycoca4. It just can't connect to the required daemons. So the LinuxdeployQT method is fine for QT5 and QT4(after patching the template to qt*.qm) apps, but now I need to get a half of KDE4 with me. I've stuck... Here is the log on a livecd: https://hastebin.com/tojiriteqe.coffeescript

probonopd commented 5 years ago

Appears that the reason for the crash is

 19-04-28 21:39:25,677 (Fatal) !!!!!!! ERROR !!!!!!! - KHTML default stylesheet version mismatch. Aborting. Check your installation. File used was: /home/xubuntu. Expected STYLE_VERSION 1

(Fatal) !!!!!!! ERROR !!!!!!! - KHTML default stylesheet version mismatch. Aborting. Check your installation. File used was: /home/xubuntu. Expected STYLE_VERSION 1

So apparently the application is trying to load KHTML, and possibly KHTML or some component needed by it is not bundled or is not being loaded from the correct (relative) path.

Before we spend lots of time to engineer this for Qt 4, will there be a port to Qt 5 anytime soon? It comes with QtWebEngine which is known to be deployable by linuxdeployqt.

megastallman commented 5 years ago

Nice question, @probonopd ! @zoltanp , what do you think? QT4 is already deprecated, but we should still bundle it if you are not yet ready with QT5. I've also heard that QT6 has recently branched. It can get into constant rewriting the same application for every toolkit version.

zoltanp commented 5 years ago

@megastallman @probonopd Hopefully this year there will be a Qt5 /KF5 release of KTechLab. As I read more and more KF5 porting documentation, I see more and more work ahead. Qt5 might be mostly source-compatible with Qt4, but KF5 is not really drop-in replacement KDELibs4. Maybe I could just use Qt5 instead of KF5 where possible [ silly smiley here ].

You can see the progress of KF5 port in the wip-kf5-try1 branch [1]. Currently it just produces some strange compilation errors.

[1] https://cgit.kde.org/ktechlab.git/tree/?h=wip-kf5-try1

probonopd commented 5 years ago

Please ping me once it compiles, then I'll be happy to help with the AppImage. Thanks.

rosset commented 5 years ago

Do you have CI enabled to compile on each commit? Maybe it helps to engage more people to help on migration/code fix? Thanks.

zoltanp commented 5 years ago

Please ping me once it compiles, then I'll be happy to help with the AppImage. Thanks.

Okay. Besides compiling, it should also run :-D

ghost commented 4 years ago

Any success on KTechLab-0.40.1-*.AppImage (nightly build) packaging?

Eddieghoul commented 4 years ago

Nope, just an endless list of dependants that keep propagating.

⁣Get BlueMail for Android ​

On Sep 11, 2019, 4:47 PM, at 4:47 PM, app4soft notifications@github.com wrote:

Any success on KTechLab-0.40.1-*.AppImage (nightly build) packaging?

-- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/ktechlab/ktechlab/issues/47#issuecomment-530579424

megastallman commented 4 years ago

Hi @Eddieghoul ! Do you mean KTechlab's dependencies? You can see some of their recipes here: https://hastebin.com/rosapajena.bash If you need more, I'll provide you with all I've got.

Eddieghoul commented 4 years ago

I can't mess with it for a while, my computer crashed and I need to get a new one.  Thanks for the help.

⁣Get BlueMail for Android ​

On Sep 12, 2019, 6:32 AM, at 6:32 AM, megastallman notifications@github.com wrote:

Hi @Eddieghoul ! Do you mean KTechlab's dependencies? You can see some of their recipes here: https://hastebin.com/rosapajena.bash If you need more, I'll provide you with all I've got.

-- You are receiving this because you were mentioned. Reply to this email directly or view it on GitHub: https://github.com/ktechlab/ktechlab/issues/47#issuecomment-530784315

ghost commented 4 years ago

If you need more, I'll provide you with all I've got.

Please, do it! @megastallman

megastallman commented 4 years ago

Hi everyone!

I've just built an AppImage: https://gofile.io/?c=f5aZ7n Its md5sum is 3985260969bc7650836f451ac1f4df48 I did it in Kubuntu 16.04, so now it runs on Kubuntu 16.04 and 18.04, but looks like I've got bigger problems here. When I run on Centos 8 or Xubuntu 16.04, it claims on lack of some KF5 components and crashes due to heap buffer owerflow. @probonopd , @zoltanp , could you please take a look at the logs: https://hastebin.com/utoteyeciw.sql ?

ghost commented 4 years ago

it claims on lack of some KF5 components and crashes due to heap buffer overflow.

Is it possible package ktechlab without KF5 components (e.g. ktechlab-qt or ktechlab-qt5), in same way as kdiff3-qt packaged?

zoltanp commented 4 years ago

I see in the logs:

(WW) Could not find any platform plugin

This is typically a Qt runtime issue, where Qt is not able to load the so called platform plugin (basically a dynamic library), and will fail to create any GUI. I assume KTechLab crashes because some methods return null values when the platform plugin is not loaded. I recommend to try to fix that warning, and then hopefully KTechLab will run.

megastallman notifications@github.com ezt írta (időpont: 2019. okt. 11., P, 13:06):

Hi everyone!

I've just built an AppImage: https://gofile.io/?c=f5aZ7n Its md5sum is 3985260969bc7650836f451ac1f4df48 I did it in Kubuntu 16.04, so now it runs on Kubuntu 16.04 and 18.04, but looks like I've got bigger problems here. When I run on Centos 8 or Xubuntu 16.04, it claims on lack of some KF5 components and crashes due to heap buffer owerflow. @probonopd https://github.com/probonopd , @zoltanp https://github.com/zoltanp , could you please take a look at the logs: https://hastebin.com/utoteyeciw.sql ?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/ktechlab/ktechlab/issues/47?email_source=notifications&email_token=AAGBI3TG7CMBCGERSVLCYLLQOBF2XA5CNFSM4GSS2BI2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEA7Q26A#issuecomment-541003128, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAGBI3XKD6RHQ2GY6I25LMLQOBF2XANCNFSM4GSS2BIQ .

zoltanp commented 4 years ago

Currently it's not possible to compile KTechLab without KF5 dependencies. Maybe it would be possible to rewrite (a lot) of code to only use Qt version of stuff, but it's a lot of work, and currently I don't see any significant benefit from doing it.

app4soft notifications@github.com ezt írta (időpont: 2019. okt. 11., P, 13:21):

it claims on lack of some KF5 components and crashes due to heap buffer overflow.

Is it possible package ktechlab without KF5 components (e.g. ktechlab-qt5)? In same way as kdiff3-qt packaged:

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/ktechlab/ktechlab/issues/47?email_source=notifications&email_token=AAGBI3THLFETK5NWVEHUCF3QOBHR7A5CNFSM4GSS2BI2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEA7R55I#issuecomment-541007605, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAGBI3USC3IR5WXVEMGHWA3QOBHR7ANCNFSM4GSS2BIQ .

megastallman commented 4 years ago

@zoltanp I would better try to pack any single dependency, piece by piece. It looks much more valuable.

probonopd commented 4 years ago

Currently it's not possible to compile KTechLab without KF5 dependencies.

KF5 dependencies are no problem for AppImage. They will be bundled as private copies, inside the AppImage. The end user does not need to install KF5 then.

megastallman commented 4 years ago

Ok, moving on. I've added the platform plugin. Now the application dies when I press the "New File" button. I've got logs with and without strace here. https://gofile.io/?c=ECgss8