mirror of
https://github.com/logos-blockchain/logos-execution-zone-wallet-ui.git
synced 2026-02-27 19:53:10 +00:00
190 lines
5.8 KiB
Nix
190 lines
5.8 KiB
Nix
# Builds the logos-execution-zone-wallet-ui-app standalone application
|
|
{ pkgs, common, src, logosLiblogos, logosExecutionZoneModule, logosCapabilityModule, logosExecutionZoneWalletUI, logosDesignSystem, lgpm, logosCapabilityModuleLgx, logosExecutionZoneModuleLgx }:
|
|
|
|
pkgs.stdenv.mkDerivation rec {
|
|
pname = "logos-execution-zone-wallet-ui-app";
|
|
version = common.version;
|
|
|
|
inherit src;
|
|
inherit (common) buildInputs meta;
|
|
|
|
nativeBuildInputs = common.nativeBuildInputs ++ [ pkgs.patchelf pkgs.removeReferencesTo ];
|
|
|
|
qtLibPath = pkgs.lib.makeLibraryPath (
|
|
[
|
|
pkgs.qt6.qtbase
|
|
pkgs.qt6.qtremoteobjects
|
|
pkgs.zstd
|
|
pkgs.krb5
|
|
pkgs.zlib
|
|
pkgs.glib
|
|
pkgs.stdenv.cc.cc
|
|
pkgs.freetype
|
|
pkgs.fontconfig
|
|
]
|
|
++ pkgs.lib.optionals pkgs.stdenv.isLinux [
|
|
pkgs.libglvnd
|
|
pkgs.mesa.drivers
|
|
pkgs.xorg.libX11
|
|
pkgs.xorg.libXext
|
|
pkgs.xorg.libXrender
|
|
pkgs.xorg.libXrandr
|
|
pkgs.xorg.libXcursor
|
|
pkgs.xorg.libXi
|
|
pkgs.xorg.libXfixes
|
|
pkgs.xorg.libxcb
|
|
]
|
|
);
|
|
qtPluginPath = "${pkgs.qt6.qtbase}/lib/qt-6/plugins";
|
|
qmlImportPath = "${placeholder "out"}/lib:${pkgs.qt6.qtbase}/lib/qt-6/qml";
|
|
|
|
dontWrapQtApps = false;
|
|
dontStrip = true;
|
|
|
|
qtWrapperArgs = [
|
|
"--prefix" "LD_LIBRARY_PATH" ":" qtLibPath
|
|
"--prefix" "QT_PLUGIN_PATH" ":" qtPluginPath
|
|
"--prefix" "QML2_IMPORT_PATH" ":" qmlImportPath
|
|
];
|
|
|
|
preConfigure = ''
|
|
runHook prePreConfigure
|
|
export MACOSX_DEPLOYMENT_TARGET=12.0
|
|
runHook postPreConfigure
|
|
'';
|
|
|
|
preFixup = ''
|
|
runHook prePreFixup
|
|
|
|
export QT_PLUGIN_PATH="${pkgs.qt6.qtbase}/lib/qt-6/plugins"
|
|
export QML_IMPORT_PATH="${pkgs.qt6.qtbase}/lib/qt-6/qml"
|
|
|
|
find $out -type f -executable -exec sh -c '
|
|
if file "$1" | grep -q "ELF.*executable"; then
|
|
if patchelf --print-rpath "$1" 2>/dev/null | grep -q "/build/"; then
|
|
echo "Cleaning RPATH for $1"
|
|
patchelf --remove-rpath "$1" 2>/dev/null || true
|
|
fi
|
|
if echo "$1" | grep -q "/logos-execution-zone-wallet-ui-app$"; then
|
|
echo "Setting RPATH for $1"
|
|
patchelf --set-rpath "$out/lib" "$1" 2>/dev/null || true
|
|
fi
|
|
fi
|
|
' _ {} \;
|
|
|
|
find $out -name "*.so" -exec sh -c '
|
|
if patchelf --print-rpath "$1" 2>/dev/null | grep -q "/build/"; then
|
|
echo "Cleaning RPATH for $1"
|
|
patchelf --remove-rpath "$1" 2>/dev/null || true
|
|
fi
|
|
' _ {} \;
|
|
|
|
runHook prePostFixup
|
|
'';
|
|
|
|
configurePhase = ''
|
|
runHook preConfigure
|
|
|
|
echo "Configuring logos-execution-zone-wallet-ui-app..."
|
|
|
|
test -d "${logosLiblogos}" || (echo "liblogos not found" && exit 1)
|
|
test -d "${logosExecutionZoneModule}" || (echo "execution-zone-module not found" && exit 1)
|
|
test -d "${logosCapabilityModule}" || (echo "capability-module not found" && exit 1)
|
|
test -d "${logosExecutionZoneWalletUI}" || (echo "execution-zone-wallet-ui not found" && exit 1)
|
|
test -d "${logosDesignSystem}" || (echo "logos-design-system not found" && exit 1)
|
|
|
|
cmake -S app -B build \
|
|
-GNinja \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DCMAKE_OSX_DEPLOYMENT_TARGET=12.0 \
|
|
-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=FALSE \
|
|
-DCMAKE_INSTALL_RPATH="" \
|
|
-DCMAKE_SKIP_BUILD_RPATH=TRUE \
|
|
-DLOGOS_LIBLOGOS_ROOT=${logosLiblogos}
|
|
|
|
runHook postConfigure
|
|
'';
|
|
|
|
buildPhase = ''
|
|
runHook preBuild
|
|
|
|
cmake --build build
|
|
echo "logos-execution-zone-wallet-ui-app built successfully!"
|
|
|
|
runHook postBuild
|
|
'';
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
|
|
mkdir -p $out/bin $out/lib $out/modules
|
|
|
|
if [ -f "build/bin/logos-execution-zone-wallet-ui-app" ]; then
|
|
cp build/bin/logos-execution-zone-wallet-ui-app "$out/bin/"
|
|
echo "Installed logos-execution-zone-wallet-ui-app binary"
|
|
fi
|
|
|
|
if [ -f "${logosLiblogos}/bin/logoscore" ]; then
|
|
cp -L "${logosLiblogos}/bin/logoscore" "$out/bin/"
|
|
echo "Installed logoscore binary"
|
|
fi
|
|
if [ -f "${logosLiblogos}/bin/logos_host" ]; then
|
|
cp -L "${logosLiblogos}/bin/logos_host" "$out/bin/"
|
|
echo "Installed logos_host binary"
|
|
fi
|
|
|
|
if ls "${logosLiblogos}/lib/"liblogos_core.* >/dev/null 2>&1; then
|
|
cp -L "${logosLiblogos}/lib/"liblogos_core.* "$out/lib/" || true
|
|
fi
|
|
|
|
OS_EXT="so"
|
|
case "$(uname -s)" in
|
|
Darwin) OS_EXT="dylib";;
|
|
Linux) OS_EXT="so";;
|
|
MINGW*|MSYS*|CYGWIN*) OS_EXT="dll";;
|
|
esac
|
|
|
|
for lgxFile in ${logosCapabilityModuleLgx}/*.lgx; do
|
|
echo "Installing $lgxFile via lgpm..."
|
|
${lgpm}/bin/lgpm --modules-dir "$out/modules" install --file "$lgxFile"
|
|
done
|
|
for lgxFile in ${logosExecutionZoneModuleLgx}/*.lgx; do
|
|
echo "Installing $lgxFile via lgpm..."
|
|
${lgpm}/bin/lgpm --modules-dir "$out/modules" install --file "$lgxFile"
|
|
done
|
|
|
|
if [ -f "${logosExecutionZoneWalletUI}/lib/logos_execution_zone_wallet_ui.$OS_EXT" ]; then
|
|
cp -L "${logosExecutionZoneWalletUI}/lib/logos_execution_zone_wallet_ui.$OS_EXT" "$out/"
|
|
fi
|
|
|
|
if [ -d "${logosDesignSystem}/lib/Logos/Theme" ]; then
|
|
mkdir -p "$out/lib/Logos"
|
|
cp -R "${logosDesignSystem}/lib/Logos/Theme" "$out/lib/Logos/"
|
|
echo "Copied Logos.Theme to lib/Logos/Theme/"
|
|
fi
|
|
if [ -d "${logosDesignSystem}/lib/Logos/Controls" ]; then
|
|
mkdir -p "$out/lib/Logos"
|
|
cp -R "${logosDesignSystem}/lib/Logos/Controls" "$out/lib/Logos/"
|
|
echo "Copied Logos.Controls to lib/Logos/Controls/"
|
|
fi
|
|
|
|
cat > $out/README.txt <<EOF
|
|
Logos Execution Zone Wallet UI App
|
|
==================================
|
|
liblogos: ${logosLiblogos}
|
|
execution-zone-module: ${logosExecutionZoneModule}
|
|
capability-module: ${logosCapabilityModule}
|
|
execution-zone-wallet-ui: ${logosExecutionZoneWalletUI}
|
|
design-system: ${logosDesignSystem}
|
|
|
|
Layout:
|
|
bin/logos-execution-zone-wallet-ui-app
|
|
lib/
|
|
modules/
|
|
logos_execution_zone_wallet_ui.$OS_EXT
|
|
EOF
|
|
|
|
runHook postInstall
|
|
'';
|
|
}
|