Skip to content

Commit 43c6253

Browse files
committed
Add x86 32-bit architecture.
1 parent 549bb19 commit 43c6253

File tree

7 files changed

+144
-32
lines changed

7 files changed

+144
-32
lines changed

Rakefile

+4-4
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,17 @@ end
1010

1111
rubies = Dir["compile/ruby-*"]
1212

13-
ENV['RI_ARCHS'] ||= 'x64'
13+
ENV['RI_ARCHS'] ||= 'x64:x86'
1414
ENV['RI_ARCHS'].split(":").each do |arch|
1515

1616
rubies.each do |compiledir|
1717
pack = RubyPackage.new( compiledir: compiledir, arch: arch, rootdir: __dir__ ).freeze
1818

1919
namespace pack.rake_namespace do
2020

21-
compile = CompileTask.new( package: pack ).freeze
22-
sandbox = SandboxTask.new( package: pack, compile_task: compile ).freeze
23-
InstallerTask.new( package: pack, sandbox_task: sandbox ).freeze
21+
compile = CompileTask.new( package: pack )
22+
sandbox = SandboxTask.new( package: pack, compile_task: compile )
23+
InstallerTask.new( package: pack, sandbox_task: sandbox )
2424
end
2525
end
2626
end

compile/task.rake

+8-13
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,26 @@
1-
require "ostruct"
2-
require "rake"
3-
require "build_utils"
4-
5-
class CompileTask < OpenStruct
6-
include Rake::DSL
7-
include BuildUtils
1+
require "base_task"
82

3+
class CompileTask < BaseTask
94
def initialize(*args)
105
super
11-
self.pkgfile = File.join(package.compiledir, "mingw-w64-x86_64-ruby-#{package.rubyver_pkgrel}-any.pkg.tar.xz")
6+
self.pkgfile = File.join(package.compiledir, "#{package.pacman_arch}-ruby-#{package.rubyver_pkgrel}-any.pkg.tar.xz")
127

13-
desc "Build pacman package for ruby-#{package.rubyver}"
8+
desc "Build pacman package for ruby-#{package.rubyver}-#{package.arch}"
149
task "compile" => [:devkit, pkgfile]
1510

