babashka/doc/build.md
2020-05-01 20:37:31 +02:00

3.2 KiB

Building babashka

Prerequisites

  • Install lein for producing uberjars

  • Download GraalVM. Currently we use java8-19.3.1.

  • Set $GRAALVM_HOME to the GraalVM distribution directory. On macOS this can look like:

    export GRAALVM_HOME=~/Downloads/graalvm-ce-java8-19.3.1/Contents/Home
    

    On linux:

    export GRAALVM_HOME=~/Downloads/graalvm-ce-java8-19.3.1
    

    On Windows:

    set GRAALVM_HOME=C:\Users\IEUser\Downloads\graalvm-ce-java8-19.3.1
    

Clone repository

NOTE: the babashka repository contains submodules. You need to use the --recursive flag to clone these submodules along with the main repo.

$ git clone https://github.com/borkdude/babashka --recursive

To update later on:

$ git submodule update --recursive

Build

Run the uberjar and compile script:

$ script/uberjar
$ script/compile

To configure maximum heap size you can use:

$ export BABASHKA_XMX="-J-Xmx4800m"

Windows

To compile on Windows you need to check out the windows branch:

$ git checkout windows

Then run script\uberjar.bat followed by script\compile.bat.

Feature flags

Babashka supports the following feature flags:

Name Description Default
BABASHKA_FEATURE_CORE_ASYNC Includes the clojure.core.async library true
BABASHKA_FEATURE_CSV Includes the clojure.data.csv library true
BABASHKA_FEATURE_JAVA_NIO Includes commonly used classes from the java.nio package true
BABASHKA_FEATURE_JAVA_TIME Includes commonly used classes from the java.time package true
BABASHKA_FEATURE_TRANSIT Includes the transit-clj library true
BABASHKA_FEATURE_XML Includes the clojure.data.xml library true
BABASHKA_FEATURE_YAML Includes the clj-yaml library true
BABASHKA_FEATURE_JDBC Includes the next.jdbc library false
BABASHKA_FEATURE_POSTGRESQL Includes the PostgresSQL JDBC driver false
BABASHKA_FEATURE_HSQLDB Includes the HSQLDB JDBC driver false
BABASHKA_FEATURE_DATASCRIPT Includes datascript false

To disable all of the above features, you can set BABASHKA_LEAN to true.

HyperSQL

To compile babashka with the next.jdbc library and the embedded HyperSQL database:

$ export BABASHKA_FEATURE_JDBC=true
$ export BABASHKA_FEATURE_HSQLDB=true
$ script/uberjar
$ script/compile

Check out this example.

PostgresQL

To compile babashka with the next.jdbc library and a PostgresQL driver:

$ export BABASHKA_FEATURE_JDBC=true
$ export BABASHKA_FEATURE_POSTGRESQL=true
$ script/uberjar
$ script/compile