rubyinstaller-build 0.1.0

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.
Files changed (136) hide show
  1. checksums.yaml +7 -0
  2. data/.github/ISSUE_TEMPLATE.md +8 -0
  3. data/.gitignore +12 -0
  4. data/.yardopts +7 -0
  5. data/CHANGELOG-2.4.md +166 -0
  6. data/CHANGELOG-2.5.md +87 -0
  7. data/CHANGELOG-2.6.md +62 -0
  8. data/CHANGELOG-2.7.md +22 -0
  9. data/Gemfile +6 -0
  10. data/LICENSE.txt +25 -0
  11. data/README.md +114 -0
  12. data/Rakefile +164 -0
  13. data/appveyor-key.asc.asc +61 -0
  14. data/appveyor.yml +141 -0
  15. data/docker/Dockerfile +50 -0
  16. data/docker/Rakefile +22 -0
  17. data/gems/rubyinstaller-build.yaml +2 -0
  18. data/lib/devkit.rb +3 -0
  19. data/lib/ruby_installer.rb +3 -0
  20. data/lib/ruby_installer/build.rb +23 -0
  21. data/lib/ruby_installer/build/ca_cert_file.rb +66 -0
  22. data/lib/ruby_installer/build/colors.rb +45 -0
  23. data/lib/ruby_installer/build/components/01_msys2.rb +97 -0
  24. data/lib/ruby_installer/build/components/02_pacman_update.rb +35 -0
  25. data/lib/ruby_installer/build/components/03_dev_tools.rb +68 -0
  26. data/lib/ruby_installer/build/components/base.rb +58 -0
  27. data/lib/ruby_installer/build/components_installer.rb +53 -0
  28. data/lib/ruby_installer/build/dll_directory.rb +97 -0
  29. data/lib/ruby_installer/build/erb_compiler.rb +61 -0
  30. data/lib/ruby_installer/build/gem_version.rb +5 -0
  31. data/lib/ruby_installer/build/gems.rb +74 -0
  32. data/lib/ruby_installer/build/msys2_installation.rb +280 -0
  33. data/lib/ruby_installer/build/openstruct.rb +29 -0
  34. data/lib/ruby_installer/build/release.rb +120 -0
  35. data/lib/ruby_installer/build/singleton.rb +45 -0
  36. data/lib/ruby_installer/build/task.rb +20 -0
  37. data/lib/ruby_installer/build/utils.rb +110 -0
  38. data/lib/ruby_installer/runtime.rb +18 -0
  39. data/lib/ruby_installer/runtime/ridk.rb +195 -0
  40. data/packages/ri-msys/Rakefile +72 -0
  41. data/packages/ri-msys/recipes/sandbox/70-add-msys2-installation.rake +18 -0
  42. data/packages/ri/Rakefile +60 -0
  43. data/recipes/archive-7z/10-define-variables.rake +2 -0
  44. data/recipes/archive-7z/70-create-archive.rake +10 -0
  45. data/recipes/archive-7z/90-define-main-task.rake +2 -0
  46. data/recipes/installer-inno/10-define-variables.rake +2 -0
  47. data/recipes/installer-inno/50-generate-filelist.rake +28 -0
  48. data/recipes/installer-inno/60-generate-iss-file.rake +8 -0
  49. data/recipes/installer-inno/70-run-iscc.rake +19 -0
  50. data/recipes/installer-inno/90-define-main-task.rake +2 -0
  51. data/recipes/installer-inno/events.iss +88 -0
  52. data/recipes/installer-inno/images/fake.bmp +0 -0
  53. data/recipes/installer-inno/images/wizard-large.bmp +0 -0
  54. data/recipes/installer-inno/images/wizard-logo.bmp +0 -0
  55. data/recipes/installer-inno/ri_gui.iss +286 -0
  56. data/recipes/installer-inno/rubyinstaller.iss.erb +157 -0
  57. data/recipes/installer-inno/util.iss +271 -0
  58. data/recipes/msys2/10-define-variables.rake +6 -0
  59. data/recipes/msys2/30-download-msys2-base.rake +4 -0
  60. data/recipes/msys2/40-extract-msys2-base.rake +9 -0
  61. data/recipes/msys2/50-init-msys.rake +8 -0
  62. data/recipes/msys2/50-install-components.rake +19 -0
  63. data/recipes/msys2/90-define-main-task.rake +2 -0
  64. data/recipes/sandbox/10-define-variables.rake +6 -0
  65. data/recipes/sandbox/20-add-runtime-files.rake +15 -0
  66. data/recipes/sandbox/20-define-import-files.rake +16 -0
  67. data/recipes/sandbox/20-define-import-readline.rake +28 -0
  68. data/recipes/sandbox/20-extend-irb.rake +13 -0
  69. data/recipes/sandbox/40-fix-rake-shebang.rake +6 -0
  70. data/recipes/sandbox/40-generate-rake-cmd.rake +7 -0
  71. data/recipes/sandbox/40-generate-version-file.rake +20 -0
  72. data/recipes/sandbox/50-do-import-files.rake +17 -0
  73. data/recipes/sandbox/50-gather-sandbox-files.rake +6 -0
  74. data/recipes/sandbox/60-define-gem-wrappers.rake +5 -0
  75. data/recipes/sandbox/60-side-by-side-assembly.rake +81 -0
  76. data/recipes/sandbox/70-add-gem-bin-wrappers.rake +10 -0
  77. data/recipes/sandbox/70-install-gems.rake +11 -0
  78. data/recipes/sandbox/80-copy-msys-files.rake +8 -0
  79. data/recipes/sandbox/90-define-main-task.rake +2 -0
  80. data/recipes/sandbox/LICENSE.txt +24 -0
  81. data/recipes/sandbox/rubyinstaller-2.3.4-x64.files +4 -0
  82. data/recipes/sandbox/rubyinstaller-2.3.4-x86.files +4 -0
  83. data/recipes/sandbox/rubyinstaller-2.3.4.files +43 -0
  84. data/recipes/sandbox/rubyinstaller-2.4.10-x64.files +4 -0
  85. data/recipes/sandbox/rubyinstaller-2.4.10-x86.files +4 -0
  86. data/recipes/sandbox/rubyinstaller-2.4.10.files +44 -0
  87. data/recipes/sandbox/rubyinstaller-2.5.8-x64.files +6 -0
  88. data/recipes/sandbox/rubyinstaller-2.5.8-x86.files +6 -0
  89. data/recipes/sandbox/rubyinstaller-2.5.8.files +33 -0
  90. data/recipes/sandbox/rubyinstaller-2.6.6-x64.files +6 -0
  91. data/recipes/sandbox/rubyinstaller-2.6.6-x86.files +6 -0
  92. data/recipes/sandbox/rubyinstaller-2.6.6.files +35 -0
  93. data/recipes/sandbox/rubyinstaller-2.7.1-x64.files +6 -0
  94. data/recipes/sandbox/rubyinstaller-2.7.1-x86.files +6 -0
  95. data/recipes/sandbox/rubyinstaller-2.7.1.files +35 -0
  96. data/recipes/sandbox/rubyinstaller-head-x64.files +6 -0
  97. data/recipes/sandbox/rubyinstaller-head-x86.files +6 -0
  98. data/recipes/sandbox/rubyinstaller-head.files +35 -0
  99. data/recipes/unpack/10-define-variables.rake +5 -0
  100. data/recipes/unpack/20-define-msys-packages.rake +1 -0
  101. data/recipes/unpack/30-add-ri2-repo-to-msys.rake +41 -0
  102. data/recipes/unpack/50-install-msys-packages.rake +28 -0
  103. data/recipes/unpack/90-define-main-task.rake +2 -0
  104. data/recipes/unpack/appveyor-repo-key.asc +29 -0
  105. data/resources/files/irbrc_predefiner.rb +21 -0
  106. data/resources/files/operating_system.rb +21 -0
  107. data/resources/files/readline.rb +17 -0
  108. data/resources/files/reline.rb +437 -0
  109. data/resources/files/reline/ansi.rb +177 -0
  110. data/resources/files/reline/config.rb +297 -0
  111. data/resources/files/reline/general_io.rb +75 -0
  112. data/resources/files/reline/history.rb +56 -0
  113. data/resources/files/reline/key_actor.rb +7 -0
  114. data/resources/files/reline/key_actor/base.rb +7 -0
  115. data/resources/files/reline/key_actor/emacs.rb +517 -0
  116. data/resources/files/reline/key_actor/vi_command.rb +518 -0
  117. data/resources/files/reline/key_actor/vi_insert.rb +517 -0
  118. data/resources/files/reline/key_stroke.rb +53 -0
  119. data/resources/files/reline/kill_ring.rb +113 -0
  120. data/resources/files/reline/line_editor.rb +2231 -0
  121. data/resources/files/reline/unicode.rb +527 -0
  122. data/resources/files/reline/unicode/east_asian_width.rb +1145 -0
  123. data/resources/files/reline/version.rb +3 -0
  124. data/resources/files/reline/windows.rb +273 -0
  125. data/resources/files/ridk.cmd +39 -0
  126. data/resources/files/ridk.ps1 +26 -0
  127. data/resources/files/ridk_use/ridk.cmd +13 -0
  128. data/resources/files/ridk_use/ridk.ps1 +17 -0
  129. data/resources/files/ridk_use/ridk_use.rb +221 -0
  130. data/resources/files/setrbvars.cmd +14 -0
  131. data/resources/icons/ruby-doc.ico +0 -0
  132. data/resources/ssl/README-SSL.md +37 -0
  133. data/resources/ssl/c_rehash.rb +167 -0
  134. data/resources/ssl/cacert.pem +4105 -0
  135. data/rubyinstaller-build.gemspec +28 -0
  136. metadata +226 -0
