From 6ff6cb157ad676ebc474a4673669c0159f88c30a Mon Sep 17 00:00:00 2001 From: CyberLeo Date: Mon, 18 Jul 2011 07:23:25 -0500 Subject: [PATCH] update: zpool moved from alba to amani; missing ports tree is not fatal --- update | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/update b/update index 00bc7ae..86e883d 100755 --- a/update +++ b/update @@ -14,20 +14,28 @@ sync="rsync://paka/freebsd-ports" sync_opts="--archive --compress --delete --hard-links --sparse --stats --verbose" -ports=alba/ports -upstream=alba/srcs/freebsd/ports/upstream -prepare=alba/srcs/freebsd/ports/prepare +zpool="amani" + +ports=${zpool}/ports +upstream=${zpool}/srcs/freebsd/ports/upstream +prepare=${zpool}/srcs/freebsd/ports/prepare today="$(date +%Y-%m-%d)" -ports_origin="$(zfs get -H -o value origin "${ports}")" -ports_origin="${ports_origin%%@*}" -ports_fs="$(zfs get -H -o value mountpoint "${ports}")" -ports_fs="${ports_fs:-/usr/ports}" upstream_fs="$(zfs get -H -o value mountpoint "${upstream}")" -# Make sure the ports tree is a descendent of the ports upstream -[ "${ports_origin}" = "${upstream}" ] || wtf "Target ${ports} is not a child of ${upstream} +# Check if target ports tree actually exists; otherwise, assume it's safe to replace +if zfs list "${ports}" >&- 2>&- +then + ports_exists="YES" + ports_origin="$(zfs get -H -o value origin "${ports}")" + ports_origin="${ports_origin%%@*}" + ports_fs="$(zfs get -H -o value mountpoint "${ports}")" + + # Make sure the ports tree is a descendent of the ports upstream + [ "${ports_origin}" = "${upstream}" ] || wtf "Target ${ports} is not a child of ${upstream} (is ${ports_origin})" +fi +ports_fs="${ports_fs:-/usr/ports}" if [ -z "${NO_SYNC}" ] then @@ -49,6 +57,8 @@ else fi # Bail out if anything is / +[ -z "${ports_fs}" ] && wtf "ports_fs is / ?!" +[ -z "${upstream_fs}" ] && wtf "upstream_fs is / ?!" [ -z "${ports_fs}" -o -z "${upstream_fs}" ] && wtf "Writing to /? Are you nuts?" if [ -z "${NO_SYNC}" ] @@ -79,11 +89,11 @@ done meh "Install" zfs set readonly=on "${prepare}" || wtf "readonly failed" -# Only move old ports tree out of the way if it exists -zfs rename "${ports}" "${ports}-bak" || wtf "backup rename failed" +# Half of this is conditional on the old ports tree's existence +[ -z "${ports_exists}" ] || zfs rename "${ports}" "${ports}-bak" || wtf "backup rename failed" zfs rename "${prepare}" "${ports}" || wtf "rename prepare -> ports failed" -zfs inherit mountpoint "${ports}-bak" || wtf "inherit failed" +[ -z "${ports_exists}" ] || zfs inherit mountpoint "${ports}-bak" || wtf "inherit failed" zfs set mountpoint="${ports_fs}" "${ports}" || wtf "mountpoint failed" -zfs destroy "${ports}-bak" || wtf "destroy failed" +[ -z "${ports_exists}" ] || zfs destroy "${ports}-bak" || wtf "destroy failed" meh "All done" -- 2.42.0