euroelessar / qutim

Module based Instant Messenger
http://qutim.org/
Other
141 stars 32 forks source link

Missing documentation "How to build" using qbs #323

Closed diggit closed 3 years ago

diggit commented 10 years ago

I really want to build last version of qutim, but how? Your INSTALL file is outdated. (this is probably duplicate of https://github.com/euroelessar/qutim/issues/271 but noone responded)

KottV commented 10 years ago

Присоединяюсь. Хотя бы, какая версия qbs нужна?

VladRassokhin commented 9 years ago

Latest qbs version should be enough Don't forget to run 'qbs-setup-toolchain', 'qbs-setup-qt', 'qbs-config' before compiling project

mkdir ../qutim-build
qbs build -d ../qutim-build
qbs install -d ../qutim-build
Hubbitus commented 8 years ago

Latest is what exactly?

On first attempt I got error:

+ qbs setup-qt --detect
Creating profile 'qt-5-7-0'.
Creating profile 'qt-4-8-7'.
WARNING: You need to set up toolchain information before you can use this Qt version for building. However, no toolchain profile was found. Either create one using qbs-setup-toolchains and set it as this profile's base profile or add the toolchain settings manually to this profile.
WARNING: You need to set up toolchain information before you can use this Qt version for building. However, no toolchain profile was found. Either create one using qbs-setup-toolchains and set it as this profile's base profile or add the toolchain settings manually to this profile.
+ qbs setup-toolchains --detect
Trying to detect gcc...
Profile 'gcc' created for '/usr/bin/gcc'.
Trying to detect clang...
Profile 'clang' created for '/usr/bin/clang'.
+ qbs config defaultProfile qt-5-7-0
+ exit 0
Выполняется(%build): /bin/sh -e /home/pasha/SOFT/FEDORA/_my/qutim/master/_tmp/rpm-tmp.NuyyT3
+ umask 022
+ cd /home/pasha/SOFT/FEDORA/_my/qutim/master
+ cd qutim.0011532
+ mkdir qutim-build
+ qbs build -d ../qutim-build
No build graph exists yet for this configuration.
Resolving project for configuration default
WARNING: /home/pasha/SOFT/FEDORA/_my/qutim/master/qutim.0011532/src/lib/libqutim.qbs:143:5 The item 'Transformer' is deprecated and will be removed in qbs 1.7.0.
Use the 'Rule' item instead.
ERROR: /home/pasha/SOFT/FEDORA/_my/qutim/master/qutim.0011532/src/bin/bin.qbs:22:2 Module cpp could not be loaded.
Hubbitus commented 8 years ago

It is fail to build in Fedora Long time - https://bugzilla.redhat.com/show_bug.cgi?id=1307977. @euroelessar did not respond in Jabber... I think I'll drop it.

nico-izo commented 8 years ago

@Hubbitus Unfortunately, I doubt that anyone can fix 0.3.2 version. It looks that something is broken in kdeintegration or docktile, so you can either disable them, or try building qtdocktile separately.

nico-izo commented 8 years ago

@Hubbitus

Module cpp could not be loaded.

It looks like your qbs cannot load system plugins. I got that error when I was using bugged revision of 1.3.3 a year ago.

Hubbitus commented 7 years ago

@nico-izo, 0.3.2 version never use qbs! Off course I speak about last version. But I also can't said what it is. Main page of qutim.org speak about 0.4a, but source download (http://qutim.org/download) speak about 0.3...

nico-izo commented 7 years ago

@Hubbitus Yes, I know. My second reply was about your first message with strange qbs error.

Yes, we have tarballs only for releases, and 0.4 was never released. You can build 0.4 from euroelessar/master using qbs (1.3.3+, Qt 5.5, because after Qt 5.6 they dropped QtWebkit. You can build it manually, but it's a tedious process)

So... What are we talking about? About 0.3.3 or about current version with qbs?

Hubbitus commented 7 years ago

My intention was update qutim in Fedora.

We have even in Fedora 25:

# rpm -q qt5-qtbase qt5-qtwebkit
qt5-qtbase-5.7.0-3.fc25.x86_64
qt5-qtwebkit-5.7.0-2.fc25.x86_64

Is it enough to build qutim?

nico-izo commented 7 years ago

Oh, that's great. That should be enough to build current 0.4 alpha.

Hubbitus commented 7 years ago

Great. But could you please then advise what error "Module cpp could not be loaded." mean? I have:

$ qbs --version
1.6.0
nico-izo commented 7 years ago

Okay, but that's an issue with QBS, not qutIM.

I mean that cpp module is part of QBS core, so if QBS cannot import cpp, that's a sign that something terribly broken.

One year ago I got that because for some reason QBS was trying to load plugins from /usr/lib/qbs/plugins/, but actual path was /usr/lib/x86_64-linux-gnu/qbs/plugins

We even have fixed package to get things to work http://bazaar.launchpad.net/~torkvemada/qbs/debian/revision/33

So... So let's assume you have this issue. Then you can run

(in qutim directory)
mkdir ../qutim-build-qbs
strace qbs resolve -d ../qutim-build-qbs/ 2> ../qutim-build-qbs/strace.txt

and see, what's wrong with qbs plugins.

Hubbitus commented 7 years ago

strace qbs resolve -d ../qutim-build/ 2> ../qutim-build/strace.txt

It seems for me what plugin loaded:

open("/usr/lib64/qtcreator/plugins/qbs/plugins/libqbs_cpp_scanner.so", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 0\0\0\0\0\0\0"..., 832) = 832

Full trace: https://paste.fedoraproject.org/442878/55696991

Hubbitus commented 7 years ago

If I use:

qbs build debug profile:gcc project.addressSanitizer:true

I got different error:

No build graph exists yet for this configuration.
Resolving project for configuration debug
WARNING: /home/pasha/SOFT/FEDORA/_my/qutim/master/qutim.0011532/src/lib/libqutim.qbs:143:5 The item 'Transformer' is deprecated and will be removed in qbs 1.7.0.
Use the 'Rule' item instead.
ERROR: /home/pasha/SOFT/FEDORA/_my/qutim/master/qutim.0011532/src/bin/bin.qbs:24:5 Dependency 'Qt.core' not found for product 'qutim'.

It looks like I need follow warning "WARNING: You need to set up toolchain information before you can use this Qt version for building. However, no toolchain profile was found. Either create one using qbs-setup-toolchains and set it as this profile's base profile or add the toolchain settings manually to this profile." to combine toolchain with qt profile. Will look how to accomplish that.

nico-izo commented 7 years ago

Well, you need to show qbs, which compiler and Qt version you need to use. We have examples of that in INSTALL file: https://github.com/euroelessar/qutim/blob/master/INSTALL

Here is an example of building script for autobuilds on ubuntu (currently broken, but you can get the idea): http://bazaar.launchpad.net/~nico-izo-ya/+junk/vivid/view/head:/rules

(it's a mess because qbs was a giant pain to debug)

Hubbitus commented 7 years ago

I play around this and may say make some steps and install few addition dependencies to resolve intermediate failures.

Now I have:

qbs setup-qt %{_qt5_qmake} qutim-build-qt
qbs setup-toolchains %{__cc} qutim-build-gcc
qbs config profiles.qutim-build-qt.baseProfile qutim-build-gcc

mkdir qutim-build
qbs build -d ../qutim-build
qbs build debug profile:qutim-build-qt project.addressSanitizer:true

Which lead to:

+ qbs build -d ../qutim-build
No build graph exists yet for this configuration.
Resolving project for configuration default
WARNING: /home/pasha/SOFT/FEDORA/_my/qutim/master/qutim.0011532/src/lib/libqutim.qbs:143:5 The item 'Transformer' is deprecated and will be removed in qbs 1.7.0.
Use the 'Rule' item instead.
PkgConfigProbe: found library libotr

then go 13999 lines of (and it is very annoying):

WARNING: /home/pasha/SOFT/FEDORA/_my/qutim/master/qutim.0011532/src/plugins/Plugin.qbs:54:28 Property 'installNamePrefix' is not declared.

end eventually fails with:

ERROR: /home/pasha/SOFT/FEDORA/_my/qutim/master/qutim.0011532/src/plugins/Plugin.qbs:93:16 File '/home/pasha/SOFT/FEDORA/_my/qutim/master/qutim.0011532/src/plugins/generic/accountcreator/qml' does not exist.
Hubbitus commented 7 years ago

@nico-izo could you help at this point?

nico-izo commented 7 years ago

@Hubbitus Oh, sorry, I somehow missed notification about your answer.

Hmm. It looks like they removed cpp.installNamePrefix from QBS in favor of new property.

Well, shit. I was certain we could keep compatibility with qbs 1.3.3, but nope.

I commited fixes to your issues: https://github.com/euroelessar/qutim/commit/cb3bea6bcff3fb08d5c4effea4359cb3bb1fd3ca

nico-izo commented 7 years ago

I should also notice that project.addressSanitizer:true is for developers only and should never ever be used in distributed packages.

Hubbitus commented 7 years ago

Aga. Thank you. I go far. Now it failed with:

linking libhunspeller.so
ERROR: /usr/bin/g++ -shared -Wl,-soname=@rpath/plugins/libhunspeller.so -Wl,--as-needed -Wl,--unresolved-symbols=ignore-in-shared-libs '-Wl,-rpath,$ORIGIN' '-Wl,-rpath,$ORIGIN/..' '-Wl,-rpath,$ORIGIN/../..' -Wl,-rpath,/usr/lib64 '-Wl,-rp
/usr/bin/ld: cannot find -lhunspell
collect2: error: ld returned 1 exit status
ERROR: Process failed with exit code 1.

As I understand it come from: qbs/modules/hunspell/hunspell.qbs:6:

CommonModule {
    pkgConfigName: "hunspell"
    libraryNames: [ "hunspell" , "hunspell-1.2", "hunspell-1.3" ]
    includeSuffix: ["hunspell"]
    includeNames: [ "hunspell.hxx" ]
}

But

$ pkg-config hunspell --libs
-lhunspell-1.4

Why you do not use pkg-config but hardcore versions instead?

P.S. If you wish I could create separate issue.

Hubbitus commented 7 years ago

Also: src/plugins/generic/docktile/qtdocktile/qbs/modules/hunspell/hunspell.qbs:6: libraryNames: [ "hunspell" , "hunspell-1.2", "hunspell-1.3" ]

Hubbitus commented 7 years ago

I hack it temporary with version 1.4 and may proceed further. Then stick with:

compiling moc_indicator.cpp
ERROR: /usr/bin/g++ -m64 -g -O0 -Wall -Wextra -pipe -fexceptions -fvisibility=hidden -std=c++11 -fPIC -DQUTIM_PLUGIN_ID=05f69b2600339729 '-DQUTIM_PLUGIN_NAME="indicator"' -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_QML_LIB -DQT_QUIC
K_LIB -DQT_SCRIPT_LIB -DQT_WIDGETS_LIB -DQUTIM_SINGLE_PROFILE -I/usr/include/qt5 -I/usr/include/qt5/QtCore -I/usr/lib64/qt5/mkspecs/linux-g++ -I/home/pasha/SOFT/FEDORA/_my/qutim/master/qutim-build/default/indicator.qutim-build-qt.e78fd61
5/GeneratedFiles -I/usr/include/qt5/QtGui -I/usr/include/qt5/QtNetwork -I/usr/include/qt5/QtQml -I/usr/include/qt5/QtQuick -I/usr/include/qt5/QtScript -I/usr/include/qt5/QtWidgets -I/home/pasha/SOFT/FEDORA/_my/qutim/master/qutim-build/de
fault/libqutim.qutim-build-qt.211a4631/GeneratedFiles/include -I/home/pasha/SOFT/FEDORA/_my/qutim/master/qutim-build/default/libqutim.qutim-build-qt.211a4631/GeneratedFiles/include/qutim -I/home/pasha/SOFT/FEDORA/_my/qutim/master/qutim.a
4bb011/src/lib -I/home/pasha/SOFT/FEDORA/_my/qutim/master/qutim.a4bb011/src/3rdparty/slidingstackedwidget -I/home/pasha/SOFT/FEDORA/_my/qutim/master/qutim.a4bb011/src/3rdparty/flowlayout -I/home/pasha/SOFT/FEDORA/_my/qutim/master/qutim.a
4bb011/src/3rdparty -o /home/pasha/SOFT/FEDORA/_my/qutim/master/qutim-build/default/indicator.qutim-build-qt.e78fd615/.obj/39301be37a6f50b4/moc_indicator.cpp.o -c /home/pasha/SOFT/FEDORA/_my/qutim/master/qutim-build/default/indicator.qut
im-build-qt.e78fd615/GeneratedFiles/moc_indicator.cpp
In file included from /home/pasha/SOFT/FEDORA/_my/qutim/master/qutim-build/default/indicator.qutim-build-qt.e78fd615/GeneratedFiles/../../../../qutim.a4bb011/src/plugins/integrations/indicator/src/indicator.h:30:0,
                 from /home/pasha/SOFT/FEDORA/_my/qutim/master/qutim-build/default/indicator.qutim-build-qt.e78fd615/GeneratedFiles/moc_indicator.cpp:9:
/home/pasha/SOFT/FEDORA/_my/qutim/master/qutim-build/default/indicator.qutim-build-qt.e78fd615/GeneratedFiles/../../../../qutim.a4bb011/src/plugins/integrations/indicator/src/indicatorservice.h:34:33: fatal error: messaging-menu-qt.hpp: No such file or directory
 #include <messaging-menu-qt.hpp>
                                 ^
compilation terminated.
ERROR: Process failed with exit code 1.

I can't see such header files in Fedora repos. Is it public header?

nico-izo commented 7 years ago

Well, that's true, we should use PkgConfig. In fact, we have some infrastructure, so some plugins were rewritten with PkgConfig (like this: https://github.com/euroelessar/qutim/blob/master/src/plugins/generic/offtherecord/offtherecord.qbs ), but I haven't commited my changes due to some bugs in old QBS. I should probably try again.

So last error is because of that too. I hardcoded fix when I was doing ubuntu builds a year ago, because all my attempts to do it right way (with PkgConfig) failed http://bazaar.launchpad.net/~nico-izo-ya/+junk/vivid/view/head:/patches/indicator-build.patch

You can temporally hardcode it too. Or temporally disable that plugin (IIRC, it's an ubuntu tray integration, so maybe you don't even need that at all)

Hubbitus commented 7 years ago

Now:

moc mobilesettingswindow.h
ERROR: /usr/bin/g++ -shared -Wl,-soname=@rpath/plugins/libhunspeller.so -Wl,--as-needed -Wl,--unresolved-symbols=ignore-in-shared-libs '-Wl,-rpath,$ORIGIN' '-Wl,-rpath,$ORIGIN/..' '-Wl,-rpath,$ORIGIN/../..' -Wl,-rpath,/usr/lib64 '-Wl,-rp
/usr/bin/ld: cannot find -lhunspell
collect2: error: ld returned 1 exit status
ERROR: Process failed with exit code 1.

And require also change:

sed -i 's#cpp\.dynamicLibraries: \["hunspell"\]#cpp.dynamicLibraries: ["hunspell-1.4"]#' src/plugins/generic/hunspeller/hunspeller.qbs
Hubbitus commented 7 years ago

Now I stuck with next step:

$ qbs install --no-build --install-root /home/pasha/SOFT/rpmbuild/BUILDROOT/qutim-0.4-0.2.git.a4bb011.fc26.x86_64 profile:qutim-build-qt
ERROR: No build graph exists yet for this configuration.
Hubbitus commented 7 years ago

I go further. I has been built now. But ends with:

ERROR   0001: file '/share/apps/qutim/imports/org/qutim/adiumwebview/libadiumviewplugin.so' contains a standard rpath '/usr/lib64' in [$ORIGIN/../../../../../lib:/usr/lib64:$ORIGIN]
ERROR   0008: file '/share/apps/qutim/imports/org/qutim/adiumwebview/libadiumviewplugin.so' contains the $ORIGIN rpath specifier at the wrong position in [$ORIGIN/../../../../../lib:/usr/lib64:$ORIGIN]
ERROR   0001: file '/share/apps/qutim/imports/org/qutim/libqutimplugin.so' contains a standard rpath '/usr/lib64' in [$ORIGIN/../../../../lib:/usr/lib64:$ORIGIN]
ERROR   0008: file '/share/apps/qutim/imports/org/qutim/libqutimplugin.so' contains the $ORIGIN rpath specifier at the wrong position in [$ORIGIN/../../../../lib:/usr/lib64:$ORIGIN]

According to https://codereview.qt-project.org/#/c/59195/2//COMMIT_MSG (https://bugreports.qt.io/browse/QBS-309) it should be dropped with CONFIG+=disable_rpath, but run:

CONFIG+=disable_rpath qbs install -d ../qutim-build --no-build --install-root "%{buildroot}" profile:qutim-build-qt

change nothing for qutim.

How and where I should pass it?

nico-izo commented 7 years ago

Okay, now I'm seriously confused.

I downloaded qbs sources and it looks like it's an option for building qbs, not for qbs itself.

So... Am I correct that we need to do the same thing here? https://github.com/euroelessar/qutim/blob/cb3bea6bcff3fb08d5c4effea4359cb3bb1fd3ca/src/plugins/Plugin.qbs#L57

So... Could you please substitute this line with this:

cpp.rpaths: undefined

And check, if it fixes the issue. If it does, I'll add project variable (project.disableRpath:true).

Hubbitus commented 7 years ago

Should I substitute it in any qbs files:

$ ag cpp.rpaths
src/bin/bin.qbs
9:    cpp.rpaths: qbs.targetOS.contains("osx")

src/plugins/Plugin.qbs
57:    cpp.rpaths: qbs.targetOS.contains("osx")

src/plugins/generic/adiumwebview/plugin/adiumplugin.qbs
9:    cpp.rpaths: ["$ORIGIN/../../../../../lib"]

src/plugins/protocols/vkontakte/vreen/src/api.qbs
44:        cpp.rpaths: product.buildDirectory + "/" + project.vreen_lib_path

src/plugins/protocols/vkontakte/vreen/src/qml/qml.qbs
15:    cpp.rpaths: ["$ORIGIN/../../../../lib"]

src/qml/qutimplugin.qbs
9:    cpp.rpaths: ["$ORIGIN/../../../../lib"]

?

Hubbitus commented 7 years ago

I have built with patch https://paste.fedoraproject.org/461000/14774280/ but still see many:

ERROR   0008: file '/lib/libqutim-simplecontactlist.so' contains the $ORIGIN rpath specifier at the wrong position in [/usr/lib64:$ORIGIN]
ERROR   0001: file '/lib/libjreen.so.1.2.1' contains a standard rpath '/usr/lib64' in [/usr/lib64:$ORIGIN]
ERROR   0008: file '/lib/libjreen.so.1.2.1' contains the $ORIGIN rpath specifier at the wrong position in [/usr/lib64:$ORIGIN]
ERROR   0001: file '/share/apps/qutim/imports/org/qutim/adiumwebview/libadiumviewplugin.so' contains a standard rpath '/usr/lib64' in [/usr/lib64:$ORIGIN]
ERROR   0008: file '/share/apps/qutim/imports/org/qutim/adiumwebview/libadiumviewplugin.so' contains the $ORIGIN rpath specifier at the wrong position in [/usr/lib64:$ORIGIN]
ERROR   0001: file '/share/apps/qutim/imports/org/qutim/libqutimplugin.so' contains a standard rpath '/usr/lib64' in [/usr/lib64:$ORIGIN]
ERROR   0008: file '/share/apps/qutim/imports/org/qutim/libqutimplugin.so' contains the $ORIGIN rpath specifier at the wrong position in [/usr/lib64:$ORIGIN]
Hubbitus commented 7 years ago

How I can configure qbs to instruct honor FHS and f.e. place binary into /usr/bin instead of /bin, so-files into /usr/lib64 instead of /lib?

nico-izo commented 7 years ago

No, replace it only in src/plugins/Plugin.qbs, if I understand code correctly.

Aaand I probably need to patch jreen separately.

Could you please explain, what you expecting from rpaths property? Is there a way that I can validate libraries on ubuntu to reproduce your error messages?

And I should also notice, that last time I checked, vkontakte plugin was broken, so you probably want to disable it (vkontakte.condition:false).

Answering to your last question: I do not know any way to do that. If you look at ubuntu build script, you'll see that I manually moved all dirs to their destinations.

Hubbitus commented 7 years ago

No, replace it only in src/plugins/Plugin.qbs, if I understand code correctly.

I post result after replace in all assurances (link on patch provided) It does not help me

Could you please explain, what you expecting from rpaths property?

I want completely disable rpath in built binaries. Exactly by rationale present in bugreport https://bugreports.qt.io/browse/QBS-309

Is there a way that I can validate libraries on ubuntu to reproduce your error messages?

Sure.

$ readelf -d /home/pasha/SOFT/rpmbuild/BUILDROOT/qutim-0.4-0.2.git.a4bb011.fc26.x86_64/bin/qutim  | grep '(RPATH).*:'
 0x000000000000000f (RPATH)              Библиотека rpath: [/usr/lib64:$ORIGIN]

And I should also notice, that last time I checked, vkontakte plugin was broken, so you probably want to disable it (vkontakte.condition:false).

Is there somewhere in project status what should work and what only targeted for some specific distribution only?

Answering to your last question: I do not know any way to do that. If you look at ubuntu build script, you'll see that I manually moved all dirs to their destinations.

Bad news. Could you please explain any benefits to switch on QBS with so many problems from cmake without testing and support? I have more and more tends to just drop support it in Fedora completely…

nico-izo commented 7 years ago

@Hubbitus After some googling, I have found solution: cpp.useRPaths ( https://bugreports.qt.io/browse/QBS-594 ). I'll try to use it tomorrow and fix your issue.

Is there somewhere in project status what should work and what only targeted for some specific distribution only?

No, there is no such thing. vkontakte was broken after one of qbs updates and I have no idea why.

Could you please explain any benefits to switch on QBS with so many problems from cmake without testing and support?

Well, back in 2014 (or 2013?) qbs was looking nice and promising. In fact, it is still promising and nice. In my opinion, QBS syntax is a lot more prettier than cmake. But after some point qbs developers have started breaking backward compatibility in literally every version. Also qbs haven't became popular, therefore you can't expect much support.

nico-izo commented 7 years ago

@Hubbitus I've just pushed changes.

Pass two additional parameters to QBS:

project.useRPaths:false jreen.useRPaths:false

I grepped all .so's and binaries and didn't find a single rpath

nico-izo commented 7 years ago

By the way, it appears that vkontakte plugin was already disabled in code, so sorry for the confusion.

Hubbitus commented 7 years ago

Thank you for the RPath dealing. Meantime jreen is separate library, but I think their maintainer also will appreciate it on update if it also use qbs now. And it not only for Fedora important. As far I known Debian have similar guidelines.

What about installation in different places according FHS, is it possible configure paths on build time?

Hubbitus commented 7 years ago

Now problem with 3rdparty libs.

Long time I've delete:

rm -rf ./protocols/jabber/jreen ./plugins/plugman/3rdparty ./protocols/oscar/3rdparty ./core/3rdparty/qxt

We do that with @euroelessar long time ago (http://lists.fedoraproject.org/pipermail/devel/2012-January/161312.html).

I see project layout changed also and do accordingly:

rm -rf src/plugins/protocols/jabber/jreen src/plugins/protocols/oscar/3rdparty src/3rdparty

Which leads to:

+ qbs build -d qbs.build profile:qutim-build-qt project.useRPaths:false
No build graph exists yet for this configuration.
Resolving project for configuration default
ERROR: Cannot open '/home/pasha/SOFT/FEDORA/_my/qutim/master/qutim.d40188c/src/3rdparty/3rdparty.qbs'.

Is there way to disable such parts on time of build without patching?

Hubbitus commented 7 years ago

Meantime after applying patch: https://paste.fedoraproject.org/465603/85403414/ I got:

+ qbs build -d qbs.builddir profile:qutim-build-qt project.useRPaths:false
No build graph exists yet for this configuration.
Resolving project for configuration default
WARNING: /home/pasha/SOFT/FEDORA/_my/qutim/master/qutim.d40188c/src/lib/libqutim.qbs:146:5 The item 'Transformer' is deprecated and will be removed in qbs 1.7.0.
Use the 'Rule' item instead.
ERROR: /home/pasha/SOFT/FEDORA/_my/qutim/master/qutim.d40188c/src/lib/libqutim.qbs:16:5 Dependency 'Qtsolutions' not found for product 'libqutim'.

Is such bundled dependencies become mandatory?

nico-izo commented 7 years ago

What about installation in different places according FHS, is it possible configure paths on build time?

IIRC, there is no way to do this. But you can always specify installRoot http://doc.qt.io/qbs/installing-files.html

Now problem with 3rdparty libs.

Okay, I'm seriously confused again. IIRC, k8json and qxt were static libraries, compiled into plugins. You do not need to ship them separately. k8json is literally two files of code.

On the other hand, jreen is a big library and we should provide ability to use system jreen — but currently there is no way to do this.

Okay, I'll try now.

Hubbitus commented 7 years ago

I did not found qxt in current tree of qutim. But static libraries also mostly forbidden in Fedora without extra reason. Size have no any meaning…

Could you please help build without it in qbs as it was done in the past with cmake?

KottV commented 7 years ago

I have successfully built -git version (openSUSE TW, Qt5.7.0 qbs-1.5.2), just disable messaging-menu-qt. BTW qutim is not such usable without quetzal proto, is there any hopes for porting it?

Hubbitus commented 7 years ago

Also there no development information in build:

Ошибки сборки пакетов:
    Файл не найден: /home/pasha/SOFT/rpmbuild/BUILDROOT/qutim-0.4-0.4.git.4392465.fc25.x86_64/usr/include/qutim
    Файл не найден: /home/pasha/SOFT/rpmbuild/BUILDROOT/qutim-0.4-0.4.git.4392465.fc25.x86_64/usr/include/QtDockTile
    Файл не найден: /home/pasha/SOFT/rpmbuild/BUILDROOT/qutim-0.4-0.4.git.4392465.fc25.x86_64/usr/share/cmake/Modules/*.cmake
    Файл не найден: /home/pasha/SOFT/rpmbuild/BUILDROOT/qutim-0.4-0.4.git.4392465.fc25.x86_64/usr/lib64/qt4/imports/org/docktile/libqmldocktileplugin.so
    Файл не найден: /home/pasha/SOFT/rpmbuild/BUILDROOT/qutim-0.4-0.4.git.4392465.fc25.x86_64/usr/lib64/qt4/plugins/docktile/libunityplugin.so
    Файл не найден: /home/pasha/SOFT/rpmbuild/BUILDROOT/qutim-0.4-0.4.git.4392465.fc25.x86_64/usr/lib64/pkgconfig/qtdocktile.pc

Is it ok now?

nico-izo commented 7 years ago

I'm sorry for confusion, but I moved property systemJreen to Protocols project. I also updated INSTALL with available options: https://github.com/euroelessar/qutim/blob/master/INSTALL

@KottV Well, I ported quetzal protocol to Qt5 a year ago, and today I finally commited it: https://github.com/euroelessar/qutim/commit/d64f5c8acbb260009dc0098cc14c8fc31395cd74

Didn't know that anyone was interested in it.

Important notice: it's unfinished and unstable, so any help will be appreciated. A year ago it was working even with custom libpurple plugins for telegram and facebook.

Hubbitus commented 7 years ago

With Protocols.systemJreen:true:

ERROR: /usr/bin/g++ -m64 -g -O0 -Wall -Wextra -pipe -fexceptions -fvisibility=hidden -I/usr/include/jreen-qt5/ -I/usr/include/qt5/QtNetwork -I/usr/include/qt5 -I/usr/include/qt5/QtCore -I/usr/include/qt5 -std=c++11 -fPIC -DQUTIM_PLUGIN_ID=00019a2d00017871 '-DQUTIM_PLUGIN_NAME="jabber"' -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_QML_LIB -DQT_QUICK_LIB -DQT_SCRIPT_LIB -DQT_WIDGETS_LIB -DQUTIM_SINGLE_PROFILE -I/home/pasha/SOFT/FEDORA/_my/qutim/master/qutim.69632b2/src/plugins/protocols/jabber/src -I/usr/include/qt5 -I/usr/include/qt5/QtCore -I/usr/lib64/qt5/mkspecs/linux-g++ -I/home/pasha/SOFT/FEDORA/_my/qutim/master/qutim.69632b2/qbs.builddir/default/jabber.qutim-build-qt.b9ed189d/GeneratedFiles -I/usr/include/qt5/QtGui -I/usr/include/qt5/QtNetwork -I/usr/include/qt5/QtQml -I/usr/include/qt5/QtQuick -I/usr/include/qt5/QtScript -I/usr/include/qt5/QtWidgets -I/home/pasha/SOFT/FEDORA/_my/qutim/master/qutim.69632b2/qbs.builddir/default/libqutim.qutim-build-qt.211a4631/GeneratedFiles/include -I/home/pasha/SOFT/FEDORA/_my/qutim/master/qutim.69632b2/qbs.builddir/default/libqutim.qutim-build-qt.211a4631/GeneratedFiles/include/qutim -I/home/pasha/SOFT/FEDORA/_my/qutim/master/qutim.69632b2/src/lib -I/home/pasha/SOFT/FEDORA/_my/qutim/master/qutim.69632b2/src/3rdparty/slidingstackedwidget -I/home/pasha/SOFT/FEDORA/_my/qutim/master/qutim.69632b2/src/3rdparty/flowlayout -I/home/pasha/SOFT/FEDORA/_my/qutim/master/qutim.69632b2/src/3rdparty -o /home/pasha/SOFT/FEDORA/_my/qutim/master/qutim.69632b2/qbs.builddir/default/jabber.qutim-build-qt.b9ed189d/.obj/5d644d4dd02cff5c/jroster.cpp.o -c /home/pasha/SOFT/FEDORA/_my/qutim/master/qutim.69632b2/src/plugins/protocols/jabber/src/protocol/account/roster/jroster.cpp
/home/pasha/SOFT/FEDORA/_my/qutim/master/qutim.69632b2/src/plugins/protocols/jabber/src/protocol/account/roster/jroster.cpp: In member function 'void Jabber::JRoster::onNewMessage(Jreen::Message)':
/home/pasha/SOFT/FEDORA/_my/qutim/master/qutim.69632b2/src/plugins/protocols/jabber/src/protocol/account/roster/jroster.cpp:379:28: error: 'Jreen::MUCRoom::Invite' has not been declared
 #define JI Jreen::MUCRoom::Invite
                            ^
/home/pasha/SOFT/FEDORA/_my/qutim/master/qutim.69632b2/src/plugins/protocols/jabber/src/protocol/account/roster/jroster.cpp:380:14: note: in expansion of macro 'JI'
  if (!muc && JI::isInvite(message)) {
              ^~
/home/pasha/SOFT/FEDORA/_my/qutim/master/qutim.69632b2/src/plugins/protocols/jabber/src/protocol/account/roster/jroster.cpp:379:28: error: 'Jreen::MUCRoom::Invite' has not been declared
 #define JI Jreen::MUCRoom::Invite
                            ^
/home/pasha/SOFT/FEDORA/_my/qutim/master/qutim.69632b2/src/plugins/protocols/jabber/src/protocol/account/roster/jroster.cpp:384:12: note: in expansion of macro 'JI'
       .arg(JI::getFrom(message).full())
            ^~
/home/pasha/SOFT/FEDORA/_my/qutim/master/qutim.69632b2/src/plugins/protocols/jabber/src/protocol/account/roster/jroster.cpp:379:28: error: 'Jreen::MUCRoom::Invite' has not been declared
 #define JI Jreen::MUCRoom::Invite
                            ^
/home/pasha/SOFT/FEDORA/_my/qutim/master/qutim.69632b2/src/plugins/protocols/jabber/src/protocol/account/roster/jroster.cpp:386:12: note: in expansion of macro 'JI'
       .arg(JI::getReason(message))
            ^~

What jreen version required?

nico-izo commented 7 years ago

We had a lot of fixes in Jreen since last release (which was almost two years ago), so I decided to release new version 1.3.0 https://github.com/euroelessar/jreen/blob/master/ChangeLog

So... Either wait for jreen to update, or you may revert these changes: https://github.com/euroelessar/qutim/commit/c4c02392bd7aa9afb848e40d85ad4c5e7ac98fd3

Hubbitus commented 7 years ago

Thanks. I fill update request: https://bugzilla.redhat.com/show_bug.cgi?id=1391213 and will try for now build qutim with patch of revers commit you provide.

Hubbitus commented 7 years ago

Now I got this (it was deprecated long time):

ERROR: /builddir/build/BUILD/qutim.69632b2/src/lib/libqutim.qbs:147:5 The item 'Transformer' cannot be used anymore. It was removed in qbs 1.7.0.

Full log: https://kojipkgs.fedoraproject.org//work/tasks/6138/16516138/build.log

nico-izo commented 7 years ago

@Hubbitus Oh, that's already fixed in https://github.com/euroelessar/qutim/commit/54a28a4938ba2c399dee7de8ffa9a1d5640caa7d

Hubbitus commented 7 years ago

Good. I had wait qt-creator 4.2.0-rc1 in hope it will not segfault randomly (https://bugzilla.redhat.com/show_bug.cgi?id=1396760) now it landed in rawhide, but I got strange error which I can't reproduce on older versions:

ERROR: /builddir/build/BUILD/qutim.54a28a4/src/bin/bin.qbs:65:25 ReferenceError: Can't find variable: qutim_bin_path

Full log: https://kojipkgs.fedoraproject.org//work/tasks/8020/16728020/build.log