GithubHelp home page GithubHelp logo

AppImage for Linux about ktechlab HOT 63 OPEN

ktechlab avatar ktechlab commented on May 25, 2024 2
AppImage for Linux

from ktechlab.

Comments (63)

zoltanp avatar zoltanp commented on May 25, 2024 2

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

from ktechlab.

megastallman avatar megastallman commented on May 25, 2024 1

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.

from ktechlab.

zoltanp avatar zoltanp commented on May 25, 2024 1

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

from ktechlab.

zoltanp avatar zoltanp commented on May 25, 2024 1

@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

from ktechlab.

rosset avatar rosset commented on May 25, 2024 1

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

from ktechlab.

zoltanp avatar zoltanp commented on May 25, 2024 1

https://github.com/ktechlab/ktechlab/blob/master/src/gui/newfiledlg.cpp#L99

The strace log is useful, it shows that KTechLab doesn't find icons for "source", "text-x-csrc", "application-x-circuit", "application-x-flowcode", "application-x-microbe' (it needs some icon for all of these to not crash). Some of these files are installed by KTechLab, some should be part of the system.

Pushed a fix to master which should fix this crash.
I expect missing icons in the New file... dialog, but no crash.

from ktechlab.

zoltanp avatar zoltanp commented on May 25, 2024 1

Cross-linking this discussion with KDE bugzilla

https://bugs.kde.org/show_bug.cgi?id=455969

from ktechlab.

zoltanp avatar zoltanp commented on May 25, 2024

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.

from ktechlab.

probonopd avatar probonopd commented on May 25, 2024

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!

from ktechlab.

megastallman avatar megastallman commented on May 25, 2024

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

from ktechlab.

probonopd avatar probonopd commented on May 25, 2024

Why are you interested in Qt 4 at this point?

from ktechlab.

zoltanp avatar zoltanp commented on May 25, 2024

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.

from ktechlab.

probonopd avatar probonopd commented on May 25, 2024

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?

from ktechlab.

zoltanp avatar zoltanp commented on May 25, 2024

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.

from ktechlab.

megastallman avatar megastallman commented on May 25, 2024

Ok, now I'd stick with QT4 then.

from ktechlab.

megastallman avatar megastallman commented on May 25, 2024

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

from ktechlab.

zoltanp avatar zoltanp commented on May 25, 2024

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.

from ktechlab.

megastallman avatar megastallman commented on May 25, 2024

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?

from ktechlab.

zoltanp avatar zoltanp commented on May 25, 2024

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

from ktechlab.

megastallman avatar megastallman commented on May 25, 2024

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

from ktechlab.

megastallman avatar megastallman commented on May 25, 2024

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.

from ktechlab.

zoltanp avatar zoltanp commented on May 25, 2024

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

from ktechlab.

megastallman avatar megastallman commented on May 25, 2024

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.

from ktechlab.

probonopd avatar probonopd commented on May 25, 2024

Now I've got a 46MB Appimage file

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

from ktechlab.

megastallman avatar megastallman commented on May 25, 2024

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

from ktechlab.

megastallman avatar megastallman commented on May 25, 2024

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

from ktechlab.

megastallman avatar megastallman commented on May 25, 2024

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.

from ktechlab.

probonopd avatar probonopd commented on May 25, 2024

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

from ktechlab.

zoltanp avatar zoltanp commented on May 25, 2024

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!

from ktechlab.

probonopd avatar probonopd commented on May 25, 2024

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

from ktechlab.

megastallman avatar megastallman commented on May 25, 2024

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...

from ktechlab.

probonopd avatar probonopd commented on May 25, 2024

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

from ktechlab.

megastallman avatar megastallman commented on May 25, 2024

It doesn't create anything at all.

from ktechlab.

probonopd avatar probonopd commented on May 25, 2024

That's not what should happen. I have opened an issue at probonopd/linuxdeployqt#360.

from ktechlab.

rosset avatar rosset commented on May 25, 2024

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

from ktechlab.

megastallman avatar megastallman commented on May 25, 2024

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...

from ktechlab.

megastallman avatar megastallman commented on May 25, 2024

@probonopd Hi!
I've patched and rebuilt Linuxdeployqt according to probonopd/linuxdeployqt#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

from ktechlab.

probonopd avatar probonopd commented on May 25, 2024

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.

from ktechlab.

megastallman avatar megastallman commented on May 25, 2024

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.

from ktechlab.

probonopd avatar probonopd commented on May 25, 2024

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

from ktechlab.

 avatar commented on May 25, 2024

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

from ktechlab.

Eddieghoul avatar Eddieghoul commented on May 25, 2024

from ktechlab.

megastallman avatar megastallman commented on May 25, 2024

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.

from ktechlab.

Eddieghoul avatar Eddieghoul commented on May 25, 2024

from ktechlab.

 avatar commented on May 25, 2024

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

Please, do it! @megastallman

from ktechlab.

megastallman avatar megastallman commented on May 25, 2024

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 ?

from ktechlab.

 avatar commented on May 25, 2024

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?

from ktechlab.

zoltanp avatar zoltanp commented on May 25, 2024

from ktechlab.

zoltanp avatar zoltanp commented on May 25, 2024

from ktechlab.

megastallman avatar megastallman commented on May 25, 2024

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

from ktechlab.

probonopd avatar probonopd commented on May 25, 2024

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.

from ktechlab.

megastallman avatar megastallman commented on May 25, 2024

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

from ktechlab.

probonopd avatar probonopd commented on May 25, 2024

Just guessing, could (WW) void ItemLibrary::loadItemDescriptions() Could not open file " "/tmp/.mount_*/inst-simple/share/ktechlab/contexthelp/help-English" " be causing this? Does the file even exist at that location?

from ktechlab.

probonopd avatar probonopd commented on May 25, 2024

Could it be that it should be usr/ inside the AppDir rather than inst-simple/? Can you point me to the AppImage for download?

from ktechlab.

zoltanp avatar zoltanp commented on May 25, 2024

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

Sigh... essentially the same location, same crash; here is the code:

https://github.com/ktechlab/ktechlab/blob/master/src/gui/newfiledlg.cpp#L99

The strace log is useful, it shows that KTechLab doesn't find icons for "source", "text-x-csrc", "application-x-circuit", "application-x-flowcode", "application-x-microbe' (it needs some icon for all of these to not crash). Some of these files are installed by KTechLab, some should be part of the system.

Commands I've used to look in the strace log:

List of locations where KTechLab searched for a specific icons:
grep xubuntu-strace.log -e 'application-x-circuit.* = ' | less

List of locations where KTechLab managed to load the icon (yes, it's empty):
grep xubuntu-strace.log -e 'application-x-circuit.* = [^-]' | less

Still, I assume that KTechLab starts, and maybe opening examples work.

from ktechlab.

zoltanp avatar zoltanp commented on May 25, 2024

Just guessing, could (WW) void ItemLibrary::loadItemDescriptions() Could not open file " "/tmp/.mount_*/inst-simple/share/ktechlab/contexthelp/help-English" " be causing this? Does the file even exist at that location?

That line appears on my computer, too. It's a bug (artifact from KF5 porting I guess) and item descriptions will be missing, but KTechLab should not crash because of it.

from ktechlab.

megastallman avatar megastallman commented on May 25, 2024

Here is the file itself: https://gofile.io/?c=4jKOld
md5sum: 501bad7bcbecf1ad7c379d3762c8a0a6

from ktechlab.

megastallman avatar megastallman commented on May 25, 2024

Ok @zoltanp , moving further...
I could even run a simulation from an Appimage build(built on Kubuntu 16.04 VM).
Here is a file dialog screenshot: https://ibb.co/ssKTpmb The black theme is on my Kubuntu 18.04 host, the white - Xubuntu 16.04 VM. As you said, we lack of KF5 icons. Can't even use a dialog.
Though, there is a bigger problem. Another crash when I run the oscilloscope or try to wire a diode: https://hastebin.com/ayarefexer.sql
I think we should enlist all resources we lack of and I should add them to build.
@probonopd what if I try to add the whole /usr/share/icons/ directory? Can we add it and make it visible to the application?
Still I think that we should bundle all resources. Yeah KF5 comes out to be a very complicated set of software.

from ktechlab.

probonopd avatar probonopd commented on May 25, 2024

Yes, all resources you want to use need to be bundled inside the AppDir. Also make sure to load resources from paths relative to the main executable, rather than from absolute compile-time paths.

You could use QString QCoreApplication::applicationDirPath() to construct a relative path to ../share/... from there.

from ktechlab.

machitgarha avatar machitgarha commented on May 25, 2024

What's the state of this one? I think the project is already migrated to Qt5.

from ktechlab.

edivaldo-amaral avatar edivaldo-amaral commented on May 25, 2024

from ktechlab.

zoltanp avatar zoltanp commented on May 25, 2024

What's the state of this one? I think the project is already migrated to Qt5.

Yes, KTechLab is working with Qt5 / KF5. I haven't tried to create an AppImage.

Perhaps @megastallman , @probonopd tried to create an AppImage using some current code of KTechLab ?

from ktechlab.

megastallman avatar megastallman commented on May 25, 2024

I had tons of problems with KF5, as I recall. Couldn't make the binaries run rootlessly. The biggest problem where I've stopped - was the content of /usr/share/icons dir that can't be dynamic.
Probably I need to reconsider the approach once again. Thanks for interest, guys.

from ktechlab.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.