mirror of
https://github.com/eosswedenorg/antelope-keygen
synced 2026-06-18 04:00:03 +02:00
Merge branch 'cpack' into develop
This commit is contained in:
commit
f5ab96e04f
39 changed files with 231 additions and 175 deletions
5
.github/workflows/package.yml
vendored
5
.github/workflows/package.yml
vendored
|
|
@ -15,13 +15,10 @@ jobs:
|
|||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
|
||||
- name: Build
|
||||
run: ./build.sh
|
||||
|
||||
- name: Package
|
||||
id: package
|
||||
run: |
|
||||
cmake --build build --config Release --target package_deb
|
||||
./build.sh -t Release --pkg-type deb
|
||||
FILE=$(ls build/*.deb | head -1)
|
||||
echo "::set-output name=filename::$FILE"
|
||||
echo "::set-output name=name::$(basename $FILE)"
|
||||
|
|
|
|||
101
CMakeLists.txt
101
CMakeLists.txt
|
|
@ -39,15 +39,108 @@ elseif (CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
|
|||
endif()
|
||||
|
||||
# --------------------------------
|
||||
# Additional project dirs
|
||||
# Program
|
||||
# --------------------------------
|
||||
|
||||
add_subdirectory( cli )
|
||||
add_subdirectory( docs )
|
||||
set (PROGRAM_EXE ${CMAKE_PROJECT_NAME})
|
||||
|
||||
set (PROGRAM_SOURCE
|
||||
src/core/file.cpp
|
||||
src/core/dictionary.cpp
|
||||
src/core/string.cpp
|
||||
src/core/isatty.cpp
|
||||
src/crypto/base58.cpp
|
||||
src/crypto/WIF.cpp
|
||||
src/console.cpp
|
||||
src/key_search.cpp
|
||||
src/key_search_helpers.cpp
|
||||
src/benchmark.cpp
|
||||
src/main.cpp
|
||||
)
|
||||
|
||||
if (WIN32 AND NOT FORCE_ANSI)
|
||||
set (PROGRAM_SOURCE ${PROGRAM_SOURCE} src/console_win32.cpp)
|
||||
else()
|
||||
# *nix should have ansi support.
|
||||
set (PROGRAM_SOURCE ${PROGRAM_SOURCE} src/console_ansi.cpp)
|
||||
endif()
|
||||
|
||||
# Libraries
|
||||
find_package(OpenSSL 1.1 REQUIRED)
|
||||
set (PROGRAM_SOURCE ${PROGRAM_SOURCE}
|
||||
src/crypto/openssl/ec.cpp
|
||||
src/crypto/openssl/hash.cpp
|
||||
)
|
||||
|
||||
if (USE_THREADS)
|
||||
find_package(Threads)
|
||||
if (Threads_FOUND)
|
||||
# Add preprocessor flag
|
||||
add_definitions( "-DHAVE_THREADS=1" )
|
||||
set (PROGRAM_SOURCE ${PROGRAM_SOURCE} src/key_search_mt.cpp)
|
||||
endif (Threads_FOUND)
|
||||
endif (USE_THREADS)
|
||||
|
||||
# Project config file
|
||||
configure_file(src/config.h.in "${PROJECT_BINARY_DIR}/config.h" @ONLY)
|
||||
include_directories(${PROJECT_BINARY_DIR})
|
||||
|
||||
# Include OpenSSL headers
|
||||
include_directories( ${OPENSSL_INCLUDE_DIR} )
|
||||
|
||||
add_executable( ${PROGRAM_EXE} ${PROGRAM_SOURCE} )
|
||||
|
||||
target_link_libraries( ${PROGRAM_EXE}
|
||||
PUBLIC
|
||||
${OPENSSL_LIBRARIES}
|
||||
${CMAKE_THREAD_LIBS_INIT}
|
||||
)
|
||||
|
||||
# --------------------------------
|
||||
# Additional install files
|
||||
# Install
|
||||
# --------------------------------
|
||||
|
||||
install(TARGETS ${PROGRAM_EXE} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||
|
||||
# Win32 specific.
|
||||
if (WIN32)
|
||||
if (CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
set (OPENSSL_LIBCRYPTO_NAME libcrypto-1_1-x64)
|
||||
else()
|
||||
set (OPENSSL_LIBCRYPTO_NAME libcrypto-1_1)
|
||||
endif()
|
||||
set( OPENSSL_LIBCRYPTO_DLL ${OPENSSL_ROOT_DIR}/bin/${OPENSSL_LIBCRYPTO_NAME}.dll )
|
||||
|
||||
# Need to copy libcrypto dll to binary folder.
|
||||
add_custom_command(TARGET ${PROGRAM_EXE} POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
${OPENSSL_LIBCRYPTO_DLL}
|
||||
${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}
|
||||
)
|
||||
|
||||
# We also need to copy libcrypto dll during install
|
||||
install(FILES ${OPENSSL_LIBCRYPTO_DLL} DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||
endif (WIN32)
|
||||
|
||||
# Readme and license
|
||||
install(FILES README.md LICENSE LICENSE.bitcoin
|
||||
DESTINATION ${CMAKE_INSTALL_SHAREDIR})
|
||||
|
||||
# Documentation
|
||||
|
||||
if (UNIX)
|
||||
configure_file( docs/eosio-keygen.1.in ${PROJECT_BINARY_DIR}/man1/eosio-keygen.1 )
|
||||
|
||||
install(DIRECTORY ${PROJECT_BINARY_DIR}/man1
|
||||
DESTINATION ${CMAKE_INSTALL_MANDIR})
|
||||
endif (UNIX)
|
||||
|
||||
# --------------------------------
|
||||
# Package
|
||||
# --------------------------------
|
||||
|
||||
set( CPACK_DEBIAN_PACKAGE_PRIORITY "optional" )
|
||||
set( CPACK_DEBIAN_PACKAGE_SECTION "misc" )
|
||||
set( CPACK_DEBIAN_PACKAGE_DEPENDS "libssl1.1, libc6" )
|
||||
|
||||
include( cpack_custom )
|
||||
|
|
|
|||
121
CMakeModules/cpack_custom.cmake
Normal file
121
CMakeModules/cpack_custom.cmake
Normal file
|
|
@ -0,0 +1,121 @@
|
|||
# Custom script to setup cpack properly.
|
||||
|
||||
# --------------------------------
|
||||
# System variables
|
||||
# --------------------------------
|
||||
|
||||
# check CMAKE_SIZEOF_VOID_P to know if we are 32 or 64 bit.
|
||||
set( CPACK_SYSTEM_ARCH "x86" )
|
||||
if (CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
set( CPACK_SYSTEM_ARCH "${CPACK_SYSTEM_ARCH}_64" )
|
||||
endif()
|
||||
|
||||
if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
|
||||
|
||||
# Set CPACK_SYSTEM_NAME, CPACK_SYSTEM_VERSION
|
||||
# and CPACK_DEBIAN_PACKAGE_ARCHITECTURE correctly for debian based systems.
|
||||
execute_process(COMMAND lsb_release -is OUTPUT_VARIABLE SYS OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
if (SYS)
|
||||
string(TOLOWER "${SYS}" CPACK_SYSTEM_NAME )
|
||||
|
||||
# Set CPACK_SYSTEM_VERSION
|
||||
execute_process(COMMAND lsb_release -rs OUTPUT_VARIABLE SYS_VER OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
if (SYS_VER)
|
||||
set( CPACK_SYSTEM_VERSION ${SYS_VER} )
|
||||
endif(SYS_VER)
|
||||
|
||||
# Try setting CPACK_DEBIAN_PACKAGE_ARCHITECTURE based on dpkg
|
||||
if (NOT CPACK_DEBIAN_PACKAGE_ARCHITECTURE)
|
||||
execute_process(
|
||||
COMMAND dpkg --print-architecture
|
||||
OUTPUT_VARIABLE ARCH
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
|
||||
if (ARCH)
|
||||
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${ARCH})
|
||||
endif()
|
||||
endif()
|
||||
endif(SYS)
|
||||
|
||||
|
||||
# set CPACK_DEBIAN_PACKAGE_ARCHITECTURE to somthing sane by default.
|
||||
if (NOT CPACK_DEBIAN_PACKAGE_ARCHITECTURE)
|
||||
|
||||
# debian uses different names for 32/64 bit.
|
||||
if (CPACK_SYSTEM_ARCH STREQUAL "x86")
|
||||
set( ARCH "i386" )
|
||||
else()
|
||||
set( ARCH "amd64" )
|
||||
endif()
|
||||
|
||||
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${ARCH})
|
||||
endif()
|
||||
|
||||
endif()
|
||||
|
||||
# CPACK_SYSTEM_NAME defaults are weird. so we set good default here.
|
||||
if (NOT CPACK_SYSTEM_NAME)
|
||||
set (CPACK_SYSTEM_NAME ${CMAKE_SYSTEM_NAME})
|
||||
endif()
|
||||
|
||||
# CPACK_SYSTEM_VERSION does not exist in original CPack. so we set a default here.
|
||||
if (NOT CPACK_SYSTEM_VERSION)
|
||||
set (CPACK_SYSTEM_VERSION ${CMAKE_SYSTEM_VERSION})
|
||||
endif()
|
||||
|
||||
|
||||
# --------------------------------
|
||||
# Package variables
|
||||
# --------------------------------
|
||||
|
||||
|
||||
# Forward some variables not handled by CPack.
|
||||
if (NOT CPACK_PACKAGE_CONTACT AND PROJECT_MAINTAINER)
|
||||
set( CPACK_PACKAGE_CONTACT ${PROJECT_MAINTAINER} )
|
||||
endif()
|
||||
|
||||
# Set "correct" filename that also include system version.
|
||||
if (CPACK_SYSTEM_VERSION)
|
||||
set( CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${PROJECT_VERSION}_${CPACK_SYSTEM_NAME}-${CPACK_SYSTEM_VERSION}_${CPACK_SYSTEM_ARCH}" )
|
||||
else()
|
||||
set( CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${PROJECT_VERSION}_${CPACK_SYSTEM_NAME}_${CPACK_SYSTEM_ARCH}" )
|
||||
endif()
|
||||
|
||||
|
||||
# .deb specific
|
||||
|
||||
# Set release version default 1.
|
||||
set( CPACK_DEBIAN_PACKAGE_RELEASE "1" CACHE STRING "Debian package release version" )
|
||||
|
||||
# For some reason CPackDeb does not honor CPACK_PACKAGE_HOMEPAGE_URL (that is set correctly)
|
||||
# if CPACK_DEBIAN_PACKAGE_HOMEPAGE (that the docs says it should.)
|
||||
# So we have to do it here.
|
||||
set( CPACK_DEBIAN_PACKAGE_HOMEPAGE "${PROJECT_HOMEPAGE_URL}" )
|
||||
|
||||
# Set "correct" filename that also include system version and architecture.
|
||||
set( CPACK_DEBIAN_FILE_NAME
|
||||
"${PROJECT_NAME}-${PROJECT_VERSION}-${CPACK_DEBIAN_PACKAGE_RELEASE}-${CPACK_SYSTEM_NAME}-${CPACK_SYSTEM_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.deb"
|
||||
)
|
||||
|
||||
|
||||
# --------------------------------
|
||||
# Generator default
|
||||
# --------------------------------
|
||||
|
||||
|
||||
# Defult to gzip tar on unix. zip otherwise.
|
||||
if (NOT CPACK_GENERATOR)
|
||||
if (UNIX)
|
||||
set( CPACK_GENERATOR "TGZ" )
|
||||
else()
|
||||
set( CPACK_GENERATOR "ZIP" )
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
||||
# --------------------------------
|
||||
# Include original CPack module.
|
||||
# --------------------------------
|
||||
|
||||
include( CPack )
|
||||
|
|
@ -1,65 +0,0 @@
|
|||
|
||||
# --------------------------------
|
||||
# Info
|
||||
# --------------------------------
|
||||
set( PACKAGE_NAME ${PROJECT_NAME} )
|
||||
set( PACKAGE_DESCRIPTION ${PROJECT_DESCRIPTION} )
|
||||
set( PACKAGE_VERSION "${PROJECT_VERSION}" )
|
||||
set( PACKAGE_HOMEPAGE_URL ${PROJECT_HOMEPAGE_URL} )
|
||||
set( PACKAGE_MAINTAINER ${PROJECT_MAINTAINER})
|
||||
|
||||
set( PACKAGE_PLATFORM "x86" )
|
||||
if (CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
set( PACKAGE_PLATFORM "${PACKAGE_PLATFORM}_64" )
|
||||
endif()
|
||||
|
||||
# --------------------------------
|
||||
# Debian script
|
||||
# --------------------------------
|
||||
|
||||
if (UNIX) # Only include in bash environments.
|
||||
|
||||
execute_process(
|
||||
COMMAND lsb_release -rs
|
||||
OUTPUT_VARIABLE UBUNTU_VERSION
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
|
||||
# Debian uses different names for 32 and 64 bit.
|
||||
if (PACKAGE_PLATFORM EQUAL "x86")
|
||||
set( PACKAGE_DEB_PLATFORM "i386" )
|
||||
else()
|
||||
set( PACKAGE_DEB_PLATFORM "amd64" )
|
||||
endif()
|
||||
|
||||
set( PACKAGE_DEB_RELEASE 1 CACHE STRING "Debian package release number")
|
||||
set( PACKAGE_DEB_VERSION ${PACKAGE_VERSION}-${PACKAGE_DEB_RELEASE} )
|
||||
set( PACKAGE_DEB_FILENAME ${PACKAGE_NAME}_${PACKAGE_DEB_VERSION}-ubuntu-${UBUNTU_VERSION}_${PACKAGE_DEB_PLATFORM}.deb )
|
||||
set( DEB_ROOT "${CMAKE_CURRENT_BINARY_DIR}/debroot" )
|
||||
|
||||
configure_file(debian_control.in ${DEB_ROOT}/DEBIAN/control @ONLY)
|
||||
|
||||
add_custom_target(package_deb
|
||||
COMMAND ${CMAKE_COMMAND} --install . --prefix "${DEB_ROOT}${CMAKE_INSTALL_PREFIX}"
|
||||
COMMAND fakeroot dpkg-deb --build ${DEB_ROOT} ${PACKAGE_DEB_FILENAME} > /dev/null
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
)
|
||||
|
||||
add_dependencies(package_deb ${PROGRAM_EXE})
|
||||
endif (UNIX)
|
||||
|
||||
# --------------------------------
|
||||
# Windows
|
||||
# --------------------------------
|
||||
if (WIN32)
|
||||
|
||||
set ( PACKAGE_FILENAME "${PACKAGE_NAME}_${PACKAGE_VERSION}-windows-${PACKAGE_PLATFORM}" )
|
||||
|
||||
add_custom_target(package
|
||||
COMMAND ${CMAKE_COMMAND} --install . --prefix "${PACKAGE_FILENAME}"
|
||||
COMMAND ${CMAKE_COMMAND} -E tar c "${PACKAGE_FILENAME}.zip" --format=zip "${PACKAGE_FILENAME}"
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
)
|
||||
|
||||
add_dependencies(package ${PROGRAM_EXE})
|
||||
endif (WIN32)
|
||||
15
build.sh
15
build.sh
|
|
@ -1,11 +1,11 @@
|
|||
#!/bin/bash
|
||||
|
||||
function usage() {
|
||||
echo "Usage: ${0##*/} [ -h|--help ] [ -t|--type Debug|Release|RelWithDebInfo|MinSizeRel ] [ --disable-threads ] [ --force-ansi ]"
|
||||
echo "Usage: ${0##*/} [ -h|--help ] [ -t|--type Debug|Release|RelWithDebInfo|MinSizeRel ] [--pkg-type deb|zip|tgz] [ --disable-threads ] [ --force-ansi ]"
|
||||
exit 1
|
||||
}
|
||||
|
||||
options=$(getopt -n "${0##*/}" -o "lht:" -l "help,type:,disable-threads,force-ansi" -- "$@")
|
||||
options=$(getopt -n "${0##*/}" -o "lht:" -l "help,type:,pkg-type:,disable-threads,force-ansi" -- "$@")
|
||||
|
||||
[ $? -eq 0 ] || usage
|
||||
|
||||
|
|
@ -24,6 +24,15 @@ while true; do
|
|||
}
|
||||
ARGS="${ARGS} -DCMAKE_BUILD_TYPE=${1}"
|
||||
;;
|
||||
--pkg-type)
|
||||
shift
|
||||
[[ ! "$1" =~ ^(deb|zip|tgz)$ ]] && {
|
||||
echo "Incorrect package type '$1' provided"
|
||||
usage
|
||||
}
|
||||
TARGET="package"
|
||||
ARGS="${ARGS} -DCPACK_GENERATOR=${1^^}"
|
||||
;;
|
||||
--disable-threads)
|
||||
ARGS="${ARGS} -DUSE_THREADS=OFF" ;;
|
||||
--force-ansi)
|
||||
|
|
@ -41,5 +50,5 @@ done
|
|||
|
||||
cmake -B build $ARGS .
|
||||
if [ ${ONLY_CONFIG} -eq 0 ]; then
|
||||
cmake --build build --clean-first --target
|
||||
cmake --build build --clean-first --target ${TARGET}
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -1,83 +0,0 @@
|
|||
cmake_minimum_required(VERSION 3.15)
|
||||
|
||||
# --------------------------------
|
||||
# Program
|
||||
# --------------------------------
|
||||
|
||||
set (PROGRAM_EXE ${CMAKE_PROJECT_NAME})
|
||||
|
||||
set (PROGRAM_SOURCE
|
||||
src/core/file.cpp
|
||||
src/core/dictionary.cpp
|
||||
src/core/string.cpp
|
||||
src/core/isatty.cpp
|
||||
src/crypto/base58.cpp
|
||||
src/crypto/WIF.cpp
|
||||
src/console.cpp
|
||||
src/key_search.cpp
|
||||
src/key_search_helpers.cpp
|
||||
src/benchmark.cpp
|
||||
src/main.cpp
|
||||
)
|
||||
|
||||
if (WIN32 AND NOT FORCE_ANSI)
|
||||
set (PROGRAM_SOURCE ${PROGRAM_SOURCE} src/console_win32.cpp)
|
||||
else()
|
||||
# *nix should have ansi support.
|
||||
set (PROGRAM_SOURCE ${PROGRAM_SOURCE} src/console_ansi.cpp)
|
||||
endif()
|
||||
|
||||
# Libraries
|
||||
find_package(OpenSSL 1.1 REQUIRED)
|
||||
set (PROGRAM_SOURCE ${PROGRAM_SOURCE}
|
||||
src/crypto/openssl/ec.cpp
|
||||
src/crypto/openssl/hash.cpp
|
||||
)
|
||||
|
||||
if (USE_THREADS)
|
||||
find_package(Threads)
|
||||
if (Threads_FOUND)
|
||||
# Add preprocessor flag
|
||||
add_definitions( "-DHAVE_THREADS=1" )
|
||||
set (PROGRAM_SOURCE ${PROGRAM_SOURCE} src/key_search_mt.cpp)
|
||||
endif (Threads_FOUND)
|
||||
endif (USE_THREADS)
|
||||
|
||||
# Project config file
|
||||
configure_file(src/config.h.in "${PROJECT_BINARY_DIR}/config.h" @ONLY)
|
||||
include_directories(${PROJECT_BINARY_DIR})
|
||||
|
||||
# Include OpenSSL headers
|
||||
include_directories( ${OPENSSL_INCLUDE_DIR} )
|
||||
|
||||
add_executable( ${PROGRAM_EXE} ${PROGRAM_SOURCE} )
|
||||
|
||||
target_link_libraries( ${PROGRAM_EXE}
|
||||
PUBLIC
|
||||
${OPENSSL_LIBRARIES}
|
||||
${CMAKE_THREAD_LIBS_INIT}
|
||||
)
|
||||
|
||||
install(TARGETS ${PROGRAM_EXE} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||
|
||||
# Win32 specific.
|
||||
if (WIN32)
|
||||
if (CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
set (OPENSSL_LIBCRYPTO_NAME libcrypto-1_1-x64)
|
||||
else()
|
||||
set (OPENSSL_LIBCRYPTO_NAME libcrypto-1_1)
|
||||
endif()
|
||||
set( OPENSSL_LIBCRYPTO_DLL ${OPENSSL_ROOT_DIR}/bin/${OPENSSL_LIBCRYPTO_NAME}.dll )
|
||||
|
||||
# Need to copy libcrypto dll to binary folder.
|
||||
add_custom_command(TARGET ${PROGRAM_EXE} POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
${OPENSSL_LIBCRYPTO_DLL}
|
||||
${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}
|
||||
)
|
||||
|
||||
# We also need to copy libcrypto dll during install
|
||||
install(FILES ${OPENSSL_LIBCRYPTO_DLL} DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||
endif (WIN32)
|
||||
|
||||
include( package )
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
Package: @PACKAGE_NAME@
|
||||
Version: @PACKAGE_DEB_VERSION@
|
||||
Description: @PACKAGE_DESCRIPTION@
|
||||
Section: misc
|
||||
Priority: optional
|
||||
Architecture: @PACKAGE_DEB_PLATFORM@
|
||||
Homepage: @PACKAGE_HOMEPAGE_URL@
|
||||
Maintainer: @PACKAGE_MAINTAINER@
|
||||
Depends: libssl1.1, libc6
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
|
||||
if (UNIX)
|
||||
configure_file( eosio-keygen.1.in ${PROJECT_BINARY_DIR}/man1/eosio-keygen.1 )
|
||||
|
||||
install(DIRECTORY ${PROJECT_BINARY_DIR}/man1
|
||||
DESTINATION ${CMAKE_INSTALL_MANDIR})
|
||||
endif (UNIX)
|
||||
Loading…
Add table
Add a link
Reference in a new issue