# vmsig packaging — `make deb` builds TWO Debian packages from per-component install stages: # vmsig — the signaling daemon + library + headers + systemd unit # libvgpu-perception — the host-side vgpu perception S-lib (SEPARATE: not in vmsig) # Private values are NOT baked in: pass them via the variables below (CI overrides them). # # make deb LIBVMIE_PATH=/path/to/vmie VERSION=1.2.3 MAINTAINER="Name " VERSION ?= 0.0.0 MAINTAINER ?= vmsig packaging # libvmie0 is vmie's runtime package (SONAME libvmie.so.0): both libvmsig.so and # libvgpu-perception.so dynamically link it — a hard runtime dependency of each package. DEPENDS ?= libc6, libvmie0 ARCH ?= amd64 LIBVMIE_PATH ?= BUILD_DIR ?= .build-pkg DIST ?= $(CURDIR)/dist .PHONY: deb clean # vmie is found from a source tree (LIBVMIE_PATH) or, when empty, the installed libvmie-dev # (system / CMAKE_PREFIX_PATH) — the CI path. deb: 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 mkdir -p $(DIST) # ---- package: vmsig (component `daemon`) ---- rm -rf $(DIST)/stage-daemon DESTDIR=$(DIST)/stage-daemon cmake --install $(BUILD_DIR) --prefix /usr --component daemon mkdir -p $(DIST)/stage-daemon/DEBIAN sed -e 's/@VERSION@/$(VERSION)/' -e 's|@MAINTAINER@|$(MAINTAINER)|' -e 's/@DEPENDS@/$(DEPENDS)/' \ packaging/deb/vmsig/control.in > $(DIST)/stage-daemon/DEBIAN/control cp packaging/deb/vmsig/conffiles $(DIST)/stage-daemon/DEBIAN/conffiles install -m 0755 packaging/deb/vmsig/postinst $(DIST)/stage-daemon/DEBIAN/postinst install -m 0755 packaging/deb/vmsig/prerm $(DIST)/stage-daemon/DEBIAN/prerm find $(DIST)/stage-daemon -type d -exec chmod g-s {} + dpkg-deb --root-owner-group --build $(DIST)/stage-daemon $(DIST)/vmsig_$(VERSION)_$(ARCH).deb # ---- package: libvgpu-perception0 (component `vgpu_runtime` — versioned .so) ---- rm -rf $(DIST)/stage-vgpu0 DESTDIR=$(DIST)/stage-vgpu0 cmake --install $(BUILD_DIR) --prefix /usr --component vgpu_runtime mkdir -p $(DIST)/stage-vgpu0/DEBIAN sed -e 's/@VERSION@/$(VERSION)/' -e 's|@MAINTAINER@|$(MAINTAINER)|' -e 's/@DEPENDS@/$(DEPENDS)/' \ packaging/deb/vgpu0/control.in > $(DIST)/stage-vgpu0/DEBIAN/control install -m 0755 packaging/deb/vgpu0/postinst $(DIST)/stage-vgpu0/DEBIAN/postinst find $(DIST)/stage-vgpu0 -type d -exec chmod g-s {} + dpkg-deb --root-owner-group --build $(DIST)/stage-vgpu0 $(DIST)/libvgpu-perception0_$(VERSION)_$(ARCH).deb # ---- package: libvgpu-perception-dev (component `vgpu_dev` — namelink + headers) ---- rm -rf $(DIST)/stage-vgpu-dev DESTDIR=$(DIST)/stage-vgpu-dev cmake --install $(BUILD_DIR) --prefix /usr --component vgpu_dev mkdir -p $(DIST)/stage-vgpu-dev/DEBIAN sed -e 's/@VERSION@/$(VERSION)/' -e 's|@MAINTAINER@|$(MAINTAINER)|' \ -e 's/@DEPENDS@/libvgpu-perception0 (= $(VERSION))/' \ packaging/deb/vgpu-dev/control.in > $(DIST)/stage-vgpu-dev/DEBIAN/control find $(DIST)/stage-vgpu-dev -type d -exec chmod g-s {} + dpkg-deb --root-owner-group --build $(DIST)/stage-vgpu-dev $(DIST)/libvgpu-perception-dev_$(VERSION)_$(ARCH).deb @echo "built: vmsig + libvgpu-perception0 + libvgpu-perception-dev ($(VERSION))" clean: rm -rf $(BUILD_DIR) $(DIST)