@@ -12,21 +12,29 @@ PACKAGE_NAME := isaac-ros-cli
1212
1313# Convenience variable for the built .deb (lives one dir up when using dpkg-buildpackage)
1414DEB_GLOB := ../$(PACKAGE_NAME ) _*.deb
15+ DOCKER_DEB_OVERRIDE_DIR := .docker-deb-overrides
16+ SYSTEM_DOCKER_DEB_OVERRIDE_DIR := /etc/$(PACKAGE_NAME ) /$(DOCKER_DEB_OVERRIDE_DIR )
1517
16- .PHONY : help all build upload clean distclean release print-deb
18+ .PHONY : help all build install test upload clean distclean release print-deb clear-docker-overrides
1719
1820help :
1921 @echo " Targets:"
2022 @echo " make build - Build Debian package (.deb)"
23+ @echo " sudo make install - Install built Debian and stage it as Docker override"
24+ @echo " make test - Run Python CLI unit tests"
2125 @echo " make build-stamped - Build Debian package (.deb) with timestamped version"
2226 @echo " make timestamp - Append timestamp suffix to debian/changelog"
2327 @echo " make clean - Remove staged packaging artifacts inside debian/"
2428 @echo " make distclean - Clean and remove built files in parent dir"
2529 @echo " make print-deb - Print the path to the built .deb (expects exactly one)"
30+ @echo " sudo make clear-docker-overrides - Remove Docker Debian overrides"
2631 @echo " "
2732
2833all : build
2934
35+ test :
36+ PYTHONPATH=src python3 -m unittest discover -s tests -t . -v
37+
3038timestamp :
3139 @set -e; \
3240 timestamp=$$(date +%Y%m%d%H%M%S ) ; \
@@ -39,6 +47,32 @@ build:
3947 DEB_BUILD_OPTIONS=nocheck dpkg-buildpackage -us -uc -b
4048 @echo " Build complete. Use 'make print-deb' to locate the .deb file."
4149
50+ install :
51+ @set -e; \
52+ if [ -n " $( DESTDIR) " ]; then \
53+ echo " Skipping host install during Debian package staging." ; \
54+ exit 0; \
55+ fi ; \
56+ if [ " $$ (id -u)" -ne 0 ]; then \
57+ echo " Error: 'make install' must be run as root. Use 'sudo make install'." 1>&2 ; \
58+ exit 1; \
59+ fi ; \
60+ deb=" $$ ( $( MAKE) --no-print-directory -s print-deb )" ; \
61+ echo " Installing host package from $$ deb..." ; \
62+ apt-get install -y " $$ deb" ; \
63+ mkdir -p " $( DOCKER_DEB_OVERRIDE_DIR) " ; \
64+ rm -f " $( DOCKER_DEB_OVERRIDE_DIR) " /$(PACKAGE_NAME ) _* .deb; \
65+ cp " $$ deb" " $( DOCKER_DEB_OVERRIDE_DIR) /" ; \
66+ if [ -n " $$ {SUDO_UID:-}" ] && [ -n " $$ {SUDO_GID:-}" ]; then \
67+ chown -R " $$ SUDO_UID:$$ SUDO_GID" " $( DOCKER_DEB_OVERRIDE_DIR) " ; \
68+ fi ; \
69+ mkdir -p " $( SYSTEM_DOCKER_DEB_OVERRIDE_DIR) " ; \
70+ rm -f " $( SYSTEM_DOCKER_DEB_OVERRIDE_DIR) " /$(PACKAGE_NAME ) _* .deb; \
71+ cp " $$ deb" " $( SYSTEM_DOCKER_DEB_OVERRIDE_DIR) /" ; \
72+ echo " Staged source-local Docker Debian override: $( DOCKER_DEB_OVERRIDE_DIR) /$$ (basename " $$ deb" )" ; \
73+ echo " Staged Docker Debian override: $( SYSTEM_DOCKER_DEB_OVERRIDE_DIR) /$$ (basename " $$ deb" )" ; \
74+ echo " Docker builds driven by the installed CLI will use this override until it is cleared."
75+
4276build-stamped :
4377 cp debian/changelog debian/changelog.original
4478 make timestamp
@@ -57,7 +91,18 @@ print-deb:
5791clean :
5892 @echo " Removing staged packaging artifacts under debian/..."
5993 rm -rf debian/$(PACKAGE_NAME ) debian/* .debhelper debian/* .substvars debian/debhelper-build-stamp debian/files
94+ rm -rf $(DOCKER_DEB_OVERRIDE_DIR )
6095
6196distclean : clean
6297 @echo " Removing built artifacts in parent directory (if any)..."
6398 rm -f ../$(PACKAGE_NAME ) _* .deb ../$(PACKAGE_NAME ) _* .buildinfo ../$(PACKAGE_NAME ) _* .changes
99+
100+ clear-docker-overrides :
101+ @rm -rf $(DOCKER_DEB_OVERRIDE_DIR )
102+ @if [ " $$ (id -u)" -eq 0 ]; then \
103+ rm -rf " $( SYSTEM_DOCKER_DEB_OVERRIDE_DIR) " ; \
104+ echo " Removed source-local and system Docker Debian overrides." ; \
105+ else \
106+ echo " Removed source-local Docker Debian overrides." ; \
107+ echo " Run 'sudo make clear-docker-overrides' to also remove $( SYSTEM_DOCKER_DEB_OVERRIDE_DIR) ." ; \
108+ fi
0 commit comments