Browse Source

toward second release

main 0.0.2
Nicolas Massé 2 weeks ago
parent
commit
8b7d14a72c
  1. 2
      .gitignore
  2. 27
      Makefile
  3. 40
      packaging/zvirt.spec

2
.gitignore

@ -1 +1 @@
zvirt-*.tar.gz
build/

27
Makefile

@ -1,5 +1,6 @@
PREFIX ?= /usr/local
.PHONY: all test unit-test syntax-test e2e-test lint clean prerequisites install uninstall release tarball install-tarball
.PHONY: all test unit-test syntax-test e2e-test lint clean prerequisites install uninstall release tarball install-tarball srpm rpm
VERSION := $(shell git describe --tags --abbrev=0)
all: syntax-test lint unit-test e2e-test release
@ -14,6 +15,7 @@ prerequisites:
@/bin/bash -Eeuo pipefail -c 'if ! yq --version &>/dev/null; then dnf install -y yq; fi'
@/bin/bash -Eeuo pipefail -c 'if ! shellcheck --version &>/dev/null; then dnf install -y shellcheck; fi'
@/bin/bash -Eeuo pipefail -c 'if ! gh --version &>/dev/null; then dnf install -y gh; fi'
@/bin/bash -Eeuo pipefail -c 'if ! rpmbuild --version &>/dev/null; then dnf install -y rpm-build; fi'
unit-test: prerequisites
@echo "Running unit tests..."
@ -25,7 +27,7 @@ e2e-test: prerequisites
install:
@echo "Installing zvirt..."
@install -d $(PREFIX)/lib/zvirt
@install -d $(PREFIX)/lib/zvirt $(PREFIX)/bin
@install -m 755 src/bin/zvirt $(PREFIX)/bin/zvirt
@install -m 644 src/lib/zvirt/core.sh $(PREFIX)/lib/zvirt/core.sh
@ -36,19 +38,32 @@ uninstall:
tarball:
@echo "Creating release tarball..."
@set -Eeuo pipefail; VERSION=$$(git describe --tags --abbrev=0); tar --exclude-vcs --exclude='*.swp' -czf zvirt-$$VERSION.tar.gz --transform "s|^src|zvirt-$$VERSION|" src
@mkdir -p build
@tar --exclude-vcs --exclude='*.swp' -czf build/zvirt-$(VERSION).tar.gz --transform "s|^src|zvirt-$(VERSION)|" src
install-tarball: tarball
@echo "Installing zvirt from release tarball..."
@set -Eeuo pipefail; VERSION=$$(git describe --tags --abbrev=0); tar -xvzf zvirt-$$VERSION.tar.gz --strip-components=1 -C $(PREFIX)
@tar -xvzf build/zvirt-$(VERSION).tar.gz --strip-components=1 -C $(PREFIX)
srpm: prerequisites tarball
@echo "Creating SRPM..."
@git ls-files | sed 's|^|./|' > build/filelist.txt
@mkdir -p build/zvirt-$(VERSION)/SOURCES
@tar --verbatim-files-from --files-from=build/filelist.txt -cvzf build/zvirt-$(VERSION)/SOURCES/zvirt-$(VERSION).tar.gz --transform "s|^./|zvirt-$(VERSION)/|"
@rpmbuild --define "_topdir $$(pwd)/build/zvirt-$(VERSION)" --define "version $(VERSION)" -ba packaging/zvirt.spec
rpm: prerequisites
@echo "Creating RPM..."
@rpmbuild --define "_topdir $$(pwd)/build/zvirt-$(VERSION)" --define "version $(VERSION)" -bb packaging/zvirt.spec
release: prerequisites tarball
release: prerequisites tarball srpm rpm
@echo "Creating GitHub release..."
@set -Eeuo pipefail; VERSION=$$(git describe --tags --abbrev=0); gh release create $$VERSION zvirt-$$VERSION.tar.gz --draft --title "zvirt $$VERSION" --notes "Release $$VERSION of zvirt."
@gh release create $(VERSION) build/zvirt-$(VERSION).tar.gz build/zvirt-$(VERSION)/RPMS/noarch/zvirt-$(VERSION)-*.rpm build/zvirt-$(VERSION)/SRPMS/zvirt-$(VERSION)-*.rpm --draft --title "zvirt $(VERSION)" --notes "Release $(VERSION) of zvirt."
clean:
@echo "Cleaning up..."
@rm -rf build/zvirt-*
lint: prerequisites
@echo "Linting..."
@cd src && shellcheck --severity=error bin/zvirt lib/zvirt/*.sh

40
packaging/zvirt.spec

@ -0,0 +1,40 @@
Name: zvirt
Version: %{version}
Release: 1%{?dist}
Summary: Libvirt ZFS snapshots utility
License: MIT
URL: https://github.com/nmasse-itix/zvirt
Source0: %{name}-%{version}.tar.gz
BuildArch: noarch
Requires: bash
Requires: libvirt
Requires: zfs
%description
Zvirt takes snapshots of Libvirt domains using ZFS.
It supports both crash-consistent and live snapshots.
At the end, all components of a domain (Domain definition, TPM, NVRAM,
VirtioFS, ZFS snapshots of the underlying storage volumes) are captured
as a set of consistent ZFS snapshots.
%prep
%setup -q
%build
# Nothing to build for a shell script
%install
make PREFIX=%{buildroot}%{_prefix} install
%files
%{_bindir}/zvirt
%{_prefix}/lib/zvirt/core.sh
%dir %{_prefix}/lib/zvirt
%changelog
* Mon Nov 24 2025 Nicolas Massé <nicolas.masse@itix.fr> - 0.0.1-1
- Initial package release
Loading…
Cancel
Save