110b444a8SGordon Ross#!/bin/ksh 210b444a8SGordon Ross# 310b444a8SGordon Ross# This file and its contents are supplied under the terms of the 410b444a8SGordon Ross# Common Development and Distribution License ("CDDL"), version 1.0. 510b444a8SGordon Ross# You may only use this file in accordance with the terms of version 610b444a8SGordon Ross# 1.0 of the CDDL. 710b444a8SGordon Ross# 810b444a8SGordon Ross# A full copy of the text of the CDDL should have accompanied this 910b444a8SGordon Ross# source. A copy of the CDDL is also available via the Internet at 1010b444a8SGordon Ross# http://www.illumos.org/license/CDDL. 1110b444a8SGordon Ross# 1210b444a8SGordon Ross 1310b444a8SGordon Ross# 14b9538c21SGordon Ross# Copyright 2018 Nexenta Systems, Inc. All rights reserved. 1510b444a8SGordon Ross# 1610b444a8SGordon Ross 1710b444a8SGordon Ross# Use distributed make (dmake) by default. 1810b444a8SGordon Rossmake=${MAKE:-dmake} 1910b444a8SGordon Ross 2010b444a8SGordon RossCLOSED_IS_PRESENT=no 2110b444a8SGordon Rossexport CLOSED_IS_PRESENT 2210b444a8SGordon Ross 2310b444a8SGordon Ross[ -n "$SRC" ] || { 2410b444a8SGordon Ross echo "SRC not set. Run 'ws' or 'bldenv' first." 2510b444a8SGordon Ross exit 1 2610b444a8SGordon Ross} 2710b444a8SGordon Ross 2810b444a8SGordon Rosscpu=`uname -p` 2910b444a8SGordon Rosscase $cpu in 3010b444a8SGordon Rossi386) 3110b444a8SGordon Ross x=intel 32b9538c21SGordon Ross kmdb_arch="amd64" 3310b444a8SGordon Ross mdb_arch="ia32 amd64" 3410b444a8SGordon Ross arch32=i86 3510b444a8SGordon Ross arch64=amd64 3610b444a8SGordon Ross ;; 3710b444a8SGordon Rosssparc) 3810b444a8SGordon Ross x=sparc 39b9538c21SGordon Ross kmdb_arch=v9 40b9538c21SGordon Ross mdb_arch="v7 v9" 4110b444a8SGordon Ross arch32=sparc 4210b444a8SGordon Ross arch64=sparcv9 4310b444a8SGordon Ross ;; 4410b444a8SGordon Ross*) echo "Huh?" ; exit 1;; 4510b444a8SGordon Rossesac 4610b444a8SGordon Ross 4710b444a8SGordon Ross################################################################ 4810b444a8SGordon Ross 4910b444a8SGordon Rossbuild_tools() { 5010b444a8SGordon Ross test -f $SRC/tools/proto/root_i386-nd/opt/onbld/bin/genoffsets || 5110b444a8SGordon Ross (cd $SRC/tools && $make install) 5210b444a8SGordon Ross (cd $SRC/common/mapfiles; $make install) 5310b444a8SGordon Ross} 5410b444a8SGordon Ross 5510b444a8SGordon Rossclobber_tools() { 5610b444a8SGordon Ross (cd $SRC/tools && $make clobber) 5710b444a8SGordon Ross (cd $SRC/common/mapfiles; $make clobber) 5810b444a8SGordon Ross} 5910b444a8SGordon Ross 6010b444a8SGordon Ross################################################################ 6110b444a8SGordon Ross 6210b444a8SGordon Rossdo_hdrs() { 6310b444a8SGordon Ross 6410b444a8SGordon Rosstarg=$1 6510b444a8SGordon Rossif [ "$targ" = clobber ] 6610b444a8SGordon Rossthen 6710b444a8SGordon Ross (cd $SRC/uts && $make -k clobber_h) 6810b444a8SGordon Ross (cd $SRC/head && $make clobber) 6910b444a8SGordon Rossfi 7010b444a8SGordon Ross 7110b444a8SGordon Rossif [ "$targ" = install ] 7210b444a8SGordon Rossthen 7310b444a8SGordon Ross targ=install_h 7410b444a8SGordon Ross 7510b444a8SGordon Ross # Just the parts of "make sgs" we need, and 7610b444a8SGordon Ross # skip them if they appear to be done. 7710b444a8SGordon Ross # ... stuff under $SRC 7810b444a8SGordon Ross test -f $SRC/uts/common/sys/priv_names.h || 7910b444a8SGordon Ross (cd $SRC/uts && $make -k all_h) 8010b444a8SGordon Ross 8110b444a8SGordon Ross test -f $SRC/head/rpcsvc/nispasswd.h || 8210b444a8SGordon Ross (cd $SRC/head && $make -k install_h) 8310b444a8SGordon Ross 8410b444a8SGordon Ross # ... stuff under $ROOT (proto area) 8510b444a8SGordon Ross test -d $ROOT/usr/include/sys || 8610b444a8SGordon Ross (cd $SRC && $make rootdirs) 8710b444a8SGordon Ross test -f $ROOT/usr/include/sys/types.h || 8810b444a8SGordon Ross (cd $SRC/uts && $make -k install_h) 8910b444a8SGordon Ross test -f $ROOT/usr/include/rpcsvc/daemon_utils.h || 9010b444a8SGordon Ross (cd $SRC/head && $make install_h) 9110b444a8SGordon Ross 9210b444a8SGordon Ross # always update the sys headers to be safe 9310b444a8SGordon Ross (cd $SRC/uts/common/sys && $make -k install_h) 9410b444a8SGordon Ross 9510b444a8SGordon Rossfi 9610b444a8SGordon Ross 9710b444a8SGordon Ross# Need some library headers too... 9810b444a8SGordon Rossfor lib in \ 9910b444a8SGordon Ross libbsm \ 10010b444a8SGordon Ross libcmdutils \ 10110b444a8SGordon Ross libcryptoutil \ 10210b444a8SGordon Ross libdevid \ 10310b444a8SGordon Ross libdiskmgt \ 10410b444a8SGordon Ross libidmap \ 10510b444a8SGordon Ross libpam \ 10610b444a8SGordon Ross libsec \ 10710b444a8SGordon Ross libscf \ 10810b444a8SGordon Ross libshare \ 10910b444a8SGordon Ross libuutil \ 11010b444a8SGordon Ross libzpool \ 11110b444a8SGordon Ross libzfs_core \ 11210b444a8SGordon Ross libzfs \ 11310b444a8SGordon Ross libzfs_jni 11410b444a8SGordon Rossdo 11510b444a8SGordon Ross (cd $SRC/lib/$lib && $make $targ) 11610b444a8SGordon Rossdone 11710b444a8SGordon Ross # Should fix the Makefile here so all_h or install_h works. 11810b444a8SGordon Ross (cd $SRC/lib/libzpool/$cpu && $make ../common/zfs.h) 11910b444a8SGordon Ross} 12010b444a8SGordon Ross 12110b444a8SGordon Ross################################################################ 12210b444a8SGordon Ross 12310b444a8SGordon Rossdo_kern() { 12410b444a8SGordon Ross case $1 in 12510b444a8SGordon Ross lint) targ=modlintlib ;; 12610b444a8SGordon Ross *) targ=$1 ;; 12710b444a8SGordon Ross esac 12810b444a8SGordon Ross (cd $SRC/uts/$x/zfs && $make $targ) 12910b444a8SGordon Ross} 13010b444a8SGordon Ross 13110b444a8SGordon Ross################################################################ 13210b444a8SGordon Ross# 13310b444a8SGordon Ross# Build all libraries used by the other targets in here. 13410b444a8SGordon Ross# 13510b444a8SGordon Ross# Run this once (at least) in each new workspace where you 13610b444a8SGordon Ross# will run "make-zfs install", if you want to avoid linking 13710b444a8SGordon Ross# against the libraries from your build host. 13810b444a8SGordon Ross# 13910b444a8SGordon Rossdo_deplibs() { 14010b444a8SGordon Ross 14110b444a8SGordon Ross# install all the lib headers 14210b444a8SGordon Rossif [ "$1" = install ] ; then 14310b444a8SGordon Ross (cd $SRC/lib && $make install_h) 14410b444a8SGordon Rossfi 14510b444a8SGordon Ross 14610b444a8SGordon Ross# Wow, building libc takes a while. Really want that? 14710b444a8SGordon Rossfor lib in \ 14810b444a8SGordon Ross libc \ 14910b444a8SGordon Ross libavl \ 15010b444a8SGordon Ross libnvpair \ 15110b444a8SGordon Ross libsec \ 15210b444a8SGordon Ross libcmdutils \ 15310b444a8SGordon Ross libdevinfo \ 15410b444a8SGordon Ross libuutil \ 15510b444a8SGordon Ross libbrand \ 15610b444a8SGordon Ross libzonecfg \ 15710b444a8SGordon Ross libinetutil \ 15810b444a8SGordon Ross libdladm \ 15910b444a8SGordon Ross libdlpi \ 16010b444a8SGordon Ross libdiskmgt \ 16110b444a8SGordon Ross libumem \ 16210b444a8SGordon Ross libdisasm \ 16310b444a8SGordon Ross libidmap \ 16410b444a8SGordon Ross libdevid \ 16510b444a8SGordon Ross libsaveargs 16610b444a8SGordon Rossdo 16710b444a8SGordon Ross (cd $SRC/lib/$lib && $make $1) 16810b444a8SGordon Rossdone 16910b444a8SGordon Ross} 17010b444a8SGordon Ross 17110b444a8SGordon Ross################################################################ 17210b444a8SGordon Ross 17310b444a8SGordon Rossdo_libs() { 17410b444a8SGordon Ross 17510b444a8SGordon Rossfor lib in \ 17610b444a8SGordon Ross libavl \ 17710b444a8SGordon Ross libcmdutils \ 17810b444a8SGordon Ross libuutil \ 17910b444a8SGordon Ross libzpool \ 18010b444a8SGordon Ross libzfs_core \ 18110b444a8SGordon Ross libzfs \ 18210b444a8SGordon Ross libzfs_jni \ 18310b444a8SGordon Ross pyzfs 18410b444a8SGordon Rossdo 18510b444a8SGordon Ross (cd $SRC/lib/$lib && $make $1) 18610b444a8SGordon Rossdone 18710b444a8SGordon Ross(cd $SRC/lib/libshare && $make $1 PLUGINS=) 18810b444a8SGordon Ross} 18910b444a8SGordon Ross 19010b444a8SGordon Ross################################################################ 19110b444a8SGordon Ross 19210b444a8SGordon Rossdo_cmds() { 19310b444a8SGordon Ross 19410b444a8SGordon Rossfor cmd in \ 19510b444a8SGordon Ross availdevs \ 19610b444a8SGordon Ross isaexec \ 19710b444a8SGordon Ross fstyp \ 19810b444a8SGordon Ross zdb \ 19910b444a8SGordon Ross zfs \ 20010b444a8SGordon Ross zhack \ 20110b444a8SGordon Ross zinject \ 20210b444a8SGordon Ross zpool \ 20310b444a8SGordon Ross ztest \ 204*38aced4fSRichard Lowe zstreamdump 20510b444a8SGordon Rossdo 20610b444a8SGordon Ross (cd $SRC/cmd/$cmd && $make $1) 20710b444a8SGordon Rossdone 20810b444a8SGordon Ross 20910b444a8SGordon Rosscase $1 in 21010b444a8SGordon Rossinstall) 21110b444a8SGordon Ross # mount programs need fslib.o 21210b444a8SGordon Ross (cd $SRC/cmd/fs.d/zfs && $make $1) 21310b444a8SGordon Ross # Build just the ZFS devfsadm module 21410b444a8SGordon Ross (cd $SRC/cmd/devfsadm/$cpu && $make SUNW_zfs_link.so \ 21510b444a8SGordon Ross ${ROOT}/usr/lib/devfsadm/linkmod \ 21610b444a8SGordon Ross ${ROOT}/usr/lib/devfsadm/linkmod/SUNW_zfs_link.so ) 21710b444a8SGordon Ross ;; 21810b444a8SGordon Rossclean|clobber) 21910b444a8SGordon Ross (cd $SRC/cmd/fs.d/zfs && $make clobber) 22010b444a8SGordon Ross (cd $SRC/cmd/fs.d && $make ${1}_local) 22110b444a8SGordon Ross (cd $SRC/cmd/devfsadm && $make $1) 22210b444a8SGordon Ross ;; 22310b444a8SGordon Rossesac 22410b444a8SGordon Ross 22510b444a8SGordon Ross(cd $SRC/cmd/syseventd/modules/zfs_mod && $make $1) 22610b444a8SGordon Ross 22710b444a8SGordon Ross# Build the MDB modules, WITH the linktest 22810b444a8SGordon Ross(cd $SRC/cmd/mdb/tools && $make $1) 229b9538c21SGordon Ross 230b9538c21SGordon Ross# kmdb_arch is 64-bit only 231b9538c21SGordon Rossfor a in $kmdb_arch 23210b444a8SGordon Rossdo 23310b444a8SGordon Ross case $1 in 23410b444a8SGordon Ross install|lint) 23510b444a8SGordon Ross (cd $SRC/cmd/mdb/$x/$a/kmdb && 23610b444a8SGordon Ross $make kmdb_modlinktest.o ) 23710b444a8SGordon Ross ;; 23810b444a8SGordon Ross clean|clobber) 23910b444a8SGordon Ross (cd $SRC/cmd/mdb/$x/$a/kmdb && 24010b444a8SGordon Ross $make -k $1 ) 24110b444a8SGordon Ross ;; 24210b444a8SGordon Ross esac 24310b444a8SGordon Ross 24410b444a8SGordon Ross (cd $SRC/cmd/mdb/$x/$a/zfs && 24510b444a8SGordon Ross $make $1 KMDB_LINKTEST_ENABLE= ) 24610b444a8SGordon Ross 247b9538c21SGordon Rossdone 248b9538c21SGordon Ross 249b9538c21SGordon Ross# mdb_arch is both 32-bit & 64-bit 250b9538c21SGordon Rossfor a in $mdb_arch 251b9538c21SGordon Rossdo 25210b444a8SGordon Ross (cd $SRC/cmd/mdb/$x/$a/libzpool && 25310b444a8SGordon Ross $make $1 ) 25410b444a8SGordon Ross 25510b444a8SGordon Rossdone 25610b444a8SGordon Ross} 25710b444a8SGordon Ross 25810b444a8SGordon Ross################################################################ 25910b444a8SGordon Ross 26010b444a8SGordon Rossdo_mans() { 26110b444a8SGordon Ross 26210b444a8SGordon Ross case "$1" in 26310b444a8SGordon Ross install) 264bbf21555SRichard Lowe (cd $SRC/man/man8 && make \ 265bbf21555SRichard Lowe $ROOT/usr/share/man/man8/zdb.8 \ 266bbf21555SRichard Lowe $ROOT/usr/share/man/man8/zfs.8 \ 267bbf21555SRichard Lowe $ROOT/usr/share/man/man8/zfs-program.8 \ 268bbf21555SRichard Lowe $ROOT/usr/share/man/man8/zpool.8 \ 269bbf21555SRichard Lowe $ROOT/usr/share/man/man8/ztest.8 ) 270bbf21555SRichard Lowe (cd $SRC/man/man7 && make \ 271bbf21555SRichard Lowe $ROOT/usr/share/man/man7/zpool-features.7 ) 27210b444a8SGordon Ross ;; 27310b444a8SGordon Ross lint) 274bbf21555SRichard Lowe (cd $SRC/man/man8 && make zdb.8.check zfs.8.check zfs-program.8.check \ 275bbf21555SRichard Lowe zpool.8.check ztest.8.check) 276bbf21555SRichard Lowe (cd $SRC/man/man7 && make zpool-features.7.check) 27710b444a8SGordon Ross ;; 27810b444a8SGordon Ross *) 279bbf21555SRichard Lowe (cd $SRC/man/man8 && make $1) 280bbf21555SRichard Lowe (cd $SRC/man/man7 && make $) 28110b444a8SGordon Ross ;; 28210b444a8SGordon Ross esac 28310b444a8SGordon Ross} 28410b444a8SGordon Ross 28510b444a8SGordon Ross################################################################ 28610b444a8SGordon Ross# This builds $SRC/TAGS (and cscope.files) in a helpful order. 28710b444a8SGordon Ross 28810b444a8SGordon Rossdo_tags() { 28910b444a8SGordon Ross (cd $SRC ; 29010b444a8SGordon Ross find uts/common/sys -name '*.[ch]' -print |sort 29110b444a8SGordon Ross find uts/common/fs/zfs -name '*.[ch]' -print |sort 29210b444a8SGordon Ross find lib/libzpool -name '*.[ch]' -print |sort 29310b444a8SGordon Ross find lib/libzfs -name '*.[ch]' -print |sort 29410b444a8SGordon Ross find cmd/zpool -name '*.[ch]' -print |sort 29510b444a8SGordon Ross find cmd/zfs -name '*.[ch]' -print |sort 29610b444a8SGordon Ross find cmd/zdb -name '*.[ch]' -print |sort 29710b444a8SGordon Ross find cmd/zhack -name '*.[ch]' -print |sort 29810b444a8SGordon Ross find cmd/zinject -name '*.[ch]' -print |sort 29910b444a8SGordon Ross find cmd/ztest -name '*.[ch]' -print |sort 30010b444a8SGordon Ross find common/zfs -name '*.[ch]' -print |sort 30110b444a8SGordon Ross echo cmd/mdb/common/modules/zfs/zfs.c 30210b444a8SGordon Ross ) > $SRC/cscope.files 30310b444a8SGordon Ross 30410b444a8SGordon Ross (cd $SRC ; 30510b444a8SGordon Ross exctags -e --langmap=c:+.ndl -h ndl -L - < cscope.files 30610b444a8SGordon Ross cscope -b ) 30710b444a8SGordon Ross} 30810b444a8SGordon Ross 30910b444a8SGordon Ross################################################################ 31010b444a8SGordon Ross# This creates a tarfile one can use to update a test machine. 31110b444a8SGordon Ross 31210b444a8SGordon Rossdo_tar() { 31310b444a8SGordon Ross git_rev=`git rev-parse --short=8 HEAD` 31410b444a8SGordon Ross files=" 31510b444a8SGordon Rosskernel/drv/$arch64/zfs 31610b444a8SGordon Rosskernel/fs/$arch64/zfs 31710b444a8SGordon Rosskernel/kmdb/$arch64/zfs 31810b444a8SGordon Rosslib/$arch64/libzfs.so.1 31910b444a8SGordon Rosslib/$arch64/libzfs_core.so.1 32010b444a8SGordon Rosslib/libzfs.so.1 32110b444a8SGordon Rosslib/libzfs_core.so.1 32210b444a8SGordon Rossusr/bin/$arch32/ztest 32310b444a8SGordon Rossusr/bin/$arch64/ztest 32410b444a8SGordon Rossusr/lib/$arch64/libzfs_jni.so.1 32510b444a8SGordon Rossusr/lib/$arch64/libzpool.so.1 32610b444a8SGordon Rossusr/lib/devfsadm/linkmod/SUNW_zfs_link.so 32710b444a8SGordon Rossusr/lib/fs/zfs/bootinstall 32810b444a8SGordon Rossusr/lib/fs/zfs/fstyp.so.1 32910b444a8SGordon Rossusr/lib/libzfs_jni.so.1 33010b444a8SGordon Rossusr/lib/libzpool.so.1 33110b444a8SGordon Rossusr/lib/mdb/kvm/$arch64/zfs.so 33210b444a8SGordon Rossusr/lib/mdb/proc/$arch64/libzpool.so 33310b444a8SGordon Rossusr/lib/mdb/proc/libzpool.so 33410b444a8SGordon Rosssbin/zfs 33510b444a8SGordon Rosssbin/zpool 33610b444a8SGordon Rossusr/lib/sysevent/modules/zfs_mod.so 33710b444a8SGordon Rossusr/lib/zfs/availdevs 33810b444a8SGordon Rossusr/sbin/$arch32/zdb 33910b444a8SGordon Rossusr/sbin/$arch64/zdb 34010b444a8SGordon Rossusr/sbin/$arch32/zhack 34110b444a8SGordon Rossusr/sbin/$arch64/zhack 34210b444a8SGordon Rossusr/sbin/$arch32/zinject 34310b444a8SGordon Rossusr/sbin/$arch64/zinject 34410b444a8SGordon Rossusr/sbin/zstreamdump 345bbf21555SRichard Loweusr/share/man/man8/zdb.8 346bbf21555SRichard Loweusr/share/man/man8/zfs.8 347bbf21555SRichard Loweusr/share/man/man8/zfs-program.8 348bbf21555SRichard Loweusr/share/man/man8/zpool.8 349bbf21555SRichard Loweusr/share/man/man8/ztest.8 350bbf21555SRichard Loweusr/share/man/man7/zpool-features.7 35110b444a8SGordon Ross" 35210b444a8SGordon Ross (cd $ROOT && tar cfj ../../zfs-${git_rev}.tar.bz2 $files) 35310b444a8SGordon Ross} 35410b444a8SGordon Ross 35510b444a8SGordon Ross################################################################ 35610b444a8SGordon Ross 35710b444a8SGordon Rossif [ "$1" = "" ]; then 35810b444a8SGordon Ross set '?' # force usage 35910b444a8SGordon Rossfi 36010b444a8SGordon Ross 36110b444a8SGordon Rossset -x 36210b444a8SGordon Ross 36310b444a8SGordon Rossfor arg 36410b444a8SGordon Rossdo 36510b444a8SGordon Ross case "$arg" in 36610b444a8SGordon Ross install) 36710b444a8SGordon Ross build_tools 36810b444a8SGordon Ross set -e 36910b444a8SGordon Ross do_hdrs $arg 37010b444a8SGordon Ross do_kern $arg 37110b444a8SGordon Ross do_libs $arg 37210b444a8SGordon Ross do_cmds $arg 37310b444a8SGordon Ross do_mans $arg 37410b444a8SGordon Ross ;; 37510b444a8SGordon Ross lint) 37610b444a8SGordon Ross do_kern $arg 37710b444a8SGordon Ross do_libs $arg 37810b444a8SGordon Ross do_cmds $arg 37910b444a8SGordon Ross do_mans $arg 38010b444a8SGordon Ross ;; 38110b444a8SGordon Ross clean) 38210b444a8SGordon Ross do_mans $arg 38310b444a8SGordon Ross do_cmds $arg 38410b444a8SGordon Ross do_libs $arg 38510b444a8SGordon Ross do_kern $arg 38610b444a8SGordon Ross ;; 38710b444a8SGordon Ross clobber) 38810b444a8SGordon Ross do_mans $arg 38910b444a8SGordon Ross do_cmds $arg 39010b444a8SGordon Ross do_libs $arg 39110b444a8SGordon Ross do_kern $arg 39210b444a8SGordon Ross do_hdrs $arg 39310b444a8SGordon Ross clobber_tools 39410b444a8SGordon Ross ;; 39510b444a8SGordon Ross deplibs) 39610b444a8SGordon Ross build_tools 39710b444a8SGordon Ross set -e 39810b444a8SGordon Ross do_hdrs install 39910b444a8SGordon Ross do_deplibs install 40010b444a8SGordon Ross ;; 40110b444a8SGordon Ross tags) 40210b444a8SGordon Ross do_tags 40310b444a8SGordon Ross ;; 40410b444a8SGordon Ross tar) 40510b444a8SGordon Ross do_tar 40610b444a8SGordon Ross ;; 40710b444a8SGordon Ross *) 40810b444a8SGordon Ross echo "Usage: $0 {install|lint|clean|clobber|deplibs|tags|tar}"; 40910b444a8SGordon Ross exit 1; 41010b444a8SGordon Ross ;; 41110b444a8SGordon Ross esac 41210b444a8SGordon Rossdone 413