Ben Hildred <426...@gmail.com> writes: > On Sun, Aug 20, 2017 at 3:25 AM, Ansgar Burchardt <ans...@debian.org> wrote: > >> Dan Nicholson writes: >> > On Fri, Aug 18, 2017 at 2:48 PM, Henrique de Moraes Holschuh >> > <h...@debian.org> wrote: >> >> Wouldn't it be more straigthforward to "test -e || mknod" ? >> > >> > I definitely considered that, but it seemed more noisy to the code to >> > add a conditional for every call. But I'd be fine reworking to that >> > approach if that's more acceptable, though. >> >> You can always introduce a `mknod_if_not_exists` function or so. Though >> I'm not sure this is worth here (the name is so long the `test -e` is >> almost shorter). >> >> Ansgar >> >> > function mknod-e () { > [ -e "$1" ] || mknod "$@" > }
$1 for mknod in this case is liable to be '-m' The attached patch might satisfy the quest for neatness. One could instead call the function something like ensure-exists-in-target and leave the /dev/'s on all the filenames, if that were considered clearer. Cheers, Phil.
signature.asc
Description: PGP signature
>From 28f460d35d8925442ce5a63c45b51d04a0db37dd Mon Sep 17 00:00:00 2001 From: Philip Hands <p...@hands.com> Date: Sun, 20 Aug 2017 23:48:34 +0200 Subject: [PATCH] in setup_devices_simple(), only create devices that do not yet exist --- functions | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/functions b/functions index 3cfa0d4..6c40ec7 100644 --- a/functions +++ b/functions @@ -1162,18 +1162,23 @@ setup_dynamic_devices () { } setup_devices_simple () { + function ensure-exists-dev() { + local path="$TARGET/dev/$1" ; shift + [ -e "$path" ] || mknod -m 666 $path "$@" + } + # The list of devices that can be created in a container comes from # src/core/cgroup.c in the systemd source tree. - mknod -m 666 $TARGET/dev/null c 1 3 - mknod -m 666 $TARGET/dev/zero c 1 5 - mknod -m 666 $TARGET/dev/full c 1 7 - mknod -m 666 $TARGET/dev/random c 1 8 - mknod -m 666 $TARGET/dev/urandom c 1 9 - mknod -m 666 $TARGET/dev/tty c 5 0 + ensure-exists-dev null c 1 3 + ensure-exists-dev zero c 1 5 + ensure-exists-dev full c 1 7 + ensure-exists-dev random c 1 8 + ensure-exists-dev urandom c 1 9 + ensure-exists-dev tty c 5 0 mkdir $TARGET/dev/pts/ $TARGET/dev/shm/ # Inside a container, we might not be allowed to create /dev/ptmx. # If not, do the next best thing. - if ! mknod -m 666 $TARGET/dev/ptmx c 5 2; then + if ! ensure-exists-dev ptmx c 5 2; then warning MKNOD "Could not create /dev/ptmx, falling back to symlink. This chroot will require /dev/pts mounted with ptmxmode=666" ln -s pts/ptmx $TARGET/dev/ptmx fi -- 2.11.0
-- |)| Philip Hands [+44 (0)20 8530 9560] HANDS.COM Ltd. |-| http://www.hands.com/ http://ftp.uk.debian.org/ |(| Hugo-Klemm-Strasse 34, 21075 Hamburg, GERMANY