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