From 1c37cd0d929d8bcb2ff984cae0b40c359954f002 Mon Sep 17 00:00:00 2001 From: Jussi Kuokkanen Date: Mon, 25 Sep 2023 17:48:48 +0300 Subject: [PATCH] add script to build runnable tarball --- bundle.nix | 22 ++++++++++++++++++++++ mkTarball.sh | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 bundle.nix create mode 100755 mkTarball.sh diff --git a/bundle.nix b/bundle.nix new file mode 100644 index 0000000..000144b --- /dev/null +++ b/bundle.nix @@ -0,0 +1,22 @@ +let + tuxclocker = import ./release.nix; + sources = import ./npins; + dbusConf = ./dev/dbusconf.conf; + pkgs = + if (builtins.pathExists ./npins) + then import sources.nixpkgs {} + else import {}; + # Rename dbus binary so we don't kill host dbus when exiting + dbus = pkgs.dbus.overrideAttrs { + postInstall = '' + mv $out/bin/dbus-daemon $out/bin/tuxclocker-dbus + ''; + }; +in + pkgs.writeScriptBin "tuxclocker" '' + export DBUS_SYSTEM_BUS_ADDRESS=unix:path=/tmp/tuxclocker-dbus-socket + export LD_LIBRARY_PATH="" + sudo ${dbus}/bin/tuxclocker-dbus --config-file=${dbusConf} && + sudo -E ${tuxclocker}/bin/tuxclockerd & ${tuxclocker}/bin/tuxclocker-qt; + sudo kill $(pidof tuxclockerd); sudo kill $(pidof tuxclocker-dbus) + '' diff --git a/mkTarball.sh b/mkTarball.sh new file mode 100755 index 0000000..2d85706 --- /dev/null +++ b/mkTarball.sh @@ -0,0 +1,53 @@ +#!/usr/bin/env sh + +storePaths=($(nix-store -qR $(nix-build release.nix))) +cp -n result/bin/{.tuxclockerd-wrapped,.tuxclocker-qt-wrapped} . +libPaths=( "${storePaths[@]/%/\/lib\/}" ) +<<<<<<< HEAD +<<<<<<< HEAD +libPaths=( "${libPaths[@]/#/.}" ) +libPathsColonSep=$(echo ${libPaths[@]} | sed 's/ /:/g') +glibPath=$(nix-build '' -A glibc --no-out-link) +# TODO: don't hardcode version! +qtPluginPath=.$(nix-build '' -A libsForQt5.qt5.qtbase --no-out-link)/lib/qt-5.15.9/plugins/ +tuxclockerPluginPath=.$(nix-build release.nix)/lib/tuxclocker/plugins/ +chmod 777 ./.tuxclockerd-wrapped ./.tuxclocker-qt-wrapped +patchelf --set-rpath \.$glibPath/lib ./.tuxclockerd-wrapped ./.tuxclocker-qt-wrapped +patchelf --set-interpreter \.$glibPath"/lib/ld-linux-x86-64.so.2" ./.tuxclockerd-wrapped ./.tuxclocker-qt-wrapped + +echo " +export DBUS_SYSTEM_BUS_ADDRESS='unix:path=/tmp/tuxclocker-dbus-socket' +export LD_LIBRARY_PATH=\"${libPathsColonSep[@]}\" +export QT_PLUGIN_PATH=\"$qtPluginPath\" +export TUXCLOCKER_PLUGIN_PATH=\"$tuxclockerPluginPath\" +sudo -E dbus-run-session --config-file=dev/dbusconf.conf \ +sudo -E LD_LIBRARY_PATH=\"\$LD_LIBRARY_PATH\" ./.tuxclockerd-wrapped & \ +(unset LD_LIBRARY_PATH; sleep 2) && ./.tuxclocker-qt-wrapped; \ +unset LD_LIBRARY_PATH && \ +sudo kill \$(pidof .tuxclockerd-wrapped) +" > run.sh +chmod +x run.sh +tar cavf tuxclocker.tar ${storePaths[@]} ./.tuxclocker-qt-wrapped ./.tuxclockerd-wrapped ./run.sh ./dev/dbusconf.conf +======= +#libPaths=( "${libPaths[@]/" "/\:}" ) +======= +>>>>>>> 641bf86 (squash: working ld paths) +libPaths=( "${libPaths[@]/#/.}" ) +libPathsColonSep=$(echo ${libPaths[@]} | sed 's/ /:/g') +glibPath=$(nix-build '' -A glibc --no-out-link) +chmod 777 ./.tuxclockerd-wrapped ./.tuxclocker-qt-wrapped +patchelf --set-rpath \.$glibPath/lib ./.tuxclockerd-wrapped ./.tuxclocker-qt-wrapped +patchelf --set-interpreter \.$glibPath/lib/ld-linux-x86-64.so.2 ./.tuxclockerd-wrapped ./.tuxclocker-qt-wrapped + +echo " +export DBUS_SYSTEM_BUS_ADDRESS='unix:path=/tmp/tuxclocker-dbus-socket' +export LD_LIBRARY_PATH=\"${libPathsColonSep[@]}\" +sudo -E LD_LIBRARY_PATH=\"\$LD_LIBRARY_PATH\" dbus-run-session --config-file=dev/dbusconf.conf ./.tuxclockerd-wrapped & ./.tuxclocker-qt-wrapped +" > run.sh +chmod +x run.sh +<<<<<<< HEAD +#tar cavf foo.tar ${storePaths[@]} ./.tuxclocker-qt-wrapped ./.tuxclockerd-wrapped ./run.sh ./dev/dbusconf.conf +>>>>>>> 397cfb9 (squash: non-nix-bundle) +======= +tar cavf foo.tar ${storePaths[@]} ./.tuxclocker-qt-wrapped ./.tuxclockerd-wrapped ./run.sh ./dev/dbusconf.conf +>>>>>>> 641bf86 (squash: working ld paths)