rpm-build/scripts/files.req.in
2008-06-22 11:52:53 +04:00

50 lines
1.5 KiB
Bash
Executable File

#!/bin/sh -efu
#
# Make dependencies on directories under which files are packaged.
#
# @RPMCONFIGDIR@/*-files.req.list file format:
# 1) Meaningful lines start with slash '/'.
# 2a) Each line must contain either one field: '<dir>';
# 2b) or two fields: '<dir> <pkg>'.
# In <dir>, trailing slash is ok.
#
# Whenever file path matches <dir> (that is, a file or directory
# is packaged under <dir>), this program prints explicit dependency
# on <dir>. If file path matches a few directories, the longest-matching
# <dir> is printed. Optional <pkg> name indicates that <dir> itself
# should be exclusively owned by <pkg>.
#
# Copyright (C) 2003 Dmitry V. Levin <ldv@altlinux.org>
# Copyright (C) 2008 Alexey Tourbin <at@altlinux.org>
#
# 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 2 of the License, or
# (at your option) any later version.
. @RPMCONFIGDIR@/functions
# reverse sort provides longest match
dirlist=$(set +f; grep -h ^/. @RPMCONFIGDIR@/*-files.req.list |sort -ur)
FilesReq()
{
local f="$1"; shift
echo "${dirlist:?}" |
while read -r d pkg; do
d=${d%/}
case "$f" in
"${RPM_BUILD_ROOT-}$d"/*)
echo "$d"
break ;;
"${RPM_BUILD_ROOT-}$d")
[ -z "${pkg-}" -o -z "${RPM_SUBPACKAGE_NAME-}" ] ||
[ "$pkg" = "$RPM_SUBPACKAGE_NAME" ] ||
Warning "$f: directory belongs to $pkg"
break ;;
esac
done
}
ArgvFileAction FilesReq "$@"