057dcc40b7241d4a900eb4f67d80080c01230a62
[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_SRC=http://dlc.sun.com/osol/on/downloads/${RELEASE}/on-src.tar.bz2
13
14 die() {
15         rm -Rf ${SRC}
16         echo "${PROG}: $1" >&2
17         exit 1
18 }
19
20 die_int() {
21         die "Ctrl-C abort"
22 }
23
24 DST=`pwd`
25 if [ `basename $DST` != "scripts" ]; then
26         die "Must be run from scripts directory"
27 fi
28
29 SRC=`mktemp -d /tmp/os-${RELEASE}.XXXXXXXXXX`
30 DST=`dirname $DST`
31
32 echo "----------------------------------------------------------------------"
33 echo "Remote Source: ${REMOTE_SRC}"
34 echo "Local Source:  ${SRC}"
35 echo "Local Dest:    ${DST}"
36 echo
37 echo "------------- Fetching OpenSolaris ${RELEASE} archive ----------------"
38 wget ${REMOTE_SRC} -P ${SRC} ||
39         die "Error 'wget ${REMOTE_SRC}'"
40
41 echo "------------- Unpacking OperSolaris ${RELEASE} archive ---------------"
42 tar -xjf ${SRC}/on-src.tar.bz2 -C ${SRC} ||
43         die "Error 'tar -xjf ${SRC}/on-src.tar.bz2 -C ${SRC}'"
44
45 SRC_LIB=${SRC}/usr/src/lib
46 SRC_CMD=${SRC}/usr/src/cmd
47 SRC_CM=${SRC}/usr/src/common
48 SRC_UTS=${SRC}/usr/src/uts
49 SRC_UCM=${SRC}/usr/src/uts/common
50 SRC_ZLIB=${SRC}/usr/src/uts/common/fs/zfs
51
52 DST_LIB=${DST}/zfs/lib
53 DST_CMD=${DST}/zfs/zcmd
54
55 rm -Rf ${DST}/zfs
56
57 echo
58 echo "------------- Updating ZFS from OpenSolaris ${RELEASE} ---------------"
59 echo "* zfs/lib/libavl"
60 mkdir -p ${DST_LIB}/libavl/include/sys/
61 cp ${SRC_CM}/avl/avl.c                          ${DST_LIB}/libavl/
62 cp ${SRC_UCM}/sys/avl.h                         ${DST_LIB}/libavl/include/sys/
63 cp ${SRC_UCM}/sys/avl_impl.h                    ${DST_LIB}/libavl/include/sys/
64
65 echo "* zfs/lib/libnvpair"
66 mkdir -p ${DST_LIB}/libnvpair/include/sys/
67 cp ${SRC_CM}/nvpair/nvpair.c                    ${DST_LIB}/libnvpair/
68 cp ${SRC_LIB}/libnvpair/libnvpair.c             ${DST_LIB}/libnvpair/
69 cp ${SRC_UCM}/os/nvpair_alloc_system.c          ${DST_LIB}/libnvpair/
70 cp ${SRC_CM}/nvpair/nvpair_alloc_fixed.c        ${DST_LIB}/libnvpair/
71 cp ${SRC_LIB}/libnvpair/libnvpair.h             ${DST_LIB}/libnvpair/include/
72 cp ${SRC_UCM}/sys/nvpair.h                      ${DST_LIB}/libnvpair/include/sys/
73 cp ${SRC_UCM}/sys/nvpair_impl.h                 ${DST_LIB}/libnvpair/include/sys/
74
75 echo "* zfs/lib/libumem"
76 mkdir -p ${DST_LIB}/libumem/include/
77 mkdir -p ${DST_LIB}/libumem/sys/
78 cp ${SRC_LIB}/libumem/common/*.c                ${DST_LIB}/libumem/
79 cp ${SRC_LIB}/libumem/common/*.h                ${DST_LIB}/libumem/include/
80 cp ${SRC_LIB}/libumem/common/sys/*.h            ${DST_LIB}/libumem/sys/
81
82 echo "* zfs/lib/libuutil"
83 mkdir -p ${DST_LIB}/libuutil/include/
84 cp ${SRC_LIB}/libuutil/common/*.c               ${DST_LIB}/libuutil/
85 cp ${SRC_LIB}/libuutil/common/*.h               ${DST_LIB}/libuutil/include/
86
87 echo "* zfs/lib/libspl"
88 mkdir -p ${DST_LIB}/libspl/include/sys/
89 cp ${SRC_LIB}/libzpool/common/taskq.c           ${DST_LIB}/libspl/
90 cp ${SRC_LIB}/libzpool/common/util.c            ${DST_LIB}/libspl/
91 cp ${SRC_LIB}/libzpool/common/sys/zfs_context.h ${DST_LIB}/libspl/include/sys/
92 cp ${SRC_LIB}/libc/port/gen/strlcat.c           ${DST_LIB}/libspl/
93 cp ${SRC_LIB}/libc/port/gen/strlcpy.c           ${DST_LIB}/libspl/
94 cp ${SRC_LIB}/libc/port/gen/strnlen.c           ${DST_LIB}/libspl/
95 cp ${SRC_LIB}/libgen/common/mkdirp.c            ${DST_LIB}/libspl/
96 cp ${SRC_CM}/unicode/u8_textprep.c              ${DST_LIB}/libspl/
97 cp ${SRC_UCM}/os/list.c                         ${DST_LIB}/libspl/
98 cp ${SRC_UCM}/sys/vmem.h                        ${DST_LIB}/libspl/include/sys/
99 cp ${SRC_UCM}/sys/list.h                        ${DST_LIB}/libspl/include/sys/
100 cp ${SRC_UCM}/sys/list_impl.h                   ${DST_LIB}/libspl/include/sys/
101
102 echo "* zfs/lib/libzcommon"
103 mkdir -p ${DST_LIB}/libzcommon/include/sys/fs/
104 mkdir -p ${DST_LIB}/libzcommon/include/sys/fm/fs/
105 cp ${SRC_CM}/zfs/*.c                            ${DST_LIB}/libzcommon/
106 cp ${SRC_CM}/zfs/*.h                            ${DST_LIB}/libzcommon/include/
107 cp ${SRC_UCM}/sys/fs/zfs.h                      ${DST_LIB}/libzcommon/include/sys/fs/
108 cp ${SRC_UCM}/sys/fm/fs/zfs.h                   ${DST_LIB}/libzcommon/include/sys/fm/fs/
109
110 echo "* zfs/lib/libzpool"
111 mkdir -p ${DST_LIB}/libzpool/include/sys/
112 cp ${SRC_LIB}/libzpool/common/kernel.c          ${DST_LIB}/libzpool/
113 cp ${SRC_ZLIB}/*.c                              ${DST_LIB}/libzpool/
114 cp ${SRC_UTS}/intel/zfs/spa_boot.c              ${DST_LIB}/libzpool/
115 cp ${SRC_ZLIB}/sys/*.h                          ${DST_LIB}/libzpool/include/sys/
116 rm ${DST_LIB}/libzpool/vdev_disk.c
117 rm ${DST_LIB}/libzpool/include/sys/vdev_disk.h
118
119 echo "* zfs/lib/libzfs"
120 mkdir -p ${DST_LIB}/libzfs/include/
121 cp ${SRC_LIB}/libzfs/common/*.c                 ${DST_LIB}/libzfs/
122 cp ${SRC_LIB}/libzfs/common/*.h                 ${DST_LIB}/libzfs/include/
123
124 echo "* zfs/zcmd/zpool"
125 mkdir -p ${DST_CMD}/zpool
126 cp ${SRC_CMD}/zpool/*.c                         ${DST_CMD}/zpool/
127 cp ${SRC_CMD}/zpool/*.h                         ${DST_CMD}/zpool/
128
129 echo "* zfs/zcmd/zfs"
130 mkdir -p ${DST_CMD}/zfs
131 cp ${SRC_CMD}/zfs/*.c                           ${DST_CMD}/zfs/
132 cp ${SRC_CMD}/zfs/*.h                           ${DST_CMD}/zfs/
133
134 echo "* zfs/zcmd/zdb"
135 mkdir -p ${DST_CMD}/zdb/
136 cp ${SRC_CMD}/zdb/*.c                           ${DST_CMD}/zdb/
137
138 echo "* zfs/zcmd/zdump"
139 mkdir -p ${DST_CMD}/zdump
140 cp ${SRC_CMD}/zdump/*.c                         ${DST_CMD}/zdump/
141
142 echo "* zfs/zcmd/zinject"
143 mkdir -p ${DST_CMD}/zinject
144 cp ${SRC_CMD}/zinject/*.c                       ${DST_CMD}/zinject/
145 cp ${SRC_CMD}/zinject/*.h                       ${DST_CMD}/zinject/
146
147 echo "* zfs/zcmd/ztest"
148 mkdir -p ${DST_CMD}/ztest
149 cp ${SRC_CMD}/ztest/*.c                         ${DST_CMD}/ztest/
150
151 rm -Rf ${SRC}