# vmsig packaging — `make deb` builds the .deb over a `cmake --install` stage. # Private values are NOT baked into the tree: pass them via the variables below (the # defaults are neutral placeholders; CI overrides them from vars/secrets). # # make deb LIBVMIE_PATH=/path/to/vmie VERSION=1.2.3 \ # MAINTAINER="Name " DEPENDS="libc6, libvmie0" VERSION ?= 0.0.0 MAINTAINER ?= vmsig packaging # libvmie0 is vmie's own runtime package (SONAME libvmie.so.0): libvmsig.so and # libvgpu-perception.so dynamically link it, so it is a HARD runtime dependency. DEPENDS ?= libc6, libvmie0 ARCH ?= amd64 LIBVMIE_PATH ?= BUILD_DIR ?= .build-pkg STAGE ?= $(CURDIR)/dist/stage DIST ?= $(CURDIR)/dist .PHONY: deb clean # Armed package: the shipped daemon needs vmie for memctx. vmie stays an external dependency # (package Depends on its runtime). vmie is found from a source tree (LIBVMIE_PATH) or, when # that is empty, from the installed libvmie-dev (system / CMAKE_PREFIX_PATH) — the CI path. deb: rm -rf $(STAGE) cmake -S . -B $(BUILD_DIR) -DCMAKE_BUILD_TYPE=Release -DVMSIG_INSTALL=ON -DVMSIG_WITH_VMIE=ON \ $(if $(LIBVMIE_PATH),-DLIBVMIE_PATH=$(LIBVMIE_PATH),) cmake --build $(BUILD_DIR) -j DESTDIR=$(STAGE) cmake --install $(BUILD_DIR) --prefix /usr mkdir -p $(STAGE)/DEBIAN sed -e 's/@VERSION@/$(VERSION)/' \ -e 's|@MAINTAINER@|$(MAINTAINER)|' \ -e 's/@DEPENDS@/$(DEPENDS)/' \ packaging/deb/control.in > $(STAGE)/DEBIAN/control cp packaging/deb/conffiles $(STAGE)/DEBIAN/conffiles install -m 0755 packaging/deb/postinst $(STAGE)/DEBIAN/postinst install -m 0755 packaging/deb/prerm $(STAGE)/DEBIAN/prerm # strip inherited setgid from staged dirs (a setgid build tree => dpkg-deb rejects DEBIAN) find $(STAGE) -type d -exec chmod g-s {} + mkdir -p $(DIST) dpkg-deb --root-owner-group --build $(STAGE) $(DIST)/vmsig_$(VERSION)_$(ARCH).deb @echo "built: $(DIST)/vmsig_$(VERSION)_$(ARCH).deb" clean: rm -rf $(BUILD_DIR) $(DIST)