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
85 changes: 85 additions & 0 deletions quantum/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
ARG tag=noble
FROM spack/ubuntu-${tag}:latest AS builder
ARG ARCH=x86_64
ENV ARCH=${ARCH}
ARG FLUX_SCHED_REPO=https://github.com/vsoch/flux-sched
ARG FLUX_SCHED_BRANCH=add-hold

RUN apt-get update && apt-get install -y gettext-base git make pkg-config

# Custom flux-sched branch, built from a local clone via spack `develop`
RUN git clone --depth 1 -b ${FLUX_SCHED_BRANCH} ${FLUX_SCHED_REPO} /opt/flux-sched

# Spack environment written inline (jansson is needed to build the jobtap)
RUN mkdir -p /opt/spack-environment && cat > /opt/spack-environment/spack.yaml <<EOF
spack:
specs:
- flux-sched@master
- flux-core
- flux-pmix
- pmix
- libzmq
- jansson
view: /opt/views/view
concretizer:
unify: true
develop:
flux-sched:
spec: flux-sched@master
path: /opt/flux-sched
packages:
all:
require: ["target=:${ARCH}"]
boost:
# boost 1.90 + modern cmake break component config lookup (boost_system);
# pin below it so flux-sched's find_package(Boost) succeeds.
require: "@1.85.0"
config:
install_tree:
root: /opt/software
EOF

RUN cd /opt/spack-environment && \
. /opt/spack/share/spack/setup-env.sh && \
spack env activate . && \
spack install --fail-fast && spack gc -y

RUN cd /opt/spack-environment && \
spack env activate --sh -d . > activate.sh && \
. ./activate.sh && \
python3 -m ensurepip

# flux-quantum plugins staged into the view.
COPY . /opt/flux-quantum-src
RUN cd /opt/spack-environment && . ./activate.sh && \
export PKG_CONFIG_PATH=/opt/views/view/lib/pkgconfig:${PKG_CONFIG_PATH} && \
make -C /opt/flux-quantum-src/flux_quantum/jobtap \
FLUX_CFLAGS="$(pkg-config --cflags flux-core jansson)" \
FLUX_LIBS="$(pkg-config --libs flux-core jansson)" \
CFLAGS="-Wall -fPIC -O2" && \
mkdir -p /opt/views/view/flux-quantum && \
cp -R /opt/flux-quantum-src/flux_quantum /opt/views/view/flux-quantum/ && \
cp -R /opt/flux-quantum-src/cli-plugins /opt/views/view/flux-quantum/ && \
install -D /opt/flux-quantum-src/flux_quantum/jobtap/quantum.so \
/opt/views/view/flux-quantum/jobtap/quantum.so

RUN find -L /opt/views/view/* -type f -exec readlink -f '{}' \; | \
xargs file -i | grep 'charset=binary' | \
grep 'x-executable\|x-archive\|x-sharedlib' | \
awk -F: '{print $1}' | xargs strip || true

# Bare OS image with the view
ARG tag=noble
FROM ubuntu:${tag}
COPY --from=builder /opt/spack-environment /opt/spack-environment
COPY --from=builder /opt/software /opt/software
COPY --from=builder /opt/views /opt/views
RUN { \
echo '#!/bin/sh' \
&& echo '.' /opt/spack-environment/activate.sh \
&& echo 'exec "$@"'; \
} > /entrypoint.sh \
&& chmod a+x /entrypoint.sh \
&& ln -s /opt/views/view /opt/view
ENTRYPOINT [ "/entrypoint.sh" ]
CMD [ "/bin/bash" ]
7 changes: 7 additions & 0 deletions quantum/uptodate.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
dockerbuild:
build_args:
tag:
key: "tag"
# jammy and focal won't build with flux-sched requiring gcc>12
versions:
- "noble"
3 changes: 3 additions & 0 deletions rocky/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ RUN mkdir /opt/spack-environment \
&& echo ' view: /opt/views/view' \
&& echo ' concretizer:' \
&& echo ' unify: true' \
&& echo ' packages:' \
&& echo ' boost:' \
&& echo ' require: "@1.85.0"' \
&& echo ' config:' \
&& echo ' install_tree:' \
&& echo ' root: /opt/software') > /opt/spack-environment/spack.yaml
Expand Down
4 changes: 3 additions & 1 deletion ubuntu/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,15 @@ RUN apt-get update && apt-get install -y gettext-base
# is specified in a manifest file (spack.yaml)
RUN mkdir /opt/spack-environment \
&& (echo spack: \
&& echo ' specs: [flux-sched, flux-core@master, pmix, flux-pmix, libzmq]' \
&& echo ' specs: [flux-sched, flux-core, pmix, flux-pmix, libzmq]' \
&& echo ' view: /opt/views/view' \
&& echo ' concretizer:' \
&& echo ' unify: true' \
&& echo ' packages:' \
&& echo ' all:' \
&& echo ' require: ["target=:${ARCH}"]' \
&& echo ' boost:' \
&& echo ' require: "@1.85.0"' \
&& echo ' config:' \
&& echo ' install_tree:' \
&& echo ' root: /opt/software') > /opt/spack-environment/spack-template.yaml
Expand Down
Loading