diff options
author | Georgy Yakovlev <gyakovlev@gentoo.org> | 2021-06-04 15:54:10 -0700 |
---|---|---|
committer | Georgy Yakovlev <gyakovlev@gentoo.org> | 2021-06-04 16:15:00 -0700 |
commit | 7a76ae8fe8dde45d8bfdf9b76453bb1b66acbcb7 (patch) | |
tree | 2b596aeb125c37a62cb40f601454dce349d7935a /dev-util/schroot | |
parent | dev-util/bear: add 3.0.12 (diff) | |
download | gentoo-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/schroot')
-rw-r--r-- | dev-util/schroot/files/06zfscloneopts | 44 | ||||
-rw-r--r-- | dev-util/schroot/files/11gentoo | 61 | ||||
-rw-r--r-- | dev-util/schroot/files/schroot_prompt.sh | 1 | ||||
-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 |