Skip to content

Commit f880d6e

Browse files
authored
SIP 46 - read classpath from file, remove lib directory in distribution (#20631)
**This should be backported to the 3.5.0 line** write classpath to file, and do not write the `lib` directory, this saves duplicating the jars in the distribution. In the distribution, we write `/etc/scala.classpath`, `/etc/with_compiler.classpath`, and `/etc/scaladoc.classpath`. each of these are formatted such that each line is a relative path from the `/maven2` directory in the distribution. To produce these files, I use the output of the same `cs fetch` command that is used to populate the `maven2` directory - so the correspondence is 1:1. This is a much better solution than the previous manual resolution of classpath from within the bash/batch scripts - as the classpath libraries actually change a lot between versions. The contents look like the following: **scala.classpath** (compiler classpath used by scalac) ```text org/scala-lang/scala3-interfaces/3.5.1-RC1-bin-SNAPSHOT/scala3-interfaces-3.5.1-RC1-bin-SNAPSHOT.jar org/scala-lang/scala3-compiler_3/3.5.1-RC1-bin-SNAPSHOT/scala3-compiler_3-3.5.1-RC1-bin-SNAPSHOT.jar org/scala-lang/scala3-library_3/3.5.1-RC1-bin-SNAPSHOT/scala3-library_3-3.5.1-RC1-bin-SNAPSHOT.jar org/scala-lang/tasty-core_3/3.5.1-RC1-bin-SNAPSHOT/tasty-core_3-3.5.1-RC1-bin-SNAPSHOT.jar org/scala-lang/modules/scala-asm/9.6.0-scala-1/scala-asm-9.6.0-scala-1.jar org/scala-sbt/compiler-interface/1.9.6/compiler-interface-1.9.6.jar org/jline/jline-reader/3.25.1/jline-reader-3.25.1.jar org/jline/jline-terminal/3.25.1/jline-terminal-3.25.1.jar org/jline/jline-terminal-jna/3.25.1/jline-terminal-jna-3.25.1.jar org/scala-lang/scala-library/2.13.12/scala-library-2.13.12.jar org/scala-sbt/util-interface/1.9.8/util-interface-1.9.8.jar org/jline/jline-native/3.25.1/jline-native-3.25.1.jar net/java/dev/jna/jna/5.14.0/jna-5.14.0.jar ``` **with_compiler.classpath** (concatenated to scala.classpath to run the scalac command) ``` org/scala-lang/scala3-staging_3/3.5.1-RC1-bin-SNAPSHOT/scala3-staging_3-3.5.1-RC1-bin-SNAPSHOT.jar org/scala-lang/scala3-tasty-inspector_3/3.5.1-RC1-bin-SNAPSHOT/scala3-tasty-inspector_3-3.5.1-RC1-bin-SNAPSHOT.jar ``` and **scaladoc.classpath** ``` org/scala-lang/scala3-interfaces/3.5.1-RC1-bin-SNAPSHOT/scala3-interfaces-3.5.1-RC1-bin-SNAPSHOT.jar org/scala-lang/scala3-compiler_3/3.5.1-RC1-bin-SNAPSHOT/scala3-compiler_3-3.5.1-RC1-bin-SNAPSHOT.jar org/scala-lang/scala3-library_3/3.5.1-RC1-bin-SNAPSHOT/scala3-library_3-3.5.1-RC1-bin-SNAPSHOT.jar org/scala-lang/tasty-core_3/3.5.1-RC1-bin-SNAPSHOT/tasty-core_3-3.5.1-RC1-bin-SNAPSHOT.jar org/scala-lang/modules/scala-asm/9.6.0-scala-1/scala-asm-9.6.0-scala-1.jar org/scala-sbt/compiler-interface/1.9.6/compiler-interface-1.9.6.jar org/jline/jline-reader/3.25.1/jline-reader-3.25.1.jar org/jline/jline-terminal/3.25.1/jline-terminal-3.25.1.jar org/jline/jline-terminal-jna/3.25.1/jline-terminal-jna-3.25.1.jar org/scala-lang/scala-library/2.13.12/scala-library-2.13.12.jar org/scala-sbt/util-interface/1.9.8/util-interface-1.9.8.jar org/jline/jline-native/3.25.1/jline-native-3.25.1.jar net/java/dev/jna/jna/5.14.0/jna-5.14.0.jar org/scala-lang/scala3-tasty-inspector_3/3.5.1-RC1-bin-SNAPSHOT/scala3-tasty-inspector_3-3.5.1-RC1-bin-SNAPSHOT.jar org/scala-lang/scaladoc_3/3.5.1-RC1-bin-SNAPSHOT/scaladoc_3-3.5.1-RC1-bin-SNAPSHOT.jar com/vladsch/flexmark/flexmark/0.62.2/flexmark-0.62.2.jar com/vladsch/flexmark/flexmark-util-ast/0.62.2/flexmark-util-ast-0.62.2.jar com/vladsch/flexmark/flexmark-util-data/0.62.2/flexmark-util-data-0.62.2.jar com/vladsch/flexmark/flexmark-util-html/0.62.2/flexmark-util-html-0.62.2.jar com/vladsch/flexmark/flexmark-ext-anchorlink/0.62.2/flexmark-ext-anchorlink-0.62.2.jar com/vladsch/flexmark/flexmark-ext-autolink/0.62.2/flexmark-ext-autolink-0.62.2.jar com/vladsch/flexmark/flexmark-ext-emoji/0.62.2/flexmark-ext-emoji-0.62.2.jar com/vladsch/flexmark/flexmark-ext-gfm-strikethrough/0.62.2/flexmark-ext-gfm-strikethrough-0.62.2.jar com/vladsch/flexmark/flexmark-ext-gfm-tasklist/0.62.2/flexmark-ext-gfm-tasklist-0.62.2.jar com/vladsch/flexmark/flexmark-ext-wikilink/0.62.2/flexmark-ext-wikilink-0.62.2.jar com/vladsch/flexmark/flexmark-ext-tables/0.62.2/flexmark-ext-tables-0.62.2.jar com/vladsch/flexmark/flexmark-ext-yaml-front-matter/0.62.2/flexmark-ext-yaml-front-matter-0.62.2.jar nl/big-o/liqp/0.8.2/liqp-0.8.2.jar org/jsoup/jsoup/1.17.2/jsoup-1.17.2.jar com/fasterxml/jackson/dataformat/jackson-dataformat-yaml/2.15.1/jackson-dataformat-yaml-2.15.1.jar com/vladsch/flexmark/flexmark-util-builder/0.62.2/flexmark-util-builder-0.62.2.jar com/vladsch/flexmark/flexmark-util-collection/0.62.2/flexmark-util-collection-0.62.2.jar com/vladsch/flexmark/flexmark-util-dependency/0.62.2/flexmark-util-dependency-0.62.2.jar com/vladsch/flexmark/flexmark-util-format/0.62.2/flexmark-util-format-0.62.2.jar com/vladsch/flexmark/flexmark-util-misc/0.62.2/flexmark-util-misc-0.62.2.jar com/vladsch/flexmark/flexmark-util-sequence/0.62.2/flexmark-util-sequence-0.62.2.jar com/vladsch/flexmark/flexmark-util-visitor/0.62.2/flexmark-util-visitor-0.62.2.jar org/jetbrains/annotations/15.0/annotations-15.0.jar com/vladsch/flexmark/flexmark-util/0.62.2/flexmark-util-0.62.2.jar org/nibor/autolink/autolink/0.6.0/autolink-0.6.0.jar com/vladsch/flexmark/flexmark-jira-converter/0.62.2/flexmark-jira-converter-0.62.2.jar org/antlr/antlr4-runtime/4.7.2/antlr4-runtime-4.7.2.jar com/fasterxml/jackson/core/jackson-annotations/2.15.1/jackson-annotations-2.15.1.jar com/fasterxml/jackson/core/jackson-core/2.15.1/jackson-core-2.15.1.jar com/fasterxml/jackson/core/jackson-databind/2.15.1/jackson-databind-2.15.1.jar com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.12.1/jackson-datatype-jsr310-2.12.1.jar ua/co/k/strftime4j/1.0.5/strftime4j-1.0.5.jar org/yaml/snakeyaml/2.0/snakeyaml-2.0.jar com/vladsch/flexmark/flexmark-util-options/0.62.2/flexmark-util-options-0.62.2.jar com/vladsch/flexmark/flexmark-ext-ins/0.62.2/flexmark-ext-ins-0.62.2.jar com/vladsch/flexmark/flexmark-ext-superscript/0.62.2/flexmark-ext-superscript-0.62.2.jar ``` the bash/batch scripts then read these files, concatenating each line to the absolute path of the `maven2` directory, and joining with the systems path separator (and replacing `/` with `\` in batch) fixes #20711
2 parents fff4ee6 + bf67032 commit f880d6e

File tree

9 files changed

+258
-230
lines changed

9 files changed

+258
-230
lines changed

Diff for: dist/bin-native-overrides/cli-common-platform.bat

+5-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,11 @@ FOR /F "usebackq delims=" %%G IN ("%_PROG_HOME%\EXTRA_PROPERTIES") DO (
1212
)
1313
)
1414

15+
@REM we didn't find it, so we should fail
16+
echo "ERROR: cli_version not found in EXTRA_PROPERTIES file"
17+
exit /b 1
18+
1519
:foundCliVersion
1620
endlocal & set "SCALA_CLI_VERSION=%_SCALA_CLI_VERSION%"
1721

18-
set SCALA_CLI_CMD_WIN="%_PROG_HOME%\bin\scala-cli.exe" "--cli-version" "%SCALA_CLI_VERSION%"
22+
set SCALA_CLI_CMD_WIN="%_PROG_HOME%\bin\scala-cli.exe" "--cli-version" "%SCALA_CLI_VERSION%"

Diff for: dist/bin/common

100755100644
+18-51
Original file line numberDiff line numberDiff line change
@@ -6,67 +6,34 @@ source "$PROG_HOME/bin/common-shared"
66
# * The code below is for Dotty
77
# *-------------------------------------------------*/
88

9-
find_lib () {
10-
for lib in "$PROG_HOME"/lib/$1 ; do
11-
if [[ -f "$lib" ]]; then
12-
if [ -n "$CYGPATHCMD" ]; then
13-
"$CYGPATHCMD" -am "$lib"
14-
elif [[ $mingw || $msys ]]; then
15-
echo "$lib" | sed 's|/|\\\\|g'
16-
else
17-
echo "$lib"
9+
load_classpath () {
10+
command="$1"
11+
psep_pattern="$2"
12+
__CLASS_PATH=""
13+
while IFS= read -r line || [ -n "$line" ]; do
14+
# jna-5 only appropriate for some combinations
15+
if ! [[ ( -n ${conemu-} || -n ${msys-}) && "$line" == "*jna-5*" ]]; then
16+
if [ -n "$__CLASS_PATH" ]; then
17+
__CLASS_PATH+="$psep_pattern"
1818
fi
19-
return
19+
__CLASS_PATH+="$PROG_HOME/maven2/$line"
2020
fi
21-
done
21+
done < "$PROG_HOME/etc/$command.classpath"
22+
echo "$__CLASS_PATH"
2223
}
2324

24-
DOTTY_COMP=$(find_lib "*scala3-compiler*")
25-
DOTTY_INTF=$(find_lib "*scala3-interfaces*")
26-
DOTTY_LIB=$(find_lib "*scala3-library*")
27-
DOTTY_STAGING=$(find_lib "*scala3-staging*")
28-
DOTTY_TASTY_INSPECTOR=$(find_lib "*scala3-tasty-inspector*")
29-
TASTY_CORE=$(find_lib "*tasty-core*")
30-
SCALA_ASM=$(find_lib "*scala-asm*")
31-
SCALA_LIB=$(find_lib "*scala-library*")
32-
SBT_INTF=$(find_lib "*compiler-interface*")
33-
JLINE_READER=$(find_lib "*jline-reader-3*")
34-
JLINE_TERMINAL=$(find_lib "*jline-terminal-3*")
35-
JLINE_TERMINAL_JNA=$(find_lib "*jline-terminal-jna-3*")
36-
37-
# jna-5 only appropriate for some combinations
38-
[[ ${conemu-} && ${msys-} ]] || JNA=$(find_lib "*jna-5*")
39-
4025
compilerJavaClasspathArgs () {
41-
# echo "dotty-compiler: $DOTTY_COMP"
42-
# echo "dotty-interface: $DOTTY_INTF"
43-
# echo "dotty-library: $DOTTY_LIB"
44-
# echo "tasty-core: $TASTY_CORE"
45-
# echo "scala-asm: $SCALA_ASM"
46-
# echo "scala-lib: $SCALA_LIB"
47-
# echo "sbt-intface: $SBT_INTF"
26+
toolchain="$(load_classpath "scala" "$PSEP")"
27+
toolchain_extra="$(load_classpath "with_compiler" "$PSEP")"
4828

49-
toolchain=""
50-
toolchain+="$SCALA_LIB$PSEP"
51-
toolchain+="$DOTTY_LIB$PSEP"
52-
toolchain+="$SCALA_ASM$PSEP"
53-
toolchain+="$SBT_INTF$PSEP"
54-
toolchain+="$DOTTY_INTF$PSEP"
55-
toolchain+="$DOTTY_COMP$PSEP"
56-
toolchain+="$TASTY_CORE$PSEP"
57-
toolchain+="$DOTTY_STAGING$PSEP"
58-
toolchain+="$DOTTY_TASTY_INSPECTOR$PSEP"
59-
60-
# jine
61-
toolchain+="$JLINE_READER$PSEP"
62-
toolchain+="$JLINE_TERMINAL$PSEP"
63-
toolchain+="$JLINE_TERMINAL_JNA$PSEP"
64-
[ -n "${JNA-}" ] && toolchain+="$JNA$PSEP"
29+
if [ -n "$toolchain_extra" ]; then
30+
toolchain+="$PSEP$toolchain_extra"
31+
fi
6532

6633
if [ -n "${jvm_cp_args-}" ]; then
6734
jvm_cp_args="$toolchain$jvm_cp_args"
6835
else
69-
jvm_cp_args="$toolchain$PSEP"
36+
jvm_cp_args="$toolchain"
7037
fi
7138
}
7239

Diff for: dist/bin/common.bat

+1-15
Original file line numberDiff line numberDiff line change
@@ -38,20 +38,6 @@ if not defined _PROG_HOME (
3838
set _EXITCODE=1
3939
goto :eof
4040
)
41-
set "_LIB_DIR=%_PROG_HOME%\lib"
41+
set "_ETC_DIR=%_PROG_HOME%\etc"
4242

4343
set _PSEP=;
44-
45-
for /f "delims=" %%f in ('dir /a-d /b "%_LIB_DIR%\*scala3-compiler*"') do set "_SCALA3_COMP=%_LIB_DIR%\%%f"
46-
for /f "delims=" %%f in ('dir /a-d /b "%_LIB_DIR%\*scala3-interfaces*"') do set "_SCALA3_INTF=%_LIB_DIR%\%%f"
47-
for /f "delims=" %%f in ('dir /a-d /b "%_LIB_DIR%\*scala3-library*"') do set "_SCALA3_LIB=%_LIB_DIR%\%%f"
48-
for /f "delims=" %%f in ('dir /a-d /b "%_LIB_DIR%\*scala3-staging*"') do set "_SCALA3_STAGING=%_LIB_DIR%\%%f"
49-
for /f "delims=" %%f in ('dir /a-d /b "%_LIB_DIR%\*scala3-tasty-inspector*"') do set "_SCALA3_TASTY_INSPECTOR=%_LIB_DIR%\%%f"
50-
for /f "delims=" %%f in ('dir /a-d /b "%_LIB_DIR%\*tasty-core*"') do set "_TASTY_CORE=%_LIB_DIR%\%%f"
51-
for /f "delims=" %%f in ('dir /a-d /b "%_LIB_DIR%\*scala-asm*"') do set "_SCALA_ASM=%_LIB_DIR%\%%f"
52-
for /f "delims=" %%f in ('dir /a-d /b "%_LIB_DIR%\*scala-library*"') do set "_SCALA_LIB=%_LIB_DIR%\%%f"
53-
for /f "delims=" %%f in ('dir /a-d /b "%_LIB_DIR%\*compiler-interface*"') do set "_SBT_INTF=%_LIB_DIR%\%%f"
54-
for /f "delims=" %%f in ('dir /a-d /b "%_LIB_DIR%\*jline-reader-3*"') do set "_JLINE_READER=%_LIB_DIR%\%%f"
55-
for /f "delims=" %%f in ('dir /a-d /b "%_LIB_DIR%\*jline-terminal-3*"') do set "_JLINE_TERMINAL=%_LIB_DIR%\%%f"
56-
for /f "delims=" %%f in ('dir /a-d /b "%_LIB_DIR%\*jline-terminal-jna-3*"') do set "_JLINE_TERMINAL_JNA=%_LIB_DIR%\%%f"
57-
for /f "delims=" %%f in ('dir /a-d /b "%_LIB_DIR%\*jna-5*"') do set "_JNA=%_LIB_DIR%\%%f"

Diff for: dist/bin/scalac

100644100755
File mode changed.

Diff for: dist/bin/scalac.bat

+29-23
Original file line numberDiff line numberDiff line change
@@ -88,29 +88,17 @@ goto :eof
8888

8989
@rem output parameter: _JVM_CP_ARGS
9090
:compilerJavaClasspathArgs
91-
@rem echo scala3-compiler: %_SCALA3_COMP%
92-
@rem echo scala3-interface: %_SCALA3_INTF%
93-
@rem echo scala3-library: %_SCALA3_LIB%
94-
@rem echo tasty-core: %_TASTY_CORE%
95-
@rem echo scala-asm: %_SCALA_ASM%
96-
@rem echo scala-lib: %_SCALA_LIB%
97-
@rem echo sbt-intface: %_SBT_INTF%
98-
99-
set "__TOOLCHAIN=%_SCALA_LIB%%_PSEP%"
100-
set "__TOOLCHAIN=%__TOOLCHAIN%%_SCALA3_LIB%%_PSEP%"
101-
set "__TOOLCHAIN=%__TOOLCHAIN%%_SCALA_ASM%%_PSEP%"
102-
set "__TOOLCHAIN=%__TOOLCHAIN%%_SBT_INTF%%_PSEP%"
103-
set "__TOOLCHAIN=%__TOOLCHAIN%%_SCALA3_INTF%%_PSEP%"
104-
set "__TOOLCHAIN=%__TOOLCHAIN%%_SCALA3_COMP%%_PSEP%"
105-
set "__TOOLCHAIN=%__TOOLCHAIN%%_TASTY_CORE%%_PSEP%"
106-
set "__TOOLCHAIN=%__TOOLCHAIN%%_SCALA3_STAGING%%_PSEP%"
107-
set "__TOOLCHAIN=%__TOOLCHAIN%%_SCALA3_TASTY_INSPECTOR%%_PSEP%"
108-
109-
@rem # jline
110-
set "__TOOLCHAIN=%__TOOLCHAIN%%_JLINE_READER%%_PSEP%"
111-
set "__TOOLCHAIN=%__TOOLCHAIN%%_JLINE_TERMINAL%%_PSEP%"
112-
set "__TOOLCHAIN=%__TOOLCHAIN%%_JLINE_TERMINAL_JNA%%_PSEP%"
113-
set "__TOOLCHAIN=%__TOOLCHAIN%%_JNA%%_PSEP%"
91+
92+
set "CP_FILE=%_ETC_DIR%\scala.classpath"
93+
call :loadClasspathFromFile %CP_FILE%
94+
set "__TOOLCHAIN=%_CLASS_PATH_RESULT%"
95+
96+
set "CP_FILE=%_ETC_DIR%\with_compiler.classpath"
97+
call :loadClasspathFromFile %CP_FILE%
98+
99+
if defined _CLASS_PATH_RESULT (
100+
set "__TOOLCHAIN=%__TOOLCHAIN%%_PSEP%%_CLASS_PATH_RESULT%"
101+
)
114102

115103
if defined _SCALA_CPATH (
116104
set "_JVM_CP_ARGS=%__TOOLCHAIN%%_SCALA_CPATH%"
@@ -119,6 +107,24 @@ if defined _SCALA_CPATH (
119107
)
120108
goto :eof
121109

110+
@REM concatentate every line in "%_ARG_FILE%" with _PSEP
111+
@REM arg 1 - file to read
112+
:loadClasspathFromFile
113+
set _ARG_FILE=%1
114+
set _CLASS_PATH_RESULT=
115+
if exist "%_ARG_FILE%" (
116+
for /f "usebackq delims=" %%i in ("%_ARG_FILE%") do (
117+
set "_LIB=%_PROG_HOME%\maven2\%%i"
118+
set "_LIB=!_LIB:/=\!"
119+
if not defined _CLASS_PATH_RESULT (
120+
set "_CLASS_PATH_RESULT=!_LIB!"
121+
) else (
122+
set "_CLASS_PATH_RESULT=!_CLASS_PATH_RESULT!%_PSEP%!_LIB!"
123+
)
124+
)
125+
)
126+
goto :eof
127+
122128
@rem #########################################################################
123129
@rem ## Cleanups
124130

Diff for: dist/bin/scaladoc

+1-56
Original file line numberDiff line numberDiff line change
@@ -53,62 +53,7 @@ addScrip() {
5353
}
5454

5555
classpathArgs () {
56-
CLASS_PATH=""
57-
CLASS_PATH+="$(find_lib "*scaladoc*")$PSEP"
58-
CLASS_PATH+="$(find_lib "*scala3-compiler*")$PSEP"
59-
CLASS_PATH+="$(find_lib "*scala3-interfaces*")$PSEP"
60-
CLASS_PATH+="$(find_lib "*scala3-library*")$PSEP"
61-
CLASS_PATH+="$(find_lib "*tasty-core*")$PSEP"
62-
CLASS_PATH+="$(find_lib "*scala3-tasty-inspector*")$PSEP"
63-
CLASS_PATH+="$(find_lib "*flexmark-0*")$PSEP"
64-
CLASS_PATH+="$(find_lib "*flexmark*")$PSEP"
65-
CLASS_PATH+="$(find_lib "*flexmark-ext-anchorlink*")$PSEP"
66-
CLASS_PATH+="$(find_lib "*flexmark-ext-autolink*")$PSEP"
67-
CLASS_PATH+="$(find_lib "*flexmark-ext-emoji*")$PSEP"
68-
CLASS_PATH+="$(find_lib "*flexmark-ext-gfm-strikethrough*")$PSEP"
69-
CLASS_PATH+="$(find_lib "*flexmark-ext-gfm-tasklist*")$PSEP"
70-
CLASS_PATH+="$(find_lib "*flexmark-ext-wikilink*")$PSEP"
71-
CLASS_PATH+="$(find_lib "*flexmark-ext-yaml-front-matter*")$PSEP"
72-
CLASS_PATH+="$(find_lib "*flexmark-ext-tables*")$PSEP"
73-
CLASS_PATH+="$(find_lib "*flexmark-ext-ins*")$PSEP"
74-
CLASS_PATH+="$(find_lib "*flexmark-ext-superscript*")$PSEP"
75-
CLASS_PATH+="$(find_lib "*flexmark-util*")$PSEP"
76-
CLASS_PATH+="$(find_lib "*flexmark-util-ast*")$PSEP"
77-
CLASS_PATH+="$(find_lib "*flexmark-util-data*")$PSEP"
78-
CLASS_PATH+="$(find_lib "*flexmark-util-dependency*")$PSEP"
79-
CLASS_PATH+="$(find_lib "*flexmark-util-misc*")$PSEP"
80-
CLASS_PATH+="$(find_lib "*flexmark-util-format*")$PSEP"
81-
CLASS_PATH+="$(find_lib "*flexmark-util-sequence*")$PSEP"
82-
CLASS_PATH+="$(find_lib "*flexmark-util-builder*")$PSEP"
83-
CLASS_PATH+="$(find_lib "*flexmark-util-collection*")$PSEP"
84-
CLASS_PATH+="$(find_lib "*flexmark-util-visitor*")$PSEP"
85-
CLASS_PATH+="$(find_lib "*flexmark-util-options*")$PSEP"
86-
CLASS_PATH+="$(find_lib "*flexmark-util-html*")$PSEP"
87-
CLASS_PATH+="$(find_lib "*flexmark-formatter*")$PSEP"
88-
CLASS_PATH+="$(find_lib "*flexmark-ast*")$PSEP"
89-
CLASS_PATH+="$(find_lib "*liqp*")$PSEP"
90-
CLASS_PATH+="$(find_lib "*jsoup*")$PSEP"
91-
CLASS_PATH+="$(find_lib "*jackson-dataformat-yaml*")$PSEP"
92-
CLASS_PATH+="$(find_lib "*jackson-datatype-jsr310*")$PSEP"
93-
CLASS_PATH+="$(find_lib "*strftime4j*")$PSEP"
94-
CLASS_PATH+="$(find_lib "*scala-asm*")$PSEP"
95-
CLASS_PATH+="$(find_lib "*compiler-interface*")$PSEP"
96-
CLASS_PATH+="$(find_lib "*jline-reader*")$PSEP"
97-
CLASS_PATH+="$(find_lib "*jline-terminal-3*")$PSEP"
98-
CLASS_PATH+="$(find_lib "*jline-terminal-jna*")$PSEP"
99-
CLASS_PATH+="$(find_lib "*flexmark-formatter*")$PSEP"
100-
CLASS_PATH+="$(find_lib "*autolink-0.6*")$PSEP"
101-
CLASS_PATH+="$(find_lib "*flexmark-jira-converter*")$PSEP"
102-
CLASS_PATH+="$(find_lib "*antlr4*")$PSEP"
103-
CLASS_PATH+="$(find_lib "*jackson-annotations*")$PSEP"
104-
CLASS_PATH+="$(find_lib "*jackson-core*")$PSEP"
105-
CLASS_PATH+="$(find_lib "*jackson-databind*")$PSEP"
106-
CLASS_PATH+="$(find_lib "*snakeyaml*")$PSEP"
107-
CLASS_PATH+="$(find_lib "*scala-library*")$PSEP"
108-
CLASS_PATH+="$(find_lib "*protobuf-java*")$PSEP"
109-
CLASS_PATH+="$(find_lib "*util-interface*")$PSEP"
110-
CLASS_PATH+="$(find_lib "*jna-5*")$PSEP"
111-
CLASS_PATH+="$(find_lib "*antlr4-runtime*")$PSEP"
56+
CLASS_PATH="$(load_classpath "scaladoc" "$PSEP")"
11257

11358
jvm_cp_args="-classpath \"$CLASS_PATH\""
11459
}

Diff for: dist/bin/scaladoc.bat

+15-51
Original file line numberDiff line numberDiff line change
@@ -105,60 +105,24 @@ goto :eof
105105

106106
@rem output parameter: _CLASS_PATH
107107
:classpathArgs
108-
set "_LIB_DIR=%_PROG_HOME%\lib"
109-
set _CLASS_PATH=
108+
set "_ETC_DIR=%_PROG_HOME%\etc"
110109
@rem keep list in sync with bash script `bin\scaladoc` !
111-
call :updateClasspath "scaladoc"
112-
call :updateClasspath "scala3-compiler"
113-
call :updateClasspath "scala3-interfaces"
114-
call :updateClasspath "scala3-library"
115-
call :updateClasspath "tasty-core"
116-
call :updateClasspath "scala3-tasty-inspector"
117-
call :updateClasspath "flexmark-0"
118-
call :updateClasspath "flexmark-html-parser"
119-
call :updateClasspath "flexmark-ext-anchorlink"
120-
call :updateClasspath "flexmark-ext-autolink"
121-
call :updateClasspath "flexmark-ext-emoji"
122-
call :updateClasspath "flexmark-ext-gfm-strikethrough"
123-
call :updateClasspath "flexmark-ext-gfm-tables"
124-
call :updateClasspath "flexmark-ext-gfm-tasklist"
125-
call :updateClasspath "flexmark-ext-wikilink"
126-
call :updateClasspath "flexmark-ext-yaml-front-matter"
127-
call :updateClasspath "liqp"
128-
call :updateClasspath "jsoup"
129-
call :updateClasspath "jackson-dataformat-yaml"
130-
call :updateClasspath "jackson-datatype-jsr310"
131-
call :updateClasspath "strftime4j"
132-
call :updateClasspath "scala-asm"
133-
call :updateClasspath "compiler-interface"
134-
call :updateClasspath "jline-reader"
135-
call :updateClasspath "jline-terminal-3"
136-
call :updateClasspath "jline-terminal-jna"
137-
call :updateClasspath "flexmark-util"
138-
call :updateClasspath "flexmark-formatter"
139-
call :updateClasspath "autolink-0.6"
140-
call :updateClasspath "flexmark-jira-converter"
141-
call :updateClasspath "antlr4"
142-
call :updateClasspath "jackson-annotations"
143-
call :updateClasspath "jackson-core"
144-
call :updateClasspath "jackson-databind"
145-
call :updateClasspath "snakeyaml"
146-
call :updateClasspath "scala-library"
147-
call :updateClasspath "protobuf-java"
148-
call :updateClasspath "util-interface"
149-
call :updateClasspath "jna-5"
150-
call :updateClasspath "flexmark-ext-tables"
151-
call :updateClasspath "flexmark-ext-ins"
152-
call :updateClasspath "flexmark-ext-superscript"
153-
call :updateClasspath "antlr4-runtime"
110+
call :loadClasspathFromFile
154111
goto :eof
155112

156-
@rem input parameter: %1=pattern for library file
157-
@rem output parameter: _CLASS_PATH
158-
:updateClasspath
159-
set "__PATTERN=%~1"
160-
for /f "delims=" %%f in ('dir /a-d /b "%_LIB_DIR%\*%__PATTERN%*" 2^>NUL') do (
161-
set "_CLASS_PATH=!_CLASS_PATH!%_LIB_DIR%\%%f%_PSEP%"
113+
@REM concatentate every line in "%_ETC_DIR%\scaladoc.classpath" with _PSEP
114+
:loadClasspathFromFile
115+
set _CLASS_PATH=
116+
if exist "%_ETC_DIR%\scaladoc.classpath" (
117+
for /f "usebackq delims=" %%i in ("%_ETC_DIR%\scaladoc.classpath") do (
118+
set "_LIB=%_PROG_HOME%\maven2\%%i"
119+
set "_LIB=!_LIB:/=\!"
120+
if not defined _CLASS_PATH (
121+
set "_CLASS_PATH=!_LIB!"
122+
) else (
123+
set "_CLASS_PATH=!_CLASS_PATH!%_PSEP%!_LIB!"
124+
)
125+
)
162126
)
163127
goto :eof
164128

Diff for: project/Build.scala

+9-2
Original file line numberDiff line numberDiff line change
@@ -2130,7 +2130,14 @@ object Build {
21302130
republishRepo := target.value / "republish",
21312131
packResourceDir += (republishRepo.value / "bin" -> "bin"),
21322132
packResourceDir += (republishRepo.value / "maven2" -> "maven2"),
2133-
Compile / pack := (Compile / pack).dependsOn(republish).value,
2133+
packResourceDir += (republishRepo.value / "etc" -> "etc"),
2134+
republishCommandLibs +=
2135+
("scala" -> List("scala3-interfaces", "scala3-compiler", "scala3-library", "tasty-core")),
2136+
republishCommandLibs +=
2137+
("with_compiler" -> List("scala3-staging", "scala3-tasty-inspector", "^!scala3-interfaces", "^!scala3-compiler", "^!scala3-library", "^!tasty-core")),
2138+
republishCommandLibs +=
2139+
("scaladoc" -> List("scala3-interfaces", "scala3-compiler", "scala3-library", "tasty-core", "scala3-tasty-inspector", "scaladoc")),
2140+
Compile / pack := republishPack.value,
21342141
)
21352142

21362143
lazy val dist = project.asDist(Bootstrapped)
@@ -2170,7 +2177,7 @@ object Build {
21702177
republishBinOverrides += (dist / baseDirectory).value / "bin-native-overrides",
21712178
republishFetchCoursier := (dist / republishFetchCoursier).value,
21722179
republishExtraProps += ("cli_version" -> scalaCliLauncherVersion),
2173-
mappings += (republishRepo.value / "etc" / "EXTRA_PROPERTIES" -> "EXTRA_PROPERTIES"),
2180+
mappings += (republishRepo.value / "EXTRA_PROPERTIES" -> "EXTRA_PROPERTIES"),
21742181
republishLaunchers +=
21752182
("scala-cli.exe" -> s"zip+https://github.com/VirtusLab/scala-cli/releases/download/v$scalaCliLauncherVersionWindows/scala-cli-x86_64-pc-win32.zip!/scala-cli.exe")
21762183
)

0 commit comments

Comments
 (0)