Skip to content

Commit 31cca41

Browse files
committed
Merge remote-tracking branch 'origin/jruby-10.0'
2 parents 0f027c9 + 901cdf9 commit 31cca41

12 files changed

Lines changed: 325 additions & 106 deletions

File tree

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
name: Dist Verification CI
2+
3+
on: [push, pull_request]
4+
5+
env:
6+
JAVA_OPTS: '-XX:+TieredCompilation -XX:TieredStopAtLevel=1 -Xms60M -Xmx1G -XX:InitialCodeCacheSize=40M -XX:ReservedCodeCacheSize=120M'
7+
8+
permissions:
9+
contents: read
10+
11+
jobs:
12+
build-dist:
13+
14+
strategy:
15+
matrix:
16+
java-version: ['21']
17+
fail-fast: false
18+
19+
runs-on: ubuntu-latest
20+
21+
name: Build JRuby dist archive
22+
23+
steps:
24+
- name: checkout
25+
uses: actions/checkout@v3
26+
- name: set up java 21
27+
uses: actions/setup-java@v3
28+
with:
29+
distribution: 'zulu'
30+
java-version: 21
31+
cache: 'maven'
32+
- name: build dist archive
33+
run: |
34+
mvn -ntp clean package -Pdist
35+
mv maven/jruby-dist/target/jruby-dist*-bin.tar.gz jruby-dist-bin.tar.gz
36+
- name: cache dist
37+
uses: actions/upload-artifact@v4
38+
with:
39+
name: jruby-dist
40+
path: jruby-dist-bin.tar.gz
41+
retention-days: 1
42+
43+
rails-verification:
44+
45+
needs: build-dist
46+
47+
strategy:
48+
matrix:
49+
java-version: ['21', '25']
50+
runs-on: [windows-latest, macos-latest, ubuntu-latest]
51+
fail-fast: false
52+
53+
runs-on: ${{ matrix.runs-on }}
54+
55+
name: dist verification on ${{ matrix.runs-on }} (Java ${{ matrix.java-version }})
56+
57+
steps:
58+
- name: checkout
59+
uses: actions/checkout@v3
60+
with:
61+
path: jruby-src
62+
- name: set up java ${{ matrix.java-version }}
63+
uses: actions/setup-java@v3
64+
with:
65+
distribution: 'zulu'
66+
java-version: ${{ matrix.java-version }}
67+
- name: download cached dist
68+
uses: actions/download-artifact@v5
69+
with:
70+
name: jruby-dist
71+
- name: unpack dist
72+
run: tar xzf jruby-dist-bin.tar.gz --strip-components=1
73+
- name: dist verification (Windows)
74+
if: matrix.runs-on == 'windows-latest'
75+
run: echo "${{ github.workspace }}\bin" | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8
76+
- name: set up dist path (Unix)
77+
if: matrix.runs-on != 'windows-latest'
78+
run: echo "$(pwd)/bin" >> $GITHUB_PATH
79+
- name: rails verification
80+
run: jruby jruby-src/tool/rails_runner
81+
- name: syslog verification (Unix)
82+
if: matrix.runs-on != 'windows-latest'
83+
run: jruby -rsyslog -e 1

.github/workflows/windows-verification-ci.yml

Lines changed: 0 additions & 40 deletions
This file was deleted.

bin/.jruby.release

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
<<<<<<< HEAD
12
JRUBY_VERSION=10.1.0.0-SNAPSHOT
3+
=======
4+
JRUBY_VERSION=10.1.0.0-SNAPSHOT
5+
>>>>>>> origin/jruby-10.0
26
JRUBY_MAIN=org.jruby.main.Main
37
JRUBY_MINIMUM_JAVA_VERSION=21

bin/jruby.sh

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -849,7 +849,15 @@ JAVA_OPTS="$JAVA_OPTS ${JAVA_MEM-} ${JAVA_STACK-}"
849849

850850
JFFI_OPTS="-Djffi.boot.library.path=$JRUBY_HOME/lib/jni"
851851

