kameleon-builder 2.6.3 → 2.6.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d28b83e3c333c8da43019ff46a15afbc4e8936e3
4
- data.tar.gz: b8fc0d08a15042f08826d67efaf4c03f5f2ccc63
3
+ metadata.gz: 0cf98d0c4404c2d7b78eb2ce549dd869d66e32ae
4
+ data.tar.gz: fb49b1ec019fa7e9473c5c3429e49590bf3dec9a
5
5
  SHA512:
6
- metadata.gz: f89095a4cb9803cb48e43b93d8f569210a8c2bb7d5bb5ebba8cefb434c6e0396588d5dd0d9b8967d6e27fe7608a493849f0de1c799f01aa7484481dfdf90ffc0
7
- data.tar.gz: 6e22a24a0839f7f8e492255d2e60f9a37a04c1cd830778be00acb09e2d16a6c1014602e448dea41d5f3da62032f367eef390c10040339274e81542293ef70bfe
6
+ metadata.gz: 6e20e9e4bba49152c18a5b61c899f8a304b6837e1b53beca6d846131dd723e66ad92fcc675ad6ddfa029ea0d34aaebba57086e6c8462f35289fa3289a94396f5
7
+ data.tar.gz: a3b86f4a410c6219ed77e6155a20a58d09629f844b648add40d850f7e19292bd5f31f33f15c0901913c9be6fbc74632c720627976f2ab302d6ca5eb64779fda2
data/.bumpversion.cfg CHANGED
@@ -1,7 +1,7 @@
1
1
  [bumpversion]
2
2
  commit = True
3
3
  tag = True
4
- current_version = 2.6.3
4
+ current_version = 2.6.5
5
5
  parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)(\.(?P<release>[a-z]+))?
6
6
  serialize =
7
7
  {major}.{minor}.{patch}.{release}
data/CHANGES CHANGED
@@ -1,6 +1,24 @@
1
1
  Kameleon CHANGELOG
2
2
  ==================
3
3
 
4
+ Version 2.6.5
5
+ -------------
6
+
7
+ Released on September 14th 2015
8
+
9
+ - Fixed the proxy-cache to allow big files
10
+ - Added ``--proxy`` and ``--proxy-credentials`` options to set a global proxy for kameleon
11
+ - Added ``proxy_local``, ``proxy_out`` and ``proxy_in`` kameleon recipe variables to get proxy address from recipe
12
+ - Enabled ERB templating in the user environement files
13
+ - Renamed ``--proxy-path`` option to ``--polipo-path``
14
+
15
+ Version 2.6.4
16
+ -------------
17
+
18
+ Released on September 07th 2015
19
+
20
+ - Fixed kameleon data variables resolution
21
+
4
22
  Version 2.6.3
5
23
  -------------
6
24
 
@@ -0,0 +1,12 @@
1
+ export http_proxy="http://<%= @proxy %>"
2
+ export https_proxy="http://<%= @proxy %>"
3
+ export ftp_proxy="http://<%= @proxy %>"
4
+ export rsync_proxy="http://<%= @proxy %>"
5
+ export all_proxy="http://<%= @proxy %>"
6
+ export HTTP_PROXY="http://<%= @proxy %>"
7
+ export HTTPS_PROXY="http://<%= @proxy %>"
8
+ export FTP_PROXY="http://<%= @proxy %>"
9
+ export RSYNC_PROXY="http://<%= @proxy %>"
10
+ export ALL_PROXY="http://<%= @proxy %>"
11
+ export no_proxy="localhost,$(echo <%= @proxy %> | tr ":" "\n" | head -n 1),127.0.0.1,localaddress,.localdomain"
12
+ export NO_PROXY="$no_proxy"
data/lib/kameleon/cli.rb CHANGED
@@ -224,9 +224,16 @@ module Kameleon
224
224
  :enum => ["gzip", "xz", "bz2"],
225
225
  :default => "gz",
226
226
  :desc => "Uses a persistent cache tar file to build the image."
227
- method_option :proxy_path, :type => :string ,
227
+ method_option :polipo_path, :type => :string ,
228
228
  :default => nil,
