view pidgin/win32/nsis/rpm2zip.sh @ 30848:77ac5f4584bd

I'm pretty sure this is a logical operation, not bitwise.
author Elliott Sales de Andrade <qulogic@pidgin.im>
date Sat, 14 Aug 2010 05:53:42 +0000
parents 23b3627ecec3
children
line wrap: on
line source

#!/bin/sh

here=`pwd`
for F in $*; do
    case $F in
        mingw32-*.noarch.rpm|mingw64-*.noarch.rpm|*/mingw32-*.noarch.rpm|*/mingw64-*.noarch.rpm)
        package=`rpm -qp $F 2>/dev/null`
        case $package in
            mingw32-*|mingw64-*)
            case $package in
                mingw32-*)
                cpu=i686
                bits=32
                ;;
                mingw64-*)
                cpu=x86_64
                bits=64
                ;;
            esac
            origname=`rpm -qp --queryformat='%{NAME}'  $F 2>/dev/null`
            name=$origname
            case $name in
                *-devel)
                name=${name%el}
                ;;
            esac
            shortpackage="$name"_`rpm -qp --queryformat='%{VERSION}-%{RELEASE}'_win${bits} $F 2>/dev/null`
            shortpackage=${shortpackage#mingw32-}
            shortpackage=${shortpackage#mingw64-}
            shortname=$name
            shortname=${shortname#mingw32-}
            shortname=${shortname#mingw64-}
            tmp=`mktemp -d`
            #rpm2cpio $F | lzcat | (cd $tmp && cpio --quiet -id)
            rpm2cpio $F |  (cd $tmp && cpio --quiet -id)
            (
                cd $tmp
                zipfile="$here/$shortpackage.zip"
                rm -f $zipfile
                (cd usr/${cpu}-pc-mingw32/sys-root/mingw && zip -q -r -D $zipfile .)
                if [ -d usr/share/doc/packages/$origname ] ; then
                    mv usr/share/doc/packages/$origname usr/share/doc/packages/$shortname
                    (cd usr && zip -q -r -D $zipfile share/doc/packages/$shortname)
                fi
                mkdir -p manifest
                unzip -l $zipfile >manifest/$shortpackage.mft
                zip -q $zipfile manifest/$shortpackage.mft
                N=`unzip -l $zipfile | wc -l | sed -e 's/^ *\([0-9]*\).*/\1/'`
                Nm1=`expr $N - 1`
                unzip -l $zipfile | sed -e "1,3 d" -e "$Nm1,$N d" | awk '{print $4}' | grep -v -E '/$' >manifest/$shortpackage.mft
                zip -q $zipfile manifest/$shortpackage.mft
                echo $zipfile
            )
            rm -rf $tmp
            ;;
            *)
            echo $F is not a mingw32/64 RPM package >&2
            ;;
        esac
        ;;
        *)
        echo $F is not a mingw32/64 RPM package >&2
        ;;
    esac
done