create /home fs in installer
[unleashed-kayak.git] / build_zfs_send.sh
blobdb1248f1190e13da7f6c1710dee7a5d46cc16b0f
1 #!/bin/bash
3 # CDDL HEADER START
5 # The contents of this file are subject to the terms of the
6 # Common Development and Distribution License, Version 1.0 only
7 # (the "License"). You may not use this file except in compliance
8 # with the License.
10 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
11 # or http://www.opensolaris.org/os/licensing.
12 # See the License for the specific language governing permissions
13 # and limitations under the License.
15 # When distributing Covered Code, include this CDDL HEADER in each
16 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
17 # If applicable, add the following below this CDDL HEADER, with the
18 # fields enclosed by brackets "[]" replaced with your own identifying
19 # information: Portions Copyright [yyyy] [name of copyright owner]
21 # CDDL HEADER END
24 # Copyright 2012 OmniTI Computer Consulting, Inc. All rights reserved.
25 # Use is subject to license terms.
27 fail() {
28 echo $*
29 exit 1
32 PUBLISHER=unleashed
33 PKGURL1=${PKGURL1-/usr/nightly/packages/i386/nightly/repo.redist}
34 PKGURL2=${PKGURL2-/ws/oi-userland/i386/repo}
35 ZROOT=rpool
36 OUT=
37 CLEANUP=0
38 set -- `getopt cd:o:p: $*`
39 for i in $*
41 case $i in
42 -c) CLEANUP=1; shift ;;
43 -d) ZROOT=$2; shift 2;;
44 -o) OUT=$2; shift 2;;
45 -p) PROFILE=$2; shift 2;;
46 -P) PUBLISHER_OVERRIDE=1; shift ;;
47 --) shift; break ;;
48 esac
49 done
51 USERLAND_PACKAGES='gnu-tar bzip2 gzip xz autoconf automake automake-111 automake-115 gnu-gettext gnu-make libtool makedepend pkgconf gawk gdb gcc-49 gcc-6 flex swig git vim gnu-findutils libevent2 libidn nghttp2 pcre pkg openssh ntp bash pipe-viewer zsh system/mozilla-nss screen tmux gnu-grep gnu-patch curl wget xproto setuptools cdrtools'
53 name=$1
54 if [[ -z "$name" ]]; then
55 echo "$0 [-cP] [-d zfsparent] [-p profile] [-o outputfile] <release_name>"
56 exit
59 MPR=`zfs get -H mountpoint $ZROOT | awk '{print $3}'`
60 if [[ -z "$OUT" ]]; then
61 OUT=$MPR/kayak_$name.zfs
64 if zfs list $ZROOT/$name@entire > /dev/null 2>&1; then
65 zfs rollback -r $ZROOT/$name@entire
66 MP=`zfs get -H mountpoint $ZROOT/$name | awk '{print $3}'`
67 else
68 zfs create -o compress=lz4 $ZROOT/$name || fail "zfs create"
69 MP=`zfs get -H mountpoint $ZROOT/$name | awk '{print $3}'`
70 pkg image-create -F -p $PUBLISHER=$PKGURL1 $MP || fail "image-create"
71 pkg -R $MP change-variant arch=i386 # FIXME hack
72 pkg -R $MP set-publisher --non-sticky -p $PKGURL2
73 pkg -R $MP install osnet-redistributable developer/opensolaris/osnet $USERLAND_PACKAGES || fail 'install'
74 zfs snapshot $ZROOT/$name@entire
77 zfs snapshot $ZROOT/$name@kayak || fail "snap"
78 snapsize=`zfs get -Hp -o value referenced $ZROOT/$name@kayak`
79 zfs send -Lc $ZROOT/$name@kayak | pv -s $snapsize > $OUT || fail "send"
80 if [[ "$CLEANUP" -eq "1" ]]; then
81 zfs destroy $ZROOT/$name@kayak || fail "could not remove snapshot"
82 zfs destroy $ZROOT/$name || fail "could not remove zfs filesystem"