852-
CLASSPATH="${CP-}${CP_DELIMITER}${CLASSPATH-}"
852+
if [ -n "${CP-}" ]; then
853+
if [ -n "${CLASSPATH-}" ]; then
854+
CLASSPATH="${CP-}${CP_DELIMITER}${CLASSPATH-}"
855+
else
856+
CLASSPATH="${CP-}"
857+
fi
858+
else
859+
CLASSPATH="${CLASSPATH-}"
860+
fi
853861

854862
# ----- Module and Class Data Sharing flags for Java 9+ -----------------------
855863

@@ -989,17 +997,22 @@ fi
989997

990998
prepend java_args "$JAVACMD"
991999

1000+
classpath_value=$CLASSPATH
9921001
if $NO_BOOTCLASSPATH || $VERIFY_JRUBY; then
9931002
if $use_modules; then
9941003
# Use module path instead of classpath for the jruby libs
995-
append java_args --module-path "$JRUBY_CP" -classpath "$CLASSPATH"
1004+
append java_args --module-path "$JRUBY_CP"
9961005
else
997-
append java_args -classpath "$JRUBY_CP$CP_DELIMITER$CLASSPATH"
1006+
classpath_value="$JRUBY_CP$CP_DELIMITER$classpath_value"
1007+
# Trim extra delimiter we might have appended
1008+
classpath_value="${classpath_value%"$CP_DELIMITER"}"
9981009
fi
9991010
else
10001011
append java_args -Xbootclasspath/a:"$JRUBY_CP"
1001-
append java_args -classpath "$CLASSPATH"
1002-
append java_args -Djruby.home="$JRUBY_HOME"
1012+
fi
1013+
1014+
if [ -n "$classpath_value" ]; then
1015+
append java_args -classpath "$classpath_value"
10031016
fi
10041017

10051018
append java_args -Djruby.home="$JRUBY_HOME" \

core/src/main/java/org/jruby/RubyBasicObject.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2265,9 +2265,22 @@ final RubyBoolean respond_to_p(ThreadContext context, IRubyObject methodName, fi
22652265

22662266
if (getMetaClass().respondsToMethod(name.idString(), !includePrivate, context.getCurrentStaticScope())) return context.tru;
22672267

2268-
Ruby runtime = context.runtime;
2269-
IRubyObject result = sites(context).respond_to_missing.call(context, this, this, name, runtime.newBoolean(includePrivate));
2270-
return context.runtime.newBoolean(result.isTrue());
2268+
IRubyObject respondToMissing = basicObjectRespondToMissing(context, getMetaClass(), this, name, includePrivate);
2269+
if (respondToMissing == UNDEF) return context.fals;
2270+
return asBoolean(context, respondToMissing.isTrue());
2271+
}
2272+
2273+
// MRI: basic_obj_respond_to_missing, sort of
2274+
private IRubyObject basicObjectRespondToMissing(ThreadContext context, RubyClass klass, IRubyObject obj,
2275+
IRubyObject mid, boolean includePrivate)
2276+
{
2277+
CacheEntry entry = sites(context).respond_to_missing.retrieveCache(this);
2278+
2279+
if (!entry.method.isUndefined()) {
2280+
return entry.method.call(context, this, klass, "respond_to_missing?", mid, asBoolean(context, includePrivate));
2281+
}
2282+
2283+
return UNDEF;
22712284
}
22722285

22732286
/**

core/src/main/java/org/jruby/RubyDir.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,9 @@ private static class GlobOptions {
234234
private static void globOptions(ThreadContext context, IRubyObject[] args, String[] keys, GlobOptions options) {
235235
Ruby runtime = context.runtime;
236236

237+
// just clear callInfo for now; future PR will handle it appropriately
238+
ThreadContext.resetCallInfo(context);
239+
237240
if (args.length > 1) {
238241
IRubyObject tmp = TypeConverter.checkHashType(runtime, args[args.length - 1]);
239242
boolean processFlags = keys == BASE_FLAGS_KEYWORDS;

0 commit comments

Comments
 (0)