165bac82bSKevin Crowe#!/bin/ksh 265bac82bSKevin Crowe# 365bac82bSKevin Crowe# This file and its contents are supplied under the terms of the 465bac82bSKevin Crowe# Common Development and Distribution License ("CDDL"), version 1.0. 565bac82bSKevin Crowe# You may only use this file in accordance with the terms of version 665bac82bSKevin Crowe# 1.0 of the CDDL. 765bac82bSKevin Crowe# 865bac82bSKevin Crowe# A full copy of the text of the CDDL should have accompanied this 965bac82bSKevin Crowe# source. A copy of the CDDL is also available via the Internet at 1065bac82bSKevin Crowe# http://www.illumos.org/license/CDDL. 1165bac82bSKevin Crowe# 1265bac82bSKevin Crowe 1365bac82bSKevin Crowe# 14*86d949f9SVitaliy Gusev# Copyright 2021 Tintri by DDN, Inc. All rights reserved. 1565bac82bSKevin Crowe# 1665bac82bSKevin Crowe 1765bac82bSKevin Crowe# Use normal make (not dmake) by default. 1865bac82bSKevin Crowemake=${MAKE:-make} 1965bac82bSKevin Crowe 2065bac82bSKevin Crowe# Set this if you want to use dbx or gdb: 2165bac82bSKevin Crowe# export SOURCEDEBUG=yes 2265bac82bSKevin Crowe 2365bac82bSKevin Crowe[ -n "$SRC" ] || { 2465bac82bSKevin Crowe echo "SRC not set. Run 'ws' or 'bldenv' first." 2565bac82bSKevin Crowe exit 1 2665bac82bSKevin Crowe} 2765bac82bSKevin Crowe 2865bac82bSKevin Crowecpu=`uname -p` 2965bac82bSKevin Crowecase $cpu in 3065bac82bSKevin Crowei386) 3165bac82bSKevin Crowe x=intel 3265bac82bSKevin Crowe kmdb_arch="amd64" 3365bac82bSKevin Crowe mdb_arch="ia32 amd64" 3465bac82bSKevin Crowe arch64=amd64 3565bac82bSKevin Crowe ;; 3665bac82bSKevin Crowesparc) 3765bac82bSKevin Crowe x=sparc 3865bac82bSKevin Crowe kmdb_arch=v9 3965bac82bSKevin Crowe mdb_arch="v7 v9" 4065bac82bSKevin Crowe arch64=sparcv9 4165bac82bSKevin Crowe ;; 4265bac82bSKevin Crowe*) echo "Unknown architecture" ; exit 1;; 4365bac82bSKevin Croweesac 4465bac82bSKevin Crowe 4565bac82bSKevin Crowe################################################################ 4665bac82bSKevin Crowe 4765bac82bSKevin Crowebuild_tools() { 4865bac82bSKevin Crowe test -f $SRC/tools/proto/root_i386-nd/opt/onbld/bin/genoffsets || 4965bac82bSKevin Crowe (cd $SRC/tools && $make install) 5065bac82bSKevin Crowe (cd $SRC/common/mapfiles; $make install) 5165bac82bSKevin Crowe} 5265bac82bSKevin Crowe 5365bac82bSKevin Croweclobber_tools() { 5465bac82bSKevin Crowe (cd $SRC/tools && $make clobber) 5565bac82bSKevin Crowe (cd $SRC/common/mapfiles; $make clobber) 5665bac82bSKevin Crowe} 5765bac82bSKevin Crowe 5865bac82bSKevin Crowe# end build_tools() 5965bac82bSKevin Crowe 6065bac82bSKevin Crowe 6165bac82bSKevin Crowe################################################################ 6265bac82bSKevin Crowe 6365bac82bSKevin Crowedo_hdrs() { 6465bac82bSKevin Crowe 6565bac82bSKevin Crowetarg=$1 6665bac82bSKevin Croweif [ "$targ" = clobber ] 6765bac82bSKevin Crowethen 6865bac82bSKevin Crowe (cd $SRC/uts && $make -k clobber_h) 6965bac82bSKevin Crowe (cd $SRC/head && $make clobber) 7065bac82bSKevin Crowefi 7165bac82bSKevin Crowe 7265bac82bSKevin Croweif [ "$targ" = install ] 7365bac82bSKevin Crowethen 7465bac82bSKevin Crowe targ=install_h 7565bac82bSKevin Crowe 7665bac82bSKevin Crowe # Just the parts of "make sgs" we need, and 7765bac82bSKevin Crowe # skip them if they appear to be done. 7865bac82bSKevin Crowe # ... stuff under $SRC 7965bac82bSKevin Crowe test -f $SRC/uts/common/sys/priv_names.h || 8065bac82bSKevin Crowe (cd $SRC/uts && $make -k all_h) 8165bac82bSKevin Crowe 8265bac82bSKevin Crowe test -f $SRC/head/rpcsvc/nispasswd.h || 8365bac82bSKevin Crowe (cd $SRC/head && $make -k $targ) 8465bac82bSKevin Crowe 8565bac82bSKevin Crowe # ... stuff under $ROOT (proto area) 8665bac82bSKevin Crowe test -d $ROOT/usr/include/sys || 8765bac82bSKevin Crowe (cd $SRC && $make rootdirs) 8865bac82bSKevin Crowe test -f $ROOT/usr/include/sys/types.h || 8965bac82bSKevin Crowe (cd $SRC/uts && $make -k $targ) 9065bac82bSKevin Crowe test -f $ROOT/usr/include/rpcsvc/daemon_utils.h || 9165bac82bSKevin Crowe (cd $SRC/head && $make $targ) 9265bac82bSKevin Crowe 9365bac82bSKevin Crowe # always update the NFS (kernel) headers to be safe 9465bac82bSKevin Crowe (cd $SRC/uts/common/gssapi && $make -k $targ) 9565bac82bSKevin Crowe (cd $SRC/uts/common/sys && $make -k $targ) 9665bac82bSKevin Crowe (cd $SRC/uts/common/nfs && $make -k $targ) 9765bac82bSKevin Crowefi 9865bac82bSKevin Crowe 9965bac82bSKevin Crowe# Need some library headers too... 10065bac82bSKevin Crowefor lib in \ 10165bac82bSKevin Crowe libcmdutils \ 10265bac82bSKevin Crowe libcryptoutil \ 10365bac82bSKevin Crowe libidmap \ 10465bac82bSKevin Crowe libpam \ 10565bac82bSKevin Crowe libsec \ 10665bac82bSKevin Crowe libzfs_core \ 10765bac82bSKevin Crowe libzfs \ 10865bac82bSKevin Crowe libshare \ 10965bac82bSKevin Crowe libuutil \ 11065bac82bSKevin Crowe librpcsvc \ 11165bac82bSKevin Crowe libmapid 11265bac82bSKevin Crowedo 11365bac82bSKevin Crowe (cd $SRC/lib/$lib && $make $targ) 11465bac82bSKevin Crowedone 11565bac82bSKevin Crowe} 11665bac82bSKevin Crowe 11765bac82bSKevin Crowe# end do_hdrs() 11865bac82bSKevin Crowe 11965bac82bSKevin Crowe 12065bac82bSKevin Crowe################################################################ 12165bac82bSKevin Crowe 12265bac82bSKevin Crowedo_kern() { 12365bac82bSKevin Crowe case $1 in 12465bac82bSKevin Crowe *) targ=$1 ;; 12565bac82bSKevin Crowe esac 12665bac82bSKevin Crowe ( unset SOURCEDEBUG ; 12765bac82bSKevin Crowe (cd $SRC/uts/$x/nfs && $make $targ) ; 12865bac82bSKevin Crowe (cd $SRC/uts/$x/nfs_dlboot && $make $targ) ; 12965bac82bSKevin Crowe (cd $SRC/uts/$x/nfssrv && $make $targ) ; 13065bac82bSKevin Crowe (cd $SRC/uts/$x/klmmod && $make $targ) ; 13165bac82bSKevin Crowe (cd $SRC/uts/$x/klmops && $make $targ) ) 13265bac82bSKevin Crowe} 13365bac82bSKevin Crowe 13465bac82bSKevin Crowe# end do_kern() 13565bac82bSKevin Crowe 13665bac82bSKevin Crowe 13765bac82bSKevin Crowe################################################################ 13865bac82bSKevin Crowe 13965bac82bSKevin Crowe# Note lib1 builds prerequisite libraries not delivered by the 14065bac82bSKevin Crowe# tar file we create below. To accelerate clean/install, we 14165bac82bSKevin Crowe# skip these on clean (but still nuke them for clobber) 14265bac82bSKevin Crowe 14365bac82bSKevin Crowedo_lib1() { 14465bac82bSKevin Crowe 14565bac82bSKevin Crowefor lib in \ 14665bac82bSKevin Crowe libavl \ 14765bac82bSKevin Crowe libuutil \ 14865bac82bSKevin Crowe libcmdutils \ 14965bac82bSKevin Crowe libidmap \ 15065bac82bSKevin Crowe libzfs_core \ 15165bac82bSKevin Crowe libzfs 15265bac82bSKevin Crowedo 15365bac82bSKevin Crowe (cd $SRC/lib/$lib && $make $1) 15465bac82bSKevin Crowedone 15565bac82bSKevin Crowe} 15665bac82bSKevin Crowe 15765bac82bSKevin Crowe# lib2 builds stuff we include in the tar file, 15865bac82bSKevin Crowe# or that we don't mind rebuilding after clean. 15965bac82bSKevin Crowe 16065bac82bSKevin Crowedo_lib2() { 16165bac82bSKevin Crowe 16265bac82bSKevin Crowefor lib in \ 16365bac82bSKevin Crowe librpcsvc \ 16465bac82bSKevin Crowe libmapid 16565bac82bSKevin Crowedo 16665bac82bSKevin Crowe (cd $SRC/lib/$lib && $make $1) 16765bac82bSKevin Crowedone 16865bac82bSKevin Crowe 16965bac82bSKevin Crowe(cd $SRC/lib/libshare && $make $1 PLUGINS=nfs) 17065bac82bSKevin Crowe 17165bac82bSKevin Crowe} 17265bac82bSKevin Crowe 17365bac82bSKevin Crowe# end do_lib1() and do_lib2() 17465bac82bSKevin Crowe 17565bac82bSKevin Crowe 17665bac82bSKevin Crowe################################################################ 17765bac82bSKevin Crowe 17865bac82bSKevin Crowedo_cmds() { 17965bac82bSKevin Crowe 18065bac82bSKevin Crowecase $1 in 18165bac82bSKevin Croweinstall) 18265bac82bSKevin Crowe # mount programs need fslib.o 18365bac82bSKevin Crowe (cd $SRC/cmd/fs.d && $make fslib.o) 18465bac82bSKevin Crowe (cd $SRC/cmd/fs.d/nfs && $make $1 catalog) 18565bac82bSKevin Crowe ;; 18665bac82bSKevin Croweclean|clobber) 18765bac82bSKevin Crowe (cd $SRC/cmd/fs.d/nfs && $make $1) 18865bac82bSKevin Crowe (cd $SRC/cmd/fs.d && $make ${1}_local) 18965bac82bSKevin Crowe ;; 19065bac82bSKevin Croweesac 19165bac82bSKevin Crowe 19265bac82bSKevin Crowe# Build the MDB modules, WITH the linktest 193*86d949f9SVitaliy Gusev(cd $SRC/cmd/mdb/tools && $make $1) 194*86d949f9SVitaliy Gusev 195*86d949f9SVitaliy Gusev# kmdb_arch is 64-bit only 196*86d949f9SVitaliy Gusevfor a in $kmdb_arch 197*86d949f9SVitaliy Gusevdo 198*86d949f9SVitaliy Gusev case $1 in 199*86d949f9SVitaliy Gusev install|lint) 200*86d949f9SVitaliy Gusev (cd $SRC/cmd/mdb/$x/$a/kmdb && 201*86d949f9SVitaliy Gusev $make kmdb_modlinktest.o ) 202*86d949f9SVitaliy Gusev ;; 203*86d949f9SVitaliy Gusev clean|clobber) 204*86d949f9SVitaliy Gusev (cd $SRC/cmd/mdb/$x/$a/kmdb && 205*86d949f9SVitaliy Gusev $make -k $1 ) 206*86d949f9SVitaliy Gusev ;; 207*86d949f9SVitaliy Gusev esac 208*86d949f9SVitaliy Gusev (cd $SRC/cmd/mdb/$x/$a/nfs && 209*86d949f9SVitaliy Gusev $make $1 KMDB_LINKTEST_ENABLE= ) 210*86d949f9SVitaliy Gusev (cd $SRC/cmd/mdb/$x/$a/klmmod && 211*86d949f9SVitaliy Gusev $make $1 KMDB_LINKTEST_ENABLE= ) 212*86d949f9SVitaliy Gusevdone 213*86d949f9SVitaliy Gusev} 21465bac82bSKevin Crowe 21565bac82bSKevin Crowe# end do_cmds() 21665bac82bSKevin Crowe 21765bac82bSKevin Crowe 21865bac82bSKevin Crowe################################################################ 21965bac82bSKevin Crowe# This builds $SRC/TAGS (and cscope.files) in a helpful order. 22065bac82bSKevin Crowe 22165bac82bSKevin Crowedo_tags() { 22265bac82bSKevin Crowe (cd $SRC ; 22365bac82bSKevin Crowe find uts/common/sys -name '*.[ch]' -print |sort 22465bac82bSKevin Crowe find uts/common/net -name '*.[ch]' -print |sort 22565bac82bSKevin Crowe find uts/common/netinet -name '*.[ch]' -print |sort 22665bac82bSKevin Crowe find uts/common/nfs -name '*.[ch]' -print |sort 22765bac82bSKevin Crowe find uts/common/rpc -name '*.[ch]' -print |sort 22865bac82bSKevin Crowe find uts/common/klm -name '*.[ch]' -print |sort 22965bac82bSKevin Crowe find uts/common/fs/nfs -name '*.[ch]' -print |sort 23065bac82bSKevin Crowe find uts/common/gssapi -name '*.[ch]' -print |sort 23165bac82bSKevin Crowe find head -name '*.h' -print |sort 23265bac82bSKevin Crowe find cmd/fs.d/nfs -name '*.[ch]' -print |sort 23365bac82bSKevin Crowe ) > $SRC/cscope.files 23465bac82bSKevin Crowe 23565bac82bSKevin Crowe (cd $SRC ; 23665bac82bSKevin Crowe exctags -e --langmap=c:+.ndl -h ndl -L - < cscope.files 23765bac82bSKevin Crowe cscope -b ) 23865bac82bSKevin Crowe} 23965bac82bSKevin Crowe 24065bac82bSKevin Crowe#end do_tags() 24165bac82bSKevin Crowe 24265bac82bSKevin Crowe 24365bac82bSKevin Crowe################################################################ 24465bac82bSKevin Crowe# This creates tarfiles one can use to update a test machine. 24565bac82bSKevin Crowe 24665bac82bSKevin Crowedo_tar() { 24765bac82bSKevin Crowe git_rev=`git rev-parse --short=8 HEAD` 24865bac82bSKevin Crowe 24965bac82bSKevin Crowe# NFS (everything) 25065bac82bSKevin Crowe files=" 251*86d949f9SVitaliy Gusevkernel/kmdb/$arch64/klmmod 252*86d949f9SVitaliy Gusevkernel/kmdb/$arch64/nfs 25365bac82bSKevin Crowekernel/misc/$arch64/klmmod 25465bac82bSKevin Crowekernel/misc/$arch64/klmops 25565bac82bSKevin Crowekernel/misc/$arch64/nfs_dlboot 25665bac82bSKevin Crowekernel/misc/$arch64/nfssrv 25765bac82bSKevin Crowekernel/fs/$arch64/nfs 25865bac82bSKevin Crowekernel/sys/$arch64/nfs 25965bac82bSKevin Crowelib/svc/manifest/network/nfs/cbd.xml 26065bac82bSKevin Crowelib/svc/manifest/network/nfs/client.xml 26165bac82bSKevin Crowelib/svc/manifest/network/nfs/mapid.xml 26265bac82bSKevin Crowelib/svc/manifest/network/nfs/nfslogd.xml 26365bac82bSKevin Crowelib/svc/manifest/network/nfs/nlockmgr.xml 26465bac82bSKevin Crowelib/svc/manifest/network/nfs/rquota.xml 26565bac82bSKevin Crowelib/svc/manifest/network/nfs/server.xml 26665bac82bSKevin Crowelib/svc/manifest/network/nfs/status.xml 26765bac82bSKevin Crowelib/svc/method/nfs-client 26865bac82bSKevin Crowelib/svc/method/nfs-server 26965bac82bSKevin Crowelib/svc/method/nlockmgr 27065bac82bSKevin Croweusr/bin/nfsstat 27165bac82bSKevin Croweusr/lib/fs/nfs/$arch64/libshare_nfs.so.1 27265bac82bSKevin Croweusr/lib/fs/nfs/libshare_nfs.so.1 27365bac82bSKevin Croweusr/lib/fs/nfs/dfmounts 27465bac82bSKevin Croweusr/lib/fs/nfs/dfshares 27565bac82bSKevin Croweusr/lib/fs/nfs/nfsfind 27665bac82bSKevin Croweusr/lib/fs/nfs/showmount 27765bac82bSKevin Croweusr/lib/fs/nfs/umount 278*86d949f9SVitaliy Gusevusr/lib/mdb/kvm/$arch64/klmmod.so 279*86d949f9SVitaliy Gusevusr/lib/mdb/kvm/$arch64/nfs.so 28065bac82bSKevin Croweusr/lib/nfs/libmapid.so.1 28165bac82bSKevin Croweusr/lib/nfs/lockd 28265bac82bSKevin Croweusr/lib/nfs/mountd 28365bac82bSKevin Croweusr/lib/nfs/nfs4cbd 28465bac82bSKevin Croweusr/lib/nfs/nfsd 28565bac82bSKevin Croweusr/lib/nfs/nfslogd 28665bac82bSKevin Croweusr/lib/nfs/nfsmapid 28765bac82bSKevin Croweusr/lib/nfs/rquotad 28865bac82bSKevin Croweusr/lib/nfs/statd 28965bac82bSKevin Croweusr/lib/reparse/$arch64/libnfs_basic.so.1 29065bac82bSKevin Croweusr/lib/reparse/libnfs_basic.so.1 29165bac82bSKevin Croweusr/sbin/clear_locks 29265bac82bSKevin Croweusr/sbin/exportfs 29365bac82bSKevin Croweusr/sbin/nfsref 29465bac82bSKevin Crowe" 29565bac82bSKevin Crowe (cd $ROOT && tar cfj ../../nfs-${git_rev}.tar.bz2 $files) 29665bac82bSKevin Crowe 29765bac82bSKevin Crowe# KLM kmod 29865bac82bSKevin Crowe files=" 29965bac82bSKevin Crowekernel/misc/$arch64/klmmod 30065bac82bSKevin Crowekernel/misc/$arch64/klmops 30165bac82bSKevin Crowe" 30265bac82bSKevin Crowe (cd $ROOT && tar cfj ../../klm-${git_rev}.tar.bz2 $files) 30365bac82bSKevin Crowe} 30465bac82bSKevin Crowe 30565bac82bSKevin Crowe# end do_tar() 30665bac82bSKevin Crowe 30765bac82bSKevin Crowe 30865bac82bSKevin Crowe################################################################ 30965bac82bSKevin Crowe 31065bac82bSKevin Croweif [ "$1" = "" ]; then 31165bac82bSKevin Crowe set '?' # force usage 31265bac82bSKevin Crowefi 31365bac82bSKevin Crowe 31465bac82bSKevin Croweset -x 31565bac82bSKevin Crowe 31665bac82bSKevin Crowefor arg 31765bac82bSKevin Crowedo 31865bac82bSKevin Crowe case "$arg" in 31965bac82bSKevin Crowe install) 32065bac82bSKevin Crowe build_tools 32165bac82bSKevin Crowe set -e 32265bac82bSKevin Crowe do_hdrs $arg 32365bac82bSKevin Crowe do_kern $arg 32465bac82bSKevin Crowe do_lib1 $arg 32565bac82bSKevin Crowe do_lib2 $arg 32665bac82bSKevin Crowe do_cmds $arg 32765bac82bSKevin Crowe ;; 32865bac82bSKevin Crowe clean) 32965bac82bSKevin Crowe # intentionally skip: lib1, hdrs, tools 33065bac82bSKevin Crowe do_cmds $arg 33165bac82bSKevin Crowe do_lib2 $arg 33265bac82bSKevin Crowe do_kern $arg 33365bac82bSKevin Crowe ;; 33465bac82bSKevin Crowe clobber) 33565bac82bSKevin Crowe do_cmds $arg 33665bac82bSKevin Crowe do_lib2 $arg 33765bac82bSKevin Crowe do_lib1 $arg 33865bac82bSKevin Crowe do_kern $arg 33965bac82bSKevin Crowe do_hdrs $arg 34065bac82bSKevin Crowe clobber_tools 34165bac82bSKevin Crowe ;; 34265bac82bSKevin Crowe tags) 34365bac82bSKevin Crowe do_tags 34465bac82bSKevin Crowe ;; 34565bac82bSKevin Crowe tar) 34665bac82bSKevin Crowe do_tar 34765bac82bSKevin Crowe ;; 34865bac82bSKevin Crowe *) 34965bac82bSKevin Crowe echo "Usage: $0 {install|clean|clobber|tags|tar}"; 35065bac82bSKevin Crowe exit 1; 35165bac82bSKevin Crowe ;; 35265bac82bSKevin Crowe esac 35365bac82bSKevin Crowedone 354