diff options
author | Gordon Ross <gwr@nexenta.com> | 2013-06-12 18:00:39 -0400 |
---|---|---|
committer | Gordon Ross <gwr@nexenta.com> | 2015-04-12 13:09:09 -0400 |
commit | 10b444a87400224fdb8ed3a329960a27385a96da (patch) | |
tree | 6599ac3fade3e8a3b43374eaf30976670be4005a /usr/src/tools/quick/make-smbsrv | |
parent | 6fdcb3d1c2baae812d9cbce37b41469b924efd90 (diff) | |
download | illumos-gate-10b444a87400224fdb8ed3a329960a27385a96da.tar.gz |
5321 Convenience scripts to build/clean smbsrv, idmap, zfs
Reviewed by: Alek Pinchuk <alek.pinchuk@nexenta.com>
Reviewed by: Ilya Usvyatsky <ilya.usvyatsky@nexenta.com>
Reviewed by: Kevin Crowe <kevin.crowe@nexenta.com>
Reviewed by: Prakash Surya <prakash.surya@delphix.com>
Approved by: Garrett D'Amore <garrett@damore.org>
Diffstat (limited to 'usr/src/tools/quick/make-smbsrv')
-rwxr-xr-x | usr/src/tools/quick/make-smbsrv | 305 |
1 files changed, 305 insertions, 0 deletions
diff --git a/usr/src/tools/quick/make-smbsrv b/usr/src/tools/quick/make-smbsrv new file mode 100755 index 0000000000..87666bbcdf --- /dev/null +++ b/usr/src/tools/quick/make-smbsrv @@ -0,0 +1,305 @@ +#!/bin/ksh +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2013 Nexenta Systems, Inc. All rights reserved. +# + +# Use distributed make (dmake) by default. +make=${MAKE:-dmake} + +CLOSED_IS_PRESENT=no +export CLOSED_IS_PRESENT + +export SOURCEDEBUG=yes + +[ -n "$SRC" ] || { + echo "SRC not set. Run 'ws' or 'bldenv' first." + exit 1 +} + +cpu=`uname -p` +case $cpu in +i386) + x=intel + mdb_arch="ia32 amd64" + arch64=amd64 + ;; +sparc) + x=sparc + mdb_arch=v9 + arch64=sparcv9 + ;; +*) echo "Huh?" ; exit 1;; +esac + +################################################################ + +build_tools() { + test -f $SRC/tools/proto/root_i386-nd/opt/onbld/bin/genoffsets || + (cd $SRC/tools && $make install) + (cd $SRC/common/mapfiles; $make install) +} + +clobber_tools() { + (cd $SRC/tools && $make clobber) + (cd $SRC/common/mapfiles; $make clobber) +} + +################################################################ + +do_hdrs() { + +targ=$1 +if [ "$targ" = clobber ] +then + (cd $SRC/uts && $make -k clobber_h) + (cd $SRC/head && $make clobber) +fi + +if [ "$targ" = install ] +then + targ=install_h + + # Just the parts of "make sgs" we need, and + # skip them if they appear to be done. + # ... stuff under $SRC + test -f $SRC/uts/common/sys/priv_names.h || + (cd $SRC/uts && $make -k all_h) + + test -f $SRC/head/rpcsvc/nispasswd.h || + (cd $SRC/head && $make -k install_h) + + # ... stuff under $ROOT (proto area) + test -d $ROOT/usr/include/sys || + (cd $SRC && $make rootdirs) + test -f $ROOT/usr/include/sys/types.h || + (cd $SRC/uts && $make -k install_h) + test -f $ROOT/usr/include/rpcsvc/daemon_utils.h || + (cd $SRC/head && $make install_h) + + # always update the smbsrv headers to be safe + # test -f $ROOT/usr/include/smbsrv/wintypes.h || + (cd $SRC/uts/common/sys && $make -k install_h) + (cd $SRC/uts/common/smb && $make -k install_h) + (cd $SRC/uts/common/smbsrv && $make -k install_h) + +fi + +# Need some library headers too... +for lib in \ + libbsm \ + libcmdutils \ + libcryptoutil \ + libdevid \ + libidmap \ + libpam \ + libsec \ + libscf \ + libshare \ + libsmbfs \ + libsqlite \ + libuutil \ + passwdutil \ + smbsrv +do + (cd $SRC/lib/$lib && $make $targ) +done +} + +################################################################ + +do_kern() { + case $1 in + lint) targ=modlintlib ;; + *) targ=$1 ;; + esac + ( unset SOURCEDEBUG ; + (cd $SRC/uts/$x/nsmb && $make $targ) ; + (cd $SRC/uts/$x/smbfs && $make $targ) ; + (cd $SRC/uts/$x/smbsrv && $make $targ) ) +} + +################################################################ + +do_libs() { + +for lib in \ + libavl \ + libcmdutils \ + libsmbfs \ + libsqlite \ + libuutil +do + (cd $SRC/lib/$lib && $make $1) +done + +(cd $SRC/lib/libshare && $make $1 PLUGINS=smb) +(cd $SRC/lib/smbsrv && $make $1) +(cd $SRC/lib/passwdutil && $make $1) +(cd $SRC/lib/pam_modules/smb && $make $1) + +} + +################################################################ + +do_cmds() { + +case $1 in +install) + # mount programs need fslib.o + (cd $SRC/cmd/fs.d && $make fslib.o) + (cd $SRC/cmd/fs.d/smbclnt && $make $1 catalog) + ;; +clean|clobber) + (cd $SRC/cmd/fs.d/smbclnt && $make $1) + (cd $SRC/cmd/fs.d && $make ${1}_local) + ;; +esac + +(cd $SRC/cmd/devfsadm && $make $1) +(cd $SRC/cmd/smbsrv && $make $1) + +# Build the MDB modules, WITH the linktest +(cd $SRC/cmd/mdb/tools && $make $1) +for a in $mdb_arch +do + case $1 in + install|lint) + (cd $SRC/cmd/mdb/$x/$a/kmdb && + $make kmdb_modlinktest.o ) + ;; + clean|clobber) + (cd $SRC/cmd/mdb/$x/$a/kmdb && + $make -k $1 ) + ;; + esac + + (cd $SRC/cmd/mdb/$x/$a/nsmb && + $make $1 KMDB_LINKTEST_ENABLE= ) + (cd $SRC/cmd/mdb/$x/$a/smbfs && + $make $1 KMDB_LINKTEST_ENABLE= ) + (cd $SRC/cmd/mdb/$x/$a/smbsrv && + $make $1 KMDB_LINKTEST_ENABLE= ) +done + +(cd $SRC/cmd/Adm/sun && $make $1) + +# Deal with mode 0400 file annoyance... +# See usr/src/cmd/Adm/sun/Makefile +if [ $1 = install ]; then + chmod a+r $ROOT/var/smb/smbpasswd +fi +} + + +################################################################ +# This builds $SRC/TAGS (and cscope.files) in a helpful order. + +do_tags() { + (cd $SRC ; + find uts/common/sys -name '*.[ch]' -print |sort + find uts/common/net -name '*.[ch]' -print |sort + find uts/common/netinet -name '*.[ch]' -print |sort + find uts/common/smb -name '*.[ch]' -print |sort + find uts/common/smbsrv -name '*.ndl' -print |sort + find uts/common/smbsrv -name '*.[ch]' -print |sort + find uts/common/fs/smbsrv -name '*.[ch]' -print |sort + find lib/libsmbfs -name '*.[ch]' -print |sort + find lib/smbsrv -name '*.[ch]' -print |sort + find cmd/smbsrv -name '*.[ch]' -print |sort + find common/smbsrv -name '*.[ch]' -print |sort + ) > $SRC/cscope.files + + (cd $SRC ; + exctags -e --langmap=c:+.ndl -h ndl -L - < cscope.files + cscope -b ) +} + +################################################################ +# This creates a tarfile one can use to update a test machine. + +do_tar() { + files=" +usr/kernel/drv/$arch64/smbsrv +usr/kernel/drv/smbsrv +usr/kernel/kmdb/$arch64/smbsrv +usr/kernel/kmdb/smbsrv +usr/lib/fs/smb/$arch64/libshare_smb.so.1 +usr/lib/fs/smb/libshare_smb.so.1 +usr/lib/libsmbfs.so.1 +usr/lib/mdb/kvm/$arch64/smbsrv.so +usr/lib/mdb/kvm/smbsrv.so +usr/lib/reparse/libreparse_smb.so.1 +usr/lib/security/pam_smb_passwd.so.1 +usr/lib/smbsrv/libmlrpc.so.1 +usr/lib/smbsrv/libmlsvc.so.1 +usr/lib/smbsrv/libsmb.so.1 +usr/lib/smbsrv/libsmbns.so.1 +usr/lib/smbsrv/smbd +usr/sbin/devfsadm +usr/sbin/smbadm +usr/sbin/smbstat +" + + (cd $ROOT && tar cfj ../../smbsrv.tar.bz2 $files) +} + +################################################################ + +if [ "$1" = "" ]; then + set '?' # force usage +fi + +set -x + +for arg +do + case "$arg" in + build|install) + arg=install + build_tools + set -e + do_hdrs $arg + do_kern $arg + do_libs $arg + do_cmds $arg + ;; + lint) + do_kern $arg + do_libs $arg + do_cmds $arg + ;; + clean) + do_cmds $arg + do_libs $arg + do_kern $arg + ;; + clobber) + do_cmds $arg + do_libs $arg + do_kern $arg + do_hdrs $arg + clobber_tools + ;; + tags) + do_tags + ;; + tar) + do_tar + ;; + *) + echo "Usage: $0 {build|lint|clean|clobber|tags|tar}"; + exit 1; + ;; + esac +done |