1*65bac82bSKevin Crowe#!/bin/ksh 2*65bac82bSKevin Crowe# 3*65bac82bSKevin Crowe# This file and its contents are supplied under the terms of the 4*65bac82bSKevin Crowe# Common Development and Distribution License ("CDDL"), version 1.0. 5*65bac82bSKevin Crowe# You may only use this file in accordance with the terms of version 6*65bac82bSKevin Crowe# 1.0 of the CDDL. 7*65bac82bSKevin Crowe# 8*65bac82bSKevin Crowe# A full copy of the text of the CDDL should have accompanied this 9*65bac82bSKevin Crowe# source. A copy of the CDDL is also available via the Internet at 10*65bac82bSKevin Crowe# http://www.illumos.org/license/CDDL. 11*65bac82bSKevin Crowe# 12*65bac82bSKevin Crowe 13*65bac82bSKevin Crowe# 14*65bac82bSKevin Crowe# Copyright 2019 Nexenta by DDN, Inc. All rights reserved. 15*65bac82bSKevin Crowe# 16*65bac82bSKevin Crowe 17*65bac82bSKevin Crowe# Use normal make (not dmake) by default. 18*65bac82bSKevin Crowemake=${MAKE:-make} 19*65bac82bSKevin Crowe 20*65bac82bSKevin Crowe# Set this if you want to use dbx or gdb: 21*65bac82bSKevin Crowe# export SOURCEDEBUG=yes 22*65bac82bSKevin Crowe 23*65bac82bSKevin Crowe[ -n "$SRC" ] || { 24*65bac82bSKevin Crowe echo "SRC not set. Run 'ws' or 'bldenv' first." 25*65bac82bSKevin Crowe exit 1 26*65bac82bSKevin Crowe} 27*65bac82bSKevin Crowe 28*65bac82bSKevin Crowecpu=`uname -p` 29*65bac82bSKevin Crowecase $cpu in 30*65bac82bSKevin Crowei386) 31*65bac82bSKevin Crowe x=intel 32*65bac82bSKevin Crowe kmdb_arch="amd64" 33*65bac82bSKevin Crowe mdb_arch="ia32 amd64" 34*65bac82bSKevin Crowe arch64=amd64 35*65bac82bSKevin Crowe ;; 36*65bac82bSKevin Crowesparc) 37*65bac82bSKevin Crowe x=sparc 38*65bac82bSKevin Crowe kmdb_arch=v9 39*65bac82bSKevin Crowe mdb_arch="v7 v9" 40*65bac82bSKevin Crowe arch64=sparcv9 41*65bac82bSKevin Crowe ;; 42*65bac82bSKevin Crowe*) echo "Unknown architecture" ; exit 1;; 43*65bac82bSKevin Croweesac 44*65bac82bSKevin Crowe 45*65bac82bSKevin Crowe################################################################ 46*65bac82bSKevin Crowe 47*65bac82bSKevin Crowebuild_tools() { 48*65bac82bSKevin Crowe test -f $SRC/tools/proto/root_i386-nd/opt/onbld/bin/genoffsets || 49*65bac82bSKevin Crowe (cd $SRC/tools && $make install) 50*65bac82bSKevin Crowe (cd $SRC/common/mapfiles; $make install) 51*65bac82bSKevin Crowe} 52*65bac82bSKevin Crowe 53*65bac82bSKevin Croweclobber_tools() { 54*65bac82bSKevin Crowe (cd $SRC/tools && $make clobber) 55*65bac82bSKevin Crowe (cd $SRC/common/mapfiles; $make clobber) 56*65bac82bSKevin Crowe} 57*65bac82bSKevin Crowe 58*65bac82bSKevin Crowe# end build_tools() 59*65bac82bSKevin Crowe 60*65bac82bSKevin Crowe 61*65bac82bSKevin Crowe################################################################ 62*65bac82bSKevin Crowe 63*65bac82bSKevin Crowedo_hdrs() { 64*65bac82bSKevin Crowe 65*65bac82bSKevin Crowetarg=$1 66*65bac82bSKevin Croweif [ "$targ" = clobber ] 67*65bac82bSKevin Crowethen 68*65bac82bSKevin Crowe (cd $SRC/uts && $make -k clobber_h) 69*65bac82bSKevin Crowe (cd $SRC/head && $make clobber) 70*65bac82bSKevin Crowefi 71*65bac82bSKevin Crowe 72*65bac82bSKevin Croweif [ "$targ" = install ] 73*65bac82bSKevin Crowethen 74*65bac82bSKevin Crowe targ=install_h 75*65bac82bSKevin Crowe 76*65bac82bSKevin Crowe # Just the parts of "make sgs" we need, and 77*65bac82bSKevin Crowe # skip them if they appear to be done. 78*65bac82bSKevin Crowe # ... stuff under $SRC 79*65bac82bSKevin Crowe test -f $SRC/uts/common/sys/priv_names.h || 80*65bac82bSKevin Crowe (cd $SRC/uts && $make -k all_h) 81*65bac82bSKevin Crowe 82*65bac82bSKevin Crowe test -f $SRC/head/rpcsvc/nispasswd.h || 83*65bac82bSKevin Crowe (cd $SRC/head && $make -k $targ) 84*65bac82bSKevin Crowe 85*65bac82bSKevin Crowe # ... stuff under $ROOT (proto area) 86*65bac82bSKevin Crowe test -d $ROOT/usr/include/sys || 87*65bac82bSKevin Crowe (cd $SRC && $make rootdirs) 88*65bac82bSKevin Crowe test -f $ROOT/usr/include/sys/types.h || 89*65bac82bSKevin Crowe (cd $SRC/uts && $make -k $targ) 90*65bac82bSKevin Crowe test -f $ROOT/usr/include/rpcsvc/daemon_utils.h || 91*65bac82bSKevin Crowe (cd $SRC/head && $make $targ) 92*65bac82bSKevin Crowe 93*65bac82bSKevin Crowe # always update the NFS (kernel) headers to be safe 94*65bac82bSKevin Crowe (cd $SRC/uts/common/gssapi && $make -k $targ) 95*65bac82bSKevin Crowe (cd $SRC/uts/common/sys && $make -k $targ) 96*65bac82bSKevin Crowe (cd $SRC/uts/common/nfs && $make -k $targ) 97*65bac82bSKevin Crowefi 98*65bac82bSKevin Crowe 99*65bac82bSKevin Crowe# Need some library headers too... 100*65bac82bSKevin Crowefor lib in \ 101*65bac82bSKevin Crowe libcmdutils \ 102*65bac82bSKevin Crowe libcryptoutil \ 103*65bac82bSKevin Crowe libidmap \ 104*65bac82bSKevin Crowe libpam \ 105*65bac82bSKevin Crowe libsec \ 106*65bac82bSKevin Crowe libzfs_core \ 107*65bac82bSKevin Crowe libzfs \ 108*65bac82bSKevin Crowe libshare \ 109*65bac82bSKevin Crowe libuutil \ 110*65bac82bSKevin Crowe librpcsvc \ 111*65bac82bSKevin Crowe libmapid 112*65bac82bSKevin Crowedo 113*65bac82bSKevin Crowe (cd $SRC/lib/$lib && $make $targ) 114*65bac82bSKevin Crowedone 115*65bac82bSKevin Crowe} 116*65bac82bSKevin Crowe 117*65bac82bSKevin Crowe# end do_hdrs() 118*65bac82bSKevin Crowe 119*65bac82bSKevin Crowe 120*65bac82bSKevin Crowe################################################################ 121*65bac82bSKevin Crowe 122*65bac82bSKevin Crowedo_kern() { 123*65bac82bSKevin Crowe case $1 in 124*65bac82bSKevin Crowe *) targ=$1 ;; 125*65bac82bSKevin Crowe esac 126*65bac82bSKevin Crowe ( unset SOURCEDEBUG ; 127*65bac82bSKevin Crowe (cd $SRC/uts/$x/nfs && $make $targ) ; 128*65bac82bSKevin Crowe (cd $SRC/uts/$x/nfs_dlboot && $make $targ) ; 129*65bac82bSKevin Crowe (cd $SRC/uts/$x/nfssrv && $make $targ) ; 130*65bac82bSKevin Crowe (cd $SRC/uts/$x/klmmod && $make $targ) ; 131*65bac82bSKevin Crowe (cd $SRC/uts/$x/klmops && $make $targ) ) 132*65bac82bSKevin Crowe} 133*65bac82bSKevin Crowe 134*65bac82bSKevin Crowe# end do_kern() 135*65bac82bSKevin Crowe 136*65bac82bSKevin Crowe 137*65bac82bSKevin Crowe################################################################ 138*65bac82bSKevin Crowe 139*65bac82bSKevin Crowe# Note lib1 builds prerequisite libraries not delivered by the 140*65bac82bSKevin Crowe# tar file we create below. To accelerate clean/install, we 141*65bac82bSKevin Crowe# skip these on clean (but still nuke them for clobber) 142*65bac82bSKevin Crowe 143*65bac82bSKevin Crowedo_lib1() { 144*65bac82bSKevin Crowe 145*65bac82bSKevin Crowefor lib in \ 146*65bac82bSKevin Crowe libavl \ 147*65bac82bSKevin Crowe libuutil \ 148*65bac82bSKevin Crowe libcmdutils \ 149*65bac82bSKevin Crowe libidmap \ 150*65bac82bSKevin Crowe libzfs_core \ 151*65bac82bSKevin Crowe libzfs 152*65bac82bSKevin Crowedo 153*65bac82bSKevin Crowe (cd $SRC/lib/$lib && $make $1) 154*65bac82bSKevin Crowedone 155*65bac82bSKevin Crowe} 156*65bac82bSKevin Crowe 157*65bac82bSKevin Crowe# lib2 builds stuff we include in the tar file, 158*65bac82bSKevin Crowe# or that we don't mind rebuilding after clean. 159*65bac82bSKevin Crowe 160*65bac82bSKevin Crowedo_lib2() { 161*65bac82bSKevin Crowe 162*65bac82bSKevin Crowefor lib in \ 163*65bac82bSKevin Crowe librpcsvc \ 164*65bac82bSKevin Crowe libmapid 165*65bac82bSKevin Crowedo 166*65bac82bSKevin Crowe (cd $SRC/lib/$lib && $make $1) 167*65bac82bSKevin Crowedone 168*65bac82bSKevin Crowe 169*65bac82bSKevin Crowe(cd $SRC/lib/libshare && $make $1 PLUGINS=nfs) 170*65bac82bSKevin Crowe 171*65bac82bSKevin Crowe} 172*65bac82bSKevin Crowe 173*65bac82bSKevin Crowe# end do_lib1() and do_lib2() 174*65bac82bSKevin Crowe 175*65bac82bSKevin Crowe 176*65bac82bSKevin Crowe################################################################ 177*65bac82bSKevin Crowe 178*65bac82bSKevin Crowedo_cmds() { 179*65bac82bSKevin Crowe 180*65bac82bSKevin Crowecase $1 in 181*65bac82bSKevin Croweinstall) 182*65bac82bSKevin Crowe # mount programs need fslib.o 183*65bac82bSKevin Crowe (cd $SRC/cmd/fs.d && $make fslib.o) 184*65bac82bSKevin Crowe (cd $SRC/cmd/fs.d/nfs && $make $1 catalog) 185*65bac82bSKevin Crowe ;; 186*65bac82bSKevin Croweclean|clobber) 187*65bac82bSKevin Crowe (cd $SRC/cmd/fs.d/nfs && $make $1) 188*65bac82bSKevin Crowe (cd $SRC/cmd/fs.d && $make ${1}_local) 189*65bac82bSKevin Crowe ;; 190*65bac82bSKevin Croweesac 191*65bac82bSKevin Crowe 192*65bac82bSKevin Crowe 193*65bac82bSKevin Crowe} 194*65bac82bSKevin Crowe 195*65bac82bSKevin Crowe# Build the MDB modules, WITH the linktest 196*65bac82bSKevin Crowe# Not yet. See https://www.illumos.org/issues/3409 197*65bac82bSKevin Crowe 198*65bac82bSKevin Crowe# end do_cmds() 199*65bac82bSKevin Crowe 200*65bac82bSKevin Crowe 201*65bac82bSKevin Crowe################################################################ 202*65bac82bSKevin Crowe# This builds $SRC/TAGS (and cscope.files) in a helpful order. 203*65bac82bSKevin Crowe 204*65bac82bSKevin Crowedo_tags() { 205*65bac82bSKevin Crowe (cd $SRC ; 206*65bac82bSKevin Crowe find uts/common/sys -name '*.[ch]' -print |sort 207*65bac82bSKevin Crowe find uts/common/net -name '*.[ch]' -print |sort 208*65bac82bSKevin Crowe find uts/common/netinet -name '*.[ch]' -print |sort 209*65bac82bSKevin Crowe find uts/common/nfs -name '*.[ch]' -print |sort 210*65bac82bSKevin Crowe find uts/common/rpc -name '*.[ch]' -print |sort 211*65bac82bSKevin Crowe find uts/common/klm -name '*.[ch]' -print |sort 212*65bac82bSKevin Crowe find uts/common/fs/nfs -name '*.[ch]' -print |sort 213*65bac82bSKevin Crowe find uts/common/gssapi -name '*.[ch]' -print |sort 214*65bac82bSKevin Crowe find head -name '*.h' -print |sort 215*65bac82bSKevin Crowe find cmd/fs.d/nfs -name '*.[ch]' -print |sort 216*65bac82bSKevin Crowe ) > $SRC/cscope.files 217*65bac82bSKevin Crowe 218*65bac82bSKevin Crowe (cd $SRC ; 219*65bac82bSKevin Crowe exctags -e --langmap=c:+.ndl -h ndl -L - < cscope.files 220*65bac82bSKevin Crowe cscope -b ) 221*65bac82bSKevin Crowe} 222*65bac82bSKevin Crowe 223*65bac82bSKevin Crowe#end do_tags() 224*65bac82bSKevin Crowe 225*65bac82bSKevin Crowe 226*65bac82bSKevin Crowe################################################################ 227*65bac82bSKevin Crowe# This creates tarfiles one can use to update a test machine. 228*65bac82bSKevin Crowe 229*65bac82bSKevin Crowedo_tar() { 230*65bac82bSKevin Crowe git_rev=`git rev-parse --short=8 HEAD` 231*65bac82bSKevin Crowe 232*65bac82bSKevin Crowe# NFS (everything) 233*65bac82bSKevin Crowe files=" 234*65bac82bSKevin Crowekernel/misc/$arch64/klmmod 235*65bac82bSKevin Crowekernel/misc/$arch64/klmops 236*65bac82bSKevin Crowekernel/misc/$arch64/nfs_dlboot 237*65bac82bSKevin Crowekernel/misc/$arch64/nfssrv 238*65bac82bSKevin Crowekernel/fs/$arch64/nfs 239*65bac82bSKevin Crowekernel/sys/$arch64/nfs 240*65bac82bSKevin Crowelib/svc/manifest/network/nfs/cbd.xml 241*65bac82bSKevin Crowelib/svc/manifest/network/nfs/client.xml 242*65bac82bSKevin Crowelib/svc/manifest/network/nfs/mapid.xml 243*65bac82bSKevin Crowelib/svc/manifest/network/nfs/nfslogd.xml 244*65bac82bSKevin Crowelib/svc/manifest/network/nfs/nlockmgr.xml 245*65bac82bSKevin Crowelib/svc/manifest/network/nfs/rquota.xml 246*65bac82bSKevin Crowelib/svc/manifest/network/nfs/server.xml 247*65bac82bSKevin Crowelib/svc/manifest/network/nfs/status.xml 248*65bac82bSKevin Crowelib/svc/method/nfs-client 249*65bac82bSKevin Crowelib/svc/method/nfs-server 250*65bac82bSKevin Crowelib/svc/method/nlockmgr 251*65bac82bSKevin Croweusr/bin/nfsstat 252*65bac82bSKevin Croweusr/lib/fs/nfs/$arch64/libshare_nfs.so.1 253*65bac82bSKevin Croweusr/lib/fs/nfs/libshare_nfs.so.1 254*65bac82bSKevin Croweusr/lib/fs/nfs/dfmounts 255*65bac82bSKevin Croweusr/lib/fs/nfs/dfshares 256*65bac82bSKevin Croweusr/lib/fs/nfs/nfsfind 257*65bac82bSKevin Croweusr/lib/fs/nfs/showmount 258*65bac82bSKevin Croweusr/lib/fs/nfs/umount 259*65bac82bSKevin Croweusr/lib/nfs/libmapid.so.1 260*65bac82bSKevin Croweusr/lib/nfs/lockd 261*65bac82bSKevin Croweusr/lib/nfs/mountd 262*65bac82bSKevin Croweusr/lib/nfs/nfs4cbd 263*65bac82bSKevin Croweusr/lib/nfs/nfsd 264*65bac82bSKevin Croweusr/lib/nfs/nfslogd 265*65bac82bSKevin Croweusr/lib/nfs/nfsmapid 266*65bac82bSKevin Croweusr/lib/nfs/rquotad 267*65bac82bSKevin Croweusr/lib/nfs/statd 268*65bac82bSKevin Croweusr/lib/reparse/$arch64/libnfs_basic.so.1 269*65bac82bSKevin Croweusr/lib/reparse/libnfs_basic.so.1 270*65bac82bSKevin Croweusr/sbin/clear_locks 271*65bac82bSKevin Croweusr/sbin/exportfs 272*65bac82bSKevin Croweusr/sbin/nfsref 273*65bac82bSKevin Crowe" 274*65bac82bSKevin Crowe (cd $ROOT && tar cfj ../../nfs-${git_rev}.tar.bz2 $files) 275*65bac82bSKevin Crowe 276*65bac82bSKevin Crowe# KLM kmod 277*65bac82bSKevin Crowe files=" 278*65bac82bSKevin Crowekernel/misc/$arch64/klmmod 279*65bac82bSKevin Crowekernel/misc/$arch64/klmops 280*65bac82bSKevin Crowe" 281*65bac82bSKevin Crowe (cd $ROOT && tar cfj ../../klm-${git_rev}.tar.bz2 $files) 282*65bac82bSKevin Crowe} 283*65bac82bSKevin Crowe 284*65bac82bSKevin Crowe# end do_tar() 285*65bac82bSKevin Crowe 286*65bac82bSKevin Crowe 287*65bac82bSKevin Crowe################################################################ 288*65bac82bSKevin Crowe 289*65bac82bSKevin Croweif [ "$1" = "" ]; then 290*65bac82bSKevin Crowe set '?' # force usage 291*65bac82bSKevin Crowefi 292*65bac82bSKevin Crowe 293*65bac82bSKevin Croweset -x 294*65bac82bSKevin Crowe 295*65bac82bSKevin Crowefor arg 296*65bac82bSKevin Crowedo 297*65bac82bSKevin Crowe case "$arg" in 298*65bac82bSKevin Crowe install) 299*65bac82bSKevin Crowe build_tools 300*65bac82bSKevin Crowe set -e 301*65bac82bSKevin Crowe do_hdrs $arg 302*65bac82bSKevin Crowe do_kern $arg 303*65bac82bSKevin Crowe do_lib1 $arg 304*65bac82bSKevin Crowe do_lib2 $arg 305*65bac82bSKevin Crowe do_cmds $arg 306*65bac82bSKevin Crowe ;; 307*65bac82bSKevin Crowe clean) 308*65bac82bSKevin Crowe # intentionally skip: lib1, hdrs, tools 309*65bac82bSKevin Crowe do_cmds $arg 310*65bac82bSKevin Crowe do_lib2 $arg 311*65bac82bSKevin Crowe do_kern $arg 312*65bac82bSKevin Crowe ;; 313*65bac82bSKevin Crowe clobber) 314*65bac82bSKevin Crowe do_cmds $arg 315*65bac82bSKevin Crowe do_lib2 $arg 316*65bac82bSKevin Crowe do_lib1 $arg 317*65bac82bSKevin Crowe do_kern $arg 318*65bac82bSKevin Crowe do_hdrs $arg 319*65bac82bSKevin Crowe clobber_tools 320*65bac82bSKevin Crowe ;; 321*65bac82bSKevin Crowe tags) 322*65bac82bSKevin Crowe do_tags 323*65bac82bSKevin Crowe ;; 324*65bac82bSKevin Crowe tar) 325*65bac82bSKevin Crowe do_tar 326*65bac82bSKevin Crowe ;; 327*65bac82bSKevin Crowe *) 328*65bac82bSKevin Crowe echo "Usage: $0 {install|clean|clobber|tags|tar}"; 329*65bac82bSKevin Crowe exit 1; 330*65bac82bSKevin Crowe ;; 331*65bac82bSKevin Crowe esac 332*65bac82bSKevin Crowedone 333