xref: /illumos-gate/usr/src/tools/quick/make-nfs (revision 86d949f9497332fe19be6b5d711d265eb957439f)
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