From 021939a4a09e2a0e63b5b58705ff7290728d165f Mon Sep 17 00:00:00 2001 From: Alejandro Cabeza Romero Date: Tue, 27 Jan 2026 10:31:49 +0100 Subject: [PATCH] junie refactor cmakelists and flake --- CMakeLists.txt | 17 ++- flake.lock | 363 ++++++++++++++++++++++++++++++++++++++++++++++++- flake.nix | 66 ++++++--- justfile | 2 +- 4 files changed, 413 insertions(+), 35 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 583ef02..0f6bb5a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,6 @@ project(logos-blockchain-module LANGUAGES CXX) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) -option(LOGOS_BUILD_DEPS_BY_DEFAULT "Always build Rust deps when building the plugin" OFF) set(LOGOS_CORE_ROOT "$ENV{LOGOS_CORE_ROOT}" CACHE PATH "Path to logos-core root") set(LOGOS_BLOCKCHAIN_ROOT "$ENV{LOGOS_BLOCKCHAIN_ROOT}" CACHE PATH "Path to logos-blockchain source root") @@ -75,6 +74,7 @@ add_custom_command( "${CARGO_TARGET_DIR}/release/${LOGOS_BLOCKCHAIN_C_SOURCE_DYLIB_NAME}" "${LOGOS_BLOCKCHAIN_STAGED_DYLIB}" ${PATCHELF_COMMANDS} + DEPENDS "${LOGOS_BLOCKCHAIN_ROOT}/Cargo.toml" VERBATIM ) @@ -87,14 +87,14 @@ add_custom_command( VERBATIM ) -add_custom_target(logos_cargo_build DEPENDS "${LOGOS_BLOCKCHAIN_STAGED_DYLIB}" "${LOGOS_BLOCKCHAIN_STAGED_HEADER}") +add_custom_target(logos_blockchain_libs DEPENDS "${LOGOS_BLOCKCHAIN_STAGED_DYLIB}" "${LOGOS_BLOCKCHAIN_STAGED_HEADER}") -add_library(logos_blockchain_c SHARED IMPORTED GLOBAL) -set_target_properties(logos_blockchain_c PROPERTIES +add_library(logos_blockchain_interface SHARED IMPORTED GLOBAL) +set_target_properties(logos_blockchain_interface PROPERTIES IMPORTED_LOCATION "${LOGOS_BLOCKCHAIN_STAGED_DYLIB}" INTERFACE_INCLUDE_DIRECTORIES "${INTERNAL_STAGE}/include" ) -add_dependencies(logos_blockchain_c logos_cargo_build) +add_dependencies(logos_blockchain_interface logos_blockchain_libs) # ---- C++ SDK Target (using staged symlinks) ---- add_library(logos_cpp_sdk INTERFACE) @@ -124,16 +124,15 @@ target_sources(${PLUGIN_TARGET} PRIVATE target_link_libraries(${PLUGIN_TARGET} PRIVATE Qt6::Core - logos_blockchain_c + logos_blockchain_interface logos_cpp_sdk logos_core ) target_compile_definitions(${PLUGIN_TARGET} PRIVATE USING_QT) -if(LOGOS_BUILD_DEPS_BY_DEFAULT) - add_dependencies(${PLUGIN_TARGET} logos_cargo_build) -endif() +# Ensure the Rust backend is always built before the plugin +add_dependencies(${PLUGIN_TARGET} logos_blockchain_libs) # RPATH so the plugin finds the Rust .so in the same folder if(APPLE) diff --git a/flake.lock b/flake.lock index a7f9200..bdd2dca 100644 --- a/flake.lock +++ b/flake.lock @@ -16,7 +16,32 @@ "type": "github" } }, - "logos-cpp-sdk": { + "logos-capability-module": { + "inputs": { + "logos-cpp-sdk": "logos-cpp-sdk_2", + "logos-liblogos": "logos-liblogos_2", + "nixpkgs": [ + "logos-module-viewer", + "logos-capability-module", + "logos-liblogos", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1764708348, + "narHash": "sha256-UNyZJYZsYD1KfcKS4jQab0GWx8vxZScboo3y3JcFPv4=", + "owner": "logos-co", + "repo": "logos-capability-module", + "rev": "710992469b7650110e7bb5a000ae03a7e8864e66", + "type": "github" + }, + "original": { + "owner": "logos-co", + "repo": "logos-capability-module", + "type": "github" + } + }, + "logos-core": { "inputs": { "nixpkgs": "nixpkgs" }, @@ -34,7 +59,7 @@ "type": "github" } }, - "logos-cpp-sdk_2": { + "logos-cpp-sdk": { "inputs": { "nixpkgs": "nixpkgs_2" }, @@ -52,9 +77,117 @@ "type": "github" } }, + "logos-cpp-sdk_2": { + "inputs": { + "nixpkgs": "nixpkgs_3" + }, + "locked": { + "lastModified": 1761230734, + "narHash": "sha256-CMRUwXH7pJZ1OI6bd/TDDDXKqQ1tQZHQEOOwK8TgYHI=", + "owner": "logos-co", + "repo": "logos-cpp-sdk", + "rev": "4b143922c190df00bb3835441c9f0075cb28283b", + "type": "github" + }, + "original": { + "owner": "logos-co", + "repo": "logos-cpp-sdk", + "type": "github" + } + }, + "logos-cpp-sdk_3": { + "inputs": { + "nixpkgs": "nixpkgs_4" + }, + "locked": { + "lastModified": 1761230734, + "narHash": "sha256-CMRUwXH7pJZ1OI6bd/TDDDXKqQ1tQZHQEOOwK8TgYHI=", + "owner": "logos-co", + "repo": "logos-cpp-sdk", + "rev": "4b143922c190df00bb3835441c9f0075cb28283b", + "type": "github" + }, + "original": { + "owner": "logos-co", + "repo": "logos-cpp-sdk", + "type": "github" + } + }, + "logos-cpp-sdk_4": { + "inputs": { + "nixpkgs": "nixpkgs_5" + }, + "locked": { + "lastModified": 1764699992, + "narHash": "sha256-nCmK9C9F31cHvy6lWKR5WGl99aJbS3kIsROAoZ4OrwI=", + "owner": "logos-co", + "repo": "logos-cpp-sdk", + "rev": "5d0bbd0d1e00aad0532ffa7c8bf2c80f460a4f6d", + "type": "github" + }, + "original": { + "owner": "logos-co", + "repo": "logos-cpp-sdk", + "type": "github" + } + }, + "logos-cpp-sdk_5": { + "inputs": { + "nixpkgs": "nixpkgs_6" + }, + "locked": { + "lastModified": 1764699992, + "narHash": "sha256-nCmK9C9F31cHvy6lWKR5WGl99aJbS3kIsROAoZ4OrwI=", + "owner": "logos-co", + "repo": "logos-cpp-sdk", + "rev": "5d0bbd0d1e00aad0532ffa7c8bf2c80f460a4f6d", + "type": "github" + }, + "original": { + "owner": "logos-co", + "repo": "logos-cpp-sdk", + "type": "github" + } + }, + "logos-cpp-sdk_6": { + "inputs": { + "nixpkgs": "nixpkgs_7" + }, + "locked": { + "lastModified": 1761230734, + "narHash": "sha256-CMRUwXH7pJZ1OI6bd/TDDDXKqQ1tQZHQEOOwK8TgYHI=", + "owner": "logos-co", + "repo": "logos-cpp-sdk", + "rev": "4b143922c190df00bb3835441c9f0075cb28283b", + "type": "github" + }, + "original": { + "owner": "logos-co", + "repo": "logos-cpp-sdk", + "type": "github" + } + }, + "logos-cpp-sdk_7": { + "inputs": { + "nixpkgs": "nixpkgs_8" + }, + "locked": { + "lastModified": 1761230734, + "narHash": "sha256-CMRUwXH7pJZ1OI6bd/TDDDXKqQ1tQZHQEOOwK8TgYHI=", + "owner": "logos-co", + "repo": "logos-cpp-sdk", + "rev": "4b143922c190df00bb3835441c9f0075cb28283b", + "type": "github" + }, + "original": { + "owner": "logos-co", + "repo": "logos-cpp-sdk", + "type": "github" + } + }, "logos-liblogos": { "inputs": { - "logos-cpp-sdk": "logos-cpp-sdk_2", + "logos-cpp-sdk": "logos-cpp-sdk", "nixpkgs": [ "logos-liblogos", "logos-cpp-sdk", @@ -75,6 +208,131 @@ "type": "github" } }, + "logos-liblogos_2": { + "inputs": { + "logos-cpp-sdk": "logos-cpp-sdk_3", + "nixpkgs": [ + "logos-module-viewer", + "logos-capability-module", + "logos-liblogos", + "logos-cpp-sdk", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1761845775, + "narHash": "sha256-ulK8xq05ejK6qIgZ7WtWb/MJt2rk5BKfDA2z7mM3wq8=", + "owner": "logos-co", + "repo": "logos-liblogos", + "rev": "a92c2c1268bc70764c8f73c7bce07d21024f5af9", + "type": "github" + }, + "original": { + "owner": "logos-co", + "repo": "logos-liblogos", + "type": "github" + } + }, + "logos-liblogos_3": { + "inputs": { + "logos-cpp-sdk": "logos-cpp-sdk_5", + "nixpkgs": [ + "logos-module-viewer", + "logos-liblogos", + "logos-cpp-sdk", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1764788130, + "narHash": "sha256-ieu55pelIMUO/m7fLXUS3JT6sNBBHva0lNc1GRH2hb0=", + "owner": "logos-co", + "repo": "logos-liblogos", + "rev": "3046aa6ac4392a705b2890adec405d7c9d8d4178", + "type": "github" + }, + "original": { + "owner": "logos-co", + "repo": "logos-liblogos", + "type": "github" + } + }, + "logos-liblogos_4": { + "inputs": { + "logos-cpp-sdk": "logos-cpp-sdk_7", + "nixpkgs": [ + "logos-module-viewer", + "logos-package-manager", + "logos-liblogos", + "logos-cpp-sdk", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1761845775, + "narHash": "sha256-ulK8xq05ejK6qIgZ7WtWb/MJt2rk5BKfDA2z7mM3wq8=", + "owner": "logos-co", + "repo": "logos-liblogos", + "rev": "a92c2c1268bc70764c8f73c7bce07d21024f5af9", + "type": "github" + }, + "original": { + "owner": "logos-co", + "repo": "logos-liblogos", + "type": "github" + } + }, + "logos-module-viewer": { + "inputs": { + "logos-capability-module": "logos-capability-module", + "logos-cpp-sdk": "logos-cpp-sdk_4", + "logos-liblogos": "logos-liblogos_3", + "logos-package-manager": "logos-package-manager", + "nixpkgs": [ + "logos-module-viewer", + "logos-liblogos", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1765396385, + "narHash": "sha256-sxlpjSLOutqz71SFQIXUa3aY3KUZZe/pWL6+cuIRREs=", + "owner": "logos-co", + "repo": "logos-module-viewer", + "rev": "a4f97447fab84e3188a30e6824e077b80dba210e", + "type": "github" + }, + "original": { + "owner": "logos-co", + "repo": "logos-module-viewer", + "type": "github" + } + }, + "logos-package-manager": { + "inputs": { + "logos-cpp-sdk": "logos-cpp-sdk_6", + "logos-liblogos": "logos-liblogos_4", + "nixpkgs": [ + "logos-module-viewer", + "logos-package-manager", + "logos-liblogos", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1764708254, + "narHash": "sha256-od3z91MNlKo8tk/BEeB0qOl5X87uTGF8+zg9IMZoBAM=", + "owner": "logos-co", + "repo": "logos-package-manager", + "rev": "f3a375fce2a0ddeece8d1eae525f1eefae6b7931", + "type": "github" + }, + "original": { + "owner": "logos-co", + "repo": "logos-package-manager", + "type": "github" + } + }, "nixpkgs": { "locked": { "lastModified": 1759036355, @@ -107,11 +365,108 @@ "type": "github" } }, + "nixpkgs_3": { + "locked": { + "lastModified": 1759036355, + "narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e9f00bd893984bc8ce46c895c3bf7cac95331127", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { + "locked": { + "lastModified": 1759036355, + "narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e9f00bd893984bc8ce46c895c3bf7cac95331127", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_5": { + "locked": { + "lastModified": 1759036355, + "narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e9f00bd893984bc8ce46c895c3bf7cac95331127", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_6": { + "locked": { + "lastModified": 1759036355, + "narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e9f00bd893984bc8ce46c895c3bf7cac95331127", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_7": { + "locked": { + "lastModified": 1759036355, + "narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e9f00bd893984bc8ce46c895c3bf7cac95331127", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_8": { + "locked": { + "lastModified": 1759036355, + "narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e9f00bd893984bc8ce46c895c3bf7cac95331127", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "root": { "inputs": { "logos-blockchain": "logos-blockchain", - "logos-cpp-sdk": "logos-cpp-sdk", + "logos-core": "logos-core", "logos-liblogos": "logos-liblogos", + "logos-module-viewer": "logos-module-viewer", "nixpkgs": [ "logos-liblogos", "nixpkgs" diff --git a/flake.nix b/flake.nix index 628aad6..2e28407 100644 --- a/flake.nix +++ b/flake.nix @@ -5,11 +5,11 @@ nixpkgs.follows = "logos-liblogos/nixpkgs"; logos-liblogos.url = "github:logos-co/logos-liblogos"; logos-core.url = "github:logos-co/logos-cpp-sdk"; - logos-blockchain = { url = "github:logos-blockchain/logos-blockchain"; flake = false; }; + logos-module-viewer.url = "github:logos-co/logos-module-viewer"; }; outputs = { self, nixpkgs, ... }@inputs: @@ -22,6 +22,7 @@ logosCore = inputs.logos-core.packages.${system}.default; logosBlockchain = inputs.logos-blockchain; + # 1. Environment variables shared by build and shell env = { LOGOS_CORE_ROOT = "${logosCore}"; LOGOS_BLOCKCHAIN_ROOT = "${logosBlockchain}"; @@ -29,9 +30,8 @@ CLANG_PATH = "${llvmPkgs.clang}/bin/clang"; }; - args = { - inherit (env) LOGOS_CORE_ROOT LOGOS_BLOCKCHAIN_ROOT LIBCLANG_PATH CLANG_PATH; - + # 2. Tools and libraries shared by build and shell + baseArgs = env // { nativeBuildInputs = [ pkgs.cmake pkgs.ninja @@ -52,40 +52,64 @@ pkgs.libiconv ]; }; + + viewer = inputs.logos-module-viewer.packages.${system}.default; in - f { inherit pkgs args; }); + f { inherit pkgs system baseArgs viewer; }); in { - packages = forAllSystems ({ pkgs, args }: + packages = forAllSystems ({ pkgs, baseArgs, ... }: { - default = pkgs.stdenv.mkDerivation (args // { + default = pkgs.stdenv.mkDerivation (baseArgs // { pname = "logos-blockchain-module"; version = "dev"; src = ./.; - nativeBuildInputs = args.nativeBuildInputs ++ [ pkgs.qt6.wrapQtAppsHook ]; + nativeBuildInputs = baseArgs.nativeBuildInputs ++ [ pkgs.qt6.wrapQtAppsHook ]; CARGO_HOME = "${"$"}TMPDIR/cargo-home"; - - preConfigure = '' - mkdir -p $CARGO_HOME - ''; + preConfigure = "mkdir -p $CARGO_HOME"; }); } ); - devShells = forAllSystems ({ pkgs, args }: + apps = forAllSystems ({ pkgs, system, viewer, ... }: + let + pkg = self.packages.${system}.default; + in { - default = pkgs.mkShell (args // { + default = { + type = "app"; + program = "${pkgs.writeShellScriptBin "inspect-module" '' + ${viewer}/bin/logos-module-viewer --module ${pkg}/lib/liblogos-blockchain-module.so + ''}/bin/inspect-module"; + }; + } + ); + + devShells = forAllSystems ({ pkgs, system, ... }: + let + pkg = self.packages.${system}.default; + in + { + default = pkgs.mkShell { + inputsFrom = [ pkg ]; + + # Inherit environment variables from the package + inherit (pkg) LOGOS_CORE_ROOT LOGOS_BLOCKCHAIN_ROOT LIBCLANG_PATH CLANG_PATH; + shellHook = '' - echo "Logos Blockchain Module dev environment" - echo "LOGOS_CORE_ROOT: $LOGOS_CORE_ROOT" - echo "LOGOS_BLOCKCHAIN_ROOT: $LOGOS_BLOCKCHAIN_ROOT" - echo "" - echo "Build with:" - echo " just build" + BLUE='\e[1;34m' + GREEN='\e[1;32m' + YELLOW='\e[1;33m' + RESET='\e[0m' + + echo -e "\n''${BLUE}=== Logos Blockchain Module Development Environment ===''${RESET}" + echo -e "''${GREEN}Core SDK:''${RESET} $LOGOS_CORE_ROOT" + echo -e "''${GREEN}Blockchain:''${RESET} $LOGOS_BLOCKCHAIN_ROOT" + echo -e "''${BLUE}---------------------------------------------------------''${RESET}" ''; - }); + }; } ); }; diff --git a/justfile b/justfile index 5845a50..0854203 100644 --- a/justfile +++ b/justfile @@ -10,7 +10,7 @@ build: cmake --build build --parallel --target liblogos-blockchain-module update: clean-full - cmake --build build --parallel --target logos_cargo_build + cmake --build build --parallel --target logos_blockchain_libs just build clean: