rbld 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a9e9aca3061e0708713b02db9087e37dc422a6dd
4
- data.tar.gz: 95f8378b8a2b3f024c432d3bea4a39843c1b8e7e
3
+ metadata.gz: 66ed29a4b4b1456efb41da115141609a37fb3f70
4
+ data.tar.gz: 0937787d9707983d1214f54f5df82a6d829abddb
5
5
  SHA512:
6
- metadata.gz: c0302f820ffdb0bcd9d058c2ed29b587a8f790c27dfdd6f3977ff74c23105f5af44fbff3b565349d1b572b2885406957e72af3c955473a8141cd9bbc3499cc20
7
- data.tar.gz: 6ac9cad20676849bda8176bb96dff285101a9e3a0a154fc2721e934a700bf52c85bc6d65895759691f2fdc6b75d558a5298f1dc93bf79be1ee8122dbb08e0dfe
6
+ metadata.gz: 61f60ccdcf6a77545281e00a2ac315c7ae6aac5b88cf56df65eb152a16df0ffd5945cbb1f283fa32757f42f97e175266ed9aa007758b9755a3d3de97c19ccb21
7
+ data.tar.gz: ef7c3c6486866f460968808ca982e60cab407e2278b9d77055e36fb5d962e240ac9da7f3d0e29c88233e237f024349e9a011ce5dac5948d1baa45db05ff0ce94
@@ -28,3 +28,8 @@ delete_user()
28
28
  exit 1
29
29
  fi
30
30
  }
31
+
32
+ if test "x${REBUILD_TRACE}" == "x1"; then
33
+ set -x
34
+ echo Bootstrap tracing enabled
35
+ fi
@@ -16,9 +16,9 @@ rebuild_banner()
16
16
 
17
17
  setup_users()
18
18
  {
19
- delete_user $REBUILD_USER_NAME
20
- delete_group $REBUILD_USER_NAME
21
- delete_group $REBUILD_GROUP_NAME
19
+ delete_user $REBUILD_USER_NAME 2>$DEBUG_OUTPUT
20
+ delete_group $REBUILD_USER_NAME 2>$DEBUG_OUTPUT
21
+ delete_group $REBUILD_GROUP_NAME 2>$DEBUG_OUTPUT
22
22
 
23
23
  if has_app useradd; then
24
24
 
@@ -52,9 +52,9 @@ sudo_params()
52
52
  echo "-n -H -E -g $REBUILD_GROUP_NAME -u $REBUILD_USER_NAME"
53
53
  }
54
54
 
55
- setup_users 2>$DEBUG_OUTPUT
55
+ setup_users
56
56
 
57
- cd $REBUILD_PWD
57
+ cd $REBUILD_PWD 2>/dev/null
58
58
 
59
59
  . /rebuild/rebuild.rc
60
60
 
@@ -2,6 +2,7 @@ require 'docker'
2
2
  require 'etc'
3
3
  require 'thread'
4
4
  require 'forwardable'
5
+ require 'os'
5
6
  require_relative 'rbld_log'
6
7
  require_relative 'rbld_config'
7
8
  require_relative 'rbld_utils'
@@ -310,6 +311,7 @@ module Rebuild::Engine
310
311
  def with_gzip_writer
311
312
  begin
312
313
  File.open(@filename, 'w') do |f|
314
+ f.binmode
313
315
  gz = Zlib::GzipWriter.new(f)
314
316
  begin
315
317
  yield gz
@@ -427,6 +429,45 @@ module Rebuild::Engine
427
429
  private_class_method :new
428
430
  end
429
431
 
432
+ class RunSettings
433
+ def initialize
434
+ @group_name = get_group_name
435
+ @user_name = Etc.getlogin
436
+ @home = get_home
437
+ @pwd = get_pwd
438
+ @uid = get_uid
439
+ @gid = get_gid
440
+ end
441
+
442
+ attr_reader :group_name, :home, :pwd, :user_name, :uid, :gid
443
+
444
+ private
445
+
446
+ def get_group_name
447
+ if group_info = Etc.getgrgid(Process.gid)
448
+ group_info[:name]
449
+ else
450
+ Etc.getlogin
451
+ end
452
+ end
453
+
454
+ def get_home
455
+ OS.windows? ? "/home/#{Etc.getlogin}" : Dir.home
456
+ end
457
+
458
+ def get_pwd
459
+ Dir.pwd.sub(Dir.home, home)
460
+ end
461
+
462
+ def get_uid
463
+ OS.windows? ? 1000 : Process.uid
464
+ end
465
+
466
+ def get_gid
467
+ OS.windows? ? 1000 : Process.gid
468
+ end
469
+ end
470
+
430
471
  class API
431
472
  extend Forwardable
432
473
 
@@ -434,6 +475,7 @@ module Rebuild::Engine
434
475
  @docker_api, @cfg = docker_api, cfg
435
476
 
436
477
  tweak_excon
478
+ tweak_docker_url
437
479
  check_connectivity
438
480
  @cache = PresentEnvironments.new
439
481
  end
@@ -610,6 +652,12 @@ module Rebuild::Engine
610
652
  Excon.defaults[:read_timeout] = 600
611
653
  end
612
654
 
