Browse Source

fix main units start/enable

main
Nicolas Massé 4 weeks ago
parent
commit
a112184749
  1. 7
      cookbooks/base/Makefile
  2. 1
      scripts/butane.blocklist
  3. 38
      scripts/common.mk
  4. 2
      scripts/generate-butane-spec.sh
  5. 16
      scripts/generate-tarball.sh

7
cookbooks/base/Makefile

@ -1,10 +1,11 @@
# Include common Makefile
include ../../scripts/common.mk
SYSTEMD_MAIN_UNIT_NAMES += var-lib-virtiofs-data.mount SYSTEMD_MAIN_UNIT_NAMES := var-lib-virtiofs-data.mount
SYSTEMD_MAIN_UNIT_NAMES += rpm-ostree-install-qemu-guest-agent.service SYSTEMD_MAIN_UNIT_NAMES += rpm-ostree-install-qemu-guest-agent.service
SYSTEMD_MAIN_UNIT_NAMES += install-fastfetch.service SYSTEMD_MAIN_UNIT_NAMES += install-fastfetch.service
# Include common Makefile
include ../../scripts/common.mk
pre-requisites:: pre-requisites::
@set -Eeuo pipefail; \ @set -Eeuo pipefail; \
for tool in rpm-ostree; do \ for tool in rpm-ostree; do \

1
scripts/butane.blocklist

@ -10,3 +10,4 @@
/etc/tmpfiles.d /etc/tmpfiles.d
/etc/sysctl.d /etc/sysctl.d
/etc/profile.d /etc/profile.d
/etc/sysconfig

38
scripts/common.mk

