owncloud / client

🖥️ Desktop Syncing Client for ownCloud
GNU General Public License v2.0
1.4k stars 663 forks source link

Qt-5.6.2 everywhere #5470

Closed jnweiger closed 7 years ago

jnweiger commented 7 years ago

Public client builds

jnweiger commented 7 years ago

@SamuAlfageme Can you please design a test suite to demonstrate that qt-5.6.2 is a good choice? We have identified several issues with qt-5.1.1 and older versions (including qt4). E.g. https://github.com/owncloud/client/issues/2558 has a good overview.

jnweiger commented 7 years ago

@guruz https://github.com/owncloud/client/issues/3449 mentions patches. Are these obsolete with 5.6.2?

guruz commented 7 years ago

@jnweiger Yes, no patches needed

moscicki commented 7 years ago

Please also remember to take on board this comment: https://github.com/owncloud/client/issues/2558#issuecomment-75262413

Or shall I open another issue for it?

guruz commented 7 years ago

What's the status on this? People in https://github.com/owncloud/client/issues/4828 are waiting for it..

jnweiger commented 7 years ago

We have set up a devel project in obs for providing Qt-5.6.2 packages for the Linux platforms. https://build.opensuse.org/package/show/isv:ownCloud:devel:Qt562

The plan is:

jnweiger commented 7 years ago

Qt-5.6.2 libraries will not be ready for all Linux platforms for 2.3.0 The packaging roadmap for the 2.3.0 release now looks like this:

@dschmidt @guruz @michaelstingl please check this covers what we agreed. @crrodriguez @SamuAlfageme fyi.

vladimiroff commented 7 years ago

test the 2.3.0 setup in the testing project using the Qt4/Qt5 packages from the distributions.

So, in summary Qt4 support is not being dropped, before 2.3.1.

Do you have a list of which distributions have issues with Qt 5.x packages and therefore need a Qt 4.x build of the client? I'm also interested in what is exactly the Qt 4.x version there.

jnweiger commented 7 years ago

@SamuAlfageme We have an original 2.2.4 build unchanged from release time in https://software.opensuse.org/download.html?project=isv%3AownCloud%3Acommunity%3Atesting&package=testpilotcloud-client -- I've disabled rebuilds there for now, so that we don't lose this as a reference. Copying to https://software.opensuse.org/download.html?project=isv%3AownCloud%3Acommunity%3Atesting%3Atestpilotcloud-client-2.2.4-20160927&package=testpilotcloud-client for persistent reference.

SamuAlfageme commented 7 years ago

@jnweiger current testpilot also works as a more updated reference for the comparison.

The most notable changes between that repository and the current (If we limit to main client package dependencies; e.g. for Ubuntu 14.04)...

Package: 
< testpilotcloud-client
> owncloud-client
Version: 
< 2.2.4-1.2
> 2.2.4-9.1
Installed-Size:
< 2241
> 2538
Depends: libc6 (>= 2.14), libgcc1 (>= 1:3.0), 
< libqt5core5a (>= 5.5.0),
> libowncloudsync0 (= 2.2.4-9.1), libqt5core5a (>= 5.6.0~beta),
libqt5dbus5 (>= 5.0.2), libqt5gui5 (>= 5.0.2) | libqt5gui5-gles (>= 5.0.2), libqt5keychain1, libqt5network5 (>= 5.0.2), 
< libqt5webkit5 (>= 5.0.2), 
> libqt5webkit5 (>= 5.6.0~rc),
libqt5widgets5 (>= 5.2.0), libqt5xml5 (>= 5.0.2), libssl1.0.0 (>= 1.0.0), libstdc++6 (>= 5.2), 
< libtestpilotcloudsync0 (= 2.2.4-1.2), testpilotcloud-client-l10n,
> owncloud-client-l10n,
libqt4-sql-sqlite | libqt5sql5-sqlite
Filename: 
< ./amd64/testpilotcloud-client_2.2.4-1.2_amd64.deb
> ./amd64/owncloud-client_2.2.4-9.1_amd64.deb
Size: 
< 763094
> 977198

... would be the version of qt core (which switched to v5.6.0~beta) and webkit libraries. I'll peek some more into changes for those repositories and keep posting here.

SamuAlfageme commented 7 years ago

So, ran the scripts (plus the https://github.com/lvc/pkgdiff utility) and main differences reported between our two references still (as in my previous https://github.com/owncloud/client/issues/5470#issuecomment-276320318) reside in the DEB packages (both Ubuntu and Debian packages) they also were the main source of the problems reported with the tray icons. On rpms I'm seeing they uniformly use qtbase5.4.2.

jnweiger commented 7 years ago

Qt-5.6.2 for Debian-7.0 (or Ubuntu-12.04) has a number of missing dependencies that are present on Debian_8.0 and all Ubuntu's 14.04 and up :

nothing provides libgstreamer-plugins-base1.0-dev, 
nothing provides libgstreamer1.0-dev, 
nothing provides libxcb-sync-dev, 
nothing provides libxcb-xkb-dev, 
nothing provides libxkbcommon-dev, 
nothing provides libxkbcommon-x11-dev, 
nothing provides qttools5-dev-tools, 
nothing provides libqt5sql5-sqlite

:roll_eyes: new OBS wishlist item https://packages.debian.org/source/wheezy-backports/gstreamer1.0

(wheezy has instead: libgstreamer0.10-0.deb libgstreamer-plugins-base0.10-dev.deb libxcb-sync0.deb libxcb-keysyms1.deb )

jnweiger commented 7 years ago

Rollbacks done:

fyi @guruz @michaelstingl (prepare a re-release announcement?)

michaelstingl commented 7 years ago

prepare a re-release announcement?

@jnweiger what do you mean?

dschmidt commented 7 years ago

@jnweiger xkbcommon is not available on CentOS either, but Qt also bundles it, we can simply take that - or any reason not to? Not sure about xcb, but it might be bundled as well Maybe check upstream backport patches how they resolve it?

FYI: Fedora and openSUSE builds are good to be tested, I'm currently working on CentOS 6 and 7 support

dschmidt commented 7 years ago

CentOS 7 package is ready, CentOS 6 has all dependencies ready but we currently can't build the client on that platform because the client uses C++ features (in the Qt5 build at least) that the ancient GCC 4.4 on CentOS 6 can't compile. We need to discuss and figure out what to do here...

SamuAlfageme commented 7 years ago

@jnweiger what a variety of versions! Reports of installations of .deb packages now show this data, I don't really if everything is as expected:

As for the rpm's the panorama is this: (cc/ @dschmidt)

michaelstingl commented 7 years ago

@SamuAlfageme Having old stuff with 16.10 and newer stuff with 16.04 is also what I found confusing in https://github.com/owncloud/enterprise/issues/1634.

jnweiger commented 7 years ago

[x] collect all needed packages there collected in https://build.opensuse.org/project/show/isv:ownCloud:devel:Qt562

Also linkpack'ed into internal build service: https://obs.int.owncloud.com/project/show/devel:Qt562 CAUTION: prjconf must be manually propagated into internal OBS upon every change. No linking possible.

Both, RPM and DEB packages are built with variables defined in prjconf:

%define _oc_pkg_name_client owncloud-client
%define _oc_client_executable owncloud
%define _oc_pkg_prefix oc
%define _oc_vendordir ownCloud
%define _oc_rootdir Qt-5.6.2
%define _oc_prefix /opt/ownCloud/Qt-5.6.2

For DEB packages the variables are substituted into .control .dsc *.rules files manually by running make before checkin.

For RPM the variables autoexpand during the build process, but now the dependency resolution became unreliable. See https://github.com/openSUSE/open-build-service/issues/2665 -- we can workaround with frequent manual

osc rebuildpac --all

jnweiger commented 7 years ago

Status update. @SamuAlfageme @dschmidt please correct me if I am wrong.

dschmidt commented 7 years ago

@jnweiger AFAICT owncloud-client for CentOS is ready to test too, there were just issues with build service mirrors today. Downloading manually and doing yum localinstall just worked. Keyboard and network issues seem fixed now.

michaelstingl commented 7 years ago

@jnweiger @dschmidt @SamuAlfageme Awesome work? Do we already have something to test for the testpilots community?

jnweiger commented 7 years ago

@michaelstingl https://software.opensuse.org/download.html?project=isv%3AownCloud%3Adevel%3AQt562&package=owncloud-client offers CentOS, Fedora, and openSUSE builds of owncloud-client 2.3.0~beta1 with our new Qt-5.6.2 libraries.

SamuAlfageme commented 7 years ago

@michaelstingl @dschmidt @jnweiger you can check the result of those installations in this pipeline, including installation sizes, etc. I can easily extend them to include Fedora 24, Centos 6 and OpenSUSE 42.1/13.2 if it's relevant for this too.

dschmidt commented 7 years ago

To keep everyone up to date: @jnweiger did a great job of making qt5-qtbase for DEB based distributions compile. It apparently still has issues, but at least it builds, which is great progress. I'm picking up his work from there now. Hopefully I can leverage most of the work he did so far for the other packages.

dschmidt commented 7 years ago

I have qttools and qtkeychain building locally, unfortunately the OBS somehow seems to behave a little differently and the builds fail in the verification step. Should be minor issues only - but nothing for tonight anymore.

qt5-webkit is almost building locally, again verification fails. This is hopefully the last package missing for being able to build the client itself. (When commenting out the webkit depedency there, the build starts).

One issue that I don't understand yet, is an unresolvable dependency on qtchooser on everything but Ubuntu 16.10. Haven't spent much time on that yet though.

So overall there is quite a bit todo still, but we're making good progress. I'm in a constant feedback loop with @jnweiger, if anyone else can/wants to help out with anything, let me know. Everything I've done I have commited to the OBS. I'm hoping I will get to fixing a few more issues during the weekend.

dschmidt commented 7 years ago

We have working Qt packages on Ubuntu 16.10 64bit now, minor issues on other Ubuntu/Debian flavors still. The actual client package needs some work still because we need to build Dolphin overlays with system Qt.

jnweiger commented 7 years ago

First build success for Ubuntu and Debian: all flavours have built an onwcloud-client package for the first time. (I am not yet claming that they are all installable or even work) @SamuAlfageme do you want to try some of them?

https://software.opensuse.org/download.html?project=isv%3AownCloud%3Adevel%3AQt562&package=owncloud-client

I am installing owncloud-client-2.3.0~beta1 from the Qt562 project for Ubuntu-14.04 like this:

cat /etc/apt/sources.list.d/owncloud-client.list 
deb http://download.opensuse.org/repositories/isv:/ownCloud:/devel:/Qt562/xUbuntu_14.04/ /
sudo apt-get install owncloud-client
The following extra packages will be installed:
  libowncloudsync0 libxcb-xinerama0 oc-libqt5core5a oc-libqt5dbus5
  oc-libqt5gui5 oc-libqt5keychain1 oc-libqt5network5 oc-libqt5opengl5
  oc-libqt5printsupport5 oc-libqt5sql5 oc-libqt5webkit5 oc-libqt5widgets5
  oc-libqt5xml5 owncloud-client-l10n
Suggested packages:
  oc-libqt5libqgtk2 qt5-image-formats-plugins qtwayland5
Recommended packages:
  qttranslations5-l10n oc-libqt5svg5 oc-libqt5sql5-sqlite oc-libqt5sql5-mysql
  oc-libqt5sql5-odbc oc-libqt5sql5-psql
The following NEW packages will be installed:
  libowncloudsync0 libxcb-xinerama0 oc-libqt5core5a oc-libqt5dbus5
  oc-libqt5gui5 oc-libqt5keychain1 oc-libqt5network5 oc-libqt5opengl5
  oc-libqt5printsupport5 oc-libqt5sql5 oc-libqt5webkit5 oc-libqt5widgets5
  oc-libqt5xml5 owncloud-client owncloud-client-l10n
0 upgraded, 15 newly installed, 0 to remove and 230 not upgraded.
...

Notice all the oc-* packages for Qt, this is our rebuild of qt-5.6.2 that installs into /opt -- just lovely. Currently this client does not install into the usual /usr/bin/owncloud location, instead, you have to call it as

/opt/ownCloud/Qt-5.6.2/bin/owncloud

It starts up fine and does some syncing already. the 'general' tab shows that we use QT-5.6.2 and bandwidth limiting is enabled in the 'network' tab. The tray icon is where it ought to be.

Great progress. Thank you @dschmidt for making this happen!

230b1 qt562-u14 04

dschmidt commented 7 years ago

Actually /usr/bin/owncloud and /usr/bin/owncloudcmd should be available too. c.f. https://build.opensuse.org/package/view_file/isv:ownCloud:devel:Qt562/owncloud-client/debian.owncloud-client.install?expand=1

Also if your Ubuntu is not as ancient as @jnweiger 's ;-), you should be able to install the dolphin overlay too. Unfortunately we can't build it on Ubuntu 14.04 or any stable Debian release.

dschmidt commented 7 years ago

What worries me a little: qt5-image-formats-plugins qtwayland5 qttranslations5-l10n lack our prefix. Even if they are only suggested/recommended, we should investigate, why they are referenced at all.

SamuAlfageme commented 7 years ago

@jnweiger @dschmidt Awesome 🎉 I'll get get started today to run the sanity checks for Ubuntu to see how that goes!

SamuAlfageme commented 7 years ago

I'm getting unmet deps. for all the 3 Ubuntu versions with apt:

The following packages have unmet dependencies:
 owncloud-client : Depends: libowncloudsync0 (= 2.3.0~beta1-1.2) but it is not going to be installed
                   Depends: owncloud-client-l10n but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

Something changed since last night?

dschmidt commented 7 years ago

I have commited a few (possible) fixes to the OBS, let's see :-) Looking into it, I wonder why it worked for @jnweiger in the first place.

guruz commented 7 years ago

@dschmidt @SamuAlfageme Wanna post on https://central.owncloud.org/ and ask people to test the 2.3.0 client packages with 5.6.2 bundles?

SamuAlfageme commented 7 years ago

@guruz we could publish them as testpilotcloud to avoid interfering with current setups as @jnweiger suggested in https://github.com/owncloud/client/issues/5470#issuecomment-275680311. Also note that in the Qt562 repository we currently have 2.3.0beta1

dschmidt commented 7 years ago

Today I fixed some more minor issues with the debian packages, updated the tarball to current 2.3 branch (fixing #5610) and added -dbg packages. I chose the legacy -dbg format (instead of -dbgsym) as it's completely compatible between Debian and Ubuntu and also is fully supported by the OBS. If we wanted to use -dbgsym-.ddeb Files we probably would need changes in OBS to get them published.

jnweiger commented 7 years ago

Today also most of the libraries succeeded for RHEL-7 https://build.opensuse.org/project/monitor/isv:ownCloud:devel:Qt562:rhel7-extra This is still in a separate project, but should be simple to merge.

guruz commented 7 years ago

we could publish them as testpilotcloud to avoid interfering with current setups

I think changing the Linux nightlies would be a way to go. People who use nightlies can also handle this Qt change.

michaelstingl commented 7 years ago

:+1: power to the people! :+1:

jnweiger commented 7 years ago

Pushing my RHEL7 libraries from rhel7-extra into the main devel:Qt562

jnweiger commented 7 years ago

[ 3s] ++ ./test-c++11 [ 3s] + '[' 'Hello World' = 'Hello World' ']' [ 3s] + echo 'SUCCESS!' [ 3s] SUCCESS! [ 3s] + exit 0

jnweiger commented 7 years ago

all-clients-562

@guruz @SamuAlfageme @michaelstingl Party Time! Um, I mean testing time!

michaelstingl commented 7 years ago

Awesome job !!!

SamuAlfageme commented 7 years ago

@jnweiger just included Debian in the tests and everything is looking good and shiny 😎 (see https://gitlab.com/alfageme/client-linux-tests/pipelines/7125400)

Is it worth to test RHEL packages on RHEL? There's no Dockerimage because of the nature of the project so maybe it's valuable to perform the tests with the packages on CentOS / try out with an unofficial image: https://hub.docker.com/r/richxsl/rhel7/

EDIT: Updated tests including RHEL7 have now been included into the pipeline

I don't know why the hermes feed (https://hermes.opensuse.org/feeds/79973.rdf) wasn't updated after last packages' build success 😕

jnweiger commented 7 years ago

Open for review:

michaelstingl commented 7 years ago

Next steps to make the progress testable:

jnweiger commented 7 years ago

2.3.1 tar copied pushed into Qt526

jnweiger commented 7 years ago

Testpilotclient buiild is outdated 10 Months. Is this still needed?

guruz commented 7 years ago

Testpilotclient buiild is outdated 10 Months. Is this still needed?

Ideally we'd have testpilot and owncloud builds linked from owncloud.org/download Feel free to fix. (And not only during beta/rc phases)

jnweiger commented 7 years ago

There are two projects for testpilotcloud-client:

Fixed:

Now testpilotcloud-client is build nightly in both projects. Still with old QT libs.