wxruby3 0.9.7 → 0.9.8
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 +4 -4
- data/INSTALL.md +161 -42
- data/README.md +28 -22
- data/ext/mkrf_conf_ext.rb +68 -0
- data/lib/wx/core/secret_store.rb +38 -0
- data/lib/wx/doc/extra/02_lifecycles.md +4 -4
- data/lib/wx/doc/extra/14_config.md +1 -1
- data/lib/wx/doc/secret_store.rb +55 -0
- data/lib/wx/version.rb +1 -1
- data/lib/wx/wxruby/base.rb +3 -5
- data/lib/wx/wxruby/cmd/check.rb +182 -0
- data/lib/wx/wxruby/cmd/sampler.rb +1 -1
- data/lib/wx/wxruby/cmd/setup.rb +6 -3
- data/lib/wx/wxruby/cmd/test.rb +1 -1
- data/rakelib/configure.rb +60 -52
- data/rakelib/gem.rake +97 -67
- data/rakelib/gem.rb +293 -41
- data/rakelib/install.rb +3 -3
- data/rakelib/lib/config/{cygwin.rb → freebsd.rb} +1 -1
- data/rakelib/lib/config/linux.rb +3 -1
- data/rakelib/lib/config/macosx.rb +42 -11
- data/rakelib/lib/config/mingw.rb +2 -2
- data/rakelib/lib/config/pkgman/{base.rb → linux.rb} +36 -61
- data/rakelib/lib/config/pkgman/macosx.rb +17 -78
- data/rakelib/lib/config/unixish.rb +11 -1
- data/rakelib/lib/config/{netbsd.rb → unknown.rb} +3 -2
- data/rakelib/lib/config.rb +49 -29
- data/rakelib/lib/director/aui_manager.rb +1 -1
- data/rakelib/lib/director/dialog.rb +8 -0
- data/rakelib/lib/director/grid_ctrl.rb +2 -2
- data/rakelib/lib/director/richtext_composite_object.rb +2 -4
- data/rakelib/lib/director/secret_store.rb +117 -0
- data/rakelib/lib/director/tree_event.rb +2 -2
- data/rakelib/lib/generate/doc/secret_store.yaml +55 -0
- data/rakelib/lib/generate/doc.rb +1 -1
- data/rakelib/lib/specs/interfaces.rb +1 -0
- data/rakelib/lib/typemap/common.rb +10 -0
- data/rakelib/prepost.rake +8 -1
- data/rakelib/yard/templates/default/fulldoc/html/css/wxruby3.css +4 -0
- data/samples/sampler/sample.rb +2 -0
- data/tests/lib/wxapp_runner.rb +1 -1
- data/tests/test_config.rb +7 -4
- data/tests/test_secret_store.rb +83 -0
- metadata +41 -22
- data/rakefile +0 -14
- data/rakelib/lib/config/pkgman/arch.rb +0 -53
- data/rakelib/lib/config/pkgman/debian.rb +0 -66
- data/rakelib/lib/config/pkgman/rhel.rb +0 -54
- data/rakelib/lib/config/pkgman/suse.rb +0 -54
data/lib/wx/wxruby/base.rb
CHANGED
@@ -20,7 +20,7 @@ module WxRuby
|
|
20
20
|
def commands
|
21
21
|
@commands ||= ::Hash.new do |hash, key|
|
22
22
|
STDERR.puts "Unknown command #{key} specified."
|
23
|
-
exit(
|
23
|
+
exit(127)
|
24
24
|
end
|
25
25
|
end
|
26
26
|
private :commands
|
@@ -73,7 +73,7 @@ module WxRuby
|
|
73
73
|
describe_all
|
74
74
|
exit(0)
|
75
75
|
end
|
76
|
-
opts.order!(args)
|
76
|
+
opts.order!(args) rescue ($stderr.puts $!.message; exit(127))
|
77
77
|
end
|
78
78
|
end
|
79
79
|
end
|
@@ -81,9 +81,7 @@ module WxRuby
|
|
81
81
|
def self.run(argv = ARGV)
|
82
82
|
# parse global options (upto first command)
|
83
83
|
argv = WxRuby::Commands.parse_args(argv)
|
84
|
-
|
85
|
-
WxRuby::Commands.run(argv.shift, argv)
|
86
|
-
end
|
84
|
+
WxRuby::Commands.run(argv.shift, argv) unless argv.empty?
|
87
85
|
end
|
88
86
|
end
|
89
87
|
|
@@ -0,0 +1,182 @@
|
|
1
|
+
# Copyright (c) 2023 M.J.N. Corino, The Netherlands
|
2
|
+
#
|
3
|
+
# This software is released under the MIT license.
|
4
|
+
|
5
|
+
# wxruby check command handler
|
6
|
+
#--------------------------------------------------------------------
|
7
|
+
|
8
|
+
require 'fileutils'
|
9
|
+
require 'plat4m'
|
10
|
+
|
11
|
+
module WxRuby
|
12
|
+
module Commands
|
13
|
+
|
14
|
+
class Check
|
15
|
+
|
16
|
+
LOAD_ERRORS = {
|
17
|
+
linux: /cannot\s+open\s+shared\s+object/i,
|
18
|
+
darwin: /library\s+not\s+loaded/i,
|
19
|
+
windows: /specified\s+module\s+could\s+not\s+be\s+found/i
|
20
|
+
}
|
21
|
+
|
22
|
+
DESC = 'Run wxRuby3 runtime readiness check.'
|
23
|
+
|
24
|
+
def self.description
|
25
|
+
" check -h|[options]\t\t\t#{DESC}"
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.options
|
29
|
+
Commands.options['check'] ||= { verbose: Commands.options[:verbose] }
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.parse_args(args)
|
33
|
+
opts = OptionParser.new
|
34
|
+
opts.banner = "#{DESC}\n\nUsage: wxruby check -h|--help OR wxruby check [options]\n\n" +
|
35
|
+
"Returns:\n"+
|
36
|
+
" 0 if wxRuby3 is ready to run\n"+
|
37
|
+
" 1 if wxRuby3 does not seem to be built yet\n"+
|
38
|
+
" 2 if wxRuby3 has problems loading extension libraries\n"+
|
39
|
+
" 3 if an unexpected Ruby error occurred\n\n"+
|
40
|
+
"Unless '-q|--quiet' has been specified a description of the possible problem cause will\n"+
|
41
|
+
"be shown on failure.\n\n"
|
42
|
+
opts.separator ''
|
43
|
+
opts.on('-q', '--quiet',
|
44
|
+
"Do not show problem analysis messages on failures.") do |v|
|
45
|
+
Check.options[:quiet] = true
|
46
|
+
Check.options[:verbose] = false
|
47
|
+
end
|
48
|
+
opts.on('-v', '--verbose',
|
49
|
+
'Show verbose output') do |v|
|
50
|
+
Check.options[:verbose] = true
|
51
|
+
Check.options[:quiet] = false
|
52
|
+
end
|
53
|
+
opts.on('-h', '--help',
|
54
|
+
'Show this message.') do |v|
|
55
|
+
puts opts
|
56
|
+
puts
|
57
|
+
exit(0)
|
58
|
+
end
|
59
|
+
opts.parse!(args) rescue ($stderr.puts $!.message; exit(127))
|
60
|
+
end
|
61
|
+
|
62
|
+
def self.show_error(msg)
|
63
|
+
$stderr.puts(msg) unless options[:quiet]
|
64
|
+
end
|
65
|
+
|
66
|
+
def self.show_log(msg)
|
67
|
+
$stdout.puts(msg) if options[:verbose]
|
68
|
+
end
|
69
|
+
|
70
|
+
def self.run(argv)
|
71
|
+
return description if argv == :describe
|
72
|
+
|
73
|
+
parse_args(argv)
|
74
|
+
|
75
|
+
show_log('Checking build (or binary package installation) completion...')
|
76
|
+
# check if the binary setup (packages or built) has been completed successfully
|
77
|
+
unless Commands.setup_done?
|
78
|
+
$stderr.puts <<~__INFO_TXT
|
79
|
+
|
80
|
+
wxRuby3 requires the post-install setup cmd to be run to build and finish installing
|
81
|
+
the required runtime binaries. Execute the command like:
|
82
|
+
|
83
|
+
$ wxruby setup
|
84
|
+
|
85
|
+
To see the available options for the command execute:
|
86
|
+
|
87
|
+
$ wxruby setup -h
|
88
|
+
|
89
|
+
__INFO_TXT
|
90
|
+
exit(1)
|
91
|
+
end
|
92
|
+
|
93
|
+
# check runtime
|
94
|
+
show_log('Attempting to load wxRuby3 libraries...')
|
95
|
+
sysinfo = Plat4m.current
|
96
|
+
begin
|
97
|
+
require 'wx'
|
98
|
+
rescue LoadError => ex
|
99
|
+
if ex.message =~ LOAD_ERRORS[sysinfo.os.id]
|
100
|
+
# error loading shared libraries
|
101
|
+
show_log("Captured LoadError: #{ex.message}")
|
102
|
+
# check if wxWidgets libs can be located
|
103
|
+
show_log('Checking wxWidgets availability...')
|
104
|
+
wx_found = if Dir[File.join(WxRuby::ROOT, 'ext', "*.#{RbConfig::CONFIG['SOEXT']}")].empty?
|
105
|
+
# no embedded wxWidgets -> if system installed than 'wx-config' should be in the path
|
106
|
+
if system("wx-config --version>#{sysinfo.dev_null} 2>&1")
|
107
|
+
true # system installed
|
108
|
+
else
|
109
|
+
# no system installed wxWidgets
|
110
|
+
# check the system dependent load paths if any wxWidgets libs can be found
|
111
|
+
case sysinfo.os.id
|
112
|
+
when :linux
|
113
|
+
(ENV['LD_LIBRARY_PATH']||'').split(':').any? { |p| !Dir[File.join(p, 'libwx_base*.so')].empty? }
|
114
|
+
when :darwin
|
115
|
+
(ENV['DYLD_LIBRARY_PATH']||'').split(':').any? { |p| !Dir[File.join(p, 'libwx_base*.dylib')].empty? }
|
116
|
+
when :windows
|
117
|
+
(ENV['PATH']||'').split(';').any? { |p| !Dir[File.join(p, 'wxbase*.dll')].empty? }
|
118
|
+
else
|
119
|
+
true # do not know how to search so assume wxWidgets found
|
120
|
+
end
|
121
|
+
end
|
122
|
+
else
|
123
|
+
true # embedded wxWidgets
|
124
|
+
end
|
125
|
+
if wx_found
|
126
|
+
show_log('wxWidgets found')
|
127
|
+
show_error <<~__INFO_TXT
|
128
|
+
|
129
|
+
The runtime environment of this system seems to be missing some required libraries for
|
130
|
+
executing wxRuby3 apps.
|
131
|
+
Please be aware wxRuby3 requires a properly configured GUI based system to function.
|
132
|
+
See the documentation for more information on the required runtime environment.
|
133
|
+
|
134
|
+
__INFO_TXT
|
135
|
+
else
|
136
|
+
show_log('NO wxWidgets found')
|
137
|
+
show_error <<~__INFO_TXT
|
138
|
+
|
139
|
+
It seems wxRuby3 is not able to load any of the required wxWidgets libraries it was built
|
140
|
+
for.
|
141
|
+
Please make sure these (shared) libraries are available in the appropriate search path
|
142
|
+
for this system.
|
143
|
+
|
144
|
+
__INFO_TXT
|
145
|
+
end
|
146
|
+
else
|
147
|
+
show_error <<~__INFO_TXT
|
148
|
+
|
149
|
+
There is an unexpected problem loading the wxRuby3 extension libraries.
|
150
|
+
Please check the problem report below for a probable cause analysis. If you have reason
|
151
|
+
to suspect a bug to be the cause of this problem please file an issue at Github and attach
|
152
|
+
the problem report.
|
153
|
+
|
154
|
+
#{ex.message}
|
155
|
+
#{ex.backtrace.join("\n")}
|
156
|
+
|
157
|
+
__INFO_TXT
|
158
|
+
end
|
159
|
+
exit(2)
|
160
|
+
rescue Exception => ex
|
161
|
+
show_log("Captured Exception: #{ex.message}")
|
162
|
+
show_error <<~__INFO_TXT
|
163
|
+
|
164
|
+
There is an unexpected problem loading the wxRuby3 libraries.
|
165
|
+
Please check the problem report below for a probable cause analysis. If you have reason
|
166
|
+
to suspect a bug to be the cause of this problem please file an issue at Github and attach
|
167
|
+
the problem report.
|
168
|
+
|
169
|
+
#{ex.message}
|
170
|
+
#{ex.backtrace.join("\n")}
|
171
|
+
|
172
|
+
__INFO_TXT
|
173
|
+
exit(3)
|
174
|
+
end
|
175
|
+
end
|
176
|
+
|
177
|
+
end
|
178
|
+
|
179
|
+
self.register('check', Check)
|
180
|
+
|
181
|
+
end
|
182
|
+
end
|
data/lib/wx/wxruby/cmd/setup.rb
CHANGED
@@ -14,7 +14,7 @@ module WxRuby
|
|
14
14
|
DESC = 'Run wxRuby3 post-install setup.'
|
15
15
|
|
16
16
|
def self.description
|
17
|
-
" setup -h|[options]\t\t#{DESC}"
|
17
|
+
" setup -h|[options]\t\t\t#{DESC}"
|
18
18
|
end
|
19
19
|
|
20
20
|
def self.options
|
@@ -26,7 +26,10 @@ module WxRuby
|
|
26
26
|
opts.banner = "#{DESC}\n\nUsage: wxruby setup -h|--help OR wxruby setup [options]\n\n"
|
27
27
|
opts.separator ''
|
28
28
|
opts.on('--wxwin=path',
|
29
|
-
"the installation root for the wxWidgets libraries and headers if not using the system default"
|
29
|
+
"the installation root for the wxWidgets libraries and headers if not using the system default",
|
30
|
+
"(use '@system' to force using system default only)") do |v|
|
31
|
+
Setup.options['wxwin'] = (v.downcase == '@system') ? v : File.expand_path(v)
|
32
|
+
end
|
30
33
|
opts.on('--wxxml=path',
|
31
34
|
"the path to the doxygen generated wxWidgets XML interface specs if not using bootstrap") {|v| Setup.options['wxxml'] = File.expand_path(v)}
|
32
35
|
opts.on('--with-wxwin',
|
@@ -47,7 +50,7 @@ module WxRuby
|
|
47
50
|
puts
|
48
51
|
exit(0)
|
49
52
|
end
|
50
|
-
opts.parse!(args)
|
53
|
+
opts.parse!(args) rescue ($stderr.puts $!.message; exit(127))
|
51
54
|
end
|
52
55
|
|
53
56
|
def self.run(argv)
|
data/lib/wx/wxruby/cmd/test.rb
CHANGED
data/rakelib/configure.rb
CHANGED
@@ -57,13 +57,26 @@ module WXRuby3
|
|
57
57
|
opts.on('--sodir=path',
|
58
58
|
"the directory for ruby extensions [#{get_config('sodir')}]") {|v| CONFIG['sodir'] = v}
|
59
59
|
opts.on('--wxwin=path',
|
60
|
-
"the installation root for the wxWidgets libraries and headers if not using the system default"
|
60
|
+
"the installation root for the wxWidgets libraries and headers if not using the system default",
|
61
|
+
"(use '@system' to force using system default only)") { |v|
|
62
|
+
if v.downcase == '@system'
|
63
|
+
CONFIG[WXW_SYS_KEY] = true
|
64
|
+
CONFIG['wxwin'] = nil
|
65
|
+
CONFIG['with-wxwin'] = false
|
66
|
+
else
|
67
|
+
CONFIG['wxwin'] = File.expand_path(v)
|
68
|
+
CONFIG[WXW_SYS_KEY] = false
|
69
|
+
end
|
70
|
+
}
|
61
71
|
opts.on('--wxxml=path',
|
62
72
|
"the path to the doxygen generated wxWidgets XML interface specs if not using bootstrap") {|v| CONFIG['wxxml'] = File.expand_path(v)}
|
63
73
|
opts.on('--wxwininstdir=path',
|
64
|
-
"the directory where the wxWidgets dlls are
|
74
|
+
"the directory where the wxWidgets dlls are installed (do not change if not absolutely needed) [#{instance.get_config('wxwininstdir')}]") {|v| CONFIG['wxwininstdir'] = v}
|
65
75
|
opts.on('--with-wxwin',
|
66
|
-
"build a local copy of wxWidgets for use with wxRuby [false]") {|v|
|
76
|
+
"build a local copy of wxWidgets for use with wxRuby [false]") { |v|
|
77
|
+
CONFIG['with-wxwin'] = true
|
78
|
+
CONFIG[WXW_SYS_KEY] = false
|
79
|
+
}
|
67
80
|
opts.on('--with-debug',
|
68
81
|
"build with debugger support [#{instance.get_config('with-debug')}]") {|v| CONFIG['with-debug'] = true}
|
69
82
|
opts.on('--swig=path',
|
@@ -84,69 +97,64 @@ module WXRuby3
|
|
84
97
|
def self.check
|
85
98
|
instance.init # re-initialize
|
86
99
|
|
87
|
-
|
100
|
+
# should we try to use a system or user defined wxWidgets installation?
|
101
|
+
if !get_config('with-wxwin')
|
88
102
|
|
89
|
-
if
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
set_config('wxwininstdir', File.join(get_cfg_string('wxwin'), 'lib'))
|
99
|
-
end
|
100
|
-
end
|
101
|
-
elsif !get_cfg_string('wxwin').empty?
|
102
|
-
if get_cfg_string('wxwininstdir').empty?
|
103
|
-
if instance.windows?
|
104
|
-
set_config('wxwininstdir', File.join(get_cfg_string('wxwin'), 'bin'))
|
105
|
-
else
|
106
|
-
set_config('wxwininstdir', File.join(get_cfg_string('wxwin'), 'lib'))
|
107
|
-
end
|
103
|
+
# check if a user defined wxWidgets location is specified or should be using a system standard install
|
104
|
+
if get_cfg_string('wxwin').empty?
|
105
|
+
# assume/force system standard install; will be checked below
|
106
|
+
set_config('wxwininstdir', get_cfg_string('libdir')) if get_cfg_string('wxwininstdir').empty?
|
107
|
+
elsif get_cfg_string('wxwininstdir').empty? # if not explicitly specified derive from 'wxwin'
|
108
|
+
if instance.windows?
|
109
|
+
set_config('wxwininstdir', File.join(get_cfg_string('wxwin'), 'bin'))
|
110
|
+
else
|
111
|
+
set_config('wxwininstdir', File.join(get_cfg_string('wxwin'), 'lib'))
|
108
112
|
end
|
109
|
-
else
|
110
|
-
set_config('wxwininstdir', get_cfg_string('sodir')) if get_cfg_string('wxwininstdir').empty?
|
111
113
|
end
|
112
114
|
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
else
|
127
|
-
if get_cfg_string('wxwin').empty? && get_cfg_string('wxxml').empty?
|
128
|
-
# no custom wxWidgets build specified so switch to assuming we should include building wxWidgets ourselves
|
115
|
+
# or should we use an embedded (automatically built) wxWidgets installation
|
116
|
+
else
|
117
|
+
|
118
|
+
set_config('wxwininstdir', instance.ext_dir)
|
119
|
+
|
120
|
+
end
|
121
|
+
|
122
|
+
if !get_cfg_string('wxwin').empty? || !get_config('with-wxwin')
|
123
|
+
# check wxWidgets availability through 'wx-config' command
|
124
|
+
if instance.check_wx_config
|
125
|
+
if instance.wx_config("--version") < '3.2.0'
|
126
|
+
if get_cfg_string('wxwin').empty? && get_cfg_string('wxxml').empty? && !get_config(WXW_SYS_KEY)
|
127
|
+
# no custom (or forced system) wxWidgets build specified so switch to assuming we should include building wxWidgets ourselves
|
129
128
|
set_config('with-wxwin', true)
|
130
129
|
else
|
131
130
|
# if someone wants to customize they HAVE to do it right
|
132
|
-
STDERR.puts "ERROR:
|
131
|
+
STDERR.puts "ERROR: Incompatible wxWidgets version. wxRuby requires a wxWidgets >= 3.2.0 release."
|
133
132
|
exit(1)
|
134
133
|
end
|
135
134
|
end
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
if File.directory?(xml_path) && !Dir.glob(File.join(xml_path, '*.xml')).empty?
|
145
|
-
set_config('wxxml', xml_path)
|
135
|
+
else
|
136
|
+
if get_cfg_string('wxwin').empty? && get_cfg_string('wxxml').empty? && !get_config(WXW_SYS_KEY)
|
137
|
+
# no custom (or forced system) wxWidgets build specified so switch to assuming we should include building wxWidgets ourselves
|
138
|
+
set_config('with-wxwin', true)
|
139
|
+
else
|
140
|
+
# if someone wants to customize they HAVE to do it right
|
141
|
+
STDERR.puts "ERROR: Cannot find wxWidgets. wxRuby requires a wxWidgets >= 3.2.0 release."
|
142
|
+
exit(1)
|
146
143
|
end
|
147
144
|
end
|
145
|
+
# else we're assumed to build wxWidgets ourselves so cannot test anything yet
|
146
|
+
end
|
148
147
|
|
148
|
+
if get_cfg_string('wxxml').empty? && !get_cfg_string('wxwin').empty?
|
149
|
+
# in case of a custom wxWidgets build and no explicit xml path check if the custom build holds this
|
150
|
+
xml_path = File.join(get_cfg_string('wxwin'), 'docs', 'doxygen', 'out', 'xml')
|
151
|
+
# if not there see if the standard setup 'wxw_root/<install dir>' was used
|
152
|
+
xml_path = File.join(get_cfg_string('wxwin'), '..', 'docs', 'doxygen', 'out', 'xml') unless File.directory?(xml_path)
|
153
|
+
if File.directory?(xml_path) && !Dir.glob(File.join(xml_path, '*.xml')).empty?
|
154
|
+
set_config('wxxml', xml_path)
|
155
|
+
end
|
149
156
|
end
|
157
|
+
|
150
158
|
end
|
151
159
|
|
152
160
|
end
|
data/rakelib/gem.rake
CHANGED
@@ -12,14 +12,10 @@ namespace :wxruby do
|
|
12
12
|
|
13
13
|
namespace :gem do
|
14
14
|
|
15
|
-
task :srcgem => ['bin:build', WXRuby3::Gem.gem_file
|
15
|
+
task :srcgem => ['bin:build', WXRuby3::Gem.gem_file]
|
16
16
|
|
17
|
-
|
18
|
-
|
19
|
-
end
|
20
|
-
|
21
|
-
# this task only exists for installed source gems (where package tasks have been removed)
|
22
|
-
unless File.file?(File.join(__dir__, 'package.rake'))
|
17
|
+
# this task only exists for installed (source) gems (where run tasks have been removed)
|
18
|
+
unless File.file?(File.join(__dir__, 'run.rake'))
|
23
19
|
|
24
20
|
task :setup => 'config:bootstrap' do |_t, args|
|
25
21
|
begin
|
@@ -51,7 +47,7 @@ namespace :wxruby do
|
|
51
47
|
|
52
48
|
$ ./wxruby test
|
53
49
|
|
54
|
-
The wxRuby3 sample
|
50
|
+
The wxRuby3 sample explorer can be run by executing:
|
55
51
|
|
56
52
|
$ ./wxruby sampler
|
57
53
|
|
@@ -65,13 +61,14 @@ namespace :wxruby do
|
|
65
61
|
end
|
66
62
|
|
67
63
|
# source gem file
|
68
|
-
file WXRuby3::Gem.gem_file
|
69
|
-
gemspec = WXRuby3::Gem.define_spec
|
64
|
+
file WXRuby3::Gem.gem_file => WXRuby3::Gem.manifest do
|
65
|
+
gemspec = WXRuby3::Gem.define_spec do |gem|
|
70
66
|
gem.summary = %Q{wxWidgets extension for Ruby}
|
71
67
|
gem.description = %Q{wxRuby3 is a Ruby library providing an extension for the wxWidgets C++ UI framework}
|
72
68
|
gem.email = 'mcorino@m2c-software.nl'
|
73
69
|
gem.homepage = "https://github.com/mcorino/wxRuby3"
|
74
70
|
gem.authors = ['Martin Corino']
|
71
|
+
gem.extensions = ['ext/mkrf_conf_ext.rb']
|
75
72
|
gem.files = WXRuby3::Gem.manifest
|
76
73
|
gem.require_paths = %w{lib}
|
77
74
|
gem.bindir = 'bin'
|
@@ -82,6 +79,7 @@ file WXRuby3::Gem.gem_file('wxruby3', WXRuby3::WXRUBY_VERSION) => WXRuby3::Gem.m
|
|
82
79
|
gem.add_dependency 'rake'
|
83
80
|
gem.add_dependency 'minitest', '~> 5.15'
|
84
81
|
gem.add_dependency 'test-unit', '~> 3.5'
|
82
|
+
gem.add_dependency 'plat4m', '~> 1.0'
|
85
83
|
gem.rdoc_options <<
|
86
84
|
'--exclude=\\.dll' <<
|
87
85
|
'--exclude=\\.so' <<
|
@@ -90,17 +88,39 @@ file WXRuby3::Gem.gem_file('wxruby3', WXRuby3::WXRUBY_VERSION) => WXRuby3::Gem.m
|
|
90
88
|
"'--exclude=lib/wx/(aui|core|grid|html|pg|prt|rbn|rtc|stc|wxruby)/.*'"
|
91
89
|
gem.metadata = {
|
92
90
|
"bug_tracker_uri" => "https://github.com/mcorino/wxRuby3/issues",
|
93
|
-
"source_code_uri" => "https://github.com/mcorino/wxRuby3",
|
94
|
-
"documentation_uri" => "https://mcorino.github.io/wxRuby3",
|
95
91
|
"homepage_uri" => "https://github.com/mcorino/wxRuby3",
|
92
|
+
"documentation_uri" => "https://mcorino.github.io/wxRuby3",
|
93
|
+
"github_repo" => "https://github.com/mcorino/wxRuby3"
|
96
94
|
}
|
97
95
|
gem.post_install_message = <<~__MSG
|
98
96
|
|
99
|
-
The wxRuby3 Gem has been successfully installed.
|
100
|
-
|
101
|
-
|
97
|
+
The wxRuby3 Gem has been successfully installed including the 'wxruby' utility.
|
98
|
+
|
99
|
+
In case no suitable binary release package was available for your platform you
|
100
|
+
will need to run the post-install setup process by executing:
|
101
|
+
|
102
|
+
$ wxruby setup
|
103
|
+
|
104
|
+
To check whether wxRuby3 is ready to run or not you can at any time execute the
|
105
|
+
following command:
|
106
|
+
|
107
|
+
$ wxruby check
|
108
|
+
|
109
|
+
Run 'wxruby check -h' for more information.
|
110
|
+
|
111
|
+
When the wxRuby3 setup has been fully completed you can start using wxRuby3.
|
112
|
+
|
113
|
+
You can run the regression tests to verify the installation by executing:
|
102
114
|
|
103
|
-
|
115
|
+
$ wxruby test
|
116
|
+
|
117
|
+
The wxRuby3 sample explorer can be run by executing:
|
118
|
+
|
119
|
+
$ wxruby sampler
|
120
|
+
|
121
|
+
Have fun using wxRuby3.
|
122
|
+
|
123
|
+
Run 'wxruby -h' to see information on the available commands.
|
104
124
|
|
105
125
|
__MSG
|
106
126
|
end
|
@@ -110,60 +130,70 @@ end
|
|
110
130
|
desc 'Build wxRuby 3 gem'
|
111
131
|
task :gem => 'wxruby:gem:srcgem'
|
112
132
|
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
gem.add_dependency 'rake'
|
136
|
-
gem.add_dependency 'minitest', '~> 5.15'
|
137
|
-
gem.add_dependency 'test-unit', '~> 3.5'
|
138
|
-
gem.rdoc_options << '--exclude=\\.dll' << '--exclude=\\.so'
|
139
|
-
gem.metadata = {
|
140
|
-
"bug_tracker_uri" => "https://github.com/mcorino/wxRuby3/issues",
|
141
|
-
"source_code_uri" => "https://github.com/mcorino/wxRuby3",
|
142
|
-
"documentation_uri" => "https://mcorino.github.io/wxRuby3",
|
143
|
-
"homepage_uri" => "https://github.com/mcorino/wxRuby3",
|
144
|
-
}
|
145
|
-
gem.post_install_message = <<~__MSG
|
146
|
-
|
147
|
-
wxRuby3 has been successfully installed including the 'wxruby' utility.
|
148
|
-
|
149
|
-
You can run the regression tests to verify the installation by executing:
|
150
|
-
|
151
|
-
$ ./wxruby test
|
152
|
-
|
153
|
-
The wxRuby3 sample selector can be run by executing:
|
154
|
-
|
155
|
-
$ ./wxruby sampler
|
156
|
-
|
157
|
-
Have fun using wxRuby3.
|
158
|
-
__MSG
|
133
|
+
# these tasks do not exist for installed (source) gems (where run tasks have been removed)
|
134
|
+
if File.file?(File.join(__dir__, 'run.rake'))
|
135
|
+
|
136
|
+
if WXRuby3.is_bootstrapped?
|
137
|
+
|
138
|
+
namespace :wxruby do
|
139
|
+
|
140
|
+
namespace :gem do
|
141
|
+
task :binpkg => ['wxruby:build', 'wxruby:doc', 'bin:build', WXRuby3::Gem.bin_pkg_file]
|
142
|
+
end
|
143
|
+
|
144
|
+
end
|
145
|
+
|
146
|
+
# binary package file
|
147
|
+
file WXRuby3::Gem.bin_pkg_file => WXRuby3::Gem.bin_pkg_manifest do |t|
|
148
|
+
WXRuby3::Install.install_wxwin_shlibs
|
149
|
+
begin
|
150
|
+
# create bin package
|
151
|
+
WXRuby3::Gem.build_bin_pkg
|
152
|
+
ensure
|
153
|
+
# cleanup
|
154
|
+
WXRuby3::Install.remove_wxwin_shlibs
|
159
155
|
end
|
160
|
-
WXRuby3::Gem.build_gem(gemspec)
|
161
|
-
ensure
|
162
|
-
WXRuby3::Install.remove_wxwin_shlibs
|
163
156
|
end
|
157
|
+
|
158
|
+
desc 'Build wxRuby 3 binary release package'
|
159
|
+
task :binpkg => 'wxruby:gem:binpkg'
|
160
|
+
|
164
161
|
end
|
165
162
|
|
166
|
-
|
167
|
-
|
163
|
+
else # in case of installed source gem the following tasks exist
|
164
|
+
|
165
|
+
namespace :wxruby do
|
166
|
+
|
167
|
+
namespace :gem do
|
168
|
+
kwargs = {}
|
169
|
+
no_prebuilt = false
|
170
|
+
task :install do |_, args|
|
171
|
+
argv = args.extras
|
172
|
+
until argv.empty?
|
173
|
+
switch = argv.shift
|
174
|
+
case switch
|
175
|
+
when '--prebuilt'
|
176
|
+
kwargs[:prebuilt_only] = true
|
177
|
+
when '--no-prebuilt'
|
178
|
+
no_prebuilt = true unless kwargs[:package]
|
179
|
+
when '--package'
|
180
|
+
fail "Missing value for '--package' argument for wxruby:gem:install." if argv.empty?
|
181
|
+
kwargs[:package] = argv.shift
|
182
|
+
no_prebuilt = false
|
183
|
+
else
|
184
|
+
fail "Invalid argument #{switch} for wxruby:gem:install."
|
185
|
+
end
|
186
|
+
end
|
187
|
+
unless no_prebuilt # do not even try to find&install a binary package
|
188
|
+
if WXRuby3::Gem.install_gem(**kwargs)
|
189
|
+
# binaries have been installed -> finish install
|
190
|
+
Rake::Task['wxruby:post:binpkg'].invoke
|
191
|
+
end
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
195
|
+
end
|
196
|
+
|
197
|
+
end
|
168
198
|
|
169
199
|
end
|