#!/bin/sh # # create RPM directory tree like /usr/src/vine and set ~/.rpmmacros # # Written on Thu Jul 27 2000 by Toru Sagami # - first shakedown for Vine # modify grammer and dir name by Jun Nishii # requires: rpm > 3.0 CMDNAME=`basename $0` show_usage () { echo "$CMDNAME:" echo "create \"rpm\" top directory tree and set ~/.rpmmacros" echo "usage: $CMDNAME TOP_DIRECTORY" exit 1 } rpm3var () { var=`rpm --showrc \ | awk "/-[0-9]+[:=][[:blank:]]+$1[[:blank:]]/ {print \\$3}"` while test -n "`echo $var | egrep '%\{[_a-zA-Z]+\}'`"; do v=`echo $var | sed 's/.*%{\([_a-zA-Z]\+\)}.*/\1/'` w="`rpm3var $v`" var=`echo $var | sed "s,%{\\([_a-zA-Z]\\+\\)},$w,g"` done echo $var } getrpmmacro () { macro=`rpm --showrc | grep ^.*[0-9][:=][[:space:]]"$1" \ | sed "s/^.*$1[[:space:]]//"` echo $macro } createRPMdir () { mkdir -p $1/{BUILD,RPMS,SOURCES,SPECS,SRPMS} mkdir -p $1/RPMS/noarch case "`uname -m`" in *86|x86_64) mkdir -p $1/RPMS/{i386,i586,i686} ;; x86_64) mkdir -p $1/RPMS/x86_64 ;; sparc|sparc64) mkdir -p $1/RPMS/{sparc,sparc64} ;; ppc*) mkdir -p $1/RPMS/{ppc,ppc64} ;; alpha) mkdir -p $1/RPMS/alpha ;; # dont know about that :-) *) mkdir -p $1/RPMS/{`uname -m`} ;; esac } # arg process if [ $# = 0 ]; then show_usage elif [ -z $HOME ]; then echo "$CMDNAME: \$HOME is not set" && exit 1 elif [ ! -x /bin/rpm ]; then echo "$CMDNAME: /bin/rpm not found" && exit 1 elif [ ! -d $1 ]; then echo "$CMDNAME: $1 is not directory" && exit 1 elif [ ! -w $1 ]; then echo "$CMDNAME: $1 Permission denied" && exit 1 fi # nan ka hen dakedo iika pushd $1 > /dev/null 2>&1 TOPDIR=`pwd` popd > /dev/null 2>&1 TOPDIR=$TOPDIR/rpm RPMMACROS=$HOME/.rpmmacros createRPMdir $TOPDIR if [ ! -w $RPMMACROS ]; then # create simplest macros cat << EOF >> $RPMMACROS ### added by $CMDNAME. see /usr/lib/rpm/macros for more. %_topdir $TOPDIR EOF # we dont want packager tag to be replaced PACKAGER=`getrpmmacro packager` if [ -z "$PACKAGER" ] ; then PACKAGER="$(whoami) <$(whoami)@$(hostname)>" cat << _EOF_ >> $RPMMACROS %packager $PACKAGER _EOF_ fi fi echo "$CMDNAME: created rpm tree in $TOPDIR and $RPMMACROS." exit 0