xref: /illumos-gate/usr/src/tools/quick/make-idmap (revision a774f103)
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#
14*a88046d1SMatt Barden# 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# Do this if you want to use dbx or gdb
2410b444a8SGordon Ross# export SOURCEDEBUG=yes
2510b444a8SGordon Ross
2610b444a8SGordon Ross[ -n "$SRC" ] || {
2710b444a8SGordon Ross  echo "SRC not set.  Run 'ws' or 'bldenv' first."
2810b444a8SGordon Ross  exit 1
2910b444a8SGordon Ross}
3010b444a8SGordon Ross
3110b444a8SGordon Rosscpu=`uname -p`
3210b444a8SGordon Rosscase $cpu in
3310b444a8SGordon Rossi386)
3410b444a8SGordon Ross	x=intel
3510b444a8SGordon Ross	mdb_arch="ia32 amd64"
3610b444a8SGordon Ross	arch64=amd64
3710b444a8SGordon Ross	;;
3810b444a8SGordon Rosssparc)
3910b444a8SGordon Ross	x=sparc
4010b444a8SGordon Ross	mdb_arch=v9
4110b444a8SGordon Ross	arch64=sparcv9
4210b444a8SGordon Ross	;;
4310b444a8SGordon Ross*)  echo "Huh?" ; exit 1;;
4410b444a8SGordon Rossesac
4510b444a8SGordon Ross
4610b444a8SGordon Ross################################################################
4710b444a8SGordon Ross
4810b444a8SGordon Rossbuild_tools() {
4910b444a8SGordon Ross  test -f $SRC/tools/proto/root_i386-nd/opt/onbld/bin/genoffsets ||
5010b444a8SGordon Ross    (cd $SRC/tools && $make install)
5110b444a8SGordon Ross  (cd $SRC/common/mapfiles; $make install)
5210b444a8SGordon Ross}
5310b444a8SGordon Ross
5410b444a8SGordon Rossclobber_tools() {
5510b444a8SGordon Ross  (cd $SRC/tools && $make clobber)
5610b444a8SGordon Ross  (cd $SRC/common/mapfiles; $make clobber)
5710b444a8SGordon Ross}
5810b444a8SGordon Ross
5910b444a8SGordon Ross################################################################
6010b444a8SGordon Ross
6110b444a8SGordon Rossdo_hdrs() {
6210b444a8SGordon Ross
6310b444a8SGordon Rosstarg=$1
6410b444a8SGordon Rossif [ "$targ" = clobber ]
6510b444a8SGordon Rossthen
6610b444a8SGordon Ross  (cd $SRC/uts && $make -k clobber_h)
6710b444a8SGordon Ross  (cd $SRC/head && $make clobber)
6810b444a8SGordon Rossfi
6910b444a8SGordon Ross
7010b444a8SGordon Rossif [ "$targ" = install ]
7110b444a8SGordon Rossthen
7210b444a8SGordon Ross  targ=install_h
7310b444a8SGordon Ross
7410b444a8SGordon Ross  # Just the parts of "make sgs" we need, and
7510b444a8SGordon Ross  # skip them if they appear to be done.
7610b444a8SGordon Ross  # ... stuff under $SRC
7710b444a8SGordon Ross  test -f $SRC/uts/common/sys/priv_names.h ||
7810b444a8SGordon Ross    (cd $SRC/uts && $make -k all_h)
7910b444a8SGordon Ross
8010b444a8SGordon Ross  test -f $SRC/head/rpcsvc/nispasswd.h ||
8110b444a8SGordon Ross    (cd $SRC/head && $make -k install_h)
8210b444a8SGordon Ross
8310b444a8SGordon Ross  # ... stuff under $ROOT (proto area)
8410b444a8SGordon Ross  test -d $ROOT/usr/include/sys ||
8510b444a8SGordon Ross    (cd $SRC && $make rootdirs)
8610b444a8SGordon Ross  test -f $ROOT/usr/include/sys/types.h ||
8710b444a8SGordon Ross    (cd $SRC/uts && $make -k install_h)
8810b444a8SGordon Ross  test -f $ROOT/usr/include/rpcsvc/daemon_utils.h ||
8910b444a8SGordon Ross    (cd $SRC/head && $make install_h)
9010b444a8SGordon Ross
9110b444a8SGordon Ross  # system and smbsrv headers (we need to build libsmb)
9210b444a8SGordon Ross  (cd $SRC/uts/common/sys && $make -k install_h)
9310b444a8SGordon Ross  (cd $SRC/uts/common/smb && $make -k install_h)
9410b444a8SGordon Ross  (cd $SRC/uts/common/smbsrv && $make -k install_h)
9510b444a8SGordon Ross
9610b444a8SGordon Rossfi
9710b444a8SGordon Ross
9810b444a8SGordon Ross# Need some library headers too...
9910b444a8SGordon Rossfor lib in \
100b3700b07SGordon Ross  libads \
10110b444a8SGordon Ross  libbsm \
10210b444a8SGordon Ross  libcmdutils \
10310b444a8SGordon Ross  libcryptoutil \
10410b444a8SGordon Ross  libdevid \
10510b444a8SGordon Ross  libgss \
10610b444a8SGordon Ross  libkrb5 \
10710b444a8SGordon Ross  libldap5 \
10810b444a8SGordon Ross  libidmap \
10910b444a8SGordon Ross  libsmbfs \
11010b444a8SGordon Ross  libsqlite \
11110b444a8SGordon Ross  libuutil
11210b444a8SGordon Rossdo
11310b444a8SGordon Ross  (cd $SRC/lib/$lib && $make $targ)
11410b444a8SGordon Rossdone
11510b444a8SGordon Ross}
11610b444a8SGordon Ross
11710b444a8SGordon Ross################################################################
11810b444a8SGordon Ross
11910b444a8SGordon Rossdo_kern() {
12010b444a8SGordon Ross  case $1 in
12110b444a8SGordon Ross  lint) targ=modlintlib ;;
12210b444a8SGordon Ross  *) targ=$1 ;;
12310b444a8SGordon Ross  esac
12410b444a8SGordon Ross  ( unset SOURCEDEBUG ;
12510b444a8SGordon Ross  (cd $SRC/uts/$x/idmap && $make $targ) )
12610b444a8SGordon Ross}
12710b444a8SGordon Ross
12810b444a8SGordon Ross################################################################
12910b444a8SGordon Ross
13010b444a8SGordon Rossdo_libs() {
13110b444a8SGordon Ross
13210b444a8SGordon Rossfor lib in \
13310b444a8SGordon Ross  libavl \
13410b444a8SGordon Ross  libcmdutils \
13510b444a8SGordon Ross  libldap5 \
13610b444a8SGordon Ross  libadutils \
13710b444a8SGordon Ross  libuutil \
13810b444a8SGordon Ross  libidmap \
139b3700b07SGordon Ross  libads \
14010b444a8SGordon Ross  libsmbfs \
14110b444a8SGordon Ross  libsqlite \
14210b444a8SGordon Ross  nsswitch/ad
14310b444a8SGordon Rossdo
14410b444a8SGordon Ross  (cd $SRC/lib/$lib && $make $1)
14510b444a8SGordon Rossdone
14610b444a8SGordon Ross
14710b444a8SGordon Ross# need libsmb for cmd/idmap/idmapd (and libsmbfs for libsmb)
14810b444a8SGordon Ross(cd $SRC/lib/smbsrv/libsmb && $make $1)
14910b444a8SGordon Ross
15010b444a8SGordon Ross}
15110b444a8SGordon Ross
15210b444a8SGordon Ross################################################################
15310b444a8SGordon Ross
15410b444a8SGordon Rossdo_cmds() {
15510b444a8SGordon Ross
15610b444a8SGordon Ross(cd $SRC/cmd/idmap && $make $1)
15710b444a8SGordon Ross
15810b444a8SGordon Ross}
15910b444a8SGordon Ross
16010b444a8SGordon Ross
16110b444a8SGordon Ross################################################################
16210b444a8SGordon Ross# This builds $SRC/TAGS (and cscope.files) in a helpful order.
16310b444a8SGordon Ross
16410b444a8SGordon Rossdo_tags() {
16510b444a8SGordon Ross	(cd $SRC ;
16610b444a8SGordon Ross	find uts/common/sys -name '*.[ch]' -print |sort
16710b444a8SGordon Ross	find uts/common/net -name '*.[ch]' -print |sort
16810b444a8SGordon Ross	find uts/common/netinet -name '*.[ch]' -print |sort
16910b444a8SGordon Ross	find uts/common/rpcsvc -name '*.[ch]' -print |sort
17010b444a8SGordon Ross	find uts/common/idmap -name '*.[ch]' -print |sort
17110b444a8SGordon Ross	find head -name '*.h' -print |sort
17210b444a8SGordon Ross	find lib/libidmap -name '*.[ch]' -print |sort
17310b444a8SGordon Ross	find lib/libadutils -name '*.[ch]' -print |sort
17410b444a8SGordon Ross	find lib/libldap5 -name '*.[ch]' -print |sort
17510b444a8SGordon Ross	find cmd/idmap -name '*.[ch]' -print |sort
17610b444a8SGordon Ross	) > $SRC/cscope.files
17710b444a8SGordon Ross
17810b444a8SGordon Ross	(cd $SRC ;
17910b444a8SGordon Ross	exctags -e --langmap=c:+.ndl -h ndl -L - < cscope.files
18010b444a8SGordon Ross	cscope -b )
18110b444a8SGordon Ross}
18210b444a8SGordon Ross
18310b444a8SGordon Ross################################################################
18410b444a8SGordon Ross# This creates a tarfile one can use to update a test machine.
18510b444a8SGordon Ross
18610b444a8SGordon Rossdo_tar() {
18710b444a8SGordon Ross	git_rev=`git rev-parse --short=8 HEAD`
18810b444a8SGordon Ross	files="
189*a88046d1SMatt Bardenkernel/misc/amd64/idmap
19010b444a8SGordon Rosslib/svc/manifest/system/idmap.xml
19110b444a8SGordon Rossusr/lib/idmapd
192b3700b07SGordon Rossusr/lib/libads.so.1
193b3700b07SGordon Rossusr/lib/$arch64/libads.so.1
19410b444a8SGordon Rossusr/lib/libadutils.so.1
19510b444a8SGordon Rossusr/lib/$arch64/libadutils.so.1
19610b444a8SGordon Rossusr/lib/libidmap.so.1
19710b444a8SGordon Rossusr/lib/$arch64/libidmap.so.1
19810b444a8SGordon Rossusr/lib/libldap.so.5
19910b444a8SGordon Rossusr/lib/$arch64/libldap.so.5
20010b444a8SGordon Rossusr/lib/nss_ad.so.1
20110b444a8SGordon Rossusr/lib/$arch64/nss_ad.so.1
20210b444a8SGordon Rossusr/bin/test-getdc
20310b444a8SGordon Rossusr/sbin/idmap
20410b444a8SGordon Rossusr/sbin/nltest
20510b444a8SGordon Ross"
20610b444a8SGordon Ross
20710b444a8SGordon Ross	(cd $ROOT && tar cfj ../../idmap-${git_rev}.tar.bz2 $files)
20810b444a8SGordon Ross}
20910b444a8SGordon Ross
21010b444a8SGordon Ross################################################################
21110b444a8SGordon Ross
21210b444a8SGordon Rossif [ "$1" = "" ]; then
21310b444a8SGordon Ross  set '?' # force usage
21410b444a8SGordon Rossfi
21510b444a8SGordon Ross
21610b444a8SGordon Rossset -x
21710b444a8SGordon Ross
21810b444a8SGordon Rossfor arg
21910b444a8SGordon Rossdo
22010b444a8SGordon Ross  case "$arg" in
22110b444a8SGordon Ross  build|install)
22210b444a8SGordon Ross    arg=install
22310b444a8SGordon Ross    build_tools
22410b444a8SGordon Ross    set -e
22510b444a8SGordon Ross    do_hdrs $arg
22610b444a8SGordon Ross    do_kern $arg
22710b444a8SGordon Ross    do_libs $arg
22810b444a8SGordon Ross    do_cmds $arg
22910b444a8SGordon Ross    ;;
23010b444a8SGordon Ross  lint)
23110b444a8SGordon Ross    do_kern $arg
23210b444a8SGordon Ross    do_libs $arg
23310b444a8SGordon Ross    do_cmds $arg
23410b444a8SGordon Ross    ;;
23510b444a8SGordon Ross  clean)
23610b444a8SGordon Ross    do_cmds $arg
23710b444a8SGordon Ross    do_libs $arg
23810b444a8SGordon Ross    do_kern $arg
23910b444a8SGordon Ross    ;;
24010b444a8SGordon Ross  clobber)
24110b444a8SGordon Ross    do_cmds $arg
24210b444a8SGordon Ross    do_libs $arg
24310b444a8SGordon Ross    do_kern $arg
24410b444a8SGordon Ross    do_hdrs $arg
24510b444a8SGordon Ross    clobber_tools
24610b444a8SGordon Ross    ;;
24710b444a8SGordon Ross  tags)
24810b444a8SGordon Ross    do_tags
24910b444a8SGordon Ross    ;;
25010b444a8SGordon Ross  tar)
25110b444a8SGordon Ross    do_tar
25210b444a8SGordon Ross    ;;
25310b444a8SGordon Ross  *)
25410b444a8SGordon Ross    echo "Usage: $0 {build|lint|clean|clobber|tags|tar}";
25510b444a8SGordon Ross    exit 1;
25610b444a8SGordon Ross    ;;
25710b444a8SGordon Ross  esac
25810b444a8SGordon Rossdone
259