Skip to content

Commit a837fe6

Browse files
committed
fix(dist): repair masked-jar launchers
1 parent 1576c63 commit a837fe6

17 files changed

Lines changed: 111 additions & 84 deletions

File tree

btrace-boot/src/main/java/io/btrace/boot/Loader.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ public final class Loader {
5858
private static final String CLIENT_SECTION = "client";
5959
private static final String AGENT_MAIN_ATTR = "BTrace-Agent-Main";
6060
private static final String CLIENT_MAIN_ATTR = "BTrace-Client-Main";
61+
private static final String CLIENT_MAIN_PROP = "btrace.client.main";
6162
private static final String DEFAULT_AGENT_MAIN = "io.btrace.agent.Main";
6263
private static final String DEFAULT_CLIENT_MAIN = "io.btrace.client.Main";
6364
private static final boolean DEBUG = Boolean.getBoolean("btrace.boot.debug");
@@ -157,8 +158,8 @@ private static void startClient(String[] args) {
157158
System.setProperty("btrace.jar.path", jarFile.getAbsolutePath());
158159
debug("Set btrace.jar.path property to: " + jarFile.getAbsolutePath());
159160

160-
// Read main class from manifest
161-
String mainClass = getManifestAttribute(jarFile, CLIENT_MAIN_ATTR, DEFAULT_CLIENT_MAIN);
161+
// Allow dedicated launchers such as btracex to override the client entry point.
162+
String mainClass = getClientMainClass(jarFile);
162163
debug("Client main class: " + mainClass);
163164

164165
// Create classloader for client section
@@ -177,6 +178,14 @@ private static void startClient(String[] args) {
177178
}
178179
}
179180

181+
private static String getClientMainClass(File jarFile) {
182+
String override = System.getProperty(CLIENT_MAIN_PROP);
183+
if (override != null && !override.isEmpty()) {
184+
return override;
185+
}
186+
return getManifestAttribute(jarFile, CLIENT_MAIN_ATTR, DEFAULT_CLIENT_MAIN);
187+
}
188+
180189
private static String getManifestAttribute(File jarFile, String name, String defaultValue) {
181190
try (JarFile jar = new JarFile(jarFile)) {
182191
Manifest manifest = jar.getManifest();

btrace-dist/build.gradle

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -210,15 +210,16 @@ task prepareClientClassdata(type: Copy) {
210210

211211
from(provider { zipTree(allClassesShadow.archiveFile) }) {
212212
include 'io/btrace/client/**/*.class'
213+
include 'io/btrace/extcli/**/*.class'
213214
include 'io/btrace/compiler/**/*.class'
215+
include 'io/btrace/libs/org/objectweb/asm/**/*.class'
214216
include 'io/btrace/libs/org/jctools/**/*.class'
217+
include 'io/btrace/libs/org/slf4j/**/*.class'
215218
include 'com/googlecode/lanterna/**/*.class'
216219
// Exclude classes that are in bootstrap or shared
217220
exclude 'io/btrace/core/**'
218221
exclude 'io/btrace/runtime/**'
219222
exclude 'io/btrace/extension/**'
220-
exclude 'io/btrace/libs/org/objectweb/asm/**'
221-
exclude 'io/btrace/libs/org/slf4j/**'
222223
exclude 'META-INF/**'
223224
rename { name -> name.endsWith('.class') ? name.replace('.class', '.classdata') : name }
224225
}
@@ -458,14 +459,14 @@ btraceFatAgent {
458459
relocate 'org.slf4j', 'io.btrace.libs.org.slf4j'
459460
}
460461

461-
task fixPermissions(type: Exec) {
462+
task fixPermissions {
462463
onlyIf {
463464
!OperatingSystem.current().isWindows()
464465
}
465-
commandLine 'chmod', '500', "${distTarget}/bin/btrace"
466-
commandLine 'chmod', '500', "${distTarget}/bin/btracec"
467-
commandLine 'chmod', '500', "${distTarget}/bin/btracer"
468-
commandLine 'chmod', '500', "${distTarget}/bin/btracex"
466+
467+
doLast {
468+
ant.chmod(dir: "${distTarget}/bin", perm: '500', includes: '*', excludes: '*.bat')
469+
}
469470

470471
dependsOn processResources
471472
}

btrace-dist/src/main/resources/bin/btrace

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ if [ -f "${CLIENT_JAR}" ]; then
6060
echo "Unable to locate tools.jar. Please, make sure JAVA_HOME points to a valid JDK installation"
6161
exit 1
6262
fi
63-
${JAVA_HOME}/bin/java ${JAVA_ARGS} -cp ${CLIENT_JAR}:${TOOLS_JAR}:/usr/share/lib/java/dtrace.jar org.openjdk.btrace.boot.Loader $*
63+
${JAVA_HOME}/bin/java ${JAVA_ARGS} -cp ${CLIENT_JAR}:${TOOLS_JAR}:/usr/share/lib/java/dtrace.jar io.btrace.boot.Loader $*
6464
else
6565
echo "Please set a valid JAVA_HOME before running this script"
6666
exit 1
Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,27 @@
11
@echo off
2+
setlocal enableextensions
23

34
rem %~dp0 is expanded pathname of the current script under NT
45
set DEFAULT_BTRACE_HOME=%~dp0..
56

67
if "%BTRACE_HOME%"=="" set BTRACE_HOME=%DEFAULT_BTRACE_HOME%
78
set DEFAULT_BTRACE_HOME=
89

9-
set CLIENT_JAR=%BTRACE_HOME%\libs\btrace.jar
10+
set "CLIENT_JAR=%BTRACE_HOME%\libs\btrace.jar"
1011
if not exist "%CLIENT_JAR%" goto noBTraceHome
1112

1213
if "%JAVA_HOME%" == "" goto noJavaHome
13-
set JAVA_ARGS="-XX:+IgnoreUnrecognizedVMOptions"
14+
set "JAVA_ARGS=-XX:+IgnoreUnrecognizedVMOptions"
1415
if exist "%JAVA_HOME%/jmods/" (
15-
set JAVA_ARGS="%JAVA_ARGS% -XX:+AllowRedefinitionToAddDeleteMethods"
16-
set JAVA_ARGS="%JAVA_ARGS% --add-exports jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED"
16+
set "JAVA_ARGS=%JAVA_ARGS% -XX:+AllowRedefinitionToAddDeleteMethods"
17+
set "JAVA_ARGS=%JAVA_ARGS% --add-exports jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED"
1718
)
18-
"%JAVA_HOME%/bin/java" "%JAVA_ARGS%" -cp "%CLIENT_JAR%;%JAVA_HOME%/lib/tools.jar" org.openjdk.btrace.boot.Loader %*
19+
"%JAVA_HOME%\bin\java" %JAVA_ARGS% -cp "%CLIENT_JAR%;%JAVA_HOME%\lib\tools.jar" io.btrace.boot.Loader %*
1920
goto end
2021
:noJavaHome
2122
echo Please set JAVA_HOME before running this script
2223
goto end
2324
:noBTraceHome
2425
echo Please set BTRACE_HOME before running this script
2526
:end
27+
endlocal

btrace-dist/src/main/resources/bin/btracec

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ CLIENT_JAR="${BTRACE_HOME}/libs/btrace.jar"
2020
if [ -f "${CLIENT_JAR}" ]; then
2121
if [ -d "${JAVA_HOME}" ]; then
2222
if [ "$1" = "--version" ]; then
23-
${JAVA_HOME}/bin/java ${JAVA_ARGS} -cp ${CLIENT_JAR} org.openjdk.btrace.boot.Loader --version
23+
${JAVA_HOME}/bin/java ${JAVA_ARGS} -cp ${CLIENT_JAR} io.btrace.boot.Loader --version
2424
exit 0
2525
fi
2626
TOOLS_JAR="$JAVA_HOME/lib/tools.jar"
@@ -51,7 +51,7 @@ if [ -f "${CLIENT_JAR}" ]; then
5151
exit 1
5252
fi
5353

54-
${JAVA_HOME}/bin/java ${JAVA_ARGS} -cp ${CLIENT_JAR}:${TOOLS_JAR} org.openjdk.btrace.compiler.Compiler $*
54+
${JAVA_HOME}/bin/java ${JAVA_ARGS} -Dbtrace.client.main=io.btrace.compiler.Compiler -cp ${CLIENT_JAR}:${TOOLS_JAR} io.btrace.boot.Loader $*
5555
else
5656
echo "Please set a valid JAVA_HOME before running this script"
5757
exit 1
Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,31 @@
11
@echo off
2+
setlocal enableextensions
23

34
rem %~dp0 is expanded pathname of the current script under NT
45
set DEFAULT_BTRACE_HOME=%~dp0..
56

67
if "%BTRACE_HOME%"=="" set BTRACE_HOME=%DEFAULT_BTRACE_HOME%
78
set DEFAULT_BTRACE_HOME=
89

9-
set CLIENT_JAR=%BTRACE_HOME%\libs\btrace.jar
10+
set "CLIENT_JAR=%BTRACE_HOME%\libs\btrace.jar"
1011
if not exist "%CLIENT_JAR%" goto noBTraceHome
1112

1213
if "%JAVA_HOME%" == "" goto noJavaHome
14+
set "JAVA_ARGS=-XX:+IgnoreUnrecognizedVMOptions"
1315
if exist "%JAVA_HOME%/jmods/" (
14-
set JAVA_ARGS="%JAVA_ARGS% -XX:+AllowRedefinitionToAddDeleteMethods"
15-
set JAVA_ARGS="%JAVA_ARGS% --add-exports jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED"
16+
set "JAVA_ARGS=%JAVA_ARGS% -XX:+AllowRedefinitionToAddDeleteMethods"
17+
set "JAVA_ARGS=%JAVA_ARGS% --add-exports jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED"
1618
)
1719
if "%1" == "--version" (
18-
%JAVA_HOME%\bin\java "%JAVA_ARGS%" -cp %CLIENT_JAR% org.openjdk.btrace.boot.Loader --version
20+
"%JAVA_HOME%\bin\java" %JAVA_ARGS% -cp "%CLIENT_JAR%" io.btrace.boot.Loader --version
1921
goto end
2022
)
21-
"%JAVA_HOME%/bin/java" "%JAVA_ARGS%" -cp "%CLIENT_JAR%;%JAVA_HOME%/lib/tools.jar" org.openjdk.btrace.boot.Loader %*
23+
"%JAVA_HOME%\bin\java" %JAVA_ARGS% -Dbtrace.client.main=io.btrace.compiler.Compiler -cp "%CLIENT_JAR%;%JAVA_HOME%\lib\tools.jar" io.btrace.boot.Loader %*
2224
goto end
2325
:noJavaHome
2426
echo Please set JAVA_HOME before running this script
2527
goto end
2628
:noBTraceHome
2729
echo Please set BTRACE_HOME before running this script
2830
:end
31+
endlocal

btrace-dist/src/main/resources/bin/btracep

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ CLIENT_JAR="${BTRACE_HOME}/libs/btrace.jar"
2323
if [ -f "${CLIENT_JAR}" ]; then
2424
if [ -d "${JAVA_HOME}" ]; then
2525
if [ "$1" = "--version" ]; then
26-
${JAVA_HOME}/bin/java ${JAVA_ARGS} -cp ${CLIENT_JAR} org.openjdk.btrace.boot.Loader --version
26+
${JAVA_HOME}/bin/java ${JAVA_ARGS} -cp ${CLIENT_JAR} io.btrace.boot.Loader --version
2727
exit 0
2828
fi
2929
TOOLS_JAR="$JAVA_HOME/lib/tools.jar"
@@ -54,7 +54,7 @@ if [ -f "${CLIENT_JAR}" ]; then
5454
exit 1
5555
fi
5656

57-
${JAVA_HOME}/bin/java ${JAVA_ARGS} -cp ${CLIENT_JAR}:${TOOLS_JAR} org.openjdk.btrace.client.ProbePrinter $*
57+
${JAVA_HOME}/bin/java ${JAVA_ARGS} -Dbtrace.client.main=io.btrace.client.ProbePrinter -cp ${CLIENT_JAR}:${TOOLS_JAR} io.btrace.boot.Loader $*
5858
else
5959
echo "Please set a valid JAVA_HOME before running this script"
6060
exit 1
Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,31 @@
11
@echo off
2+
setlocal enableextensions
23

34
rem %~dp0 is expanded pathname of the current script under NT
45
set DEFAULT_BTRACE_HOME=%~dp0..
56

67
if "%BTRACE_HOME%"=="" set BTRACE_HOME=%DEFAULT_BTRACE_HOME%
78
set DEFAULT_BTRACE_HOME=
89

9-
set CLIENT_JAR=%BTRACE_HOME%\libs\btrace.jar
10+
set "CLIENT_JAR=%BTRACE_HOME%\libs\btrace.jar"
1011
if not exist "%CLIENT_JAR%" goto noBTraceHome
1112

1213
if "%JAVA_HOME%" == "" goto noJavaHome
14+
set "JAVA_ARGS=-XX:+IgnoreUnrecognizedVMOptions"
1315
if exist "%JAVA_HOME%/jmods/" (
14-
set JAVA_ARGS="%JAVA_ARGS% -XX:+AllowRedefinitionToAddDeleteMethods"
15-
set JAVA_ARGS="%JAVA_ARGS% --add-exports jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED"
16+
set "JAVA_ARGS=%JAVA_ARGS% -XX:+AllowRedefinitionToAddDeleteMethods"
17+
set "JAVA_ARGS=%JAVA_ARGS% --add-exports jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED"
1618
)
1719
if "%1" == "--version" (
18-
%JAVA_HOME%\bin\java "%JAVA_ARGS%" -cp %CLIENT_JAR% org.openjdk.btrace.boot.Loader --version
20+
"%JAVA_HOME%\bin\java" %JAVA_ARGS% -cp "%CLIENT_JAR%" io.btrace.boot.Loader --version
1921
goto end
2022
)
21-
"%JAVA_HOME%/bin/java" "%JAVA_ARGS%" -cp "%CLIENT_JAR%;%JAVA_HOME%/lib/tools.jar" org.openjdk.btrace.client.ProbePrinter $*
23+
"%JAVA_HOME%\bin\java" %JAVA_ARGS% -Dbtrace.client.main=io.btrace.client.ProbePrinter -cp "%CLIENT_JAR%;%JAVA_HOME%\lib\tools.jar" io.btrace.boot.Loader %*
2224
goto end
2325
:noJavaHome
2426
echo Please set JAVA_HOME before running this script
2527
goto end
2628
:noBTraceHome
2729
echo Please set BTRACE_HOME before running this script
2830
:end
31+
endlocal

btrace-dist/src/main/resources/bin/btracer

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ if [ -d "${JAVA_HOME}" ]; then
8080
;;
8181
-statsd)
8282
OPTIONS="statsd=$2,$OPTIONS"
83+
shift
8384
;;
8485
--noserver)
8586
OPTIONS="noServer=true,$OPTIONS"
@@ -92,7 +93,7 @@ if [ -d "${JAVA_HOME}" ]; then
9293
echo "Please set BTRACE_HOME before running this script"
9394
exit 1
9495
fi
95-
$JAVA_HOME/bin/java ${JAVA_ARGS} -cp ${CLIENT_JAR} org.openjdk.btrace.boot.Loader --version
96+
$JAVA_HOME/bin/java ${JAVA_ARGS} -cp ${CLIENT_JAR} io.btrace.boot.Loader --version
9697
exit 0
9798
;;
9899
-h)
@@ -105,8 +106,8 @@ if [ -d "${JAVA_HOME}" ]; then
105106
shift
106107
done
107108

108-
if [ -f "${BTRACE_HOME}/libs/btrace-agent.jar" ]; then
109-
${JAVA_HOME}/bin/java -Xshare:off ${JAVA_ARGS} -javaagent:${BTRACE_HOME}/libs/btrace-agent.jar=$OPTIONS,script="$@"
109+
if [ -f "${BTRACE_HOME}/libs/btrace.jar" ]; then
110+
${JAVA_HOME}/bin/java -Xshare:off ${JAVA_ARGS} -javaagent:${BTRACE_HOME}/libs/btrace.jar=$OPTIONS,script="$@"
110111
else
111112
echo "Please set BTRACE_HOME before running this script"
112113
fi
Lines changed: 33 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,98 +1,100 @@
11
@echo off
2+
setlocal enableextensions
23

34
rem %~dp0 is expanded pathname of the current script under NT
45
set DEFAULT_BTRACE_HOME=%~dp0..
56

67
if "%BTRACE_HOME%"=="" set BTRACE_HOME=%DEFAULT_BTRACE_HOME%
78
set DEFAULT_BTRACE_HOME=
89

9-
if not exist "%BTRACE_HOME%\libs \btrace-agent.jar" goto noBTraceHome
10+
set "CLIENT_JAR=%BTRACE_HOME%\libs\btrace.jar"
11+
if not exist "%CLIENT_JAR%" goto noBTraceHome
1012

11-
set OPTIONS=
13+
set "OPTIONS="
1214

1315
if "%1"=="" (
1416
call:usage
1517
goto end
1618
)
1719
if "%JAVA_HOME%" == "" goto noJavaHome
1820

21+
set "JAVA_ARGS=-XX:+IgnoreUnrecognizedVMOptions"
22+
1923
if exist "%JAVA_HOME%/jmods/" (
20-
set JAVA_ARGS="%JAVA_ARGS% -XX:+AllowRedefinitionToAddDeleteMethods"
21-
set JAVA_ARGS="%JAVA_ARGS% --add-exports jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED"
24+
set "JAVA_ARGS=%JAVA_ARGS% -XX:+AllowRedefinitionToAddDeleteMethods"
25+
set "JAVA_ARGS=%JAVA_ARGS% --add-exports jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED"
2226
)
2327

2428
if "%1" == "--version" (
25-
set CLIENT_JAR=%BTRACE_HOME%\libs\btrace.jar
26-
if not exist "%CLIENT_JAR%" goto noBTraceHome
27-
%JAVA_HOME%\bin\java "%JAVA_ARGS%" -cp %CLIENT_JAR% org.openjdk.btrace.boot.Loader --version
29+
"%JAVA_HOME%\bin\java" %JAVA_ARGS% -cp "%CLIENT_JAR%" io.btrace.boot.Loader --version
2830
goto end
2931
)
3032

31-
set inloop=1
3233
:loop
3334
IF "%1"=="-v" (
34-
set OPTIONS="debug=true,%OPTIONS"
35+
set "OPTIONS=debug=true,%OPTIONS%"
3536
goto next
3637
)
3738
IF "%1"=="-u" (
38-
set OPTIONS="unsafe=true,%OPTIONS"
39+
set "OPTIONS=unsafe=true,%OPTIONS%"
3940
goto next
4041
)
4142
if "%1"=="-p" (
42-
set OPTIONS="port=%2,%OPTIONS"
43+
set "OPTIONS=port=%2,%OPTIONS%"
4344
shift
4445
goto next
4546
)
4647
if "%1"=="-d" (
47-
set OPTIONS="dumpClasses=true,dumpDir=%2,%OPTIONS"
48-
shift
48+
set "OPTIONS=dumpClasses=true,dumpDir=%2,%OPTIONS%"
49+
shift
4950
goto next
5051
)
5152
if "%1"=="-o" (
52-
set OPTIONS="scriptOutputFile=%2,%OPTIONS"
53+
set "OPTIONS=scriptOutputFile=%2,%OPTIONS%"
5354
shift
5455
goto next
5556
)
5657
if "%1"=="-pd" (
57-
set OPTIONS="probeDescPath=%2,%OPTIONS"
58+
set "OPTIONS=probeDescPath=%2,%OPTIONS%"
5859
shift
5960
goto next
6061
)
6162
if "%1"=="-bcp" (
62-
OPTIONS="bootClassPath=%2,%OPTIONS"
63+
set "OPTIONS=bootClassPath=%2,%OPTIONS%"
6364
shift
6465
goto next
6566
)
6667
if "%1"=="-scp" (
67-
set OPTIONS="systemClassPath=%2,%OPTIONS"
68+
set "OPTIONS=systemClassPath=%2,%OPTIONS%"
6869
shift
6970
goto next
7071
)
7172
if "%1"=="--noserver" (
72-
set OPTIONS="noServer=true,%OPTIONS"
73+
set "OPTIONS=noServer=true,%OPTIONS%"
7374
goto next
7475
)
7576
if "%1"=="--stdout" (
76-
set OPTIONS="stdout=true,%OPTIONS"
77+
set "OPTIONS=stdout=true,%OPTIONS%"
7778
goto next
7879
)
7980
if "%1"=="-statsd" (
80-
set OPTIONS="statsd=%2,%OPTIONS"
81+
set "OPTIONS=statsd=%2,%OPTIONS%"
82+
shift
8183
goto next
8284
)
83-
call :usage
84-
goto end
85-
86-
set inloop=0
85+
if "%1"=="-h" (
86+
call :usage
87+
goto end
88+
)
89+
goto launch
8790

8891
:next
89-
if %inloop==1 (
90-
shift
91-
goto loop
92-
)
92+
shift
93+
goto loop
9394

94-
%JAVA_HOME%\bin\java -Xshare:off "%JAVA_ARGS%" "-javaagent:%BTRACE_HOME%/libs/btrace-agent.jar=%OPTIONS,script=%~1" %2 %3 %4 %5 %6 %7 %8 %9
95-
goto end
95+
:launch
96+
"%JAVA_HOME%\bin\java" -Xshare:off %JAVA_ARGS% "-javaagent:%CLIENT_JAR%=%OPTIONS%,script=%~1" %2 %3 %4 %5 %6 %7 %8 %9
97+
goto end
9698

9799
:noJavaHome
98100
echo Please set JAVA_HOME before running this script
@@ -118,3 +120,4 @@ goto end
118120
echo -h This message
119121

120122
:end
123+
endlocal

0 commit comments

Comments
 (0)