+++ /dev/null
-#!/bin/bash
-###############################################################################
-# #
-# Pakfire - The IPFire package management system #
-# Copyright (C) 2021 Pakfire development team #
-# #
-# This program is free software: you can redistribute it and/or modify #
-# it under the terms of the GNU General Public License as published by #
-# the Free Software Foundation, either version 3 of the License, or #
-# (at your option) any later version. #
-# #
-# This program is distributed in the hope that it will be useful, #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
-# GNU General Public License for more details. #
-# #
-# You should have received a copy of the GNU General Public License #
-# along with this program. If not, see <http://www.gnu.org/licenses/>. #
-# #
-###############################################################################
-
-error() {
- echo "$@" >&2
-}
-
-main() {
- local buildroot="${1}"
- shift
-
- # Check if BUILDROOT exists
- if [ ! -d "${buildroot}" ]; then
- error "BUILDROOT does not exist"
- return 1
- fi
-
- local -A files=()
-
- local file
- for file in $(find "${buildroot}" -type f); do
- # Skip any non-ELF files
- if ! file "${file}" | grep -q "ELF"; then
- continue
- fi
-
- # Fetch RPATH
- local rpath="$(readelf -d "${file}" 2>/dev/null | grep RPATH | \
- tr -d "[]" | awk '{ print $NF }')"
-
- # Ignore any empty paths
- [ -z "${rpath}" ] && continue
-
- # Normalize the path
- rpath="$(readlink -m "${rpath}")"
-
- case "${rpath}" in
- # Ignore anything pointing at /lib(64) and /usr/lib(64)
- /lib|/lib64|/usr/lib|/usr/lib64)
- continue
- ;;
- esac
-
- files["${file}"]="${rpath}"
- done
-
- if [ "${#files[@]}" -gt 0 ]; then
- error "The following files have unacceptable RPATHs set:"
- local file
- for file in ${!files[@]}; do
- error " ${file/${buildroot}/} (${files[${file}]})"
- done
-
- return 1
- fi
-
- return 0
-}
-
-main "$@" || exit $?