File: install.sh

package info (click to toggle)
ccache 4.13.2-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 5,420 kB
  • sloc: cpp: 50,251; asm: 28,570; sh: 9,632; ansic: 5,357; python: 834; perl: 68; makefile: 24
file content (114 lines) | stat: -rwxr-xr-x 3,239 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#!/bin/sh

set -eu

script_dir="$(cd "$(dirname "$0")" && pwd)"

prefix=/usr/local
exec_prefix=
bindir=
datarootdir=
docdir=
libexecdir=
mandir=
man1dir=
sysconfdir=
destdir=
PYTHON="${PYTHON:-python3}"

doc_files="
    GPL-3.0.txt
    LICENSE.html
    LICENSE.md
    MANUAL.html
    MANUAL.md
    NEWS.html
    NEWS.md
    README.md
"

usage() {
    cat <<EOF
Usage: $0 [OPTIONS]

Install ccache from a binary release.

Installation directories (following GNU conventions):
  --prefix=DIR         Top-level installation prefix [${prefix}]
  --exec-prefix=DIR    Exec prefix [PREFIX]
  --bindir=DIR         User executables [EXEC_PREFIX/bin]
  --datarootdir=DIR    Read-only architecture-independent data [PREFIX/share]
  --docdir=DIR         Documentation [DATAROOTDIR/doc/ccache]
  --libexecdir=DIR     Program executables [EXEC_PREFIX/libexec]
  --mandir=DIR         Man documentation [DATAROOTDIR/man]
  --sysconfdir=DIR     Read-only single-machine data [PREFIX/etc]

Other options:
  --destdir=DIR        Stage installation under DIR
  -h, --help           Print this help and exit

Environment variables:
  PYTHON               Python interpreter to use [python3]
EOF
}

error() {
    printf '%s: error: %s\n' "$0" "$1" >&2
    exit 1
}

while [ $# -gt 0 ]; do
    arg=$1
    case ${arg} in
        --bindir=*)      bindir=${arg#*=} ;;
        --bindir)        shift; bindir=$1 ;;
        --datarootdir=*) datarootdir=${arg#*=} ;;
        --datarootdir)   shift; datarootdir=$1 ;;
        --destdir=*)     destdir=${arg#*=} ;;
        --destdir)       shift; destdir=$1 ;;
        --docdir=*)      docdir=${arg#*=} ;;
        --docdir)        shift; docdir=$1 ;;
        --exec-prefix=*) exec_prefix=${arg#*=} ;;
        --exec-prefix)   shift; exec_prefix=$1 ;;
        --libexecdir=*)  libexecdir=${arg#*=} ;;
        --libexecdir)    shift; libexecdir=$1 ;;
        --mandir=*)      mandir=${arg#*=} ;;
        --mandir)        shift; mandir=$1 ;;
        --prefix=*)      prefix=${arg#*=} ;;
        --prefix)        shift; prefix=$1 ;;
        --sysconfdir=*)  sysconfdir=${arg#*=} ;;
        --sysconfdir)    shift; sysconfdir=$1 ;;
        -h|--help)       usage; exit 0 ;;
        *)               error "unknown option: ${arg}" ;;
    esac
    shift
done

: "${exec_prefix:=${prefix}}"
: "${bindir:=${exec_prefix}/bin}"
: "${datarootdir:=${prefix}/share}"
: "${docdir:=${datarootdir}/doc/ccache}"
: "${libexecdir:=${exec_prefix}/libexec}"
: "${mandir:=${datarootdir}/man}"
: "${man1dir:=${mandir}/man1}"
: "${sysconfdir:=${prefix}/etc}"

command -v "${PYTHON}" >/dev/null 2>&1 || error "Python interpreter not found: ${PYTHON}"

echo "Installing binary: ${destdir}${bindir}/ccache"
mkdir -p "${destdir}${bindir}"
"${PYTHON}" "${script_dir}/patch-binary.py" "$libexecdir" "$sysconfdir" \
    <"${script_dir}/ccache" >"${destdir}${bindir}/ccache"
chmod 755 "${destdir}${bindir}/ccache"

echo "Installing documentation: ${destdir}${docdir}"
mkdir -p "${destdir}${docdir}"
for f in ${doc_files}; do
    cp "${script_dir}/${f}" "${destdir}${docdir}"
done

echo "Installing man page: ${destdir}${man1dir}/ccache.1"
mkdir -p "${destdir}${man1dir}"
cp "${script_dir}/ccache.1" "${destdir}${man1dir}"

echo "Installation complete."