From 08b9208f566ddf817c2878ebd597eba72e567698 Mon Sep 17 00:00:00 2001 From: Snider Date: Tue, 26 Mar 2024 18:22:52 +0000 Subject: [PATCH] ci build update --- .github/workflows/cli-testnet.yml | 298 +++++++++++++++------------- utils/build/testnet_linux_cli.sh | 24 ++- utils/build/testnet_linux_gui.sh | 2 +- utils/build/testnet_mac_osx_cli.sh | 2 +- utils/build/testnet_mac_osx_gui.sh | 2 +- utils/build/testnet_windows_cli.bat | 2 +- utils/build/testnet_windows_gui.bat | 2 +- 7 files changed, 180 insertions(+), 152 deletions(-) diff --git a/.github/workflows/cli-testnet.yml b/.github/workflows/cli-testnet.yml index 65da3196..34e66b7e 100644 --- a/.github/workflows/cli-testnet.yml +++ b/.github/workflows/cli-testnet.yml @@ -97,146 +97,158 @@ jobs: tag_name: canary prerelease: true files: '*ethean-${{ matrix.target }}-cli.*' -# linux-amd64: -# runs-on: ubuntu-20.04 -# env: -# CCACHE_TEMPDIR: ${{ github.workspace }}/ccache -# steps: -# - name: Cancel Previous Runs -# uses: styfle/cancel-workflow-action@0.9.1 -# with: -# access_token: ${{ github.token }} -# - uses: actions/checkout@v3 -# with: -# fetch-depth: 0 -# submodules: recursive -# - uses: actions/cache@v3 -# with: -# path: ${{ github.workspace }}/ccache -# key: ccache-${{ runner.os }}-build-testnet-cli -# restore-keys: ccache-${{ runner.os }}-build-testnet-cli -# - name: update apt -# run: sudo apt update -# - name: install dependencies -# run: sudo apt-get install -y python-dev autotools-dev libboost-all-dev libicu-dev libbz2-dev git screen checkinstall zlib1g-dev ccache miniupnpc -# - name: build server -# run: | -# ${{env.CCACHE_SETTINGS}} -# ./utils/build/testnet_linux_cli.sh -# - name: Move Tarball -# run: cd build/release && mv lethean-linux-cli-*.tar.bz2 ../../ -# - uses: actions/upload-artifact@v3 -# with: -# name: lethean-linux-cli -# if-no-files-found: error -# path: lethean-linux-cli-*.tar.bz2 -# - name: Release -# uses: softprops/action-gh-release@v1 -# if: startsWith(github.ref, 'refs/tags/') -# with: -# files: ${{ github.workspace }}/lethean-linux-cli-*.tar.bz2 -# macos-amd64: -# runs-on: macos-latest -# env: -# CCACHE_TEMPDIR: ${{ github.workspace }}/ccache -# steps: -# - name: Cancel Previous Runs -# uses: styfle/cancel-workflow-action@0.9.1 -# with: -# access_token: ${{ github.token }} -# - uses: actions/checkout@v3 -# with: -# fetch-depth: 0 -# submodules: recursive -# - uses: actions/cache@v3 -# with: -# path: ${{ github.workspace }}/ccache -# key: ccache-${{ runner.os }}-build-testnet-cli -# restore-keys: ccache-${{ runner.os }}-build-testnet-cli -# - name: install dependencies -# run: HOMEBREW_NO_AUTO_UPDATE=1 brew install openssl boost icu4c ccache miniupnpc -# - name: build server -# env: -# PKG_CONFIG_PATH: "/usr/local/opt/openssl@3/lib/pkgconfig" -# OPENSSL_ROOT_DIR: "/usr/local/opt/openssl@3" -# ZANO_BOOST_ROOT: "/opt/homebrew/opt/boost" -# ZANO_BOOST_LIBS_PATH: "/opt/homebrew/opt/boost/lib" -# CMAKE_OSX_SYSROOT: "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.1.sdk" -# run: | -# ${{env.CCACHE_SETTINGS}} -# export LIBRARY_PATH=${LIBRARY_PATH}:/usr/local/opt/icu4c/lib -# ./utils/build/testnet_mac_osx_cli.sh -# - name: Move Tarball -# run: cd build/release && mv lethean-macos-cli-*.tar.bz2 ../../ -# - uses: actions/upload-artifact@v3 -# with: -# name: lethean-macos-cli -# if-no-files-found: error -# path: lethean-macos-cli-*.tar.bz2 -# - name: Release -# uses: softprops/action-gh-release@v1 -# if: startsWith(github.ref, 'refs/tags/') -# with: -# files: ${{ github.workspace }}/lethean-macos-cli-*.tar.bz2 -# windows-amd64: -# runs-on: windows-latest -# env: -# CCACHE_TEMPDIR: ${{ github.workspace }}/ccache -# steps: -# - name: Cancel Previous Runs -# uses: styfle/cancel-workflow-action@0.9.1 -# with: -# access_token: ${{ github.token }} -# - uses: actions/checkout@v3 -# with: -# fetch-depth: 0 -# submodules: recursive -# - uses: actions/cache@v3 -# with: -# path: ${{ github.workspace }}/ccache -# key: ccache-${{ runner.os }}-build-testnet-cli -# restore-keys: ccache-${{ runner.os }}-build-testnet-cli -# - name: Eat the Choco -# run: | -# choco install openssl --version 1.1.1.1500 -y -# choco install ccache -y -# choco install zip -y -# - name: install msvc toolset -# uses: ilammy/msvc-dev-cmd@v1 -# - name: Install boost -# uses: MarkusJx/install-boost@v2.4.1 -# id: install-boost -# with: -# # REQUIRED: Specify the required boost version -# # A list of supported versions can be found here: -# # https://github.com/MarkusJx/prebuilt-boost/blob/main/versions-manifest.json -# boost_version: 1.80.0 -# platform_version: 2022 -# toolset: msvc -# link: static -# - name: Set up Visual Studio shell -# uses: egor-tensin/vs-shell@v2 -# with: -# arch: x64 -# - name: build server -# env: -# QT_PREFIX_PATH: C:\ProgramData\chocolatey\lib\Qt5.11.2\5.11.2 -# BOOST_ROOT: ${{ steps.install-boost.outputs.BOOST_ROOT }} -# LOCAL_BOOST_PATH: ${{ steps.install-boost.outputs.BOOST_ROOT }} -# OPENSSL_ROOT_DIR: "C:\\Program Files\\OpenSSL-Win64" -# CCACHE_TEMPDIR: ${{ github.workspace }}/ccache -# run: | -# refreshenv -# ${{env.CCACHE_SETTINGS}} -# .\utils\build\testnet_windows_cli.bat -# - uses: actions/upload-artifact@v3 -# with: -# name: lethean-windows-cli -# if-no-files-found: error -# path: ${{ github.workspace }}\lethean-win-cli-*.zip -# - name: Release -# uses: softprops/action-gh-release@v1 -# if: startsWith(github.ref, 'refs/tags/') -# with: -# files: | -# lethean-win-cli-* + linux-amd64: + runs-on: ubuntu-20.04 + env: + CCACHE_TEMPDIR: ${{ github.workspace }}/ccache + steps: + - name: Cancel Previous Runs + uses: styfle/cancel-workflow-action@0.9.1 + with: + access_token: ${{ github.token }} + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + submodules: recursive + - uses: actions/cache@v3 + with: + path: ${{ github.workspace }}/ccache + key: ccache-${{ runner.os }}-build-testnet-cli + restore-keys: ccache-${{ runner.os }}-build-testnet-cli + - name: update apt + run: sudo apt update + - name: install dependencies + run: sudo apt-get install -y python-dev autotools-dev libboost-all-dev libicu-dev libbz2-dev git screen checkinstall zlib1g-dev ccache miniupnpc + - name: build server + run: | + ${{env.CCACHE_SETTINGS}} + ./utils/build/testnet_linux_cli.sh + - name: Move Tarball + run: cd build/release && mv lethean-linux-cli-*.tar.bz2 ../../ + - uses: actions/upload-artifact@v3 + with: + name: lethean-linux-cli + if-no-files-found: error + path: lethean-linux-cli-*.tar.bz2 + - name: Release + uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/') + with: + files: ${{ github.workspace }}/testnet-lethean-linux-cli-*.tar.bz2 + - name: Release Tag + uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/') + with: + files: '*ethean-${{ matrix.target }}-cli.*' + - name: Release Branch + uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/heads/iTw3') + with: + tag_name: canary + prerelease: true + files: '*ethean-${{ matrix.target }}-cli.*' + macos-amd64: + runs-on: macos-latest + env: + CCACHE_TEMPDIR: ${{ github.workspace }}/ccache + steps: + - name: Cancel Previous Runs + uses: styfle/cancel-workflow-action@0.9.1 + with: + access_token: ${{ github.token }} + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + submodules: recursive + - uses: actions/cache@v3 + with: + path: ${{ github.workspace }}/ccache + key: ccache-${{ runner.os }}-build-testnet-cli + restore-keys: ccache-${{ runner.os }}-build-testnet-cli + - name: install dependencies + run: HOMEBREW_NO_AUTO_UPDATE=1 brew install openssl boost icu4c ccache miniupnpc + - name: build server + env: + PKG_CONFIG_PATH: "/usr/local/opt/openssl@3/lib/pkgconfig" + OPENSSL_ROOT_DIR: "/usr/local/opt/openssl@3" + ZANO_BOOST_ROOT: "/opt/homebrew/opt/boost" + ZANO_BOOST_LIBS_PATH: "/opt/homebrew/opt/boost/lib" + CMAKE_OSX_SYSROOT: "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.1.sdk" + run: | + ${{env.CCACHE_SETTINGS}} + export LIBRARY_PATH=${LIBRARY_PATH}:/usr/local/opt/icu4c/lib + ./utils/build/testnet_mac_osx_cli.sh + - name: Move Tarball + run: cd build/release && mv lethean-macos-cli-*.tar.bz2 ../../ + - uses: actions/upload-artifact@v3 + with: + name: lethean-macos-cli + if-no-files-found: error + path: lethean-macos-cli-*.tar.bz2 + - name: Release + uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/') + with: + files: ${{ github.workspace }}/lethean-macos-cli-*.tar.bz2 + windows-amd64: + runs-on: windows-latest + env: + CCACHE_TEMPDIR: ${{ github.workspace }}/ccache + steps: + - name: Cancel Previous Runs + uses: styfle/cancel-workflow-action@0.9.1 + with: + access_token: ${{ github.token }} + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + submodules: recursive + - uses: actions/cache@v3 + with: + path: ${{ github.workspace }}/ccache + key: ccache-${{ runner.os }}-build-testnet-cli + restore-keys: ccache-${{ runner.os }}-build-testnet-cli + - name: Eat the Choco + run: | + choco install openssl --version 1.1.1.1500 -y + choco install ccache -y + choco install zip -y + - name: install msvc toolset + uses: ilammy/msvc-dev-cmd@v1 + - name: Install boost + uses: MarkusJx/install-boost@v2.4.1 + id: install-boost + with: + # REQUIRED: Specify the required boost version + # A list of supported versions can be found here: + # https://github.com/MarkusJx/prebuilt-boost/blob/main/versions-manifest.json + boost_version: 1.80.0 + platform_version: 2022 + toolset: msvc + link: static + - name: Set up Visual Studio shell + uses: egor-tensin/vs-shell@v2 + with: + arch: x64 + - name: build server + env: + QT_PREFIX_PATH: C:\ProgramData\chocolatey\lib\Qt5.11.2\5.11.2 + BOOST_ROOT: ${{ steps.install-boost.outputs.BOOST_ROOT }} + LOCAL_BOOST_PATH: ${{ steps.install-boost.outputs.BOOST_ROOT }} + OPENSSL_ROOT_DIR: "C:\\Program Files\\OpenSSL-Win64" + CCACHE_TEMPDIR: ${{ github.workspace }}/ccache + run: | + refreshenv + ${{env.CCACHE_SETTINGS}} + .\utils\build\testnet_windows_cli.bat + - uses: actions/upload-artifact@v3 + with: + name: lethean-windows-cli + if-no-files-found: error + path: ${{ github.workspace }}\lethean-win-cli-*.zip + - name: Release + uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/') + with: + files: | + lethean-win-cli-* diff --git a/utils/build/testnet_linux_cli.sh b/utils/build/testnet_linux_cli.sh index 2768431c..d06837a7 100755 --- a/utils/build/testnet_linux_cli.sh +++ b/utils/build/testnet_linux_cli.sh @@ -11,13 +11,29 @@ # export QT_PREFIX_PATH=/home/user/Qt5.10.1/5.10.1/gcc_64 # export OPENSSL_ROOT_DIR=/home/user/openssl -ARCHIVE_NAME_PREFIX=lethean-linux-cli-x64- +ARCHIVE_NAME_PREFIX=testnet-lethean-linux-amd64-cli if [ -n "$build_prefix" ]; then ARCHIVE_NAME_PREFIX=${ARCHIVE_NAME_PREFIX}${build_prefix}- build_prefix_label="$build_prefix " fi +if [ $(conan --version &> /dev/null; echo $?) -eq 0 ]; then + echo "Conan is installed." +elif [ $(pip list | grep -Fq "conan"; echo $?) -eq 0 ]; then + echo "Conan is installed (verified via pip)." +else + echo "Conan does not appear to be installed. Installing..." + pip install conan # Install Conan +fi + +# Get the number of available CPU threads +num_threads=$(nproc) + +# Calculate desired number of jobs, ensuring a minimum of 1 +desired_jobs=$((num_threads - 1)) +desired_jobs=$((desired_jobs > 0 ? desired_jobs : 1)) + testnet_def="-D TESTNET=TRUE" testnet_label="testnet " @@ -31,13 +47,13 @@ echo "--------------------------------------------------" echo "Building...." rm -rf build; mkdir -p build/release; cd build/release; -cmake $testnet_def -D STATIC=true -D ARCH=x86-64 -D CMAKE_BUILD_TYPE=Release ../.. +cmake $testnet_def -D STATIC=true -D ARCH=x86-64 -D CMAKE_BUILD_TYPE=Release -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=contrib/cmake/conan_provider.cmake ../.. if [ $? -ne 0 ]; then echo "Failed to run cmake" exit 1 fi -make -j2 daemon lethean-cli-wallet connectivity_tool +make -j"$desired_jobs" daemon lethean-cli-wallet connectivity_tool if [ $? -ne 0 ]; then echo "Failed to make!" exit 1 @@ -55,7 +71,7 @@ package_filename=${ARCHIVE_NAME_PREFIX}.tar.bz2 rm -f ./$package_filename cd lethean -tar -cjvf ../$package_filename * +tar -cjvf ../../$package_filename * if [ $? -ne 0 ]; then echo "Failed to pack" exit 1 diff --git a/utils/build/testnet_linux_gui.sh b/utils/build/testnet_linux_gui.sh index 435214ea..7ee104d3 100755 --- a/utils/build/testnet_linux_gui.sh +++ b/utils/build/testnet_linux_gui.sh @@ -11,7 +11,7 @@ echo "--------------------------------------------------" echo "Building...." rm -rf build; mkdir -p build/release; cd build/release; -cmake -D TESTNET=TRUE -D STATIC=true -D ARCH=x86-64 -D BUILD_GUI=TRUE -D CMAKE_BUILD_TYPE=Release ../.. +cmake -D TESTNET=TRUE -D STATIC=true -D ARCH=x86-64 -D BUILD_GUI=TRUE -D CMAKE_BUILD_TYPE=Release -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=contrib/cmake/conan_provider.cmake ../.. if [ $? -ne 0 ]; then echo "Failed to run cmake" exit 1 diff --git a/utils/build/testnet_mac_osx_cli.sh b/utils/build/testnet_mac_osx_cli.sh index 27148d50..1a1ede1b 100755 --- a/utils/build/testnet_mac_osx_cli.sh +++ b/utils/build/testnet_mac_osx_cli.sh @@ -23,7 +23,7 @@ ARCHIVE_NAME_PREFIX=${ARCHIVE_NAME_PREFIX}testnet rm -rf build; mkdir -p build/release; cd build/release; -cmake $testnet_def -D OPENSSL_ROOT_DIR=$OPENSSL_ROOT_DIR -D CMAKE_OSX_SYSROOT=$CMAKE_OSX_SYSROOT -D CMAKE_BUILD_TYPE=Release -D BOOST_ROOT="$ZANO_BOOST_ROOT" -D BOOST_LIBRARYDIR="$ZANO_BOOST_LIBS_PATH" ../.. +cmake $testnet_def -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=contrib/cmake/conan_provider.cmake -D OPENSSL_ROOT_DIR=$OPENSSL_ROOT_DIR -D CMAKE_OSX_SYSROOT=$CMAKE_OSX_SYSROOT -D CMAKE_BUILD_TYPE=Release -D BOOST_ROOT="$ZANO_BOOST_ROOT" -D BOOST_LIBRARYDIR="$ZANO_BOOST_LIBS_PATH" ../.. if [ $? -ne 0 ]; then echo "Failed to cmake" exit 1 diff --git a/utils/build/testnet_mac_osx_gui.sh b/utils/build/testnet_mac_osx_gui.sh index 423e2add..89a8b917 100755 --- a/utils/build/testnet_mac_osx_gui.sh +++ b/utils/build/testnet_mac_osx_gui.sh @@ -13,7 +13,7 @@ ARCHIVE_NAME_PREFIX=lethean-gui-bundle-macos-testnet-$(arch) rm -rf build; mkdir -p build/release; cd build/release; -cmake -D TESTNET=TRUE -D OPENSSL_ROOT_DIR=$OPENSSL_ROOT_DIR -D CMAKE_OSX_SYSROOT=$CMAKE_OSX_SYSROOT -D BUILD_GUI=TRUE -D CMAKE_PREFIX_PATH="$ZANO_QT_PATH" -D CMAKE_BUILD_TYPE=Release -D BOOST_ROOT="$ZANO_BOOST_ROOT" -D BOOST_LIBRARYDIR="$ZANO_BOOST_LIBS_PATH" ../.. +cmake -D TESTNET=TRUE -D OPENSSL_ROOT_DIR=$OPENSSL_ROOT_DIR -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=contrib/cmake/conan_provider.cmake -D CMAKE_OSX_SYSROOT=$CMAKE_OSX_SYSROOT -D BUILD_GUI=TRUE -D CMAKE_PREFIX_PATH="$ZANO_QT_PATH" -D CMAKE_BUILD_TYPE=Release -D BOOST_ROOT="$ZANO_BOOST_ROOT" -D BOOST_LIBRARYDIR="$ZANO_BOOST_LIBS_PATH" ../.. if [ $? -ne 0 ]; then echo "Failed to cmake" exit 1 diff --git a/utils/build/testnet_windows_cli.bat b/utils/build/testnet_windows_cli.bat index ce6b1d8d..173fafcb 100644 --- a/utils/build/testnet_windows_cli.bat +++ b/utils/build/testnet_windows_cli.bat @@ -37,7 +37,7 @@ mkdir build @echo "---------------------------------------------------------------" cd %SOURCES_PATH%\build -"C:\\Program Files\CMake\bin\cmake.exe" %TESTNET_DEF% -D OPENSSL_ROOT_DIR="%OPENSSL_ROOT_DIR%" -D CMAKE_PREFIX_PATH="%QT_MSVC_PATH%" -D BOOST_ROOT="%BOOST_ROOT%" -D BOOST_LIBRARYDIR="%LOCAL_BOOST_LIB_PATH%" -D BUILD_GUI=false -D STATIC=FALSE -G "Visual Studio 17 2022" -T host=x64 .. +"C:\\Program Files\CMake\bin\cmake.exe" %TESTNET_DEF% -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=contrib/cmake/conan_provider.cmake -D OPENSSL_ROOT_DIR="%OPENSSL_ROOT_DIR%" -D CMAKE_PREFIX_PATH="%QT_MSVC_PATH%" -D BOOST_ROOT="%BOOST_ROOT%" -D BOOST_LIBRARYDIR="%LOCAL_BOOST_LIB_PATH%" -D BUILD_GUI=false -D STATIC=FALSE -G "Visual Studio 17 2022" -T host=x64 .. IF %ERRORLEVEL% NEQ 0 ( goto error ) diff --git a/utils/build/testnet_windows_gui.bat b/utils/build/testnet_windows_gui.bat index 7f5a415e..24907dad 100644 --- a/utils/build/testnet_windows_gui.bat +++ b/utils/build/testnet_windows_gui.bat @@ -34,7 +34,7 @@ set HUNTER_ROOT=%HOMEPATH%\.hunter rmdir build /s /q mkdir build cd build -cmake %TESTNET_DEF% -D OPENSSL_ROOT_DIR="%OPENSSL_ROOT_DIR%" -DCMAKE_CONFIGURATION_TYPES:STRING="Release" -D CMAKE_PREFIX_PATH="%QT_MSVC_PATH%" -D BUILD_GUI=TRUE -D STATIC=FALSE -G "Visual Studio 17 2022" -T host=x64 .. +cmake %TESTNET_DEF% -D OPENSSL_ROOT_DIR="%OPENSSL_ROOT_DIR%" -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=contrib/cmake/conan_provider.cmake -DCMAKE_CONFIGURATION_TYPES:STRING="Release" -D CMAKE_PREFIX_PATH="%QT_MSVC_PATH%" -D BUILD_GUI=TRUE -D STATIC=FALSE -G "Visual Studio 17 2022" -T host=x64 .. IF %ERRORLEVEL% NEQ 0 ( goto error )