@@ -0,0 +1,164 @@
1
+ $: << File.expand_path("../lib", __FILE__)
2
+
3
+ require "ruby_installer/build"
4
+ require "bundler/gem_tasks"
5
+ require "rake/clean"
6
+ require "find"
7
+
8
+ include RubyInstaller::Build::Utils
9
+
10
+ task :gem => :build
11
+
12
+ # Forward package build tasks to the sub Rakefiles.
13
+ %w[ri ri-msys].each do |packname|
14
+ namespace packname do |ns|
15
+ Rake::TaskManager.record_task_metadata = true
16
+ Rake.load_rakefile "packages/#{packname}/Rakefile"
17
+ ns.tasks.select(&:comment).each do |t|
18
+ name, comment = t.name.sub(/.*?:/, ""), t.comment
19
+ t.clear
20
+ desc comment
21
+ task name do
22
+ chdir "packages/#{packname}" do
23
+ sh "rake", name
24
+ end
25
+ end
26
+ end
27
+ end
28
+
29
+ # Add all package dirs/files to `rake clean` which are not registered in git and don't contain any files registered in git.
30
+ gitfiles = `git ls-files -z`.split("\0")
31
+ clean_list = Enumerator.new do |y|
32
+ Find.find("packages/#{packname}") do |path|
33
+ path = path.gsub(/\A\.\//, "") # remove prefix "./"
34
+ unless gitfiles.find { |gf| gf.start_with?(path) }
35
+ y << path
36
+ Find.prune
37
+ end
38
+ end
39
+ end
40
+ CLEAN.include(clean_list.to_a)
41
+ end
42
+
43
+ libtest = "test/helper/libtest.dll"
44
+ file libtest => libtest.sub(".dll", ".c") do |t|
45
+ RubyInstaller::Build.enable_msys_apps
46
+ sh RbConfig::CONFIG['CC'], "-shared", t.prerequisites.first, "-o", t.name
47
+ end
48
+ CLEAN.include(libtest)
49
+
50
+ desc "Run tests on the Ruby installation"
51
+ task :test => libtest do
52
+ sh "ruby -w -W2 -I. -e \"#{Dir["test/**/test_*.rb"].map{|f| "require '#{f}';"}.join}\" -- -v"
53
+
54
+ # Re-test with simulated legacy Windows version.
55
+ # This is done in a dedicated run, because it's not possible to revert a call to SetDefaultDllDirectories().
56
+ # See https://msdn.microsoft.com/de-de/library/windows/desktop/hh310515(v=vs.85).aspx
57
+ ENV['RI_FORCE_PATH_FOR_DLL'] = '1'
58
+ sh "ruby -w -W2 -I. -e \"#{Dir["test/ruby_installer/test_module.rb"].map{|f| "require '#{f}';"}.join}\" -- -v"
59
+ ENV['RI_FORCE_PATH_FOR_DLL'] = '0'
60
+ end
61
+
62
+ namespace :ssl do
63
+ directory "resources/ssl"
64
+
65
+ desc "Download latest SSL trust certificates"
66
+ task :update => "resources/ssl" do
67
+ ca_file = RubyInstaller::Build::CaCertFile.new
68
+ File.binwrite("resources/ssl/cacert.pem", ca_file.content)
69
+ end
70
+
71
+ task :update_check do
72
+ old_file = RubyInstaller::Build::CaCertFile.new(File.binread("resources/ssl/cacert.pem"))
73
+ print "Download SSL CA list..."
74
+ begin
75
+ new_file = RubyInstaller::Build::CaCertFile.new
76
+ rescue SocketError => err
77
+ puts " failed: #{err} (#{err.class})"
78
+ else
79
+ if old_file == new_file
80
+ puts " => unchanged"
81
+ else
82
+ puts " => changed"
83
+ raise "cacert.pem has changed"
84
+ end
85
+ end
86
+ end
87
+ end
88
+
89
+ namespace "release" do
90
+ desc "Update date in CHANGELOG file and set a git tag"
91
+ task "tag", [:name] do |_task, args|
92
+ release = RubyInstaller::Build::Release.new
93
+
94
+ # Enable this to update release date in CHANGELOG files
95
+ # release.update_history(args[:name])
96
+ release.tag_version(args[:name])
97
+ end
98
+
99
+ task "upload" do
100
+ files = ARGV[ARGV.index("--")+1 .. -1]
101
+
102
+ release = RubyInstaller::Build::Release.new
103
+ release.upload_to_github(
104
+ tag: ENV['DEPLOY_TAG'],
105
+ repo: ENV['DEPLOY_REPO_NAME'],
106
+ token: ENV['DEPLOY_TOKEN'],
107
+ files: files
108
+ )
109
+ end
110
+
111
+ task "appveyor_upload" do
112
+ files = ARGV[ARGV.index("--")+1 .. -1]
113
+ files.each { |f| task(f) }
114
+ if ENV['DEPLOY_TAG'].to_s.include?(ENV['target_ruby'])
115
+ puts "Upload #{ENV['DEPLOY_TAG']}: #{files}"
116
+
117
+ require "ruby_installer/build"
118
+ RubyInstaller::Build.enable_msys_apps
119
+
120
+ sh "c:/msys64/usr/bin/mkdir -p /c/Users/appveyor/.gnupg"
121
+ sh "gpg --batch --passphrase %GPGPASSWD% --decrypt appveyor-key.asc.asc | gpg --import"
122
+ sh "c:/msys64/usr/bin/mkdir artifacts"
123
+ sh "cp", "-v", *files, "artifacts/"
124
+ sh "ls artifacts/* | xargs -n1 gpg --verbose --detach-sign --armor"
125
+ sh "rake release:upload -- artifacts/*"
126
+ else
127
+ puts "No release upload"
128
+ end
129
+ end
130
+ CLEAN.include("artifacts")
131
+ end
132
+
133
+ namespace "docker" do
134
+ task :image do
135
+ rm_rf "docker/gitrepo"
136
+ cp_r ".git", "docker/gitrepo"
137
+ sh "docker build -t ri2 docker"
138
+ end
139
+
140
+ desc "Run all builds"
141
+ multitask :builds
142
+
143
+ %w[ri ri-msys].each do |package|
144
+ %w[x86 x64].each do |arch|
145
+ task "#{package}-#{arch}" => :image do
146
+ # Use the cache of our main MSYS2 environment for package install
147
+ cachedir = File.expand_path("../cache/#{package}-#{arch}", __FILE__)
148
+ mkdir_p cachedir
149
+ puts "Using pacman cache in #{cachedir}"
150
+
151
+ pwd = Dir.pwd
152
+ pkgdir = "#{pwd}/pkg"
153
+ mkdir_p pkgdir
154
+
155
+ sh "docker run --rm -v #{cachedir}:c:/ruby24-x64/msys64/var/cache/pacman -v #{pkgdir}:c:/build/pkg ri2 cmd /c rake PACKAGE=#{package} ARCH=#{arch}"
156
+ end
157
+
158
+ multitask :builds => "#{package}-#{arch}"
159
+ end
160
+ end
161
+ end
162
+
163
+ CLOBBER.include("pkg")
164
+ CLOBBER.include("cache")
@@ -0,0 +1,61 @@
1
+ -----BEGIN PGP MESSAGE-----
2
+
3
+ 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
60
+ =Gi0q
61
+ -----END PGP MESSAGE-----
@@ -0,0 +1,141 @@
1
+ init:
2
+ - echo %PATH%
3
+ # We use a clean PATH to avoid interferences with the hundreds of installed programs.
4
+ - set PATH=c:/Program Files/Git/cmd;c:/ProgramData/chocolatey/bin;c:/Program Files (x86)/Inno Setup 5;c:/Windows/system32;C:/Windows/System32/WindowsPowerShell/v1.0
5
+ - set PATH=C:/ruby%build_ruby%/bin;%PATH%
6
+ - echo %PATH%
7
+ - ruby --version
8
+ - IF DEFINED DEPLOY_TAG (
9
+ echo.%DEPLOY_TAG% | findstr /C:"%target_ruby%">nul || (echo stop build not required for release & (exit 1))
10
+ )
11
+
12
+ install:
13
+ - choco install -y InnoSetup
14
+ # Update pacman for compat with zst packages
15
+ - c:/msys64/usr/bin/sh -lc "pacman -Syu --needed --noconfirm"
16
+
17
+ build_script:
18
+ # Remove broken pkg files from cache
19
+ - c:/msys64/usr/bin/rm -f c:/msys64/var/cache/pacman/pkg/{pacman-mirrors}*
20
+ # Build the installer
21
+ - rake ri:ruby-%target_ruby%-%arch% & c:/msys64/usr/bin/gpgconf --homedir /etc/pacman.d/gnupg --kill all
22
+
23
+ # Reuse installed ruby for RubyInstaller-Devkit
24
+ - c:/msys64/usr/bin/mkdir -p packages/ri-msys/recipes/
25
+ - c:/msys64/usr/bin/cp -a packages/ri/recipes/unpack packages/ri-msys/recipes/
26
+ # Remove broken pkg files from cache
27
+ - c:/msys64/usr/bin/rm -f c:/msys64/var/cache/pacman/pkg/{autoconf,automake,bash-completion,ca-certificates}*
28
+ # Build the RubyInstaller-Devkit installer
29
+ - rake ri-msys:ruby-%target_ruby%-%arch%:installer-inno
30
+
31
+ test_script:
32
+ # Run the built Ruby installer and install to c:/ri2-ruby
33
+ - ruby -e "Dir['packages/ri/recipes/installer-inno/rubyinstaller-%target_ruby%*-%arch%.exe'].each{|f| system(f, '/verysilent', '/dir=c:/ri2-ruby', '/tasks=assocfiles,modpath,defaultutf8')}"
34
+ # Activate the environment variables set by the installer, but exclude
35
+ # git's /usr/bin, because it conflicts with one RubyInstaller test.
36
+ - ps: $env:PATH = [Environment]::GetEnvironmentVariable("PATH","Machine") -replace ";C:\\Program Files\\Git\\usr\\bin" -replace ";C:\\Ruby193\\bin"
37
+ - ps: $env:RUBYOPT = [Environment]::GetEnvironmentVariable("RUBYOPT","Machine")
38
+ - echo %PATH%
39
+ - echo %RUBYOPT%
40
+ - ridk version
41
+ # Install dependent gems
42
+ - IF "%target_ruby%" LSS "2.6" ( gem update --system && gem install bundler --force )
43
+ # Remove lock file because bundler version can vary between build and runtime
44
+ - del Gemfile.lock
45
+ - bundle install
46
+ # Run all tests against the new installed Ruby
47
+ - rake test
48
+ # Verify that the used CA list is still the latest.
49
+ - rake ssl:update_check
50
+ # Enable MSYS2 commands in cmd
51
+ - ridk enable
52
+
53
+ # Run the Ruby Spec Suite
54
+ - IF DEFINED run_ruby_spec ( IF NOT DEFINED APPVEYOR_REPO_TAG_NAME (
55
+ git clone --depth 1 https://github.com/ruby/mspec &&
56
+ git clone --depth 1 https://github.com/ruby/spec &&
57
+ env --unset=RUBYOPT ruby -C spec ../mspec/bin/mspec -j --exclude "Socket.getnameinfo using IPv4 using a 3 element Array as the first argument without custom flags returns an Array containing the hostname and service name" --exclude "Socket.getifaddrs each returned Socket::Ifaddr has an interface index"
58
+ ))
59
+
60
+ # Run the MRI copy of Ruby Spec Suite
61
+ - IF DEFINED run_mri_spec ( IF NOT DEFINED APPVEYOR_REPO_TAG_NAME (
62
+ git clone --depth 1 https://github.com/ruby/ruby -b %run_mri_spec% &&
63
+ env --unset=RUBYOPT ruby -C ruby/spec/ruby ../mspec/bin/mspec -j --exclude "Socket.getnameinfo using IPv4 using a 3 element Array as the first argument without custom flags returns an Array containing the hostname and service name"
64
+ ))
65
+
66
+ # Run upload to github (only on tag builds)
67
+ - set DEPLOY_TAG=%APPVEYOR_REPO_TAG_NAME%
68
+ - IF "%target_ruby%" EQU "head" (SET DEPLOY_TAG=rubyinstaller-head)
69
+ - rake release:appveyor_upload -- packages/ri/recipes/installer-inno/%DEPLOY_TAG%*-%arch%.exe packages/ri/recipes/archive-7z/%DEPLOY_TAG%*-%arch%.7z packages/ri-msys/recipes/installer-inno/ruby*-%target_ruby%*-%arch%.exe
70
+
71
+ # Provide the rubyinstaller.exe files for download
72
+ artifacts:
73
+ - path: packages/ri/recipes/installer-inno/ruby*-$(target_ruby)*-$(arch).exe
74
+ name: Executable installer
75
+ - path: packages/ri/recipes/archive-7z/ruby*-$(target_ruby)*-$(arch).7z
76
+ name: Plain archive file
77
+ - path: packages/ri-msys/recipes/installer-inno/ruby*-$(target_ruby)*-$(arch).exe
78
+ name: Executable installer with MYS2
79
+
80
+ environment:
81
+ GPGPASSWD:
82
+ secure: /DELcKSZC+R4HdXgsqR1RtC+IrDZ3Xut/vzV/KgepE3M8OsjJtmWutN0+Jvc2Iv2
83
+ DEPLOY_REPO_NAME: oneclick/rubyinstaller2
84
+ DEPLOY_TOKEN:
85
+ secure: HIQ7Ovn+zMKskPWhnlYGvQMvdLPlZB5lhn62wzw0AUSno8UfntuTgFmPvS1pUwOW
86
+ matrix:
87
+ - target_ruby: "2.7.1"
88
+ arch: "x86"
89
+ build_ruby: "26"
90
+ MINGW_PACKAGE_PREFIX: "mingw-w64-i686"
91
+ MSYSTEM: "MINGW32"
92
+ run_ruby_spec: true
93
+
94
+ - target_ruby: "2.7.1"
95
+ arch: "x64"
96
+ build_ruby: "26"
97
+ MINGW_PACKAGE_PREFIX: "mingw-w64-x86_64"
98
+ MSYSTEM: "MINGW64"
99
+ run_ruby_spec: true
100
+
101
+ - target_ruby: "2.6.6"
102
+ arch: "x64"
103
+ build_ruby: "25"
104
+ MINGW_PACKAGE_PREFIX: "mingw-w64-x86_64"
105
+ MSYSTEM: "MINGW64"
106
+ run_ruby_spec: true
107
+
108
+ - target_ruby: "2.5.8"
109
+ arch: "x64"
110
+ build_ruby: "24"
111
+ MINGW_PACKAGE_PREFIX: "mingw-w64-x86_64"
112
+ MSYSTEM: "MINGW64"
113
+ run_ruby_spec: true
114
+
115
+ - target_ruby: "2.6.6"
116
+ arch: "x86"
117
+ build_ruby: "25"
118
+ MINGW_PACKAGE_PREFIX: "mingw-w64-i686"
119
+ MSYSTEM: "MINGW32"
120
+ run_ruby_spec: true
121
+
122
+ - target_ruby: "2.5.8"
123
+ arch: "x86"
124
+ build_ruby: "24"
125
+ MINGW_PACKAGE_PREFIX: "mingw-w64-i686"
126
+ MSYSTEM: "MINGW32"
127
+ run_ruby_spec: true
128
+
129
+ - target_ruby: "head"
130
+ arch: "x64"
131
+ build_ruby: "26"
132
+ MINGW_PACKAGE_PREFIX: "mingw-w64-x86_64"
133
+ MSYSTEM: "MINGW64"
134
+ run_mri_spec: master
135
+
136
+ - target_ruby: "head"
137
+ arch: "x86"
138
+ build_ruby: "26"
139
+ MINGW_PACKAGE_PREFIX: "mingw-w64-i686"
140
+ MSYSTEM: "MINGW32"
141
+ run_mri_spec: master
@@ -0,0 +1,50 @@
1
+ FROM microsoft/windowsservercore
2
+ # FROM microsoft/nanoserver
3
+
4
+ # Download base ruby
5
+ RUN powershell \
6
+ [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
7
+ Invoke-WebRequest https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.4.6-1/rubyinstaller-devkit-2.4.6-1-x64.exe -Outfile rubyinstaller.exe
8
+ # Download git
9
+ RUN powershell \
10
+ [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
11
+ Invoke-WebRequest https://github.com/git-for-windows/git/releases/download/v2.20.1.windows.1/Git-2.20.1-64-bit.exe -Outfile git-installer.exe
12
+ # Download Inno Setup
13
+ RUN powershell \
14
+ [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
15
+ Invoke-WebRequest http://www.jrsoftware.org/download.php/is.exe -Outfile inno-setup.exe
16
+
17
+ # Install base ruby and initialize Devkit
18
+ RUN (cmd /c rubyinstaller.exe /verysilent /log=install.log) || (powershell get-content c:/install.log)
19
+ RUN powershell $env:PATH = [Environment]::GetEnvironmentVariable('PATH','Machine'); \
20
+ $env:RUBYOPT = [Environment]::GetEnvironmentVariable('RUBYOPT','Machine')
21
+ RUN ruby --version
22
+ RUN ridk install 1
23
+
24
+ # Install git
25
+ RUN cmd /c git-installer.exe /verysilent
26
+ RUN git --version
27
+
28
+ # Install Inno Setup
29
+ RUN cmd /c inno-setup.exe /verysilent /allusers
30
+ RUN powershell [Environment]::SetEnvironmentVariable('PATH', $env:PATH + ';c:/Program Files (x86)/Inno Setup 6', 'Machine')
31
+ RUN iscc --version || (exit 0)
32
+
33
+ RUN ridk enable
34
+
35
+ # pacman fails with EXDEV error after download when /var/cache/pkg is bind mounted into the container.
36
+ # Therefore mount /var/cache directory an let pacman create the pkg directory.
37
+ RUN ridk exec rm -r c:/ruby24-x64/msys64/var/cache/pacman/pkg
38
+
39
+ # Import the git repository and unpack it in /build
40
+ WORKDIR /build
41
+ COPY gitrepo .git/
42
+ RUN dir
43
+ RUN git checkout -f
44
+
45
+ # Install required rubygems
46
+ RUN gem install bundler --no-doc
47
+ RUN bundle
48
+
49
+ WORKDIR /build/docker
50
+ CMD rake
@@ -0,0 +1,22 @@
1
+ task :default do
2
+ cd ".." do
3
+ package = ENV['PACKAGE']
4
+ arch = ENV['ARCH']
5
+
6
+ mkdir_p "packages/#{package}/recipes/msys2/"
7
+ cp Dir["/ruby*/msys*/var/cache/pacman/pkg/msys2-{x86_64,i686}-latest.tar.xz"], "packages/#{package}/recipes/msys2/"
8
+
9
+ sh "rake #{package}:ruby-2.6.4-#{arch} #{package}:ruby-2.5.6-#{arch} #{package}:ruby-2.4.7-#{arch}"
10
+
11
+ # Copy result files to the output directory
12
+ cp Dir["packages/#{package}/recipes/installer-inno/*.exe"], "pkg/"
13
+ cp Dir["packages/#{package}/recipes/archive-7z/*.7z"], "pkg/"
14
+ cp Dir["packages/#{package}/recipes/msys2/msys2-{x86_64,i686}-latest.tar.xz"], Dir["/ruby*/msys*/var/cache/pacman/pkg/"]
15
+ end
16
+ end
17
+
18
+ # GPG starts a background process called "gpg-agent".
19
+ # For safety we shut the process explicit down when finished with all tasks.
20
+ END {
21
+ sh "ridk exec gpgconf --homedir /etc/pacman.d/gnupg --kill all"
22
+ }
@@ -0,0 +1,2 @@
1
+ ---
2
+ :gem_build: rubyinstaller-build.gemspec
@@ -0,0 +1,3 @@
1
+ require "ruby_installer/runtime"
2
+
3
+ RubyInstaller::Runtime.enable_msys_apps