From fa8d4c70c3133f1668d8a9c2c3b71eca58c371c9 Mon Sep 17 00:00:00 2001 From: Czarek Nakamoto Date: Fri, 24 May 2024 07:34:48 +0200 Subject: [PATCH] fix macos compliance --- .github/workflows/compat.yaml | 106 ++++++++++++++------------------ build_single.sh | 7 ++- external/macos/build_unbound.sh | 48 +++++++++++++++ external/macos/config.sh | 12 ++++ 4 files changed, 111 insertions(+), 62 deletions(-) create mode 100755 external/macos/build_unbound.sh create mode 100755 external/macos/config.sh diff --git a/.github/workflows/compat.yaml b/.github/workflows/compat.yaml index 5b57379..d838606 100644 --- a/.github/workflows/compat.yaml +++ b/.github/workflows/compat.yaml @@ -2,6 +2,9 @@ name: compatibility check on: [push] jobs: mingw: + strategy: + matrix: + coin: [monero, wownero] runs-on: ubuntu-latest container: image: debian:bookworm @@ -19,22 +22,17 @@ jobs: git config --global --add safe.directory '*' git config --global user.email "ci@mrcyjanek.net" git config --global user.name "CI mrcyjanek.net" - ./apply_patches.sh monero - ./apply_patches.sh wownero - - name: monero/x86_64-w64-mingw32 - run: ./build_single.sh monero x86_64-w64-mingw32 -j$(nproc) - - name: wownero/x86_64-w64-mingw32 - run: ./build_single.sh wownero x86_64-w64-mingw32 -j$(nproc) - - name: monero/i686-w64-mingw32 - run: ./build_single.sh monero i686-w64-mingw32 -j$(nproc) - - name: wownero/i686-w64-mingw32 - run: ./build_single.sh wownero i686-w64-mingw32 -j$(nproc) + ./apply_patches.sh ${{ matrix.coin }} + - name: ${{ matrix.coin }}/x86_64-w64-mingw32 + run: ./build_single.sh ${{ matrix.coin }} x86_64-w64-mingw32 -j$(nproc) + - name: ${{ matrix.coin }}/i686-w64-mingw32 + run: ./build_single.sh ${{ matrix.coin }} i686-w64-mingw32 -j$(nproc) - name: rename artifacts run: | mkdir release/gh/ - for i in release/monero/* + for i in release/${{ matrix.coin }}/* do - mv "$i" "release/gh/monero_$(basename $i)" + mv "$i" "release/gh/${{ matrix.coin }}_$(basename $i)" done - name: Release uses: softprops/action-gh-release@v2 @@ -42,6 +40,9 @@ jobs: with: files: release/gh/* android: + strategy: + matrix: + coin: [monero, wownero] runs-on: ubuntu-latest container: image: debian:bookworm @@ -59,26 +60,19 @@ jobs: git config --global --add safe.directory '*' git config --global user.email "ci@mrcyjanek.net" git config --global user.name "CI mrcyjanek.net" - ./apply_patches.sh monero - ./apply_patches.sh wownero - - name: monero/x86_64-linux-android - run: ./build_single.sh monero x86_64-linux-android -j$(nproc) - - name: wownero/x86_64-linux-android - run: ./build_single.sh wownero x86_64-linux-android -j$(nproc) - - name: monero/aarch64-linux-android - run: ./build_single.sh monero aarch64-linux-android -j$(nproc) - - name: wownero/aarch64-linux-android - run: ./build_single.sh wownero aarch64-linux-android -j$(nproc) - - name: monero/arm-linux-androideabi - run: ./build_single.sh monero arm-linux-androideabi -j$(nproc) - - name: wownero/arm-linux-androideabi - run: ./build_single.sh wownero arm-linux-androideabi -j$(nproc) + ./apply_patches.sh ${{ matrix.coin }} + - name: ${{ matrix.coin }}/x86_64-linux-android + run: ./build_single.sh ${{ matrix.coin }} x86_64-linux-android -j$(nproc) + - name: ${{ matrix.coin }}/aarch64-linux-android + run: ./build_single.sh ${{ matrix.coin }} aarch64-linux-android -j$(nproc) + - name: ${{ matrix.coin }}/arm-linux-androideabi + run: ./build_single.sh ${{ matrix.coin }} arm-linux-androideabi -j$(nproc) - name: rename artifacts run: | mkdir release/gh/ - for i in release/monero/* + for i in release/${{ matrix.coin }}/* do - mv "$i" "release/gh/monero_$(basename $i)" + mv "$i" "release/gh/${{ matrix.coin }}_$(basename $i)" done - name: Release uses: softprops/action-gh-release@v2 @@ -86,6 +80,9 @@ jobs: with: files: release/gh/* linux: + strategy: + matrix: + coin: [monero, wownero] runs-on: ubuntu-latest container: image: debian:bookworm @@ -103,26 +100,19 @@ jobs: git config --global --add safe.directory '*' git config --global user.email "ci@mrcyjanek.net" git config --global user.name "CI mrcyjanek.net" - ./apply_patches.sh monero - ./apply_patches.sh wownero - - name: monero/x86_64-linux-gnu - run: ./build_single.sh monero x86_64-linux-gnu -j$(nproc) - - name: wownero/x86_64-linux-gnu - run: ./build_single.sh wownero x86_64-linux-gnu -j$(nproc) - - name: monero/aarch64-linux-gnu - run: ./build_single.sh monero aarch64-linux-gnu -j$(nproc) - - name: wownero/aarch64-linux-gnu - run: ./build_single.sh wownero aarch64-linux-gnu -j$(nproc) - - name: monero/i686-linux-gnu - run: ./build_single.sh monero i686-linux-gnu -j$(nproc) - - name: wownero/i686-linux-gnu - run: ./build_single.sh wownero i686-linux-gnu -j$(nproc) + ./apply_patches.sh ${{ matrix.coin }} + - name: ${{ matrix.coin }}/x86_64-linux-gnu + run: ./build_single.sh ${{ matrix.coin }} x86_64-linux-gnu -j$(nproc) + - name: ${{ matrix.coin }}/aarch64-linux-gnu + run: ./build_single.sh ${{ matrix.coin }} aarch64-linux-gnu -j$(nproc) + - name: ${{ matrix.coin }}/i686-linux-gnu + run: ./build_single.sh ${{ matrix.coin }} i686-linux-gnu -j$(nproc) - name: rename artifacts run: | mkdir release/gh/ - for i in release/monero/* + for i in release/${{ matrix.coin }}/* do - mv "$i" "release/gh/monero_$(basename $i)" + mv "$i" "release/gh/${{ matrix.coin }}_$(basename $i)" done - name: Release uses: softprops/action-gh-release@v2 @@ -130,6 +120,9 @@ jobs: with: files: release/gh/* darwin: + strategy: + matrix: + coin: [monero, wownero] runs-on: ubuntu-latest container: image: debian:bookworm @@ -149,20 +142,16 @@ jobs: git config --global user.name "CI mrcyjanek.net" ./apply_patches.sh monero ./apply_patches.sh wownero - - name: monero/x86_64-apple-darwin11 - run: ./build_single.sh monero x86_64-apple-darwin11 -j$(nproc) - - name: wownero/x86_64-apple-darwin11 - run: ./build_single.sh wownero x86_64-apple-darwin11 -j$(nproc) - - name: monero/aarch64-apple-darwin11 - run: ./build_single.sh monero aarch64-apple-darwin11 -j$(nproc) - - name: wownero/aarch64-apple-darwin11 - run: ./build_single.sh wownero aarch64-apple-darwin11 -j$(nproc) + - name: ${{ matrix.coin }}/x86_64-apple-darwin11 + run: ./build_single.sh ${{ matrix.coin }} x86_64-apple-darwin11 -j$(nproc) + - name: ${{ matrix.coin }}/aarch64-apple-darwin11 + run: ./build_single.sh ${{ matrix.coin }} aarch64-apple-darwin11 -j$(nproc) - name: rename artifacts run: | mkdir release/gh/ - for i in release/monero/* + for i in release/${{ matrix.coin }}/* do - mv "$i" "release/gh/monero_$(basename $i)" + mv "$i" "release/gh/${{ matrix.coin }}_$(basename $i)" done - name: Release uses: softprops/action-gh-release@v2 @@ -191,12 +180,7 @@ jobs: git config --global --add safe.directory '*' git config --global user.email "ci@mrcyjanek.net" git config --global user.name "CI mrcyjanek.net" - ./apply_patches.sh monero - ./apply_patches.sh wownero + ./apply_patches.sh ${{ matrix.coin }} - name: monero/host-apple-darwin run: | - ./build-single.sh monero host-apple-darwin -j$(sysctl -n hw.activecpu) - - name: wownero/host-apple-darwin - run: | - ./build-single.sh wownero host-apple-darwin -j$(sysctl -n hw.activecpu) - \ No newline at end of file + ./build-single.sh ${{ matrix.coin }} host-apple-darwin -j$(sysctl -n hw.activecpu) \ No newline at end of file diff --git a/build_single.sh b/build_single.sh index a4d95e7..f72e04d 100755 --- a/build_single.sh +++ b/build_single.sh @@ -169,6 +169,9 @@ pushd $repo/contrib/depends make $NPROC popd fi + pushd ../../../external/macos + ./build_unbound.sh + popd MACOS_LIBS_DIR="${PWD}/${HOST_ABI}" rm -rf ${MACOS_LIBS_DIR} mkdir -p ${MACOS_LIBS_DIR}/lib @@ -180,7 +183,9 @@ pushd $repo/contrib/depends export HOMEBREW_PREFIX=/usr/local fi fi - verbose_copy "${HOMEBREW_PREFIX}/lib/libunbound.a" ${MACOS_LIBS_DIR}/lib/libunbound.a + # NOTE: we can use unbound from brew but app store rejects the app + # verbose_copy "${HOMEBREW_PREFIX}/lib/libunbound.a" ${MACOS_LIBS_DIR}/lib/libunbound.a + verbose_copy "../../../external/macos/build/MACOS/lib/libunbound.a" ${MACOS_LIBS_DIR}/lib/libunbound.a verbose_copy "${HOMEBREW_PREFIX}/lib/libboost_chrono-mt.a" ${MACOS_LIBS_DIR}/lib/libboost_chrono-mt.a verbose_copy "${HOMEBREW_PREFIX}/lib/libboost_locale-mt.a" ${MACOS_LIBS_DIR}/lib/libboost_locale-mt.a verbose_copy "${HOMEBREW_PREFIX}/lib/libboost_date_time-mt.a" ${MACOS_LIBS_DIR}/lib/libboost_date_time-mt.a diff --git a/external/macos/build_unbound.sh b/external/macos/build_unbound.sh new file mode 100755 index 0000000..24ed54f --- /dev/null +++ b/external/macos/build_unbound.sh @@ -0,0 +1,48 @@ +#!/bin/bash +set -x -e + +. config.sh + +#### add m4 to path +# NOTE: this may not be needed. + +HOMEBREW_PREFIX="$(brew config | grep HOMEBREW_PREFIX | awk '{ print $2 }')" +M4_VERSION="$(brew info m4 | head -1 | awk '{ print $4 }')" +export PATH="${HOMEBREW_PREFIX}/Cellar/m4/${M4_VERSION}/bin/:$PATH" + +#### expat + +EXPAT_VERSION=R_2_4_8 +EXPAT_HASH="3bab6c09bbe8bf42d84b81563ddbcf4cca4be838" +EXPAT_SRC_DIR=${EXTERNAL_MACOS_SOURCE_DIR}/libexpat +rm -rf $EXPAT_SRC_DIR +git clone https://github.com/libexpat/libexpat.git -b ${EXPAT_VERSION} ${EXPAT_SRC_DIR} +cd $EXPAT_SRC_DIR +test `git rev-parse HEAD` = ${EXPAT_HASH} || exit 1 +cd $EXPAT_SRC_DIR/expat + +./buildconf.sh +./configure --enable-static --disable-shared --prefix=${EXTERNAL_MACOS_DIR} +make +make install + +#### unbound + +UNBOUND_VERSION=release-1.16.2 +UNBOUND_HASH="cbed768b8ff9bfcf11089a5f1699b7e5707f1ea5" +UNBOUND_URL="https://www.nlnetlabs.nl/downloads/unbound/unbound-${UNBOUND_VERSION}.tar.gz" +UNBOUND_DIR_PATH="${EXTERNAL_MACOS_SOURCE_DIR}/unbound-1.16.2" + +echo "============================ Unbound ============================" +rm -rf ${UNBOUND_DIR_PATH} +git clone https://github.com/NLnetLabs/unbound.git -b ${UNBOUND_VERSION} ${UNBOUND_DIR_PATH} +cd $UNBOUND_DIR_PATH +test `git rev-parse HEAD` = ${UNBOUND_HASH} || exit 1 + +./configure --prefix="${EXTERNAL_MACOS_DIR}" \ + --with-libexpat="${EXTERNAL_MACOS_DIR}" \ + --enable-static \ + --disable-shared \ + --disable-flto +make +make install \ No newline at end of file diff --git a/external/macos/config.sh b/external/macos/config.sh new file mode 100755 index 0000000..dcdf462 --- /dev/null +++ b/external/macos/config.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +export MACOS_SCRIPTS_DIR="$(pwd)" +export CW_ROOT="${MACOS_SCRIPTS_DIR}" +export EXTERNAL_DIR="${CW_ROOT}/build" +export EXTERNAL_MACOS_DIR="${EXTERNAL_DIR}/MACOS" +export EXTERNAL_MACOS_SOURCE_DIR="${EXTERNAL_MACOS_DIR}/sources" +export EXTERNAL_MACOS_LIB_DIR="${EXTERNAL_MACOS_DIR}/lib" +export EXTERNAL_MACOS_INCLUDE_DIR="${EXTERNAL_MACOS_DIR}/include" + +mkdir -p "$EXTERNAL_MACOS_LIB_DIR" +mkdir -p "$EXTERNAL_MACOS_INCLUDE_DIR" \ No newline at end of file