home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / boot / i386 / rescue / usr / lib / rpm / vpkg-provides2.sh < prev   
Linux/UNIX/POSIX Shell Script  |  2006-11-29  |  3KB  |  121 lines

  1. #!/bin/sh
  2.  
  3. # This script is not finished.  It is a bunch of ideas for using the
  4. # OS package manager to create a spec file of virtual dependencies for
  5. # each OS package.  I wish to only use tools which are installed in
  6. # the OS by default.
  7.  
  8.  
  9. PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/ucb:/usr/bsd
  10. export PATH
  11.  
  12. IGNORE_DIRS='@'
  13.  
  14. date=`date`
  15. hostname=`uname -n`
  16. osname=`uname -s`
  17.  
  18. # programs we run
  19.  
  20. find_provides=/usr/lib/rpm/find-provides
  21. find_requires=/usr/lib/rpm/find-requires
  22. #find_provides=/devel/kestes/vendorc/tools/solaris.prov
  23. #find_requires=/devel/kestes/vendorc/tools/solaris.req
  24. u_pkg=/devel/kestes/vendorc/rpm/scripts/u-pkg.sh 
  25.  
  26. # where we write output
  27. spec_filedir=/tmp
  28. provides_tmp=/tmp/provides.$$
  29. requires_tmp=/tmp/requires.$$
  30.  
  31.  
  32. for pkg in `$u_pkg list_all_packages`
  33. do
  34.  
  35. # find OS pkg information
  36.  
  37. spec_filename=$spec_filedir/$pkg
  38.  
  39. veryify_cmd=`$u_pkg print_cmd package_version $pkg | sed -e "s/\\$1/$pkg/" `
  40.  
  41. pkg_version=`$u_pkg package_version $pkg `
  42.  
  43.  
  44. # find all the dependencies
  45.  
  46. $u_pkg list_all_files_in_package $pkg | egrep -v \'$IGNORE_DIRS\' | \
  47.     $find_provides | sed -e 's/^/Provides: /' > $provides_tmp
  48.  
  49. $u_pkg list_all_files_in_package $pkg | egrep -v \'$IGNORE_DIRS\' | \
  50.     $find_requires | sed -e 's/^/Requires: /' > $requires_tmp
  51.  
  52. # create the spec file
  53.  
  54. rm -f $spec_filename
  55.  
  56. echo >> $spec_filename
  57.  
  58. cat $provides_tmp | sort -u >> $spec_filename
  59.  
  60. echo >> $spec_filename
  61.  
  62. cat $requires_tmp | sort -u >> $spec_filename
  63.  
  64. echo >> $spec_filename
  65.  
  66.  
  67. # Output the rest of the spec file.  It is a template stored in this
  68. # here file.
  69.  
  70.  
  71. cat >> $spec_filename <<_EIEIO_
  72. Name: vpkg-$pkg
  73. Version: $pkg_version
  74.  
  75. %description
  76. This is a virtual RPM package.  It contains no actual files.  It uses the
  77. \`Provides' token from RPM 3.x and later to list many of the shared libraries
  78. and interpreters that are part of the base operating system and associated
  79. subsets for $osname.
  80.  
  81. This virtual package was constructed based on the vendor/system software
  82. installed on the $osname machine named $hostname, as of the date
  83. $date.  It is intended to supply dependency 
  84. information about the OS package: $pkg, version: $pkg_version,
  85.  
  86.  
  87. %prep
  88. # nothing to do
  89.  
  90. %build
  91. # nothing to do
  92.  
  93. %install
  94. # nothing to do
  95.  
  96. %clean
  97. # nothing to do
  98.  
  99.  
  100. %verifyscript
  101.  
  102. PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/ucb:/usr/bsd:/usr/local/bin
  103. export PATH
  104.  
  105. expected_version='$pkg_version'
  106. current_version=\`$veryify_cmd\`
  107.  
  108. if [ \$expected_version -ne \$current_version ]; then
  109.     echo "RPM virtual package does not match OS pkg: $pkg" >&2
  110.     echo "installed packge version: \$current_verion" >&2
  111.     echo "expected package version: \$expected_version" >&2
  112.     exit 9
  113. fi
  114.  
  115. %files
  116.  
  117. _EIEIO_
  118.  
  119. done  
  120.  
  121.