diff options
| -rw-r--r-- | meta/classes/overlayfs.bbclass | 52 | ||||
| -rw-r--r-- | meta/files/overlayfs-all-overlays.service.in | 12 | ||||
| -rw-r--r-- | meta/files/overlayfs-create-dirs.service.in | 14 | ||||
| -rw-r--r-- | meta/files/overlayfs-unit.mount.in | 13 |
4 files changed, 49 insertions, 42 deletions
diff --git a/meta/classes/overlayfs.bbclass b/meta/classes/overlayfs.bbclass index f1b8086ea8..4a860f7308 100644 --- a/meta/classes/overlayfs.bbclass +++ b/meta/classes/overlayfs.bbclass | |||
| @@ -37,51 +37,19 @@ REQUIRED_DISTRO_FEATURES += "systemd overlayfs" | |||
| 37 | 37 | ||
| 38 | inherit systemd features_check | 38 | inherit systemd features_check |
| 39 | 39 | ||
| 40 | OVERLAYFS_CREATE_DIRS_TEMPLATE ??= "${COREBASE}/meta/files/overlayfs-create-dirs.service.in" | ||
| 41 | OVERLAYFS_MOUNT_UNIT_TEMPLATE ??= "${COREBASE}/meta/files/overlayfs-unit.mount.in" | ||
| 42 | OVERLAYFS_ALL_OVERLAYS_TEMPLATE ??= "${COREBASE}/meta/files/overlayfs-all-overlays.service.in" | ||
| 43 | |||
| 40 | python do_create_overlayfs_units() { | 44 | python do_create_overlayfs_units() { |
| 41 | from oe.overlayfs import mountUnitName | 45 | from oe.overlayfs import mountUnitName |
| 42 | 46 | ||
| 43 | CreateDirsUnitTemplate = """[Unit] | 47 | with open(d.getVar("OVERLAYFS_CREATE_DIRS_TEMPLATE"), "r") as f: |
| 44 | Description=Overlayfs directories setup | 48 | CreateDirsUnitTemplate = f.read() |
| 45 | Requires={DATA_MOUNT_UNIT} | 49 | with open(d.getVar("OVERLAYFS_MOUNT_UNIT_TEMPLATE"), "r") as f: |
| 46 | After={DATA_MOUNT_UNIT} | 50 | MountUnitTemplate = f.read() |
| 47 | DefaultDependencies=no | 51 | with open(d.getVar("OVERLAYFS_ALL_OVERLAYS_TEMPLATE"), "r") as f: |
| 48 | 52 | AllOverlaysTemplate = f.read() | |
| 49 | [Service] | ||
| 50 | Type=oneshot | ||
| 51 | ExecStart=mkdir -p {DATA_MOUNT_POINT}/workdir{LOWERDIR} && mkdir -p {DATA_MOUNT_POINT}/upper{LOWERDIR} | ||
| 52 | RemainAfterExit=true | ||
| 53 | StandardOutput=journal | ||
| 54 | |||
| 55 | [Install] | ||
| 56 | WantedBy=multi-user.target | ||
| 57 | """ | ||
| 58 | MountUnitTemplate = """[Unit] | ||
| 59 | Description=Overlayfs mount unit | ||
| 60 | Requires={CREATE_DIRS_SERVICE} | ||
| 61 | After={CREATE_DIRS_SERVICE} | ||
| 62 | |||
| 63 | [Mount] | ||
| 64 | What=overlay | ||
| 65 | Where={LOWERDIR} | ||
| 66 | Type=overlay | ||
| 67 | Options=lowerdir={LOWERDIR},upperdir={DATA_MOUNT_POINT}/upper{LOWERDIR},workdir={DATA_MOUNT_POINT}/workdir{LOWERDIR} | ||
| 68 | |||
| 69 | [Install] | ||
| 70 | WantedBy=multi-user.target | ||
| 71 | """ | ||
| 72 | AllOverlaysTemplate = """[Unit] | ||
| 73 | Description=Groups all overlays required by {PN} in one unit | ||
| 74 | After={ALL_OVERLAYFS_UNITS} | ||
| 75 | Requires={ALL_OVERLAYFS_UNITS} | ||
| 76 | |||
| 77 | [Service] | ||
| 78 | Type=oneshot | ||
| 79 | ExecStart=/bin/true | ||
| 80 | RemainAfterExit=true | ||
| 81 | |||
| 82 | [Install] | ||
| 83 | WantedBy=local-fs.target | ||
| 84 | """ | ||
| 85 | 53 | ||
| 86 | def prepareUnits(data, lower): | 54 | def prepareUnits(data, lower): |
| 87 | from oe.overlayfs import helperUnitName | 55 | from oe.overlayfs import helperUnitName |
diff --git a/meta/files/overlayfs-all-overlays.service.in b/meta/files/overlayfs-all-overlays.service.in new file mode 100644 index 0000000000..74ee4e90ae --- /dev/null +++ b/meta/files/overlayfs-all-overlays.service.in | |||
| @@ -0,0 +1,12 @@ | |||
| 1 | [Unit] | ||
| 2 | Description=Groups all overlays required by {PN} in one unit | ||
| 3 | After={ALL_OVERLAYFS_UNITS} | ||
| 4 | Requires={ALL_OVERLAYFS_UNITS} | ||
| 5 | |||
| 6 | [Service] | ||
| 7 | Type=oneshot | ||
| 8 | ExecStart=/bin/true | ||
| 9 | RemainAfterExit=true | ||
| 10 | |||
| 11 | [Install] | ||
| 12 | WantedBy=local-fs.target | ||
diff --git a/meta/files/overlayfs-create-dirs.service.in b/meta/files/overlayfs-create-dirs.service.in new file mode 100644 index 0000000000..17204145f2 --- /dev/null +++ b/meta/files/overlayfs-create-dirs.service.in | |||
| @@ -0,0 +1,14 @@ | |||
| 1 | [Unit] | ||
| 2 | Description=Overlayfs directories setup | ||
| 3 | Requires={DATA_MOUNT_UNIT} | ||
| 4 | After={DATA_MOUNT_UNIT} | ||
| 5 | DefaultDependencies=no | ||
| 6 | |||
| 7 | [Service] | ||
| 8 | Type=oneshot | ||
| 9 | ExecStart=mkdir -p {DATA_MOUNT_POINT}/workdir{LOWERDIR} && mkdir -p {DATA_MOUNT_POINT}/upper{LOWERDIR} | ||
| 10 | RemainAfterExit=true | ||
| 11 | StandardOutput=journal | ||
| 12 | |||
| 13 | [Install] | ||
| 14 | WantedBy=multi-user.target | ||
diff --git a/meta/files/overlayfs-unit.mount.in b/meta/files/overlayfs-unit.mount.in new file mode 100644 index 0000000000..1d33b7e39c --- /dev/null +++ b/meta/files/overlayfs-unit.mount.in | |||
| @@ -0,0 +1,13 @@ | |||
| 1 | [Unit] | ||
| 2 | Description=Overlayfs mount unit | ||
| 3 | Requires={CREATE_DIRS_SERVICE} | ||
| 4 | After={CREATE_DIRS_SERVICE} | ||
| 5 | |||
| 6 | [Mount] | ||
| 7 | What=overlay | ||
| 8 | Where={LOWERDIR} | ||
| 9 | Type=overlay | ||
| 10 | Options=lowerdir={LOWERDIR},upperdir={DATA_MOUNT_POINT}/upper{LOWERDIR},workdir={DATA_MOUNT_POINT}/workdir{LOWERDIR} | ||
| 11 | |||
| 12 | [Install] | ||
| 13 | WantedBy=multi-user.target | ||
