add PKGBUILD, upd DEB builder

This commit is contained in:
ge 2024-01-16 22:26:59 +03:00
parent f091b34854
commit 10ff2ca297
15 changed files with 91 additions and 33 deletions

2
.gitignore vendored
View File

@ -1,6 +1,6 @@
dist/
docs/build/
packaging/build/
packaging/*/build/
instance.yaml
.ruff_cache/
__pycache__/

View File

@ -5,7 +5,7 @@ DOCS_BUILDDIR = docs/build
.PHONY: docs
all: docs build-deb
all: docs build debian archlinux
requirements.txt:
poetry export -f requirements.txt -o requirements.txt
@ -13,8 +13,11 @@ requirements.txt:
build: version format lint
poetry build
build-deb: build
cd packaging && $(MAKE)
debian:
cd packaging/debian && $(MAKE)
archlinux:
cd packaging/archlinux && $(MAKE)
version:
VERSION=$$(awk '/^version/{print $$3}' pyproject.toml); \
@ -42,11 +45,12 @@ clean:
[ -d $(DISTDIR) ] && rm -rf $(DISTDIR) || true
[ -d $(DOCS_BUILDDIR) ] && rm -rf $(DOCS_BUILDDIR) || true
find . -type d -name __pycache__ -exec rm -rf {} \; > /dev/null 2>&1 || true
cd packaging && $(MAKE) clean
cd packaging/debian && $(MAKE) clean
cd packaging/archlinux && $(MAKE) clean
test-build: build-deb
scp packaging/build/compute*.deb vm:~
test-build: build debian
scp packaging/debian/build/compute*.deb vm:~
upload-docs: docs-versions
upload-docs:
ssh root@hitomi 'rm -rf /srv/http/nixhacks.net/hstack/compute/*'
scp -r $(DOCS_BUILDDIR)/* root@hitomi:/srv/http/nixhacks.net/hstack/compute/

View File

@ -1,24 +0,0 @@
DOCKER_CMD ?= docker
DOCKER_IMG = pybuilder:bookworm
DEBBUILDDIR = build
all: docker-build build
clean:
test -d $(DEBBUILDDIR) && rm -rf $(DEBBUILDDIR) || true
docker-build:
$(DOCKER_CMD) build -f Dockerfile -t $(DOCKER_IMG) .
build: clean
mkdir -p $(DEBBUILDDIR)
cp -v ../dist/compute-*[.tar.gz] $(DEBBUILDDIR)/
cp -r ../docs $(DEBBUILDDIR)/
if [ -f build.sh.bak ]; then mv build.sh{.bak,}; fi
cp build.sh{,.bak}
awk '/authors/{gsub(/[\[\]]/,"");print $$3" "$$4}' ../pyproject.toml \
| sed "s/['<>]//g" \
| tr ' ' '\n' \
| xargs -I {} sed "0,/%placeholder%/s//{}/" -i build.sh
$(DOCKER_CMD) run --rm -i -v $$PWD:/mnt $(DOCKER_IMG) bash < build.sh
mv build.sh{.bak,}

View File

@ -0,0 +1,10 @@
FROM archlinux:latest
WORKDIR /mnt
RUN chown 1000:1000 /mnt; \
pacman -Sy --noconfirm \
fakeroot \
binutils \
python \
python-pip; \
echo "alias ll='ls -alFh'" >> /etc/bash.bashrc
USER 1000:1000

View File

@ -0,0 +1,22 @@
DOCKER_CMD ?= docker
DOCKER_IMG = computebuilder:archlinux
BUILDDIR = build
all: docker-build build
clean:
test -d $(BUILDDIR) && rm -rf $(BUILDDIR) || true
docker-build:
$(DOCKER_CMD) build -f Dockerfile -t $(DOCKER_IMG) .
build: clean
mkdir -p $(BUILDDIR)
VERSION=$$(awk '/^version/{print $$3}' ../../pyproject.toml | sed s'/-/\./'); \
sed "s/pkgver=.*/pkgver=$$VERSION/" PKGBUILD > $(BUILDDIR)/PKGBUILD
cp -v ../../dist/compute-*[.tar.gz] $(BUILDDIR)/
cp ../../extra/completion.bash $(BUILDDIR)/
$(DOCKER_CMD) run --rm -i -v $$PWD/$(BUILDDIR):/mnt --ulimit "nofile=1024:1048576" \
$(DOCKER_IMG) makepkg --nodeps --clean
# Remove unwanted files from build dir
rm $(BUILDDIR)/compute*.tar.gz $(BUILDDIR)/PKGBUILD

View File

@ -0,0 +1,16 @@
pkgname=compute
pkgver='0.1.0-dev4'
pkgrel=1
pkgdesc='Compute instances management library'
arch=(any)
url=https://get.lulzette.ru/hstack/compute
license=('GPL-3-or-later')
makedepends=(python python-pip)
depends=(python libvirt libvirt-python qemu-base qemu-system-x86 qemu-img dnsmasq iptables-nft)
provides=(compute)
conflicts=()
package() {
pip install --no-cache-dir --no-deps --root $pkgdir ../$pkgname-*.tar.gz
install -Dm644 ../completion.bash $pkgdir/usr/share/bash-completion/completions/compute
}

29
packaging/debian/Makefile Normal file
View File

@ -0,0 +1,29 @@
DOCKER_CMD ?= docker
DOCKER_IMG = computebuilder:debian-bookworm
BUILDDIR = build
KEEP_BUILDFILES ?=
all: docker-build build
clean:
test -d $(BUILDDIR) && rm -rf $(BUILDDIR) || true
docker-build:
$(DOCKER_CMD) build -f Dockerfile -t $(DOCKER_IMG) .
build: clean
mkdir -p $(BUILDDIR)
cp -v ../../dist/compute-*[.tar.gz] $(BUILDDIR)/
cp -r ../../docs $(BUILDDIR)/
cp ../../extra/completion.bash $(BUILDDIR)/compute.bash-completion
if [ -f build.sh.bak ]; then mv build.sh{.bak,}; fi
cp build.sh{,.bak}
awk '/authors/{gsub(/[\[\]]/,"");print $$3" "$$4}' ../pyproject.toml \
| sed "s/['<>]//g" \
| tr ' ' '\n' \
| xargs -I {} sed "0,/%placeholder%/s//{}/" -i build.sh
$(DOCKER_CMD) run --rm -i -v $$PWD:/mnt $(DOCKER_IMG) bash < build.sh
mv build.sh{.bak,}
# Remove unwanted files from build dir
find $(BUILDDIR) -mindepth 1 -type d -exec rm -rf {} +
[ -z $(KEEP_BUILDFILES) ] && find $(BUILDDIR) ! -name '*.deb' -type f -exec rm -f {} + || true

View File

@ -11,5 +11,6 @@ sed -e "s%\.\./\.\.%$PWD%" -i ../docs/source/conf.py
dh_make --copyright gpl3 --yes --python --file ../compute-*[.tar.gz]
rm debian/*.ex debian/README.{Debian,source} debian/*.docs
sed -e 's/\* Initial release.*/\* This is the development build, see commits in upstream repo for info./' -i debian/changelog
cp -v ../../files/{control,rules,copyright,docs,compute.bash-completion,install} debian/
cp -v ../../files/{control,rules,copyright,docs,install} debian/
mv ../compute.bash-completion debian/
dpkg-buildpackage -us -uc