~ubuntu-branches/ubuntu/trusty/bmake/trusty-proposed

« back to all changes in this revision

Viewing changes to mk/stage-install.sh

  • Committer: Package Import Robot
  • Author(s): Andrew Shadura
  • Date: 2013-09-22 16:07:33 UTC
  • Revision ID: package-import@ubuntu.com-20130922160733-9cvmsi7z0jswtrbi
Tags: upstream-20130904
ImportĀ upstreamĀ versionĀ 20130904

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/bin/sh
 
2
 
 
3
# NAME:
 
4
#       stage-install.sh - wrapper around install
 
5
#
 
6
# SYNOPSIS:
 
7
#       stage-install.sh [variable="value"] "args" "dest"
 
8
#
 
9
# DESCRIPTION:
 
10
#       This script is a wrapper around the normal install(1).
 
11
#       Its role is to add '.dirdep' files to the destination.
 
12
#       The variables we might use are:
 
13
#
 
14
#       INSTALL
 
15
#               Path to actual install(1), default is
 
16
#               $REAL_INSTALL
 
17
#
 
18
#       OBJDIR
 
19
#               Path to the dir where '.dirdep' was generated,
 
20
#               default is '.'
 
21
#
 
22
#       _DIRDEP
 
23
#               Path to actual '.dirdep' file, default is
 
24
#               $OBJDIR/.dirdep
 
25
#
 
26
#       The "args" and "dest" are passed as is to install(1), and if a
 
27
#       '.dirdep' file exists it will be linked or copied to each
 
28
#       "file".dirdep placed in "dest" or "dest".dirdep if it happed
 
29
#       to be a file rather than a directory.
 
30
#
 
31
# SEE ALSO:
 
32
#       meta.stage.mk
 
33
#       
 
34
 
 
35
# RCSid:
 
36
#       $Id: stage-install.sh,v 1.5 2013/04/19 16:32:24 sjg Exp $
 
37
#
 
38
#       @(#) Copyright (c) 2013, Simon J. Gerraty
 
39
#
 
40
#       This file is provided in the hope that it will
 
41
#       be of use.  There is absolutely NO WARRANTY.
 
42
#       Permission to copy, redistribute or otherwise
 
43
#       use this file is hereby granted provided that 
 
44
#       the above copyright notice and this notice are
 
45
#       left intact. 
 
46
#      
 
47
#       Please send copies of changes and bug-fixes to:
 
48
#       sjg@crufty.net
 
49
#
 
50
 
 
51
INSTALL=${REAL_INSTALL:-install}
 
52
OBJDIR=.
 
53
 
 
54
while :
 
55
do
 
56
    case "$1" in
 
57
    *=*) eval "$1"; shift;;
 
58
    *) break;;
 
59
    esac
 
60
done
 
61
 
 
62
# if .dirdep doesn't exist, just run install and be done
 
63
_DIRDEP=${_DIRDEP:-$OBJDIR/.dirdep}
 
64
[ -s $_DIRDEP ] && EXEC= || EXEC=exec
 
65
$EXEC $INSTALL "$@" || exit 1
 
66
 
 
67
# from meta.stage.mk
 
68
LnCp() {
 
69
    rm -f $2 2> /dev/null
 
70
    ln $1 $2 2> /dev/null || cp -p $1 $2
 
71
}
 
72
 
 
73
StageDirdep() {
 
74
  t=$1
 
75
  if [ -s $t.dirdep ]; then
 
76
      cmp -s $_DIRDEP $t.dirdep && return
 
77
      echo "ERROR: $t installed by `cat $t.dirdep` not `cat $_DIRDEP`" >&2
 
78
      exit 1
 
79
  fi
 
80
  LnCp $_DIRDEP $t.dirdep || exit 1
 
81
}
 
82
 
 
83
args="$@"
 
84
while [ $# -gt 8 ]
 
85
do
 
86
    shift 8
 
87
done
 
88
eval dest=\$$#
 
89
if [ -f $dest ]; then
 
90
    # a file, there can be only one .dirdep needed
 
91
    StageDirdep $dest
 
92
elif [ -d $dest ]; then
 
93
    for f in $args
 
94
    do
 
95
        test -f $f || continue
 
96
        StageDirdep $dest/${f##*/}
 
97
    done
 
98
fi