@ -83,7 +83,12 @@ SYSTEMD_UNIT_NAMES := $(wildcard *.service *.target *.timer *.mount)
SYSTEMD_TIMER_NAMES := $(wildcard *.timer) SYSTEMD_TIMER_NAMES := $(wildcard *.timer)
# The main systemd units will be enabled and started after installation. # The main systemd units will be enabled and started after installation.
SYSTEMD_MAIN_UNIT_NAMES := $(wildcard *.target) SYSTEMD_MAIN_UNIT_NAMES ?= $(wildcard *.target)
SYSTEMD_START_UNITS = $(SYSTEMD_MAIN_UNIT_NAMES)
# Generated systemd units (quadlets) cannot be enabled.
# That's why we filter them out from the list of units to be enabled.
SYSTEMD_ENABLE_UNITS = $(filter-out $(QUADLET_UNIT_NAMES),$(SYSTEMD_MAIN_UNIT_NAMES))
# Configuration files # Configuration files
CONFIG_FILES := $(shell find config/ -mindepth 1 \! -path "config/examples/*" \! -path "config/examples" 2>/dev/null) CONFIG_FILES := $(shell find config/ -mindepth 1 \! -path "config/examples/*" \! -path "config/examples" 2>/dev/null)
@ -255,28 +260,28 @@ install-files-pre::
# This target can be extended by Makefiles sourcing this one. # This target can be extended by Makefiles sourcing this one.
install-files-post:: install-files-post::
# Generated systemd units (quadlets) cannot be enabled.
# That's why we filter them out from the list of units to be enabled.
install-actions uninstall: ENABLE_UNITS = $(filter-out $(QUADLET_UNIT_NAMES),$(SYSTEMD_MAIN_UNIT_NAMES) $(SYSTEMD_TIMER_NAMES))
install-actions uninstall: START_UNITS = $(SYSTEMD_MAIN_UNIT_NAMES)
# Perform post-installation actions such as enabling and starting units. # Perform post-installation actions such as enabling and starting units.
install-actions: install-actions-pre install-actions: install-actions-pre
systemctl daemon-reload systemctl daemon-reload
systemd-analyze --generators=true verify $(QUADLET_UNIT_NAMES) $(SYSTEMD_UNIT_NAMES)
@run() { echo $$*; "$$@"; }; \ @run() { echo $$*; "$$@"; }; \
set -Eeuo pipefail; \ set -Eeuo pipefail; \
if [[ ! "$(QUADLET_UNIT_NAMES)" =~ ^[[:space:]]*$$ ]]; then \
run systemd-analyze --generators=true verify $(QUADLET_UNIT_NAMES); \
fi; \
if [[ ! "$(SYSTEMD_UNIT_NAMES)" =~ ^[[:space:]]*$$ ]]; then \
run systemd-analyze --generators=true verify $(SYSTEMD_UNIT_NAMES); \
fi; \
if [ -f /etc/tmpfiles.d/$(PROJECT_NAME).conf ]; then \ if [ -f /etc/tmpfiles.d/$(PROJECT_NAME).conf ]; then \
run systemd-tmpfiles --create /etc/tmpfiles.d/$(PROJECT_NAME).conf; \ run systemd-tmpfiles --create /etc/tmpfiles.d/$(PROJECT_NAME).conf; \
fi; \ fi; \
if [ -f /etc/sysctl.d/$(PROJECT_NAME).conf ]; then \ if [ -f /etc/sysctl.d/$(PROJECT_NAME).conf ]; then \
run sysctl -q -p /etc/sysctl.d/$(PROJECT_NAME).conf; \ run sysctl -q -p /etc/sysctl.d/$(PROJECT_NAME).conf; \
fi ; \ fi ; \
if [ -n "$(ENABLE_UNITS)" ]; then \ if [ -n "$(SYSTEMD_ENABLE_UNITS)" ]; then \
run systemctl enable $(ENABLE_UNITS); \ run systemctl enable $(SYSTEMD_ENABLE_UNITS); \
fi ; \ fi ; \
if [ -n "$(START_UNITS)" ]; then \ if [ -n "$(SYSTEMD_START_UNITS)" ]; then \
run systemctl start $(START_UNITS); \ run systemctl start $(SYSTEMD_START_UNITS); \
fi fi
$(MAKE) install-actions-post $(MAKE) install-actions-post
@ -314,11 +319,11 @@ uninstall: FILES_TO_REMOVE := $(shell echo $(TARGET_FILES) $(TARGET_EXAMPLE_FILE
uninstall: pre-requisites uninstall-pre uninstall: pre-requisites uninstall-pre
@run() { echo $$*; "$$@"; }; \ @run() { echo $$*; "$$@"; }; \
set -Eeuo pipefail; \ set -Eeuo pipefail; \
if [ -n "$(ENABLE_UNITS)" ]; then \ if [ -n "$(SYSTEMD_ENABLE_UNITS)" ]; then \
run systemctl disable $(ENABLE_UNITS) || true; \ run systemctl disable $(SYSTEMD_ENABLE_UNITS) || true; \
fi ; \ fi ; \
if [ -n "$(START_UNITS)" ]; then \ if [ -n "$(SYSTEMD_START_UNITS)" ]; then \
run systemctl stop $(START_UNITS) || true; \ run systemctl stop $(SYSTEMD_START_UNITS) || true; \
fi fi
@run() { echo $$*; "$$@"; }; \ @run() { echo $$*; "$$@"; }; \
set -Eeuo pipefail; \ set -Eeuo pipefail; \
@ -360,7 +365,8 @@ pytest: pre-requisites
build/$(PROJECT_NAME).tar.gz build/$(PROJECT_NAME).bu build/$(PROJECT_NAME)-examples.bu: export PROJECT_NAME := $(PROJECT_NAME) build/$(PROJECT_NAME).tar.gz build/$(PROJECT_NAME).bu build/$(PROJECT_NAME)-examples.bu: export PROJECT_NAME := $(PROJECT_NAME)
build/$(PROJECT_NAME).tar.gz build/$(PROJECT_NAME).bu build/$(PROJECT_NAME)-examples.bu: export TARGET_CHROOT := $(TARGET_CHROOT) build/$(PROJECT_NAME).tar.gz build/$(PROJECT_NAME).bu build/$(PROJECT_NAME)-examples.bu: export TARGET_CHROOT := $(TARGET_CHROOT)
build/$(PROJECT_NAME).tar.gz build/$(PROJECT_NAME).bu build/$(PROJECT_NAME)-examples.bu: export BUTANE_BLOCKLIST := $(BUTANE_BLOCKLIST) build/$(PROJECT_NAME).tar.gz build/$(PROJECT_NAME).bu build/$(PROJECT_NAME)-examples.bu: export BUTANE_BLOCKLIST := $(BUTANE_BLOCKLIST)
build/$(PROJECT_NAME).tar.gz build/$(PROJECT_NAME).bu build/$(PROJECT_NAME)-examples.bu: export SYSTEMD_MAIN_UNIT_NAMES := $(SYSTEMD_MAIN_UNIT_NAMES) build/$(PROJECT_NAME).tar.gz build/$(PROJECT_NAME).bu build/$(PROJECT_NAME)-examples.bu: export SYSTEMD_ENABLE_UNITS := $(SYSTEMD_ENABLE_UNITS)
build/$(PROJECT_NAME).tar.gz build/$(PROJECT_NAME).bu build/$(PROJECT_NAME)-examples.bu: export SYSTEMD_START_UNITS := $(SYSTEMD_START_UNITS)
build/$(PROJECT_NAME).tar.gz build/$(PROJECT_NAME).bu build/$(PROJECT_NAME)-examples.bu: export SYSTEMD_TIMER_NAMES := $(SYSTEMD_TIMER_NAMES) build/$(PROJECT_NAME).tar.gz build/$(PROJECT_NAME).bu build/$(PROJECT_NAME)-examples.bu: export SYSTEMD_TIMER_NAMES := $(SYSTEMD_TIMER_NAMES)
build/$(PROJECT_NAME).tar.gz build/$(PROJECT_NAME).bu build/$(PROJECT_NAME)-examples.bu &: build/$(PROJECT_NAME).tar.gz build/$(PROJECT_NAME).bu build/$(PROJECT_NAME)-examples.bu &:
@if [ -z "$(TARGET_CHROOT)" ]; then \ @if [ -z "$(TARGET_CHROOT)" ]; then \

2
scripts/generate-butane-spec.sh

@ -70,7 +70,7 @@ cat >> "$OUTPUT" <<"EOF"
systemd: systemd:
units: units:
EOF EOF
for unit in ${SYSTEMD_MAIN_UNIT_NAMES}; do for unit in ${SYSTEMD_ENABLE_UNITS}; do
cat >> "$OUTPUT" <<EOF cat >> "$OUTPUT" <<EOF
- name: "$unit" - name: "$unit"
enabled: true enabled: true

16
scripts/generate-tarball.sh

@ -68,13 +68,21 @@ if [ "${#files_to_include[@]}" -gt 0 ]; then
else else
echo "files: []" >> "$metadata_file" echo "files: []" >> "$metadata_file"
fi fi
if [ -n "${SYSTEMD_MAIN_UNIT_NAMES}" ]; then if [ -n "${SYSTEMD_START_UNITS}" ]; then
echo "systemd_main_units:" >> "$metadata_file" echo "systemd_start_units:" >> "$metadata_file"
for unit in ${SYSTEMD_MAIN_UNIT_NAMES}; do for unit in ${SYSTEMD_START_UNITS}; do
echo "- $unit" echo "- $unit"
done >> "$metadata_file" done >> "$metadata_file"
else else
echo "systemd_main_units: []" >> "$metadata_file" echo "systemd_start_units: []" >> "$metadata_file"
fi
if [ -n "${SYSTEMD_ENABLE_UNITS}" ]; then
echo "systemd_enable_units:" >> "$metadata_file"
for unit in ${SYSTEMD_ENABLE_UNITS}; do
echo "- $unit"
done >> "$metadata_file"
else
echo "systemd_enable_units: []" >> "$metadata_file"
fi fi
# Convert metadata.yaml to metadata.json # Convert metadata.yaml to metadata.json
yq -o json "$metadata_file" > "$tmp_dir/metadata.json" yq -o json "$metadata_file" > "$tmp_dir/metadata.json"

Loading…
Cancel
Save