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