#!/bin/sh

set -u

## Make a clean room
## NOTE: Solaris 10 /bin/sh aborts on `unset PS1`
eval "`
  env \
  |sed -n 's/^\([a-zA-Z0-9_]*\)=.*$/unset \1 || :/p' \
  |egrep -v ' (_|PATH|PS[12]|PWD|HOME|LOGNAME|VENDOR_RPM_[A-Z_]*) '
`"
LC_ALL="C"
export LC_ALL

vendor_id="${VENDOR_RPM_VENDOR_ID-osstech}"
rpm_configdir="${VENDOR_RPM_CONFIGDIR-/usr/lib/rpm}"
rpmbuild_cmd="${VENDOR_RPM_RPMBUILD_COMMAND-/bin/rpmbuild}"
rpmbuild_wrapper_cmd="${VENDOR_RPM_RPMBUILD_WRAPPER_COMMAND-}"
rpm_vendor_configdir="${VENDOR_RPM_VENDOR_CONFIGDIR-$rpm_configdir/$vendor_id}"

rpmbuild_b_opt=`
  while [ $# -ge 1 ]; do
    case "$1" in
    -b[abpcils])
      echo "$1"
      break
      ;;
    esac
    shift
  done
`

## OS-specific RPM macros
## ----------------------------------------------------------------------

## https://fedoraproject.org/wiki/Packaging:DistTag

os_name="unknown_`uname |tr '[A-Z]' '[a-z]' |tr - _`"
os_dist="unknown"
os_ver="0"

case `uname` in
Linux)
  if [ -f /etc/redhat-release ]; then
    os_name="rhel"
    os_dist="el"
    os_ver=`sed 's/^[^0-9]*//;s/[^0-9].*$//' /etc/redhat-release`
  fi
  if [ -f /etc/fedora-release ]; then
    os_name="fedora"
    os_dist="fc"
    os_ver=`sed 's/^[^0-9]*//;s/[^0-9].*$//' /etc/fedora-release`
  fi
  if [ -f /etc/turbolinux-release ]; then
    os_name="turbolinux"
    os_dist="tl"
    os_ver=`sed 's/^[^0-9]*//;s/[^0-9].*$//' /etc/turbolinux-release`
  fi
  if [ -f /etc/asianux-release ]; then
    os_name="asianux"
    os_dist="ax"
    os_ver=`sed 's/^[^0-9]*//;s/[^0-9].*$//' /etc/asianux-release`
  fi
  if [ -f /etc/debian_version ]; then
    os_name="debian"
    os_dist="deb"
    ## $os_ver='9999' means 'unstable' version (e.g. 'sid')
    os_ver=`sed 's/^[a-z][a-z]*.*$/9999/;s/\..*//' /etc/debian_version`
  fi
  if [ -f /etc/SuSE-release ]; then
    os_name="suse"
    os_dist="suse"
    os_ver=`cat /etc/SuSE-release | grep VERSION | awk -F ' ' '{print $3}'`
  fi
  ;;
SunOS)
  os_name="sol"
  os_dist="sol"
  ## SunOS 5.X = Solaris X (X >= 7)
  os_ver=`uname -r |sed 's/^[0-9]*\.//;s/\..*$//'`
  ;;
AIX)
  os_name="aix"
  os_dist="aix"
  os_ver=`uname -v`
  ;;
esac

if [ x"$rpmbuild_b_opt" != x"-bs" ]; then
  set -- --define "dist .$os_dist$os_ver" ${1+"$@"}
else
  if [ -z "$rpmbuild_wrapper_cmd" ] && type fakeroot >/dev/null 2>&1; then
    ## Use fakeroot by default for rpmbuild -bs to make file owner in
    ## SRPM package being root
    rpmbuild_wrapper_cmd="fakeroot"
  fi
fi
set -- --define "$os_name $os_ver" --define "$os_dist$os_ver 1" ${1+"$@"}

## Vendor-specific RPM macros
## ----------------------------------------------------------------------

## NOTE: The --rcfile or the --macros option must be specified as
##       the first argument for the rpmbuild command!

rpm_ver=`"$rpmbuild_cmd" --version |sed 's/.* //'`
[ -z "$rpm_ver" ] && exit 1

case X"$rpm_ver" in
X[1-3].*|X4.[0-4].*)
  ## RPM 4.4 and older
  set -- \
    --rcfile "$rpm_configdir/rpmrc:$rpm_vendor_configdir/rpmrc" \
    ${1+"$@"} \
    ;
  ;;
*)
  ## RPM 4.5 and newer
  rpmmacros="`"$rpmbuild_cmd" --showrc |sed -n 's/^Macro path: //p'`"
  if [ -z "$rpmmacros" ]; then
    ## RPM 4.5 - 4.8?
    rpmmacros="$rpm_configdir/macros:$rpm_configdir/%{_target}/macros:$rpm_configdir/platform/%{_target}/macros:$rpm_configdir/fileattrs/*.attr:"
    ## FIXME: Define $rpm_sysconfdir and use the below
    #"$rpm_sysconfdir/rpm/macros.*:$rpm_sysconfdir/rpm/macros:$rpm_sysconfdir/rpm/%{_target}/macros"
  fi
  set -- \
    --macros "$rpmmacros:$rpm_vendor_configdir/macros.*:$rpm_vendor_configdir/macros:~/.rpmmacros.$vendor_id" \
    ${1+"$@"} \
    ;
  ;;
esac

## ----------------------------------------------------------------------

exec ${rpmbuild_wrapper_cmd:+"$rpmbuild_wrapper_cmd"} "$rpmbuild_cmd" ${1+"$@"}

