make debtransform support packages with .tar.bz2 and .zip tarballs
authorLuboš Luňák <l.lunak@suse.cz>
Wed, 15 Sep 2010 14:45:57 +0000 (16:45 +0200)
committerAdrian Schröter <adrian@suse.de>
Tue, 11 Jan 2011 18:51:01 +0000 (19:51 +0100)
http://lists.opensuse.org/opensuse-buildservice/2009-06/msg00193.html

Makefile
debtransform
debtransformbz2 [new file with mode: 0755]
debtransformzip [new file with mode: 0755]

index e97764b..6c05a47 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -44,6 +44,8 @@ install:
            initscript_qemu_vm \
            substitutedeps \
            debtransform \
+           debtransformbz2 \
+           debtransformzip \
            mkbaselibs \
            mkdrpms \
            createrepomddeps \
index 44b55b9..8f6e862 100755 (executable)
@@ -214,6 +214,23 @@ my $version = $tags->{'VERSION'};
 die("dsc file contains no version\n") unless defined($version);
 $version =~ s/^\d+://; # no epoch in version, please
 
+# transform 
+my $tmptar;
+if ($tarfile =~ /\.tar\.bz2/) {
+    my $old = $tarfile;
+    $tarfile =~ s/\.tar\.bz2/\.tar\.gz/;
+    $tmptar = "$out/$tarfile";
+    print "converting $old to $tarfile\n";
+    system( ( "debtransformbz2", "$old", "$tmptar" )) == 0 || die("cannot transform .tar.bz2 to .tar.gz");
+}
+if ($tarfile =~ /\.zip/) {
+    my $old = $tarfile;
+    $tarfile =~ s/\.zip/\.tar\.gz/;
+    $tmptar = "$out/$tarfile";
+    print "converting $old to $tarfile\n";
+    system( ( "debtransformzip", "$old", "$tmptar" )) == 0 || die("cannot transform .zip to .tar.gz");
+}
+
 my $tardir = $tarfile;
 $tardir =~ s/\.orig\.tar/\.tar/;
 $tardir =~ s/\.tar.*?$//;
@@ -223,7 +240,12 @@ my $v = $version;
 $v =~ s/-[^-]*$//;
 $tarfile =~ /.*(\.tar.*?)$/;
 my $ntarfile = "${name}_$v.orig$1";
-link("$dir/$tarfile", "$out/$ntarfile") || die("link $dir/$tarfile $out/$ntarfile: $!\n");
+if( $tmptar ) {
+  link("$tmptar", "$out/$ntarfile") || die("link $dir/$tarfile $out/$ntarfile: $!\n");
+  unlink("$tmptar");
+} else {
+  link("$dir/$tarfile", "$out/$ntarfile") || die("link $dir/$tarfile $out/$ntarfile: $!\n");
+}
 push @files, addfile("$out/$ntarfile");
 
 open(DIFF, '>', "$out/${name}_$version.diff") || die("$out/${name}_$version.diff: $!\n");
diff --git a/debtransformbz2 b/debtransformbz2
new file mode 100755 (executable)
index 0000000..01c1e9d
--- /dev/null
@@ -0,0 +1,11 @@
+#! /bin/bash
+
+if test $# -ne 2; then
+    exit 1
+fi
+
+bz="$1"
+tar="$2"
+
+bzcat "$bz" | gzip -f - >"$tar" || exit 1
+exit 0
diff --git a/debtransformzip b/debtransformzip
new file mode 100755 (executable)
index 0000000..2054c12
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/bash
+
+if test $# -ne 2; then
+    exit 1
+fi
+
+zip="$1"
+tar="$2"
+
+tmp=$(mktemp -d)
+unzip -q -d "$tmp" -- "$zip" || exit 1
+( cd "$tmp" && tar czO * ) >"$tar" || exit 1
+rm -r "$tmp"
+exit 0