[Qbs] Qbs and debian packaging
Wookey
wookey at wookware.org
Sat Dec 23 03:18:08 CET 2017
On 2017-12-22 11:01 +0000, Wookey wrote:
> On 2017-12-21 09:40 +0100, Christian Kandeler wrote:
> And finally, running tests.
>
> currently my test-case has a product for the library and a
> 'dewalls-test' product for the test binary. But
>
> qbs run --settings-dir /tmp --no-build -p dewalls-test \
> modules.qbs.installRoot:$(PWD)/debian/tmp \
> project.libDir:lib/$(DEB_HOST_MULTIARCH) \
> profile:deb qbs-build
>
> only works if the package is actually installed on the build system,
> otherwise the library is not found:
>
> qbs run --settings-dir /tmp --no-build -p dewalls-test \
> modules.qbs.installRoot:/home/wookey/packages/cavewhere/dewalls/debian/dewalls-1.0.0/debian/tmp \
> project.libDir:lib/x86_64-linux-gnu \
> profile:deb qbs-build
> Restoring build graph from disk
> Installing
> Starting target '/home/wookey/packages/cavewhere/dewalls/debian/dewalls-1.0.0/qbs-build/dewalls-test.deb.384b8e5c/dewalls-test'.
> /home/wookey/packages/cavewhere/dewalls/debian/dewalls-1.0.0/qbs-build/dewalls-test.deb.384b8e5c/dewalls-test: error while loading shared libraries: libdewalls.so.1: cannot open shared object file: No such file or directory
> debian/rules:36: recipe for target 'override_dh_auto_build' failed
It turns out that an rpath is being put in, but it is the final system
rpath: /usr/lib/x86_64-linux-gnu/ which would be good if we were
installing this binary as aprt of the package, but we are not - it's
just a test binary to be run at build-time.
So I fixed this by explicitly setting the rpath:
cpp.rpaths: ["qbs-build/install-root/usr/lib/x86_64-linux-gnu/"]
(because 'qbs run' is run with $PWD in the source dir and that's
where rpaths have to be relative to).
A better version is:
cpp.rpaths: ["qbs-build/install-root/" + qbs.installPrefix + project.libDir]
but that still has the build dir in it, which seems ugly, so doing it relative
to the binary seems better still:
cpp.rpaths: ["$ORIGIN/../install-root/" + qbs.installPrefix + project.libDir]
But isn't this exactly what Qbs could be doing for me?
I suspect I am doing this wrong, and there is a better way.
In the debian build context where we have control of the profile and
build-dir in use this does work fine, but seems clunky.
Wookey
--
Principal hats: Linaro, Debian, Wookware, ARM
http://wookware.org/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://lists.qt-project.org/pipermail/qbs/attachments/20171223/5d9f6703/attachment.sig>
More information about the Qbs
mailing list