[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