]> Pileus Git - ~andy/fetchmail/blob - dist-tools/shipper/rpm2lsm
Add new gai.c debug source.
[~andy/fetchmail] / dist-tools / shipper / rpm2lsm
1 #/bin/sh
2 #
3 # rpm2lsm -- generate Linux Software Map file from RPM meta information
4 #
5 # Author:       Eric S. Raymond <esr@thyrsus.com>, 31 July 2002
6 # Project page: http://www.catb.org/~esr/
7 #
8 # Requires fmt(1), awk(1), and rpm(8).
9
10 while getopts a:m:k:p: c;
11 do
12   case $c in
13    'a') author=$OPTARG;;
14    'm') maintainer=$OPTARG;;
15    'k') keywords=$OPTARG;;
16    'p') platforms=$OPTARG;;
17    '?') echo "rpm2lsm: invalid switch specified - aborting."; exit 1;;
18   esac
19 done
20 shift `expr $OPTIND - 1`
21
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.
24 if [ -z "$1" ]
25 then
26         set -- *.rpm
27         while [ "$2" ]
28         do
29                 shift
30         done
31 fi
32
33 # Mine out all the single-token fields we'll need
34 rpm=$1
35 set -- `rpm --queryformat="%{name} %{version} %{release}" -qp $rpm`
36 name=$1
37 version=$2
38 release=$3
39
40 # Extract and reformat the desciption
41 description=`rpm --queryformat="%{description}" -qp $rpm | fmt -w 65 | sed '2,$s/^/                /'`
42
43 # Who am I?
44 fullname=`cat /etc/passwd | awk -F : "/^${USER}/ "'{print $5}'`
45 fullname="${USER}@${HOSTNAME} ($fullname)"
46
47 if [ -z "$author" ]
48 then 
49     if [ -f AUTHORS ]
50     then
51         author=`cat AUTHORS`
52     else
53         author=$fullname
54     fi
55 fi
56
57 # Fill in keywords if present
58 if [ -n "$keywords" ]
59 then
60     keywords="Keywords:       $keywords\n"
61 fi
62
63 # Default the maintainer field properly
64 if [ -z "$maintainer" ]
65 then
66     maintainer=`rpm --queryformat="%{packager}" -qp $rpm`
67     if [ "$maintainer" = "(none)" ]
68     then
69         maintainer=$author
70     fi
71 fi
72
73 # The date
74 date=`date '+%Y-%m-%d'`
75
76 cat >/usr/tmp/rpm2lsm.$$ <<EOF
77 Begin3
78 Title:          %{name}
79 Version:        %{version}
80 Entered-date:   ${date}
81 Description:    ${description}
82 ${keywords}Author:      ${author}
83 Maintained-by:  ${maintainer}
84 Primary-site:   %{url}
85 EOF
86
87 # File patterns that we ship 
88 tarballs="${name}-${version}.tar.gz ${name}-${version}.tgz"
89 rpms=${name}-${version}-${release}.*.rpm
90
91 trap "rm -f /usr/tmp/rpm2lsm.$$"  0 2 15
92 for file in $tarballs $rpms
93 do
94     if [ -f $file ]
95     then
96         set -- `du $file`; size=$1
97         echo "          ${size} ${file}" >>/usr/tmp/rpm2lsm.$$
98     fi
99 done
100
101 cat >>/usr/tmp/rpm2lsm.$$ <<EOF
102 Platforms:      ${platforms:-All}
103 Copying-policy: %{license}
104 End
105 EOF
106
107 format=`cat /usr/tmp/rpm2lsm.$$`
108 rpm --queryformat="$format" -qp $rpm