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."
|