Convert rows into columns using awk or perl

hi friends,
i am able to parse cvs diff file using bit of cut and grep commands to produce following output in text file
'''cvs-diff.txt'''

Package-Name = dev-freetype.

Old-Version = 2.4.8

New-Version = 2.4.10

Patches-removed = freetype-2.4.8-cross-compile.patch freetype-2.4.8-opentype.patch freetype-2.4.8-yahoo-widget.patch

Patches-added = freetype-2.4.10-cross-compile.patch freetype-2.4.10-opentype.patch freetype-2.4.10-yahoo-widget.patch
*****

Package-Name = dev-glib.

Old-Version = 2.24.2

New-Version = 2.32.0

Patches-removed = glib-patch1.patch

Patches-added =  glib-patch2.patch
*****

Package-Name = host-elfutils.

Old-Version = 0.130

New-Version = 0.152

Patches-removed = elfutils-strip-copy-symtab.patch elfutils-portability.patch elfutils-robustify.patch elfutils-0.130-fixes.patch elfutils-0.130-fix-libelf-off64_t.patch elfutils-0.130-sigfpe-fix.patch

Patches-added = elfutils-%{version}-portability.patch elfutils-%{version}-robustify.patch
*****

But now i want the output in rows and columns something like
this

Package-Name      Old-Version    New-Version     Patches-removed                Patches-added 

dev-freetype.      2.4.8          2.4.10      freetype-2.4.8-cross-compile.patch        freetype-2.4.10-cross-compile.patch
                                              freetype-2.4.8-opentype.patch              freetype-2.4.10-opentype.patch
                                              freetype-2.4.8-yahoo-widget.patch          freetype-2.4.10-yahoo-widget.patch






dev-glib.           2.24.2         2.32.0        glib-patch1.patch                       glib-patch2.patch







 host-elfutils.     0.130            0.152        elfutils-strip-copy-symtab.patch        elfutils-%{version}-portability.patch
                                                  elfutils-portability.patch              elfutils-%{version}-robustify.patch  

any suggestions will be really helpfull . thx in advance

#!/usr/bin/perl

$complete=0;
while(<DATA>){
    push @{$data{$1}},$2 if /^([\w-]+)\s=\s(.+)$/;
    push @headers,$1 if (! $complete);
    $complete++ if/^\*+$/;
}
print join("\t\t",@headers),"\n";
for $index (0..$complete){
    for $field (@headers){
        print "$data{$field}->[$index]\t\t";
    }
    print "\n";
}
__DATA__
Package-Name = dev-freetype.

Old-Version = 2.4.8

New-Version = 2.4.10

Patches-removed = freetype-2.4.8-cross-compile.patch freetype-2.4.8-opentype.patch freetype-2.4.8-yahoo-widget.patch

Patches-added = freetype-2.4.10-cross-compile.patch freetype-2.4.10-opentype.patch freetype-2.4.10-yahoo-widget.patch
*****

Package-Name = dev-glib.

Old-Version = 2.24.2

New-Version = 2.32.0

Patches-removed = glib-patch1.patch

Patches-added =  glib-patch2.patch
*****

Package-Name = host-elfutils.

Old-Version = 0.130

New-Version = 0.152

Patches-removed = elfutils-strip-copy-symtab.patch elfutils-portability.patch elfutils-robustify.patch elfutils-0.130-fixes.patch elfutils-0.130-fix-libelf-off64_t.patch
elfutils-0.130-sigfpe-fix.patch

Patches-added = elfutils-%{version}-portability.patch elfutils-%{version}-robustify.patch
*****

Try ..

There is some problem for text alignments..

awk '! /\*\*\*\*/{A[$1]++;for(i=3;i<=NF;i++){arr[$1,++B[$1]]=$i}}END{for(i in A){s=s?s"\t"i:i;if(n<B){n=B}}print s;s="";
    for(i=1;i<=n;i++){for(j in A){s=s?s"\t"arr[j,i]:arr[j,i]}print s;s=""}}' file