229
- :desc => "Full path of the proxy binary to use for the persistent cache."
229
+ :desc => "Full path of the polipo binary to use for the persistent cache."
230
+ method_option :proxy, :type => :string, :default => "",
231
+ :desc => "Specifies the hostname and port number of an HTTP " \
232
+ "proxy; it should have the form 'host:port'"
233
+ method_option :proxy_credentials, :type => :string, :default => "",
234
+ :desc => "Specifies the username and password if the parent "\
235
+ "proxy requires authorisation it should have the "\
236
+ "form 'username:password'"
230
237
  method_option :global, :type => :hash,
231
238
  :default => {}, :aliases => "-g",
232
239
  :desc => "Set custom global variables."
@@ -8,7 +8,7 @@ module Kameleon
8
8
  attr_accessor :cmd
9
9
  attr_accessor :workdir
10
10
  attr_accessor :local_workdir
11
- attr_accessor :proxy_cache
11
+ attr_accessor :proxy
12
12
  attr_accessor :env_files
13
13
 
14
14
 
@@ -19,7 +19,7 @@ module Kameleon
19
19
  @workdir = workdir
20
20
  @exec_prefix = exec_prefix
21
21
  @local_workdir = local_workdir
22
- @proxy_cache = kwargs[:proxy_cache]
22
+ @proxy = kwargs[:proxy]
23
23
  @fail_silently = kwargs.fetch(:fail_silently, true)
24
24
  @lazyload = kwargs.fetch(:lazyload, false)
25
25
  @env_files = env_files
@@ -32,12 +32,18 @@ module Kameleon
32
32
  fail BuildError, "Checkpoint is unavailable for this recipe"
33
33
  end
34
34
 
35
- @recipe.resolve!
36
-
37
35
  if @options[:enable_cache] || @options[:from_cache] then
36
+ if @recipe.global["in_context"]["proxy_cache"].nil? then
37
+ raise BuildError, "Missing varible for in context 'proxy_cache' when using the option --cache"
38
+ end
39
+
40
+ if @recipe.global["out_context"]["proxy_cache"].nil? then
41
+ raise BuildError, "Missing varible for out context 'proxy_cache' when using the option --cache"
42
+ end
38
43
  @cache = Kameleon::Persistent_cache.instance
44
+
39
45
  @cache.cwd = @cwd
40
- @cache.polipo_path = @options[:proxy_path]
46
+ @cache.polipo_path = @options[:polipo_path]
41
47
  @cache.name = @recipe.name
42
48
  @cache.mode = @options[:enable_cache] ? :build : :from
43
49
  @cache.cache_path = @options[:from_cache]
@@ -45,16 +51,27 @@ module Kameleon
45
51
  @cache.recipe_files = @recipe.all_files
46
52
  @cache.recipe_path = @recipe.path
47
53
  @cache.archive_format = @options[:cache_archive_compression]
48
-
49
- if @recipe.global["in_context"]["proxy_cache"].nil? then
50
- raise BuildError, "Missing varible for in context 'proxy_cache' when using the option --cache"
54
+ if @options[:proxy] != ""
55
+ @cache.polipo_cmd_options['parentProxy'] = @options[:proxy]
56
+ end
57
+ if @options[:proxy_credentials] != ""
58
+ @cache.polipo_cmd_options['parentAuthCredentials'] = @options[:proxy_credentials]
51
59
  end
52
60
 
53
- if @recipe.global["out_context"]["proxy_cache"].nil? then
54
- raise BuildError, "Missing varible for out context 'proxy_cache' when using the option --cache"
61
+ @recipe.global["proxy_local"] = "127.0.0.1:#{@cache.polipo_port}"
62
+ @recipe.global["proxy_out"] = "#{@recipe.global['out_context']['proxy_cache']}:#{@cache.polipo_port}"
63
+ @recipe.global["proxy_in"] = "#{@recipe.global['in_context']['proxy_cache']}:#{@cache.polipo_port}"
64
+ elsif @options[:proxy] != ""
65
+ if @options[:proxy_credentials] != ""
66
+ proxy_url = "#{@options[:proxy_credentials]}@#{@options[:proxy]}"
67
+ else
68
+ proxy_url = "#{@options[:proxy]}"
55
69
  end
70
+ @recipe.global["proxy_local"] = @recipe.global["proxy_out"] = @recipe.global["proxy_in"] = proxy_url
56
71
  end
57
72
 
73
+ @recipe.resolve!
74
+
58
75
  begin
59
76
  Kameleon.ui.info("Creating kameleon build directory : #{@cwd}")
