3 # rpm2lsm -- generate Linux Software Map file from RPM meta information
5 # Author: Eric S. Raymond <esr@thyrsus.com>, 31 July 2002
6 # Project page: http://www.catb.org/~esr/
8 # Requires fmt(1), awk(1), and rpm(8).
10 while getopts a:m:k:p: c;
14 'm') maintainer=$OPTARG;;
15 'k') keywords=$OPTARG;;
16 'p') platforms=$OPTARG;;
17 '?') echo "rpm2lsm: invalid switch specified - aborting."; exit 1;;
20 shift `expr $OPTIND - 1`
22 # If no RPM was given, look in the current directory and pick the last
23 # one in sort order. That's likely to be the most recent.
33 # Mine out all the single-token fields we'll need
35 set -- `rpm --queryformat="%{name} %{version} %{release}" -qp $rpm`
40 # Extract and reformat the desciption
41 description=`rpm --queryformat="%{description}" -qp $rpm | fmt -w 65 | sed '2,$s/^/ /'`
44 fullname=`cat /etc/passwd | awk -F : "/^${USER}/ "'{print $5}'`
45 fullname="${USER}@${HOSTNAME} ($fullname)"
57 # Fill in keywords if present
60 keywords="Keywords: $keywords\n"
63 # Default the maintainer field properly
64 if [ -z "$maintainer" ]
66 maintainer=`rpm --queryformat="%{packager}" -qp $rpm`
67 if [ "$maintainer" = "(none)" ]
74 date=`date '+%Y-%m-%d'`
76 cat >/usr/tmp/rpm2lsm.$$ <<EOF
81 Description: ${description}
82 ${keywords}Author: ${author}
83 Maintained-by: ${maintainer}
87 # File patterns that we ship
88 tarballs="${name}-${version}.tar.gz ${name}-${version}.tgz"
89 rpms=${name}-${version}-${release}.*.rpm
91 trap "rm -f /usr/tmp/rpm2lsm.$$" 0 2 15
92 for file in $tarballs $rpms
96 set -- `du $file`; size=$1
97 echo " ${size} ${file}" >>/usr/tmp/rpm2lsm.$$
101 cat >>/usr/tmp/rpm2lsm.$$ <<EOF
102 Platforms: ${platforms:-All}
103 Copying-policy: %{license}
107 format=`cat /usr/tmp/rpm2lsm.$$`
108 rpm --queryformat="$format" -qp $rpm