# Builds the logos-storage-ui library { pkgs, common, src, logosStorageModule, 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-storage-module result echo "Copying include files from logos-storage-module..." if [ -d "${logosStorageModule}/include" ]; then echo "Found include directory in logos-storage-module" cp -r "${logosStorageModule}/include"/* ./generated_code/ echo "Copied include files:" ls -la ./generated_code/ else echo "Warning: No include directory found in logos-storage-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 # Find and copy the built library file from the modules directory if [ -f modules/storage_ui.dylib ]; then cp modules/storage_ui.dylib $out/lib/ elif [ -f modules/storage_ui.so ]; then cp modules/storage_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 ''; }