summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorgy Yakovlev <gyakovlev@gentoo.org>2021-06-04 15:54:10 -0700
committerGeorgy Yakovlev <gyakovlev@gentoo.org>2021-06-04 16:15:00 -0700
commit7a76ae8fe8dde45d8bfdf9b76453bb1b66acbcb7 (patch)
tree2b596aeb125c37a62cb40f601454dce349d7935a /dev-util
parentdev-util/bear: add 3.0.12 (diff)
downloadgentoo-7a76ae8fe8dde45d8bfdf9b76453bb1b66acbcb7.tar.gz
gentoo-7a76ae8fe8dde45d8bfdf9b76453bb1b66acbcb7.tar.bz2
gentoo-7a76ae8fe8dde45d8bfdf9b76453bb1b66acbcb7.zip
dev-util/schroot: add portage and zfs clone setup.d scripts
used by some releng machines Signed-off-by: Georgy Yakovlev <gyakovlev@gentoo.org>
Diffstat (limited to 'dev-util')
-rw-r--r--dev-util/schroot/files/06zfscloneopts44
-rw-r--r--dev-util/schroot/files/11gentoo61
-rw-r--r--dev-util/schroot/files/schroot_prompt.sh1
-rw-r--r--dev-util/schroot/schroot-1.6.10_p12-r1.ebuild (renamed from dev-util/schroot/schroot-1.6.10_p12.ebuild)18
4 files changed, 124 insertions, 0 deletions
diff --git a/dev-util/schroot/files/06zfscloneopts b/dev-util/schroot/files/06zfscloneopts
new file mode 100644
index 000000000000..e66f0885e78f
--- /dev/null
+++ b/dev-util/schroot/files/06zfscloneopts
@@ -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
diff --git a/dev-util/schroot/files/11gentoo b/dev-util/schroot/files/11gentoo
new file mode 100644
index 000000000000..ddf2df305c68
--- /dev/null
+++ b/dev-util/schroot/files/11gentoo
@@ -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
diff --git a/dev-util/schroot/files/schroot_prompt.sh b/dev-util/schroot/files/schroot_prompt.sh
new file mode 100644
index 000000000000..bd72f2ce5b83
--- /dev/null
+++ b/dev-util/schroot/files/schroot_prompt.sh
@@ -0,0 +1 @@
+[[ -f /etc/debian_chroot ]] && PS1="chr: $(< /etc/debian_chroot) ${PS1}"
diff --git a/dev-util/schroot/schroot-1.6.10_p12.ebuild b/dev-util/schroot/schroot-1.6.10_p12-r1.ebuild
index d1292d3caaaf..0a4a39d4ed2f 100644
--- a/dev-util/schroot/schroot-1.6.10_p12.ebuild
+++ b/dev-util/schroot/schroot-1.6.10_p12-r1.ebuild
@@ -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