From 5ddaf9a118e80527e2817a6d66207646f5a71ad3 Mon Sep 17 00:00:00 2001 From: everoddandeven Date: Tue, 28 Oct 2025 14:46:31 +0100 Subject: [PATCH] Fix docker build --- .github/workflows/build.yml | 48 +++++++++++++++++++++++++--- Dockerfile.jammy | 36 +++++++++++++++++++++ Dockerfile.linux => Dockerfile.noble | 2 +- debian/changelog | 6 ---- debian/jammy/changelog | 3 ++ debian/{ => jammy}/compat | 0 debian/jammy/control | 14 ++++++++ debian/{ => jammy}/copyright | 0 debian/{ => jammy}/format | 0 debian/{ => jammy}/rules | 0 debian/noble/changelog | 4 +++ debian/noble/compat | 1 + debian/{ => noble}/control | 2 +- debian/noble/copyright | 6 ++++ debian/noble/format | 1 + debian/noble/rules | 4 +++ docker/build.sh | 13 +++++--- 17 files changed, 122 insertions(+), 18 deletions(-) create mode 100644 Dockerfile.jammy rename Dockerfile.linux => Dockerfile.noble (95%) delete mode 100644 debian/changelog create mode 100644 debian/jammy/changelog rename debian/{ => jammy}/compat (100%) create mode 100644 debian/jammy/control rename debian/{ => jammy}/copyright (100%) rename debian/{ => jammy}/format (100%) rename debian/{ => jammy}/rules (100%) create mode 100644 debian/noble/changelog create mode 100644 debian/noble/compat rename debian/{ => noble}/control (98%) create mode 100644 debian/noble/copyright create mode 100644 debian/noble/format create mode 100755 debian/noble/rules diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8004933..39f8136 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -11,7 +11,7 @@ on: workflow_dispatch: jobs: - build_ubuntu_noble: + noble: runs-on: ubuntu-24.04 env: @@ -73,7 +73,7 @@ jobs: 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 build/${PACKAGE_NAME}/DEBIAN + 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} @@ -83,7 +83,7 @@ jobs: name: ${{ env.PACKAGE_NAME }}-deb path: build/${{ env.PACKAGE_NAME }}.deb - build_ubuntu_jammy: + jammy: runs-on: ubuntu-22.04 env: @@ -145,7 +145,7 @@ jobs: 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 build/${PACKAGE_NAME}/DEBIAN + 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} @@ -154,4 +154,42 @@ jobs: with: name: ${{ env.PACKAGE_NAME }}-deb path: build/${{ env.PACKAGE_NAME }}.deb - + + docker-noble: + runs-on: ubuntu-22.04 + env: + PACKAGE_NAME: python3-monero_${{ github.ref_name }}-1noble1_amd64 + steps: + - uses: actions/checkout@v1 + with: + submodules: recursive + - name: free up diskspace + run: ${{env.FREE_DISKSPACE}} + - name: prepare build environment + run: docker build --tag monero-python:build-linux --build-arg THREADS=3 --file Dockerfile.noble . + - name: build + run: docker run --rm -v /home/runner/work/monero-python/monero-python:/monero-python -w /monero-python monero-python:build-linux sh ./docker/build.sh + - uses: actions/upload-artifact@v4 + with: + name: ${{ env.PACKAGE_NAME }}-docker-deb + path: build/${{ env.PACKAGE_NAME }}.deb + + docker-jammy: + runs-on: ubuntu-22.04 + env: + PACKAGE_NAME: python3-monero_${{ github.ref_name }}-1jammy1_amd64 + steps: + - uses: actions/checkout@v1 + with: + submodules: recursive + - name: free up diskspace + run: ${{env.FREE_DISKSPACE}} + - name: prepare build environment + run: docker build --tag monero-python:build-linux --build-arg THREADS=3 --file Dockerfile.jammy . + - name: build + run: docker run --rm -v /home/runner/work/monero-python/monero-python:/monero-python -w /monero-python monero-python:build-linux sh ./docker/build.sh + - uses: actions/upload-artifact@v4 + with: + name: ${{ env.PACKAGE_NAME }}-docker-deb + path: build/${{ env.PACKAGE_NAME }}.deb + diff --git a/Dockerfile.jammy b/Dockerfile.jammy new file mode 100644 index 0000000..26f2fd3 --- /dev/null +++ b/Dockerfile.jammy @@ -0,0 +1,36 @@ +FROM ubuntu:22.04 + +ENV DEBIAN_FRONTEND=noninteractive + +RUN apt-get update && apt-get 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 python3-pip python3-all python3-pybind11 python3-pytest \ + ccache doxygen graphviz git curl autoconf libtool gperf nettle-dev libevent-dev \ + debhelper bison flex wget \ + && rm -rf /var/lib/apt/lists/* + +RUN pip3 install pybind11-stubgen pytest + +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) && make install \ + && cd .. && rm -rf expat-2.4.8* + +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) && make install \ + && cd .. && rm -rf unbound-1.22.0* + +RUN git config --global --add safe.directory '*' + +WORKDIR /monero-python diff --git a/Dockerfile.linux b/Dockerfile.noble similarity index 95% rename from Dockerfile.linux rename to Dockerfile.noble index 2912592..e27e1b0 100644 --- a/Dockerfile.linux +++ b/Dockerfile.noble @@ -15,7 +15,7 @@ RUN apt-get update && apt-get install -y \ debhelper bison flex wget \ && rm -rf /var/lib/apt/lists/* -RUN pip3 install pybind11-stubgen pytest --break-system-packages +RUN pip3 install pybind11-stubgen pytest --break-system-packages 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 \ diff --git a/debian/changelog b/debian/changelog deleted file mode 100644 index c822cec..0000000 --- a/debian/changelog +++ /dev/null @@ -1,6 +0,0 @@ -python3-monero (0.0.1-1) stable; urgency=medium - - * Initial release. - - -- everoddandeven - diff --git a/debian/jammy/changelog b/debian/jammy/changelog new file mode 100644 index 0000000..d7b08ca --- /dev/null +++ b/debian/jammy/changelog @@ -0,0 +1,3 @@ +python3-monero (0.0.1-1) main; urgency=medium + + -- everoddandeven diff --git a/debian/compat b/debian/jammy/compat similarity index 100% rename from debian/compat rename to debian/jammy/compat diff --git a/debian/jammy/control b/debian/jammy/control new file mode 100644 index 0000000..2c4cfaf --- /dev/null +++ b/debian/jammy/control @@ -0,0 +1,14 @@ +Source: python3-monero +Section: python +Priority: optional +Maintainer: everoddandeven +Build-Depends: build-essential, cmake, pkg-config, debhelper, python3-all, 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, nettle-dev, libevent-dev, python3-pip, python3-pybind11, python3-pytest, pybind11-dev +Depends: libunbound8, libprotobuf23, libboost-chrono1.74.0, libboost-filesystem1.74.0, libboost-program-options1.74.0, libboost-regex1.74.0, libboost-serialization1.74.0, libboost-thread1.74.0, libhidapi-libusb0 +Standards-Version: 4.5.0 +Homepage: https://github.com/everoddandeven/monero-python +Rules-Requires-Root: no +Package: python3-monero +Architecture: amd64 +Description: Python bindings for monero-cpp + This package provides Python 3 bindings for the monero-cpp library using pybind11. +Version: 0.0.1 \ No newline at end of file diff --git a/debian/copyright b/debian/jammy/copyright similarity index 100% rename from debian/copyright rename to debian/jammy/copyright diff --git a/debian/format b/debian/jammy/format similarity index 100% rename from debian/format rename to debian/jammy/format diff --git a/debian/rules b/debian/jammy/rules similarity index 100% rename from debian/rules rename to debian/jammy/rules diff --git a/debian/noble/changelog b/debian/noble/changelog new file mode 100644 index 0000000..dca30e8 --- /dev/null +++ b/debian/noble/changelog @@ -0,0 +1,4 @@ +python3-monero (0.0.1-1) main; urgency=medium + + -- everoddandeven + diff --git a/debian/noble/compat b/debian/noble/compat new file mode 100644 index 0000000..b4de394 --- /dev/null +++ b/debian/noble/compat @@ -0,0 +1 @@ +11 diff --git a/debian/control b/debian/noble/control similarity index 98% rename from debian/control rename to debian/noble/control index 4858026..262ff2b 100644 --- a/debian/control +++ b/debian/noble/control @@ -11,4 +11,4 @@ Package: python3-monero Architecture: amd64 Description: Python bindings for monero-cpp This package provides Python 3 bindings for the monero-cpp library using pybind11. -Version: 1.0.0 +Version: 0.0.1 diff --git a/debian/noble/copyright b/debian/noble/copyright new file mode 100644 index 0000000..1398915 --- /dev/null +++ b/debian/noble/copyright @@ -0,0 +1,6 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: monero-python +Source: https://github.com/everoddandeven/monero-python +Files: * +Copyright: 2025 everoddandeven +License: MIT diff --git a/debian/noble/format b/debian/noble/format new file mode 100644 index 0000000..163aaf8 --- /dev/null +++ b/debian/noble/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/debian/noble/rules b/debian/noble/rules new file mode 100755 index 0000000..050e29a --- /dev/null +++ b/debian/noble/rules @@ -0,0 +1,4 @@ +#!/usr/bin/make -f + +%: + dh $@ --buildsystem=cmake diff --git a/docker/build.sh b/docker/build.sh index 7d82450..677687f 100755 --- a/docker/build.sh +++ b/docker/build.sh @@ -1,15 +1,18 @@ #!/bin/bash set -e -PACKAGE_NAME=${PACKAGE_NAME:-python3-monero_main-1noble1_amd64} +DISTRO_CODENAME=$(grep VERSION_CODENAME /etc/os-release | cut -d'=' -f2) +BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "main") + +if [ -z "$DISTRO_CODENAME" ]; then + DISTRO_CODENAME=$(lsb_release -c -s 2>/dev/null || echo "unknown") +fi + +PACKAGE_NAME=${PACKAGE_NAME:-python3-monero_${BRANCH_NAME}-1${DISTRO_CODENAME}1_amd64} git submodule update --init --recursive -echo "AAAA" -ls mkdir -p build cd ./external/monero-cpp -echo "BBBB" -ls ./bin/build_libmonero_cpp.sh cp build/libmonero* ../../build cd ../../