blob: 8aeca63c9dd9bb1d114fe4d5577b760e3bfee3ec (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
#!/bin/sh
# fake/pbuilder-proposed -- emulate how pbuilder is proposed to chroot in
# future.
#
# Copyright © 2017 Simon McVittie
# SPDX-License-Identifier: MIT
# (see debian/copyright)
set -e
BUILDPLACE="$1"
shift
if test -z "$BUILDPLACE" || test -z "$1"; then
echo "Usage: $0 CHROOT COMMAND...">&2
exit 2
fi
devpts_options="noexec,nosuid,gid=5,mode=620"
mkdir -p "$BUILDPLACE/dev/pts"
if ! mount -t devpts none "$BUILDPLACE/dev/pts" -o "$devpts_options,newinstance,ptmxmode=666"; then
mount -t devpts none "$BUILDPLACE/dev/pts" -o "$devpts_options"
fi
mounted_ptmx=no
if [ -e "$BUILDPLACE/dev/pts/ptmx" ] && \
! [ -L "$BUILDPLACE/dev/ptmx" ]; then
chmod 666 "$BUILDPLACE/dev/pts/ptmx"
mount --bind "$BUILDPLACE/dev/pts/ptmx" "$BUILDPLACE/dev/ptmx"
mounted_ptmx=yes
fi
mounted_console=no
if stdin_tty="$(tty)"; then
if [ ! -e "$BUILDPLACE/dev/console" ]; then
mknod -m700 "$BUILDPLACE/dev/console" c 5 1
fi
mount --bind "$stdin_tty" "$BUILDPLACE/dev/console"
mounted_console=yes
fi
ls -l "$BUILDPLACE/dev/ptmx" | sed -e 's/^/# fake-pbuilder: /' >&2
ls -l "$BUILDPLACE/dev/pts/ptmx" | sed -e 's/^/# fake-pbuilder: /' >&2
e=0
chroot "$BUILDPLACE" "$@" || e=$?
[ "$mounted_console" = no ] || umount "$BUILDPLACE/dev/console"
[ "$mounted_ptmx" = no ] || umount "$BUILDPLACE/dev/ptmx"
umount "$BUILDPLACE/dev/pts"
exit "$e"
|