From 6079de269427cd67896d959cd728502ab1335285 Mon Sep 17 00:00:00 2001 From: Shihaam Abdul Rahman Date: Tue, 28 Feb 2023 13:34:12 +0500 Subject: [PATCH] BUILD PODMAN --- .gitignore | 3 ++ README.md | 9 ++++ build.sh | 2 + buildscript.sh | 104 +++++++++++++++++++++++++++++++++++++++++++++ docker-compose.yml | 9 ++++ 5 files changed, 127 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100755 build.sh create mode 100644 buildscript.sh create mode 100644 docker-compose.yml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5e3dba7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +build/ +build/* +build diff --git a/README.md b/README.md new file mode 100644 index 0000000..86d30f5 --- /dev/null +++ b/README.md @@ -0,0 +1,9 @@ +## Build latest podman for debian + +```bash +git clone git@gitlab.com:alliedmaldives/ops/podmanbuilder.git +cd podmanbuilder +docker compose run --rm podman-builder /bin/bash -c 'bash /root/buildscript.sh' +``` + +you should have the .deb file in a folder called 'build' diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..47ebffb --- /dev/null +++ b/build.sh @@ -0,0 +1,2 @@ +#!/bin/bash +docker compose run --rm podman-builder /bin/bash -c 'bash /root/buildscript.sh' diff --git a/buildscript.sh b/buildscript.sh new file mode 100644 index 0000000..6994441 --- /dev/null +++ b/buildscript.sh @@ -0,0 +1,104 @@ +#!/bin/bash + +cd /root/ + +apt update +apt upgrade -y +apt-get install \ + btrfs-progs \ + crun \ + git \ + golang-go \ + go-md2man \ + iptables \ + libassuan-dev \ + libbtrfs-dev \ + libc6-dev \ + libdevmapper-dev \ + libglib2.0-dev \ + libgpgme-dev \ + libgpg-error-dev \ + libprotobuf-dev \ + libprotobuf-c-dev \ + libseccomp-dev \ + libselinux1-dev \ + libsystemd-dev \ + pkg-config \ + uidmap + +apt install -y jq wget curl + +VERSION=$(curl -s https://api.github.com/repos/containers/podman/releases/latest | jq '.name' -r) +export VERSION + +git clone https://github.com/containers/podman.git podman-$VERSION +cd podman-$VERSION +git checkout tags/$VERSION + +make ENABLE_BUILDTAGS="systemd" binaries + + +cp -vr bin/ .. +cd .. + +VERSION=$(echo $VERSION | sed s/v//) +## PREPARE to package into .deb +mkdir -p podman-deb/DEBIAN +mkdir -p podman-deb/usr/local/bin +mkdir -p podman-deb/usr/lib/systemd/system/ + +cat < podman-deb/DEBIAN/control +Package: podman +Version: $VERSION +Section: base +Priority: optional +Architecture: amd64 +Maintainer: Shiham Abdul Rahman +Description: Podman container engine + Podman is a daemonless container engine for developing, managing, and running OCI Containers on your Linux System. + +EOF + +cat < podman-deb/usr/lib/systemd/system/podman.service +[Unit] +Description=Podman API Service +Requires=podman.socket +After=podman.socket +Documentation=man:podman-system-service(1) +StartLimitIntervalSec=0 + +[Service] +Delegate=true +Type=exec +KillMode=process +Environment=LOGGING="--log-level=info" +ExecStart=/usr/bin/podman $LOGGING system service + +[Install] +WantedBy=default.target + +EOF + +cat < podman-deb/usr/lib/systemd/system/podman.socket +[Unit] +Description=Podman API Socket +Documentation=man:podman-system-service(1) + +[Socket] +ListenStream=%t/podman/podman.sock +SocketMode=0660 + +[Install] +WantedBy=sockets.target + +EOF + +cp -v bin/podman podman-deb/usr/local/bin/ +cp -v bin/podman-remote podman-deb/usr/local/bin/ +cp -v bin/quadlet podman-deb/usr/local/bin/ +cp -v bin/rootlessport podman-deb/usr/local/bin/ + +# ofc the permission +chmod 755 podman-deb/usr/local/bin/* + +dpkg-deb --build podman-deb build diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..3c79f92 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,9 @@ +version: '3.5' +services: +######################### + podman-builder: + hostname: podman-builder + image: ubuntu + volumes: + - ./build:/root/build + - ./buildscript.sh:/root/buildscript.sh