diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a137a21..2eade0f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -2,155 +2,83 @@ name: 'Build' on: push: - branches: - - main + branches: [ main ] pull_request: - branches: - - main - + branches: [ main ] workflow_dispatch: jobs: - noble: - - runs-on: ubuntu-24.04 + build: + strategy: + matrix: + dist: + - { name: "jammy", runner: "ubuntu-22.04" } + - { name: "noble", runner: "ubuntu-24.04" } + runs-on: ${{ matrix.dist.runner }} env: - PACKAGE_NAME: python3-monero_${{ github.ref_name }}-1noble1_amd64 - - steps: - - uses: actions/checkout@v4 - - - name: Install dependencies - run: | - sudo apt update - sudo apt install -y build-essential cmake pkg-config libssl-dev libzmq3-dev libunbound-dev libsodium-dev libunwind8-dev liblzma-dev libreadline6-dev libexpat1-dev libpgm-dev qttools5-dev-tools libhidapi-dev libusb-1.0-0-dev libprotobuf-dev protobuf-compiler libudev-dev libboost-chrono-dev libboost-date-time-dev libboost-filesystem-dev libboost-locale-dev libboost-program-options-dev libboost-regex-dev libboost-serialization-dev libboost-system-dev libboost-thread-dev python3 ccache doxygen graphviz git curl autoconf libtool gperf nettle-dev libevent-dev debhelper python3-all python3-pip python3-pybind11 python3-pytest - pip3 install pybind11-stubgen pytest --break-system-packages - - - name: Install expat - run: | - wget https://github.com/libexpat/libexpat/releases/download/R_2_4_8/expat-2.4.8.tar.bz2 - tar -xf expat-2.4.8.tar.bz2 - sudo rm expat-2.4.8.tar.bz2 - cd expat-2.4.8 - ./configure --enable-static --disable-shared - make - sudo make install - cd ../ - - - name: Install unbound - run: | - wget https://www.nlnetlabs.nl/downloads/unbound/unbound-1.22.0.tar.gz - tar xzf unbound-1.22.0.tar.gz - sudo apt install -y build-essential - sudo apt install -y libssl-dev - sudo apt install -y libexpat1-dev - sudo apt-get install -y bison - sudo apt-get install -y flex - cd unbound-1.22.0 - ./configure --with-libexpat=/usr --with-ssl=/usr --enable-static-exe - make - sudo make install - cd ../ - - - name: Update submodules - run: | - git submodule update --init --recursive - - - name: Build monero-cpp shared library - run: | - mkdir build - cd external/monero-cpp - ./bin/build_libmonero_cpp.sh - cp build/libmonero* ../../build - cd ../../ - - - name: Build monero-python - run: | - pip3 install . --target build/${PACKAGE_NAME}/usr/lib/python3/dist-packages - - - name: Build DEB package - run: | - cp -R src/python build/${PACKAGE_NAME}/usr/lib/python3/dist-packages/monero - rm -rf build/${PACKAGE_NAME}/usr/lib/python3/dist-packages/pybind11* - rm -rf build/${PACKAGE_NAME}/usr/lib/python3/dist-packages/bin - cp -R debian/noble build/${PACKAGE_NAME}/DEBIAN - cp external/monero-cpp/build/libmonero-cpp.so build/${PACKAGE_NAME}/usr/lib/ - dpkg-deb --build build/${PACKAGE_NAME} + PACKAGE_NAME: python3-monero_${{ github.ref_name }}-1${{ matrix.dist.name }}1_amd64 - - name: Upload DEB - uses: actions/upload-artifact@v4 - with: - name: ${{ env.PACKAGE_NAME }}-deb - path: build/${{ env.PACKAGE_NAME }}.deb - - jammy: - - runs-on: ubuntu-22.04 - env: - PACKAGE_NAME: python3-monero_${{ github.ref_name }}-1jammy1_amd64 + name: build ${{ matrix.name }} (amd64) steps: - - uses: actions/checkout@v4 - - - name: Install dependencies - run: | - sudo apt update - sudo apt install -y build-essential cmake pkg-config libssl-dev libzmq3-dev libunbound-dev libsodium-dev libunwind8-dev liblzma-dev libreadline6-dev libexpat1-dev libpgm-dev qttools5-dev-tools libhidapi-dev libusb-1.0-0-dev libprotobuf-dev protobuf-compiler libudev-dev libboost-chrono-dev libboost-date-time-dev libboost-filesystem-dev libboost-locale-dev libboost-program-options-dev libboost-regex-dev libboost-serialization-dev libboost-system-dev libboost-thread-dev python3 ccache doxygen graphviz git curl autoconf libtool gperf nettle-dev libevent-dev debhelper python3-all python3-pip python3-pybind11 python3-pytest - pip3 install pybind11-stubgen pytest - - - name: Install expat - run: | - wget https://github.com/libexpat/libexpat/releases/download/R_2_4_8/expat-2.4.8.tar.bz2 - tar -xf expat-2.4.8.tar.bz2 - sudo rm expat-2.4.8.tar.bz2 - cd expat-2.4.8 - ./configure --enable-static --disable-shared - make - sudo make install - cd ../ - - - name: Install unbound - run: | - wget https://www.nlnetlabs.nl/downloads/unbound/unbound-1.22.0.tar.gz - tar xzf unbound-1.22.0.tar.gz - sudo apt install -y build-essential - sudo apt install -y libssl-dev - sudo apt install -y libexpat1-dev - sudo apt-get install -y bison - sudo apt-get install -y flex - cd unbound-1.22.0 - ./configure --with-libexpat=/usr --with-ssl=/usr --enable-static-exe - make - sudo make install - cd ../ - - - name: Update submodules - run: | - git submodule update --init --recursive - - - name: Build monero-cpp shared library - run: | - mkdir build - cd external/monero-cpp - ./bin/build_libmonero_cpp.sh - cp build/libmonero* ../../build - cd ../../ - - - name: Build monero-python - run: | - pip3 install . --target build/${PACKAGE_NAME}/usr/lib/python3/dist-packages - - - name: Build DEB package - run: | - cp -R src/python build/${PACKAGE_NAME}/usr/lib/python3/dist-packages/monero - rm -rf build/${PACKAGE_NAME}/usr/lib/python3/dist-packages/pybind11* - rm -rf build/${PACKAGE_NAME}/usr/lib/python3/dist-packages/bin - cp -R debian/jammy build/${PACKAGE_NAME}/DEBIAN - cp external/monero-cpp/build/libmonero-cpp.so build/${PACKAGE_NAME}/usr/lib/ - dpkg-deb --build build/${PACKAGE_NAME} - - - name: Upload DEB - uses: actions/upload-artifact@v4 - with: - name: ${{ env.PACKAGE_NAME }}-deb - path: build/${{ env.PACKAGE_NAME }}.deb + - uses: actions/checkout@v4 + + - name: Install dependencies + run: | + sudo apt update + sudo apt install -y build-essential cmake pkg-config libssl-dev libzmq3-dev \ + libunbound-dev libsodium-dev libunwind8-dev liblzma-dev libreadline6-dev \ + libexpat1-dev libpgm-dev qttools5-dev-tools libhidapi-dev libusb-1.0-0-dev \ + libprotobuf-dev protobuf-compiler libudev-dev libboost-chrono-dev \ + libboost-date-time-dev libboost-filesystem-dev libboost-locale-dev \ + libboost-program-options-dev libboost-regex-dev libboost-serialization-dev \ + libboost-system-dev libboost-thread-dev python3 ccache doxygen graphviz \ + git curl autoconf libtool gperf nettle-dev libevent-dev debhelper python3-all \ + python3-pip python3-pybind11 python3-pytest bison flex + pip3 install pybind11-stubgen pytest --break-system-packages || pip3 install pybind11-stubgen pytest + + - name: Install expat + run: | + wget https://github.com/libexpat/libexpat/releases/download/R_2_4_8/expat-2.4.8.tar.bz2 + tar -xf expat-2.4.8.tar.bz2 + cd expat-2.4.8 + ./configure --enable-static --disable-shared + make -j$(nproc) + sudo make install + + - name: Install unbound + run: | + wget https://www.nlnetlabs.nl/downloads/unbound/unbound-1.22.0.tar.gz + tar xzf unbound-1.22.0.tar.gz + cd unbound-1.22.0 + ./configure --with-libexpat=/usr --with-ssl=/usr --enable-static-exe + make -j$(nproc) + sudo make install + + - name: Update submodules + run: git submodule update --init --recursive + + - name: Build monero-cpp shared library + run: | + mkdir -p build + cd external/monero-cpp + ./bin/build_libmonero_cpp.sh + cp build/libmonero* ../../build + + - name: Build monero-python + run: | + pip3 install . --target build/${PACKAGE_NAME}/usr/lib/python3/dist-packages + + - name: Build DEB package + run: | + cp -R src/python build/${PACKAGE_NAME}/usr/lib/python3/dist-packages/monero + rm -rf build/${PACKAGE_NAME}/usr/lib/python3/dist-packages/{pybind11*,bin} + cp -R debian/${{ matrix.dist.name }} build/${PACKAGE_NAME}/DEBIAN + cp external/monero-cpp/build/libmonero-cpp.so build/${PACKAGE_NAME}/usr/lib/ + dpkg-deb --build build/${PACKAGE_NAME} + + - name: Upload DEB + uses: actions/upload-artifact@v4 + with: + name: ${{ env.PACKAGE_NAME }}.deb + path: build/${{ env.PACKAGE_NAME }}.deb