mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-24 04:59:14 -07:00
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:
44
dev-util/schroot/files/06zfscloneopts
Normal file
44
dev-util/schroot/files/06zfscloneopts
Normal 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
|
||||
61
dev-util/schroot/files/11gentoo
Normal file
61
dev-util/schroot/files/11gentoo
Normal 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
|
||||
1
dev-util/schroot/files/schroot_prompt.sh
Normal file
1
dev-util/schroot/files/schroot_prompt.sh
Normal file
@@ -0,0 +1 @@
|
||||
[[ -f /etc/debian_chroot ]] && PS1="chr: $(< /etc/debian_chroot) ${PS1}"
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user