diff --git a/.github/workflows/build-macos-arm64.yml b/.github/workflows/build-macos-arm64.yml index e1ac7e3a..d718ac43 100644 --- a/.github/workflows/build-macos-arm64.yml +++ b/.github/workflows/build-macos-arm64.yml @@ -28,13 +28,21 @@ jobs: home: ${{ github.workspace }}/build/sdk cache_packages: true - - name: Compile Release - run: make apple-clang-armv8 TESTNET=${{ inputs.chain-network == 'testnet' && '1' || '0' }} +# - name: Compile Release +# run: make apple-clang-armv8 TESTNET=${{ inputs.chain-network == 'testnet' && '1' || '0' }} - - name: CLI Artifacts - uses: ./.github/actions/upload-artifacts + - name: Compile Release + run: make release TESTNET=${{ inputs.chain-network == 'testnet' && '1' || '0' }} + + - uses: actions/upload-artifact@v4 with: - chain-network: ${{ inputs.chain-network }} - assets: lethean-* - asset-type: 'cli' - asset-directory: ${{ github.workspace }}/build/apple-clang-armv8/src \ No newline at end of file + name: "${{ inputs.chain-network == 'testnet' && 'testnet-' || '' }}apple-clang-armv8" + path: ${{ github.workspace }}/build/release/packages/lethean-* + +# - name: CLI Artifacts +# uses: ./.github/actions/upload-artifacts +# with: +# chain-network: ${{ inputs.chain-network }} +# assets: lethean-* +# asset-type: 'cli' +# asset-directory: ${{ github.workspace }}/build/apple-clang-armv8/src \ No newline at end of file diff --git a/.github/workflows/build-windows.yml b/.github/workflows/build-windows.yml index c3f4b173..75c5b2b5 100644 --- a/.github/workflows/build-windows.yml +++ b/.github/workflows/build-windows.yml @@ -28,12 +28,19 @@ jobs: cache_packages: true - name: Compile Release - run: make msvc-194-x86_64 TESTNET=${{ inputs.chain-network == 'testnet' && '1' || '0' }} + run: make release TESTNET=${{ inputs.chain-network == 'testnet' && '1' || '0' }} +# +# - name: Compile Release +# run: make msvc-194-x86_64 TESTNET=${{ inputs.chain-network == 'testnet' && '1' || '0' }} - - name: CLI Artifacts - uses: ./.github/actions/upload-artifacts + - uses: actions/upload-artifact@v4 with: - chain-network: ${{ inputs.chain-network }} - assets: lethean-* - asset-type: 'cli' - asset-directory: ${{ github.workspace }}/build/msvc-194-x86_64/src/Release + name: "${{ inputs.chain-network == 'testnet' && 'testnet-' || '' }}cli-msvc-194-x86_64" + path: ${{ github.workspace }}/build/release/packages/lethean-* +# - name: CLI Artifacts +# uses: ./.github/actions/upload-artifacts +# with: +# chain-network: ${{ inputs.chain-network }} +# assets: lethean-* +# asset-type: 'cli' +# asset-directory: ${{ github.workspace }}/build/release/packages diff --git a/CMakeLists.txt b/CMakeLists.txt index e72515a9..9ac781f4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16) set(DISABLE_TOR TRUE CACHE BOOL "Disable TOR library(and related tor-connect submodule)") -PROJECT(Zano) +PROJECT(Lethean) set(VERSION "1.0") message("OPENSSL_INCLUDE_DIR: ${OPENSSL_INCLUDE_DIR}") @@ -297,7 +297,7 @@ else() endif() endif() -set(BUILD_TESTS FALSE CACHE BOOL "Build Zano tests") +set(BUILD_TESTS FALSE CACHE BOOL "Build Lethean tests") set(DISABLE_MDBX FALSE CACHE BOOL "Exclude mdbx from build(need for a first time)") if(NOT DISABLE_MDBX) add_definitions(-DENABLED_ENGINE_MDBX) @@ -310,3 +310,5 @@ add_subdirectory(src) if (BUILD_TESTS) add_subdirectory(tests) endif() + +include(CPackConfig) \ No newline at end of file diff --git a/LICENSE b/LICENSE.txt similarity index 100% rename from LICENSE rename to LICENSE.txt diff --git a/Makefile b/Makefile index 53b0f495..12acefab 100644 --- a/Makefile +++ b/Makefile @@ -11,7 +11,7 @@ # Default to “unknown” – will be overwritten below. CPU_CORES := 1 -TESTNET ?= 0 +TESTNET:= 0 BUILD_TYPE ?=Release # ----------------------------------------------------------------- @@ -80,10 +80,11 @@ CC_DOCKER_FILE?=utils/docker/images/lthn-chain/Dockerfile all: help release: conan-profile-detect - @echo "Building profile: release" + @echo "Building profile: release $(TESTNET)" CONAN_HOME=$(CONAN_CACHE) conan install . --output-folder=build/release --build=missing -s build_type=$(BUILD_TYPE) cmake -S . -B build/release -DCMAKE_TOOLCHAIN_FILE=build/release/conan_toolchain.cmake -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) -DTESTNET=$(TESTNET) cmake --build build/release --config=$(BUILD_TYPE) --parallel=$(CPU_CORES) + (cd build/release && cpack) debug: conan-profile-detect @echo "Building profile: debug" diff --git a/cmake/CPackConfig.cmake b/cmake/CPackConfig.cmake new file mode 100644 index 00000000..08a4ab4c --- /dev/null +++ b/cmake/CPackConfig.cmake @@ -0,0 +1,79 @@ +include(${CMAKE_SOURCE_DIR}/cmake/config-vars.cmake) + +if(CMAKE_BUILD_TYPE STREQUAL "Release") + set(CPACK_PACKAGE_NAME "${package_name}") + set(CPACK_PACKAGE_VENDOR "${package_vendor}") + set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${package_description}") + set(CPACK_PACKAGE_VERSION "${package_version}") + set(CPACK_PACKAGE_CONTACT "${package_contact}") + set(CPACK_PACKAGE_HOMEPAGE_URL "${package_website}") + +# set(CPACK_PACKAGING_INSTALL_PREFIX "/usr/local") # Linux/macOS default +# if(WIN32) +# set(CPACK_PACKAGING_INSTALL_PREFIX "C:/Program Files/${PROJECT_NAME}") +# endif() + + if(APPLE) + if("${package_macos_installer}" STREQUAL "DMG") + set(CPACK_GENERATOR "DragNDrop") +# set(CPACK_DMG_BACKGROUND_IMAGE "${CMAKE_SOURCE_DIR}/resources/dmg_background.png") + set(CPACK_DMG_VOLUME_NAME "${CPACK_PACKAGE_NAME} ${CPACK_PACKAGE_VERSION}") + message("Registered CPACK_GENERATOR: DragNDrop") + else () + set(CPACK_GENERATOR "productbuild") + set(CPACK_PRODUCTBUILD_IDENTIFIER "${package_macos_pkg_productbuild_identifier}") +# set(CPACK_PRODUCTBUILD_SIGNING_IDENTITY "Developer ID Installer: Your Company (TEAMID)") + message("Registered CPACK_GENERATOR: productbuild") + endif () + elseif(WIN32) + set(CPACK_GENERATOR "WIX") + message("Registered CPACK_GENERATOR: WIX") +# set(CPACK_WIX_PRODUCT_ICON "${CMAKE_SOURCE_DIR}/resources/windows_icon.ico") +# set(CPACK_WIX_LICENSE_RTF "${CMAKE_SOURCE_DIR}/LICENSE.rtf") +# set(CPACK_WIX_UPGRADE_GUID "D3F5A9C1-4B2E-4F5A-9C71-123456789ABC") # change once per major version + else() + set(CPACK_GENERATOR "DEB") + message("Registered CPACK_GENERATOR: deb") + set(CPACK_DEBIAN_PACKAGE_MAINTAINER "${package_contact}") + set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.28)") + set(CPACK_DEBIAN_PACKAGE_SECTION "utils") + set(CPACK_DEBIAN_ARCHITECTURE "${CMAKE_SYSTEM_PROCESSOR}") + # post‑install script (e.g., to register a systemd service) +# set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA +# "${CMAKE_SOURCE_DIR}/scripts/postinstall.sh") + endif() + + list(APPEND CPACK_GENERATOR "TXZ" "ZIP") + message( "Registered CPACK_GENERATOR: tgz") + message( "Registered CPACK_GENERATOR: zip") + set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY OFF) + set(CPACK_ARCHIVE_COMPONENT_INSTALL OFF) + set(CPACK_COMPONENTS_ALL) + set(CPACK_GENERATE_SHASUM ON) + set(CPACK_SHASUM_ALGORITHM SHA256) + message( "Using SHA256 Checksums") + + set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE.txt") +# set(CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/README.md") + + set(CPACK_PACKAGE_DIRECTORY "${CMAKE_BINARY_DIR}/packages") + + install(FILES README.md LICENSE.txt + DESTINATION . + ) + + set(_arch "${CMAKE_SYSTEM_PROCESSOR}") + + if(_arch MATCHES "AMD64|x86_64") + set(_arch "x86_64") + elseif(_arch MATCHES "arm64|aarch64") + set(_arch "arm64") + endif() + + string(TOLOWER "${CMAKE_SYSTEM_NAME}" _sys_name_lc) + + set(CPACK_PACKAGE_FILE_NAME + "${package_name}-${CPACK_PACKAGE_VERSION}-${_sys_name_lc}-${_arch}") + + include(CPack) +endif() \ No newline at end of file diff --git a/cmake/config-vars.cmake b/cmake/config-vars.cmake index fd96c731..5b48dce0 100644 --- a/cmake/config-vars.cmake +++ b/cmake/config-vars.cmake @@ -10,6 +10,8 @@ set(currency_display_decimal_point 12 CACHE STRING "CURRENCY_DISPLAY_DECIMAL_POI set(currency_name_abr "LTHN" CACHE STRING "CURRENCY_NAME_ABR" ) set(currency_name_base "Lethean" CACHE STRING "CURRENCY_NAME_BASE" ) set(currency_name_short_base "Lethean" CACHE STRING "CURRENCY_NAME_SHORT_BASE" ) + + # prefix is 'iT', non auditable wallets then use 'H', auditable wallets use 'h'; 'N' is a base addr, 'n' is a sub address, set(address_prefix 0x1eaf7 CACHE STRING "CURRENCY_PUBLIC_ADDRESS_BASE58_PREFIX" ) # addresses start with 'iTHN' set(address_prefix_integrated 0xdeaf7 CACHE STRING "CURRENCY_PUBLIC_INTEG_ADDRESS_V2_BASE58_PREFIX" ) # integrated addresses start with 'iTHn' @@ -29,8 +31,22 @@ if (TESTNET) set(p2p_default_port 36942 CACHE STRING "P2P_DEFAULT_PORT" ) set(rpc_default_port 36941 CACHE STRING "RPC_DEFAULT_PORT" ) set(stratum_default_port 36940 CACHE STRING "STRATUM_DEFAULT_PORT" ) + set(package_name "lethean-testnet-cli" CACHE STRING "CPACK_PACKAGE_NAME" ) else () + message(CHECK_FAIL "bad") set(p2p_default_port 36942 CACHE STRING "P2P_DEFAULT_PORT" ) set(rpc_default_port 36941 CACHE STRING "RPC_DEFAULT_PORT" ) set(stratum_default_port 36940 CACHE STRING "STRATUM_DEFAULT_PORT" ) + set(package_name "lethean-cli" CACHE STRING "CPACK_PACKAGE_NAME" ) endif () +# installer config +set(package_vendor "Lethean Community" CACHE STRING "CPACK_PACKAGE_VENDOR" ) +set(package_description "A privacy‑preserving blockchain node" CACHE STRING "CPACK_PACKAGE_DESCRIPTION_SUMMARY" ) +set(package_version "1.0.0" CACHE STRING "CPACK_PACKAGE_VERSION" ) +set(package_contact "support@lt.hn" CACHE STRING "CPACK_PACKAGE_CONTACT" ) +set(package_website "https://github.com/letheanVPN/blockchain" CACHE STRING "CPACK_PACKAGE_HOMEPAGE_URL" ) +set(package_macos_installer "PKG" CACHE STRING "CPACK_GENERATOR" ) +set(package_macos_dmg_background "DMG" CACHE STRING "CPACK_DMG_BACKGROUND_IMAGE" ) +set(package_macos_pkg_productbuild_identifier "com.lethean.blockchainnode" CACHE STRING "CPACK_PRODUCTBUILD_IDENTIFIER" ) +set(package_macos_pkg_productbuild_signer "Developer ID Installer: Your Company (TEAMID)" CACHE STRING "CPACK_PRODUCTBUILD_SIGNING_IDENTITY" ) + diff --git a/contrib/db/libmdbx/packages/rpm/CMakeLists.txt b/contrib/db/libmdbx/packages/rpm/CMakeLists.txt index 5949e9f0..39befcb7 100644 --- a/contrib/db/libmdbx/packages/rpm/CMakeLists.txt +++ b/contrib/db/libmdbx/packages/rpm/CMakeLists.txt @@ -126,9 +126,9 @@ if(UNIX AND NOT APPLE) target_link_libraries(${TARGET}_SHARED rt) endif() -install(TARGETS ${TARGET}_STATIC DESTINATION ${CMAKE_INSTALL_PREFIX}/lib64 COMPONENT mdbx) -install(TARGETS ${TARGET}_SHARED DESTINATION ${CMAKE_INSTALL_PREFIX}/lib64 COMPONENT mdbx) -install(FILES mdbx.h DESTINATION ${CMAKE_INSTALL_PREFIX}/include COMPONENT mdbx-devel) +#install(TARGETS ${TARGET}_STATIC DESTINATION ${CMAKE_INSTALL_PREFIX}/lib64 COMPONENT mdbx) +#install(TARGETS ${TARGET}_SHARED DESTINATION ${CMAKE_INSTALL_PREFIX}/lib64 COMPONENT mdbx) +#install(FILES mdbx.h DESTINATION ${CMAKE_INSTALL_PREFIX}/include COMPONENT mdbx-devel) add_subdirectory(src/tools) add_subdirectory(test) diff --git a/contrib/db/libmdbx/src/CMakeLists.txt b/contrib/db/libmdbx/src/CMakeLists.txt index 7dfc94aa..5e39f344 100644 --- a/contrib/db/libmdbx/src/CMakeLists.txt +++ b/contrib/db/libmdbx/src/CMakeLists.txt @@ -61,12 +61,12 @@ if(CC_HAS_VISIBILITY) target_compile_options(mdbx PRIVATE "-fvisibility=hidden") endif() -install(TARGETS mdbx - LIBRARY DESTINATION lib COMPONENT runtime - RUNTIME DESTINATION bin COMPONENT runtime - ARCHIVE DESTINATION lib/static COMPONENT devel - PUBLIC_HEADER DESTINATION include - INCLUDES DESTINATION include COMPONENT devel) +#install(TARGETS mdbx +# LIBRARY DESTINATION lib COMPONENT runtime +# RUNTIME DESTINATION bin COMPONENT runtime +# ARCHIVE DESTINATION lib/static COMPONENT devel +# PUBLIC_HEADER DESTINATION include +# INCLUDES DESTINATION include COMPONENT devel) ################################################################################ # diff --git a/contrib/db/libmdbx/src/tools/CMakeLists.txt b/contrib/db/libmdbx/src/tools/CMakeLists.txt index 01ecd7dd..fe5197b0 100644 --- a/contrib/db/libmdbx/src/tools/CMakeLists.txt +++ b/contrib/db/libmdbx/src/tools/CMakeLists.txt @@ -32,8 +32,8 @@ foreach(TOOL ${MDBX_TOOLS}) C_STANDARD ${MDBX_C_STANDARD} C_STANDARD_REQUIRED ON INTERPROCEDURAL_OPTIMIZATION $) - install(TARGETS ${TOOL} DESTINATION ${CMAKE_INSTALL_PREFIX}/bin COMPONENT mdbx) - install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/../man1/${TOOL}.1 DESTINATION ${CMAKE_INSTALL_PREFIX}/man/man1 COMPONENT mdbx) +# install(TARGETS ${TOOL} DESTINATION ${CMAKE_INSTALL_PREFIX}/bin COMPONENT mdbx) +# install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/../man1/${TOOL}.1 DESTINATION ${CMAKE_INSTALL_PREFIX}/man/man1 COMPONENT mdbx) endforeach() if(LIB_MATH) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 4cfb615f..e98dab7a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -189,3 +189,6 @@ else () set_property(TARGET connectivity_tool PROPERTY OUTPUT_NAME "lethean-testnet-chain-tool") endif () +install(TARGETS daemon simplewallet + RUNTIME DESTINATION bin) +