From ee93f48911a563a3a6115be59dfbe8ec1bec0978 Mon Sep 17 00:00:00 2001 From: Matt Dziuban Date: Tue, 3 Mar 2026 08:39:20 -0500 Subject: [PATCH] Simplify build script. --- Dockerfile | 3 +-- build.sh | 57 ++++++++---------------------------------------------- test.scala | 13 ------------- 3 files changed, 9 insertions(+), 64 deletions(-) delete mode 100644 test.scala diff --git a/Dockerfile b/Dockerfile index f9f71ae..7bbd083 100644 --- a/Dockerfile +++ b/Dockerfile @@ -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 diff --git a/build.sh b/build.sh index 637187b..7fbaa40 100644 --- a/build.sh +++ b/build.sh @@ -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 @@ -60,7 +32,7 @@ index 68ecd0e..626616b 100644 QuantLib module " | 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 @@ -68,20 +40,7 @@ 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 diff --git a/test.scala b/test.scala deleted file mode 100644 index ab0585c..0000000 --- a/test.scala +++ /dev/null @@ -1,13 +0,0 @@ -import java.time.LocalDate -import org.quantlib.{Date, Leg, Month, SimpleCashFlow} - -@main -def test = { - val today = LocalDate.now() - val leg = new Leg() - assert(leg.add(new SimpleCashFlow( - 123.45, - new Date(today.getDayOfMonth(), Month.swigToEnum(today.getMonthValue()), today.getYear()), - ))) - println(leg) -}