655
+ def tweak_docker_url
656
+ # Default unix pipe does not work with Docker for Windows
657
+ # Use TCP connection instead
658
+ Docker.url = 'tcp://127.0.0.1:2375' if OS.windows?
659
+ end
660
+
613
661
  def check_connectivity
614
662
  begin
615
663
  @docker_api.validate_version!
@@ -630,19 +678,37 @@ module Rebuild::Engine
630
678
  rbld_log.info( "External command returned with code #{@errno}" )
631
679
  end
632
680
 
681
+ def run_user_group_name
682
+ if group_info = Etc.getgrgid(Process.gid)
683
+ group_info[:name]
684
+ else
685
+ Etc.getlogin
686
+ end
687
+ end
688
+
689
+ def trace_run_settings
690
+ if ENV['RBLD_BOOTSTRAP_TRACE'] && ENV['RBLD_BOOTSTRAP_TRACE'] == '1'
691
+ '-e REBUILD_TRACE=1'
692
+ else
693
+ ''
694
+ end
695
+ end
696
+
633
697
  def run_settings(env, cmd, opts = {})
634
- %Q{ -i #{STDIN.tty? ? '-t' : ''} \
635
- -v #{Dir.home}:#{Dir.home} \
636
- -e REBUILD_USER_ID=#{Process.uid} \
637
- -e REBUILD_GROUP_ID=#{Process.gid} \
638
- -e REBUILD_USER_NAME=#{Etc.getlogin} \
639
- -e REBUILD_GROUP_NAME=#{Etc.getgrgid(Process.gid)[:name]} \
640
- -e REBUILD_USER_HOME=#{Dir.home} \
641
- -e REBUILD_PWD=#{Dir.pwd} \
642
- --security-opt label:disable \
643
- #{opts[:rerun] ? env.rerun_img.id : env.img.id} \
644
- "#{cmd.join(' ')}" \
645
- }
698
+ rs = RunSettings.new
699
+ %Q{ -i #{STDIN.tty? ? '-t' : ''} \
700
+ -v #{Dir.home}:#{rs.home} \
701
+ -e REBUILD_USER_ID=#{rs.uid} \
702
+ -e REBUILD_GROUP_ID=#{rs.gid} \
703
+ -e REBUILD_USER_NAME=#{rs.user_name} \
704
+ -e REBUILD_GROUP_NAME=#{rs.group_name} \
705
+ -e REBUILD_USER_HOME=#{rs.home} \
706
+ -e REBUILD_PWD=#{rs.pwd} \
707
+ --security-opt label:disable \
708
+ #{trace_run_settings} \
709
+ #{opts[:rerun] ? env.rerun_img.id : env.img.id} \
710
+ "#{cmd.join(' ')}" \
711
+ }
646
712
  end
647
713
 
648
714
  def run_env_disposable(env, cmd)
@@ -62,8 +62,7 @@ module Rebuild
62
62
  begin
63
63
  rbld_log.info( "Pushing #{url.full}" )
64
64
  api_obj.push(nil, :repo_tag => url.full) do |log|
65
- progress = JSON.parse(log)["progress"]
66
- rbld_print.inplace_trace(progress) if progress
65
+ trace_progress( log )
67
66
  end
68
67
  ensure
69
68
  api_obj.remove( :name => url.full )
@@ -76,8 +75,7 @@ module Rebuild
76
75
  begin
77
76
  rbld_log.info( "Pulling #{url.full}" )
78
77
  img = api_class.create(:fromImage => url.full) do |log|
79
- progress = JSON.parse(log)["progress"]
80
- rbld_print.inplace_trace(progress) if progress
78
+ trace_progress( log )
81
79
  end
82
80
  yield img
83
81
  ensure
@@ -87,6 +85,14 @@ module Rebuild
87
85
 
88
86
  private
89
87
 
88
+ def trace_progress(log_item)
89
+ begin
90
+ line = JSON.parse( log_item )["progress"]
91
+ rbld_print.inplace_trace( line ) if line
92
+ rescue
93
+ end
94
+ end
95
+
90
96
  def parse_entry(internal_name)
91
97
  begin
92
98
  Entry.by_internal_name( internal_name )
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbld
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dmitry Fleytman
8
8
  autorequire:
9
9
  bindir: cli/bin
10
10
  cert_chain: []
11
- date: 2016-12-14 00:00:00.000000000 Z
11
+ date: 2016-12-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colorize
@@ -112,6 +112,26 @@ dependencies:
112
112
  - - ">="
113
113
  - !ruby/object:Gem::Version
114
114
  version: 1.3.3
115
+ - !ruby/object:Gem::Dependency
116
+ name: os
117
+ requirement: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - "~>"
120
+ - !ruby/object:Gem::Version
121
+ version: '0.9'
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: 0.9.6
125
+ type: :runtime
126
+ prerelease: false
127
+ version_requirements: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '0.9'
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ version: 0.9.6
115
135
  - !ruby/object:Gem::Dependency
116
136
  name: rake
117
137
  requirement: !ruby/object:Gem::Requirement
@@ -289,6 +309,5 @@ rubyforge_project:
289
309
  rubygems_version: 2.4.8
290
310
  signing_key:
291
311
  specification_version: 4
292
- summary: rbld-1.0.0
312
+ summary: rbld-1.0.1
293
313
  test_files: []
294
- has_rdoc: