1 | #!/bin/sh |
---|
2 | # |
---|
3 | # create RPM directory tree like /usr/src/vine and set ~/.rpmmacros |
---|
4 | # |
---|
5 | # Written on Thu Jul 27 2000 by Toru Sagami <czs14350@mb.infoweb.ne.jp> |
---|
6 | # - first shakedown for Vine |
---|
7 | # modify grammer and dir name by Jun Nishii <jun@vinelinux.org> |
---|
8 | |
---|
9 | # requires: rpm > 3.0 |
---|
10 | |
---|
11 | CMDNAME=`basename $0` |
---|
12 | |
---|
13 | show_usage () { |
---|
14 | echo "$CMDNAME:" |
---|
15 | echo "create \"rpm\" top directory tree and set ~/.rpmmacros" |
---|
16 | echo "usage: $CMDNAME TOP_DIRECTORY" |
---|
17 | exit 1 |
---|
18 | } |
---|
19 | |
---|
20 | rpm3var () { |
---|
21 | var=`rpm --showrc \ |
---|
22 | | awk "/-[0-9]+[:=][[:blank:]]+$1[[:blank:]]/ {print \\$3}"` |
---|
23 | while test -n "`echo $var | egrep '%\{[_a-zA-Z]+\}'`"; do |
---|
24 | v=`echo $var | sed 's/.*%{\([_a-zA-Z]\+\)}.*/\1/'` |
---|
25 | w="`rpm3var $v`" |
---|
26 | var=`echo $var | sed "s,%{\\([_a-zA-Z]\\+\\)},$w,g"` |
---|
27 | done |
---|
28 | echo $var |
---|
29 | } |
---|
30 | |
---|
31 | getrpmmacro () { |
---|
32 | macro=`rpm --showrc | grep ^.*[0-9][:=][[:space:]]"$1" \ |
---|
33 | | sed "s/^.*$1[[:space:]]//"` |
---|
34 | echo $macro |
---|
35 | } |
---|
36 | |
---|
37 | createRPMdir () { |
---|
38 | mkdir -p $1/{BUILD,RPMS,SOURCES,SPECS,SRPMS} |
---|
39 | mkdir -p $1/RPMS/noarch |
---|
40 | case "`uname -m`" in |
---|
41 | *86|x86_64) |
---|
42 | mkdir -p $1/RPMS/{i386,i586,i686} |
---|
43 | ;; |
---|
44 | x86_64) |
---|
45 | mkdir -p $1/RPMS/x86_64 |
---|
46 | ;; |
---|
47 | sparc|sparc64) |
---|
48 | mkdir -p $1/RPMS/{sparc,sparc64} |
---|
49 | ;; |
---|
50 | ppc*) |
---|
51 | mkdir -p $1/RPMS/{ppc,ppc64} |
---|
52 | ;; |
---|
53 | alpha) |
---|
54 | mkdir -p $1/RPMS/alpha |
---|
55 | ;; |
---|
56 | # dont know about that :-) |
---|
57 | *) |
---|
58 | mkdir -p $1/RPMS/{`uname -m`} |
---|
59 | ;; |
---|
60 | esac |
---|
61 | } |
---|
62 | |
---|
63 | # arg process |
---|
64 | if [ $# = 0 ]; then |
---|
65 | show_usage |
---|
66 | elif [ -z $HOME ]; then |
---|
67 | echo "$CMDNAME: \$HOME is not set" && exit 1 |
---|
68 | elif [ ! -x /bin/rpm ]; then |
---|
69 | echo "$CMDNAME: /bin/rpm not found" && exit 1 |
---|
70 | elif [ ! -d $1 ]; then |
---|
71 | echo "$CMDNAME: $1 is not directory" && exit 1 |
---|
72 | elif [ ! -w $1 ]; then |
---|
73 | echo "$CMDNAME: $1 Permission denied" && exit 1 |
---|
74 | fi |
---|
75 | |
---|
76 | # nan ka hen dakedo iika |
---|
77 | pushd $1 > /dev/null 2>&1 |
---|
78 | TOPDIR=`pwd` |
---|
79 | popd > /dev/null 2>&1 |
---|
80 | |
---|
81 | TOPDIR=$TOPDIR/rpm |
---|
82 | RPMMACROS=$HOME/.rpmmacros |
---|
83 | |
---|
84 | createRPMdir $TOPDIR |
---|
85 | |
---|
86 | |
---|
87 | if [ ! -w $RPMMACROS ]; then |
---|
88 | # create simplest macros |
---|
89 | cat << EOF >> $RPMMACROS |
---|
90 | ### added by $CMDNAME. see /usr/lib/rpm/macros for more. |
---|
91 | %_topdir $TOPDIR |
---|
92 | EOF |
---|
93 | |
---|
94 | # we dont want packager tag to be replaced |
---|
95 | PACKAGER=`getrpmmacro packager` |
---|
96 | if [ -z "$PACKAGER" ] ; then |
---|
97 | PACKAGER="$(whoami) <$(whoami)@$(hostname)>" |
---|
98 | cat << _EOF_ >> $RPMMACROS |
---|
99 | %packager $PACKAGER |
---|
100 | _EOF_ |
---|
101 | fi |
---|
102 | fi |
---|
103 | |
---|
104 | echo "$CMDNAME: created rpm tree in $TOPDIR and $RPMMACROS." |
---|
105 | exit 0 |
---|