-#!/bin/sh
+#!/usr/bin/env bash
DESTDIR="${DESTDIR:-/}"
pkglibdir="${pkglibdir:-/usr/lib/rpm}"
RPM="./rpm --rcfile $TEMPRC"
-arch="`$RPM --eval '%{_arch}'`"
+canonarch_sed='s_i.86_i386_;s_athlon_i386_;s_sparc[^-]*_sparc_;s_alpha[^-]*_alpha_;s_\(powerpc\|ppc\)[^-]*_ppc_'
+arch="`$RPM --eval '%{_arch}'|sed -e "$canonarch_sed"`"
VENDOR="`$RPM --eval '%{_vendor}'`"
OS="`$RPM --eval '%{_os}'`"
-target_platform="`$RPM --eval '%{_target_platform}'`"
-target="`$RPM --eval '%{_target}'`"
-
-rm -f ${DESTDIR}/${pkglibdir}/noarch-${VENDOR}-${OS}
-ln -s ${arch}-${VENDOR}-${OS} ${DESTDIR}/${pkglibdir}/noarch-${VENDOR}-${OS}
-rm -f ${DESTDIR}/${pkglibdir}/noarch-${OS}
-ln -s ${arch}-${VENDOR}-${OS} ${DESTDIR}/${pkglibdir}/noarch-${OS}
+RPMRC_GNU="`$RPM --eval '%{_gnu}'`"
+target_platform="`$RPM --eval '%{?_gnu:%undefine _gnu}%{_target_platform}'|sed -e "$canonarch_sed"`"
+target="`$RPM --eval '%{_target}'|sed -e "$canonarch_sed"`"
case "$arch" in
- i[3456]86) SUBSTS='s_i386_i386_ s_i386_i486_ s_i386_i586_ s_i386_i686_' ;;
+ i[3456]86|athlon) SUBSTS='s_i386_i386_ s_i386_i486_ s_i386_i586_ s_i386_i686_ s_i386_athlon_' ;;
alpha*) SUBSTS='s_alpha_alpha_ s_alpha_alphaev5_ s_alpha_alphaev56_ s_alpha_alphapca56_ s_alpha_alphaev6_ s_alpha_alphaev67_' ;;
sparc*) SUBSTS='s_sparc\(64\|v9\)_sparc_ s_sparc64_sparcv9_;s_sparc\([^v]\|$\)_sparcv9\1_ s_sparcv9_sparc64_;s_sparc\([^6]\|$\)_sparc64\1_' ;;
+ powerpc*|ppc*) SUBSTS='s_ppc64_ppc_ s_ppc\([^6]\|$\)_ppc64\1_' ;;
+ s390*) SUBSTS='s_s390x_s390_ s_s390\([^x]\|$\)_s390x\1_' ;;
*) SUBSTS=y___ ;;
esac
-base_arch=`echo $arch | sed -e 's_i?86_i386_;s_sparc.*_sparc_;s_alpha.*_alpha_'`
for SUBST in $SUBSTS ; do
ARCH=`echo $arch | sed -e $SUBST`
TARGET=`echo $target | sed -e $SUBST`
LIB=lib
- PPD="${DESTDIR}/${pkglibdir}/${ARCH}-${VENDOR}-${OS}"
+ PPD="${DESTDIR}/${pkglibdir}/${ARCH}-${OS}"
[ -d $PPD ] || mkdir $PPD
-# RPMRC_OPTFLAGS="`$RPM --target $TARGET --eval '%{optflags}'`"
RPMRC_OPTFLAGS="`sed -n 's/^optflags: '$ARCH' //p' $RPMRC`"
RPMRC_OPTFLAGS="`echo $RPMRC_OPTFLAGS | sed -e 's, ,\ ,g'`"
+ case $RPMRC_OPTFLAGS in
+ *-g*) ;;
+ *) RPMRC_OPTFLAGS="$RPMRC_OPTFLAGS -g" ;;
+ esac
ARCH_INSTALL_POST='%{nil}'
MULTILIBNO=
sparc-linux) MULTILIBNO=1 ;;
sparcv9-linux) MULTILIBNO=1 ;;
sparc64-linux) ARCH_INSTALL_POST=${pkglibdir}/brp-sparc64-linux; LIB=lib64; MULTILIBNO=2 ;;
+ s390-linux) MULTILIBNO=1 ;;
+ s390x-linux) LIB=lib64; MULTILIBNO=2 ;;
+ ppc-linux) MULTILIBNO=1 ;;
+ ppc64-linux) LIB=lib64; MULTILIBNO=2 ;;
+ i?86-linux|athlon-linux) MULTILIBNO=1 ;;
+ x86_64-linux) LIB=lib64; MULTILIBNO=2 ;;
esac
if [ -n "$MULTILIBNO" ]; then
MULTILIBSED='-e /^@MULTILIBSTART@/,/^@MULTILIBEND@/d'
fi
- cat $PLATFORM | \
- sed -e "s,@RPMRC_OPTFLAGS@,$RPMRC_OPTFLAGS," \
- -e "s,@RPMRC_ARCH@,$base_arch," \
+ case $VENDOR in
+ yellowdog)
+ VENDORSED='-e s,^@yellowdog@,,'
+ ;;
+ pld)
+ VENDORSED='-e s,^@pld@,,'
+ RPMRC_OPTFLAGS="`echo $RPMRC_OPTFLAGS | sed -e "s/ -g/ /"`"
+ ;;
+ mandrake)
+ VENDORSED='-e s,^@mandrake@,,'
+ RPMRC_OPTFLAGS="`echo $RPMRC_OPTFLAGS | sed -e s/i386/i686/`"
+ ;;
+ conectiva)
+ VENDORSED='-e s,^@conectiva@,,'
+ ;;
+ redhat)
+ VENDORSED='-e s,^@redhat@,,'
+ ;;
+ esac
+
+ cat $PLATFORM \
+ | sed -e "s,@RPMRC_OPTFLAGS@,$RPMRC_OPTFLAGS," \
+ -e "s,@RPMRC_ARCH@,$ARCH," \
+ -e "s,@RPMRC_GNU@,$RPMRC_GNU," \
-e "s,@LIB@,$LIB," \
-e "s,@ARCH_INSTALL_POST@,$ARCH_INSTALL_POST," \
-e "s,@DEFAULTDOCDIR@,$DEFAULTDOCDIR," \
- -e 's,\${,%{_,' \
+ -e '/\${\w*:-/!s,\${,%{_,' \
$MULTILIBSED \
+ $VENDORSED \
+ | grep -v '^@' \
> ${PPD}/macros
- #
- # Better try to create these too until the smoke clears. Yuck.
- [ "${ARCH}-${VENDOR}-${OS}" = "${TARGET}" ] || {
- rm -f ${DESTDIR}/${pkglibdir}/${TARGET}
- ln -s ${ARCH}-${VENDOR}-${OS} ${DESTDIR}/${pkglibdir}/${TARGET}
- }
- [ "${ARCH}-${VENDOR}-${OS}" = "${TARGET_PLATFORM}" ] || {
- rm -f ${DESTDIR}/${pkglibdir}/${TARGET_PLATFORM}
- ln -s ${ARCH}-${VENDOR}-${OS} ${DESTDIR}/${pkglibdir}/${TARGET_PLATFORM}
- }
-
done
+{ cd ${DESTDIR}/${pkglibdir}
+ [ -L noarch-${OS} ] && rm -f noarch-${OS} 2>/dev/null
+ mkdir -p noarch-${OS}
+ sed -e "/^%_arch/s,${arch},noarch," ${arch}-${OS}/macros | grep -v '^%optflags' > noarch-${OS}/macros
+# [ -d ${VENDOR} ] || mkdir ${VENDOR}
+# for i in brp-* find-lang.sh find-provides find-requires perl.prov perl.req
+# do
+# sed -e "s,/usr/lib/rpm,/usr/lib/rpm/${VENDOR},g" < $i > ${VENDOR}/$i
+# chmod +x ${VENDOR}/$i
+# done
+## chmod -x ${VENDOR}/perl.req
+# echo "macrofiles: /usr/lib/rpm/macros:/usr/lib/rpm/${VENDOR}/macros:/etc/rpm/macros.specspo:/etc/rpm/macros.cdb" > ${VENDOR}/rpmrc
+# sed -e "s,/usr/lib/rpm,/usr/lib/rpm/${VENDOR},g" < ${arch}-${OS}/macros | grep -v '^%(_arch|optflags)' > ${VENDOR}/macros
+}
+
rm $TEMPRC