xref: /freebsd/contrib/bmake/mk/install-mk (revision 3cbdda60ff509264469d6894d4e838b0d2ccea5c)
1*3cbdda60SSimon J. Gerraty:
2*3cbdda60SSimon J. Gerraty# NAME:
3*3cbdda60SSimon J. Gerraty#	install-mk - install mk files
4*3cbdda60SSimon J. Gerraty#
5*3cbdda60SSimon J. Gerraty# SYNOPSIS:
6*3cbdda60SSimon J. Gerraty#	install-mk [options] [var=val] [dest]
7*3cbdda60SSimon J. Gerraty#
8*3cbdda60SSimon J. Gerraty# DESCRIPTION:
9*3cbdda60SSimon J. Gerraty#	This tool installs mk files in a semi-intelligent manner into
10*3cbdda60SSimon J. Gerraty#	"dest".
11*3cbdda60SSimon J. Gerraty#
12*3cbdda60SSimon J. Gerraty#	Options:
13*3cbdda60SSimon J. Gerraty#
14*3cbdda60SSimon J. Gerraty#	-n	just say what we want to do, but don't touch anything.
15*3cbdda60SSimon J. Gerraty#
16*3cbdda60SSimon J. Gerraty#	-f	use -f when copying sys,mk.
17*3cbdda60SSimon J. Gerraty#
18*3cbdda60SSimon J. Gerraty#	-v	be verbose
19*3cbdda60SSimon J. Gerraty#
20*3cbdda60SSimon J. Gerraty#	-q	be quiet
21*3cbdda60SSimon J. Gerraty#
22*3cbdda60SSimon J. Gerraty#	-m "mode"
23*3cbdda60SSimon J. Gerraty#		Use "mode" for installed files (444).
24*3cbdda60SSimon J. Gerraty#
25*3cbdda60SSimon J. Gerraty#	-o "owner"
26*3cbdda60SSimon J. Gerraty#		Use "owner" for installed files.
27*3cbdda60SSimon J. Gerraty#
28*3cbdda60SSimon J. Gerraty#	-g "group"
29*3cbdda60SSimon J. Gerraty#		Use "group" for installed files.
30*3cbdda60SSimon J. Gerraty#
31*3cbdda60SSimon J. Gerraty#	var=val
32*3cbdda60SSimon J. Gerraty#		Set "var" to "val".  See below.
33*3cbdda60SSimon J. Gerraty#
34*3cbdda60SSimon J. Gerraty#	All our *.mk files are copied to "dest" with appropriate
35*3cbdda60SSimon J. Gerraty#	ownership and permissions.
36*3cbdda60SSimon J. Gerraty#
37*3cbdda60SSimon J. Gerraty#	By default if a sys.mk can be found in a standard location
38*3cbdda60SSimon J. Gerraty#	(that bmake will find) then no sys.mk will be put in "dest".
39*3cbdda60SSimon J. Gerraty#
40*3cbdda60SSimon J. Gerraty#	SKIP_SYS_MK:
41*3cbdda60SSimon J. Gerraty#		If set, we will avoid installing our 'sys.mk'
42*3cbdda60SSimon J. Gerraty#		This is probably a bad idea.
43*3cbdda60SSimon J. Gerraty#
44*3cbdda60SSimon J. Gerraty#	SKIP_BSD_MK:
45*3cbdda60SSimon J. Gerraty#		If set, we will skip making bsd.*.mk links to *.mk
46*3cbdda60SSimon J. Gerraty#
47*3cbdda60SSimon J. Gerraty#	sys.mk:
48*3cbdda60SSimon J. Gerraty#
49*3cbdda60SSimon J. Gerraty#	By default (and provided we are not installing to the system
50*3cbdda60SSimon J. Gerraty#	mk dir - '/usr/share/mk') we install our own 'sys.mk' which
51*3cbdda60SSimon J. Gerraty#	includes a sys specific file, or a generic one.
52*3cbdda60SSimon J. Gerraty#
53*3cbdda60SSimon J. Gerraty#
54*3cbdda60SSimon J. Gerraty# AUTHOR:
55*3cbdda60SSimon J. Gerraty#       Simon J. Gerraty <sjg@crufty.net>
56*3cbdda60SSimon J. Gerraty
57*3cbdda60SSimon J. Gerraty# RCSid:
58*3cbdda60SSimon J. Gerraty#	$Id: install-mk,v 1.83 2013/01/24 01:02:23 sjg Exp $
59*3cbdda60SSimon J. Gerraty#
60*3cbdda60SSimon J. Gerraty#	@(#) Copyright (c) 1994 Simon J. Gerraty
61*3cbdda60SSimon J. Gerraty#
62*3cbdda60SSimon J. Gerraty#	This file is provided in the hope that it will
63*3cbdda60SSimon J. Gerraty#	be of use.  There is absolutely NO WARRANTY.
64*3cbdda60SSimon J. Gerraty#	Permission to copy, redistribute or otherwise
65*3cbdda60SSimon J. Gerraty#	use this file is hereby granted provided that
66*3cbdda60SSimon J. Gerraty#	the above copyright notice and this notice are
67*3cbdda60SSimon J. Gerraty#	left intact.
68*3cbdda60SSimon J. Gerraty#
69*3cbdda60SSimon J. Gerraty#	Please send copies of changes and bug-fixes to:
70*3cbdda60SSimon J. Gerraty#	sjg@crufty.net
71*3cbdda60SSimon J. Gerraty#
72*3cbdda60SSimon J. Gerraty
73*3cbdda60SSimon J. GerratyMK_VERSION=20130123
74*3cbdda60SSimon J. GerratyOWNER=
75*3cbdda60SSimon J. GerratyGROUP=
76*3cbdda60SSimon J. GerratyMODE=444
77*3cbdda60SSimon J. GerratyBINMODE=555
78*3cbdda60SSimon J. GerratyECHO=:
79*3cbdda60SSimon J. GerratySKIP=
80*3cbdda60SSimon J. Gerratycp_f=-f
81*3cbdda60SSimon J. Gerraty
82*3cbdda60SSimon J. Gerratywhile :
83*3cbdda60SSimon J. Gerratydo
84*3cbdda60SSimon J. Gerraty	case "$1" in
85*3cbdda60SSimon J. Gerraty	*=*) eval "$1"; shift;;
86*3cbdda60SSimon J. Gerraty	+f) cp_f=; shift;;
87*3cbdda60SSimon J. Gerraty	-f) cp_f=-f; shift;;
88*3cbdda60SSimon J. Gerraty	-m) MODE=$2; shift 2;;
89*3cbdda60SSimon J. Gerraty	-o) OWNER=$2; shift 2;;
90*3cbdda60SSimon J. Gerraty	-g) GROUP=$2; shift 2;;
91*3cbdda60SSimon J. Gerraty	-v) ECHO=echo; shift;;
92*3cbdda60SSimon J. Gerraty	-q) ECHO=:; shift;;
93*3cbdda60SSimon J. Gerraty	-n) ECHO=echo SKIP=:; shift;;
94*3cbdda60SSimon J. Gerraty	--) shift; break;;
95*3cbdda60SSimon J. Gerraty	*) break;;
96*3cbdda60SSimon J. Gerraty	esac
97*3cbdda60SSimon J. Gerratydone
98*3cbdda60SSimon J. Gerraty
99*3cbdda60SSimon J. Gerratycase $# in
100*3cbdda60SSimon J. Gerraty0)	echo "$0 [options] <destination> [<os>]"
101*3cbdda60SSimon J. Gerraty	echo "eg."
102*3cbdda60SSimon J. Gerraty	echo "$0 -o bin -g bin -m 444 /usr/local/share/mk"
103*3cbdda60SSimon J. Gerraty	exit 1
104*3cbdda60SSimon J. Gerraty	;;
105*3cbdda60SSimon J. Gerratyesac
106*3cbdda60SSimon J. Gerratydest=$1
107*3cbdda60SSimon J. Gerratyos=${2:-`uname`}
108*3cbdda60SSimon J. Gerratyosrel=${3:-`uname -r`}
109*3cbdda60SSimon J. Gerraty
110*3cbdda60SSimon J. GerratyDo() {
111*3cbdda60SSimon J. Gerraty	$ECHO "$@"
112*3cbdda60SSimon J. Gerraty	$SKIP "$@"
113*3cbdda60SSimon J. Gerraty}
114*3cbdda60SSimon J. Gerraty
115*3cbdda60SSimon J. GerratyError() {
116*3cbdda60SSimon J. Gerraty	echo "ERROR: $@" >&2
117*3cbdda60SSimon J. Gerraty	exit 1
118*3cbdda60SSimon J. Gerraty}
119*3cbdda60SSimon J. Gerraty
120*3cbdda60SSimon J. GerratyWarning() {
121*3cbdda60SSimon J. Gerraty	echo "WARNING: $@" >&2
122*3cbdda60SSimon J. Gerraty}
123*3cbdda60SSimon J. Gerraty
124*3cbdda60SSimon J. Gerraty[ "$FORCE_SYS_MK" ] && Warning "ignoring: FORCE_{BSD,SYS}_MK (no longer supported)"
125*3cbdda60SSimon J. Gerraty
126*3cbdda60SSimon J. GerratySYS_MK_DIR=${SYS_MK_DIR:-/usr/share/mk}
127*3cbdda60SSimon J. GerratySYS_MK=${SYS_MK:-$SYS_MK_DIR/sys.mk}
128*3cbdda60SSimon J. Gerraty
129*3cbdda60SSimon J. Gerratyrealpath() {
130*3cbdda60SSimon J. Gerraty	[ -d $1 ] && cd $1 && 'pwd' && return
131*3cbdda60SSimon J. Gerraty	echo $1
132*3cbdda60SSimon J. Gerraty}
133*3cbdda60SSimon J. Gerraty
134*3cbdda60SSimon J. Gerratyif [ -s $SYS_MK -a -d $dest ]; then
135*3cbdda60SSimon J. Gerraty	# if this is a BSD system we don't want to touch $SYS_MK
136*3cbdda60SSimon J. Gerraty	dest=`realpath $dest`
137*3cbdda60SSimon J. Gerraty	sys_mk_dir=`realpath $SYS_MK_DIR`
138*3cbdda60SSimon J. Gerraty	if [ $dest = $sys_mk_dir ]; then
139*3cbdda60SSimon J. Gerraty		case "$os" in
140*3cbdda60SSimon J. Gerraty		*BSD*)	SKIP_SYS_MK=:
141*3cbdda60SSimon J. Gerraty			SKIP_BSD_MK=:
142*3cbdda60SSimon J. Gerraty			;;
143*3cbdda60SSimon J. Gerraty		*)	# could be fake?
144*3cbdda60SSimon J. Gerraty			if [ ! -d $dest/sys -a ! -s $dest/Generic.sys.mk ]; then
145*3cbdda60SSimon J. Gerraty				SKIP_SYS_MK=: # play safe
146*3cbdda60SSimon J. Gerraty				SKIP_BSD_MK=:
147*3cbdda60SSimon J. Gerraty			fi
148*3cbdda60SSimon J. Gerraty			;;
149*3cbdda60SSimon J. Gerraty		esac
150*3cbdda60SSimon J. Gerraty	fi
151*3cbdda60SSimon J. Gerratyfi
152*3cbdda60SSimon J. Gerraty
153*3cbdda60SSimon J. Gerraty[ -d $dest/sys ] || Do mkdir -p $dest/sys
154*3cbdda60SSimon J. Gerraty[ -d $dest/sys ] || Do mkdir $dest/sys || exit 1
155*3cbdda60SSimon J. Gerraty[ -z "$SKIP" ] && dest=`realpath $dest`
156*3cbdda60SSimon J. Gerraty
157*3cbdda60SSimon J. Gerratycd `dirname $0`
158*3cbdda60SSimon J. Gerratymksrc=`'pwd'`
159*3cbdda60SSimon J. Gerratyif [ $mksrc = $dest ]; then
160*3cbdda60SSimon J. Gerraty	SKIP_MKFILES=:
161*3cbdda60SSimon J. Gerratyelse
162*3cbdda60SSimon J. Gerraty	# we do not install the examples
163*3cbdda60SSimon J. Gerraty	mk_files=`grep '^[a-z].*\.mk' FILES | egrep -v '(examples/|^sys\.mk|sys/)'`
164*3cbdda60SSimon J. Gerraty	mk_scripts=`egrep '^[a-z].*\.(sh|py)' FILES | egrep -v '/'`
165*3cbdda60SSimon J. Gerraty	sys_mk_files=`grep 'sys/.*\.mk' FILES`
166*3cbdda60SSimon J. Gerraty	SKIP_MKFILES=
167*3cbdda60SSimon J. Gerraty	[ -z "$SKIP_SYS_MK" ] && mk_files="sys.mk $mk_files"
168*3cbdda60SSimon J. Gerratyfi
169*3cbdda60SSimon J. Gerraty$SKIP_MKFILES Do cp $cp_f $mk_files $dest
170*3cbdda60SSimon J. Gerraty$SKIP_MKFILES Do cp $cp_f $sys_mk_files $dest/sys
171*3cbdda60SSimon J. Gerraty$SKIP_MKFILES Do cp $cp_f $mk_scripts $dest
172*3cbdda60SSimon J. Gerraty$SKIP cd $dest
173*3cbdda60SSimon J. Gerraty$SKIP_MKFILES Do chmod $MODE $mk_files $sys_mk_files
174*3cbdda60SSimon J. Gerraty$SKIP_MKFILES Do chmod $BINMODE $mk_scripts
175*3cbdda60SSimon J. Gerraty[ "$GROUP" ] && $SKIP_MKFILES Do chgrp $GROUP $mk_files $sys_mk_files
176*3cbdda60SSimon J. Gerraty[ "$OWNER" ] && $SKIP_MKFILES Do chown $OWNER $mk_files $sys_mk_files
177*3cbdda60SSimon J. Gerraty# if this is a BSD system the bsd.*.mk should exist and be used.
178*3cbdda60SSimon J. Gerratyif [ -z "$SKIP_BSD_MK" ]; then
179*3cbdda60SSimon J. Gerraty	for f in dep doc init lib links man nls obj own prog subdir
180*3cbdda60SSimon J. Gerraty	do
181*3cbdda60SSimon J. Gerraty		b=bsd.$f.mk
182*3cbdda60SSimon J. Gerraty		[ -s $b ] || Do ln -s $f.mk $b
183*3cbdda60SSimon J. Gerraty	done
184*3cbdda60SSimon J. Gerratyfi
185*3cbdda60SSimon J. Gerratyexit 0
186