Yann E. MORIN | c0fd0ac | 2017-08-02 00:52:20 +0200 | [diff] [blame] | 1 | ################################################################################ |
| 2 | # |
Cam Hutchison | ecbe2be | 2017-08-14 07:21:10 +1000 | [diff] [blame] | 3 | # skeleton-init-systemd |
Yann E. MORIN | c0fd0ac | 2017-08-02 00:52:20 +0200 | [diff] [blame] | 4 | # |
| 5 | ################################################################################ |
| 6 | |
| 7 | # The skeleton can't depend on the toolchain, since all packages depends on the |
| 8 | # skeleton and the toolchain is a target package, as is skeleton. |
| 9 | # Hence, skeleton would depends on the toolchain and the toolchain would depend |
| 10 | # on skeleton. |
Cam Hutchison | ecbe2be | 2017-08-14 07:21:10 +1000 | [diff] [blame] | 11 | SKELETON_INIT_SYSTEMD_ADD_TOOLCHAIN_DEPENDENCY = NO |
| 12 | SKELETON_INIT_SYSTEMD_ADD_SKELETON_DEPENDENCY = NO |
Yann E. MORIN | c0fd0ac | 2017-08-02 00:52:20 +0200 | [diff] [blame] | 13 | |
Cam Hutchison | 5e5547a | 2017-08-14 07:21:12 +1000 | [diff] [blame] | 14 | SKELETON_INIT_SYSTEMD_DEPENDENCIES = skeleton-init-common |
Yann E. MORIN | c0fd0ac | 2017-08-02 00:52:20 +0200 | [diff] [blame] | 15 | |
Cam Hutchison | ecbe2be | 2017-08-14 07:21:10 +1000 | [diff] [blame] | 16 | SKELETON_INIT_SYSTEMD_PROVIDES = skeleton |
Yann E. MORIN | c0fd0ac | 2017-08-02 00:52:20 +0200 | [diff] [blame] | 17 | |
Yann E. MORIN | 26085bb | 2017-08-02 00:52:23 +0200 | [diff] [blame] | 18 | ifeq ($(BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW),y) |
| 19 | |
Cam Hutchison | ecbe2be | 2017-08-14 07:21:10 +1000 | [diff] [blame] | 20 | define SKELETON_INIT_SYSTEMD_ROOT_RO_OR_RW |
Yann E. MORIN | 26085bb | 2017-08-02 00:52:23 +0200 | [diff] [blame] | 21 | echo "/dev/root / auto rw 0 1" >$(TARGET_DIR)/etc/fstab |
| 22 | mkdir -p $(TARGET_DIR)/var |
| 23 | endef |
| 24 | |
| 25 | else |
| 26 | |
| 27 | # On a R/O rootfs, /var is a tmpfs filesystem. So, at build time, we |
| 28 | # redirect /var to the "factory settings" location. Just before the |
| 29 | # filesystem gets created, the /var symlink will be replaced with |
| 30 | # a real (but empty) directory, and the "factory files" will be copied |
| 31 | # back there by the tmpfiles.d mechanism. |
Cam Hutchison | ecbe2be | 2017-08-14 07:21:10 +1000 | [diff] [blame] | 32 | define SKELETON_INIT_SYSTEMD_ROOT_RO_OR_RW |
Yann E. MORIN | 26085bb | 2017-08-02 00:52:23 +0200 | [diff] [blame] | 33 | mkdir -p $(TARGET_DIR)/etc/systemd/tmpfiles.d |
| 34 | mkdir -p $(TARGET_DIR)/usr/share/factory/var |
| 35 | ln -s usr/share/factory/var $(TARGET_DIR)/var |
| 36 | echo "/dev/root / auto ro 0 1" >$(TARGET_DIR)/etc/fstab |
| 37 | echo "tmpfs /var tmpfs mode=1777 0 0" >>$(TARGET_DIR)/etc/fstab |
| 38 | endef |
| 39 | |
Cam Hutchison | ecbe2be | 2017-08-14 07:21:10 +1000 | [diff] [blame] | 40 | define SKELETON_INIT_SYSTEMD_PRE_ROOTFS_VAR |
Yann E. MORIN | 26085bb | 2017-08-02 00:52:23 +0200 | [diff] [blame] | 41 | rm -f $(TARGET_DIR)/var |
| 42 | mkdir $(TARGET_DIR)/var |
Trent Piepho | 7e81170 | 2018-03-04 18:06:15 +0100 | [diff] [blame^] | 43 | for i in $(TARGET_DIR)/usr/share/factory/var/* \ |
| 44 | $(TARGET_DIR)/usr/share/factory/var/lib/* \ |
| 45 | $(TARGET_DIR)/usr/share/factory/var/lib/systemd/*; do \ |
| 46 | [ -e "$${i}" ] || continue; \ |
Yann E. MORIN | 26085bb | 2017-08-02 00:52:23 +0200 | [diff] [blame] | 47 | j="$${i#$(TARGET_DIR)/usr/share/factory}"; \ |
| 48 | if [ -L "$${i}" ]; then \ |
| 49 | printf "L+! %s - - - - %s\n" \ |
| 50 | "$${j}" "../usr/share/factory/$${j}" \ |
| 51 | || exit 1; \ |
| 52 | else \ |
| 53 | printf "C! %s - - - -\n" "$${j}" \ |
| 54 | || exit 1; \ |
| 55 | fi; \ |
| 56 | done >$(TARGET_DIR)/etc/tmpfiles.d/var-factory.conf |
| 57 | endef |
Cam Hutchison | ecbe2be | 2017-08-14 07:21:10 +1000 | [diff] [blame] | 58 | SKELETON_INIT_SYSTEMD_ROOTFS_PRE_CMD_HOOKS += SKELETON_INIT_SYSTEMD_PRE_ROOTFS_VAR |
Yann E. MORIN | 26085bb | 2017-08-02 00:52:23 +0200 | [diff] [blame] | 59 | |
Cam Hutchison | ecbe2be | 2017-08-14 07:21:10 +1000 | [diff] [blame] | 60 | define SKELETON_INIT_SYSTEMD_POST_ROOTFS_VAR |
Yann E. MORIN | 26085bb | 2017-08-02 00:52:23 +0200 | [diff] [blame] | 61 | rm -rf $(TARGET_DIR)/var |
| 62 | ln -s usr/share/factory/var $(TARGET_DIR)/var |
| 63 | endef |
Cam Hutchison | ecbe2be | 2017-08-14 07:21:10 +1000 | [diff] [blame] | 64 | SKELETON_INIT_SYSTEMD_ROOTFS_POST_CMD_HOOKS += SKELETON_INIT_SYSTEMD_POST_ROOTFS_VAR |
Yann E. MORIN | 26085bb | 2017-08-02 00:52:23 +0200 | [diff] [blame] | 65 | |
| 66 | endif |
| 67 | |
Cam Hutchison | ecbe2be | 2017-08-14 07:21:10 +1000 | [diff] [blame] | 68 | define SKELETON_INIT_SYSTEMD_INSTALL_TARGET_CMDS |
Yann E. MORIN | 76fc927 | 2017-08-02 00:52:21 +0200 | [diff] [blame] | 69 | mkdir -p $(TARGET_DIR)/home |
| 70 | mkdir -p $(TARGET_DIR)/srv |
Cam Hutchison | ecbe2be | 2017-08-14 07:21:10 +1000 | [diff] [blame] | 71 | $(SKELETON_INIT_SYSTEMD_ROOT_RO_OR_RW) |
Yann E. MORIN | 76fc927 | 2017-08-02 00:52:21 +0200 | [diff] [blame] | 72 | endef |
| 73 | |
Yann E. MORIN | c0fd0ac | 2017-08-02 00:52:20 +0200 | [diff] [blame] | 74 | $(eval $(generic-package)) |