Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
FROM eclipse-temurin:25-jdk-alpine AS builder
FROM maven:3.9.12-eclipse-temurin-25-alpine AS builder
COPY quantlib-version /tmp/quantlib-version
COPY build.sh /tmp/build.sh
COPY test.scala /tmp/test.scala
RUN sh /tmp/build.sh

FROM scratch AS export
Expand Down
57 changes: 8 additions & 49 deletions build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,45 +3,17 @@
set -exo pipefail

export CPUS="$(nproc)"
export BOOST_VERSION=1.90.0
export MAVEN_VERSION=3.9.12
export BOOST_VERSION=1.84.0
export QUANTLIB_VERSION="$(cat /tmp/quantlib-version)"
export SWIG_VERSION=4.4.1
unset MAVEN_CONFIG

apk add --no-cache --update --virtual .build-dependencies \
automake autoconf bison build-base cmake curl git jq libtool linux-headers ninja-build pcre2-dev
apk add --no-cache --update --virtual .build-dependencies "boost${BOOST_VERSION%.*}-dev" build-base cmake git ninja-build swig

export PATH="$PATH:/usr/lib/ninja-build/bin"
export SWIG_VERSION_REGEX='^SWIG Version (.*)$'
export SWIG_VERSION="$(swig --version | grep -E "$SWIG_VERSION_REGEX" | sed -E "s/$SWIG_VERSION_REGEX/\1/")"

export BUILD_DIR="/tmp/build"
mkdir -p "$BUILD_DIR"
cd "$BUILD_DIR"

# Build boost
BOOST_DIR="boost-$BOOST_VERSION"
wget "https://github.com/boostorg/boost/releases/download/boost-$BOOST_VERSION/$BOOST_DIR-b2-nodocs.tar.xz"
tar -xf "$BOOST_DIR-b2-nodocs.tar.xz"
cd "$BOOST_DIR"
./bootstrap.sh
./b2 --without-python --prefix=/usr -j "$CPUS" link=shared runtime-link=shared install
cd "$BUILD_DIR"

# Build swig
SWIG_DIR="swig-$SWIG_VERSION"
wget "https://github.com/swig/swig/archive/refs/tags/v$SWIG_VERSION.tar.gz" -O "$SWIG_DIR.tar.gz"
tar -xzf "$SWIG_DIR.tar.gz"
cd "$SWIG_DIR"
./autogen.sh
./configure --prefix=/usr
make -j "$CPUS"
make install
cd "$BUILD_DIR"

# Install maven
MAVEN_DIR="apache-maven-$MAVEN_VERSION"
wget "https://archive.apache.org/dist/maven/maven-3/$MAVEN_VERSION/binaries/$MAVEN_DIR-bin.tar.gz"
tar -xzf "$MAVEN_DIR-bin.tar.gz"
ln -s "$MAVEN_DIR/bin/mvn /usr/bin/mvn"
cd /tmp

# Build quantlib_for_maven
git clone --revision "v$QUANTLIB_VERSION" --recurse-submodules --jobs "$CPUS" https://github.com/ralfkonrad/quantlib_for_maven.git
Expand All @@ -60,28 +32,15 @@ index 68ecd0e..626616b 100644

<name>QuantLib module</name>
" | git apply
cmake --preset release -L
cmake --preset release -DQL_MVN_BOOST_VERSION="$BOOST_VERSION" -DQL_MVN_SWIG_VERSION="$SWIG_VERSION" -L
cmake --build --preset release -v --parallel "$CPUS"
cd java
./mvnw install
mkdir /build
MAVEN_PREFIX="/root/.m2/repository/io/github/ralfkonrad/quantlib_for_maven/quantlib/$QUANTLIB_VERSION/quantlib-$QUANTLIB_VERSION"
mv "$MAVEN_PREFIX.jar" "$MAVEN_PREFIX.pom" /build/

# Install scala-cli
scalaCliJar="$BUILD_DIR/scala-cli.jar"
scalaCliVersion="$(curl -s 'https://api.github.com/repos/VirtusLab/scala-cli/releases/latest' | jq -r '.tag_name' | sed -E 's/^v?//')"
curl -o "$scalaCliJar" "https://repo1.maven.org/maven2/org/virtuslab/scala-cli/cliBootstrapped/$scalaCliVersion/cliBootstrapped-$scalaCliVersion.jar"

# Test quantlib jar with scala-cli
java -jar "$scalaCliJar" \
--server=false \
-S 3.8.2 \
--classpath "/build/quantlib-$QUANTLIB_VERSION.jar" \
--dep org.slf4j:slf4j-api:2.0.17 \
/tmp/test.scala

# Clean up
cd
rm -rf "$BUILD_DIR"
rm -rf /tmp/quantlib_for_maven
apk del .build-dependencies
13 changes: 0 additions & 13 deletions test.scala

This file was deleted.