rake-compiler-dock 0.5.0 → 0.5.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: e5326f050ab952a7641a48ab10de71a2f56933fe
4
- data.tar.gz: de257ed5785395495ee8e11cc6aae3a5e35870c7
3
+ metadata.gz: 4d37fa0a52b14f6b5d7d571ba7f467a00ce4729e
4
+ data.tar.gz: 897c281b857e1555c0d5e22c4a04b4d8802a34ce
5
5
  SHA512:
6
- metadata.gz: 9d7089a62ac4b0b6f7224791d56d152e57364e47bf989079fe03f822095f11243e5bffb18906ffa1372f0b8f370a75cb36c9470c623b1075f29a923ba38f162e
7
- data.tar.gz: c7ff5593f623e88a794b341df449d0859b8f555cf515ff098881be5387f4cb65601e7dd24a0549c224fec773c84e5e699aa122ecaa6d157be2c74061659201f7
6
+ metadata.gz: fe68d4b5392818af317189727912b71809b702467b12360421f63ef83ac012eb98c51b30ce1cd4fae5af659f33c4d7125483d5ce02c132f8e998ea54bea5f4a5
7
+ data.tar.gz: 06214c0597dace18fe9e3cb9bee4ad6bfa52623dc0d45cfc62d21585c8816bacc2001355049795627357c1bfea44b22be3b8f771f10b847b803d576ab08dc6cf
Binary file
data.tar.gz.sig CHANGED
Binary file
data/Dockerfile CHANGED
@@ -36,14 +36,14 @@ RUN bash -c " \
36
36
  rvm install \$v --patch \$(echo ~/patches/ruby-\$v/* | tr ' ' ','); \
37
37
  done && \
38
38
  rvm cleanup all && \
39
- find /usr/local/rvm -type d | sudo xargs chmod g+sw "
39
+ find /usr/local/rvm -type d -print0 | sudo xargs -0 chmod g+sw "
40
40
 
41
41
  # Install rake-compiler and typical gems in all Rubies
42
42
  # do not generate documentation for gems
43
43
  RUN echo "gem: --no-ri --no-rdoc" >> ~/.gemrc && \
44
44
  bash -c " \
45
- rvm all do gem install bundler rake-compiler hoe mini_portile rubygems-tasks && \
46
- rvm 1.9.3,2.3.0 do gem install mini_portile2 && \
45
+ rvm all do gem install --no-document bundler rake-compiler hoe mini_portile rubygems-tasks && \
46
+ rvm 1.9.3,2.3.0 do gem install --no-document mini_portile2 && \
47
47
  find /usr/local/rvm -type d -print0 | sudo xargs -0 chmod g+sw "
48
48
 
49
49
  # Install rake-compiler's cross rubies in global dir instead of /root
@@ -52,9 +52,9 @@ RUN sudo mkdir -p /usr/local/rake-compiler && \
52
52
  ln -s /usr/local/rake-compiler ~/.rake-compiler
53
53
 
54
54
  # Patch rake-compiler to avoid build of ruby extensions
55
- RUN cd /usr/local/rvm/gems/ruby-1.8.7-p374/gems/rake-compiler-0.9.5 && patch -p1 < /home/rvm/patches/rake-compiler-0.9.5/without-exts.diff ; \
56
- cd /usr/local/rvm/gems/ruby-1.9.3-p551/gems/rake-compiler-0.9.5 && patch -p1 < /home/rvm/patches/rake-compiler-0.9.5/without-exts.diff ; \
57
- cd /usr/local/rvm/gems/ruby-2.3.0/gems/rake-compiler-0.9.5 && patch -p1 < /home/rvm/patches/rake-compiler-0.9.5/without-exts.diff ; \
55
+ RUN cd /usr/local/rvm/gems/ruby-1.8.7-p374/gems/rake-compiler-0.9.5 && git apply /home/rvm/patches/rake-compiler-0.9.5/*.diff ; \
56
+ cd /usr/local/rvm/gems/ruby-1.9.3-p551/gems/rake-compiler-0.9.5 && git apply /home/rvm/patches/rake-compiler-0.9.5/*.diff ; \
57
+ cd /usr/local/rvm/gems/ruby-2.3.0/gems/rake-compiler-0.9.5 && git apply /home/rvm/patches/rake-compiler-0.9.5/*.diff ; \
58
58
  true
59
59
 
60
60
  RUN bash -c "rvm use 2.3.0 --default && \
@@ -68,7 +68,7 @@ RUN bash -c "rvm use 2.3.0 --default && \
68
68
  rake-compiler cross-ruby VERSION=2.0.0-p645 HOST=i686-w64-mingw32 && \
69
69
  rake-compiler cross-ruby VERSION=2.0.0-p645 HOST=x86_64-w64-mingw32 && \
70
70
  rm -rf ~/.rake-compiler/builds ~/.rake-compiler/sources && \
71
- find /usr/local/rvm -type d | sudo xargs chmod g+sw "
71
+ find /usr/local/rvm -type d -print0 | sudo xargs -0 chmod g+sw "
72
72
 
73
73
  RUN bash -c "rvm use 1.9.3 && \
74
74
  export CFLAGS='-s -O1 -fno-omit-frame-pointer -fno-fast-math' && \
data/History.md CHANGED
@@ -1,3 +1,9 @@
1
+ 0.5.1 / 2015-01-30
2
+ ------------------
3
+ * Fix compatibility issue with bundler. #8
4
+ * Add a check for the current working directory on boot2docker / docker-machine. #7
5
+
6
+
1
7
  0.5.0 / 2015-12-25
2
8
  ------------------
3
9
  * Add cross ruby version 2.3.0.
data/README.md CHANGED
@@ -63,7 +63,7 @@ This is local to the running session, only:
63
63
  sudo apt-get update && sudo apt-get install your-package
64
64
 
65
65
  You can also choose between different executable ruby versions by `rvm use <version>` .
66
- Current default is 2.2.
66
+ The current default is 2.3.
67
67
 
68
68
 
69
69
  ### Add to your Rakefile
@@ -0,0 +1,105 @@
1
+ From 41f834449fc4323b2f995e8715aa5842d9fd9334 Mon Sep 17 00:00:00 2001
2
+ From: Lars Kanis <lars@greiz-reinsdorf.de>
3
+ Date: Sat, 30 Jan 2016 08:08:07 +0100
4
+ Subject: [PATCH] Change the fake mechanism to be compatible with bundler.
5
+
6
+ The previous fake mechanism worked by hooking onto the
7
+ "require 'rbconfig'" call.
8
+ This is problematic because bundler internally requires rbconfig, but doesn't
9
+ work corretly in a faked environment.
10
+ It then fails to load gems that are also part of the standard library, like
11
+ json and rdoc.
12
+ This results in issues like https://github.com/rake-compiler/rake-compiler-dock/issues/8
13
+
14
+ The fake mechanism is now changed to hook onto the "require 'mkrb'" call,
15
+ which is typically part of the extconf file, and it is where the faked platform
16
+ values are actually needed.
17
+ That way it is loaded after bundler/setup, so that the library paths are
18
+ set according to the Gemfile.lock, to the native Linux libraries, before
19
+ the fake environment is active.
20
+
21
+ Please note, that the build directory of a given gem needs to be cleared,
22
+ in order to get updated fake files. So do a "rm tmp pkg -rf".
23
+ ---
24
+ lib/rake/extensiontask.rb | 35 ++++++++++++++---------------------
25
+ 1 file changed, 14 insertions(+), 21 deletions(-)
26
+
27
+ diff --git a/lib/rake/extensiontask.rb b/lib/rake/extensiontask.rb
28
+ index 030af96..f914919 100644
29
+ --- a/lib/rake/extensiontask.rb
30
+ +++ b/lib/rake/extensiontask.rb
31
+ @@ -169,8 +169,8 @@ Java extension should be preferred.
32
+ # now add the extconf script
33
+ cmd << abs_extconf.relative_path_from(abs_tmp_path)
34
+
35
+ - # rbconfig.rb will be present if we are cross compiling
36
+ - if t.prerequisites.include?("#{tmp_path}/rbconfig.rb") then
37
+ + # fake.rb will be present if we are cross compiling
38
+ + if t.prerequisites.include?("#{tmp_path}/fake.rb") then
39
+ options.push(*cross_config_options(platf))
40
+ end
41
+
42
+ @@ -365,39 +365,30 @@ Java extension should be preferred.
43
+ # define compilation tasks for cross platform!
44
+ define_compile_tasks(for_platform, ruby_ver)
45
+
46
+ - # chain fake.rb, rbconfig.rb and mkmf.rb to Makefile generation
47
+ + # chain fake.rb and mkmf.rb to Makefile generation
48
+ file "#{tmp_path}/Makefile" => ["#{tmp_path}/fake.rb",
49
+ - "#{tmp_path}/rbconfig.rb",
50
+ "#{tmp_path}/mkmf.rb"]
51
+
52
+ - # copy the file from the cross-ruby location
53
+ - file "#{tmp_path}/rbconfig.rb" => [rbconfig_file] do |t|
54
+ + # copy the rbconfig from the cross-ruby location and
55
+ + # genearte fake.rb for different ruby versions
56
+ + file "#{tmp_path}/fake.rb" => [rbconfig_file] do |t|
57
+ File.open(t.name, 'w') do |f|
58
+ - f.write "require 'fake.rb'\n\n"
59
+ + f.write fake_rb(for_platform, ruby_ver)
60
+ f.write File.read(t.prerequisites.first)
61
+ end
62
+ end
63
+
64
+ # copy mkmf from cross-ruby location
65
+ file "#{tmp_path}/mkmf.rb" => [mkmf_file] do |t|
66
+ - cp t.prerequisites.first, t.name
67
+ - if ruby_ver < "1.9" && "1.9" <= RUBY_VERSION
68
+ - File.open(t.name, 'r+t') do |f|
69
+ - content = f.read
70
+ + File.open(t.name, 'w') do |f|
71
+ + content = File.read(t.prerequisites.first)
72
+ + content.sub!(/^(require ')rbconfig(')$/, '\\1fake\\2')
73
+ + if ruby_ver < "1.9" && "1.9" <= RUBY_VERSION
74
+ content.sub!(/^( break )\*(defaults)$/, '\\1\\2.first')
75
+ content.sub!(/^( return )\*(defaults)$/, '\\1\\2.first')
76
+ content.sub!(/^( mfile\.)print( configuration\(srcprefix\))$/, '\\1puts\\2')
77
+ - f.rewind
78
+ - f.write content
79
+ - f.truncate(f.tell)
80
+ end
81
+ - end
82
+ - end
83
+ -
84
+ - # genearte fake.rb for different ruby versions
85
+ - file "#{tmp_path}/fake.rb" do |t|
86
+ - File.open(t.name, 'w') do |f|
87
+ - f.write fake_rb(for_platform, ruby_ver)
88
+ + f.write content
89
+ end
90
+ end
91
+
92
+ @@ -495,8 +486,10 @@ Java extension should be preferred.
93
+ # "cannot load such file -- win32/resolv" when it is required later on.
94
+ # See also: https://github.com/tjschuck/rake-compiler-dev-box/issues/5
95
+ require 'resolv'
96
+ + require 'rbconfig'
97
+
98
+ class Object
99
+ + remove_const :RbConfig
100
+ remove_const :RUBY_PLATFORM
101
+ remove_const :RUBY_VERSION
102
+ remove_const :RUBY_DESCRIPTION if defined?(RUBY_DESCRIPTION)
103
+ --
104
+ 2.5.0.windows.1
105
+
@@ -6,10 +6,12 @@ module RakeCompilerDock
6
6
  include Colors
7
7
 
8
8
  attr_reader :io
9
+ attr_reader :pwd
9
10
  attr_accessor :machine_name
10
11
 
11
- def initialize(io, machine_name="rake-compiler-dock")
12
+ def initialize(io, pwd, machine_name="rake-compiler-dock")
12
13
  @io = io
14
+ @pwd = pwd
13
15
  @machine_name = machine_name
14
16
 
15
17
  if !io.tty? || (RUBY_PLATFORM=~/mingw|mswin/ && RUBY_VERSION[/^\d+/] < '2')
@@ -55,7 +57,7 @@ module RakeCompilerDock
55
57
  end
56
58
 
57
59
  def ok?
58
- @docker_version_status == 0 && @docker_version_text =~ /version/
60
+ @docker_version_status == 0 && @docker_version_text =~ /version/ && doma_pwd_ok?
59
61
  end
60
62
 
61
63
  def docker_client_avail?
@@ -70,12 +72,17 @@ module RakeCompilerDock
70
72
  @doma_version_status == 0 && @doma_version_text =~ /version/
71
73
  end
72
74
 
75
+ def add_env_options(options, names)
76
+ names.each do |name|
77
+ if (v=ENV[name]) && !v.empty?
78
+ options << ["--engine-env", "#{name}=#{ENV[name]}"]
79
+ end
80
+ end
81
+ options
82
+ end
83
+
73
84
  def doma_create
74
- options = [
75
- "--engine-env", "ftp_proxy=#{ENV['ftp_proxy']}",
76
- "--engine-env", "http_proxy=#{ENV['http_proxy']}",
77
- "--engine-env", "https_proxy=#{ENV['https_proxy']}",
78
- ]
85
+ options = add_env_options([], %w[ftp_proxy http_proxy https_proxy])
79
86
  @doma_create_text, @doma_create_status = run("docker-machine create --driver virtualbox #{options.join(" ")} #{machine_name}", cmd: :visible, output: :visible)
80
87
  end
81
88
 
@@ -151,6 +158,17 @@ module RakeCompilerDock
151
158
  @b2d_start_envset
152
159
  end
153
160
 
161
+ def doma_pwd_ok?
162
+ case RUBY_PLATFORM
163
+ when /mingw|mswin/
164
+ pwd =~ /^\/c\/users/i
165
+ when /linux/
166
+ true
167
+ when /darwin/
168
+ pwd =~ /^\/users/i
169
+ end
170
+ end
171
+
154
172
  def set_env(text)
155
173
  set = false
156
174
  text.scan(/(unset |Remove-Item Env:\\)(.+?)$/) do |_, key|
@@ -237,6 +255,15 @@ module RakeCompilerDock
237
255
  help << ""
238
256
  help << yellow("You might try to regenerate TLS certificates with:")
239
257
  help << " docker-machine regenerate-certs #{machine_name}"
258
+ elsif !ok? && !doma_pwd_ok?
259
+ help << red("docker-machine can not mount the current working directory.")
260
+ help << ""
261
+ case RUBY_PLATFORM
262
+ when /mingw|mswin/
263
+ help << yellow(" Please move to a diretory below C:\\Users")
264
+ when /darwin/
265
+ help << yellow(" Please move to a diretory below /Users")
266
+ end
240
267
  elsif !ok?
241
268
  help << red("docker-machine is installed and started, but 'docker version' failed.")
242
269
  help << ""
@@ -262,6 +289,15 @@ module RakeCompilerDock
262
289
  help << yellow(" Please check why '") + white("boot2docker start") + yellow("' fails.")
263
290
  help << yellow(" You might need to re-init with '") + white("boot2docker delete") + yellow("'")
264
291
  help << yellow(" or have a look at our FAQs: http://git.io/vm8Nr")
292
+ elsif !ok? && !doma_pwd_ok?
293
+ help << red("boot2docker can not mount the current working directory.")
294
+ help << ""
295
+ case RUBY_PLATFORM
296
+ when /mingw|mswin/
297
+ help << yellow(" Please move to a diretory below C:\\Users")
298
+ when /darwin/
299
+ help << yellow(" Please move to a diretory below /Users")
300
+ end
265
301
  elsif !ok? && b2d_start_ok?
266
302
  help << red("boot2docker is installed and started, but 'docker version' failed.")
267
303
  help << ""
@@ -23,28 +23,18 @@ module RakeCompilerDock
23
23
  options = (Hash === args.last) ? args.pop : {}
24
24
  runargs = args.dup
25
25
 
26
- check_docker if options.fetch(:check_docker){ true }
27
- runargs.unshift("sigfw") if options.fetch(:sigfw){ true }
28
- runargs.unshift("runas") if options.fetch(:runas){ true }
29
- docker_opts = options.fetch(:options) do
30
- opts = ["--rm", "-i"]
31
- opts << "-t" if $stdin.tty?
32
- opts
33
- end
34
-
26
+ pwd = Dir.pwd
35
27
  case RUBY_PLATFORM
36
28
  when /mingw|mswin/
37
29
  # Change Path from "C:\Path" to "/c/Path" as used by boot2docker
38
- pwd = Dir.pwd.gsub(/^([a-z]):/i){ "/#{$1.downcase}" }
30
+ pwd = pwd.gsub(/^([a-z]):/i){ "/#{$1.downcase}" }
39
31
  # Virtualbox shared folders don't care about file permissions, so we use generic ids.
40
32
  uid = 1000
41
33
  gid = 1000
42
34
  when /darwin/
43
- pwd = Dir.pwd
44
35
  uid = 1000
45
36
  gid = 1000
46
37
  else
47
- pwd = Dir.pwd
48
38
  # Docker mounted volumes also share file uid/gid and permissions with the host.
49
39
  # Therefore we use the same attributes inside and outside the container.
50
40
  uid = Process.uid
@@ -53,6 +43,15 @@ module RakeCompilerDock
53
43
  user = options.fetch(:username){ current_user }
54
44
  group = options.fetch(:groupname){ current_group }
55
45
 
46
+ check_docker(pwd) if options.fetch(:check_docker){ true }
47
+ runargs.unshift("sigfw") if options.fetch(:sigfw){ true }
48
+ runargs.unshift("runas") if options.fetch(:runas){ true }
49
+ docker_opts = options.fetch(:options) do
50
+ opts = ["--rm", "-i"]
51
+ opts << "-t" if $stdin.tty?
52
+ opts
53
+ end
54
+
56
55
  cmd = ["docker", "run",
57
56
  "-v", "#{pwd}:#{make_valid_path(pwd)}",
58
57
  "-e", "UID=#{uid}",
@@ -128,12 +127,12 @@ module RakeCompilerDock
128
127
  name = name.gsub(/[ ]/i, "_")
129
128
  end
130
129
 
131
- @@docker_checked = nil
130
+ @@docker_checked = {}
132
131
 
133
- def check_docker
134
- return if @@docker_checked
132
+ def check_docker(pwd)
133
+ return if @@docker_checked[pwd]
135
134
 
136
- check = DockerCheck.new($stderr)
135
+ check = DockerCheck.new($stderr, pwd)
137
136
  unless check.ok?
138
137
  at_exit do
139
138
  check.print_help_text
@@ -141,7 +140,7 @@ module RakeCompilerDock
141
140
  raise DockerIsNotAvailable, "Docker is not available"
142
141
  end
143
142
 
144
- @@docker_checked = check
143
+ @@docker_checked[pwd] = check
145
144
  end
146
145
 
147
146
  end
@@ -1,4 +1,4 @@
1
1
  module RakeCompilerDock
2
- VERSION = "0.5.0"
3
- IMAGE_VERSION = "0.5.0"
2
+ VERSION = "0.5.1"
3
+ IMAGE_VERSION = "0.5.1"
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rake-compiler-dock
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lars Kanis
@@ -29,7 +29,7 @@ cert_chain:
29
29
  6jkDey5mE3jQb893U6ihl55uLkVQwxZZTq/flNWjTIcbbvKKafEGdGv5uOlB+KRL
30
30
  PRtgPFlA2jDgUr1EPAIH1Q==
31
31
  -----END CERTIFICATE-----
32
- date: 2015-12-25 00:00:00.000000000 Z
32
+ date: 2016-01-30 00:00:00.000000000 Z
33
33
  dependencies:
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: bundler
@@ -91,6 +91,7 @@ files:
91
91
  - README.md
92
92
  - Rakefile
93
93
  - bin/rake-compiler-dock
94
+ - build/patches/rake-compiler-0.9.5/compat-with-bundler.diff
94
95
  - build/patches/rake-compiler-0.9.5/without-exts.diff
95
96
  - build/patches/ruby-1.8.7-p374/nop.patch
96
97
  - build/patches/ruby-1.9.3/no_sendfile.patch
@@ -137,3 +138,4 @@ summary: Easy to use and reliable cross compiler environment for building Window
137
138
  test_files:
138
139
  - test/test_environment_variables.rb
139
140
  - test/test_starter.rb
141
+ has_rdoc:
metadata.gz.sig CHANGED
Binary file