x
This commit is contained in:
+3
-11
@@ -46,17 +46,9 @@ RUN dnf -y install --setopt=install_weak_deps=False --nodocs \
|
|||||||
WORKDIR /tmp
|
WORKDIR /tmp
|
||||||
ARG ROCM_MAJOR_VER=7
|
ARG ROCM_MAJOR_VER=7
|
||||||
ARG GFX=gfx120X-all
|
ARG GFX=gfx120X-all
|
||||||
RUN set -euo pipefail; \
|
COPY therock.tar.gz /tmp/therock.tar.gz
|
||||||
BASE="https://therock-nightly-tarball.s3.amazonaws.com"; \
|
RUN mkdir -p /opt/rocm && \
|
||||||
PREFIX="therock-dist-linux-${GFX}-${ROCM_MAJOR_VER}"; \
|
tar xzf therock.tar.gz -C /opt/rocm --strip-components=1 && \
|
||||||
KEY="$(maybe_proxy curl -s "${BASE}?list-type=2&prefix=${PREFIX}" \
|
|
||||||
| tr '<' '\n' \
|
|
||||||
| grep -o "therock-dist-linux-${GFX}-${ROCM_MAJOR_VER}\..*\.tar\.gz" \
|
|
||||||
| sort -V | tail -n1)"; \
|
|
||||||
echo "Downloading Latest Tarball: ${KEY}"; \
|
|
||||||
maybe_proxy aria2c -x 16 -s 16 -j 16 --file-allocation=none "${BASE}/${KEY}" -o therock.tar.gz; \
|
|
||||||
mkdir -p /opt/rocm; \
|
|
||||||
tar xzf therock.tar.gz -C /opt/rocm --strip-components=1; \
|
|
||||||
rm therock.tar.gz
|
rm therock.tar.gz
|
||||||
|
|
||||||
# 3. Configure Global ROCm Environment
|
# 3. Configure Global ROCm Environment
|
||||||
|
|||||||
@@ -270,6 +270,58 @@ has_local_changes() {
|
|||||||
|
|
||||||
# 构建镜像
|
# 构建镜像
|
||||||
build_image() {
|
build_image() {
|
||||||
|
print_step "准备 ROCm SDK..."
|
||||||
|
|
||||||
|
SDK_FILE="therock.tar.gz"
|
||||||
|
if [ ! -f "$SDK_FILE" ]; then
|
||||||
|
print_warning "本地未发现 $SDK_FILE,开始宿主机预下载..."
|
||||||
|
|
||||||
|
# 自动检测 proxychains
|
||||||
|
PROXY_WRAPPER=""
|
||||||
|
if command -v proxychains4 >/dev/null 2>&1; then
|
||||||
|
PROXY_WRAPPER="proxychains4"
|
||||||
|
elif command -v proxychains >/dev/null 2>&1; then
|
||||||
|
PROXY_WRAPPER="proxychains"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 获取下载地址
|
||||||
|
BASE="https://therock-nightly-tarball.s3.amazonaws.com"
|
||||||
|
PREFIX="therock-dist-linux-gfx120X-all-7"
|
||||||
|
|
||||||
|
print_info "正在获取最新版本信息..."
|
||||||
|
CURL_CMD="curl -s"
|
||||||
|
[ -n "$PROXY_WRAPPER" ] && CURL_CMD="$PROXY_WRAPPER $CURL_CMD"
|
||||||
|
[ -z "$PROXY_WRAPPER" ] && [ -n "$HTTP_PROXY_ARG" ] && CURL_CMD="curl -x $HTTP_PROXY_ARG -s"
|
||||||
|
|
||||||
|
KEY=$($CURL_CMD "${BASE}?list-type=2&prefix=${PREFIX}" \
|
||||||
|
| tr '<' '\n' \
|
||||||
|
| grep -o "therock-dist-linux-gfx120X-all-7\..*\.tar\.gz" \
|
||||||
|
| sort -V | tail -n1)
|
||||||
|
|
||||||
|
if [ -n "$KEY" ]; then
|
||||||
|
DOWNLOAD_URL="${BASE}/${KEY}"
|
||||||
|
print_info "开始下载: $DOWNLOAD_URL"
|
||||||
|
|
||||||
|
# 优先使用 aria2c
|
||||||
|
if command -v aria2c >/dev/null 2>&1; then
|
||||||
|
ARIA2_CMD="aria2c -x 16 -s 16 -k 1M -c"
|
||||||
|
[ -n "$PROXY_WRAPPER" ] && ARIA2_CMD="$PROXY_WRAPPER $ARIA2_CMD"
|
||||||
|
[ -z "$PROXY_WRAPPER" ] && [ -n "$HTTP_PROXY_ARG" ] && ARIA2_CMD="$ARIA2_CMD --all-proxy=$HTTP_PROXY_ARG"
|
||||||
|
$ARIA2_CMD "$DOWNLOAD_URL" -o "$SDK_FILE"
|
||||||
|
else
|
||||||
|
DL_CMD="curl -L -C - "
|
||||||
|
[ -n "$PROXY_WRAPPER" ] && DL_CMD="$PROXY_WRAPPER $DL_CMD"
|
||||||
|
[ -z "$PROXY_WRAPPER" ] && [ -n "$HTTP_PROXY_ARG" ] && DL_CMD="curl -x $HTTP_PROXY_ARG -L -C - "
|
||||||
|
$DL_CMD "$DOWNLOAD_URL" -o "$SDK_FILE"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
print_error "无法获取 SDK 下载地址,请检查代理设置或手动下载。"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
print_success "发现本地 $SDK_FILE,跳过下载。"
|
||||||
|
fi
|
||||||
|
|
||||||
print_step "开始构建 Docker 镜像..."
|
print_step "开始构建 Docker 镜像..."
|
||||||
print_info "镜像名称:${IMAGE_NAME}:${IMAGE_TAG}"
|
print_info "镜像名称:${IMAGE_NAME}:${IMAGE_TAG}"
|
||||||
print_info "构建目录:${PROJECT_DIR}"
|
print_info "构建目录:${PROJECT_DIR}"
|
||||||
|
|||||||
Reference in New Issue
Block a user