03023eaefa728c81279fd52edd8681c17626a533
[zfs.git] / scripts / update-zfs.sh
1 #!/bin/bash
2 #
3 # WARNING: This script removes the entire zfs subtree and will
4 # repopulate it using the requested OpenSolaris source release.
5 # This script should only be used when rebasing the TopGit tree
6 # against the latest release.  
7 #
8 trap die_int INT
9
10 RELEASE=$1
11 PROG=update-zfs.sh
12 REMOTE_DOC_FILE=man-sunosman-20090930.tar.bz2
13 REMOTE_DOC=http://dlc.sun.com/osol/man/downloads/current/${REMOTE_DOC_FILE}
14 REMOTE_SRC=http://dlc.sun.com/osol/on/downloads/${RELEASE}/on-src.tar.bz2
15
16 die() {
17         rm -Rf ${SRC}
18         echo "${PROG}: $1" >&2
19         exit 1
20 }
21
22 die_int() {
23         die "Ctrl-C abort"
24 }
25
26 DST=`pwd`
27 if [ `basename $DST` != "scripts" ]; then
28         die "Must be run from scripts directory"
29 fi
30
31 if [ ! "$RELEASE" ]; then
32         die "Must specify ZFS release build"
33 fi
34
35 SRC=`mktemp -d /tmp/os-${RELEASE}.XXXXXXXXXX`
36 DST=`dirname $DST`
37
38 echo "----------------------------------------------------------------"
39 echo "Remote Source: ${REMOTE_SRC}"
40 echo "Remote Docs:   ${REMOTE_DOC}"
41 echo "Local Source:  ${SRC}"
42 echo "Local Dest:    ${DST}"
43 echo
44 echo "------------- Fetching OpenSolaris ${RELEASE} archive ----------------"
45 wget -q ${REMOTE_SRC} -P ${SRC} ||
46         die "Error 'wget ${REMOTE_SRC}'"
47
48 echo "------------- Fetching OpenSolaris documentation ---------------"
49 wget -q ${REMOTE_DOC} -P ${SRC} ||
50         die "Error 'wget ${REMOTE_DOC}'"
51
52 echo "------------- Unpacking OpenSolaris ${RELEASE} archive ---------------"
53 tar -xjf ${SRC}/on-src.tar.bz2 -C ${SRC} ||
54         die "Error 'tar -xjf ${SRC}/on-src.tar.bz2 -C ${SRC}'"
55
56 echo "------------- Unpacking OpenSolaris documentation --------------"
57 tar -xjf ${SRC}/${REMOTE_DOC_FILE} -C ${SRC} ||
58         die "Error 'tar -xjf ${SRC}/${REMOTE_DOC_FILE} -C ${SRC}'"
59
60 SRC_LIB=${SRC}/usr/src/lib
61 SRC_CMD=${SRC}/usr/src/cmd
62 SRC_CM=${SRC}/usr/src/common
63 SRC_UTS=${SRC}/usr/src/uts
64 SRC_UCM=${SRC}/usr/src/uts/common
65 SRC_ZLIB=${SRC}/usr/src/uts/common/fs/zfs
66 SRC_MAN=${SRC}/man
67
68 DST_MOD=${DST}/module
69 DST_LIB=${DST}/lib
70 DST_CMD=${DST}/cmd
71 DST_MAN=${DST}/man
72
73 umask 022
74 rm -Rf ${DST}/zfs
75
76 echo "------------- Updating ZFS from OpenSolaris ${RELEASE} ---------------"
77 echo "* module/avl"
78 mkdir -p ${DST_MOD}/avl/include/sys/
79 cp ${SRC_CM}/avl/avl.c                          ${DST_MOD}/avl/
80 cp ${SRC_UCM}/sys/avl.h                         ${DST_MOD}/avl/include/sys/
81 cp ${SRC_UCM}/sys/avl_impl.h                    ${DST_MOD}/avl/include/sys/
82
83 echo "* module/nvpair"
84 mkdir -p ${DST_MOD}/nvpair/include/sys/
85 cp ${SRC_CM}/nvpair/nvpair.c                    ${DST_MOD}/nvpair/
86 cp ${SRC_UCM}/sys/nvpair.h                      ${DST_MOD}/nvpair/include/sys/
87 cp ${SRC_UCM}/sys/nvpair_impl.h                 ${DST_MOD}/nvpair/include/sys/
88
89 echo "* module/unicode"
90 mkdir -p ${DST_MOD}/unicode/include/sys/
91 cp ${SRC_CM}/unicode/*.c                        ${DST_MOD}/unicode/
92 cp ${SRC_UCM}/sys/u8_textprep.h                 ${DST_MOD}/unicode/include/sys/
93 cp ${SRC_UCM}/sys/u8_textprep_data.h            ${DST_MOD}/unicode/include/sys/
94
95 echo "* module/zcommon"
96 mkdir -p ${DST_MOD}/zcommon/include/sys/fs/
97 mkdir -p ${DST_MOD}/zcommon/include/sys/fm/fs/
98 cp ${SRC_CM}/zfs/*.c                            ${DST_MOD}/zcommon/
99 cp ${SRC_CM}/zfs/*.h                            ${DST_MOD}/zcommon/include/
100 cp ${SRC_UCM}/sys/fs/zfs.h                      ${DST_MOD}/zcommon/include/sys/fs/
101 cp ${SRC_UCM}/sys/fm/fs/zfs.h                   ${DST_MOD}/zcommon/include/sys/fm/fs/
102
103 echo "* module/zfs"
104 mkdir -p ${DST_MOD}/zpool/include/sys/
105 cp ${SRC_UTS}/intel/zfs/spa_boot.c              ${DST_MOD}/zfs/
106 cp ${SRC_ZLIB}/*.c                              ${DST_MOD}/zfs/
107 cp ${SRC_ZLIB}/sys/*.h                          ${DST_MOD}/zfs/include/sys/
108 rm ${DST_MOD}/zfs/vdev_disk.c
109 rm ${DST_MOD}/zfs/zvol.c
110 rm ${DST_MOD}/zfs/include/sys/vdev_disk.h
111
112 echo "* lib/libavl"
113 # Full source available in 'module/avl'
114
115 echo "* lib/libnvpair"
116 mkdir -p ${DST_LIB}/libnvpair/include/
117 cp ${SRC_UCM}/os/nvpair_alloc_system.c          ${DST_LIB}/libnvpair/
118 cp ${SRC_LIB}/libnvpair/libnvpair.c             ${DST_LIB}/libnvpair/
119 cp ${SRC_LIB}/libnvpair/libnvpair.h             ${DST_LIB}/libnvpair/include/
120
121 echo "* lib/libunicode"
122 # Full source available in 'module/unicode'
123
124 echo "* lib/libuutil"
125 mkdir -p ${DST_LIB}/libuutil/include/
126 cp ${SRC_LIB}/libuutil/common/*.c               ${DST_LIB}/libuutil/
127 cp ${SRC_LIB}/libuutil/common/*.h               ${DST_LIB}/libuutil/include/
128
129 echo "* lib/libefi"
130 mkdir -p ${DST_LIB}/libefi/include/sys/
131 cp ${SRC_LIB}/libefi/common/rdwr_efi.c          ${DST_LIB}/libefi/
132 cp ${SRC_UCM}/sys/efi_partition.h               ${DST_LIB}/libefi/include/sys/
133 cp ${SRC_UCM}/sys/uuid.h                        ${DST_LIB}/libefi/include/sys/
134
135 echo "* lib/libzpool"
136 mkdir -p ${DST_LIB}/libzpool/include/sys/
137 cp ${SRC_LIB}/libzpool/common/kernel.c          ${DST_LIB}/libzpool/
138 cp ${SRC_LIB}/libzpool/common/taskq.c           ${DST_LIB}/libzpool/
139 cp ${SRC_LIB}/libzpool/common/util.c            ${DST_LIB}/libzpool/
140 cp ${SRC_LIB}/libzpool/common/sys/zfs_context.h ${DST_LIB}/libzpool/include/sys/
141
142 echo "* lib/libzfs"
143 mkdir -p ${DST_LIB}/libzfs/include/
144 cp ${SRC_LIB}/libzfs/common/*.c                 ${DST_LIB}/libzfs/
145 cp ${SRC_LIB}/libzfs/common/*.h                 ${DST_LIB}/libzfs/include/
146
147 echo "* cmd/zpool"
148 mkdir -p ${DST_CMD}/zpool
149 cp ${SRC_CMD}/zpool/*.c                         ${DST_CMD}/zpool/
150 cp ${SRC_CMD}/zpool/*.h                         ${DST_CMD}/zpool/
151
152 echo "* cmd/zfs"
153 mkdir -p ${DST_CMD}/zfs
154 cp ${SRC_CMD}/zfs/*.c                           ${DST_CMD}/zfs/
155 cp ${SRC_CMD}/zfs/*.h                           ${DST_CMD}/zfs/
156
157 echo "* cmd/zdb"
158 mkdir -p ${DST_CMD}/zdb/
159 cp ${SRC_CMD}/zdb/*.c                           ${DST_CMD}/zdb/
160
161 echo "* cmd/zinject"
162 mkdir -p ${DST_CMD}/zinject
163 cp ${SRC_CMD}/zinject/*.c                       ${DST_CMD}/zinject/
164 cp ${SRC_CMD}/zinject/*.h                       ${DST_CMD}/zinject/
165
166 echo "* cmd/ztest"
167 mkdir -p ${DST_CMD}/ztest
168 cp ${SRC_CMD}/ztest/*.c                         ${DST_CMD}/ztest/
169
170 echo "* man/"
171 mkdir -p ${DST_MAN}/man8
172 cp ${SRC_MAN}/man1m/zfs.1m                      ${DST_MAN}/man8/zfs.8
173 cp ${SRC_MAN}/man1m/zpool.1m                    ${DST_MAN}/man8/zpool.8
174 cp ${SRC_MAN}/man1m/zdb.1m                      ${DST_MAN}/man8/zdb.8
175 chmod -R 644 ${DST_MAN}/man8/*
176
177 echo "${REMOTE_SRC}" >${DST}/ZFS.RELEASE
178
179 rm -Rf ${SRC}