[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kdesrc-build] modules/ksb: Provide detail to make return statement.
From:       Michael Pyne <null () kde ! org>
Date:       2018-08-14 21:01:28
Message-ID: E1fpgRU-0002HJ-Ee () code ! kde ! org
[Download RAW message or body]

Git commit 472490fe0dc9879188739626a37132829e62ed46 by Michael Pyne.
Committed on 14/08/2018 at 20:24.
Pushed by mpyne into branch 'master'.

Provide detail to make return statement.

Right now this only makes some of the code intent a bit clearer (saying "was
successful" instead of checking against non-bool values). But this would also
be useful for tracking stats on compile warnings.

M  +21   -18   modules/ksb/BuildSystem.pm
M  +1    -1    modules/ksb/BuildSystem/KDE4.pm
M  +2    -4    modules/ksb/l10nSystem.pm

https://commits.kde.org/kdesrc-build/472490fe0dc9879188739626a37132829e62ed46

diff --git a/modules/ksb/BuildSystem.pm b/modules/ksb/BuildSystem.pm
index b52c87b..e9e8bb0 100644
--- a/modules/ksb/BuildSystem.pm
+++ b/modules/ksb/BuildSystem.pm
@@ -144,7 +144,7 @@ sub buildInternal
         subdirs => [
             split(' ', $self->module()->getOption("checkout-only"))
         ],
-    }) == 0;
+    })->{was_successful};
 }
 
 # Return value style: boolean
@@ -191,7 +191,7 @@ sub installInternal
             message => 'Installing..',
             'prefix-options' => [@cmdPrefix],
             subdirs => [ split(' ', $module->getOption("checkout-only")) ],
-           }) == 0;
+           })->{was_successful};
 }
 
 # Used to uninstall a previously installed module.
@@ -208,7 +208,7 @@ sub uninstallInternal
             message => "Uninstalling g[$module]",
             'prefix-options' => [@cmdPrefix],
             subdirs => [ split(' ', $module->getOption("checkout-only")) ],
-           }) == 0;
+           })->{was_successful};
 }
 
 # Subroutine to clean the build system for the given module.  Works by
@@ -319,7 +319,10 @@ sub createBuildSystem
 # The first argument should be the ksb::Module object to be made.
 # The second argument should be the reference to the hash described above.
 #
-# Returns 0 on success, non-zero on failure (shell script style)
+# Returns a hashref:
+# {
+#   was_successful => $bool, (if successful)
+# }
 sub safe_make (@)
 {
     my ($self, $optsRef) = @_;
@@ -343,7 +346,7 @@ sub safe_make (@)
     if (!$buildCommand) {
         $buildCommand = $userCommand || $self->buildCommands();
         error (" r[b[*] Unable to find the g[$buildCommand] executable!");
-        return 1;
+        return { was_successful => 0 };
     }
 
     # Make it prettier if pretending (Remove leading directories).
@@ -404,11 +407,10 @@ sub safe_make (@)
 
         p_chdir ($builddir);
 
-        my $result = $self->_runBuildCommand($buildMessage, $logname, \@args);
-        return $result if $result;
+        return $self->_runBuildCommand($buildMessage, $logname, \@args);
     };
 
-    return 0;
+    return { was_successful => 1 };
 }
 
 # Subroutine to run make and process the build process output in order to
@@ -422,12 +424,13 @@ sub safe_make (@)
 #   directory).
 # Third parameter is a reference to an array with the command and its
 #   arguments.  i.e. ['command', 'arg1', 'arg2']
-# The return value is the shell return code, so 0 is success, and non-zero
-#   is failure.
+#
+# The return value is a hashref as defined by safe_make
 sub _runBuildCommand
 {
     my ($self, $message, $filename, $argRef) = @_;
     my $module = $self->module();
+    my $resultRef = { was_successful => 0 };
     my $ctx = $module->buildContext();
 
     # There are situations when we don't want progress output:
@@ -436,7 +439,8 @@ sub _runBuildCommand
     if (! -t STDERR || debugging())
     {
         note("\t$message");
-        return log_command($module, $filename, $argRef);
+        $resultRef->{was_successful} = (0 == log_command($module, $filename, $argRef));
+        return $resultRef;
     }
 
     my $time = time;
@@ -448,9 +452,7 @@ sub _runBuildCommand
     # w00t.  Check out the closure!  Maks would be so proud.
     my $log_command_callback = sub {
         my $input = shift;
-        if (not defined $input) {
-            return;
-        }
+        return if not defined $input;
 
         my ($percentage) = ($input =~ /^\[\s*([0-9]+)%]/);
         if ($percentage) {
@@ -467,16 +469,17 @@ sub _runBuildCommand
         }
     };
 
-    my $result = log_command($module, $filename, $argRef, {
+    $resultRef->{was_successful} =
+        (0 == log_command($module, $filename, $argRef, {
             callback => $log_command_callback
-        });
+        }));
 
     # Cleanup TTY output.
     $time = prettify_seconds(time - $time);
-    my $status = $result == 0 ? "g[b[succeeded]" : "r[b[failed]";
+    my $status = $resultRef->{was_successful} ? "g[b[succeeded]" : "r[b[failed]";
     $statusViewer->releaseTTY("\t$message $status (after $time)\n");
 
-    return $result;
+    return $resultRef;
 }
 
 1;
diff --git a/modules/ksb/BuildSystem/KDE4.pm b/modules/ksb/BuildSystem/KDE4.pm
index 181dd2d..08fd63a 100644
--- a/modules/ksb/BuildSystem/KDE4.pm
+++ b/modules/ksb/BuildSystem/KDE4.pm
@@ -126,7 +126,7 @@ sub installInternal
             message => 'Installing..',
             'prefix-options' => [@cmdPrefix],
             subdirs => [ split(' ', $module->getOption("checkout-only")) ],
-           }) == 0;
+           })->{was_successful};
 }
 
 sub configureInternal
diff --git a/modules/ksb/l10nSystem.pm b/modules/ksb/l10nSystem.pm
index 4f7e86e..f2a0ea1 100644
--- a/modules/ksb/l10nSystem.pm
+++ b/modules/ksb/l10nSystem.pm
@@ -111,14 +111,12 @@ sub buildInternal
     my $self = assert_isa(shift, 'ksb::l10nSystem');
     my $builddir = $self->module()->fullpath('build');
     my @langs = $self->languages();
-    my $result = 0;
-
-    $result = ($self->safe_make({
+    my $result = ($self->safe_make({
         target => undef,
         message => "Building localization for language...",
         logbase => "build",
         subdirs => \@langs,
-    }) == 0) || $result;
+    }))->{was_successful};
 
     return $result;
 }

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic