Deploy by Copying Binaries

I try to start my app from the Qt Creator and deploy by copying binaries but some how
it seems its not starting the app from the right location.
It works just fine if I choose “Deploy as RPM”

The application output looks like

20:46:20: Starting /opt/sdk/harbour-tripometer/usr/bin/harbour-pikefight …
bash: exec: line 1: /opt/sdk/harbour-tripometer/usr/bin/harbour-pikefight: not found
20:46:21: Application finished with exit code 127.

It seems like I got something mismatched but I don’t understand what

The deployment looks like

Building target platforms: armv7hl-meego-linux
Building for target armv7hl-meego-linux
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.dkZ5Bs

  • umask 022
  • cd C:/Users/fraxl/Documents/qt/build-harbour-tripometer-SailfishOS_4_4_0_58_armv7hl_in_Sailfish_SDK_Build_Engine-Debug
  • flock /home/mersdk/.mb2.lock.lock flock /home/mersdk/.mb2.lock ln -f /home/mersdk/.mb2.lock.XTb /home/mersdk/.mb2.lock
  • ‘[’ /home/deploy/installroot ‘!=’ / ‘]’
  • rm -rf /home/deploy/installroot
    ++ dirname /home/deploy/installroot
  • mkdir -p /home/deploy
  • mkdir /home/deploy/installroot
  • LANG=C
  • export LANG
  • unset DISPLAY
  • rm -rf /home/deploy/installroot
  • export QT_SELECT=5
  • QT_SELECT=5
  • make install INSTALL_ROOT=/home/deploy/installroot INSTALL_LIBDIR=/home/deploy/installroot//usr/lib
    make: Warning: File ‘Makefile’ has modification time 9.1 s in the future
    cp -f -R C:/Users/fraxl/Documents/qt/harbour-tripometer/qml /home/deploy/installroot/usr/share/harbour-pikefight/
    install -m 755 -p harbour-pikefight /home/deploy/installroot/usr/bin/harbour-pikefight
    install -m 644 -p C:/Users/fraxl/Documents/qt/harbour-tripometer/harbour-pikefight.desktop /home/deploy/installroot/usr/share/applications/
    install -m 644 -p C:/Users/fraxl/Documents/qt/harbour-tripometer/icons/86x86/harbour-pikefight.png /home/deploy/installroot/usr/share/icons/hicolor/86x86/apps/
    install -m 644 -p C:/Users/fraxl/Documents/qt/harbour-tripometer/icons/108x108/harbour-pikefight.png /home/deploy/installroot/usr/share/icons/hicolor/108x108/apps/
    install -m 644 -p C:/Users/fraxl/Documents/qt/harbour-tripometer/icons/128x128/harbour-pikefight.png /home/deploy/installroot/usr/share/icons/hicolor/128x128/apps/
    install -m 644 -p C:/Users/fraxl/Documents/qt/harbour-tripometer/icons/172x172/harbour-pikefight.png /home/deploy/installroot/usr/share/icons/hicolor/172x172/apps/
    make: warning: Clock skew detected. Your build may be incomplete.
  • install -d /home/deploy/installroot/usr/share/harbour-pikefight/lib
  • install -m 644 -p C:/SailfishOS/mersdk/targets/SailfishOS-4.4.0.58-armv7hl.default/usr/lib/libjpeg.so.62 /home/deploy/installroot/usr/share/harbour-pikefight/lib/
  • install -m 644 -p C:/SailfishOS/mersdk/targets/SailfishOS-4.4.0.58-armv7hl.default/usr/lib/libcairo.so.2 /home/deploy/installroot/usr/share/harbour-pikefight/lib/
  • install -m 644 -p C:/SailfishOS/mersdk/targets/SailfishOS-4.4.0.58-armv7hl.default/usr/lib/libsoup-2.4.so.1 /home/deploy/installroot/usr/share/harbour-pikefight/lib/
  • install -m 644 -p C:/SailfishOS/mersdk/targets/SailfishOS-4.4.0.58-armv7hl.default/usr/lib/libdconf.so.1 /home/deploy/installroot/usr/share/harbour-pikefight/lib/
  • install -m 644 -p C:/SailfishOS/mersdk/targets/SailfishOS-4.4.0.58-armv7hl.default/usr/lib/libsqlite3.so.0 /home/deploy/installroot/usr/share/harbour-pikefight/lib/
  • install -m 644 -p C:/SailfishOS/mersdk/targets/SailfishOS-4.4.0.58-armv7hl.default/usr/lib/libpixman-1.so.0 /home/deploy/installroot/usr/share/harbour-pikefight/lib/
  • install -m 644 -p C:/SailfishOS/mersdk/targets/SailfishOS-4.4.0.58-armv7hl.default/usr/lib/libfreetype.so.6 /home/deploy/installroot/usr/share/harbour-pikefight/lib/
  • install -m 644 -p C:/SailfishOS/mersdk/targets/SailfishOS-4.4.0.58-armv7hl.default/usr/lib/libicui18n.so.68 /home/deploy/installroot/usr/share/harbour-pikefight/lib/
  • install -m 644 -p C:/SailfishOS/mersdk/targets/SailfishOS-4.4.0.58-armv7hl.default/usr/lib/libicuuc.so.68 /home/deploy/installroot/usr/share/harbour-pikefight/lib/
  • install -m 644 -p C:/SailfishOS/mersdk/targets/SailfishOS-4.4.0.58-armv7hl.default/usr/lib/libicudata.so.68 /home/deploy/installroot/usr/share/harbour-pikefight/lib/
  • install -m 644 -p C:/SailfishOS/mersdk/targets/SailfishOS-4.4.0.58-armv7hl.default/usr/lib/libpsl.so /home/deploy/installroot/usr/share/harbour-pikefight/lib/
  • C:/SailfishOS/mersdk/targets/SailfishOS-4.4.0.58-armv7hl.default/usr/lib/rpm/find-debuginfo.sh -j6 --strict-build-id --build-id-seed 1.1-1 --unique-debug-suffix -1.1-1.arm --unique-debug-src-base harbour-pikefight-1.1-1.arm -S debugsourcefiles.list C:/Users/fraxl/Documents/qt/build-harbour-tripometer-SailfishOS_4_4_0_58_armv7hl_in_Sailfish_SDK_Build_Engine-Debug/
    WARNING: C:/SailfishOS/mersdk/targets/SailfishOS-4.4.0.58-armv7hl.default/usr/share/harbour-pikefight/lib/libicudata.so.68 is already stripped!
    extracting debug info from /home/deploy/installroot/usr/bin/harbour-pikefight
    787 blocks
  • C:/SailfishOS/mersdk/targets/SailfishOS-4.4.0.58-armv7hl.default/usr/lib/rpm/check-buildroot
  • C:/SailfishOS/mersdk/targets/SailfishOS-4.4.0.58-armv7hl.default/usr/lib/rpm/meego/brp-compress
  • C:/SailfishOS/mersdk/targets/SailfishOS-4.4.0.58-armv7hl.default/usr/lib/rpm/meego/brp-strip-static-archive /usr/bin/strip
  • C:/SailfishOS/mersdk/targets/SailfishOS-4.4.0.58-armv7hl.default/usr/lib/rpm/meego/brp-strip-comment-note /usr/bin/strip /usr/bin/objdump
  • C:/SailfishOS/mersdk/targets/SailfishOS-4.4.0.58-armv7hl.default/usr/lib/rpm/brp-python-bytecompile ‘%{__python}’
  • C:/SailfishOS/mersdk/targets/SailfishOS-4.4.0.58-armv7hl.default/usr/lib/rpm/brp-python-hardlink
  • C:/SailfishOS/mersdk/targets/SailfishOS-4.4.0.58-armv7hl.default/usr/lib/rpm/meego/find-docs.sh /home/deploy/installroot
  • C:/SailfishOS/mersdk/targets/SailfishOS-4.4.0.58-armv7hl.default/usr/lib/rpm/meego/brp-java-repack-jars
    Processing files: harbour-pikefight-1.1-1.armv7hl
    Provides: harbour-pikefight = 1.1-1 harbour-pikefight(armv7hl-32) = 1.1-1
    Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
    Requires: ld-linux-armhf.so.3 ld-linux-armhf.so.3(GLIBC_2.4) libEGL.so.1 libGLESv2.so.2 libQt5Core.so.5 libQt5Core.so.5(Qt_5) libQt5DBus.so.5 libQt5DBus.so.5(Qt_5) libQt5Gui.so.5 libQt5Gui.so.5(Qt_5) libQt5Positioning.so.5 libQt5Positioning.so.5(Qt_5) libQt5Qml.so.5 libQt5Qml.so.5(Qt_5) libQt5Quick.so.5 libQt5Quick.so.5(Qt_5) libQt5Sensors.so.5 libQt5Sensors.so.5(Qt_5) libbz2.so.1 libdl.so.2 libdl.so.2(GLIBC_2.4) libfontconfig.so.1 libgcc_s.so.1 libgcc_s.so.1(GCC_3.0) libgcc_s.so.1(GCC_3.3.1) libgcc_s.so.1(GCC_3.5) libgio-2.0.so.0 libglib-2.0.so.0 libgobject-2.0.so.0 libm.so.6 libm.so.6(GLIBC_2.27) libm.so.6(GLIBC_2.29) libm.so.6(GLIBC_2.4) libpng16.so.16 libpng16.so.16(PNG16_0) libpthread.so.0 libpthread.so.0(GLIBC_2.4) libsailfishapp.so.1 libstdc++.so.6 libstdc++.so.6(CXXABI_1.3) libstdc++.so.6(CXXABI_1.3.8) libstdc++.so.6(CXXABI_ARM_1.3.3) libstdc++.so.6(GLIBCXX_3.4) libstdc++.so.6(GLIBCXX_3.4.11) libstdc++.so.6(GLIBCXX_3.4.14) libxml2.so.2 libxml2.so.2(LIBXML2_2.4.30) libxml2.so.2(LIBXML2_2.6.0) libz.so.1 libz.so.1(ZLIB_1.2.0)
    Processing files: harbour-pikefight-debuginfo-1.1-1.armv7hl
    Provides: debuginfo(build-id) = 6d3132cabc30f498bd598848624d96ee96362962 harbour-pikefight-debuginfo = 1.1-1 harbour-pikefight-debuginfo(armv7hl-32) = 1.1-1
    Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
    Recommends: harbour-pikefight-debugsource(armv7hl-32) = 1.1-1
    Processing files: harbour-pikefight-debugsource-1.1-1.armv7hl
    Provides: harbour-pikefight-debugsource = 1.1-1 harbour-pikefight-debugsource(armv7hl-32) = 1.1-1
    Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
    Checking for unpackaged file(s): C:/SailfishOS/mersdk/targets/SailfishOS-4.4.0.58-armv7hl.default/usr/lib/rpm/check-files /home/deploy/installroot
    20:46:20: The process “C:\SailfishOS\bin\sfdk.exe” exited normally.

Well, if “Deploy as RPM” works, why don’t you then just keep using it? :slight_smile:

Now, of course, it would be nice to know why does copying binaries not work. Unfortunately I don’t really see anything helpful in the log - it only shows the packaging part and not the actual deployment.

Could you perhaps share the source code of your project so that I could try it myself? That way I could at least see if it’s something related to the project.

what i saw just last week:

if you deploy with rpm and then start the app from launcher it will start the latest installed, thus in-dev version

if you deploy by copy libraries, starting from launcher would again start the latest installed, which is not the last deployed

also i did have the feeling that sometimes the latest changes were not the one that i did debug
with rpm it was more stable to get the latest code to phone

That’s the expected behaviour. “Deploy with RPM” really installs the package, thus launching the app from launcher launches the just installed version (I wonder how many times I can write “launch” in a single sentence). “Deploy by copying binaries” just copies the binaries over to /opt/sdk/… and launches it from there. So it does not overwrite possible existing installation.

I found out that it worked ok if I renamed the .pro file as the app (TARGET = harbour-pikefight). It seems like the name is included in the executable path. the name of the .pro is now harbour-pikefight.pro and it launches OK.