From 2b30acfc1da4d231c9a9a38538d2fb42e9143de6 Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Tue, 29 Jul 2025 03:07:03 +0300 Subject: [PATCH] Do not use podman and do not use `build` command to build packages (we are not building a docker image) --- debian/build-vitastor-bookworm.sh | 7 +-- debian/build-vitastor-bullseye.sh | 7 +-- debian/build-vitastor-buster.sh | 7 +-- debian/build-vitastor-ubuntu-jammy.sh | 8 ++-- debian/build-vitastor-ubuntu-noble.sh | 7 +-- debian/vitastor-build.sh | 59 ++++++++++++++++++++++++ debian/vitastor-buildenv.Dockerfile | 30 +++++++++++++ debian/vitastor.Dockerfile | 65 --------------------------- 8 files changed, 100 insertions(+), 90 deletions(-) create mode 100755 debian/vitastor-build.sh create mode 100644 debian/vitastor-buildenv.Dockerfile delete mode 100644 debian/vitastor.Dockerfile diff --git a/debian/build-vitastor-bookworm.sh b/debian/build-vitastor-bookworm.sh index d13cdaf5..ebef381f 100755 --- a/debian/build-vitastor-bookworm.sh +++ b/debian/build-vitastor-bookworm.sh @@ -1,7 +1,4 @@ #!/bin/bash -cat < vitastor.Dockerfile > ../Dockerfile -cd .. -mkdir -p packages -sudo podman build --build-arg DISTRO=debian --build-arg REL=bookworm -v `pwd`/packages:/root/packages -f Dockerfile . -rm Dockerfile +docker build --build-arg DISTRO=debian --build-arg REL=bookworm -t vitastor-buildenv:bookworm -f vitastor-buildenv.Dockerfile . +docker run --rm -e REL=bookworm -v `dirname $0`/../:/root/vitastor vitastor-buildenv:bookworm /root/vitastor/debian/vitastor-build.sh diff --git a/debian/build-vitastor-bullseye.sh b/debian/build-vitastor-bullseye.sh index 6e1c3047..ab80e741 100755 --- a/debian/build-vitastor-bullseye.sh +++ b/debian/build-vitastor-bullseye.sh @@ -1,7 +1,4 @@ #!/bin/bash -cat < vitastor.Dockerfile > ../Dockerfile -cd .. -mkdir -p packages -sudo podman build --build-arg DISTRO=debian --build-arg REL=bullseye -v `pwd`/packages:/root/packages -f Dockerfile . -rm Dockerfile +docker build --build-arg DISTRO=debian --build-arg REL=bullseye -t vitastor-buildenv:bullseye -f vitastor-buildenv.Dockerfile . +docker run --rm -e REL=bullseye -v `dirname $0`/../:/root/vitastor vitastor-buildenv:bullseye /root/vitastor/debian/vitastor-build.sh diff --git a/debian/build-vitastor-buster.sh b/debian/build-vitastor-buster.sh index 66d1526c..c68b4903 100755 --- a/debian/build-vitastor-buster.sh +++ b/debian/build-vitastor-buster.sh @@ -1,7 +1,4 @@ #!/bin/bash -cat < vitastor.Dockerfile > ../Dockerfile -cd .. -mkdir -p packages -sudo podman build --build-arg DISTRO=debian --build-arg REL=buster -v `pwd`/packages:/root/packages -f Dockerfile . -rm Dockerfile +docker build --build-arg DISTRO=debian --build-arg REL=buster -t vitastor-buildenv:buster -f vitastor-buildenv.Dockerfile . +docker run --rm -e REL=buster -v `dirname $0`/../:/root/vitastor vitastor-buildenv:buster /root/vitastor/debian/vitastor-build.sh diff --git a/debian/build-vitastor-ubuntu-jammy.sh b/debian/build-vitastor-ubuntu-jammy.sh index c4f988a1..a6c0a6c2 100755 --- a/debian/build-vitastor-ubuntu-jammy.sh +++ b/debian/build-vitastor-ubuntu-jammy.sh @@ -1,7 +1,5 @@ #!/bin/bash +# Ubuntu 22.04 Jammy Jellyfish -cat < vitastor.Dockerfile > ../Dockerfile -cd .. -mkdir -p packages -sudo podman build --build-arg DISTRO=ubuntu --build-arg REL=jammy -v `pwd`/packages:/root/packages -f Dockerfile . -rm Dockerfile +docker build --build-arg DISTRO=ubuntu --build-arg REL=jammy -t vitastor-buildenv:jammy -f vitastor-buildenv.Dockerfile . +docker run --rm -e REL=jammy -v `dirname $0`/../:/root/vitastor vitastor-buildenv:jammy /root/vitastor/debian/vitastor-build.sh diff --git a/debian/build-vitastor-ubuntu-noble.sh b/debian/build-vitastor-ubuntu-noble.sh index fc2bb804..ddd747da 100755 --- a/debian/build-vitastor-ubuntu-noble.sh +++ b/debian/build-vitastor-ubuntu-noble.sh @@ -1,8 +1,5 @@ #!/bin/bash # 24.04 Noble Numbat -cat < vitastor.Dockerfile > ../Dockerfile -cd .. -mkdir -p packages -sudo podman build --build-arg DISTRO=ubuntu --build-arg REL=noble -v `pwd`/packages:/root/packages -f Dockerfile . -rm Dockerfile +docker build --build-arg DISTRO=ubuntu --build-arg REL=noble -t vitastor-buildenv:noble -f vitastor-buildenv.Dockerfile . +docker run --rm -e REL=noble -v `dirname $0`/../:/root/vitastor vitastor-buildenv:noble /root/vitastor/debian/vitastor-build.sh diff --git a/debian/vitastor-build.sh b/debian/vitastor-build.sh new file mode 100755 index 00000000..c324ff86 --- /dev/null +++ b/debian/vitastor-build.sh @@ -0,0 +1,59 @@ +#!/bin/bash +# To be ran inside buildenv docker + +set -e -x + +[ -e /usr/lib/x86_64-linux-gnu/pkgconfig/libisal.pc ] || cp /root/vitastor/debian/libisal.pc /usr/lib/x86_64-linux-gnu/pkgconfig + +mkdir -p /root/fio-build/ +cd /root/fio-build/ +rm -rf /root/fio-build/* +dpkg-source -x /root/fio*.dsc + +FULLVER=`head -n1 /root/vitastor/debian/changelog | perl -pe 's/^.*\((.*?)\).*$/$1/'` +VER=${FULLVER%%-*} +rm -rf /root/vitastor-$VER +mkdir /root/vitastor-$VER +cd /root/vitastor +cp -a $(ls | grep -v packages) /root/vitastor-$VER + +rm -rf /root/vitastor/packages/vitastor-$REL +mkdir -p /root/vitastor/packages/vitastor-$REL +mv /root/vitastor-$VER /root/vitastor/packages/vitastor-$REL/ + +cd /root/vitastor/packages/vitastor-$REL/vitastor-$VER + +rm -rf fio +ln -s /root/fio-build/fio-*/ ./fio +FIO=`head -n1 fio/debian/changelog | perl -pe 's/^.*\((.*?)\).*$/$1/'` +ls /usr/include/linux/raw.h || cp ./debian/raw.h /usr/include/linux/raw.h +sh copy-fio-includes.sh +rm fio +mkdir -p a b debian/patches +mv fio-copy b/fio +diff -NaurpbB a b > debian/patches/fio-headers.patch || true +echo fio-headers.patch >> debian/patches/series +rm -rf a b + +echo "dep:fio=$FIO" > debian/fio_version + +cd /root/vitastor/packages/vitastor-$REL/vitastor-$VER +mkdir mon/node_modules +cd mon/node_modules +curl -s https://git.yourcmc.ru/vitalif/antietcd/archive/master.tar.gz | tar -zx +curl -s https://git.yourcmc.ru/vitalif/tinyraft/archive/master.tar.gz | tar -zx + +cd /root/vitastor/packages/vitastor-$REL +tar --sort=name --mtime='2020-01-01' --owner=0 --group=0 --exclude=debian -cJf vitastor_$VER.orig.tar.xz vitastor-$VER +cd vitastor-$VER +DEBFULLNAME="Vitaliy Filippov " dch -D $REL -v "$FULLVER""$REL" "Rebuild for $REL" +DEB_BUILD_OPTIONS=nocheck dpkg-buildpackage --jobs=auto -sa +rm -rf /root/vitastor/packages/vitastor-$REL/vitastor-*/ + +# Why does ubuntu rename debug packages to *.ddeb? +if ls *.ddeb >/dev/null; then + perl -i -pe 's/\.ddeb/.deb/' *.buildinfo *.changes + for i in *.ddeb; do + mv $i ${i%%.ddeb}.deb + done +fi diff --git a/debian/vitastor-buildenv.Dockerfile b/debian/vitastor-buildenv.Dockerfile new file mode 100644 index 00000000..6b2e6a06 --- /dev/null +++ b/debian/vitastor-buildenv.Dockerfile @@ -0,0 +1,30 @@ +# Build environment for building Vitastor packages for Debian inside a container +# cd .. +# docker build --build-arg DISTRO=debian --build-arg REL=bullseye -f debian/vitastor.Dockerfile -t vitastor-buildenv:bullseye . +# docker run --rm -e REL=bullseye -v ./:/root/vitastor /root/vitastor/debian/vitastor-build.sh + +ARG DISTRO=debian +ARG REL= +FROM $DISTRO:$REL +ARG DISTRO=debian +ARG REL= + +WORKDIR /root + +RUN set -e -x; \ + if [ "$REL" = "buster" ]; then \ + apt-get update; \ + apt-get -y install wget; \ + wget https://vitastor.io/debian/pubkey.gpg -O /etc/apt/trusted.gpg.d/vitastor.gpg; \ + echo "deb https://vitastor.io/debian $REL main" >> /etc/apt/sources.list; \ + fi; \ + grep '^deb ' /etc/apt/sources.list | perl -pe 's/^deb/deb-src/' >> /etc/apt/sources.list; \ + perl -i -pe 's/Types: deb$/Types: deb deb-src/' /etc/apt/sources.list.d/*.sources || true; \ + echo 'APT::Install-Recommends false;' >> /etc/apt/apt.conf; \ + echo 'APT::Install-Suggests false;' >> /etc/apt/apt.conf + +RUN apt-get update && \ + apt-get -y install fio liburing-dev libgoogle-perftools-dev devscripts libjerasure-dev cmake \ + libibverbs-dev librdmacm-dev libisal-dev libnl-3-dev libnl-genl-3-dev curl nodejs npm node-nan node-bindings && \ + apt-get -y build-dep fio && \ + apt-get --download-only source fio diff --git a/debian/vitastor.Dockerfile b/debian/vitastor.Dockerfile deleted file mode 100644 index 9fecdf0b..00000000 --- a/debian/vitastor.Dockerfile +++ /dev/null @@ -1,65 +0,0 @@ -# Build Vitastor packages for Debian inside a container -# cd ..; podman build --build-arg DISTRO=debian --build-arg REL=bullseye -v `pwd`/packages:/root/packages -f debian/vitastor.Dockerfile . - -ARG DISTRO=debian -ARG REL= -FROM $DISTRO:$REL -ARG DISTRO=debian -ARG REL= - -WORKDIR /root - -RUN set -e -x; \ - if [ "$REL" = "buster" ]; then \ - apt-get update; \ - apt-get -y install wget; \ - wget https://vitastor.io/debian/pubkey.gpg -O /etc/apt/trusted.gpg.d/vitastor.gpg; \ - echo "deb https://vitastor.io/debian $REL main" >> /etc/apt/sources.list; \ - fi; \ - grep '^deb ' /etc/apt/sources.list | perl -pe 's/^deb/deb-src/' >> /etc/apt/sources.list; \ - perl -i -pe 's/Types: deb$/Types: deb deb-src/' /etc/apt/sources.list.d/*.sources || true; \ - echo 'APT::Install-Recommends false;' >> /etc/apt/apt.conf; \ - echo 'APT::Install-Suggests false;' >> /etc/apt/apt.conf - -RUN apt-get update && \ - apt-get -y install fio liburing-dev libgoogle-perftools-dev devscripts libjerasure-dev cmake \ - libibverbs-dev librdmacm-dev libisal-dev libnl-3-dev libnl-genl-3-dev curl nodejs npm node-nan node-bindings && \ - apt-get -y build-dep fio && \ - apt-get --download-only source fio - -ADD . /root/vitastor -RUN set -e -x; \ - [ -e /usr/lib/x86_64-linux-gnu/pkgconfig/libisal.pc ] || cp /root/vitastor/debian/libisal.pc /usr/lib/x86_64-linux-gnu/pkgconfig; \ - mkdir -p /root/fio-build/; \ - cd /root/fio-build/; \ - rm -rf /root/fio-build/*; \ - dpkg-source -x /root/fio*.dsc; \ - mkdir -p /root/packages/vitastor-$REL; \ - rm -rf /root/packages/vitastor-$REL/*; \ - cd /root/packages/vitastor-$REL; \ - FULLVER=$(head -n1 /root/vitastor/debian/changelog | perl -pe 's/^.*\((.*?)\).*$/$1/'); \ - VER=${FULLVER%%-*}; \ - cp -r /root/vitastor vitastor-$VER; \ - cd vitastor-$VER; \ - ln -s /root/fio-build/fio-*/ ./fio; \ - FIO=$(head -n1 fio/debian/changelog | perl -pe 's/^.*\((.*?)\).*$/$1/'); \ - ls /usr/include/linux/raw.h || cp ./debian/raw.h /usr/include/linux/raw.h; \ - sh copy-fio-includes.sh; \ - rm fio; \ - mkdir -p a b debian/patches; \ - mv fio-copy b/fio; \ - diff -NaurpbB a b > debian/patches/fio-headers.patch || true; \ - echo fio-headers.patch >> debian/patches/series; \ - rm -rf a b; \ - echo "dep:fio=$FIO" > debian/fio_version; \ - cd /root/packages/vitastor-$REL/vitastor-$VER; \ - mkdir mon/node_modules; \ - cd mon/node_modules; \ - curl -s https://git.yourcmc.ru/vitalif/antietcd/archive/master.tar.gz | tar -zx; \ - curl -s https://git.yourcmc.ru/vitalif/tinyraft/archive/master.tar.gz | tar -zx; \ - cd /root/packages/vitastor-$REL; \ - tar --sort=name --mtime='2020-01-01' --owner=0 --group=0 --exclude=debian -cJf vitastor_$VER.orig.tar.xz vitastor-$VER; \ - cd vitastor-$VER; \ - DEBFULLNAME="Vitaliy Filippov " dch -D $REL -v "$FULLVER""$REL" "Rebuild for $REL"; \ - DEB_BUILD_OPTIONS=nocheck dpkg-buildpackage --jobs=auto -sa; \ - rm -rf /root/packages/vitastor-$REL/vitastor-*/