[sdk/kdesrc-build/make_it_mojo] /: backend-mode: Touch up backend mode to work again after recent changes.
Michael Pyne
null at kde.org
Tue Feb 16 00:21:02 GMT 2021
Git commit eb2ae2ec1fa6f1435f26036e5567f5f36501b599 by Michael Pyne.
Committed on 15/02/2021 at 22:26.
Pushed by mpyne into branch 'make_it_mojo'.
backend-mode: Touch up backend mode to work again after recent changes.
M +18 -0 doc/man-kdesrc-build.1.docbook
M +1 -1 kdesrc-build
M +3 -0 modules/ksb/Application.pm
M +25 -7 modules/web/BackendServer.pm
https://invent.kde.org/sdk/kdesrc-build/commit/eb2ae2ec1fa6f1435f26036e5567f5f36501b599
diff --git a/doc/man-kdesrc-build.1.docbook b/doc/man-kdesrc-build.1.docbook
index 973e65d..9a5cba5 100644
--- a/doc/man-kdesrc-build.1.docbook
+++ b/doc/man-kdesrc-build.1.docbook
@@ -51,6 +51,7 @@
<arg choice='req'><replaceable>VALUE TO QUERY</replaceable></arg>
<arg rep="repeat"><replaceable>Module name</replaceable></arg>
</cmdsynopsis>
+</refsynopsisdiv>
<refsect1>
<title>DESCRIPTION</title>
@@ -1124,6 +1125,23 @@ kdepim: master
</listitem>
</varlistentry>
+<varlistentry>
+<term>
+<envar>KDESRC_BUILD_DEBUG</envar>
+</term>
+
+<listitem>
+<para>
+ If set, this variable will cause the kdesrc-build internal backend server
+ to provide extra debugging information at the console when used in "backend
+ mode" (that is, <command>kdesrc-build --backend</command>) and also for the
+ internal Web server to provide extra server logs in the
+ <symbol>mojo-backend.log</symbol> log file held in the log directory for
+ this execution.
+</para>
+</listitem>
+</varlistentry>
+
<varlistentry>
<term>
<envar>KDESRC_BUILD_DUMP_CONTEXT</envar>
diff --git a/kdesrc-build b/kdesrc-build
index 2309f8e..babf7bf 100755
--- a/kdesrc-build
+++ b/kdesrc-build
@@ -182,7 +182,7 @@ sub launchBackend
my $daemon = Mojo::Server::Daemon->new(
app => web::BackendServer->new,
listen => ['http://localhost'],
- silent => 1,
+ silent => !exists $ENV{KDESRC_BUILD_DEBUG},
);
$daemon->start; # Grabs the socket to listen on
diff --git a/modules/ksb/Application.pm b/modules/ksb/Application.pm
index 9332c7e..c44555c 100644
--- a/modules/ksb/Application.pm
+++ b/modules/ksb/Application.pm
@@ -691,6 +691,9 @@ sub establishContext
my $cmdlineOptions = $optsAndSelectors->{options};
my $cmdlineGlobalOptions = $cmdlineOptions->{global};
+ $cmdlineGlobalOptions->{'start-program'} //= [ ];
+ $cmdlineGlobalOptions->{'ignore-modules'} //= [ ];
+
# Must precede loading the rc-file as the module sets and modules default
# to the phasing of the global build context.
$self->_applyBuildContextPhasesFromCmdline($ctx, $optsAndSelectors);
diff --git a/modules/web/BackendServer.pm b/modules/web/BackendServer.pm
index 5a5ea85..0a6d3bd 100644
--- a/modules/web/BackendServer.pm
+++ b/modules/web/BackendServer.pm
@@ -23,6 +23,9 @@ has 'selectors';
sub new
{
my ($class, $optsAndSelectors) = @_;
+ $optsAndSelectors->{options} //= {};
+ $optsAndSelectors->{selectors} //= [];
+
return $class->SUPER::new(
opts_and_selectors => $optsAndSelectors,
options => $optsAndSelectors->{options},
@@ -55,7 +58,7 @@ sub make_new_ksb
} else {
$c->app->log(Mojo::Log->new(
path => $ctx->getLogDirFor($ctx) . "/mojo-backend.log",
- level => 'info',
+ level => (exists $ENV{KDESRC_BUILD_DEBUG} ? 'debug' : 'info'),
));
}
@@ -124,7 +127,7 @@ sub _renderException {
my $out = { };
- if (ref $err eq 'STRING') {
+ if (!ref $err || ref $err eq 'STRING') {
$out->{message} = $err;
$out->{exception_type} = 'Runtime';
} else {
@@ -145,8 +148,7 @@ sub _generateRoutes {
my $c = shift;
if ($c->in_build || !defined $LAST_RESULT) {
- $c->res->code(400);
- return $c->render;
+ return $c->render(status => 400, json => { error => "Not ready to reset" });
}
my $old_result = $LAST_RESULT;
@@ -365,15 +367,31 @@ sub _generateRoutes {
$IN_PROGRESS = 1;
- $BUILD_PROMISE = $c->ksb->startHeadlessBuild->finally(sub {
+ $BUILD_PROMISE = $c->ksb->startHeadlessBuild->then(sub{
my ($result) = @_;
- $c->app->log->debug("Build done");
+ $c->app->log->debug("Build done, result $result");
+ $LAST_RESULT = $result;
+ })->catch(sub {
+ my @reason = @_;
+ $c->app->log->error("Exception during build @reason");
+ })->finally(sub {
$IN_PROGRESS = 0;
- return $LAST_RESULT = $result;
});
$c->render(text => $c->url_for('event_viewer')->to_abs->to_string);
});
+
+ $r->post('/shutdown' => sub {
+ my $c = shift;
+
+ # Shutdown the server once the transaction completes
+ # by invoking ksb::Application::finish
+ $c->tx->on(finish => sub {
+ $c->app->ksb->finish(0);
+ });
+
+ $c->render(text => "Shutting down.\n", status => 200);
+ });
}
1;
More information about the kde-doc-english
mailing list