[#831] Workaround for musl stack size issues
This commit is contained in:
parent
73d454be46
commit
6edc26c834
3 changed files with 24 additions and 4 deletions
|
|
@ -3,7 +3,6 @@
|
||||||
rm -rf /tmp/release
|
rm -rf /tmp/release
|
||||||
mkdir -p /tmp/release
|
mkdir -p /tmp/release
|
||||||
cp bb /tmp/release
|
cp bb /tmp/release
|
||||||
# cp src-bash/bbk /tmp/release
|
|
||||||
|
|
||||||
VERSION=$(cat resources/BABASHKA_VERSION)
|
VERSION=$(cat resources/BABASHKA_VERSION)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -76,7 +76,9 @@ args=( "-jar" "$BABASHKA_JAR"
|
||||||
BABASHKA_STATIC=${BABASHKA_STATIC:-}
|
BABASHKA_STATIC=${BABASHKA_STATIC:-}
|
||||||
|
|
||||||
if [ "$BABASHKA_STATIC" = "true" ]; then
|
if [ "$BABASHKA_STATIC" = "true" ]; then
|
||||||
args+=("--static" "--libc=musl")
|
args+=("--static" "--libc=musl"
|
||||||
|
# see https://github.com/oracle/graal/issues/3398
|
||||||
|
"-H:CCompilerOption=-Wl,-z,stack-size=2097152")
|
||||||
|
|
||||||
# needs to be in a separate script as we need sudo and >> redirects in it wont work.
|
# needs to be in a separate script as we need sudo and >> redirects in it wont work.
|
||||||
sudo bash script/setup-musl
|
sudo bash script/setup-musl
|
||||||
|
|
|
||||||
|
|
@ -863,6 +863,25 @@ Use bb run --help to show this help output.
|
||||||
(let [opts (parse-opts args)]
|
(let [opts (parse-opts args)]
|
||||||
(exec opts)))
|
(exec opts)))
|
||||||
|
|
||||||
|
(def static?
|
||||||
|
"Captured at compile time, to know if we are running inside a
|
||||||
|
statically compiled executable."
|
||||||
|
(System/getenv "BABASHKA_STATIC"))
|
||||||
|
|
||||||
|
(defmacro run [args]
|
||||||
|
(if static?
|
||||||
|
;; When running in musl-compiled static executable we lift execution of bb
|
||||||
|
;; inside a thread, so we have a larger than default stack size, set by an
|
||||||
|
;; argument to the linker. See https://github.com/oracle/graal/issues/3398
|
||||||
|
`(let [v# (volatile! nil)
|
||||||
|
f# (fn []
|
||||||
|
(vreset! v# (apply main ~args)))]
|
||||||
|
(doto (Thread. nil f# "main")
|
||||||
|
(.start)
|
||||||
|
(.join))
|
||||||
|
@v#)
|
||||||
|
`(apply main ~args)))
|
||||||
|
|
||||||
(defn -main
|
(defn -main
|
||||||
[& args]
|
[& args]
|
||||||
(handle-pipe!)
|
(handle-pipe!)
|
||||||
|
|
@ -874,10 +893,10 @@ Use bb run --help to show this help output.
|
||||||
(dotimes [i n]
|
(dotimes [i n]
|
||||||
(if (< i last-iteration)
|
(if (< i last-iteration)
|
||||||
(with-out-str (apply main args))
|
(with-out-str (apply main args))
|
||||||
(do (apply main args)
|
(do (run args)
|
||||||
(binding [*out* *err*]
|
(binding [*out* *err*]
|
||||||
(println "ran" n "times"))))))
|
(println "ran" n "times"))))))
|
||||||
(let [exit-code (apply main args)]
|
(let [exit-code (run args)]
|
||||||
(System/exit exit-code))))
|
(System/exit exit-code))))
|
||||||
|
|
||||||
;;;; Scratch
|
;;;; Scratch
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue