From 21b0da9a0e80bd4fdc0b2fe81757c9edd2666fc2 Mon Sep 17 00:00:00 2001 From: Cameron Earle Date: Sat, 9 Mar 2024 13:33:38 -0500 Subject: [PATCH] Simplify VTS build into a single image --- trajectory_native/Earthfile | 96 ++++++--------------------- trajectory_native/build_casadi.sh | 14 ++++ trajectory_native/build_ipopt.sh | 23 +++++++ trajectory_native/build_trajoptlib.sh | 16 +++++ trajectory_native/build_vts.sh | 11 +++ 5 files changed, 84 insertions(+), 76 deletions(-) create mode 100644 trajectory_native/build_casadi.sh create mode 100644 trajectory_native/build_ipopt.sh create mode 100644 trajectory_native/build_trajoptlib.sh create mode 100644 trajectory_native/build_vts.sh diff --git a/trajectory_native/Earthfile b/trajectory_native/Earthfile index 77b9c0b6..cf3c8c7d 100644 --- a/trajectory_native/Earthfile +++ b/trajectory_native/Earthfile @@ -1,95 +1,39 @@ VERSION 0.8 FROM scratch -apk-deps: +vts: FROM alpine:3.19.1 WORKDIR /RobotCode2024/trajectory_native - RUN apk add --no-cache --update grpc-dev protobuf-dev blas-dev lapack-dev tinyxml2-dev - SAVE IMAGE --push ghcr.io/mechanical-advantage/vts-apk-deps:latest - -ipopt: - FROM +apk-deps - RUN apk add --no-cache --update clang make patch gfortran - RUN mkdir ipopt-mumps-build - WORKDIR ipopt-mumps-build - RUN wget -c https://github.com/coin-or-tools/ThirdParty-Mumps/archive/refs/tags/releases/3.0.5.tar.gz -O - | tar -xz - WORKDIR ThirdParty-Mumps-releases-3.0.5 - RUN ./get.Mumps - RUN CC=clang CXX=clang++ ./configure - RUN CC=clang CXX=clang++ make -j8 - # Install to both system (for subsequent ipopt build) and installroot (to copy out as artifacts) - RUN CC=clang CXX=clang++ make install - RUN CC=clang CXX=clang++ make DESTDIR=/RobotCode2024/trajectory_native/ipopt-mumps-build/installroot install - WORKDIR .. - - RUN wget -c https://github.com/coin-or/Ipopt/archive/refs/tags/releases/3.14.14.tar.gz -O - | tar -xz - RUN mkdir Ipopt-releases-3.14.14/build - WORKDIR Ipopt-releases-3.14.14/build - RUN CC=clang CXX=clang++ ../configure - RUN CC=clang CXX=clang++ make -j8 - RUN CC=clang CXX=clang++ make DESTDIR=/RobotCode2024/trajectory_native/ipopt-mumps-build/installroot install - SAVE ARTIFACT /RobotCode2024/trajectory_native/ipopt-mumps-build/installroot - SAVE IMAGE --push ghcr.io/mechanical-advantage/vts-ipopt:latest -casadi: - FROM +apk-deps - COPY +ipopt/installroot/usr/local /usr/local/ - RUN wget -c https://github.com/casadi/casadi/archive/refs/tags/3.6.4.tar.gz -O - | tar -xz - RUN mkdir casadi-3.6.4/build - WORKDIR casadi-3.6.4/build - RUN apk add --no-cache --update clang make cmake - RUN CC=clang CXX=clang++ cmake -DWITH_IPOPT=ON -DWITH_DEEPBIND=OFF -DWITH_BUILD_TINYXML=OFF .. - RUN CC=clang CXX=clang++ make -j8 - RUN CC=clang CXX=clang++ make DESTDIR=$(pwd)/installroot install - SAVE ARTIFACT installroot - SAVE IMAGE --push ghcr.io/mechanical-advantage/vts-casadi:latest + COPY --chmod=001 build_ipopt.sh build_ipopt.sh + RUN ./build_ipopt.sh -trajoptlib: - FROM +apk-deps - COPY +ipopt/installroot/usr/local /usr/local/ - COPY +casadi/installroot/usr/local /usr/local/ - LET TRAJOPT_COMMIT=f6cf3d42359f6f41f311f848a4e7f51c3f88c2ca - RUN wget -c https://github.com/SleipnirGroup/TrajoptLib/archive/$TRAJOPT_COMMIT.tar.gz -O - | tar -xz - RUN mkdir TrajoptLib-$TRAJOPT_COMMIT/build - WORKDIR TrajoptLib-$TRAJOPT_COMMIT/build - # Use our CMakeLists.txt (uses system casadi install) - RUN rm ../CMakeLists.txt - COPY trajoptlib-CMakeLists.txt ../CMakeLists.txt - RUN apk add --no-cache --update clang make cmake git - RUN CC=clang CXX=clang++ cmake -DOPTIMIZER_BACKEND=casadi .. - RUN CC=clang CXX=clang++ make -j8 - RUN CC=clang CXX=clang++ make DESTDIR=$(pwd)/installroot install - SAVE ARTIFACT installroot - SAVE IMAGE --push ghcr.io/mechanical-advantage/vts-trajoptlib:latest + COPY --chmod=001 build_casadi.sh . + RUN ./build_casadi.sh -dev-image: - FROM +apk-deps - COPY +ipopt/installroot/usr/local /usr/local/ - COPY +casadi/installroot/usr/local /usr/local/ - COPY +trajoptlib/installroot/usr/local /usr/local/ - RUN apk add --no-cache --update clang make cmake git gdb nlohmann-json fmt-dev - ENV CC="clang" - ENV CXX="clang++" - SAVE IMAGE --push ghcr.io/mechanical-advantage/vts-dev-image:latest + COPY trajoptlib-CMakeLists.txt . + COPY --chmod=001 build_trajoptlib.sh . + RUN ./build_trajoptlib.sh -vts: - FROM +dev-image + WORKDIR vts COPY src src COPY proto proto COPY CMakeLists.txt CMakeLists.txt - RUN mkdir build - WORKDIR build - RUN CC=clang CXX=clang++ cmake .. - RUN CC=clang CXX=clang++ make -j8 + COPY --chmod=001 build_vts.sh build_vts.sh + RUN ./build_vts.sh + EXPOSE 56328 ENV GRPC_VERBOSITY=info + WORKDIR /RobotCode2024/trajectory_native/vts/build ENTRYPOINT ["./trajectory_native"] SAVE IMAGE --push ghcr.io/mechanical-advantage/vts:latest +dev-image: + FROM +vts + RUN apk add --no-cache --update clang make cmake git gdb + ENV CC="clang" + ENV CXX="clang++" + SAVE IMAGE frc6328/vts-dev + vts-all-platforms: - BUILD --platform=linux/amd64 --platform=linux/arm64 +apk-deps - BUILD --platform=linux/amd64 --platform=linux/arm64 +ipopt - BUILD --platform=linux/amd64 --platform=linux/arm64 +casadi - BUILD --platform=linux/amd64 --platform=linux/arm64 +trajoptlib - BUILD --platform=linux/amd64 --platform=linux/arm64 +dev-image BUILD --platform=linux/amd64 --platform=linux/arm64 +vts \ No newline at end of file diff --git a/trajectory_native/build_casadi.sh b/trajectory_native/build_casadi.sh new file mode 100644 index 00000000..228412d2 --- /dev/null +++ b/trajectory_native/build_casadi.sh @@ -0,0 +1,14 @@ +#!/bin/sh +apk add --update clang make cmake blas-dev lapack-dev tinyxml2-dev + +CC=clang +CXX=clang++ +CASADI_VERSION="3.6.4" + +wget -c https://github.com/casadi/casadi/archive/refs/tags/$CASADI_VERSION.tar.gz -O - | tar -xz +mkdir casadi-$CASADI_VERSION/build +cd casadi-$CASADI_VERSION/build +cmake -DWITH_IPOPT=ON -DWITH_DEEPBIND=OFF -DWITH_BUILD_TINYXML=OFF .. +make -j$(nproc) +make install +cd ../.. \ No newline at end of file diff --git a/trajectory_native/build_ipopt.sh b/trajectory_native/build_ipopt.sh new file mode 100644 index 00000000..1d7ffe3d --- /dev/null +++ b/trajectory_native/build_ipopt.sh @@ -0,0 +1,23 @@ +#!/bin/sh +apk add --update clang make gfortran blas-dev lapack-dev + +CC=clang +CXX=clang++ +MUMPS_VERSION="3.0.5" +IPOPT_VERSION="3.14.14" + +wget -c https://github.com/coin-or-tools/ThirdParty-Mumps/archive/refs/tags/releases/$MUMPS_VERSION.tar.gz -O - | tar -xz +cd ThirdParty-Mumps-releases-3.0.5 +./get.Mumps +./configure +make -j$(nproc) +make install +cd .. + +wget -c https://github.com/coin-or/Ipopt/archive/refs/tags/releases/$IPOPT_VERSION.tar.gz -O - | tar -xz +mkdir Ipopt-releases-$IPOPT_VERSION/build +cd Ipopt-releases-$IPOPT_VERSION/build +../configure +make -j$(nproc) +make install +cd ../.. \ No newline at end of file diff --git a/trajectory_native/build_trajoptlib.sh b/trajectory_native/build_trajoptlib.sh new file mode 100644 index 00000000..21f3b3f6 --- /dev/null +++ b/trajectory_native/build_trajoptlib.sh @@ -0,0 +1,16 @@ +#!/bin/sh +apk add --update clang make cmake git + +CC=clang +CXX=clang++ +TRAJOPT_COMMIT=f6cf3d42359f6f41f311f848a4e7f51c3f88c2ca + +wget -c https://github.com/SleipnirGroup/TrajoptLib/archive/$TRAJOPT_COMMIT.tar.gz -O - | tar -xz +mkdir TrajoptLib-$TRAJOPT_COMMIT/build +cd TrajoptLib-$TRAJOPT_COMMIT/build +rm ../CMakeLists.txt +cp ../../trajoptlib-CMakeLists.txt ../CMakeLists.txt +cmake -DOPTIMIZER_BACKEND=casadi -DBUILD_TESTING=OFF .. +make -j$(nproc) +make install +cd ../.. \ No newline at end of file diff --git a/trajectory_native/build_vts.sh b/trajectory_native/build_vts.sh new file mode 100644 index 00000000..aeda3232 --- /dev/null +++ b/trajectory_native/build_vts.sh @@ -0,0 +1,11 @@ +#!/bin/sh +apk add --update clang make cmake grpc-dev protobuf-dev nlohmann-json fmt-dev + +CC=clang +CXX=clang++ + +mkdir build +cd build +cmake .. +make -j$(nproc) +cd .. \ No newline at end of file