SHELL = /bin/sh .SUFFIXES: INSTALL = /usr/bin/install MNAME := octoprint MACHINES_DIR := /var/lib/machines MDIR := $(MACHINES_DIR)/$(MNAME) TDIR := $(MACHINES_DIR)/$(MNAME)-template DEVPTN := '/dev/ttyUSB*' OP = systemd-nspawn --machine=$(MNAME) --hostname=$(MNAME) --directory="$(MDIR)" --tmpfs=/run --tmpfs=/run/lock all: @echo Nothing to do. @echo run 'sudo make install' .PHONY: all /usr/bin/systemd-nspawn: apt install -y systemd-container /etc/cron-apt/action.d /usr/sbin/cron-apt: apt install -y cron-apt /etc/cron-apt/action.d/6-upgrade: /etc/cron-apt/action.d /etc/cron-apt/action.d/6-upgrade $(MDIR)/etc/cron-apt/action.d/6-upgrade: src/cron-apt-6-upgrade $(INSTALL) -o root -g root -m 644 $< $@ /usr/sbin/debootstrap: apt install -y debootstrap touch "$@" /etc/systemd/system/octoprint-container@.service: src/octoprint-container@.service $(INSTALL) -o root -g root -m 0644 $< $@ /etc/systemd/system/multi-user.target.wants/octoprint-container@.service: /etc/systemd/system/octoprint-container@.service ln -fs $< $@ $(MDIR): /usr/sbin/debootstrap rm -rf "$@".tmp debootstrap --include=systemd-container stable "$@".tmp touch "$@".tmp mv "$@".tmp "$@" $(MDIR)/usr/bin/pip3: $(MDIR) $(OP) apt install -y python3-pip touch "$@" $(MDIR)/usr/bin/ffmpeg: $(MDIR) $(OP) apt install -y ffmpeg touch "$@" $(MDIR)/usr/sbin/cron-apt: $(MDIR) $(OP) apt install -y cron-apt touch "$@" $(MDIR)/usr/bin/nullmailer-send: $(MDIR) $(OP) apt install -y nullmailer touch "$@" $(MDIR)/usr/local/bin/octoprint: $(MDIR)/usr/bin/pip3 $(OP) pip3 install octoprint touch "$@" install_octoprint: $(MDIR) /usr/bin/systemd-nspawn $(addprefix $(MDIR),/usr/bin/pip3 /usr/bin/ffmpeg /usr/local/bin/octoprint) $(OP) sh -c 'getent passwd octoprint >/dev/null || useradd -mrUd /var/lib/octoprint -G dialout octoprint' .PHONY: install_octoprint $(MDIR)/usr/local/libexec/octoprint-init: src/octoprint-init $(MDIR)/usr/local/libexec $(INSTALL) -o root -g root -m 0755 $< $@ $(MDIR)/etc/systemd/system/octoprint-init.service: src/octoprint-init.service $(MDIR) $(INSTALL) -o root -g root -m 0755 $< $@ $(MDIR)/etc/systemd/system/multi-user.target.wants/octoprint-init.service: $(MDIR)/etc/systemd/system/octoprint-init.service ln -fs $< $@ $(MDIR)/etc/systemd/system/octoprint.service: src/octoprint.service $(INSTALL) -o root -g root -m 0644 $< $@ TDIR_DIRS = $(addprefix $(TDIR),/dev /media /opt /etc /mnt /usr /usr/lib \ /local /home /srv /run /boot /tmp /root /var /var/backups /var/opt \ /var/lib /var/local /var/spool /var/spool/cron /var/spool/rsyslog \ /var/spool/mail /var/log /var/cache /var/tmp /var/mail /proc /sys) $(TDIR_DIRS): $(dir $@) $(INSTALL) -o root -g root -m 0755 -d $@ $(MDIR)/usr/local/libexec: $(INSTALL) -o root -g root -m 0755 -d $@ $(TDIR): $(INSTALL) -o root -g root -m 0755 -d $@ ##### install*: ##### install_system: /usr/bin/systemd-nspawn /usr/sbin/cron-apt /etc/cron-apt/action.d/6-upgrade .PHONY: install_system install_container: install_octoprint \ /etc/systemd/system/octoprint-container@.service \ $(MDIR)/usr/local/libexec/octoprint-init \ $(MDIR)/etc/systemd/system/octoprint-init.service \ $(MDIR)/etc/systemd/system/multi-user.target.wants/octoprint-init.service \ $(MDIR)/etc/systemd/system/octoprint.service \ $(MDIR)/etc/cron-apt/action.d/6-upgrade .PHONY: install_container install_template: $(TDIR_DIRS) .PHONY: install_template install: install_system install_container install_template systemctl daemon-reload .PHONY: install