16-
self.readline_pkgfile = File.join("compile", "mingw-w64-readline", "mingw-w64-x86_64-readline-6.3.008-1-any.pkg.tar.xz")
11+
self.readline_pkgfile = File.join("compile", "mingw-w64-readline", "#{package.pacman_arch}-readline-6.3.008-1-any.pkg.tar.xz")
1712
file readline_pkgfile => [package.pkgbuild] do |t|
1813
chdir(File.dirname(t.name)) do
1914
pkgfile = File.basename(readline_pkgfile)
20-
msys_sh "MINGW_INSTALLS=mingw64 makepkg-mingw -sf &&
15+
msys_sh "MINGW_INSTALLS=#{package.mingwdir} makepkg-mingw -sf &&
2116
(pacman --noconfirm -U #{pkgfile.inspect} || rm -f #{pkgfile.inspect})"
2217
end
2318
end
2419

2520
file pkgfile => [package.pkgbuild, readline_pkgfile] do
2621
chdir(package.compiledir) do
27-
cp Dir[File.join(rootdir, "resources/icons/*.ico")], "."
28-
msys_sh "MINGW_INSTALLS=mingw64 makepkg-mingw -sf"
22+
cp Dir[File.join(package.rootdir, "resources/icons/*.ico")], "."
23+
msys_sh "MINGW_INSTALLS=#{package.mingwdir} makepkg-mingw -sf"
2924
end
3025
end
3126
end
+75
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
bin/erb
2+
bin/erb.cmd
3+
bin/gem
4+
bin/gem.cmd
5+
bin/irb
6+
bin/irb.cmd
7+
bin/libasprintf-0.dll
8+
bin/libatomic-1.dll
9+
bin/libbz2-1.dll
10+
bin/libcharset-1.dll
11+
bin/libeay32.dll
12+
bin/libexpat-1.dll
13+
bin/libffi-6.dll
14+
bin/libgcc_s_dw2-1.dll
15+
bin/libgdbm-4.dll
16+
bin/libgettextlib-0-19-7.dll
17+
bin/libgettextpo-0.dll
18+
bin/libgettextsrc-0-19-7.dll
19+
bin/libgfortran-3.dll
20+
bin/libgmp-10.dll
21+
bin/libgmpxx-4.dll
22+
bin/libgomp-1.dll
23+
bin/libhistory6.dll
24+
bin/libiconv-2.dll
25+
bin/libintl-8.dll
26+
bin/libminizip-1.dll
27+
bin/libp11-kit-0.dll
28+
bin/libquadmath-0.dll
29+
bin/libreadline6.dll
30+
bin/libssp-0.dll
31+
bin/libstdc++-6.dll
32+
bin/libtasn1-6.dll
33+
bin/libtermcap-0.dll
34+
bin/libwinpthread-1.dll
35+
bin/libyaml-0-2.dll
36+
bin/rubydevkit.cmd
37+
bin/rake
38+
bin/rake.cmd
39+
bin/rdoc
40+
bin/rdoc.cmd
41+
bin/ri
42+
bin/ri.cmd
43+
bin/ruby.exe
44+
bin/rubyw.exe
45+
bin/setrbvars.cmd
46+
bin/ssleay32.dll
47+
bin/msvcrt-ruby240.dll
48+
bin/zlib1.dll
49+
include/ruby-2.4.0
50+
lib/engines/4758ccaeay32.dll
51+
lib/engines/aepeay32.dll
52+
lib/engines/atallaeay32.dll
53+
lib/engines/capieay32.dll
54+
lib/engines/chileay32.dll
55+
lib/engines/cswifteay32.dll
56+
lib/engines/gmpeay32.dll
57+
lib/engines/gosteay32.dll
58+
lib/engines/nuroneay32.dll
59+
lib/engines/padlockeay32.dll
60+
lib/engines/surewareeay32.dll
61+
lib/engines/ubseceay32.dll
62+
lib/libmsvcrt-ruby240.dll.a
63+
lib/pkgconfig/ruby-2.4.pc
64+
lib/ruby/2.4.0
65+
lib/ruby/gems/2.4.0
66+
lib/ruby/site_ruby/2.4.0
67+
lib/ruby/vendor_ruby/2.4.0
68+
share/doc/ruby/html/images/ruby-doc.ico
69+
ssl/cert.pem
70+
ssl/certs/ca-bundle.crt
71+
ssl/certs/ca-bundle.trust.crt
72+
ssl/openssl.cnf
73+
lib/ruby/site_ruby/devkit.rb
74+
lib/ruby/site_ruby/ruby_installer.rb
75+
lib/ruby/2.4.0/rubygems/defaults/operating_system.rb

installer/rubyinstaller.iss

+1-1
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ DefaultDirName={#DefaultDirName}
6363

6464
; NOTE: The value of AppId uniquely identifies this application.
6565
; Do not use the same AppId value in installers for other applications!
66-
AppId=RubyInstaller-{#RubyMajorMinor}
66+
AppId=RubyInstaller-{#RubyMajorMinor}-{#RubyBuildPlatform}
6767
AppName={#InstallerName}
6868
AppVerName={#InstallerName}
6969
AppPublisher={#InstallerPublisher}

installer/task.rake

+8-12
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,22 @@
1-
require "ostruct"
2-
require "rake"
3-
4-
class InstallerTask < OpenStruct
5-
include Rake::DSL
1+
require "base_task"
62

3+
class InstallerTask < BaseTask
74
def initialize(*args)
85
super
96
sandboxdirmgw = sandbox_task.sandboxdirmgw
10-
self.installer_exe = "installer/rubyinstaller-#{package.rubyver_pkgrel}-x64.exe"
11-
installerfile_listfile = "installer/rubyinstaller-#{package.rubyver}-x64.files"
7+
self.installer_exe = "installer/rubyinstaller-#{package.rubyver_pkgrel}-#{package.arch}.exe"
8+
installerfile_listfile = "installer/rubyinstaller-#{package.rubyver}-#{package.arch}.files"
129
installerfiles = File.readlines(installerfile_listfile).map{|path| File.join(sandboxdirmgw, path.chomp)}
1310
installerfiles.each do |path|
1411
file path
1512
end
1613

17-
desc "Build installer for ruby-#{package.rubyver}"
14+
desc "Build installer for ruby-#{package.rubyver}-#{package.arch}"
1815
task "installer" => [:devkit, "sandbox", installer_exe]
1916

2017
file File.join(sandboxdirmgw, "bin/rake.cmd") => File.join(sandboxdirmgw, "bin/rake.bat") do |t|
2118
out = File.read(t.prerequisites.first)
22-
.gsub("\\mingw64\\bin\\", "%~dp0")
19+
.gsub("\\#{package.mingwdir}\\bin\\", "%~dp0")
2320
.gsub(/"[^"]*\/bin\/rake"/, "\"%~dp0rake\"")
2421
File.write(t.name, out)
2522
end
@@ -39,7 +36,7 @@ class InstallerTask < OpenStruct
3936
end
4037
end
4138

42-
filelist_iss = "installer/filelist-ruby-#{package.rubyver}-x64-mingw32.iss"
39+
filelist_iss = "installer/filelist-ruby-#{package.rubyver}-#{package.ruby_arch}.iss"
4340
file filelist_iss => [__FILE__, installerfile_listfile] do
4441
puts "generate #{filelist_iss}"
4542
out = installerfiles.map do |path|
@@ -52,10 +49,9 @@ class InstallerTask < OpenStruct
5249
File.write(filelist_iss, out)
5350
end
5451

55-
default_inst_dir = "C:\\Ruby#{package.rubyver2.gsub(".","")}-x64"
5652
iss_files = Dir["installer/*.iss"]
5753
file installer_exe => (installerfiles + iss_files + [filelist_iss]) do
58-
sh "cmd", "/c", "iscc", "installer/rubyinstaller.iss", "/Q", "/dRubyVersion=#{package.rubyver}", "/dRubyBuildPlatform=x64-mingw32", "/dRubyShortPlatform=-x64", "/dDefaultDirName=#{default_inst_dir}", "/dPackageRelease=#{package.pkgrel}", "/O#{File.dirname(installer_exe)}", "/F#{File.basename(installer_exe, ".exe")}"
54+
sh "cmd", "/c", "iscc", "installer/rubyinstaller.iss", "/Q", "/dRubyVersion=#{package.rubyver}", "/dRubyBuildPlatform=#{package.ruby_arch}", "/dRubyShortPlatform=-#{package.arch}", "/dDefaultDirName=#{package.default_instdir}", "/dPackageRelease=#{package.pkgrel}", "/O#{File.dirname(installer_exe)}", "/F#{File.basename(installer_exe, ".exe")}"
5955
end
6056
end
6157
end

lib/base_task.rb

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
require "rake"
2+
require "build_utils"
3+
4+
class BaseTask
5+
include Rake::DSL
6+
include BuildUtils
7+
8+
def initialize(hash={})
9+
@__attrs = {}
10+
hash.each do |k,v|
11+
send("#{k}=", v)
12+
end
13+
end
14+
15+
def method_missing(meth, *args)
16+
if meth=~/\A(.*)=\z/ && args.length == 1
17+
attr = $1
18+
self.class.class_eval do
19+
define_method(attr) do
20+
@__attrs[attr]
21+
end
22+
define_method(meth) do |val|
23+
@__attrs[attr] = val
24+
end
25+
end
26+
@__attrs[attr] = args.first
27+
else
28+
super
29+
end
30+
end
31+
end

lib/ruby_package.rb

+17-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
require "ostruct"
1+
require "base_task"
22

3-
class RubyPackage < OpenStruct
3+
class RubyPackage < BaseTask
44
def initialize(*args)
55
super
66
self.rubyver = File.basename(compiledir).gsub("ruby-", "")
@@ -12,5 +12,20 @@ def initialize(*args)
1212

1313
self.rake_namespace = "ruby-#{rubyver}-#{arch}"
1414
self.rubyver2 = rubyver[/^\d+\.\d+/]
15+
16+
case arch
17+
when 'x64'
18+
self.pacman_arch = "mingw-w64-x86_64"
19+
self.ruby_arch = "x64-mingw32"
20+
self.mingwdir = "mingw64"
21+
self.default_instdir = "C:\\Ruby#{rubyver2.gsub(".","")}-x64"
22+
when 'x86'
23+
self.pacman_arch = "mingw-w64-i686"
24+
self.ruby_arch = "i386-mingw32"
25+
self.mingwdir = "mingw32"
26+
self.default_instdir = "C:\\Ruby#{rubyver2.gsub(".","")}"
27+
else
28+
raise "invalid arch #{arch}"
29+
end
1530
end
1631
end

0 commit comments

Comments
 (0)