123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- #
- # Copyright OpenEmbedded Contributors
- #
- # SPDX-License-Identifier: GPL-2.0-only
- #
- # This file contains common functions for overlayfs and its QA check
- # this function is based on https://github.com/systemd/systemd/blob/main/src/basic/unit-name.c
- def escapeSystemdUnitName(path):
- escapeMap = {
- '/': '-',
- '-': "\\x2d",
- '\\': "\\x5d"
- }
- return "".join([escapeMap.get(c, c) for c in path.strip('/')])
- def strForBash(s):
- return s.replace('\\', '\\\\')
- def allOverlaysUnitName(d):
- return d.getVar('PN') + '-overlays.service'
- def mountUnitName(unit):
- return escapeSystemdUnitName(unit) + '.mount'
- def helperUnitName(unit):
- return escapeSystemdUnitName(unit) + '-create-upper-dir.service'
- def unitFileList(d):
- fileList = []
- overlayMountPoints = d.getVarFlags("OVERLAYFS_MOUNT_POINT")
- if not overlayMountPoints:
- bb.fatal("A recipe uses overlayfs class but there is no OVERLAYFS_MOUNT_POINT set in your MACHINE configuration")
- # check that we have required mount points set first
- requiredMountPoints = d.getVarFlags('OVERLAYFS_WRITABLE_PATHS')
- for mountPoint in requiredMountPoints:
- if mountPoint not in overlayMountPoints:
- bb.fatal("Missing required mount point for OVERLAYFS_MOUNT_POINT[%s] in your MACHINE configuration" % mountPoint)
- for mountPoint in overlayMountPoints:
- mountPointList = d.getVarFlag('OVERLAYFS_WRITABLE_PATHS', mountPoint)
- if not mountPointList:
- bb.debug(1, "No mount points defined for %s flag, don't add to file list", mountPoint)
- continue
- for path in mountPointList.split():
- fileList.append(mountUnitName(path))
- fileList.append(helperUnitName(path))
- fileList.append(allOverlaysUnitName(d))
- return fileList
|