svn commit: r358893 - user/gjb/thermite
Glen Barber
gjb at FreeBSD.org
Wed Mar 11 19:59:31 UTC 2020
Author: gjb
Date: Wed Mar 11 19:59:29 2020
New Revision: 358893
URL: https://svnweb.freebsd.org/changeset/base/358893
Log:
Resync thermite with the re@ version:
- thermite.sh:
- Add support for aarch64 EC2 AMIs.
- Move creating seed src checkouts for amd64 and i386 to
zfs_mount_src().
- Create a zfs dataset for the amd64 and i386 userland which
later is snapshotted and cloned, eliminating multiple invocations
of the installworld target.
- Explicitly return 0 in build_chroots().
- Make use of ZFS a requirement.
- Update and sort Copyright.
zfs-setup.sh:
- Rename to zfs-cleanup.sh.
- Default to cleanup-only. ZFS datasets are now created via
thermite.sh.
This is the first batch of changes in preparation of adding support
for snapshot/release builds from both git and svn.
Sponsored by: Rubicon Communications, LLC (netgate.com)
Added:
user/gjb/thermite/zfs-cleanup.sh
- copied, changed from r358892, user/gjb/thermite/zfs-setup.sh
Deleted:
user/gjb/thermite/zfs-setup.sh
Modified:
user/gjb/thermite/thermite.sh
Modified: user/gjb/thermite/thermite.sh
==============================================================================
--- user/gjb/thermite/thermite.sh Wed Mar 11 19:57:43 2020 (r358892)
+++ user/gjb/thermite/thermite.sh Wed Mar 11 19:59:29 2020 (r358893)
@@ -1,7 +1,8 @@
#!/bin/sh
#-
-# Copyright (c) 2013-2018 The FreeBSD Foundation
# Copyright (c) 2012, 2013 Glen Barber
+# Copyright (c) 2013-2019 The FreeBSD Foundation
+# Copyright (c) 2020 Rubicon Communications, LLC (netgate.com)
# All rights reserved.
#
# Portions of this software were developed by Glen Barber
@@ -108,11 +109,9 @@ runall() {
}
check_use_zfs() {
- if [ -z ${use_zfs} ]; then
- return 1
- fi
if [ ! -c /dev/zfs ]; then
- return 1
+ echo "ZFS is required."
+ exit 1
fi
return 0
}
@@ -159,18 +158,29 @@ zfs_mount_tree() {
info "Cloning ${_clone}@clone to ${_target}"
zfs clone -p -o mountpoint=${_mount}/usr/${_tree} \
${_clone}@clone ${_target}
- if [ ! -z ${seed_src} ]; then
- # Only create chroot seeds for x86.
- if [ "${arch}" = "amd64" ] || [ "${arch}" = "i386" ]; then
- _seedmount=${chroots}/${rev}/${arch}/${type}
- _seedtarget="${zfs_parent}/${rev}-${arch}-${type}-chroot"
- zfs clone -p -o mountpoint=${_seedmount} \
- ${_clone}@clone ${_seedtarget}
- fi
- fi
unset _clone _mount _target _tree _seedmount _seedtarget
}
+zfs_mount_src() {
+ source_config || return 0
+ _tree=src
+ _clone="${zfs_parent}/${rev}-${_tree}-${type}"
+ # Only create chroot seeds for x86.
+ case ${arch} in
+ amd64|i386)
+ ;;
+ *)
+ return 0
+ ;;
+ esac
+ _seedmount=${chroots}/${rev}/${arch}/${type}
+ _seedtarget="${zfs_parent}/${rev}-${arch}-${type}-chroot"
+ info "Creating ${_seedtarget} from ${_clone}"
+ zfs clone -p -o mountpoint=${_seedmount} \
+ ${_clone}@clone ${_seedtarget}
+ unset _clone _mount _target _tree _seedmount _seedtarget
+}
+
zfs_create_tree() {
source_config || return 0
_tree=${1}
@@ -210,10 +220,13 @@ zfs_bootstrap() {
runall zfs_create_tree src
runall zfs_create_tree ports
runall zfs_create_tree doc
+ zfs_bootstrap_done=1
+}
+
+zfs_finish_bootstrap() {
runall zfs_mount_tree src
runall zfs_mount_tree ports
runall zfs_mount_tree doc
- zfs_bootstrap_done=1
}
prebuild_setup() {
@@ -345,9 +358,24 @@ upload_ec2_ami() {
_build="${rev}-${arch}-${kernel}-${type}"
_conf="${scriptdir}/${_build}.conf"
source_config || return 0
- case ${arch} in
- amd64)
+ case ${arch}:${kernel} in
+ amd64:GENERIC)
+ _EC2TARGET=amd64
+ _EC2TARGET_ARCH=amd64
;;
+ aarch64:GENERIC)
+ # XXX: temporary until support for stable/11 is added
+ case ${rev} in
+ 13|12)
+ _EC2TARGET=arm64
+ _EC2TARGET_ARCH=aarch64
+ ;;
+ *)
+ return 0
+ ;;
+ esac
+ # end XXX
+ ;;
*)
return 0
;;
@@ -371,9 +399,12 @@ upload_ec2_ami() {
EC2PUBLIC=${EC2PUBLIC} \
EC2PUBLICSNAP=${EC2PUBLICSNAP} \
EC2SNSTOPIC=${EC2SNSTOPIC} \
+ TARGET=${_EC2TARGET} \
+ TARGET_ARCH=${_EC2TARGET_ARCH} \
ec2ami \
>> ${logdir}/${_build}.ec2.log 2>&1
unset _build _conf AWSREGION AWSBUCKET AWSKEYFILE EC2PUBLIC EC2SNSTOPIC EC2PUBLICSNAP
+ unset _EC2TARGET _EC2TARGET_ARCH
umount ${CHROOTDIR}/dev
return 0
} # upload_ec2_ami()
@@ -464,23 +495,52 @@ install_chroots() {
_chrootarch="amd64"
;;
esac
+ [ ! -z $(eval echo \${zfs_${_chrootarch}_seed_${rev}_${type}}) ] \
+ && return 0
+ _clone="${zfs_parent}/${rev}-${_chrootarch}-worldseed-${type}"
+ _mount="/${zfs_mount}/${rev}-${arch}-worldseed-${type}"
_build="${rev}-${arch}-${kernel}-${type}"
_dest="${__WRKDIR_PREFIX}/${_build}"
_srcdir="${chroots}/${rev}/${_chrootarch}/${type}"
_objdir="${chroots}/${rev}-obj/${_chrootarch}/${type}"
- info "Creating ${_dest}"
- mkdir -p "${_dest}"
- info "Installing ${_dest}"
+ info "Creating ${_mount}"
+ zfs create -o atime=off -o mountpoint=${_mount} ${_clone}
+ info "Installing ${_mount}"
env MAKEOBJDIRPREFIX=${_objdir} \
make -C ${_srcdir} \
__MAKE_CONF=/dev/null SRCCONF=/dev/null \
TARGET=${_chrootarch} TARGET_ARCH=${_chrootarch} \
- DESTDIR=${_dest} \
+ DESTDIR=${_mount} \
installworld distribution >> \
${logdir}/${_build}.log 2>&1
- unset _build _dest _objdir _srcdir
+ zfs snapshot ${_clone}@clone
+ eval zfs_${_chrootarch}_seed_${rev}_${type}=1
+ unset _build _dest _objdir _srcdir _clone _mount
+
+ return 0
}
+zfs_clone_chroots() {
+ source_config || return 0
+ case ${arch} in
+ i386)
+ _chrootarch="i386"
+ ;;
+ *)
+ _chrootarch="amd64"
+ ;;
+ esac
+ _clone="${zfs_parent}/${rev}-${_chrootarch}-worldseed-${type}"
+ _mount="/${zfs_mount}/${rev}-${arch}-worldseed-${type}"
+ _build="${rev}-${arch}-${kernel}-${type}"
+ _dest="${__WRKDIR_PREFIX}/${_build}"
+ info "Cloning ${_chrootarch} world to ${zfs_parent}/${_build}"
+ zfs clone -p -o mountpoint=${_dest} ${_clone}@clone ${zfs_parent}/${_build}
+ unset _clone _mount _build _dest
+
+ return 0
+}
+
# Build amd64/i386 "seed" chroots for all branches being built.
build_chroots() {
source_config || return 0
@@ -519,6 +579,8 @@ build_chroots() {
${logdir}/${_build}.log 2>&1
eval chroot_${_chrootarch}_build_${rev}_${type}=1
unset _build _dest _objdir _srcdir
+
+ return 0
}
main() {
@@ -541,12 +603,17 @@ main() {
done
shift $(($OPTIND - 1))
[ -z ${CONF} ] && usage
+ use_zfs=1
+ check_use_zfs
zfs_bootstrap_done=
prebuild_setup
runall truncate_logs
zfs_bootstrap
+ runall zfs_mount_src
runall build_chroots
runall install_chroots
+ runall zfs_clone_chroots
+ zfs_finish_bootstrap
runall ${parallel}build_release
wait
runall upload_ec2_ami
Copied and modified: user/gjb/thermite/zfs-cleanup.sh (from r358892, user/gjb/thermite/zfs-setup.sh)
==============================================================================
--- user/gjb/thermite/zfs-setup.sh Wed Mar 11 19:57:43 2020 (r358892, copy source)
+++ user/gjb/thermite/zfs-cleanup.sh Wed Mar 11 19:59:29 2020 (r358893)
@@ -4,7 +4,7 @@
#
usage() {
- echo "$(basename ${0}) [-d] -c /path/to/configuration/file"
+ echo "$(basename ${0}) -d -c /path/to/configuration/file"
exit 1
}
@@ -92,26 +92,15 @@ zfs_teardown() {
done
done
done
- return 0
-}
-zfs_setup() {
- [ ! -z ${delete_only} ] && return 0
- for r in ${revs}; do
- for a in ${archs}; do
- for k in ${kernels}; do
- for t in ${types}; do
- s="${r}-${a}-${k}-${t}"
- if [ -e ${scriptdir}/${s}.conf ];
- then
- echo "${pfx} Creating ${zfs_parent}/${s}" \
- >/dev/stdout
- zfs create -o atime=off ${zfs_parent}/${s}
- fi
- done
- done
- done
- done
+ zfs destroy ${zfs_parent}/${r}-amd64-worldseed-snap at clone
+ zfs destroy ${zfs_parent}/${r}-amd64-worldseed-snap
+ zfs destroy ${zfs_parent}/${r}-i386-worldseed-snap at clone
+ zfs destroy ${zfs_parent}/${r}-i386-worldseed-snap
+
+ echo -n "ZFS datasets were destroyed. The will be created"
+ echo "automatically via thermite.sh."
+
return 0
}
@@ -154,8 +143,8 @@ main() {
pfx="==="
+ delete_only=1
zfs_teardown
- zfs_setup
}
main "$@"
More information about the svn-src-user
mailing list