mirror of
https://code.mensbeam.com/MensBeam/Arsse.git
synced 2024-12-22 13:12:41 +00:00
Enhancements to Debian files
This commit is contained in:
parent
b7909d7cd3
commit
e653fb3f73
4 changed files with 63 additions and 16 deletions
42
RoboFile.php
42
RoboFile.php
|
@ -248,20 +248,28 @@ class RoboFile extends \Robo\Tasks {
|
||||||
|
|
||||||
/** Packages a release tarball into a Debian package */
|
/** Packages a release tarball into a Debian package */
|
||||||
public function packageDeb(string $tarball): Result {
|
public function packageDeb(string $tarball): Result {
|
||||||
|
// determine the "upstream" (tagged) version
|
||||||
|
if (preg_match('/^arsse-(\d+(?:\.\d+)*)/', basename($tarball, $m))) {
|
||||||
|
$version = $m[1];
|
||||||
|
$base = $dir."arsse-$version";
|
||||||
|
} else {
|
||||||
|
throw new \Exception("Tarball is not named correctly");
|
||||||
|
}
|
||||||
$t = $this->collectionBuilder();
|
$t = $this->collectionBuilder();
|
||||||
$dir = $t->tmpDir().\DIRECTORY_SEPARATOR;
|
$dir = $t->workDir("~/temp2").\DIRECTORY_SEPARATOR;
|
||||||
// name the "orig" tarball
|
|
||||||
$orig = $dir.str_replace(".tar.gz", ".orig.tar.gz", str_replace("arsse-", "arsse_", basename($tarball)));
|
|
||||||
// copy the tarball
|
// copy the tarball
|
||||||
$t->addTask($this->taskFilesystemStack()->copy($tarball, $orig));
|
$t->addTask($this->taskFilesystemStack()->copy($tarball, $orig));
|
||||||
// extract the tarball and keep all "dist files"
|
// extract the tarball
|
||||||
$t->addCode(function() use ($tarball, $dir) {
|
$t->addCode(function() use ($tarball, $dir) {
|
||||||
// because Robo doesn't support extracting a single file we have to do it ourselves
|
// Robo's extract task is broken, so we do it manually
|
||||||
(new \Archive_Tar($tarball))->extract($dir, false);
|
(new \Archive_Tar($tarball))->extract($dir, false);
|
||||||
// perform a do-nothing filesystem operation since we need a Robo task result
|
// "temp.orig" is a special directory name to Debian's "quilt" format
|
||||||
return $this->taskFilesystemStack()->rename($dir."arsse", $dir."src")->run();
|
return $this->taskFilesystemStack()->rename($dir."arsse", $dir."temp.orig")->run();
|
||||||
});
|
});
|
||||||
$t->addTask($this->taskFilesystemStack()->mirror($dir."src/dist", $dir));
|
// create a directory with the package name and "upstream" version; this is also special to Debian
|
||||||
|
$t->addTask($this->taskFilesystemStack()->mkdir($base));
|
||||||
|
// copy relevant files to the directory
|
||||||
|
$t->addTask($this->taskFilesystemStack()->mirror($dir."temp.orig/dist", $base));
|
||||||
$t->addTask($this->taskExec("deber")->dir($dir));
|
$t->addTask($this->taskExec("deber")->dir($dir));
|
||||||
return $t->run();
|
return $t->run();
|
||||||
}
|
}
|
||||||
|
@ -334,7 +342,7 @@ class RoboFile extends \Robo\Tasks {
|
||||||
}
|
}
|
||||||
if ($entry) {
|
if ($entry) {
|
||||||
$out[] = $entry;
|
$out[] = $entry;
|
||||||
}
|
}
|
||||||
$entry = ['version' => $version, 'date' => $date, 'features' => [], 'fixes' => [], 'changes' => []];
|
$entry = ['version' => $version, 'date' => $date, 'features' => [], 'fixes' => [], 'changes' => []];
|
||||||
$expected = ["separator"];
|
$expected = ["separator"];
|
||||||
} elseif (in_array("separator", $expected) && preg_match('/^=+/', $l)) {
|
} elseif (in_array("separator", $expected) && preg_match('/^=+/', $l)) {
|
||||||
|
@ -398,27 +406,31 @@ class RoboFile extends \Robo\Tasks {
|
||||||
}
|
}
|
||||||
$out = "";
|
$out = "";
|
||||||
foreach ($log as $entry) {
|
foreach ($log as $entry) {
|
||||||
$out .= "arsse (".$entry['version']."-1) unstable; urgency=low\n";
|
// normalize the version string
|
||||||
|
preg_match('/^(\d+(?:\.\d+)*)(?:-(\d+)-.+)?$/', $entry['version'], $m);
|
||||||
|
$version = $m[1]."-".($m[2] ?: "1");
|
||||||
|
// output the entry
|
||||||
|
$out .= "arsse ($version) UNRELEASED; urgency=low\n";
|
||||||
if ($entry['features']) {
|
if ($entry['features']) {
|
||||||
$out .= "\n [ New features ]\n";
|
$out .= "\n";
|
||||||
foreach ($entry['features'] as $item) {
|
foreach ($entry['features'] as $item) {
|
||||||
$out .= " * ".trim(preg_replace("/^/m", " ", $item))."\n";
|
$out .= " * ".trim(preg_replace("/^/m", " ", $item))."\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($entry['fixes']) {
|
if ($entry['fixes']) {
|
||||||
$out .= "\n [ Bug fixes ]\n";
|
$out .= "\n";
|
||||||
foreach ($entry['fixes'] as $item) {
|
foreach ($entry['fixes'] as $item) {
|
||||||
$out .= " * ".trim(preg_replace("/^/m", " ", $item))."\n";
|
$out .= " * ".trim(preg_replace("/^/m", " ", $item))."\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($entry['changes']) {
|
if ($entry['changes']) {
|
||||||
$out .= "\n [ Other changes ]\n";
|
$out .= "\n";
|
||||||
foreach ($entry['changes'] as $item) {
|
foreach ($entry['changes'] as $item) {
|
||||||
$out .= " * ".trim(preg_replace("/^/m", " ", $item))."\n";
|
$out .= " * ".trim(preg_replace("/^/m", " ", $item))."\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$out .= "\n -- The Arsse team <no-contact@invalid> ".\DateTimeImmutable::createFromFormat("Y-m-d", $entry['date'], new \DateTimeZone("UTC"))->format("D, d M Y")." 00:00:00 +0000\n\n";
|
$out .= "\n -- The Arsse team <no-contact@code.mensbeam.com> ".\DateTimeImmutable::createFromFormat("Y-m-d", $entry['date'], new \DateTimeZone("UTC"))->format("D, d M Y")." 00:00:00 +0000\n\n";
|
||||||
}
|
}
|
||||||
return $out;
|
return $out;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
33
dist/debian/copyright
vendored
Normal file
33
dist/debian/copyright
vendored
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||||
|
Upstream-Name: arsse
|
||||||
|
Upstream-Contact: J. King <jking@jkingweb.ca>
|
||||||
|
Source: https://code.mensbeam.com/MensBeam/arsse/
|
||||||
|
|
||||||
|
Files: *
|
||||||
|
Copyright: 2017 J. King <jking@jkingweb.ca>
|
||||||
|
2017 Dustin Wilson <dustin@dustinwilson.com>
|
||||||
|
License: Expat
|
||||||
|
|
||||||
|
License: Expat
|
||||||
|
Copyright (c) 2017 J. King, Dustin Wilson
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person
|
||||||
|
obtaining a copy of this software and associated documentation
|
||||||
|
files (the "Software"), to deal in the Software without
|
||||||
|
restriction, including without limitation the rights to use,
|
||||||
|
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the
|
||||||
|
Software is furnished to do so, subject to the following
|
||||||
|
conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be
|
||||||
|
included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
|
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||||
|
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
OTHER DEALINGS IN THE SOFTWARE.
|
3
dist/debian/rules
vendored
3
dist/debian/rules
vendored
|
@ -3,4 +3,5 @@
|
||||||
DH_VERBOSE = 1
|
DH_VERBOSE = 1
|
||||||
|
|
||||||
%:
|
%:
|
||||||
dh $@
|
dh $@
|
||||||
|
|
||||||
|
|
1
dist/debian/source/format
vendored
Normal file
1
dist/debian/source/format
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
3.0 (quilt)
|
Loading…
Reference in a new issue