Skip to content
  • Yann E. MORIN's avatar
    fs: add pre- and post-command hooks · 4628b6f3
    Yann E. MORIN authored
    
    
    In some cases, the directory structure we want in the filesystem is not
    exactly what we have in target/
    
    For example, when systemd is used on a read-only rootfs, /var must be a
    tmpfs. However, we may have packages that install stuff in there, and
    set important rights (via the permission-table). So, at build time, we
    need /var to be a symlink to the remanent location (/usr/share/factory)
    while at runtime we need /var to be a directory.
    
    One option would have been to have /var as a real directory even during
    build time, and in a target-finalize hook, move everything out of there
    and into the "factory" location. However, that's not possible because
    it's too early: some packages may want to set ownership and/or acces
    rights on directories or files in /var, and this is only done in the
    fakeroot script, which is called only later during the assembling of the
    filesystem images.
    
    Also, there would have been no way to undo the tweak (i.e. we need to
    restore the /var symlink so that subsequent builds continue to work) if
    it were done as a target-finalize hook.
    
    The only solution is to allow packages to register pre- and post-hooks
    that are called right before and right after the rootfs commands are
    executed, and inside in the fakeroot script.
    
    We can however not re-use the BR2_ROOTFS_POST_FAKEROOT_SCRIPT feature
    either because it is done before the filesystem command, but there is
    nothing that is done after. Also, we don't want to add to, and modify a
    user-supplied variable.
    
    So, we introduce two new variables that packages can set to add the
    commands they need to run to tweak the filesystem right at the last
    moment.
    
    Those hooks are not documented on-purpose; they are probably going to
    only ever be used by systemd.
    
    Signed-off-by: default avatar"Yann E. MORIN" <yann.morin.1998@free.fr>
    Reviewed-by: default avatarRomain Naour <romain.naour@gmail.com>
    Signed-off-by: default avatarArnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
    Signed-off-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
    4628b6f3