add PKGBUILD, upd DEB builder
This commit is contained in:
		
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -1,6 +1,6 @@
 | 
			
		||||
dist/
 | 
			
		||||
docs/build/
 | 
			
		||||
packaging/build/
 | 
			
		||||
packaging/*/build/
 | 
			
		||||
instance.yaml
 | 
			
		||||
.ruff_cache/
 | 
			
		||||
__pycache__/
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										18
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								Makefile
									
									
									
									
									
								
							@@ -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/
 | 
			
		||||
 
 | 
			
		||||
@@ -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,}
 | 
			
		||||
							
								
								
									
										10
									
								
								packaging/archlinux/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								packaging/archlinux/Dockerfile
									
									
									
									
									
										Normal 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
 | 
			
		||||
							
								
								
									
										22
									
								
								packaging/archlinux/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								packaging/archlinux/Makefile
									
									
									
									
									
										Normal 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
 | 
			
		||||
							
								
								
									
										16
									
								
								packaging/archlinux/PKGBUILD
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								packaging/archlinux/PKGBUILD
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										29
									
								
								packaging/debian/Makefile
									
									
									
									
									
										Normal 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
 | 
			
		||||
@@ -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
 | 
			
		||||
		Reference in New Issue
	
	Block a user