jruby-launcher 1.1.10-java → 1.1.15-java
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/Makefile +3 -0
- data/Rakefile +1 -1
- data/argparser.cpp +40 -8
- data/argparser.h +1 -0
- data/extconf.rb +7 -0
- data/inc/Makefile-conf.mk +5 -0
- data/lib/jruby-launcher.rb +1 -1
- data/pkg/jruby-launcher-1.1.14-java/extconf.rb +12 -0
- data/pkg/{jruby-launcher-1.1.9-java → jruby-launcher-1.1.14-java}/lib/jruby-launcher.rb +1 -1
- data/pkg/{jruby-launcher-1.1.9-java → jruby-launcher-1.1.14-java}/lib/rubygems/defaults/jruby_native.rb +0 -0
- data/pkg/{jruby-launcher-1.1.9-java → jruby-launcher-1.1.14-java}/spec/launcher_spec.rb +5 -2
- data/pkg/{jruby-launcher-1.1.9-java → jruby-launcher-1.1.14-java}/spec/spec_helper.rb +0 -5
- data/platformlauncher.cpp +20 -5
- data/rb_w32_cmdvector.h +3 -3
- data/spec/launcher_spec.rb +15 -5
- data/spec/spec_helper.rb +0 -5
- data/unixlauncher.cpp +10 -0
- data/utilsfuncs.cpp +13 -1
- data/utilsfuncs.h +1 -0
- data/utilsfuncswin.cpp +20 -2
- data/version.h +1 -1
- metadata +8 -9
- data/pkg/jruby-launcher-1.1.9-java/extconf.rb +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0b6988d6ac03341b36b3f204165bee190f7f7ae0a73ad223527b7631bd4e5b80
|
4
|
+
data.tar.gz: 0c797f2e012c00217e9defc6081c69c636443ca836436d25fc21d95326c398c7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 26b78fd8b5b97ac99c2d3822805ff6acaebdc39e9a015a0c99cbc4b8de563b6ebe34d09376d9a7a5c0759362e7dd97bdeffe5303aa91085c21a706e77a441964
|
7
|
+
data.tar.gz: 6f39b0b7f613069696db0acfd3494b029c14e7d847e7093fa8527cab76ff40ba3c61325bfb5b119e189103b2457eab2a50bd27feb52d3dae19079dbf41560371
|
data/Makefile
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
# These line gets substituted with the actual Config::CONFIG items location by extconf.rb
|
2
2
|
PREFIX = notspecified
|
3
3
|
BINDIR = $(PREFIX)/bin
|
4
|
+
JRUBY_VERSION = notspecified
|
5
|
+
JRUBY_MODULE = 1
|
4
6
|
INSTALLDIR = $(PREFIX)/lib/ruby/shared/rubygems/defaults
|
5
7
|
INSTALLDIR9000 = $(PREFIX)/lib/ruby/stdlib/rubygems/defaults
|
6
8
|
OLDINSTALLDIR = $(PREFIX)/lib/ruby/site_ruby/1.8/rubygems/defaults
|
@@ -112,6 +114,7 @@ include $(SUB_IMPLMK)
|
|
112
114
|
|
113
115
|
# Pick conf based on OS. for mingw64, must manually override for now.
|
114
116
|
ifeq ($(OS),Windows_NT)
|
117
|
+
CC=gcc
|
115
118
|
CONF=mingw
|
116
119
|
else
|
117
120
|
CONF=unix
|
data/Rakefile
CHANGED
@@ -32,7 +32,7 @@ task :gemspec => './lib/jruby-launcher.rb' do
|
|
32
32
|
end
|
33
33
|
|
34
34
|
desc "Create gem file"
|
35
|
-
task :package => [:update_version, :gemspec
|
35
|
+
task :package => [:update_version, :gemspec] do
|
36
36
|
Gem::PackageTask.new(@gemspec) do |pkg|
|
37
37
|
end
|
38
38
|
Rake::Task['gem'].invoke
|
data/argparser.cpp
CHANGED
@@ -10,6 +10,7 @@
|
|
10
10
|
#include <algorithm>
|
11
11
|
#include <unistd.h>
|
12
12
|
#include <limits>
|
13
|
+
#include <fstream>
|
13
14
|
#include "utilsfuncs.h"
|
14
15
|
#include "argparser.h"
|
15
16
|
#include "argnames.h"
|
@@ -250,7 +251,6 @@ bool ArgParser::parseArgs(int argc, char *argv[]) {
|
|
250
251
|
|
251
252
|
// Force OpenJDK-based JVMs to use /dev/urandom for random number generation
|
252
253
|
// See https://github.com/jruby/jruby/issues/4685 among others.
|
253
|
-
struct stat buffer;
|
254
254
|
if (access("/dev/urandom", R_OK) == 0) {
|
255
255
|
// OpenJDK tries really hard to prevent you from using urandom.
|
256
256
|
// See https://bugs.openjdk.java.net/browse/JDK-6202721
|
@@ -488,8 +488,12 @@ void ArgParser::prepareOptions() {
|
|
488
488
|
|
489
489
|
if (!bootClassPath.empty()) {
|
490
490
|
if (useModulePath) {
|
491
|
+
#ifdef JRUBY_MODULE
|
491
492
|
// When modules are present, use module path for the jruby libs (aka bootClassPath)
|
492
493
|
option = OPT_CMDLINE_MODULE_PATH;
|
494
|
+
#else
|
495
|
+
option = OPT_BOOT_CLASS_PATH;
|
496
|
+
#endif
|
493
497
|
} else {
|
494
498
|
option = OPT_BOOT_CLASS_PATH;
|
495
499
|
}
|
@@ -498,12 +502,27 @@ void ArgParser::prepareOptions() {
|
|
498
502
|
}
|
499
503
|
|
500
504
|
if (useModulePath) {
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
505
|
+
string moduleOptsFile = platformDir + "/bin/.jruby.module_opts";
|
506
|
+
if (access(moduleOptsFile.c_str(), R_OK) == 0) {
|
507
|
+
logMsg("using @arguments file for Java module options");
|
508
|
+
javaOptions.push_back(string("@") + platformDir + "/bin/.jruby.module_opts");
|
509
|
+
} else {
|
510
|
+
// If .module_opts file is not detected, only add options if JRUBY_MODULE is defined.
|
511
|
+
// See extconf.rb for rules on which JRuby versions get JRUBY_MODULE.
|
512
|
+
#ifdef JRUBY_MODULE
|
513
|
+
logMsg("using hardcoded module options");
|
514
|
+
javaOptions.push_back("--add-opens");
|
515
|
+
javaOptions.push_back("java.base/java.io=org.jruby.dist");
|
516
|
+
javaOptions.push_back("--add-opens");
|
517
|
+
javaOptions.push_back("java.base/java.nio.channels=org.jruby.dist");
|
518
|
+
javaOptions.push_back("--add-opens");
|
519
|
+
javaOptions.push_back("java.base/sun.nio.ch=org.jruby.dist");
|
520
|
+
javaOptions.push_back("--add-opens");
|
521
|
+
javaOptions.push_back("java.management/sun.management=org.jruby.dist");
|
522
|
+
#else
|
523
|
+
logMsg("no JRuby module support detected, skipping module flags");
|
524
|
+
#endif
|
525
|
+
}
|
507
526
|
}
|
508
527
|
|
509
528
|
if (separateProcess) {
|
@@ -539,12 +558,25 @@ void ArgParser::useModulesIfPresent() {
|
|
539
558
|
|
540
559
|
if (jdkhome.empty()) {
|
541
560
|
logMsg("Unable to detect JPMS modules as JAVA_HOME is not specified");
|
542
|
-
} else if (access((jdkhome + "/
|
561
|
+
} else if (access((jdkhome + "/lib/modules").c_str(), R_OK) == 0 ||
|
562
|
+
releaseFileHasModules()) {
|
543
563
|
logMsg("JPMS jmods dir detected, using module flags");
|
544
564
|
useModulePath = 1;
|
545
565
|
}
|
546
566
|
}
|
547
567
|
|
568
|
+
bool ArgParser::releaseFileHasModules() {
|
569
|
+
string releaseFile = jdkhome + "/release";
|
570
|
+
std::string line;
|
571
|
+
ifstream in(releaseFile.c_str());
|
572
|
+
if (in.is_open()) {
|
573
|
+
while (getline(in,line)) {
|
574
|
+
if (line.find("MODULES") == 0) return true;
|
575
|
+
}
|
576
|
+
}
|
577
|
+
return false;
|
578
|
+
}
|
579
|
+
|
548
580
|
void ArgParser::constructBootClassPath() {
|
549
581
|
logMsg("constructBootClassPath()");
|
550
582
|
addedToBootCP.clear();
|
data/argparser.h
CHANGED
data/extconf.rb
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
mf = File.read('Makefile')
|
2
2
|
mf = mf.gsub(/^BINDIR\s*=.*$/, "BINDIR = #{RbConfig::CONFIG['bindir']}")
|
3
3
|
mf = mf.gsub(/^PREFIX\s*=.*$/, "PREFIX = #{File.dirname(RbConfig::CONFIG['libdir'])}")
|
4
|
+
mf = mf.gsub(/^JRUBY_VERSION\s*=.*$/, "JRUBY_VERSION = #{JRUBY_VERSION}")
|
5
|
+
|
6
|
+
# Launcher will use .module_opts file if present, otherwise hardcoded add-opens for this module.
|
7
|
+
# Module options are only supported on JRuby 9.2.1 or higher.
|
8
|
+
if JRUBY_VERSION =~ /(^1)|(^9\.[01])|(^9\.2\.0\.0)/
|
9
|
+
mf = mf.gsub(/^JRUBY_MODULE\s*=.*1$/, "JRUBY_MODULE =")
|
10
|
+
end
|
4
11
|
puts mf
|
5
12
|
File.open('Makefile', 'wb') {|f| f << mf}
|
data/inc/Makefile-conf.mk
CHANGED
data/lib/jruby-launcher.rb
CHANGED
@@ -0,0 +1,12 @@
|
|
1
|
+
mf = File.read('Makefile')
|
2
|
+
mf = mf.gsub(/^BINDIR\s*=.*$/, "BINDIR = #{RbConfig::CONFIG['bindir']}")
|
3
|
+
mf = mf.gsub(/^PREFIX\s*=.*$/, "PREFIX = #{File.dirname(RbConfig::CONFIG['libdir'])}")
|
4
|
+
mf = mf.gsub(/^JRUBY_VERSION\s*=.*$/, "JRUBY_VERSION = #{JRUBY_VERSION}")
|
5
|
+
|
6
|
+
# Launcher will use .module_opts file if present, otherwise hardcoded add-opens for this module.
|
7
|
+
# Module options are only supported on JRuby 9.2.1 or higher.
|
8
|
+
if JRUBY_VERSION =~ /(^1)|(^9\.[01])|(^9\.2\.0\.0)/
|
9
|
+
mf = mf.gsub(/^JRUBY_MODULE\s*=.*1$/, "JRUBY_MODULE =")
|
10
|
+
end
|
11
|
+
puts mf
|
12
|
+
File.open('Makefile', 'wb') {|f| f << mf}
|
File without changes
|
@@ -257,9 +257,12 @@ describe "JRuby native launcher" do
|
|
257
257
|
jruby_launcher_args("-e %s%s%s%s%s 2>&1").should include('-e', '%s%s%s%s%s')
|
258
258
|
end
|
259
259
|
|
260
|
-
it "should use --module-path on java9+" do
|
260
|
+
it "should use --module-path on java9+ jruby 9.2.1+" do
|
261
|
+
# versions prior to 9.2.1 do not set a predictable module name
|
262
|
+
skip unless (JRUBY_VERSION.split('.') <=> ['9', '2', '1']) >= 0
|
263
|
+
|
261
264
|
Dir.mktmpdir do |java_home|
|
262
|
-
|
265
|
+
FileUtils.mkdir_p(File.join(java_home, 'lib/modules'))
|
263
266
|
with_environment 'JAVA_HOME' => java_home do
|
264
267
|
jruby_launcher_args('').grep(/^--module-path=.*jruby.jar/).should_not be_empty
|
265
268
|
end
|
@@ -2,11 +2,6 @@ require 'rspec'
|
|
2
2
|
require 'rbconfig'
|
3
3
|
require 'fileutils'
|
4
4
|
|
5
|
-
if defined?(JRUBY_VERSION)
|
6
|
-
require 'jruby'
|
7
|
-
JRuby.runtime.instance_config.run_ruby_in_process = false
|
8
|
-
end
|
9
|
-
|
10
5
|
module JRubyLauncherHelper
|
11
6
|
JRUBY_EXE = ''
|
12
7
|
WINDOWS = RbConfig::CONFIG['target_os'] =~ /mswin/
|
data/platformlauncher.cpp
CHANGED
@@ -147,14 +147,29 @@ bool PlatformLauncher::start(char* argv[], int argc, DWORD *retCode, const char*
|
|
147
147
|
suppressConsole = false;
|
148
148
|
} else {
|
149
149
|
if (jdkhome.empty()) {
|
150
|
-
|
151
|
-
|
152
|
-
|
150
|
+
// attempt to get JDK home from registry
|
151
|
+
jvmLauncher.initialize(REQ_JAVA_VERSION);
|
152
|
+
}
|
153
|
+
|
154
|
+
if (!jdkhome.empty()) {
|
155
|
+
java = jdkhome + "\\bin\\java.exe";
|
156
|
+
} else if (getenv("JAVA_HOME") != NULL) {
|
157
|
+
string java_home = string(getenv("JAVA_HOME"));
|
158
|
+
jdkhome = java_home;
|
159
|
+
java_home = trimTrailingBackslashes(java_home);
|
160
|
+
java = java_home + "\\bin\\java.exe";
|
161
|
+
} else {
|
162
|
+
java = findOnPath("java.exe");
|
163
|
+
if (!java.empty()) {
|
164
|
+
int home_index = java.find_last_of('\\', java.find_last_of('\\') - 1);
|
165
|
+
jdkhome = java.substr(0, home_index);
|
153
166
|
}
|
154
167
|
}
|
168
|
+
}
|
155
169
|
|
156
|
-
|
157
|
-
java
|
170
|
+
if (java.empty()) {
|
171
|
+
printToConsole("No `java.exe' executable found on PATH.");
|
172
|
+
return 255;
|
158
173
|
}
|
159
174
|
|
160
175
|
prepareOptions();
|
data/rb_w32_cmdvector.h
CHANGED
@@ -52,7 +52,7 @@ int rb_w32_cmdvector(const char *cmd, char ***vec) {
|
|
52
52
|
char *ptr, *base, *buffer, *cmdline;
|
53
53
|
char **vptr;
|
54
54
|
char quote;
|
55
|
-
NtCmdLineElement *curr
|
55
|
+
NtCmdLineElement *curr;
|
56
56
|
NtCmdLineElement *cmdhead = NULL, **cmdtail = &cmdhead;
|
57
57
|
|
58
58
|
//
|
@@ -237,7 +237,7 @@ int rb_w32_cmdvector(const char *cmd, char ***vec) {
|
|
237
237
|
buffer = (char *)malloc(len);
|
238
238
|
if (!buffer) {
|
239
239
|
do_nothing:
|
240
|
-
while (curr = cmdhead) {
|
240
|
+
while ((curr = cmdhead)) {
|
241
241
|
cmdhead = curr->next;
|
242
242
|
if (curr->flags & NTMALLOC) free(curr->str);
|
243
243
|
free(curr);
|
@@ -263,7 +263,7 @@ int rb_w32_cmdvector(const char *cmd, char ***vec) {
|
|
263
263
|
|
264
264
|
ptr = buffer + (elements+1) * sizeof(char *);
|
265
265
|
|
266
|
-
while (curr = cmdhead) {
|
266
|
+
while ((curr = cmdhead)) {
|
267
267
|
strlcpy(ptr, curr->str, curr->len + 1);
|
268
268
|
*vptr++ = ptr;
|
269
269
|
ptr += curr->len + 1;
|
data/spec/launcher_spec.rb
CHANGED
@@ -21,11 +21,12 @@ describe "JRuby native launcher" do
|
|
21
21
|
end
|
22
22
|
|
23
23
|
it "should use $JAVACMD when JAVACMD is specified" do
|
24
|
-
|
24
|
+
javacmd_path = File.join("path", "to", "jato")
|
25
|
+
with_environment "JAVACMD" => javacmd_path do
|
25
26
|
if windows?
|
26
|
-
jruby_launcher_args("-v 2>&1").join.should =~
|
27
|
+
jruby_launcher_args("-v 2>&1").join.should =~ /#{javacmd_path}/
|
27
28
|
else
|
28
|
-
jruby_launcher_args("-v").first.should ==
|
29
|
+
jruby_launcher_args("-v").first.should == javacmd_path
|
29
30
|
end
|
30
31
|
end
|
31
32
|
end
|
@@ -180,6 +181,9 @@ describe "JRuby native launcher" do
|
|
180
181
|
|
181
182
|
# JRUBY-4706
|
182
183
|
it "should put JRuby on regular classpath when -Xnobootclasspath is used" do
|
184
|
+
# Java 9+ do not like bootclasspath so we do not use it
|
185
|
+
skip if ENV_JAVA['java.specification.version'].to_i >= 9
|
186
|
+
|
183
187
|
args = jruby_launcher_args("-e true")
|
184
188
|
args.grep(/Xbootclasspath/).should_not be_empty
|
185
189
|
args = jruby_launcher_args("-Xnobootclasspath -e true")
|
@@ -236,6 +240,9 @@ describe "JRuby native launcher" do
|
|
236
240
|
after { FileUtils.rm_rf jruby_home }
|
237
241
|
|
238
242
|
it "should add jruby.jar to the bootclasspath" do
|
243
|
+
# Java 9+ do not like bootclasspath so we do not use it
|
244
|
+
skip if ENV_JAVA['java.specification.version'].to_i >= 9
|
245
|
+
|
239
246
|
with_environment "JRUBY_HOME" => jruby_home do
|
240
247
|
jruby_launcher_args("").should include("-Xbootclasspath/a:#{jruby_home}/lib/jruby.jar")
|
241
248
|
end
|
@@ -257,9 +264,12 @@ describe "JRuby native launcher" do
|
|
257
264
|
jruby_launcher_args("-e %s%s%s%s%s 2>&1").should include('-e', '%s%s%s%s%s')
|
258
265
|
end
|
259
266
|
|
260
|
-
it "should use --module-path on java9+" do
|
267
|
+
it "should use --module-path on java9+ jruby 9.2.1+" do
|
268
|
+
# versions prior to 9.2.1 do not set a predictable module name
|
269
|
+
skip unless (JRUBY_VERSION.split('.') <=> ['9', '2', '1']) >= 0
|
270
|
+
|
261
271
|
Dir.mktmpdir do |java_home|
|
262
|
-
|
272
|
+
FileUtils.mkdir_p(File.join(java_home, 'lib/modules'))
|
263
273
|
with_environment 'JAVA_HOME' => java_home do
|
264
274
|
jruby_launcher_args('').grep(/^--module-path=.*jruby.jar/).should_not be_empty
|
265
275
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -2,11 +2,6 @@ require 'rspec'
|
|
2
2
|
require 'rbconfig'
|
3
3
|
require 'fileutils'
|
4
4
|
|
5
|
-
if defined?(JRUBY_VERSION)
|
6
|
-
require 'jruby'
|
7
|
-
JRuby.runtime.instance_config.run_ruby_in_process = false
|
8
|
-
end
|
9
|
-
|
10
5
|
module JRubyLauncherHelper
|
11
6
|
JRUBY_EXE = ''
|
12
7
|
WINDOWS = RbConfig::CONFIG['target_os'] =~ /mswin/
|
data/unixlauncher.cpp
CHANGED
@@ -46,6 +46,9 @@ int UnixLauncher::run(int argc, char* argv[], char* envp[]) {
|
|
46
46
|
|
47
47
|
if (getenv("JAVACMD") != NULL) {
|
48
48
|
java = getenv("JAVACMD");
|
49
|
+
if (java.find_last_of('/') == -1) {
|
50
|
+
java = findOnPath(java.c_str());
|
51
|
+
}
|
49
52
|
} else {
|
50
53
|
if (!jdkhome.empty()) {
|
51
54
|
java = jdkhome + "/bin/java";
|
@@ -64,6 +67,13 @@ int UnixLauncher::run(int argc, char* argv[], char* envp[]) {
|
|
64
67
|
return 255;
|
65
68
|
}
|
66
69
|
|
70
|
+
// still no jdk home, use java command to resolve it
|
71
|
+
if (jdkhome.empty()) {
|
72
|
+
java = resolveSymlinks(java);
|
73
|
+
int home_index = java.find_last_of('/', java.find_last_of('/') - 1);
|
74
|
+
jdkhome = java.substr(0, home_index);
|
75
|
+
}
|
76
|
+
|
67
77
|
prepareOptions();
|
68
78
|
|
69
79
|
list<string> commandLine;
|
data/utilsfuncs.cpp
CHANGED
@@ -54,6 +54,7 @@
|
|
54
54
|
#include <unistd.h>
|
55
55
|
#include "utilsfuncs.h"
|
56
56
|
#include "argnames.h"
|
57
|
+
#include <limits.h>
|
57
58
|
|
58
59
|
#ifndef WIN32
|
59
60
|
#include <sys/stat.h>
|
@@ -123,7 +124,6 @@ string findOnPath(const char* name) {
|
|
123
124
|
string path(getenv("PATH"));
|
124
125
|
size_t start = 0;
|
125
126
|
size_t sep;
|
126
|
-
char * found;
|
127
127
|
|
128
128
|
while (start < path.length()) {
|
129
129
|
sep = path.find(PATH_SEP, start);
|
@@ -147,6 +147,18 @@ string findOnPath(const char* name) {
|
|
147
147
|
return "";
|
148
148
|
}
|
149
149
|
|
150
|
+
string resolveSymlinks(string path) {
|
151
|
+
struct stat st;
|
152
|
+
char tmp[PATH_MAX + 1];
|
153
|
+
|
154
|
+
if (lstat(path.c_str(), &st) && st.st_mode & S_IFLNK) {
|
155
|
+
realpath(path.c_str(), tmp);
|
156
|
+
path = tmp;
|
157
|
+
}
|
158
|
+
|
159
|
+
return path;
|
160
|
+
}
|
161
|
+
|
150
162
|
const char* getSysError(char *str, int strSize) {
|
151
163
|
#ifdef WIN32
|
152
164
|
int err = GetLastError();
|
data/utilsfuncs.h
CHANGED
@@ -57,6 +57,7 @@ bool printToConsole(const char *msg);
|
|
57
57
|
char** convertToArgvArray(std::list<std::string> args);
|
58
58
|
void addToArgList(std::list<std::string> & args, int argc, char ** argv);
|
59
59
|
std::string findOnPath(const char* name);
|
60
|
+
std::string resolveSymlinks(std::string name);
|
60
61
|
bool checkDirectory(const char* path);
|
61
62
|
void printListToConsole(std::list<std::string> l);
|
62
63
|
std::string trimTrailingBackslashes(std::string orig);
|
data/utilsfuncswin.cpp
CHANGED
@@ -39,10 +39,27 @@ bool disableFolderVirtualization(HANDLE hProcess) {
|
|
39
39
|
return true;
|
40
40
|
}
|
41
41
|
|
42
|
+
typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);
|
43
|
+
|
44
|
+
LPFN_ISWOW64PROCESS IsWow64Process;
|
45
|
+
|
46
|
+
BOOL is64bits() {
|
47
|
+
BOOL is64Bits = FALSE;
|
48
|
+
IsWow64Process = (LPFN_ISWOW64PROCESS) GetProcAddress(GetModuleHandle(TEXT("kernel32")),"IsWow64Process");
|
49
|
+
|
50
|
+
if (IsWow64Process && !IsWow64Process(GetCurrentProcess(),&is64Bits)) {}
|
51
|
+
|
52
|
+
return is64Bits;
|
53
|
+
}
|
54
|
+
|
55
|
+
#define KEY_WOW64_64KEY 0x0100
|
56
|
+
#define KEY_WOW64_32KEY 0x0200
|
57
|
+
|
42
58
|
bool getStringFromRegistry(HKEY rootKey, const char *keyName, const char *valueName, string &value) {
|
43
59
|
logMsg("getStringFromRegistry()\n\tkeyName: %s\n\tvalueName: %s", keyName, valueName);
|
60
|
+
DWORD openFlags = KEY_READ | (is64bits() ? KEY_WOW64_64KEY : KEY_WOW64_32KEY);
|
44
61
|
HKEY hKey = 0;
|
45
|
-
if (RegOpenKeyEx(rootKey, keyName, 0,
|
62
|
+
if (RegOpenKeyEx(rootKey, keyName, 0, openFlags, &hKey) == ERROR_SUCCESS) {
|
46
63
|
DWORD valSize = 4096;
|
47
64
|
DWORD type = 0;
|
48
65
|
char val[4096] = "";
|
@@ -64,8 +81,9 @@ bool getStringFromRegistry(HKEY rootKey, const char *keyName, const char *valueN
|
|
64
81
|
|
65
82
|
bool getDwordFromRegistry(HKEY rootKey, const char *keyName, const char *valueName, DWORD &value) {
|
66
83
|
logMsg("getDwordFromRegistry()\n\tkeyName: %s\n\tvalueName: %s", keyName, valueName);
|
84
|
+
DWORD openFlags = KEY_READ | (is64bits() ? KEY_WOW64_64KEY : KEY_WOW64_32KEY);
|
67
85
|
HKEY hKey = 0;
|
68
|
-
if (RegOpenKeyEx(rootKey, keyName, 0,
|
86
|
+
if (RegOpenKeyEx(rootKey, keyName, 0, openFlags, &hKey) == ERROR_SUCCESS) {
|
69
87
|
DWORD valSize = sizeof(DWORD);
|
70
88
|
DWORD type = 0;
|
71
89
|
if (RegQueryValueEx(hKey, valueName, 0, &type, (BYTE *) &value, &valSize) == ERROR_SUCCESS
|
data/version.h
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jruby-launcher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.15
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Nick Sieger
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2021-03-31 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Builds and installs a native launcher for JRuby on your system
|
15
15
|
email:
|
@@ -39,11 +39,11 @@ files:
|
|
39
39
|
- lib/rubygems/defaults/jruby_native.rb
|
40
40
|
- nbexecloader.h
|
41
41
|
- ng.c
|
42
|
-
- pkg/jruby-launcher-1.1.
|
43
|
-
- pkg/jruby-launcher-1.1.
|
44
|
-
- pkg/jruby-launcher-1.1.
|
45
|
-
- pkg/jruby-launcher-1.1.
|
46
|
-
- pkg/jruby-launcher-1.1.
|
42
|
+
- pkg/jruby-launcher-1.1.14-java/extconf.rb
|
43
|
+
- pkg/jruby-launcher-1.1.14-java/lib/jruby-launcher.rb
|
44
|
+
- pkg/jruby-launcher-1.1.14-java/lib/rubygems/defaults/jruby_native.rb
|
45
|
+
- pkg/jruby-launcher-1.1.14-java/spec/launcher_spec.rb
|
46
|
+
- pkg/jruby-launcher-1.1.14-java/spec/spec_helper.rb
|
47
47
|
- platformlauncher.cpp
|
48
48
|
- platformlauncher.h
|
49
49
|
- rb_w32_cmdvector.h
|
@@ -76,8 +76,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
76
76
|
- !ruby/object:Gem::Version
|
77
77
|
version: '0'
|
78
78
|
requirements: []
|
79
|
-
|
80
|
-
rubygems_version: 2.7.9
|
79
|
+
rubygems_version: 3.1.6
|
81
80
|
signing_key:
|
82
81
|
specification_version: 4
|
83
82
|
summary: Native launcher for JRuby
|