[devscripts] 01/01: mk-origtargz: xpi support

Osamu Aoki osamu at moszumanska.debian.org
Thu Dec 3 15:28:32 UTC 2015


This is an automated email from the git hooks/post-receive script.

osamu pushed a commit to branch master
in repository devscripts.

commit a8f3e674da63973fa9cb4780e7b857b452589cdd
Author: Osamu Aoki <osamu at debian.org>
Date:   Thu Dec 3 23:06:00 2015 +0900

    mk-origtargz: xpi support
    
    Closes: #751984
    
    Update manpages and debian/control for the mozilla-devscripts package
    required for xpi-unpack.
---
 debian/changelog        |  1 +
 debian/control          |  1 +
 scripts/mk-origtargz.pl | 73 +++++++++++++++++++++++++++++++++++--------------
 scripts/uscan.pl        | 10 ++++---
 test/test_mk-origtargz  |  4 ++-
 5 files changed, 63 insertions(+), 26 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index e94e917..1dc53c0 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -90,6 +90,7 @@ devscripts (2.15.10) UNRELEASED; urgency=medium
     + Support component name for the multiple upstream tarball support.
     + Fix Files-Excluded for duplicate entries. (Closes: #762263)
     + Add --unzipopt option. (Closes: #737843)
+    + Add xpi files support. (Closes: #751984)
   * debian/control, dscverify, who-permits-upload, uscan:
     + Add gnupg2/gpgv2 as an alternative option to gnupg/gpgv. (Closes: #788414)
 
diff --git a/debian/control b/debian/control
index 803552f..1be0f48 100644
--- a/debian/control
+++ b/debian/control
@@ -85,6 +85,7 @@ Suggests: bsd-mailx | mailx,
           libterm-size-perl,
           libtimedate-perl,
           libyaml-syck-perl,
+          mozilla-devscripts,
           mutt,
           ssh-client,
           svn-buildpackage,
diff --git a/scripts/mk-origtargz.pl b/scripts/mk-origtargz.pl
index 0d0aceb..e275c13 100644
--- a/scripts/mk-origtargz.pl
+++ b/scripts/mk-origtargz.pl
@@ -41,9 +41,14 @@ mk-origtargz - rename upstream tarball, optionally changing the compression and
 B<mk-origtargz> renames the given file to match what is expected by
 B<dpkg-buildpackage>, based on the source package name and version in
 F<debian/changelog>. It can convert B<zip> to B<tar>, optionally change the
-compression scheme and remove files according to B<Files-Excluded> 
-and B<Files-Excluded->I<component> in
-F<debian/copyright>. The resulting file is placed in F<debian/../..>.
+compression scheme and remove files according to B<Files-Excluded> and
+B<Files-Excluded->I<component> in F<debian/copyright>. The resulting file is
+placed in F<debian/../..>.
+
+The archive type for B<zip> is detected by "B<file --dereference --brief
+--mime-type>" command.  So any B<zip> type archives such as B<jar> are treated
+in the same way.  The B<xpi> archive is detected by its extension and is
+handled properly using the B<xpi-unpack> command.
 
 If the package name is given via the B<--package> option, no information is
 read from F<debian/>, and the result file is placed in the current directory.
@@ -69,9 +74,11 @@ The default is to use the package name of the first entry in F<debian/changelog>
 
 =item B<-v>, B<--version> I<version>
 
-Use I<version> as the version of the package. This needs to be the upstream version portion of a full Debian version, i.e. no Debian revision, no epoch.
+Use I<version> as the version of the package. This needs to be the upstream
+version portion of a full Debian version, i.e. no Debian revision, no epoch.
 
-The default is to use the upstream portion of the version of the first entry in F<debian/changelog>.
+The default is to use the upstream portion of the version of the first entry in
+F<debian/changelog>.
 
 =item B<--exclude-file> I<glob>
 
@@ -80,7 +87,11 @@ B<Files-Excluded>.
 
 =item B<--copyright-file> I<filename>
 
-Remove files matching the patterns found in I<filename>, which should have the format of a Debian F<copyright> file (B<Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/> to be precise). Errors parsing that file are silently ignored, exactly as is the case with F<debian/copyright>.
+Remove files matching the patterns found in I<filename>, which should have the
+format of a Debian F<copyright> file 
+(B<Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/>
+to be precise). Errors parsing that file are silently ignored, exactly as is
+the case with F<debian/copyright>.
 
 Unmatched patterns will emit a warning so the user can verify whether it is
 correct.  If there are multiple patterns which match a file, only the last one
@@ -104,18 +115,21 @@ B<--copy>, B<--rename> and B<--symlink> are mutually exclusive.
 Make the resulting file a symlink to the given original file. (This is the
 default behaviour.)
 
-If the file has to be modified (because it is a B<zip> file, because of
-B<--repack> or B<Files-Excluded>), this option behaves like B<--copy>.
+If the file has to be modified (because it is a B<zip>, or B<xpi> file, because
+of B<--repack> or B<Files-Excluded>), this option behaves like B<--copy>.
 
 =item B<--copy>
 
-Make the resulting file a copy of the original file (unless it has to be modified, of course).
+Make the resulting file a copy of the original file (unless it has to be
+modified, of course).
 
 =item B<--rename>
 
 Rename the original file.
 
-If the file has to be modified (because it is a B<zip> file, because of B<--repack> or B<Files-Excluded>), this implies that the original file is deleted afterwards.
+If the file has to be modified (because it is a B<zip>, or B<xpi> file, because
+of B<--repack> or B<Files-Excluded>), this implies that the original file is
+deleted afterwards.
 
 =item B<--repack>
 
@@ -124,7 +138,8 @@ B<--compression>), recompress it.
 
 =item B<-S>, B<--repack-suffix> I<suffix>
 
-If the file has to be modified, because of B<Files-Excluded>, append I<suffix> to the upstream version.
+If the file has to be modified, because of B<Files-Excluded>, append I<suffix>
+to the upstream version.
 
 =item B<-c>, B<--component> I<componentname>
 
@@ -135,7 +150,9 @@ Then I<packagename_version.orig-componentname.tar.gz> is created.
 
 =item B<--compression> [ B<gzip> | B<bzip2> | B<lzma> | B<xz> ]
 
-If B<--repack> is used, or if the given file is a B<zip> file, ensure that the resulting file is compressed using the given scheme. The default is B<gzip>.
+If B<--repack> is used, or if the given file is a B<zip> or B<xpi> file, ensure
+that the resulting file is compressed using the given scheme. The default is
+B<gzip>.
 
 =item B<-C>, B<--directory> I<directory>
 
@@ -143,7 +160,8 @@ Put the resulting file in the given directory.
 
 =item B<--unzipopt> I<options>
 
-Add the extra options to use with the B<unzip> command such as B<-a>, B<-aa>, and B<-b>.
+Add the extra options to use with the B<unzip> command such as B<-a>, B<-aa>,
+and B<-b>.
 
 =back
 
@@ -347,6 +365,7 @@ my $mime = compression_guess_from_file($upstream);
 
 my $is_zipfile = (defined $mime and $mime eq 'zip');
 my $is_tarfile = $upstream =~ $tar_regex;
+my $is_xpifile = $upstream =~ /\.xpi$/i;
 
 unless ($is_zipfile or $is_tarfile) {
     # TODO: Should we ignore the name and only look at what file knows?
@@ -380,18 +399,30 @@ my $zipfile_deleted = 0;
 
 # If the file is a zipfile, we need to create a tarfile from it.
 if ($is_zipfile) {
-    system('command -v unzip >/dev/null 2>&1') >> 8 == 0
-	or die("unzip binary not found. You need to install the package unzip to be able to repack .zip upstream archives.\n");
+    if ($is_xpifile) {
+	system('command -v xpi-unpack >/dev/null 2>&1') >> 8 == 0
+	    or die("xpi-unpack binary not found. You need to install the package mozilla-devscripts to be able to repack .xpi upstream archives.\n");
+    } else {
+	system('command -v unzip >/dev/null 2>&1') >> 8 == 0
+	    or die("unzip binary not found. You need to install the package unzip to be able to repack .zip upstream archives.\n");
+    }
 
     my $tempdir = tempdir ("uscanXXXX", TMPDIR => 1, CLEANUP => 1);
     # Parent of the target directory should be under our control
     $tempdir .= '/repack';
-    mkdir $tempdir or die("Unable to mkdir($tempdir): $!\n");
-    my @cmd = ('unzip', '-q');
-    push @cmd, split ' ', $unzipopt if defined $unzipopt;
-    push @cmd, ('-d', $tempdir, $upstream_tar);
-    system(@cmd) == 0
-	or die("Repacking from zip or jar failed (could not unzip)\n");
+    my @cmd;
+    if ($is_xpifile) {
+	@cmd = ('xpi-unpack', $upstream_tar, $tempdir);
+	system(@cmd) >> 8 == 0
+	    or die("Repacking from xpi failed (could not xpi-unpack)\n");
+    } else {
+	mkdir $tempdir or die("Unable to mkdir($tempdir): $!\n");
+	@cmd = ('unzip', '-q');
+	push @cmd, split ' ', $unzipopt if defined $unzipopt;
+	push @cmd, ('-d', $tempdir, $upstream_tar);
+	system(@cmd) >> 8 == 0
+	    or die("Repacking from zip or jar failed (could not unzip)\n");
+    }
 
     # Figure out the top-level contents of the tarball.
     # If we'd pass "." to tar we'd get the same contents, but the filenames would
diff --git a/scripts/uscan.pl b/scripts/uscan.pl
index a4c0fff..189fd52 100755
--- a/scripts/uscan.pl
+++ b/scripts/uscan.pl
@@ -1375,10 +1375,12 @@ Instead of symlinking as described above, rename the downloaded files.
 
 =item B<--repack>
 
-After having downloaded an lzma tar, xz tar, bzip tar or zip archive, repack it
-to the specified compression (see B<--compression>). The unzip package must be installed in
-order to repack .zip archives, the xz-utils package must be installed to repack
-lzma or xz tar archives.
+After having downloaded an lzma tar, xz tar, bzip tar, gz tar, zip, jar, xip
+archive, repack it to the specified compression (see B<--compression>).
+
+The unzip package must be installed in order to repack zip and jar archives,
+the mozilla-devscripts package must be installed to repack xip archives, and
+the xz-utils package must be installed to repack lzma or xz tar archives.
 
 =item B<--compression> [ B<gzip> | B<bzip2> | B<lzma> | B<xz> ]
 
diff --git a/test/test_mk-origtargz b/test/test_mk-origtargz
index dd7462c..6da8022 100755
--- a/test/test_mk-origtargz
+++ b/test/test_mk-origtargz
@@ -370,7 +370,9 @@ testRepackXpi2XZ() {
 	makeZipFile
 	mv $TMPDIR/foo-0.1.zip $TMPDIR/foo-0.1.xpi
 	run_mk_origtargz "" "" \
-		"Successfully repacked foo-0.1.xpi as foo_0.1.orig.tar.xz." \
+		"Unpacking foo-0.1.xpi
+Unpacked xpi file.
+Successfully repacked foo-0.1.xpi as foo_0.1.orig.tar.xz." \
 		--package foo --version 0.1 foo-0.1.xpi --compression xz
 	assertTrue "original xpi file does not exist" "[ -e $TMPDIR/foo-0.1.xpi ]"
 	assertTrue "result does not exist" "[ -e $TMPDIR/foo_0.1.orig.tar.xz ]"

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/collab-maint/devscripts.git



More information about the devscripts-devel mailing list