#!/bin/bash # # Copyright (C) Internet Systems Consortium, Inc. ("ISC") # # SPDX-License-Identifier: MPL-2.0 # # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, you can obtain one at https://mozilla.org/MPL/2.0/. # # See the COPYRIGHT file distributed with this work for additional # information regarding copyright ownership. set -euo pipefail abs_top_srcdir=@abs_top_srcdir@ abs_builddir=@abs_builddir@ # configure expands the directory variables below into references to # prefix, exec_prefix and datarootdir, which shellcheck cannot see. # shellcheck disable=SC2034 prefix=@prefix@ # shellcheck disable=SC2034 exec_prefix=@exec_prefix@ # shellcheck disable=SC2034 datarootdir=@datarootdir@ includedir=@includedir@ install_dir="${DESTDIR:-}@prefix@" bindir="${DESTDIR:-}@bindir@" libdir="${DESTDIR:-}@libdir@" mandir="${DESTDIR:-}@mandir@" sbindir="${DESTDIR:-}@sbindir@" headers_to_install() { find "${abs_top_srcdir}/lib" -name "*.h" -or -name "*.h.in" \ | sed -n \ -e "s|\.h\.in$|\.h|" \ -e "s|.*include/|${DESTDIR:-}${includedir}/|p" \ | sort -u } status=0 for header in $(headers_to_install); do if [ ! -f "${header}" ]; then echo "Missing $header" status=1 fi done named_binary_path="${sbindir}/named" if [ ! -x "${named_binary_path}" ]; then echo "ERROR: ${named_binary_path} does not exist or is not executable" status=1 fi named_man_page_path="${mandir}/man8/named.8" if [ ! -f "${named_man_page_path}" ]; then echo "ERROR: ${named_man_page_path} does not exist" status=1 fi # Every installed program must have a manual page installed with it. shopt -s nullglob for program in "${bindir}"/* "${sbindir}"/* "${libdir}"/bind/*.so; do name=$(basename "${program}" .so) man_pages=("${mandir}"/man*/"${name}".?) if [ ${#man_pages[@]} -eq 0 ]; then echo "ERROR: no manual page was installed for ${name}" status=1 fi done if [ -n "${DESTDIR:-}" ]; then for expected_subdir in bin include lib sbin share; do echo "${install_dir}/${expected_subdir}" >>"${abs_builddir}/expected_dirs" done find "${install_dir}" -maxdepth 1 -mindepth 1 -type d | sort >"${abs_builddir}/existing_dirs" if ! diff -u "${abs_builddir}/expected_dirs" "${abs_builddir}/existing_dirs"; then echo "ERROR: Contents of DESTDIR do not match expectations" status=1 fi rm -f "${abs_builddir}/expected_dirs" "${abs_builddir}/existing_dirs" fi exit "$status"