2026-02-13 09:20:11 +01:00

89 lines
2.9 KiB
Nix

# Builds the logos-blockchain-ui library
{ pkgs, common, src, logosBlockchainModule, logosSdk }:
pkgs.stdenv.mkDerivation {
pname = "${common.pname}-lib";
version = common.version;
inherit src;
inherit (common) buildInputs cmakeFlags meta env;
# Add logosSdk to nativeBuildInputs for logos-cpp-generator
nativeBuildInputs = common.nativeBuildInputs ++ [ logosSdk ];
preConfigure = ''
runHook prePreConfigure
# Create generated_code directory for generated files
mkdir -p ./generated_code
# Copy include files from logos-blockchain-module result
echo "Copying include files from logos-blockchain-module..."
if [ -d "${logosBlockchainModule}/include" ]; then
echo "Found include directory in logos-blockchain-module"
cp -r "${logosBlockchainModule}/include"/* ./generated_code/
echo "Copied include files:"
ls -la ./generated_code/
else
echo "Warning: No include directory found in logos-blockchain-module"
fi
# Run logos-cpp-generator with metadata.json and --general-only flag
echo "Running logos-cpp-generator..."
logos-cpp-generator --metadata ${src}/metadata.json --general-only --output-dir ./generated_code
# Check what was generated by logos-cpp-generator
echo "Checking generated files in generated_code:"
ls -la ./generated_code/
# Create include directory and move generated files there if they exist
if [ -f "./generated_code/core_manager_api.h" ] || [ -f "./generated_code/logos_sdk.h" ]; then
echo "Creating include directory and moving generated files..."
mkdir -p ./generated_code/include
# Move generated header files to include directory
for file in ./generated_code/*.h; do
if [ -f "$file" ]; then
mv "$file" ./generated_code/include/
fi
done
# Also copy generated .cpp files to include directory
for file in ./generated_code/*.cpp; do
if [ -f "$file" ]; then
cp "$file" ./generated_code/include/
fi
done
echo "Generated include directory:"
ls -la ./generated_code/include/
else
echo "Warning: No header files generated by logos-cpp-generator"
fi
runHook postPreConfigure
'';
installPhase = ''
runHook preInstall
mkdir -p $out/lib
# We are in build/; library is in build/modules/
if [ -f modules/blockchain_ui.dylib ]; then
cp modules/blockchain_ui.dylib $out/lib/
elif [ -f modules/blockchain_ui.so ]; then
cp modules/blockchain_ui.so $out/lib/
else
echo "Error: No library file found"
exit 1
fi
# Also install the generated include files
if [ -d "./generated_code/include" ]; then
mkdir -p $out/include
cp -r ./generated_code/include/* $out/include/
echo "Installed generated include files:"
ls -la $out/include/
fi
runHook postInstall
'';
}