@ -17,36 +17,71 @@ stdenv.mkDerivation rec {
dontUnpack = true ;
LC_ALL = " e n _ U S . U T F - 8 " ;
nativeBuildInputs = [ graalvm11-ce glibcLocales ] ;
LC_ALL = " e n _ U S . U T F - 8 " ;
BABASHKA_JAR = src ;
BABASHKA_BINARY = " b b " ;
BABASHKA_XMX = " - J - X m x 4 5 0 0 m " ;
buildPhase = ''
native-image \
- jar $ { src } \
- H:Name=bb \
$ { lib . optionalString stdenv . isDarwin '' - H : - C h e c k T o o l c h a i n '' } \
- H:+ReportExceptionStackTraces \
- J-Dclojure . spec . skip-macros = true \
- J-Dclojure . compiler . direct-linking = true \
" - H : I n c l u d e R e s o u r c e s = B A B A S H K A _ V E R S I O N " \
" - H : I n c l u d e R e s o u r c e s = S C I _ V E R S I O N " \
- H:ReflectionConfigurationFiles=$ { reflectionJson } \
- - initialize-at-build-time \
- H:Log=registerResource: \
- H:EnableURLProtocols=http,https \
- - enable-all-security-services \
- H:+JNI \
- - verbose \
- - no-fallback \
- - no-server \
- - report-unsupported-elements-at-runtime \
" - - i n i t i a l i z e - a t - r u n - t i m e = o r g . p o s t g r e s q l . s s p i . S S P I C l i e n t " \
" - J - X m x 4 5 0 0 m "
runHook preBuild
# https://github.com/babashka/babashka/blob/77daea7362d8e2562c89c315b1fbcefde6fa56a5/script/compile
args = ( " - j a r " " $ B A B A S H K A _ J A R "
" - H : N a m e = $ B A B A S H K A _ B I N A R Y "
" ${ lib . optionalString stdenv . isDarwin '' - H : - C h e c k T o o l c h a i n '' } "
" - H : + R e p o r t E x c e p t i o n S t a c k T r a c e s "
" - J - D c l o j u r e . s p e c . s k i p - m a c r o s = t r u e "
" - J - D c l o j u r e . c o m p i l e r . d i r e c t - l i n k i n g = t r u e "
" - H : I n c l u d e R e s o u r c e s = B A B A S H K A _ V E R S I O N "
" - H : I n c l u d e R e s o u r c e s = S C I _ V E R S I O N "
" - H : R e f l e c t i o n C o n f i g u r a t i o n F i l e s = ${ reflectionJson } "
" - - i n i t i a l i z e - a t - b u i l d - t i m e "
# "-H:+PrintAnalysisCallTree"
# "-H:+DashboardAll"
# "-H:DashboardDump=reports/dump"
# "-H:+DashboardPretty"
# "-H:+DashboardJson"
" - H : L o g = r e g i s t e r R e s o u r c e : "
" - H : E n a b l e U R L P r o t o c o l s = h t t p , h t t p s , j a r "
" - - e n a b l e - a l l - s e c u r i t y - s e r v i c e s "
" - H : + J N I "
" - - v e r b o s e "
" - - n o - f a l l b a c k "
" - - n o - s e r v e r "
" - - r e p o r t - u n s u p p o r t e d - e l e m e n t s - a t - r u n t i m e "
" - - i n i t i a l i z e - a t - r u n - t i m e = o r g . p o s t g r e s q l . s s p i . S S P I C l i e n t "
" - - n a t i v e - i m a g e - i n f o "
" - - v e r b o s e "
" - H : S e r v i c e L o a d e r F e a t u r e E x c l u d e S e r v i c e s = j a v a x . s o u n d . s a m p l e d . s p i . A u d i o F i l e R e a d e r "
" - H : S e r v i c e L o a d e r F e a t u r e E x c l u d e S e r v i c e s = j a v a x . s o u n d . m i d i . s p i . M i d i F i l e R e a d e r "
" - H : S e r v i c e L o a d e r F e a t u r e E x c l u d e S e r v i c e s = j a v a x . s o u n d . s a m p l e d . s p i . M i x e r P r o v i d e r "
" - H : S e r v i c e L o a d e r F e a t u r e E x c l u d e S e r v i c e s = j a v a x . s o u n d . s a m p l e d . s p i . F o r m a t C o n v e r s i o n P r o v i d e r "
" - H : S e r v i c e L o a d e r F e a t u r e E x c l u d e S e r v i c e s = j a v a x . s o u n d . s a m p l e d . s p i . A u d i o F i l e W r i t e r "
" - H : S e r v i c e L o a d e r F e a t u r e E x c l u d e S e r v i c e s = j a v a x . s o u n d . m i d i . s p i . M i d i D e v i c e P r o v i d e r "
" - H : S e r v i c e L o a d e r F e a t u r e E x c l u d e S e r v i c e s = j a v a x . s o u n d . m i d i . s p i . S o u n d b a n k R e a d e r "
" - H : S e r v i c e L o a d e r F e a t u r e E x c l u d e S e r v i c e s = j a v a x . s o u n d . m i d i . s p i . M i d i F i l e W r i t e r "
" $ B A B A S H K A _ X M X " )
native-image '' ${ args [ @ ] }
runHook postBuild
'' ;
installPhase = ''
runHook preInstall
mkdir - p $ out/bin
cp bb $ out/bin/bb
runHook postInstall
'' ;
installCheckPhase = ''
$ out/bin/bb - - version | grep ' $ { version } '
$ out/bin/bb ' ( + 1 2 ) ' | grep ' 3 '
$ out/bin/bb ' ( vec ( dedupe * input * ) ) ' < < < ' [ 1 1 1 1 2 ] ' | grep ' [ 1 2 ] '
'' ;
meta = with lib ; {