Skip to content

Commit

Permalink
Simplify VTS build into a single image
Browse files Browse the repository at this point in the history
  • Loading branch information
camearle20 committed Mar 9, 2024
1 parent 9a21bf3 commit 21b0da9
Show file tree
Hide file tree
Showing 5 changed files with 84 additions and 76 deletions.
96 changes: 20 additions & 76 deletions trajectory_native/Earthfile
Original file line number Diff line number Diff line change
@@ -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
14 changes: 14 additions & 0 deletions trajectory_native/build_casadi.sh
Original file line number Diff line number Diff line change
@@ -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 ../..
23 changes: 23 additions & 0 deletions trajectory_native/build_ipopt.sh
Original file line number Diff line number Diff line change
@@ -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 ../..
16 changes: 16 additions & 0 deletions trajectory_native/build_trajoptlib.sh
Original file line number Diff line number Diff line change
@@ -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 ../..
11 changes: 11 additions & 0 deletions trajectory_native/build_vts.sh
Original file line number Diff line number Diff line change
@@ -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 ..

0 comments on commit 21b0da9

Please sign in to comment.