Files
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

83 lines
2.6 KiB
Bash
Executable File

#!/bin/bash
# Copyright (c) 2026 Advanced Micro Devices, Inc.
# SPDX-License-Identifier: MIT
#
# Build rocjitsu inside a Docker container and install to /opt/rocm.
# Installs GCC 14 from the ubuntu-toolchain-r PPA (needed for C++20
# <format> support) and builds with the container's native glibc.
#
# Usage:
# ./scripts/rocjitsu-docker-build.sh <image> [install-prefix]
#
# Example:
# ./scripts/rocjitsu-docker-build.sh vllm/vllm-openai-rocm:latest
# ./scripts/rocjitsu-docker-build.sh vllm/vllm-openai-rocm:latest /opt/rocm
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
PROJECT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
MONOREPO_DIR="$(cd "$PROJECT_DIR/../.." && pwd)"
IMAGE="${1:?Usage: $0 <image> [install-prefix]}"
INSTALL_PREFIX="${2:-/opt/rocm}"
echo "rocjitsu: building inside container ($IMAGE)" >&2
echo " source: $PROJECT_DIR" >&2
echo " install: $INSTALL_PREFIX" >&2
docker run --rm \
-v "${MONOREPO_DIR}:/src:ro" \
--tmpfs /src/emulation/rocjitsu/third_party \
--entrypoint bash \
"$IMAGE" \
-c '
set -e
INSTALL_PREFIX='"'${INSTALL_PREFIX}'"'
echo "Installing GCC 14 from ubuntu-toolchain-r PPA..."
# add-apt-repository is broken in some containers (apt_pkg not found
# for the container Python). Add the PPA manually via curl + gpg.
mkdir -p /root/.gnupg && chmod 700 /root/.gnupg
curl -fsSL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x1E9377A2BA9EF27F" \
| gpg --dearmor > /usr/share/keyrings/toolchain.gpg
echo "deb [signed-by=/usr/share/keyrings/toolchain.gpg] http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu jammy main" \
> /etc/apt/sources.list.d/toolchain.list
apt-get update -qq
apt-get install -qq -y gcc-14 g++-14 ninja-build > /dev/null 2>&1
echo "GCC version: $(g++-14 --version | head -1)"
echo "Configuring..."
mkdir -p /tmp/build && cd /tmp/build
cmake -G Ninja \
-DCMAKE_C_COMPILER=gcc-14 \
-DCMAKE_CXX_COMPILER=g++-14 \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_SCAN_FOR_MODULES=OFF \
-DCMAKE_SHARED_LINKER_FLAGS="-static-libstdc++" \
-DCMAKE_INSTALL_PREFIX="$INSTALL_PREFIX" \
-DFETCHCONTENT_BASE_DIR=/tmp/deps \
-DBUILD_TESTING=OFF \
/src/emulation/rocjitsu 2>&1 | tail -5
echo "Building..."
ninja -j$(nproc) 2>&1 | tail -5
echo "Installing to $INSTALL_PREFIX..."
cmake --install . 2>&1 | tail -10
echo "Installed files:"
ls -lh "$INSTALL_PREFIX"/lib/librocjitsu*.so
ls "$INSTALL_PREFIX"/include/rocjitsu/
ls "$INSTALL_PREFIX"/share/rocjitsu/configs/
echo "Dynamic dependencies:"
ldd "$INSTALL_PREFIX"/lib/librocjitsu.so
'
echo "rocjitsu: installed to $INSTALL_PREFIX inside $IMAGE" >&2