1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222
|
#!/usr/bin/perl
# vim: set ai shiftwidth=4 tabstop=4 expandtab:
#
# mk-origtargz: Rename upstream tarball, optionally changing the compression
# and removing unwanted files.
# Copyright (C) 2014 Joachim Breitner <nomeata@debian.org>
# Copyright (C) 2015 James McCoy <jamessan@debian.org>
#
# It contains code formerly found in uscan.
# Copyright (C) 2002-2006, Julian Gilbey
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
=head1 NAME
mk-origtargz - rename upstream tarball, optionally changing the compression and removing unwanted files
=head1 SYNOPSIS
=over
=item B<mk-origtargz> [I<options>] F<foo-1.0.tar.gz>
=item B<mk-origtargz> B<--help>
=back
=head1 DESCRIPTION
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/../..>. (In F<debian/copyright>, the B<Files-Excluded> and
B<Files-Excluded->I<component> stanzas are a part of the first paragraph and
there is a blank line before the following paragraphs which contain B<Files>
and other stanzas. The B<Files-Included> stanza may be used to ignore
parts of subdirectories specified by the B<Files-Excluded> stanza See
B<uscan>(1) "COPYRIGHT FILE EXAMPLE".)
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> and B<xpi>
are treated in the same way.
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.
B<mk-origtargz> is commonly called via B<uscan>, which first obtains the
upstream tarball.
=head1 OPTIONS
=head2 Metadata options
The following options extend or replace information taken from F<debian/>.
=over
=item B<--package> I<package>
Use I<package> as the name of the Debian source package, and do not require or
use a F<debian/> directory. This option can only be used together with
B<--version>.
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.
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>
Remove files matching the given I<glob> from the tarball, as if it was listed in
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>.
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
will count as being matched.
Both the B<--exclude-file> and B<--copyright-file> options amend the list of
patterns found in F<debian/copyright>. If you do not want to read that file,
you will have to use B<--package>.
=item B<--signature> I<signature-mode>
Set I<signature-mode>:
=over
=item 0 for no signature
=item 1 for normal detached signature
=item 2 for signature on decompressed
=item 3 for self signature
=back
=item B<--signature-file> I<signature-file>
Use I<signature-file> as the signature file corresponding to the Debian source
package to create a B<dpkg-source> (post-stretch) compatible signature file.
(optional)
=back
=head2 Action options
These options specify what exactly B<mk-origtargz> should do. The options
B<--copy>, B<--rename> and B<--symlink> are mutually exclusive.
=over
=item B<--symlink>
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>, B<xpi> or B<zst> 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).
=item B<--rename>
Rename the original file.
If the file has to be modified (because it is a B<zip>, B<xpi>, B<zst> file,
because of B<--repack> or B<Files-Excluded>), this implies that the original
file is deleted afterwards.
=item B<--repack>
If the given file is not compressed using the desired format (see
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.
=item B<--force-repack>
Recompress even if file is compressed using the desired format and no files
were deleted.
=item B<-c>, B<--component> I<componentname>
Use <componentname> as the component name for the secondary upstream tarball.
Set I<componentname> as the component name. This is used only for the
secondary upstream tarball of the Debian source package.
Then I<packagename_version.orig-componentname.tar.gz> is created.
=item B<--compression> [ B<gzip> | B<bzip2> | B<lzma> | B<xz> | B<default> ]
The default method is B<xz>. When mk-origtargz is launched in a debian source
repository which format is "1.0" or undefined, the method switches to B<gzip>.
=item B<-C>, B<--directory> I<directory>
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>.
=back
=cut
#=head1 CONFIGURATION VARIABLES
#
#The two configuration files F</etc/devscripts.conf> and
#F<~/.devscripts> are sourced by a shell in that order to set
#configuration variables. Command line options can be used to override
#configuration file settings. Environment variable settings are ignored
#for this purpose. The currently recognised variables are:
=head1 SEE ALSO
B<uscan>(1), B<uupdate>(1)
=head1 AUTHOR
B<mk-origtargz> and this manpage have been written by Joachim Breitner
<I<nomeata@debian.org>>.
=cut
use Devscripts::MkOrigtargz;
exit Devscripts::MkOrigtargz->new->do;
|