jruby-launcher 2.0.0.pre2-java → 2.0.1-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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 297592e7324c369c06ff548ab5531631965e16f4ee3c04da498e145be259298e
4
- data.tar.gz: 7301d02d2c0d4aaa8984e4a03ab049cb68a7ffea4f1b66c6c6f0e6f813ae91e9
3
+ metadata.gz: ce700065b9536475d0189601d05547794bc1404a6a113c2970787ba4a33f4ac3
4
+ data.tar.gz: 3f1d5df96d0d30f3996158e5916e83b083f98b4b001268d16506c082813b73b3
5
5
  SHA512:
6
- metadata.gz: b1dd776996f59ec4d9fb6cfc150b85d4e0689791ded13e218fe40b74b49300ecdd4caec0e0a6876ecf276a46c6d1ffd970eb98a46152b1707fb79b0b8d139734
7
- data.tar.gz: 153c9f77f4042930b91fdd7703aeee9b2574deb8aa5f35e6f93feaf00f7a4e1b4762b31c34b5ba6e33b63afe57dfc6ad54c678e8c1a1d77724c0c17d13704196
6
+ metadata.gz: d0c614a29cf3b9f267fc3ce6ef2b0646e09485b9cd1cf17e873e6e2cb174e924cd86bef6b81cf87cc6c1d7f7d7eb903000ffb32ed985e2cfc1d27cb6b5b8a3bd
7
+ data.tar.gz: 39362111cace4f25ad54bfe32f27feb881b6fce946fd7d6706976f6c11049daaf114ab1b4239b430b32c10b0ab9c25223ef78fc1987c2b44e42c98ff2159cc88
data/Makefile CHANGED
@@ -37,9 +37,12 @@ install:
37
37
  @if [ x$(BINDIR) = xnotspecified/bin ]; then echo "Please define where to install by passing PREFIX=<jruby-home>."; exit 1; fi
38
38
  @if [ ! -w $(BINDIR) ]; then echo "'$(BINDIR)' does not exist or cannot write to '$(BINDIR)'."; exit 1; fi
39
39
  @if [ -f $(BINDIR)/jruby -a ! -w $(BINDIR)/jruby ]; then echo "Cannot write to '$(BINDIR)/jruby'."; exit 1; fi
40
- cp ./jruby $(BINDIR)/jruby
40
+ cp -a ./jruby $(BINDIR)/jruby
41
41
  @if [ x$(PREFIX) = xnotspecified ]; then echo "Please define where to install by passing PREFIX=<jruby-home>."; exit 1; fi
42
- @if [ ! -f $(BINDIR)/jruby.sh ]; then cp ./exe/jruby.sh $(BINDIR)/jruby.sh; fi
42
+ # Restore jruby.sh if it has been deleted
43
+ @if [ ! -f $(BINDIR)/jruby.sh ]; then cp -a ./exe/jruby.sh $(BINDIR)/jruby.sh; fi
44
+ # Install a backup jruby.sh in case it is deleted later
45
+ cp -a ./exe/jruby.sh $(BINDIR)/jruby.sh.bak
43
46
 
44
47
  test:
45
48
  $(RAKE)
data/exe/jruby.sh CHANGED
@@ -505,11 +505,37 @@ fi
505
505
 
506
506
  # ----- Detect Java version and determine available features ------------------
507
507
  # shellcheck source=/dev/null
508
- java_version=$(. "$JAVA_HOME/release" && echo "${JAVA_VERSION-}")
508
+ if [ -f "$JAVA_HOME/release" ]; then
509
+ java_version=$(. "$JAVA_HOME/release" && echo "${JAVA_VERSION-}")
510
+
511
+ # convert version to major, considering 1.8 as 8
512
+ case $java_version in
513
+ 1.8 | 1.8.*) java_major=8 ;;
514
+ *) java_major=${java_version%%.*} ;;
515
+ esac
516
+ else
517
+ # assume Java 8 if no release file
518
+ java_version=1.8
519
+ java_major=8
520
+ fi
521
+
522
+ # shellcheck source=/dev/null
523
+ if [ -f "$JRUBY_HOME/bin/.java-version" ] && . "$JRUBY_HOME/bin/.java-version" && [ "${JRUBY_MINIMUM_JAVA_VERSION-}" ]; then
524
+ minimum_java_version=$JRUBY_MINIMUM_JAVA_VERSION
525
+ else
526
+ # Only 9.4.12.0 and earlier will have shipped without a .java-version file, so fall back on minimum of 8
527
+ minimum_java_version=8
528
+ fi
509
529
  add_log "Detected Java version: $java_version"
510
530
 
