rpm/scripts/vpkg-provides2.sh

121 lines
2.6 KiB
Bash
Executable File

#!/bin/sh
# This script is not finished. It is a bunch of ideas for using the
# OS package manager to create a spec file of virtual dependencies for
# each OS package. I wish to only use tools which are installed in
# the OS by default.
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/ucb:/usr/bsd
export PATH
IGNORE_DIRS='@'
date=`date`
hostname=`uname -n`
osname=`uname -s`
# programs we run
find_provides=/usr/lib/rpm/find-provides
find_requires=/usr/lib/rpm/find-requires
#find_provides=/devel/kestes/vendorc/tools/solaris.prov
#find_requires=/devel/kestes/vendorc/tools/solaris.req
u_pkg=/devel/kestes/vendorc/rpm/scripts/u-pkg.sh
# where we write output
spec_filedir=/tmp
provides_tmp=/tmp/provides.$$
requires_tmp=/tmp/requires.$$
for pkg in `$u_pkg list_all_packages`
do
# find OS pkg information
spec_filename=$spec_filedir/$pkg
veryify_cmd=`$u_pkg print_cmd package_version $pkg | sed -e "s/\\$1/$pkg/" `
pkg_version=`$u_pkg package_version $pkg `
# find all the dependencies
$u_pkg list_all_files_in_package $pkg | egrep -v \'$IGNORE_DIRS\' | \
$find_provides | sed -e 's/^/Provides: /' > $provides_tmp
$u_pkg list_all_files_in_package $pkg | egrep -v \'$IGNORE_DIRS\' | \
$find_requires | sed -e 's/^/Requires: /' > $requires_tmp
# create the spec file
rm -f $spec_filename
echo >> $spec_filename
cat $provides_tmp | sort -u >> $spec_filename
echo >> $spec_filename
cat $requires_tmp | sort -u >> $spec_filename
echo >> $spec_filename
# Output the rest of the spec file. It is a template stored in this
# here file.
cat >> $spec_filename <<_EIEIO_
Name: vpkg-$pkg
Version: $pkg_version
%description
This is a virtual RPM package. It contains no actual files. It uses the
\`Provides' token from RPM 3.x and later to list many of the shared libraries
and interpreters that are part of the base operating system and associated
subsets for $osname.
This virtual package was constructed based on the vendor/system software
installed on the $osname machine named $hostname, as of the date
$date. It is intended to supply dependency
information about the OS package: $pkg, version: $pkg_version,
%prep
# nothing to do
%build
# nothing to do
%install
# nothing to do
%clean
# nothing to do
%verifyscript
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/ucb:/usr/bsd:/usr/local/bin
export PATH
expected_version='$pkg_version'
current_version=\`$veryify_cmd\`
if [ \$expected_version -ne \$current_version ]; then
echo "RPM virtual package does not match OS pkg: $pkg" >&2
echo "installed packge version: \$current_verion" >&2
echo "expected package version: \$expected_version" >&2
exit 9
fi
%files
_EIEIO_
done