X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=installplatform;h=78528812b51597894db3605a0edefa3d859e26f9;hb=dc338f74bbe69185d09a419ecda8e5fa35bb4acb;hp=5e9bd738240890caa51bbd609e61ea7d9a3c6c2a;hpb=7a77e1fd9fcd657fec32704628b77f6104cf5103;p=platform%2Fupstream%2Frpm.git diff --git a/installplatform b/installplatform index 5e9bd73..7852881 100755 --- a/installplatform +++ b/installplatform @@ -5,51 +5,12 @@ pkglibdir="${pkglibdir:-/usr/lib/rpm}" platformdir="${pkglibdir}/platform" RPMRC="${1:-rpmrc}" -MACROS="${2:-macros}" -PLATFORM="${3:-platform}" - -if grep /share/ $PLATFORM > /dev/null 2>&1 ; then - DEFAULTDOCDIR='%{_usr}/share/doc' -else - DEFAULTDOCDIR='%{_usr}/doc' -fi - -TEMPRC="/tmp/rpmrc.$$" -cat << E_O_F > $TEMPRC -include: $RPMRC -E_O_F - -RPM="./rpm --rcfile=$TEMPRC --macros=$MACROS" - -canonarch_sed='s_i.86_i386_;s_pentium[34]_i386_;s_athlon_i386_;s_sparc[^-]*_sparc_;s_alpha[^-]*_alpha_;s_arm[^-]*_arm_;s_\(powerpc\|ppc\)[^-]*_ppc_;s,\(ia32e\|amd64\),x86_64,' -arch="`$RPM --eval '%{_arch}'|sed -e "$canonarch_sed"`" -VENDOR="`$RPM --eval '%{_vendor}'`" -OS="`$RPM --eval '%{_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|pentium[34]|athlon|geode) SUBSTS='s_i386_i386_ s_i386_i486_ s_i386_i586_ s_i386_i686_ s_i386_pentium3_ s_i386_pentium4_ s_i386_athlon_ s_i386_geode_' ;; - alpha*) SUBSTS='s_alpha_alpha_ s_alpha_alphaev5_ s_alpha_alphaev56_ s_alpha_alphapca56_ s_alpha_alphaev6_ s_alpha_alphaev67_' ;; - arm*) SUBSTS='s_arm_armv3l_ s_arm_armv4l_ s_arm_armv4tl_ s_arm_armv5tel_ s_arm_armv5tejl_ s_arm_armv6l_' ;; - sparc*) SUBSTS='s_sparc\(64\|64v\|v9v\|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\([^6ip]\|$\)_ppc64\1_ s_ppc\([^6ip]\|$\)_ppciseries_ s_ppc\([^6ip]\|$\)_ppcpseries_ s_ppc\([^6ip]\|$\)_ppc64iseries_ s_ppc\([^6ip]\|$\)_ppc64pseries_' ;; - s390*) SUBSTS='s_s390x_s390_ s_s390\([^x]\|$\)_s390x\1_' ;; - x86_64|amd64|ia32e) SUBSTS='s,x86_64,x86_64, s,x86_64,ia32e, s,x86_64,amd64, s,x86_64,i386, s,x86_64,i486, s,x86_64,i586, s,x86_64,i686, s,x86_64,pentium3, s,x86_64,pentium4, s,x86_64,athlon, s,x86_64,geode,' ;; - *) SUBSTS=y___ ;; -esac - -for SUBST in $SUBSTS ; do - ARCH=`echo $arch | sed -e $SUBST` - TARGET_PLATFORM=`echo $target_platform | sed -e $SUBST` - TARGET=`echo $target | sed -e $SUBST` - LIB=lib - - PPD="${DESTDIR}/${platformdir}/${ARCH}-${OS}" - - [ -d $PPD ] || mkdir $PPD +PLATFORM="${2:-platform}" +VENDOR="${3}" +OS="${4}" +RPMRC_GNU="${5}" +for ARCH in noarch `grep ^arch_canon $RPMRC | cut -d: -f2`; do RPMRC_OPTFLAGS="`sed -n 's/^optflags: '$ARCH' //p' $RPMRC`" RPMRC_OPTFLAGS="`echo $RPMRC_OPTFLAGS | sed -e 's, ,\ ,g'`" case $RPMRC_OPTFLAGS in @@ -58,82 +19,124 @@ for SUBST in $SUBSTS ; do esac ARCH_INSTALL_POST='%{nil}' - MULTILIBNO= - case "${ARCH}-${OS}" in - sparc-linux) MULTILIBNO=1 ;; - sparcv8-linux) MULTILIBNO=1 ;; - sparcv9-linux) MULTILIBNO=1 ;; - sparcv9v-linux) MULTILIBNO=1 ;; - sparc64-linux) ARCH_INSTALL_POST=${pkglibdir}/brp-sparc64-linux; LIB=lib64; MULTILIBNO=2 ;; - sparc64v-linux) ARCH_INSTALL_PORT=${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|pentium?-linux|athlon-linux|geode-linux) MULTILIBNO=1 ;; - x86_64-linux|amd64-linux|ia32e-linux) LIB=lib64; MULTILIBNO=2 ;; + LIB=lib + + # XXX FIXME: incomplete and quite likely wrong too in places, + # consult various arch folks for correct names etc. + ISANAME= + ISABITS= + CANONARCH= + CANONCOLOR= + FILTER=cat + case "${ARCH}" in + sparc64*) + ISANAME=sparc + ISABITS=64 + CANONARCH=sparc64 + CANONCOLOR=3 + ;; + sparc*) + ISANAME=sparc + ISABITS=32 + CANONARCH=sparc + CANONCOLOR=0 + ;; + s390) + ISANAME=s390 + ISABITS=32 + CANONARCH=s390 + CANONCOLOR=0 + ;; + s390x) + ISANAME=s390 + ISABITS=64 + CANONARCH=s390x + CANONCOLOR=3 + ;; + ppc64*) + ISANAME=ppc + ISABITS=64 + CANONARCH=ppc64 + CANONCOLOR=3 + ;; + ppc*) + ISANAME=ppc + ISABITS=32 + CANONARCH=ppc + CANONCOLOR=0 + ;; + i?86|pentium?|athlon|geode) + ISANAME=x86 + ISABITS=32 + CANONARCH=i386 + CANONCOLOR=0 + ;; + x86_64|amd64|ia32e) + ISANAME=x86 + ISABITS=64 + CANONARCH=x86_64 + CANONCOLOR=3 + ;; + ia64) + ISANAME=ia + ISABITS=64 + CANONARCH=ia64 + CANONCOLOR=2 + ;; + sh*) + ISANAME=sh + ISABITS=32 + CANONARCH=${ARCH} + CANONCOLOR=0 + ;; + arm*) + ISANAME=`echo ${ARCH} | sed "s/^\([^-]*\)-.*/\1/"` + ISABITS=32 + CANONARCH=arm + CANONCOLOR=0 + ;; + alpha*) + ISANAME=alpha + ISABITS=64 + CANONARCH=alpha + CANONCOLOR=0 + ;; + aarch64) + ISANAME=aarch + ISABITS=64 + CANONARCH=aarch64 + CANONCOLOR=3 + ;; + noarch) + CANONARCH=noarch + CANONCOLOR=0 + FILTER="grep -v -E ^(%optflag|%__isa)" + ;; esac - if [ -n "$MULTILIBNO" ]; then - MULTILIBSED='-e /^@MULTILIB/d -e s,@MULTILIBNO@,'$MULTILIBNO, - else - MULTILIBSED='-e /^@MULTILIBSTART@/,/^@MULTILIBEND@/d' - fi + # skip architectures for which we dont have full config parameters + [ -z "$CANONARCH" ] && continue - 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@,,' - ;; - apple) - VENDORSED='-e s,^@apple@,,' - ;; - esac + if [ "$OS" = "linux" ] && [ "$CANONCOLOR" = 3 ]; then + LIB=${LIB}64 + fi - CANONARCH="`echo $ARCH|sed -e "$canonarch_sed"`" + PPD="${DESTDIR}/${platformdir}/${ARCH}-${OS}" + [ -d $PPD ] || mkdir -p $PPD - mkdir -p "${DESTDIR}/${platformdir}" cat $PLATFORM \ - | sed -e "s,@RPMRC_OPTFLAGS@,$RPMRC_OPTFLAGS," \ - -e "s,$arch,$CANONARCH," \ + | sed -e "s#@RPMRC_OPTFLAGS@#$RPMRC_OPTFLAGS#" \ + -e "s,@RPMCANONARCH@,$CANONARCH,g" \ + -e "s,@RPMCANONCOLOR@,$CANONCOLOR," \ -e "s,@RPMRC_GNU@,$RPMRC_GNU," \ -e "s,@LIB@,$LIB," \ -e "s,@ARCH_INSTALL_POST@,$ARCH_INSTALL_POST," \ - -e "s,@DEFAULTDOCDIR@,$DEFAULTDOCDIR," \ -e '/\${\w*:-/!s,\${,%{_,' \ - $MULTILIBSED \ - $VENDORSED \ + -e "s,@ISANAME@,$ISANAME," \ + -e "s,@ISABITS@,$ISABITS," \ + -e "s,^@${VENDOR}@,," \ | grep -v '^@' \ + | ${FILTER} \ > ${PPD}/macros done - -{ cd ${DESTDIR}/${platformdir} - [ -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