511
- # Split version out for integer comparisons
512
- java_major=${java_version%%.*}
531
+ # Present a useful error if running a Java version lower than bin/.java-version
532
+ if [ "$java_major" -lt "$minimum_java_version" ]; then
533
+ echo "This version of JRuby requires Java ${minimum_java_version}+."
534
+ echo "Make sure JAVA_HOME points at JDK ${minimum_java_version} or higher"
535
+ echo "Detected Java version: $java_version"
536
+ echo "Detected JAVA_HOME: $JAVA_HOME"
537
+ exit 1
538
+ fi
513
539
 
514
540
  # AppCDS support
515
541
  if [ "$java_major" -ge 13 ] && exists "$JAVA_HOME"/lib/server/*.jsa; then
@@ -1,3 +1,3 @@
1
1
  module JRubyLauncher
2
- VERSION = "2.0.0.pre2"
2
+ VERSION = "2.0.1"
3
3
  end
data/unixlauncher.c CHANGED
@@ -13,8 +13,10 @@
13
13
  * contained within it.
14
14
  */
15
15
 
16
- static const char script_name[] = "jruby.sh";
16
+ #define LENGTH(a) (sizeof(a) / sizeof(0[a]))
17
17
 
18
+ static const char *script_names[] = { "jruby.sh", "jruby.sh.bak" };
19
+ static const char *no_scripts_error = "jruby.sh or jruby.sh.bak";
18
20
 
19
21
  static char *which(const char *const executable) {
20
22
  const size_t exe_length = strlen(executable);
@@ -100,7 +102,7 @@ int unixlauncher_run(int argc, char *argv[], char *envp[]) {
100
102
  self_path = which(argv[0]);
101
103
 
102
104
  if (self_path == NULL) {
103
- fprintf(stderr, "Error: Could not find %s executable\n", script_name);
105
+ fprintf(stderr, "Error: Could not find %s executable\n", argv[0]);
104
106
  return 1;
105
107
  }
106
108
 
@@ -118,25 +120,30 @@ int unixlauncher_run(int argc, char *argv[], char *envp[]) {
118
120
  }
119
121
  size_t script_dir_length = strlen(script_dir);
120
122
 
121
- // Allocate space for complete script path
122
- size_t script_path_length = strlen(script_name) + script_dir_length + 1;
123
- // Leave space for null terminator
124
- char *script_path = malloc(script_path_length + 1);
123
+ // Try main script and backup script before giving up
124
+ for (int i = 0; i < LENGTH(script_names); i++) {
125
+ const char *script_name = script_names[i];
125
126
 
126
- // Concatenate script dir and script name
127
- memcpy(script_path, script_dir, script_dir_length);
128
- script_path[script_dir_length] = '/';
129
- memcpy(script_path + script_dir_length + 1, script_name, strlen(script_name));
130
- script_path[script_path_length] = '\0';
127
+ // Allocate space for complete script path
128
+ size_t script_path_length = strlen(script_name) + script_dir_length + 1;
129
+ // Leave space for null terminator
130
+ char *script_path = malloc(script_path_length + 1);
131
131
 
132
- // Reuse argv for script command line
133
- argv[0] = script_path;
134
- int ret = execv(argv[0], argv);
132
+ // Concatenate script dir and script name
133
+ memcpy(script_path, script_dir, script_dir_length);
134
+ script_path[script_dir_length] = '/';
135
+ memcpy(script_path + script_dir_length + 1, script_name, strlen(script_name));
136
+ script_path[script_path_length] = '\0';
135
137
 
136
- if (ret < 0) {
137
- fprintf(stderr, "%s: %s: %s\n", original_self, strerror(errno), script_path);
138
+ // Reuse argv for script command line
139
+ argv[0] = script_path;
140
+ execv(argv[0], argv);
141
+
142
+ free(script_path);
138
143
  }
139
144
 
140
- free(script_path);
145
+ // If we get here neither script was available, so we error
146
+ fprintf(stderr, "%s: No executable %s found in %s\n", original_self, no_scripts_error, script_dir);
147
+
141
148
  return EXIT_FAILURE;
142
149
  }
data/version.h CHANGED
@@ -6,6 +6,6 @@
6
6
  #ifndef _VERSION_H_
7
7
  #define _VERSION_H_
8
8
 
9
- #define JRUBY_LAUNCHER_VERSION "2.0.0.pre2"
9
+ #define JRUBY_LAUNCHER_VERSION "2.0.1"
10
10
 
11
11
  #endif // ! _VERSION_H_
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jruby-launcher
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.pre2
4
+ version: 2.0.1
5
5
  platform: java
6
6
  authors:
7
7
  - Nick Sieger
8
8
  - Vladimir Sizikov
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-04-03 00:00:00.000000000 Z
11
+ date: 2025-04-12 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Builds and installs a native launcher for JRuby on your system
14
14
  email: