xref: /freebsd/contrib/bmake/mk/install-mk (revision b4894eca1ade4e9cec9afbe76021305d23bf914a)
13cbdda60SSimon J. Gerraty:
23cbdda60SSimon J. Gerraty# NAME:
33cbdda60SSimon J. Gerraty#	install-mk - install mk files
43cbdda60SSimon J. Gerraty#
53cbdda60SSimon J. Gerraty# SYNOPSIS:
63cbdda60SSimon J. Gerraty#	install-mk [options] [var=val] [dest]
73cbdda60SSimon J. Gerraty#
83cbdda60SSimon J. Gerraty# DESCRIPTION:
93cbdda60SSimon J. Gerraty#	This tool installs mk files in a semi-intelligent manner into
103cbdda60SSimon J. Gerraty#	"dest".
113cbdda60SSimon J. Gerraty#
123cbdda60SSimon J. Gerraty#	Options:
133cbdda60SSimon J. Gerraty#
143cbdda60SSimon J. Gerraty#	-n	just say what we want to do, but don't touch anything.
153cbdda60SSimon J. Gerraty#
163cbdda60SSimon J. Gerraty#	-f	use -f when copying sys,mk.
173cbdda60SSimon J. Gerraty#
183cbdda60SSimon J. Gerraty#	-v	be verbose
193cbdda60SSimon J. Gerraty#
203cbdda60SSimon J. Gerraty#	-q	be quiet
213cbdda60SSimon J. Gerraty#
223cbdda60SSimon J. Gerraty#	-m "mode"
233cbdda60SSimon J. Gerraty#		Use "mode" for installed files (444).
243cbdda60SSimon J. Gerraty#
253cbdda60SSimon J. Gerraty#	-o "owner"
263cbdda60SSimon J. Gerraty#		Use "owner" for installed files.
273cbdda60SSimon J. Gerraty#
283cbdda60SSimon J. Gerraty#	-g "group"
293cbdda60SSimon J. Gerraty#		Use "group" for installed files.
303cbdda60SSimon J. Gerraty#
31dc1b8c9aSSimon J. Gerraty#	-U "umask"
32dc1b8c9aSSimon J. Gerraty#		Use "umask" so directories are created with suitable
33dc1b8c9aSSimon J. Gerraty#		mode (default is 022).
34dc1b8c9aSSimon J. Gerraty#
353cbdda60SSimon J. Gerraty#	var=val
363cbdda60SSimon J. Gerraty#		Set "var" to "val".  See below.
373cbdda60SSimon J. Gerraty#
383cbdda60SSimon J. Gerraty#	All our *.mk files are copied to "dest" with appropriate
393cbdda60SSimon J. Gerraty#	ownership and permissions.
403cbdda60SSimon J. Gerraty#
413cbdda60SSimon J. Gerraty#	By default if a sys.mk can be found in a standard location
423cbdda60SSimon J. Gerraty#	(that bmake will find) then no sys.mk will be put in "dest".
433cbdda60SSimon J. Gerraty#
443cbdda60SSimon J. Gerraty#	SKIP_SYS_MK:
453cbdda60SSimon J. Gerraty#		If set, we will avoid installing our 'sys.mk'
463cbdda60SSimon J. Gerraty#		This is probably a bad idea.
473cbdda60SSimon J. Gerraty#
483cbdda60SSimon J. Gerraty#	SKIP_BSD_MK:
493cbdda60SSimon J. Gerraty#		If set, we will skip making bsd.*.mk links to *.mk
503cbdda60SSimon J. Gerraty#
513cbdda60SSimon J. Gerraty#	sys.mk:
523cbdda60SSimon J. Gerraty#
533cbdda60SSimon J. Gerraty#	By default (and provided we are not installing to the system
543cbdda60SSimon J. Gerraty#	mk dir - '/usr/share/mk') we install our own 'sys.mk' which
553cbdda60SSimon J. Gerraty#	includes a sys specific file, or a generic one.
563cbdda60SSimon J. Gerraty#
573cbdda60SSimon J. Gerraty#
583cbdda60SSimon J. Gerraty# AUTHOR:
593cbdda60SSimon J. Gerraty#       Simon J. Gerraty <sjg@crufty.net>
603cbdda60SSimon J. Gerraty
613cbdda60SSimon J. Gerraty# RCSid:
62*b4894ecaSSimon J. Gerraty#	$Id: install-mk,v 1.268 2025/07/24 15:55:48 sjg Exp $
633cbdda60SSimon J. Gerraty#
64d9a65c5dSSimon J. Gerraty#	@(#) Copyright (c) 1994-2025 Simon J. Gerraty
653cbdda60SSimon J. Gerraty#
663cbdda60SSimon J. Gerraty#	This file is provided in the hope that it will
673cbdda60SSimon J. Gerraty#	be of use.  There is absolutely NO WARRANTY.
683cbdda60SSimon J. Gerraty#	Permission to copy, redistribute or otherwise
693cbdda60SSimon J. Gerraty#	use this file is hereby granted provided that
703cbdda60SSimon J. Gerraty#	the above copyright notice and this notice are
713cbdda60SSimon J. Gerraty#	left intact.
723cbdda60SSimon J. Gerraty#
733cbdda60SSimon J. Gerraty#	Please send copies of changes and bug-fixes to:
743cbdda60SSimon J. Gerraty#	sjg@crufty.net
753cbdda60SSimon J. Gerraty#
763cbdda60SSimon J. Gerraty
77*b4894ecaSSimon J. GerratyMK_VERSION=20250724
783cbdda60SSimon J. GerratyOWNER=
793cbdda60SSimon J. GerratyGROUP=
803cbdda60SSimon J. GerratyMODE=444
813cbdda60SSimon J. GerratyBINMODE=555
823cbdda60SSimon J. GerratyECHO=:
833cbdda60SSimon J. GerratySKIP=
843cbdda60SSimon J. Gerratycp_f=-f
853cbdda60SSimon J. Gerraty
86dc1b8c9aSSimon J. Gerratyumask 022
87dc1b8c9aSSimon J. Gerraty
883cbdda60SSimon J. Gerratywhile :
893cbdda60SSimon J. Gerratydo
903cbdda60SSimon J. Gerraty	case "$1" in
913cbdda60SSimon J. Gerraty	*=*) eval "$1"; shift;;
923cbdda60SSimon J. Gerraty	+f) cp_f=; shift;;
933cbdda60SSimon J. Gerraty	-f) cp_f=-f; shift;;
943cbdda60SSimon J. Gerraty	-m) MODE=$2; shift 2;;
953cbdda60SSimon J. Gerraty	-o) OWNER=$2; shift 2;;
963cbdda60SSimon J. Gerraty	-g) GROUP=$2; shift 2;;
973cbdda60SSimon J. Gerraty	-v) ECHO=echo; shift;;
983cbdda60SSimon J. Gerraty	-q) ECHO=:; shift;;
993cbdda60SSimon J. Gerraty	-n) ECHO=echo SKIP=:; shift;;
100dc1b8c9aSSimon J. Gerraty	-U) umask $2; shift;;
1013cbdda60SSimon J. Gerraty	--) shift; break;;
1023cbdda60SSimon J. Gerraty	*) break;;
1033cbdda60SSimon J. Gerraty	esac
1043cbdda60SSimon J. Gerratydone
1053cbdda60SSimon J. Gerraty
1063cbdda60SSimon J. Gerratycase $# in
1073cbdda60SSimon J. Gerraty0)	echo "$0 [options] <destination> [<os>]"
1083cbdda60SSimon J. Gerraty	echo "eg."
1093cbdda60SSimon J. Gerraty	echo "$0 -o bin -g bin -m 444 /usr/local/share/mk"
1103cbdda60SSimon J. Gerraty	exit 1
1113cbdda60SSimon J. Gerraty	;;
1123cbdda60SSimon J. Gerratyesac
1133cbdda60SSimon J. Gerratydest=$1
1143cbdda60SSimon J. Gerratyos=${2:-`uname`}
1153cbdda60SSimon J. Gerratyosrel=${3:-`uname -r`}
1163cbdda60SSimon J. Gerraty
1173cbdda60SSimon J. GerratyDo() {
1183cbdda60SSimon J. Gerraty	$ECHO "$@"
1193cbdda60SSimon J. Gerraty	$SKIP "$@"
1203cbdda60SSimon J. Gerraty}
1213cbdda60SSimon J. Gerraty
1223cbdda60SSimon J. GerratyError() {
1233cbdda60SSimon J. Gerraty	echo "ERROR: $@" >&2
1243cbdda60SSimon J. Gerraty	exit 1
1253cbdda60SSimon J. Gerraty}
1263cbdda60SSimon J. Gerraty
1273cbdda60SSimon J. GerratyWarning() {
1283cbdda60SSimon J. Gerraty	echo "WARNING: $@" >&2
1293cbdda60SSimon J. Gerraty}
1303cbdda60SSimon J. Gerraty
1313cbdda60SSimon J. Gerraty[ "$FORCE_SYS_MK" ] && Warning "ignoring: FORCE_{BSD,SYS}_MK (no longer supported)"
1323cbdda60SSimon J. Gerraty
1333cbdda60SSimon J. GerratySYS_MK_DIR=${SYS_MK_DIR:-/usr/share/mk}
1343cbdda60SSimon J. GerratySYS_MK=${SYS_MK:-$SYS_MK_DIR/sys.mk}
1353cbdda60SSimon J. Gerraty
1363cbdda60SSimon J. Gerratyrealpath() {
1373cbdda60SSimon J. Gerraty	[ -d $1 ] && cd $1 && 'pwd' && return
1383cbdda60SSimon J. Gerraty	echo $1
1393cbdda60SSimon J. Gerraty}
1403cbdda60SSimon J. Gerraty
1414fde40d9SSimon J. Gerraty# some Linux systems have deprecated egrep in favor of grep -E
1424fde40d9SSimon J. Gerratycase "`echo bmake | egrep 'a' 2>&1`" in
1434fde40d9SSimon J. Gerraty*"grep -E"*) egrep='grep -E';;
1444fde40d9SSimon J. Gerraty*) egrep=egrep;;
1454fde40d9SSimon J. Gerratyesac
1464fde40d9SSimon J. Gerraty
1473cbdda60SSimon J. Gerratyif [ -s $SYS_MK -a -d $dest ]; then
1483cbdda60SSimon J. Gerraty	# if this is a BSD system we don't want to touch $SYS_MK
1493cbdda60SSimon J. Gerraty	dest=`realpath $dest`
1503cbdda60SSimon J. Gerraty	sys_mk_dir=`realpath $SYS_MK_DIR`
1513cbdda60SSimon J. Gerraty	if [ $dest = $sys_mk_dir ]; then
1523cbdda60SSimon J. Gerraty		case "$os" in
1533cbdda60SSimon J. Gerraty		*BSD*)	SKIP_SYS_MK=:
1543cbdda60SSimon J. Gerraty			SKIP_BSD_MK=:
1553cbdda60SSimon J. Gerraty			;;
1563cbdda60SSimon J. Gerraty		*)	# could be fake?
1573cbdda60SSimon J. Gerraty			if [ ! -d $dest/sys -a ! -s $dest/Generic.sys.mk ]; then
1583cbdda60SSimon J. Gerraty				SKIP_SYS_MK=: # play safe
1593cbdda60SSimon J. Gerraty				SKIP_BSD_MK=:
1603cbdda60SSimon J. Gerraty			fi
1613cbdda60SSimon J. Gerraty			;;
1623cbdda60SSimon J. Gerraty		esac
1633cbdda60SSimon J. Gerraty	fi
1643cbdda60SSimon J. Gerratyfi
1653cbdda60SSimon J. Gerraty
1663cbdda60SSimon J. Gerraty[ -d $dest/sys ] || Do mkdir -p $dest/sys
1673cbdda60SSimon J. Gerraty[ -d $dest/sys ] || Do mkdir $dest/sys || exit 1
1683cbdda60SSimon J. Gerraty[ -z "$SKIP" ] && dest=`realpath $dest`
1693cbdda60SSimon J. Gerraty
1703cbdda60SSimon J. Gerratycd `dirname $0`
1713cbdda60SSimon J. Gerratymksrc=`'pwd'`
1723cbdda60SSimon J. Gerratyif [ $mksrc = $dest ]; then
1733cbdda60SSimon J. Gerraty	SKIP_MKFILES=:
1743cbdda60SSimon J. Gerratyelse
1753cbdda60SSimon J. Gerraty	# we do not install the examples
1764fde40d9SSimon J. Gerraty	mk_files=`grep '^[a-z].*\.mk' FILES | $egrep -v '(examples/|^sys\.mk|sys/)'`
17798875883SSimon J. Gerraty	mk_scripts=`$egrep '^[a-z].*[.-](sh|py)' FILES | $egrep -v '/'`
1783cbdda60SSimon J. Gerraty	sys_mk_files=`grep 'sys/.*\.mk' FILES`
1793cbdda60SSimon J. Gerraty	SKIP_MKFILES=
1803cbdda60SSimon J. Gerraty	[ -z "$SKIP_SYS_MK" ] && mk_files="sys.mk $mk_files"
1813cbdda60SSimon J. Gerratyfi
1823cbdda60SSimon J. Gerraty$SKIP_MKFILES Do cp $cp_f $mk_files $dest
1833cbdda60SSimon J. Gerraty$SKIP_MKFILES Do cp $cp_f $sys_mk_files $dest/sys
1843cbdda60SSimon J. Gerraty$SKIP_MKFILES Do cp $cp_f $mk_scripts $dest
1853cbdda60SSimon J. Gerraty$SKIP cd $dest
1863cbdda60SSimon J. Gerraty$SKIP_MKFILES Do chmod $MODE $mk_files $sys_mk_files
1873cbdda60SSimon J. Gerraty$SKIP_MKFILES Do chmod $BINMODE $mk_scripts
1883cbdda60SSimon J. Gerraty[ "$GROUP" ] && $SKIP_MKFILES Do chgrp $GROUP $mk_files $sys_mk_files
1893cbdda60SSimon J. Gerraty[ "$OWNER" ] && $SKIP_MKFILES Do chown $OWNER $mk_files $sys_mk_files
1903cbdda60SSimon J. Gerraty# if this is a BSD system the bsd.*.mk should exist and be used.
1913cbdda60SSimon J. Gerratyif [ -z "$SKIP_BSD_MK" ]; then
192cac6fd11SSimon J. Gerraty	for f in dep doc files inc init lib links man nls obj own prog subdir
1933cbdda60SSimon J. Gerraty	do
1943cbdda60SSimon J. Gerraty		b=bsd.$f.mk
1953cbdda60SSimon J. Gerraty		[ -s $b ] || Do ln -s $f.mk $b
1963cbdda60SSimon J. Gerraty	done
1973cbdda60SSimon J. Gerratyfi
1983cbdda60SSimon J. Gerratyexit 0
199