added pkg contens index support
This commit is contained in:
parent
b8fa98159d
commit
826df7fb62
@ -223,6 +223,8 @@
|
||||
@alt@ %{?_findprov_skiplist:export RPM_FINDPROV_SKIPLIST=\"%_findprov_skiplist\"}\
|
||||
@alt@ %{?_perl_lib_path:export RPM_PERL_LIB_PATH=\"%_perl_lib_path\"}\
|
||||
@alt@ %{?_perl_req_method:export RPM_PERL_REQ_METHOD=\"%_perl_req_method\"}\
|
||||
@alt@ %{?_pkg_contents_index_all:export RPM_PKG_CONTENTS_INDEX_ALL=\"%_pkg_contents_index_all\"}\
|
||||
@alt@ %{?_pkg_contents_index_bin:export RPM_PKG_CONTENTS_INDEX_BIN=\"%_pkg_contents_index_bin\"}\
|
||||
@alt@ %{?__python:export RPM_PYTHON=\"%__python\"}\
|
||||
@alt@ \
|
||||
@alt@ unset LANG LANGUAGE LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT LC_IDENTIFICATION LC_ALL ||:\
|
||||
|
@ -1,7 +1,7 @@
|
||||
#!/bin/sh -e
|
||||
#
|
||||
# find-package
|
||||
# Copyright (C) 2002 Dmitry V. Levin <ldv@altlinux.org>
|
||||
# $Id$
|
||||
# Copyright (C) 2002-2003 Dmitry V. Levin <ldv@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
|
||||
@ -23,42 +23,73 @@
|
||||
|
||||
FindPackage()
|
||||
{
|
||||
local f="$1"
|
||||
local f r rep package
|
||||
f="$1"
|
||||
shift
|
||||
local r rep package
|
||||
|
||||
for r in "$@"; do
|
||||
[ -n "$r" ] || continue
|
||||
if [ -z "${r##/*}" ]; then
|
||||
if ! relative "$r" "$RPM_BUILD_ROOT" |grep -q "^../"; then
|
||||
# Dependence name starts with `/'.
|
||||
|
||||
# Does it start with buildroot?
|
||||
if [ -z "${r##$RPM_BUILD_ROOT*}" ]; then
|
||||
echo "$f: invalid dependence: $r" >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
rep="$r"
|
||||
if [ -e "$RPM_BUILD_ROOT/$rep" ]; then
|
||||
# Does it belong to buildroot?
|
||||
if [ -e "$RPM_BUILD_ROOT$rep" ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
# Is it an alternative?
|
||||
if readlink "$rep" |grep -qs '^/etc/alternatives/'; then
|
||||
echo -E "$rep"
|
||||
else
|
||||
continue
|
||||
fi
|
||||
|
||||
# Check for pkg contens complete index.
|
||||
if [ -n "$RPM_PKG_CONTENTS_INDEX_ALL" ] && [ -s "$RPM_PKG_CONTENTS_INDEX_ALL" ]; then
|
||||
package="$(awk -v "f=$rep" '{if ($1 == f) {print $2; exit}}' "$RPM_PKG_CONTENTS_INDEX_ALL")"
|
||||
if [ -n "$package" ]; then
|
||||
echo -E "$package"
|
||||
continue
|
||||
fi
|
||||
fi
|
||||
|
||||
# Check package database.
|
||||
if package="$(rpmquery --whatprovides --queryformat='%{NAME}\n' -- "$rep" |LC_COLLATE=C sort -u)"; then
|
||||
echo -E "$package"
|
||||
else
|
||||
continue
|
||||
fi
|
||||
|
||||
# Not found; output raw dependence.
|
||||
echo -E "$rep"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
# Check buildroot first.
|
||||
local RPATH
|
||||
RPATH="$(echo "$PATH" |sed -e "s|[^:]\+|$RPM_BUILD_ROOT&|g")"
|
||||
if [ -n "$(PATH="$RPATH" /usr/bin/which -- "$r" 2>/dev/null)" ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
# Check for pkg contens binary index.
|
||||
if [ -n "$RPM_PKG_CONTENTS_INDEX_BIN" ] && [ -s "$RPM_PKG_CONTENTS_INDEX_BIN" ]; then
|
||||
package="$(awk -v "f=$r" 'BEGIN {r="^/(s?bin|usr/(s?bin|X11R6/bin))/" f} {if (match($1,r)>0) {print $2; exit 0}}' "$RPM_PKG_CONTENTS_INDEX_BIN")"
|
||||
if [ -n "$package" ]; then
|
||||
echo -E "$package"
|
||||
continue
|
||||
fi
|
||||
fi
|
||||
|
||||
# Lookup in host system.
|
||||
if ! rep="$(/usr/bin/which -- "$r" 2>/dev/null)"; then
|
||||
continue
|
||||
fi
|
||||
if [ -e "$RPM_BUILD_ROOT/$rep" ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
# Check package database.
|
||||
if package="$(rpmquery --whatprovides --queryformat='%{NAME}\n' -- "$rep" |LC_COLLATE=C sort -u)"; then
|
||||
echo -E "$package"
|
||||
fi
|
||||
|
Loading…
x
Reference in New Issue
Block a user