[tor-commits] [rbm/master] Fix docker_remote_finish for docker >= 1.10.0

boklm at torproject.org boklm at torproject.org
Sun Feb 12 22:33:07 UTC 2017


commit dbd2143279680104971dc2b08877f252a38a1b2c
Author: Nicolas Vigier <boklm at torproject.org>
Date:   Sun Feb 12 23:11:13 2017 +0100

    Fix docker_remote_finish for docker >= 1.10.0
    
    With docker >= 1.10.0, the -f flag on 'docker tag' is deprecated:
    https://docs.docker.com/engine/deprecated/#/f-flag-on-docker-tag
    
    However we need it when using an older version of docker.
    
    To add it only when needed, we parse the output from 'docker version'.
---
 lib/RBM/DefaultConfig.pm | 21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)

diff --git a/lib/RBM/DefaultConfig.pm b/lib/RBM/DefaultConfig.pm
index 100ad2c..8eaf9dd 100644
--- a/lib/RBM/DefaultConfig.pm
+++ b/lib/RBM/DefaultConfig.pm
@@ -86,6 +86,21 @@ sub get_arch {
     return $stdout;
 }
 
+sub docker_version {
+    my ($stdout, $stderr, $success)
+        = capture_exec('docker', 'version', '--format', '{{.Client.Version}}');
+    if ($success) {
+        chomp $stdout;
+        return $stdout;
+    }
+    ($stdout, $stderr, $success) = capture_exec('docker', 'version');
+    RBM::exit_error("Error running 'docker version'") unless $success;
+    foreach my $line (split "\n", $stdout) {
+        return $1 if ($line =~ m/Client version: (.*)$/);
+    }
+    RBM::exit_error("Could not find docker version");
+}
+
 our %default_config = (
     sysconf_file  => '/etc/rbm.conf',
     tmp_dir       => '/tmp',
@@ -382,6 +397,10 @@ OPT_END
 ####
 ####
 ####
+    docker_version     => \&docker_version,
+####
+####
+####
     docker_build_image => 'rbm-[% sha256(c("build_id")).substr(0, 12) %]',
 ####
 ####
@@ -408,7 +427,7 @@ OPT_END
 #!/bin/sh
 set -e
 [% IF c('docker_save_image') -%]
-docker tag -f [% c('docker_build_image') %] [% c('docker_save_image') %]
+docker tag [% IF versioncmp(c('docker_version'), '1.10.0') == -1; GET '-f'; END; %] [% c('docker_build_image') %] [% c('docker_save_image') %]
 [% END -%]
 docker rmi -f [% c('docker_build_image') %] > /dev/null
 OPT_END





More information about the tor-commits mailing list