60
77
  FileUtils.mkdir_p @cwd
@@ -74,8 +91,8 @@ module Kameleon
74
91
  Kameleon.ui.debug("Building local context [local]")
75
92
  @local_context = Context.new("local", "bash", @cwd, "", @cwd,
76
93
  @recipe.env_files,
77
- :proxy_cache => "127.0.0.1",
78
- :lazyload => false,
94
+ :proxy => @recipe.global["proxy_local"],
95
+ :lazyload => lazyload,
79
96
  :fail_silently => false)
80
97
  Kameleon.ui.debug("Building external context [out]")
81
98
  @out_context = Context.new("out",
@@ -84,7 +101,7 @@ module Kameleon
84
101
  @recipe.global["out_context"]["exec_prefix"],
85
102
  @cwd,
86
103
  @recipe.env_files,
87
- :proxy_cache => proxy_cache_out,
104
+ :proxy => @recipe.global["proxy_out"],
88
105
  :lazyload => lazyload,
89
106
  :fail_silently => fail_silently)
90
107
 
@@ -95,7 +112,7 @@ module Kameleon
95
112
  @recipe.global["in_context"]["exec_prefix"],
96
113
  @cwd,
97
114
  @recipe.env_files,
98
- :proxy_cache => proxy_cache_in,
115
+ :proxy => @recipe.global["proxy_in"],
99
116
  :lazyload => lazyload,
100
117
  :fail_silently => fail_silently)
101
118
  end
@@ -8,7 +8,6 @@ module Kameleon
8
8
  class Persistent_cache
9
9
 
10
10
  include Singleton
11
- attr_reader :polipo_env
12
11
  attr_reader :cache_dir
13
12
  attr_reader :polipo_port
14
13
  attr_writer :activated
@@ -21,26 +20,27 @@ module Kameleon
21
20
  attr_accessor :recipe_files # FIXME have to check those.
22
21
  attr_accessor :recipe_path
23
22
  attr_accessor :archive_format
23
+ attr_accessor :polipo_cmd_options
24
24
 
25
25
  def initialize()
26
26
  ## we must configure Polipo to be execute for the in and out context
27
27
  ## we have to start polipo in the out context for debootstrap step
28
28
 
29
- @polipo_env = File.join(Kameleon.source_root,
30
- "contrib",
31
- "polipo_env.sh")
32
-
33
29
  @polipo_process = nil
34
30
  @polipo_port = find_unused_port
35
31
 
32
+ # :idleTime => "1",
36
33
  @polipo_cmd_options = {:diskCacheRoot => "",
37
- :idleTime => "1",
38
- :chunkHighMark => "425165824",
34
+ :maxDiskCacheEntrySize => "-1",
35
+ :disableIndexing => "false",
36
+ :disableServersList => "false",
37
+ :allowedClients => "0.0.0.0/0",
39
38
  :proxyPort => @polipo_port,
40
39
  :relaxTransparency =>"true",
41
40
  :daemonise => false,
42
41
  :proxyAddress => "0.0.0.0",
43
- :logFile => File.join(Kameleon.env.build_path, 'polipo.log')
42
+ :logFile => File.join(Kameleon.env.build_path, 'polipo.log'),
43
+ :logLevel => "4",
44
44
  }
45
45
 
46
46
  @activated = false
@@ -196,7 +196,11 @@ module Kameleon
196
196
  end
197
197
 
198
198
  def stop()
199
- @polipo_process.stop
199
+ begin
200
+ @polipo_process.poll_for_exit(120)
201
+ rescue ChildProcess::TimeoutError
202
+ @polipo_process.stop # tries increasingly harsher methods to kill the process.
203
+ end
200
204
  Kameleon.ui.info("Stopping web proxy polipo")
201
205
  Kameleon.ui.info("Finishing persistent cache with last files")
202
206
  cache_metadata_dir = File.join(@cache_dir,"metadata")
@@ -33,8 +33,11 @@ module Kameleon
33
33
  "kameleon_recipe_name" => @name,
34
34
  "kameleon_recipe_dir" => File.dirname(@path),
35
35
  "kameleon_cwd" => File.join(Kameleon.env.build_path, @name),
36
- "in_context" => {"cmd" => "/bin/bash", "proxy_cache" => "localhost"},
37
- "out_context" => {"cmd" => "/bin/bash", "proxy_cache" => "localhost"}
36
+ "in_context" => {"cmd" => "/bin/bash", "proxy_cache" => "127.0.0.1"},
37
+ "out_context" => {"cmd" => "/bin/bash", "proxy_cache" => "127.0.0.1"},
38
+ "proxy_local" => "",
39
+ "proxy_out" => "",
40
+ "proxy_in" => "",
38
41
  }
39
42
  @aliases = {}
40
43
  @checkpoint = nil
@@ -17,7 +17,7 @@ module Kameleon
17
17
  @context_name = context.name
18
18
  @local_workdir = context.local_workdir
19
19
  @shell_workdir = context.workdir
20
- @proxy_cache = context.proxy_cache
20
+ @proxy = context.proxy
21
21
  @env_files = context.env_files
22
22
  @bash_scripts_dir = File.join("kameleon_scripts", @context_name)
23
23
  @bashrc_file = File.join(@bash_scripts_dir, "bash_rc")
@@ -103,13 +103,9 @@ module Kameleon
103
103
  if File.file?(@default_bashrc_file)
104
104
  tpl = ERB.new(File.read(@default_bashrc_file))
105
105
  bashrc_content = tpl.result(binding)
106
- if @cache.activated? then
107
- if @proxy_cache.nil? then
108
- Kameleon.ui.warn("Variable 'proxy_cache' not defined for this context, persistent cache will not be generated")
109
- else
110
- tpl = ERB.new(File.read(@cache.polipo_env))
111
- bashrc_content << "\n" + ERB.new(File.read(@cache.polipo_env)).result(binding)
112
- end
106
+ if @proxy != "" then
107
+ tpl = ERB.new(File.read(File.join(Kameleon.source_root, "contrib", "proxy_env.sh")))
108
+ bashrc_content << "\n" + tpl.result(binding)
113
109
  end
114
110
  end
115
111
  # Inject sigint handler
@@ -136,11 +132,12 @@ SCRIPT
136
132
  end
137
133
  shell_cmd << "export KAMELEON_WORKDIR=$PWD\n"
138
134
  @env_files.each do |env_file|
135
+ resolved_erb = "\n" + ERB.new(File.read(env_file)).result(binding)
139
136
  env_content = <<-SCRIPT
140
137
  #====================================================
141
138
  # Begin content of user script '#{env_file.basename}'
142
139
  #====================================================
143
- #{File.read(env_file)}
140
+ #{resolved_erb}
144
141
  #====================================================
145
142
  # End content of user script '#{env_file.basename}'
146
143
  #====================================================
@@ -13,8 +13,8 @@ module Kameleon
13
13
  matches.each do |m|
14
14
  unless m.nil?
15
15
  path = resolve_simple_vars(m[1], yaml_path, initial_variables, recipe, kwargs)
16
- resolved_path = recipe.resolve_data_path(path, yaml_path)
17
- raw.gsub!(m[0], "\"#{resolved_path}\"")
16
+ resolved_path = recipe.resolve_data_path(path.chomp('"'), yaml_path)
17
+ raw.gsub!(m[0].chomp('"'), "#{resolved_path}")
18
18
  end
19
19
  end
20
20
  return raw
data/version.txt CHANGED
@@ -1 +1 @@
1
- 2.6.3
1
+ 2.6.5
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kameleon-builder
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.3
4
+ version: 2.6.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Salem Harrache
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2015-08-25 00:00:00.000000000 Z
15
+ date: 2015-09-14 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: childprocess
@@ -97,7 +97,7 @@ files:
97
97
  - contrib/kameleon_bashrc.sh
98
98
  - contrib/kameleon_exec_cmd.sh
99
99
  - contrib/kameleon_exec_cmd_wrapper.sh
100
- - contrib/polipo_env.sh
100
+ - contrib/proxy_env.sh
101
101
  - contrib/scripts/VirtualBox_deploy.sh
102
102
  - contrib/scripts/chroot_env
103
103
  - contrib/scripts/create_passwd.py
@@ -1,3 +0,0 @@
1
- export http_proxy=http://<%= @proxy_cache %>:<%= @cache.polipo_port %>
2
- export ftp_proxy=http://<%= @proxy_cache %>:<%= @cache.polipo_port %>
3
- export https_proxy=https://<%= @proxy_cache %>:<%= @cache.polipo_port %>