jgaa / f-crm

Customer Relations Management for Freelancers and Individual Contractors.
GNU General Public License v3.0
28 stars 7 forks source link

plans for an appimage build/release? #1

Open nafergo opened 5 years ago

nafergo commented 5 years ago

Any plans for an appimage release? :) I know it's probably too much to ask but I'm really curious about this and install qt creator on my laptop is not an option right now :(

jgaa commented 5 years ago

I have not thought about that.

I'll check it out and see how much work it would be to add that to my automated build.

probonopd commented 5 years ago

Tried building an AppImage but getting a compilation error.

/opt/qt59/include/QtSql/qsqldatabase.h:133:17: note:   no known conversion for argument 1 from ‘const std::initializer_list<const QString>’ to ‘const QString&’
src/database.cpp:21:43: error: no matching function for call to ‘QSqlDatabase::addDatabase(const std::initializer_list<const QString>&)’
     db_ = QSqlDatabase::addDatabase(DRIVER);
                                           ^
src/database.cpp:21:43: note: candidates are:
In file included from /opt/qt59/include/QtSql/QSqlDatabase:1:0,
                 from ./src/database.h:10,
                 from src/database.cpp:1:
/opt/qt59/include/QtSql/qsqldatabase.h:121:25: note: static QSqlDatabase QSqlDatabase::addDatabase(const QString&, const QString&)
     static QSqlDatabase addDatabase(const QString& type,
                         ^
/opt/qt59/include/QtSql/qsqldatabase.h:121:25: note:   no known conversion for argument 1 from ‘const std::initializer_list<const QString>’ to ‘const QString&’
/opt/qt59/include/QtSql/qsqldatabase.h:123:25: note: static QSqlDatabase QSqlDatabase::addDatabase(QSqlDriver*, const QString&)
     static QSqlDatabase addDatabase(QSqlDriver* driver,
                         ^
/opt/qt59/include/QtSql/qsqldatabase.h:123:25: note:   no known conversion for argument 1 from ‘const std::initializer_list<const QString>’ to ‘QSqlDriver*’
make: *** [database.o] Error 1
The command "make -j$(nproc)" exited with 2.

.travis.yml: https://github.com/probonopd/f-crm/blob/patch-1/.travis.yml

build log: https://travis-ci.com/probonopd/f-crm/builds/95932896#L600

jgaa commented 5 years ago

The last time I checked, travis used a c++ compiler from prehistoric time. At that time, my options were to use legacy C++, or to build the compilers and libraries from source before compiling my own code. So I gave up travis and deployed Jenkins on one of my own servers. I have docker nodes for various linux distributions, A Windows node and a macos node.

Jenkins is a beast, and it's always frustrating and time-consuming to change anything with a build. I'll see if I can get it to build an AppImage within a reasonable effort.

probonopd commented 5 years ago

Well, please be sure to build on Ubuntu 14.04 because this is the oldest currently still supported distribution. Please see https://github.com/AppImage/AppImageKit/wiki/Creating-AppImages#creating-appimages-that-are-compatible-with-many-systems and especially https://github.com/AppImage/AppImageKit/wiki/Creating-AppImages#libstdcso6 for more information. Thanks.

jgaa commented 5 years ago

I added a script to build and package the application as an AppImage.

I will keep this issue open until I have integrated that into the automated build pipeline. I will try to build the application with Ubuntu 14.04 and publish the AppImage from that build.

probonopd commented 5 years ago

It's probably easiest to start with copy-and-paste from https://github.com/probonopd/linuxdeployqt#using-linuxdeployqt-with-travis-ci

jgaa commented 5 years ago

I released the first Beta today, and provided an AppImage for the application.

The AppImage is built by Jenkins in a Ubuntu Trusty Docker container as part of the builds I do when I make changes to the code or prepare releases.

nafergo commented 5 years ago

Just tried and it seems perfect :+1: Ubuntu 18.04

probonopd commented 5 years ago

Thank you very much.

Unfortunately this does not yet pass our automated test on a stock Ubuntu 14.04 system:

AppRun: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /run/firejail/appimage/.appimage-10277/AppRun)
/run/firejail/appimage/.appimage-10277/AppRun: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /run/firejail/appimage/.appimage-10277/AppRun)
/run/firejail/appimage/.appimage-10277/AppRun: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /run/firejail/appimage/.appimage-10277/AppRun)

Please see https://github.com/AppImage/AppImageKit/wiki/Creating-AppImages#libstdcso6.

Doing something along the lines of

./linuxdeployqt-continuous-x86_64.AppImage appdir/usr/share/applications/*.desktop -bundle-non-qt-libs
mkdir -p appdir/usr/optional/ ; wget -c https://github.com/darealshinji/AppImageKit-checkrt/releases/download/continuous/exec-x86_64.so -O ./appdir/usr/optional/exec.so
mkdir -p appdir/usr/optional/libstdc++/ ; cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6 ./appdir/usr/optional/libstdc++/
( cd appdir ; rm AppRun ; wget -c https://github.com/darealshinji/AppImageKit-checkrt/releases/download/continuous/AppRun-patched-x86_64 -O AppRun ; chmod a+x AppRun)
./linuxdeployqt-continuous-x86_64.AppImage appdir/usr/share/applications/*.desktop -appimage

should resolve this.

Reference: https://github.com/AppImage/appimage.github.io/pull/1211

jgaa commented 5 years ago

I'll look into it