/usr/bin/make-octave-forge-debpkg is in octave-pkg-dev 1.1.3.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
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 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 | #!/usr/bin/perl
# make-octave-forge-debpkg: Generate a Debian package from the sources of
# an Octave-Forge package from scratch
# This file is part of the octave-pkg-dev Debian package
# Copyright (c) 2012 Rafael Laboissiere <rafael@laboissiere.net>
#
# 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 3 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, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
=pod
=head1 NAME
make-octave-forge-debpkg -- Generate a Debian package from the sources of an Octave-Forge package
=head1 SYNOPSIS
=over
=item B<make-octave-forge-debpkg>
=back
=head1 DESCRIPTION
B<make-octave-forge-debpkg> is a helper script for generating a first
version of a Debian package for an Octave-Forge package. The command should
be launched from the top directory of the unpacked sources of an
Octave-Forge packages. A file called DESCRIPTION must be present, from
which information about the package is gathered. The following files
are generated with sensible contents, although they need further editing:
=over
=item debian/changelog
=item debian/compat
=item debian/control
=item debian/copyright
=item debian/rules
=item debian/source/format
=item debian/watch
=back
=head1 ENVIRONMENT VARIABLES
The environment variables B<DEBFULLNAME> and B<DEBEMAIL> are used for
generating the identity of the developer, which will appear in
debian/changelog and debian/copyright. If they do not exist, B<FULLNAME>
and B<EMAIL> are used instead.
=head1 DISCLAIMER
B<make-octave-forge-debpkg> is distributed in the hope that it will be useful,
but B<without any warranty>; without even the implied warranty of
B<merchantability> or B<fitness for a particular purpose>.
=head1 COPYRIGHT
Copyright 2012 Rafael Laboissiere
This script is free software; you can redistribute it and/or
modify it under the terms of the GNU GPL, v3 or later.
=head1 AUTHOR
Rafael Laboissiere E<lt>rafael@laboissiere.netE<gt>
=cut
### Get program name
(my $prog = $0) =~ s|.*/||;
### Function for yelling on errrors
sub croak ($) {
my $message = shift;
die "$prog:E: $message\n"
}
### The pkgdata hash will store the data in the DESCRIPTION file
my %pkgdata;
### Check whether a given field exists in the DESCRIPTION file and exit the
### program with an error message, in the case the field does not exist
sub check ($) {
my $field = shift;
exists $pkgdata{$field} or croak "$field not found in DESCRIPTION";
}
### File DESCRIPTION is not present. Yell loudly.
-f "DESCRIPTION" or croak "File DESCRIPTION not found";
### Read the fields present in the DESCRIPTION file
open (FID, "< DESCRIPTION");
/([^:]+): (.*)/ and $pkgdata{$1} = $2 while (<FID>);
close FID;
### Check for some mandatory fields
check ("Name");
my $name = lc $pkgdata{Name};
check ("Version");
my $version = $pkgdata{Version};
check ("Description");
my $description = $pkgdata{Description};
### Decide on the package's Architecture based on the presence of the src/
### directory, which typically contains C++ files to be compiled.
my $architecture = -d "src" ? "any" : "all";
### Create the debian/ directory, if it does not exist.
-d "debian" or mkdir "debian";
### Create the debian/compat file.
my $compat = 9;
open (FID, "> debian/compat");
print FID $compat;
close FID;
### Create the debian/watch file.
open (FID, "> debian/watch");
print FID "version=3
http://sf.net/octave/$name-(.+)\\.tar\\.gz
";
close FID;
### Create the debian/changelog file.
my $date = qx {date --rfc-2822};
chomp $date;
my $developer = exists $ENV{DEBFULLNAME} ? $ENV{DEBFULLNAME}
: exists $ENV{FULLNAME} ? $ENV{FULLNAME}
: "Joe Developer";
my $email = exists $ENV{DEBEMAIL} ? $ENV{DEBEMAIL}
: exists $ENV{EMAIL} ? $ENV{EMAIL}
: "joe\@developer.org";
my $author = "$developer <$email>";
open (FID, "> debian/changelog");
print FID "octave-$name ($version-1) unstable; urgency=low
* Initial release (closes: #XXXXXX)
-- $author $date
";
close FID;
### Create the debian/rules file.
open (FID, "> debian/rules");
print FID "#!/usr/bin/make -f
# -*- makefile -*-
include /usr/share/cdbs/1/class/octave-pkg.mk
";
close FID;
system ("chmod +x debian/rules");
### Create the debian/control file.
my $uploaders = "Sébastien Villemot <sebastien\@debian.org>,
Rafael Laboissiere <rafael\@laboissiere.net>,
Mike Miller <mtmiller\@debian.org>";
if ($uploaders == "") {
$uploaders = "Uploaders: $uploaders
";
}
my $shlibs = "";
if ($architecture eq "any") {
print "$architecture\n";
$shlibs = ", \${shlibs:Depends}";
}
open (FID, "> debian/control");
print FID "Source: octave-$name
Section: math
Priority: optional
Maintainer: Debian Octave Group <pkg-octave-devel\@lists.alioth.debian.org>
${uploaders}Build-Depends: debhelper (>= $compat), cdbs, octave-pkg-dev (>= 1.1.3)
Standards-Version: 3.9.5
Homepage: http://octave.sourceforge.net/$name/
Vcs-Git: git://anonscm.debian.org/pkg-octave/octave-$name.git
Vcs-Browser: http://anonscm.debian.org/gitweb/?p=pkg-octave/octave-$name.git
Package: octave-$name
Architecture: $architecture
Depends: \${misc:Depends}, \${octave:Depends}$shlibs
Description: $description
#FIXME#
.
This Octave add-on package is part of the Octave-Forge project.
";
close FID;
### Create the debian/source/format file.
-d "debian/source" or mkdir "debian/source";
open (FID, "> debian/source/format");
print FID "3.0 (quilt)";
close FID;
### Create the debian/copyright file.
system ("licensecheck -r --copyright -c '\\.m|\\.cc|\\.c|\\.h|\\.f' . "
. "| /usr/lib/cdbs/licensecheck2dep5 > debian/copyright");
my $year = qx {date +%Y};
chomp $year;
### Create the Debian specific part to the debian/control file.
open (FID, ">> debian/copyright");
print FID "Files: debian/*
Copyright: $year $author
License: GPL-3+
License: GPL-3+
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 3 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 <http://www.gnu.org/licenses/>.
.
On Debian systems, the complete text of the GNU General Public
License, version 3, can be found in the file
`/usr/share/common-licenses/GPL-3'.
";
close FID;
|