junie refactor cmakelists and flake

This commit is contained in:
Alejandro Cabeza Romero 2026-01-27 10:31:49 +01:00
parent 243276e61a
commit 021939a4a0
No known key found for this signature in database
GPG Key ID: DA3D14AE478030FD
4 changed files with 413 additions and 35 deletions

View File

@ -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)

363
flake.lock generated
View File

@ -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"

View File

@ -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}"
'';
});
};
}
);
};

View File

@ -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: