Client: 2.7.0: DEB PACKAGING: vfs plugin installed in wrong location

Created on 12 Mar 2020  路  10Comments  路  Source: owncloud/client

With 2.7.0 (master) the location of the vfs plugin changes.
2.6.3 and below have the plugin in

  • DEB: /opt/ownCloud/ownCloud/lib/x86_64-linux-gnu/ownCloud/plugins/owncloudsync_vfs_suffix.so
  • RPM: /opt/ownCloud/ownCloud/lib64/ownCloud/plugins/owncloudsync_vfs_suffix.so

With 2.7.0 (master) the plugin is installed at

  • DEB: /opt/ownCloud/ownCloud/lib/x86_64-linux-gnu/plugins/owncloudsync_vfs_suffix.so
  • RPM: /opt/ownCloud/qt-5.12.7/lib64/qt5/plugins/owncloudsync_vfs_suffix.so

Testing 2.7.0 on Ubuntu-18.04

The plugin is not loaded. Snippet from the build log:

[  127s]    install -d obj-x86_64-linux-gnu
[  127s]    cd obj-x86_64-linux-gnu && cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_BUILD_TYPE=None -DCMAKE_INSTALL_SYSCONFDIR=/etc -DCMAKE_INSTALL_LOCALSTATEDIR=/var -DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON -DCMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY=ON -DMIRALL_VERSION_BUILD=2253 -DQT_QMAKE_EXECUTABLE=/opt/ownCloud/qt-5.12.7/bin/qmake -DCMAKE_INSTALL_PREFIX=/opt/ownCloud/ownCloud -DCMAKE_INSTALL_DOCDIR=/usr/share/doc -DCMAKE_INSTALL_DATAROOTDIR:PATH=/usr/share -DDATA_INSTALL_DIR:PATH=/usr/share -DSYSCONF_INSTALL_DIR=/etc -DWITH_DOC=FALSE -DCMAKE_SKIP_BUILD_RPATH=OFF -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON -DCMAKE_INSTALL_RPATH=/opt/ownCloud/ownCloud/lib/x86_64-linux-gnu\;/opt/ownCloud/qt-5.12.7/lib/x86_64-linux-gnu -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON -DOEM_THEME_DIR=/usr/src/packages/BUILD/ownCloud/syncclient -DCMAKE_FIND_ROOT_PATH=/opt/ownCloud/qt-5.12.7 -DQTKEYCHAIN_INCLUDE_DIR=/opt/ownCloud/qt-5.12.7/include/qt5keychain -DQTKEYCHAIN_LIBRARY=/opt/ownCloud/qt-5.12.7/lib/x86_64-linux-gnu/libqt5keychain.so -DBUILD_SHELL_INTEGRATION=OFF

Workaround: move it manually to /opt/ownCloud/qt-5.12.7/lib/x86_64-linux-gnu/qt5/plugins/owncloudsync_vfs_suffix.so
Then it is loaded.

@dschmidt @TheOneRing any ideas?

All 10 comments

With DEB we don't have -DKDE_INSTALL_PLUGINDIR=1 here. The RPM builds have that.

Testing build 2.7.0 on Ubuntu-18.04 with -DKDE_INSTALL_USE_QT_SYS_PATHS=1

Yep, that seems to make the difference. Now the plugin appears in
/opt/ownCloud/qt-5.12.7/lib/x86_64-linux-gnu/qt5/plugins/owncloudsync_vfs_suffix.so

@dschmidt should we default KDE_INSTALL_PLUGINDIR to ON?

@jnweiger did you mean KDE_INSTALL_USE_QT_SYS_PATHS

OOps. sorry. yes, I've added -DKDE_INSTALL_USE_QT_SYS_PATHS=1 to fix that.
I'll have to edit above again. sigh.

For our linux builds KDE_INSTALL_USE_QT_SYS_PATHS feels wrong as they break the folder layout(plugins outside of the branded folder)
I will find a solution...

Without KDE_INSTALL_USE_QT_SYS_PATHS the build is inconsistent. At compiletime it installs the plugin in one place. At runtime it expects the plugin in another place.

With KDE_INSTALL_USE_QT_SYS_PATHS=1 it is consistent.
The plugin is installed inside our qt-tree, rather than in our client-tree. As both live under /opt/ownCloud, I have no strong opinion which tree is more correct.

I think Qt tree is a bad idea, as we have the qt version hardcoded in that :-/

Should be fixed before a 2.7.0 release. RPM and DEB Packages should both be built with the same KDE_INSTALL_USE_QT_SYS_PATHS setting.
I can patch the build scripts to e.g. make the plugin appear in two locations, if that is needed for a transitional period.

Ah right I need to fix that before we release....

Was this page helpful?
0 / 5 - 0 ratings