15f1e34d9SAlexandre Perrin: 25f1e34d9SAlexandre Perrin# NAME: 35f1e34d9SAlexandre Perrin# install-mk - install mk files 45f1e34d9SAlexandre Perrin# 55f1e34d9SAlexandre Perrin# SYNOPSIS: 65f1e34d9SAlexandre Perrin# install-mk [options] [var=val] [dest] 75f1e34d9SAlexandre Perrin# 85f1e34d9SAlexandre Perrin# DESCRIPTION: 95f1e34d9SAlexandre Perrin# This tool installs mk files in a semi-intelligent manner into 105f1e34d9SAlexandre Perrin# "dest". 115f1e34d9SAlexandre Perrin# 125f1e34d9SAlexandre Perrin# Options: 135f1e34d9SAlexandre Perrin# 145f1e34d9SAlexandre Perrin# -n just say what we want to do, but don't touch anything. 155f1e34d9SAlexandre Perrin# 165f1e34d9SAlexandre Perrin# -f use -f when copying sys,mk. 175f1e34d9SAlexandre Perrin# 185f1e34d9SAlexandre Perrin# -v be verbose 195f1e34d9SAlexandre Perrin# 205f1e34d9SAlexandre Perrin# -q be quiet 215f1e34d9SAlexandre Perrin# 225f1e34d9SAlexandre Perrin# -m "mode" 235f1e34d9SAlexandre Perrin# Use "mode" for installed files (444). 245f1e34d9SAlexandre Perrin# 255f1e34d9SAlexandre Perrin# -o "owner" 265f1e34d9SAlexandre Perrin# Use "owner" for installed files. 275f1e34d9SAlexandre Perrin# 285f1e34d9SAlexandre Perrin# -g "group" 295f1e34d9SAlexandre Perrin# Use "group" for installed files. 305f1e34d9SAlexandre Perrin# 315f1e34d9SAlexandre Perrin# var=val 325f1e34d9SAlexandre Perrin# Set "var" to "val". See below. 335f1e34d9SAlexandre Perrin# 345f1e34d9SAlexandre Perrin# All our *.mk files are copied to "dest" with appropriate 355f1e34d9SAlexandre Perrin# ownership and permissions. 365f1e34d9SAlexandre Perrin# 375f1e34d9SAlexandre Perrin# By default if a sys.mk can be found in a standard location 385f1e34d9SAlexandre Perrin# (that bmake will find) then no sys.mk will be put in "dest". 395f1e34d9SAlexandre Perrin# 405f1e34d9SAlexandre Perrin# SKIP_SYS_MK: 415f1e34d9SAlexandre Perrin# If set, we will avoid installing our 'sys.mk' 425f1e34d9SAlexandre Perrin# This is probably a bad idea. 435f1e34d9SAlexandre Perrin# 445f1e34d9SAlexandre Perrin# SKIP_BSD_MK: 455f1e34d9SAlexandre Perrin# If set, we will skip making bsd.*.mk links to *.mk 465f1e34d9SAlexandre Perrin# 475f1e34d9SAlexandre Perrin# sys.mk: 485f1e34d9SAlexandre Perrin# 495f1e34d9SAlexandre Perrin# By default (and provided we are not installing to the system 505f1e34d9SAlexandre Perrin# mk dir - '/usr/share/mk') we install our own 'sys.mk' which 515f1e34d9SAlexandre Perrin# includes a sys specific file, or a generic one. 525f1e34d9SAlexandre Perrin# 535f1e34d9SAlexandre Perrin# 545f1e34d9SAlexandre Perrin# AUTHOR: 555f1e34d9SAlexandre Perrin# Simon J. Gerraty <sjg@crufty.net> 565f1e34d9SAlexandre Perrin 575f1e34d9SAlexandre Perrin# RCSid: 58*6eef5f0cSAntonio Huete Jimenez# $Id: install-mk,v 1.222 2022/09/09 17:44:29 sjg Exp $ 595f1e34d9SAlexandre Perrin# 605f1e34d9SAlexandre Perrin# @(#) Copyright (c) 1994 Simon J. Gerraty 615f1e34d9SAlexandre Perrin# 625f1e34d9SAlexandre Perrin# This file is provided in the hope that it will 635f1e34d9SAlexandre Perrin# be of use. There is absolutely NO WARRANTY. 645f1e34d9SAlexandre Perrin# Permission to copy, redistribute or otherwise 655f1e34d9SAlexandre Perrin# use this file is hereby granted provided that 665f1e34d9SAlexandre Perrin# the above copyright notice and this notice are 675f1e34d9SAlexandre Perrin# left intact. 685f1e34d9SAlexandre Perrin# 695f1e34d9SAlexandre Perrin# Please send copies of changes and bug-fixes to: 705f1e34d9SAlexandre Perrin# sjg@crufty.net 715f1e34d9SAlexandre Perrin# 725f1e34d9SAlexandre Perrin 73*6eef5f0cSAntonio Huete JimenezMK_VERSION=20220909 745f1e34d9SAlexandre PerrinOWNER= 755f1e34d9SAlexandre PerrinGROUP= 765f1e34d9SAlexandre PerrinMODE=444 775f1e34d9SAlexandre PerrinBINMODE=555 785f1e34d9SAlexandre PerrinECHO=: 795f1e34d9SAlexandre PerrinSKIP= 805f1e34d9SAlexandre Perrincp_f=-f 815f1e34d9SAlexandre Perrin 825f1e34d9SAlexandre Perrinwhile : 835f1e34d9SAlexandre Perrindo 845f1e34d9SAlexandre Perrin case "$1" in 855f1e34d9SAlexandre Perrin *=*) eval "$1"; shift;; 865f1e34d9SAlexandre Perrin +f) cp_f=; shift;; 875f1e34d9SAlexandre Perrin -f) cp_f=-f; shift;; 885f1e34d9SAlexandre Perrin -m) MODE=$2; shift 2;; 895f1e34d9SAlexandre Perrin -o) OWNER=$2; shift 2;; 905f1e34d9SAlexandre Perrin -g) GROUP=$2; shift 2;; 915f1e34d9SAlexandre Perrin -v) ECHO=echo; shift;; 925f1e34d9SAlexandre Perrin -q) ECHO=:; shift;; 935f1e34d9SAlexandre Perrin -n) ECHO=echo SKIP=:; shift;; 945f1e34d9SAlexandre Perrin --) shift; break;; 955f1e34d9SAlexandre Perrin *) break;; 965f1e34d9SAlexandre Perrin esac 975f1e34d9SAlexandre Perrindone 985f1e34d9SAlexandre Perrin 995f1e34d9SAlexandre Perrincase $# in 1005f1e34d9SAlexandre Perrin0) echo "$0 [options] <destination> [<os>]" 1015f1e34d9SAlexandre Perrin echo "eg." 1025f1e34d9SAlexandre Perrin echo "$0 -o bin -g bin -m 444 /usr/local/share/mk" 1035f1e34d9SAlexandre Perrin exit 1 1045f1e34d9SAlexandre Perrin ;; 1055f1e34d9SAlexandre Perrinesac 1065f1e34d9SAlexandre Perrindest=$1 1075f1e34d9SAlexandre Perrinos=${2:-`uname`} 1085f1e34d9SAlexandre Perrinosrel=${3:-`uname -r`} 1095f1e34d9SAlexandre Perrin 1105f1e34d9SAlexandre PerrinDo() { 1115f1e34d9SAlexandre Perrin $ECHO "$@" 1125f1e34d9SAlexandre Perrin $SKIP "$@" 1135f1e34d9SAlexandre Perrin} 1145f1e34d9SAlexandre Perrin 1155f1e34d9SAlexandre PerrinError() { 1165f1e34d9SAlexandre Perrin echo "ERROR: $@" >&2 1175f1e34d9SAlexandre Perrin exit 1 1185f1e34d9SAlexandre Perrin} 1195f1e34d9SAlexandre Perrin 1205f1e34d9SAlexandre PerrinWarning() { 1215f1e34d9SAlexandre Perrin echo "WARNING: $@" >&2 1225f1e34d9SAlexandre Perrin} 1235f1e34d9SAlexandre Perrin 1245f1e34d9SAlexandre Perrin[ "$FORCE_SYS_MK" ] && Warning "ignoring: FORCE_{BSD,SYS}_MK (no longer supported)" 1255f1e34d9SAlexandre Perrin 1265f1e34d9SAlexandre PerrinSYS_MK_DIR=${SYS_MK_DIR:-/usr/share/mk} 1275f1e34d9SAlexandre PerrinSYS_MK=${SYS_MK:-$SYS_MK_DIR/sys.mk} 1285f1e34d9SAlexandre Perrin 1295f1e34d9SAlexandre Perrinrealpath() { 1305f1e34d9SAlexandre Perrin [ -d $1 ] && cd $1 && 'pwd' && return 1315f1e34d9SAlexandre Perrin echo $1 1325f1e34d9SAlexandre Perrin} 1335f1e34d9SAlexandre Perrin 134*6eef5f0cSAntonio Huete Jimenez# some Linux systems have deprecated egrep in favor of grep -E 135*6eef5f0cSAntonio Huete Jimenezcase "`echo bmake | egrep 'a' 2>&1`" in 136*6eef5f0cSAntonio Huete Jimenez*"grep -E"*) egrep='grep -E';; 137*6eef5f0cSAntonio Huete Jimenez*) egrep=egrep;; 138*6eef5f0cSAntonio Huete Jimenezesac 139*6eef5f0cSAntonio Huete Jimenez 1405f1e34d9SAlexandre Perrinif [ -s $SYS_MK -a -d $dest ]; then 1415f1e34d9SAlexandre Perrin # if this is a BSD system we don't want to touch $SYS_MK 1425f1e34d9SAlexandre Perrin dest=`realpath $dest` 1435f1e34d9SAlexandre Perrin sys_mk_dir=`realpath $SYS_MK_DIR` 1445f1e34d9SAlexandre Perrin if [ $dest = $sys_mk_dir ]; then 1455f1e34d9SAlexandre Perrin case "$os" in 1465f1e34d9SAlexandre Perrin *BSD*) SKIP_SYS_MK=: 1475f1e34d9SAlexandre Perrin SKIP_BSD_MK=: 1485f1e34d9SAlexandre Perrin ;; 1495f1e34d9SAlexandre Perrin *) # could be fake? 1505f1e34d9SAlexandre Perrin if [ ! -d $dest/sys -a ! -s $dest/Generic.sys.mk ]; then 1515f1e34d9SAlexandre Perrin SKIP_SYS_MK=: # play safe 1525f1e34d9SAlexandre Perrin SKIP_BSD_MK=: 1535f1e34d9SAlexandre Perrin fi 1545f1e34d9SAlexandre Perrin ;; 1555f1e34d9SAlexandre Perrin esac 1565f1e34d9SAlexandre Perrin fi 1575f1e34d9SAlexandre Perrinfi 1585f1e34d9SAlexandre Perrin 1595f1e34d9SAlexandre Perrin[ -d $dest/sys ] || Do mkdir -p $dest/sys 1605f1e34d9SAlexandre Perrin[ -d $dest/sys ] || Do mkdir $dest/sys || exit 1 1615f1e34d9SAlexandre Perrin[ -z "$SKIP" ] && dest=`realpath $dest` 1625f1e34d9SAlexandre Perrin 1635f1e34d9SAlexandre Perrincd `dirname $0` 1645f1e34d9SAlexandre Perrinmksrc=`'pwd'` 1655f1e34d9SAlexandre Perrinif [ $mksrc = $dest ]; then 1665f1e34d9SAlexandre Perrin SKIP_MKFILES=: 1675f1e34d9SAlexandre Perrinelse 1685f1e34d9SAlexandre Perrin # we do not install the examples 169*6eef5f0cSAntonio Huete Jimenez mk_files=`grep '^[a-z].*\.mk' FILES | $egrep -v '(examples/|^sys\.mk|sys/)'` 170*6eef5f0cSAntonio Huete Jimenez mk_scripts=`$egrep '^[a-z].*\.(sh|py)' FILES | $egrep -v '/'` 1715f1e34d9SAlexandre Perrin sys_mk_files=`grep 'sys/.*\.mk' FILES` 1725f1e34d9SAlexandre Perrin SKIP_MKFILES= 1735f1e34d9SAlexandre Perrin [ -z "$SKIP_SYS_MK" ] && mk_files="sys.mk $mk_files" 1745f1e34d9SAlexandre Perrinfi 1755f1e34d9SAlexandre Perrin$SKIP_MKFILES Do cp $cp_f $mk_files $dest 1765f1e34d9SAlexandre Perrin$SKIP_MKFILES Do cp $cp_f $sys_mk_files $dest/sys 1775f1e34d9SAlexandre Perrin$SKIP_MKFILES Do cp $cp_f $mk_scripts $dest 1785f1e34d9SAlexandre Perrin$SKIP cd $dest 1795f1e34d9SAlexandre Perrin$SKIP_MKFILES Do chmod $MODE $mk_files $sys_mk_files 1805f1e34d9SAlexandre Perrin$SKIP_MKFILES Do chmod $BINMODE $mk_scripts 1815f1e34d9SAlexandre Perrin[ "$GROUP" ] && $SKIP_MKFILES Do chgrp $GROUP $mk_files $sys_mk_files 1825f1e34d9SAlexandre Perrin[ "$OWNER" ] && $SKIP_MKFILES Do chown $OWNER $mk_files $sys_mk_files 1835f1e34d9SAlexandre Perrin# if this is a BSD system the bsd.*.mk should exist and be used. 1845f1e34d9SAlexandre Perrinif [ -z "$SKIP_BSD_MK" ]; then 185ca58f742SDaniel Fojt for f in dep doc files inc init lib links man nls obj own prog subdir 1865f1e34d9SAlexandre Perrin do 1875f1e34d9SAlexandre Perrin b=bsd.$f.mk 1885f1e34d9SAlexandre Perrin [ -s $b ] || Do ln -s $f.mk $b 1895f1e34d9SAlexandre Perrin done 1905f1e34d9SAlexandre Perrinfi 1915f1e34d9SAlexandre Perrinexit 0 192