dev-util/schroot: add portage and zfs clone setup.d scripts

used by some releng machines

Signed-off-by: Georgy Yakovlev <gyakovlev@gentoo.org>
This commit is contained in:
Georgy Yakovlev
2021-06-04 15:54:10 -07:00
parent 6f6da34bed
commit 7a76ae8fe8
4 changed files with 124 additions and 0 deletions

View File

@@ -0,0 +1,44 @@
#!/bin/sh
# Copyright © 2020 Georgy Yakovlev <gyakovlev@gentoo.org>
#
# schroot is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# schroot is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see
# <http://www.gnu.org/licenses/>.
#
#####################################################################
set -e
. "$SETUP_DATA_DIR/common-data"
. "$SETUP_DATA_DIR/common-functions"
. "$SETUP_DATA_DIR/common-config"
if [ "$CHROOT_TYPE" = "zfs-snapshot" ] && [ -n "$CHROOT_ZFS_CLONE_NAME" ]; then
if [ $STAGE = "setup-start" ]; then
if ! zfs list "$CHROOT_ZFS_CLONE_NAME" >/dev/null 2>&1; then
fatal "Dataset '$CHROOT_ZFS_CLONE_NAME' does not exist"
fi
if [ "${ZFS_CLONE_OPTIONS+set}" = "set" ]; then
if [ "$VERBOSE" = "verbose" ]; then
zfs set $ZFS_CLONE_OPTIONS \
"$CHROOT_ZFS_CLONE_NAME"
else
zfs set $ZFS_CLONE_OPTIONS \
"$CHROOT_ZFS_CLONE_NAME" > /dev/null
fi
fi
fi
fi

View File

@@ -0,0 +1,61 @@
#!/bin/sh
# Copyright © 2020 Georgy Yakovlev <gyakovlev@gentoo.org>
#
# schroot is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# schroot is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see
# <http://www.gnu.org/licenses/>.
#
#####################################################################
set -e
. "$SETUP_DATA_DIR/common-data"
. "$SETUP_DATA_DIR/common-functions"
. "$SETUP_DATA_DIR/common-config"
if [ "$VERBOSE" = "verbose" ]; then
VERBOSE_OPT="true"
fi
if [ "${PORTAGE_BASE_TMPDIR+set}" = "set" ] ; then
if [ "$STAGE" = "setup-start" ]; then
if [ ! -d "$PORTAGE_BASE_TMPDIR" ]; then
fatal "$PORTAGE_BASE_TMPDIR does not exist or not a directory"
fi
if [ "x$SESSION_ID" = x ]; then
fatal "SESSION_ID is not set"
fi
if [ ! -d "$PORTAGE_BASE_TMPDIR/schroot-$SESSION_ID" ]; then
mkdir ${VERBOSE_OPT+-v} \
"$PORTAGE_BASE_TMPDIR/schroot-$SESSION_ID"
fi
mkdir -p ${VERBOSE_OPT+-v} "$CHROOT_MOUNT_LOCATION/var/tmp/portage"
mount --make-private -o bind ${VERBOSE_OPT+-v}\
"$PORTAGE_BASE_TMPDIR/schroot-$SESSION_ID" \
"$CHROOT_MOUNT_LOCATION/var/tmp/portage"
elif [ "$STAGE" = "setup-stop" ]; then
if [ "$CHROOT_SESSION_PURGE" = true ] || \
[ "${CHROOT_NAME/#*_master/m}" = "m" ]; then
umount ${VERBOSE_OPT+-v} \
"$CHROOT_MOUNT_LOCATION/var/tmp/portage"
if [ -d "$PORTAGE_BASE_TMPDIR/schroot-$SESSION_ID" ]; then
if [ "x$SESSION_ID" != x ]; then
rm -fr ${VERBOSE_OPT+-v} \
"$PORTAGE_BASE_TMPDIR/schroot-$SESSION_ID"
fi
fi
fi
fi
fi

View File

@@ -0,0 +1 @@
[[ -f /etc/debian_chroot ]] && PS1="chr: $(< /etc/debian_chroot) ${PS1}"

View File

@@ -101,6 +101,24 @@ src_test() {
src_install() {
cmake_src_install
# debian-stype PS1 for chroot
# checks for /etc/debian_chroot file, which is created by schroot
insinto /etc/bash/bashrc.d
doins "${FILESDIR}/schroot_prompt.sh"
# gentoo /var/tmp/portage handler
# e.g. portage.base.tmpdir=/var/tmp/portage in config file
# will use a subdirectory of hosts $PORTAGE_TMPDIR
exeinto /etc/schroot/setup.d
doexe "${FILESDIR}/11gentoo"
# support for zfs clone options.
# zfs.clone.options=com.sun:auto-snapshot=false
if use zfs; then
exeinto /etc/schroot/setup.d
doexe "${FILESDIR}/06zfscloneopts"
fi
keepdir /var/lib/schroot/{session,unpack,union/{overlay,underlay}}
docinto /usr/share/doc/${PF}/contrib/setup.d