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