[1120] | 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 |
---|