Add 'projects/rocprofiler-systems/' from commit '92e1d84c72c9321d79a1866e0090fae0215e6557'
git-subtree-dir: projects/rocprofiler-systems git-subtree-mainline:ee9e74df21git-subtree-split:92e1d84c72
Este commit está contenido en:
@@ -0,0 +1 @@
|
||||
/dyninst-source
|
||||
@@ -0,0 +1,65 @@
|
||||
ARG DISTRO=opensuse/leap
|
||||
ARG VERSION=15.5
|
||||
FROM ${DISTRO}:${VERSION}
|
||||
|
||||
ENV HOME /root
|
||||
ENV SHELL /bin/bash
|
||||
ENV BASH_ENV /etc/bash.bashrc
|
||||
ENV DEBIAN_FRONTEND noninteractive
|
||||
|
||||
WORKDIR /tmp
|
||||
SHELL [ "/bin/bash", "-c" ]
|
||||
|
||||
ENV PATH /usr/local/bin:${PATH}
|
||||
ENV LIBRARY_PATH ${LIBRARY_PATH}:/opt/amdgpu/lib64
|
||||
|
||||
RUN set +e; \
|
||||
zypper --non-interactive -i --gpg-auto-import-keys refresh; \
|
||||
zypper --non-interactive -i patch; \
|
||||
zypper --non-interactive -i patch; \
|
||||
zypper --non-interactive -i --gpg-auto-import-keys refresh; \
|
||||
exit 0
|
||||
|
||||
RUN zypper --non-interactive update -y && \
|
||||
zypper --non-interactive dist-upgrade -y && \
|
||||
zypper --non-interactive install -y -t pattern devel_basis && \
|
||||
zypper --non-interactive install -y binutils-gold chrpath cmake curl dpkg-devel \
|
||||
gcc-c++ git iproute2 libdrm-devel libnuma-devel openmpi3-devel python3-pip rpm-build \
|
||||
sqlite3-devel wget && \
|
||||
python3 -m pip install 'cmake==3.21'
|
||||
|
||||
ARG ROCM_VERSION=0.0
|
||||
|
||||
RUN ROCM_MAJOR=$(echo "${ROCM_VERSION}" | sed 's/\./ /g' | awk '{print $1}') && \
|
||||
ROCM_MINOR=$(echo "${ROCM_VERSION}" | sed 's/\./ /g' | awk '{print $2}') && \
|
||||
if [ "${ROCM_MAJOR}" != "0" ] || [ "${ROCM_MINOR}" != "0" ]; then \
|
||||
OS_VERSION=$(grep '^VERSION_ID=' /etc/os-release | cut -d'=' -f2 | tr -d '"') && \
|
||||
OS_VERSION_MAJOR=$(echo "$OS_VERSION" | cut -d'.' -f1) && \
|
||||
OS_VERSION_MINOR=$(echo "$OS_VERSION" | cut -d'.' -f2) && \
|
||||
ROCM_PATCH=$(echo "${ROCM_VERSION}" | sed 's/\./ /g' | awk '{print $3}') && \
|
||||
if [ -z "${ROCM_PATCH}" ] || [ "${ROCM_PATCH}" = "0" ]; then \
|
||||
ROCM_PATCH=0 && \
|
||||
ROCM_VERSION=$(echo "${ROCM_VERSION}" | sed 's/\.0$//') \
|
||||
; fi && \
|
||||
ROCM_VERSN=$(( ("${ROCM_MAJOR}"*10000)+("${ROCM_MINOR}"*100) + ("${ROCM_PATCH}"))) && \
|
||||
zypper --non-interactive addrepo https://download.opensuse.org/repositories/devel:languages:perl/15.6/devel:languages:perl.repo && \
|
||||
zypper --non-interactive --no-gpg-checks install -y https://repo.radeon.com/amdgpu-install/${ROCM_VERSION}/sle/${OS_VERSION}/amdgpu-install-${ROCM_MAJOR}.${ROCM_MINOR}.${ROCM_VERSN}-1.noarch.rpm && \
|
||||
zypper --non-interactive --gpg-auto-import-keys refresh && \
|
||||
zypper --non-interactive install -y rocm-dev rccl-devel libpciaccess0 && \
|
||||
zypper --non-interactive clean --all; \
|
||||
fi
|
||||
|
||||
ARG PYTHON_VERSIONS="6 7 8 9 10 11 12 13"
|
||||
|
||||
RUN wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh -O miniforge.sh && \
|
||||
bash miniforge.sh -b -p /opt/conda && \
|
||||
export PATH="/opt/conda/bin:${PATH}" && \
|
||||
conda config --set always_yes yes --set changeps1 no && \
|
||||
conda update -c conda-forge -n base conda && \
|
||||
for i in ${PYTHON_VERSIONS}; do conda create -n py3.${i} -c conda-forge python=3.${i} pip; done && \
|
||||
for i in ${PYTHON_VERSIONS}; do /opt/conda/envs/py3.${i}/bin/python -m pip install numpy perfetto dataclasses; done && \
|
||||
conda clean -a -y && \
|
||||
conda init
|
||||
|
||||
WORKDIR /home
|
||||
SHELL [ "/bin/bash", "--login", "-c" ]
|
||||
@@ -0,0 +1,51 @@
|
||||
ARG DISTRO=opensuse/leap
|
||||
ARG VERSION=15.5
|
||||
FROM ${DISTRO}:${VERSION}
|
||||
|
||||
ENV HOME /root
|
||||
ENV SHELL /bin/bash
|
||||
ENV BASH_ENV /etc/bash.bashrc
|
||||
ENV DEBIAN_FRONTEND noninteractive
|
||||
|
||||
WORKDIR /tmp
|
||||
SHELL [ "/bin/bash", "-c" ]
|
||||
|
||||
ENV PATH /usr/local/bin:${PATH}
|
||||
|
||||
ARG EXTRA_PACKAGES=""
|
||||
ARG ELFUTILS_DOWNLOAD_VERSION="0.188"
|
||||
ARG BOOST_DOWNLOAD_VERSION="1.79.0"
|
||||
ARG NJOBS="8"
|
||||
|
||||
RUN set +e; \
|
||||
zypper --non-interactive -i --gpg-auto-import-keys refresh; \
|
||||
zypper --non-interactive -i patch; \
|
||||
zypper --non-interactive -i patch; \
|
||||
zypper --non-interactive -i --gpg-auto-import-keys refresh; \
|
||||
exit 0
|
||||
|
||||
RUN zypper --non-interactive update -y && \
|
||||
zypper --non-interactive dist-upgrade -y && \
|
||||
zypper --non-interactive install -y -t pattern devel_basis && \
|
||||
zypper --non-interactive install -y binutils-gold chrpath cmake curl dpkg-devel \
|
||||
gcc-c++ git iproute2 libnuma-devel openmpi3-devel papi-devel python3-pip \
|
||||
rpm-build sqlite3-devel vim wget && \
|
||||
zypper --non-interactive clean --all && \
|
||||
python3 -m pip install 'cmake==3.21' perfetto
|
||||
|
||||
ARG PYTHON_VERSIONS="6 7 8 9 10 11 12 13"
|
||||
|
||||
RUN wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh -O miniforge.sh && \
|
||||
bash miniforge.sh -b -p /opt/conda && \
|
||||
export PATH="/opt/conda/bin:${PATH}" && \
|
||||
conda config --set always_yes yes --set changeps1 no && \
|
||||
conda update -c conda-forge -n base conda && \
|
||||
for i in ${PYTHON_VERSIONS}; do conda create -n py3.${i} -c conda-forge python=3.${i} pip numpy; done && \
|
||||
for i in ${PYTHON_VERSIONS}; do /opt/conda/envs/py3.${i}/bin/python -m pip install numpy perfetto dataclasses; done && \
|
||||
conda clean -a -y && \
|
||||
cd /tmp && \
|
||||
shopt -s dotglob extglob && \
|
||||
rm -rf *
|
||||
|
||||
WORKDIR /home
|
||||
SHELL [ "/bin/bash", "--login", "-c" ]
|
||||
@@ -0,0 +1,64 @@
|
||||
ARG DISTRO=rockylinux/rockylinux
|
||||
ARG VERSION=8
|
||||
FROM ${DISTRO}:${VERSION}
|
||||
|
||||
ENV HOME /root
|
||||
ENV SHELL /bin/bash
|
||||
ENV BASH_ENV /etc/bash.bashrc
|
||||
ENV DEBIAN_FRONTEND noninteractive
|
||||
|
||||
WORKDIR /tmp
|
||||
SHELL [ "/bin/bash", "-c" ]
|
||||
|
||||
ENV PATH /usr/lib64/openmpi/bin:/usr/local/bin:${PATH}
|
||||
ENV LIBRARY_PATH ${LIBRARY_PATH}:/opt/amdgpu/lib64
|
||||
|
||||
RUN yum groupinstall -y "Development Tools" && \
|
||||
yum install -y epel-release && crb enable && \
|
||||
yum install -y --allowerasing chrpath cmake curl dpkg-devel iproute libdrm-devel \
|
||||
numactl-devel openmpi-devel papi-devel python3-pip sqlite-devel texinfo \
|
||||
wget which zlib-devel && \
|
||||
yum clean all && \
|
||||
python3 -m pip install 'cmake==3.21' && \
|
||||
python3 -m pip install 'perfetto'
|
||||
|
||||
ARG ROCM_VERSION=0.0
|
||||
|
||||
RUN ROCM_MAJOR=$(echo "${ROCM_VERSION}" | sed 's/\./ /g' | awk '{print $1}') && \
|
||||
ROCM_MINOR=$(echo "${ROCM_VERSION}" | sed 's/\./ /g' | awk '{print $2}') && \
|
||||
if [ "${ROCM_MAJOR}" != "0" ] || [ "${ROCM_MINOR}" != "0" ]; then \
|
||||
OS_VERSION=$(grep '^VERSION_ID=' /etc/os-release | cut -d'=' -f2 | tr -d '"') && \
|
||||
OS_VERSION_MAJOR=$(echo "$OS_VERSION" | cut -d'.' -f1) && \
|
||||
RPM_TAG=".el${OS_VERSION_MAJOR}" && \
|
||||
ROCM_PATCH=$(echo "${ROCM_VERSION}" | sed 's/\./ /g' | awk '{print $3}') && \
|
||||
if [ -z "${ROCM_PATCH}" ] || [ "${ROCM_PATCH}" = "0" ]; then \
|
||||
ROCM_PATCH=0 && \
|
||||
ROCM_VERSION=$(echo "${ROCM_VERSION}" | sed 's/\.0$//') \
|
||||
; fi && \
|
||||
ROCM_VERSN=$(( ("${ROCM_MAJOR}"*10000)+("${ROCM_MINOR}"*100) + ("${ROCM_PATCH}"))) && \
|
||||
if [ "${OS_VERSION_MAJOR}" -eq 8 ]; then PERL_REPO=powertools; else PERL_REPO=crb; fi && \
|
||||
dnf -y --enablerepo=${PERL_REPO} install perl-File-BaseDir && \
|
||||
yum install -y https://repo.radeon.com/amdgpu-install/${ROCM_VERSION}/rhel/${OS_VERSION}/amdgpu-install-${ROCM_MAJOR}.${ROCM_MINOR}.${ROCM_VERSN}-1${RPM_TAG}.noarch.rpm && \
|
||||
yum install -y rocm-dev && \
|
||||
yum clean all; \
|
||||
fi
|
||||
|
||||
ARG PYTHON_VERSIONS="6 7 8 9 10 11 12 13"
|
||||
|
||||
RUN wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh -O miniforge.sh && \
|
||||
bash miniforge.sh -b -p /opt/conda && \
|
||||
export PATH="/opt/conda/bin:${PATH}" && \
|
||||
conda config --set always_yes yes --set changeps1 no && \
|
||||
conda update -c conda-forge -n base conda && \
|
||||
for i in ${PYTHON_VERSIONS}; do conda create -n py3.${i} -c conda-forge python=3.${i} pip; done && \
|
||||
for i in ${PYTHON_VERSIONS}; do /opt/conda/envs/py3.${i}/bin/python -m pip install numpy perfetto dataclasses; done && \
|
||||
conda clean -a -y && \
|
||||
conda init
|
||||
|
||||
RUN if [ "${ROCM_VERSION}" != "0.0" ]; then ln -sf /opt/rocm-${ROCM_VERSION}* /opt/rocm; fi
|
||||
|
||||
WORKDIR /home
|
||||
ENV LC_ALL C.UTF-8
|
||||
SHELL [ "/bin/bash", "--login", "-c" ]
|
||||
COPY ./entrypoint-rhel.sh /docker-entrypoint.sh
|
||||
ENTRYPOINT [ "/docker-entrypoint.sh" ]
|
||||
@@ -0,0 +1,42 @@
|
||||
ARG DISTRO=rockylinux/rockylinux
|
||||
ARG VERSION=8
|
||||
FROM ${DISTRO}:${VERSION}
|
||||
|
||||
ENV HOME /root
|
||||
ENV SHELL /bin/bash
|
||||
ENV BASH_ENV /etc/bash.bashrc
|
||||
ENV DEBIAN_FRONTEND noninteractive
|
||||
|
||||
WORKDIR /tmp
|
||||
SHELL [ "/bin/bash", "-c" ]
|
||||
|
||||
ENV PATH /usr/lib64/openmpi/bin:/usr/local/bin:${PATH}
|
||||
|
||||
ARG EXTRA_PACKAGES=""
|
||||
ARG ELFUTILS_DOWNLOAD_VERSION="0.188"
|
||||
ARG BOOST_DOWNLOAD_VERSION="1.79.0"
|
||||
ARG NJOBS="8"
|
||||
|
||||
RUN yum groupinstall -y "Development Tools" && \
|
||||
yum install -y epel-release && crb enable && \
|
||||
yum install -y --allowerasing chrpath cmake curl dpkg-devel iproute numactl-devel \
|
||||
openmpi-devel papi-devel python3-pip sqlite-devel texinfo wget which vim zlib-devel && \
|
||||
yum clean all && \
|
||||
python3 -m pip install 'cmake==3.21' perfetto
|
||||
|
||||
ARG PYTHON_VERSIONS="6 7 8 9 10 11 12 13"
|
||||
|
||||
RUN wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh -O miniforge.sh && \
|
||||
bash miniforge.sh -b -p /opt/conda && \
|
||||
export PATH="/opt/conda/bin:${PATH}" && \
|
||||
conda config --set always_yes yes --set changeps1 no && \
|
||||
conda update -c conda-forge -n base conda && \
|
||||
for i in ${PYTHON_VERSIONS}; do conda create -n py3.${i} -c conda-forge python=3.${i} pip numpy; done && \
|
||||
for i in ${PYTHON_VERSIONS}; do /opt/conda/envs/py3.${i}/bin/python -m pip install numpy perfetto dataclasses; done && \
|
||||
conda clean -a -y && \
|
||||
cd /tmp && \
|
||||
shopt -s dotglob extglob && \
|
||||
rm -rf *
|
||||
|
||||
WORKDIR /home
|
||||
SHELL [ "/bin/bash", "--login", "-c" ]
|
||||
@@ -0,0 +1,67 @@
|
||||
|
||||
ARG DISTRO
|
||||
ARG VERSION
|
||||
FROM ${DISTRO}:${VERSION}
|
||||
|
||||
ENV HOME /root
|
||||
ENV LANG en_US.UTF-8
|
||||
ENV LANGUAGE en_US
|
||||
ENV LC_ALL C
|
||||
ENV SHELL /bin/bash
|
||||
ENV BASH_ENV /etc/bash.bashrc
|
||||
ENV DEBIAN_FRONTEND noninteractive
|
||||
|
||||
WORKDIR /tmp
|
||||
SHELL [ "/bin/bash", "-c" ]
|
||||
|
||||
ARG EXTRA_PACKAGES=""
|
||||
ARG ROCM_VERSION="0.0"
|
||||
ENV PATH ${HOME}/.local/bin:${PATH}
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get dist-upgrade -y && \
|
||||
apt-get install -y apt-utils autoconf autotools-dev bash-completion bison \
|
||||
build-essential chrpath cmake curl flex gettext git-core gnupg2 iproute2 \
|
||||
libnuma1 libopenmpi-dev libpapi-dev libpfm4-dev librpm-dev libsqlite3-dev \
|
||||
libtool libudev1 lsb-release m4 python3-pip rpm texinfo wget && \
|
||||
OS_VERSION=$(cat /etc/os-release | grep VERSION_ID | sed 's/=/ /'1 | awk '{print $NF}' | sed 's/"//g') && \
|
||||
if [ "${OS_VERSION}" == "24.04" ]; then \
|
||||
python3 -m pip install --break-system-packages 'cmake==3.21'; \
|
||||
else \
|
||||
python3 -m pip install 'cmake==3.21'; \
|
||||
fi
|
||||
|
||||
RUN ROCM_MAJOR=$(echo "${ROCM_VERSION}" | sed 's/\./ /g' | awk '{print $1}') && \
|
||||
ROCM_MINOR=$(echo "${ROCM_VERSION}" | sed 's/\./ /g' | awk '{print $2}') && \
|
||||
if [ "${ROCM_MAJOR}" != "0" ] || [ "${ROCM_MINOR}" != "0" ]; then \
|
||||
OS_VERSION=$(grep '^VERSION_ID=' /etc/os-release | cut -d'=' -f2 | tr -d '"') && \
|
||||
OS_CODENAME=$(grep '^VERSION_CODENAME=' /etc/os-release | cut -d'=' -f2) && \
|
||||
ROCM_PATCH=$(echo "${ROCM_VERSION}" | sed 's/\./ /g' | awk '{print $3}') && \
|
||||
if [ -z "${ROCM_PATCH}" ] || [ "${ROCM_PATCH}" = "0" ]; then \
|
||||
ROCM_PATCH=0 && \
|
||||
ROCM_VERSION=$(echo "${ROCM_VERSION}" | sed 's/\.0$//') \
|
||||
; fi && \
|
||||
ROCM_VERSN=$(( ("${ROCM_MAJOR}"*10000)+("${ROCM_MINOR}"*100) + ("${ROCM_PATCH}"))) && \
|
||||
AMDGPU_DEB="amdgpu-install_${ROCM_MAJOR}.${ROCM_MINOR}.${ROCM_VERSN}-1_all.deb" && \
|
||||
wget https://repo.radeon.com/amdgpu-install/${ROCM_VERSION}/ubuntu/${OS_CODENAME}/${AMDGPU_DEB} && \
|
||||
apt-get install -y ./${AMDGPU_DEB} && \
|
||||
apt-get update && \
|
||||
apt-get install -y rocm-dev rccl-dev libpciaccess0 ${EXTRA_PACKAGES} && \
|
||||
apt-get autoclean; \
|
||||
fi
|
||||
|
||||
ARG PYTHON_VERSIONS="6 7 8 9 10 11 12 13"
|
||||
|
||||
RUN wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh -O miniforge.sh && \
|
||||
bash miniforge.sh -b -p /opt/conda && \
|
||||
export PATH="/opt/conda/bin:${PATH}" && \
|
||||
conda config --set always_yes yes --set changeps1 no && \
|
||||
conda update -c conda-forge -n base conda && \
|
||||
for i in ${PYTHON_VERSIONS}; do conda create -n py3.${i} -c conda-forge python=3.${i} pip; done && \
|
||||
for i in ${PYTHON_VERSIONS}; do /opt/conda/envs/py3.${i}/bin/python -m pip install numpy perfetto dataclasses; done && \
|
||||
conda clean -a -y && \
|
||||
conda init
|
||||
|
||||
ENV LC_ALL C.UTF-8
|
||||
WORKDIR /home
|
||||
SHELL [ "/bin/bash", "--login", "-c" ]
|
||||
@@ -0,0 +1,56 @@
|
||||
|
||||
ARG DISTRO
|
||||
ARG VERSION
|
||||
FROM ${DISTRO}:${VERSION}
|
||||
|
||||
ENV HOME /root
|
||||
ENV LANG C.UTF-8
|
||||
ENV SHELL /bin/bash
|
||||
ENV BASH_ENV /etc/bash.bashrc
|
||||
ENV DEBIAN_FRONTEND noninteractive
|
||||
|
||||
WORKDIR /tmp
|
||||
SHELL [ "/bin/bash", "-c" ]
|
||||
|
||||
ARG EXTRA_PACKAGES=""
|
||||
ARG ELFUTILS_DOWNLOAD_VERSION="0.188"
|
||||
ARG BOOST_DOWNLOAD_VERSION="1.79.0"
|
||||
ARG NJOBS="8"
|
||||
|
||||
|
||||
ENV PATH /usr/local/bin:${PATH}
|
||||
ENV LIBRARY_PATH /usr/local/lib:/usr/local/lib64:${LIBRARY_PATH}
|
||||
ENV LD_LIBRARY_PATH /usr/local/lib:/usr/local/lib64:${LD_LIBRARY_PATH}
|
||||
ENV CMAKE_PREFIX_PATH /usr/local:${CMAKE_PREFIX_PATH}
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get dist-upgrade -y && \
|
||||
apt-get install -y autoconf autotools-dev bash-completion bison build-essential \
|
||||
bzip2 chrpath cmake curl environment-modules flex gettext git-core gnupg2 \
|
||||
gzip iproute2 libiberty-dev libpapi-dev libpfm4-dev libsqlite3-dev libtool \
|
||||
locales lsb-release m4 python3-pip texinfo unzip wget vim zip zlib1g-dev && \
|
||||
apt-get autoclean && \
|
||||
if [ "${OS_VERSION}" == "24.04" ]; then \
|
||||
python3 -m pip install --break-system-packages 'cmake==3.21' perfetto \
|
||||
else \
|
||||
python3 -m pip install 'cmake==3.21' perfetto; \
|
||||
fi
|
||||
|
||||
ARG PYTHON_VERSIONS="6 7 8 9 10 11 12 13"
|
||||
|
||||
RUN wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh -O miniforge.sh && \
|
||||
bash miniforge.sh -b -p /opt/conda && \
|
||||
export PATH="/opt/conda/bin:${PATH}" && \
|
||||
conda config --set always_yes yes --set changeps1 no && \
|
||||
conda update -c conda-forge -n base conda && \
|
||||
for i in ${PYTHON_VERSIONS}; do conda create -n py3.${i} -c conda-forge python=3.${i} pip numpy; done && \
|
||||
for i in ${PYTHON_VERSIONS}; do /opt/conda/envs/py3.${i}/bin/python -m pip install numpy perfetto dataclasses; done && \
|
||||
conda clean -a -y && \
|
||||
cd /tmp && \
|
||||
shopt -s dotglob extglob && \
|
||||
rm -rf *
|
||||
|
||||
|
||||
ENV LC_ALL C.UTF-8
|
||||
WORKDIR /home
|
||||
SHELL [ "/bin/bash", "--login", "-c" ]
|
||||
Archivo ejecutable
+171
@@ -0,0 +1,171 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
: ${USER:=$(whoami)}
|
||||
: ${DISTRO:=ubuntu}
|
||||
: ${VERSIONS:=20.04}
|
||||
: ${NJOBS=$(nproc)}
|
||||
: ${ELFUTILS_VERSION:=0.186}
|
||||
: ${BOOST_VERSION:=1.79.0}
|
||||
: ${PYTHON_VERSIONS:="6 7 8 9 10 11 12 13"}
|
||||
: ${PUSH:=0}
|
||||
: ${PULL:=--pull}
|
||||
|
||||
verbose-run()
|
||||
{
|
||||
echo -e "\n### Executing \"${@}\"... ###\n"
|
||||
eval $@
|
||||
}
|
||||
|
||||
tolower()
|
||||
{
|
||||
echo "$@" | awk -F '\\|~\\|' '{print tolower($1)}';
|
||||
}
|
||||
|
||||
toupper()
|
||||
{
|
||||
echo "$@" | awk -F '\\|~\\|' '{print toupper($1)}';
|
||||
}
|
||||
|
||||
usage()
|
||||
{
|
||||
print_option() { printf " --%-20s %-24s %s\n" "${1}" "${2}" "${3}"; }
|
||||
echo "Options:"
|
||||
print_option "help -h" "" "This message"
|
||||
print_option "push" "" "Push the container to DockerHub when completed"
|
||||
print_option "no-pull" "" "Do not pull down most recent base container"
|
||||
|
||||
echo ""
|
||||
print_default_option() { printf " --%-20s %-24s %s (default: %s)\n" "${1}" "${2}" "${3}" "$(tolower ${4})"; }
|
||||
print_default_option distro "[ubuntu|opensuse|rhel]" "OS distribution" "${DISTRO}"
|
||||
print_default_option versions "[VERSION] [VERSION...]" "Ubuntu, OpenSUSE, or RHEL release" "${VERSIONS}"
|
||||
print_default_option python-versions "[VERSION] [VERSION...]" "Python 3 minor releases" "${PYTHON_VERSIONS}"
|
||||
print_default_option "jobs -j" "[N]" "parallel build jobs" "${NJOBS}"
|
||||
print_default_option elfutils-version "[0.183..0.188]" "ElfUtils version" "${ELFUTILS_VERSION}"
|
||||
print_default_option boost-version "[1.67.0..1.79.0]" "Boost version" "${BOOST_VERSION}"
|
||||
print_default_option user "[USERNAME]" "DockerHub username" "${USER}"
|
||||
}
|
||||
|
||||
send-error()
|
||||
{
|
||||
usage
|
||||
echo -e "\nError: ${@}"
|
||||
exit 1
|
||||
}
|
||||
|
||||
reset-last()
|
||||
{
|
||||
last() { send-error "Unsupported argument :: ${1}"; }
|
||||
}
|
||||
|
||||
reset-last
|
||||
|
||||
n=0
|
||||
while [[ $# -gt 0 ]]
|
||||
do
|
||||
case "${1}" in
|
||||
-h|--help)
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
"--distro")
|
||||
shift
|
||||
DISTRO=${1}
|
||||
last() { DISTRO="${DISTRO} ${1}"; }
|
||||
;;
|
||||
"--versions")
|
||||
shift
|
||||
VERSIONS=${1}
|
||||
last() { VERSIONS="${VERSIONS} ${1}"; }
|
||||
;;
|
||||
"--python-versions")
|
||||
shift
|
||||
PYTHON_VERSIONS=${1}
|
||||
last() { PYTHON_VERSIONS="${PYTHON_VERSIONS} ${1}"; }
|
||||
;;
|
||||
--jobs|-j)
|
||||
shift
|
||||
NJOBS=${1}
|
||||
reset-last
|
||||
;;
|
||||
"--elfutils-version")
|
||||
shift
|
||||
ELFUTILS_VERSION=${1}
|
||||
reset-last
|
||||
;;
|
||||
"--boost-version")
|
||||
shift
|
||||
BOOST_VERSION=${1}
|
||||
reset-last
|
||||
;;
|
||||
--user|-u)
|
||||
shift
|
||||
USER=${1}
|
||||
reset-last
|
||||
;;
|
||||
"--push")
|
||||
PUSH=1
|
||||
reset-last
|
||||
;;
|
||||
"--no-pull")
|
||||
PULL=""
|
||||
reset-last
|
||||
;;
|
||||
--*)
|
||||
reset-last
|
||||
last ${1}
|
||||
;;
|
||||
*)
|
||||
last ${1}
|
||||
;;
|
||||
esac
|
||||
n=$((${n} + 1))
|
||||
shift
|
||||
done
|
||||
|
||||
DOCKER_FILE=Dockerfile.${DISTRO}.ci
|
||||
|
||||
if [ ! -f ${DOCKER_FILE} ]; then cd docker; fi
|
||||
|
||||
if [ ! -f ${DOCKER_FILE} ]; then
|
||||
echo "Error! Execute script from source directory"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
verbose-run rm -rf ./dyninst-source
|
||||
verbose-run cp -r ../external/dyninst ./dyninst-source
|
||||
verbose-run rm -rf ./dyninst-source/{build,install}*
|
||||
|
||||
set -e
|
||||
|
||||
if [ "${DISTRO}" = "opensuse" ]; then
|
||||
DISTRO_IMAGE="opensuse/leap"
|
||||
elif [ "${DISTRO}" = "rhel" ]; then
|
||||
DISTRO_IMAGE="rockylinux/rockylinux"
|
||||
else
|
||||
DISTRO_IMAGE=${DISTRO}
|
||||
fi
|
||||
|
||||
for VERSION in ${VERSIONS}
|
||||
do
|
||||
verbose-run docker build . \
|
||||
${PULL} \
|
||||
-f ${DOCKER_FILE} \
|
||||
--tag ${USER}/rocprofiler-systems:ci-base-${DISTRO}-${VERSION} \
|
||||
--build-arg DISTRO=${DISTRO_IMAGE} \
|
||||
--build-arg VERSION=${VERSION} \
|
||||
--build-arg NJOBS=${NJOBS} \
|
||||
--build-arg PYTHON_VERSIONS=\"${PYTHON_VERSIONS}\" \
|
||||
--build-arg ELFUTILS_DOWNLOAD_VERSION=${ELFUTILS_VERSION} \
|
||||
--build-arg BOOST_DOWNLOAD_VERSION=${BOOST_VERSION}
|
||||
done
|
||||
|
||||
if [ "${PUSH}" -gt 0 ]; then
|
||||
for VERSION in ${VERSIONS}
|
||||
do
|
||||
verbose-run docker push ${USER}/rocprofiler-systems:ci-base-${DISTRO}-${VERSION}
|
||||
done
|
||||
fi
|
||||
|
||||
verbose-run rm -rf ./dyninst-source
|
||||
Archivo ejecutable
+175
@@ -0,0 +1,175 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
if [ ! -f CMakeLists.txt ]; then
|
||||
if [ ! -f ../CMakeLists.txt ]; then
|
||||
echo "Error! Execute script from source directory"
|
||||
exit 1
|
||||
else
|
||||
cd ..
|
||||
fi
|
||||
fi
|
||||
|
||||
set -e
|
||||
|
||||
tolower()
|
||||
{
|
||||
echo "$@" | awk -F '\\|~\\|' '{print tolower($1)}';
|
||||
}
|
||||
|
||||
toupper()
|
||||
{
|
||||
echo "$@" | awk -F '\\|~\\|' '{print toupper($1)}';
|
||||
}
|
||||
|
||||
usage()
|
||||
{
|
||||
print_option() { printf " --%-20s %-24s %s\n" "${1}" "${2}" "${3}"; }
|
||||
echo "Options:"
|
||||
print_option "help -h" "" "This message"
|
||||
|
||||
echo ""
|
||||
print_default_option() { printf " --%-20s %-24s %s (default: %s)\n" "${1}" "${2}" "${3}" "$(tolower ${4})"; }
|
||||
print_default_option distro "[ubuntu|opensuse|rhel]" "OS distribution" "${DISTRO}"
|
||||
print_default_option versions "[VERSION] [VERSION...]" "Ubuntu or OpenSUSE release" "${VERSIONS}"
|
||||
print_default_option rocm-versions "[VERSION] [VERSION...]" "ROCm versions" "${ROCM_VERSIONS}"
|
||||
print_default_option python-versions "[VERSION] [VERSION...]" "Python 3 minor releases" "${PYTHON_VERSIONS}"
|
||||
print_default_option "user -u" "[USERNAME]" "DockerHub username" "${USER}"
|
||||
print_default_option "retry -r" "[N]" "Number of attempts to build (to account for network errors)" "${RETRY}"
|
||||
|
||||
echo ""
|
||||
echo "Usage: ${BASH_SOURCE[0]} <OPTIONS> -- <build-release.sh OPTIONS>"
|
||||
echo " e.g:"
|
||||
echo " ${BASH_SOURCE[0]} --distro ubuntu --versions 20.04 --rocm-versions 5.0 5.1 -- --core +nopython --rocm-mpi +nopython"
|
||||
echo " ${BASH_SOURCE[0]} --distro ubuntu --versions 20.04 --python-version 6 7 8 9 10 -- --rocm +python --rocm-mpi +nopython"
|
||||
}
|
||||
|
||||
send-error()
|
||||
{
|
||||
usage
|
||||
echo -e "\nError: ${@}"
|
||||
exit 1
|
||||
}
|
||||
|
||||
verbose-run()
|
||||
{
|
||||
echo -e "\n### Executing \"${@}\" a maximum of ${RETRY} times... ###\n"
|
||||
for i in $(seq 1 1 ${RETRY})
|
||||
do
|
||||
set +e
|
||||
eval "${@}"
|
||||
local RETC=$?
|
||||
set -e
|
||||
if [ "${RETC}" -eq 0 ]; then
|
||||
break
|
||||
else
|
||||
echo -en "\n### Command failed with error code ${RETC}... "
|
||||
if [ "${i}" -ne "${RETRY}" ]; then
|
||||
echo -e "Retrying... ###\n"
|
||||
sleep 3
|
||||
else
|
||||
echo -e "Exiting... ###\n"
|
||||
exit ${RETC}
|
||||
fi
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
build-release()
|
||||
{
|
||||
CONTAINER=$1
|
||||
OS=$2
|
||||
ROCM_VERSION=$3
|
||||
CODE_VERSION=$4
|
||||
shift
|
||||
shift
|
||||
shift
|
||||
shift
|
||||
local DOCKER_ARGS=""
|
||||
tty -s && DOCKER_ARGS="-it" || DOCKER_ARGS=""
|
||||
verbose-run docker run ${DOCKER_ARGS} --rm -v ${PWD}:/home/rocprofiler-systems --stop-signal "SIGINT" --env DISTRO=${OS} --env ROCM_VERSION=${ROCM_VERSION} --env VERSION=${CODE_VERSION} --env PYTHON_VERSIONS=\"${PYTHON_VERSIONS}\" --env IS_DOCKER=1 ${CONTAINER} /home/rocprofiler-systems/scripts/build-release.sh ${@}
|
||||
}
|
||||
|
||||
reset-last()
|
||||
{
|
||||
last() { send-error "Unsupported argument :: ${1}"; }
|
||||
}
|
||||
|
||||
reset-last
|
||||
|
||||
: ${USER:=$(whoami)}
|
||||
: ${DISTRO:=ubuntu}
|
||||
: ${VERSIONS:=22.04 20.04}
|
||||
: ${ROCM_VERSIONS:=5.0 4.5 4.3}
|
||||
: ${MPI:=0}
|
||||
: ${PYTHON_VERSIONS:="6 7 8 9 10 11 12 13"}
|
||||
: ${RETRY:=3}
|
||||
|
||||
n=0
|
||||
while [[ $# -gt 0 ]]
|
||||
do
|
||||
case "${1}" in
|
||||
-h|--help)
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
"--distro")
|
||||
shift
|
||||
DISTRO=${1}
|
||||
last() { DISTRO="${DISTRO} ${1}"; }
|
||||
;;
|
||||
"--versions")
|
||||
shift
|
||||
VERSIONS=${1}
|
||||
last() { VERSIONS="${VERSIONS} ${1}"; }
|
||||
;;
|
||||
"--rocm-versions")
|
||||
shift
|
||||
ROCM_VERSIONS=${1}
|
||||
last() { ROCM_VERSIONS="${ROCM_VERSIONS} ${1}"; }
|
||||
;;
|
||||
"--python-versions")
|
||||
shift
|
||||
PYTHON_VERSIONS=${1}
|
||||
last() { PYTHON_VERSIONS="${PYTHON_VERSIONS} ${1}"; }
|
||||
;;
|
||||
--user|-u)
|
||||
shift
|
||||
USER=${1}
|
||||
reset-last
|
||||
;;
|
||||
--retry|-r)
|
||||
shift
|
||||
RETRY=${1}
|
||||
reset-last
|
||||
;;
|
||||
"--")
|
||||
shift
|
||||
SCRIPT_ARGS=${@}
|
||||
break
|
||||
;;
|
||||
*)
|
||||
last ${1}
|
||||
;;
|
||||
esac
|
||||
n=$((${n} + 1))
|
||||
shift
|
||||
done
|
||||
|
||||
CODE_VERSION=$(cat VERSION)
|
||||
|
||||
if [ "${RETRY}" -lt 1 ]; then
|
||||
RETRY=1
|
||||
fi
|
||||
|
||||
if [ "${DISTRO}" = "rhel" ]; then
|
||||
SCRIPT_ARGS="${SCRIPT_ARGS} --static-libstdcxx off"
|
||||
fi
|
||||
|
||||
for VERSION in ${VERSIONS}
|
||||
do
|
||||
TAG=${DISTRO}-${VERSION}
|
||||
for ROCM_VERSION in ${ROCM_VERSIONS}
|
||||
do
|
||||
build-release ${USER}/rocprofiler-systems:release-base-${TAG}-rocm-${ROCM_VERSION} ${DISTRO}-${VERSION} ${ROCM_VERSION} ${CODE_VERSION} ${SCRIPT_ARGS}
|
||||
done
|
||||
done
|
||||
Archivo ejecutable
+363
@@ -0,0 +1,363 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set-user-defaults()
|
||||
{
|
||||
: ${USER:=$(whoami)}
|
||||
: ${ROCM_VERSIONS:="6.3"}
|
||||
: ${DISTRO:=ubuntu}
|
||||
: ${VERSIONS:=20.04}
|
||||
: ${PYTHON_VERSIONS:="6 7 8 9 10 11 12 13"}
|
||||
: ${BUILD_CI:=""}
|
||||
: ${PUSH:=0}
|
||||
: ${PULL:=--pull}
|
||||
: ${RETRY:=3}
|
||||
: ${SCRIPT_DIR=$(dirname "$(readlink -f "${BASH_SOURCE[0]:-$0}")")}
|
||||
}
|
||||
|
||||
set-user-defaults
|
||||
|
||||
set -e
|
||||
|
||||
cd $(dirname ${SCRIPT_DIR})
|
||||
|
||||
declare -a MATRIX_DISTROS=()
|
||||
declare -a MATRIX_VERSIONS=()
|
||||
declare -a MATRIX_ROCM_VERSIONS=()
|
||||
|
||||
load-matrix()
|
||||
{
|
||||
local workflow_file=".github/workflows/containers.yml"
|
||||
if [ ! -f "${workflow_file}" ]; then
|
||||
echo -e "\n Error: Cannot find ${workflow_file}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# In form os-distro;os-version;rocm-version
|
||||
local matrix_data=$(awk '
|
||||
/rocprofiler-systems-release:/, /steps:/ {
|
||||
if (/- os-distro:/) {
|
||||
gsub(/[[:space:]]*- os-distro:[[:space:]]*"/, "")
|
||||
gsub(/"/, "")
|
||||
distro = $0
|
||||
}
|
||||
if (/os-version:/) {
|
||||
gsub(/[[:space:]]*os-version:[[:space:]]*"/, "")
|
||||
gsub(/"/, "")
|
||||
version = $0
|
||||
}
|
||||
if (/rocm-version:/) {
|
||||
gsub(/[[:space:]]*rocm-version:[[:space:]]*"/, "")
|
||||
gsub(/"/, "")
|
||||
rocm = $0
|
||||
printf "%s;%s;%s\n", distro, version, rocm
|
||||
}
|
||||
}
|
||||
' "${workflow_file}")
|
||||
|
||||
while IFS=';' read -r os_distro os_version rocm_version; do
|
||||
MATRIX_DISTROS+=("$os_distro")
|
||||
MATRIX_VERSIONS+=("$os_version")
|
||||
MATRIX_ROCM_VERSIONS+=("$rocm_version")
|
||||
done <<< "$matrix_data"
|
||||
}
|
||||
|
||||
validate-distro()
|
||||
{
|
||||
local distro="${1}"
|
||||
|
||||
if [ -n "${distro}" ]; then
|
||||
distro=$(tolower "${distro}")
|
||||
case "${distro}" in
|
||||
ubuntu|opensuse|rhel)
|
||||
;;
|
||||
*)
|
||||
send-error "Unsupported distribution '${distro}'" "Supported distributions: ubuntu, opensuse, rhel"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
}
|
||||
|
||||
show-matrix()
|
||||
{
|
||||
local filter_distro="${1:-}"
|
||||
|
||||
if [ -n "${filter_distro}" ]; then
|
||||
validate-distro "${filter_distro}"
|
||||
filter_distro=$(tolower "${filter_distro}")
|
||||
fi
|
||||
|
||||
echo ""
|
||||
if [ -n "${filter_distro}" ]; then
|
||||
echo " Supported ${filter_distro} + ROCm Combinations "
|
||||
echo " =============================================="
|
||||
else
|
||||
echo " Supported OS + ROCm Combinations "
|
||||
echo " =========================================="
|
||||
fi
|
||||
echo ""
|
||||
echo " OS Distribution Version ROCm Version"
|
||||
echo " ---------------- ------- ------------"
|
||||
|
||||
for i in "${!MATRIX_DISTROS[@]}"; do
|
||||
if [[ -z "${filter_distro}" || "${MATRIX_DISTROS[i]}" == "${filter_distro}" ]]; then
|
||||
printf " %-16s %-9s %s\n" "${MATRIX_DISTROS[i]}" "${MATRIX_VERSIONS[i]}" "${MATRIX_ROCM_VERSIONS[i]}"
|
||||
fi
|
||||
done
|
||||
|
||||
echo ""
|
||||
echo "ROCm '0.0' means no ROCm installation (CPU-only build)"
|
||||
echo ""
|
||||
echo "Note: Patch versions are also supported (See: https://repo.radeon.com/amdgpu-install/)"
|
||||
echo ""
|
||||
}
|
||||
|
||||
# Cross checks arguments against compatibility matrix (ignores ROCm patch version)
|
||||
validate-combinations()
|
||||
{
|
||||
# Check OS version combinations
|
||||
for VERSION in ${VERSIONS}; do
|
||||
VERSION_MAJOR=$(echo ${VERSION} | sed 's/\./ /g' | awk '{print $1}')
|
||||
VERSION_MINOR=$(echo ${VERSION} | sed 's/\./ /g' | awk '{print $2}')
|
||||
|
||||
local os_version_valid=0
|
||||
for i in "${!MATRIX_DISTROS[@]}"; do
|
||||
if [[ "${MATRIX_DISTROS[i]}" == "${DISTRO}" && \
|
||||
"${MATRIX_VERSIONS[i]}" == "${VERSION}" ]]; then
|
||||
os_version_valid=1
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [ ${os_version_valid} -eq 0 ]; then
|
||||
send-error "Unsupported OS version :: ${VERSION}. See compatibility matrix for supported versions."
|
||||
fi
|
||||
done
|
||||
|
||||
# Check ROCm version combinations
|
||||
for VERSION in ${VERSIONS}; do
|
||||
for ROCM_VERSION in ${ROCM_VERSIONS}; do
|
||||
local valid=0
|
||||
ROCM_MAJOR=$(echo ${ROCM_VERSION} | sed 's/\./ /g' | awk '{print $1}')
|
||||
ROCM_MINOR=$(echo ${ROCM_VERSION} | sed 's/\./ /g' | awk '{print $2}')
|
||||
ROCM_MAJOR_MINOR="${ROCM_MAJOR}.${ROCM_MINOR}"
|
||||
if ! ([ "${ROCM_MAJOR_MINOR}" == "0.0" ] && [ "${ROCM_VERSION}" != "0.0" ]); then
|
||||
for i in "${!MATRIX_DISTROS[@]}"; do
|
||||
if [[ "${MATRIX_DISTROS[i]}" == "${DISTRO}" && \
|
||||
"${MATRIX_VERSIONS[i]}" == "${VERSION}" && \
|
||||
"${MATRIX_ROCM_VERSIONS[i]}" == "${ROCM_MAJOR_MINOR}" ]]; then
|
||||
valid=1
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
if [ ${valid} -eq 0 ]; then
|
||||
send-error "Unsupported combination :: ${DISTRO}-${VERSION} + ROCm ${ROCM_VERSION}. See compatibility matrix for supported versions."
|
||||
fi
|
||||
done
|
||||
done
|
||||
}
|
||||
|
||||
tolower()
|
||||
{
|
||||
echo "$@" | awk -F '\\|~\\|' '{print tolower($1)}';
|
||||
}
|
||||
|
||||
toupper()
|
||||
{
|
||||
echo "$@" | awk -F '\\|~\\|' '{print toupper($1)}';
|
||||
}
|
||||
|
||||
usage()
|
||||
{
|
||||
set-user-defaults
|
||||
print_option() { printf " --%-20s %-24s %s\n" "${1}" "${2}" "${3}"; }
|
||||
echo "Options:"
|
||||
print_option "help -h" "" "This message"
|
||||
print_option "no-pull" "" "Do not pull down most recent base container"
|
||||
print_option "matrix -m" "[ubuntu|opensuse|rhel]" "Shows compatibility matrix"
|
||||
|
||||
echo ""
|
||||
print_default_option() { printf " --%-20s %-24s %s (default: %s)\n" "${1}" "${2}" "${3}" "$(tolower ${4})"; }
|
||||
print_default_option distro "[ubuntu|opensuse|rhel]" "OS distribution" "${DISTRO}"
|
||||
print_default_option versions "[VERSION] [VERSION...]" "Ubuntu, OpenSUSE, or RHEL release" "${VERSIONS}"
|
||||
print_default_option rocm-versions "[VERSION] [VERSION...]" "ROCm versions (format: Major.Minor.Patch, patch defaults to 0 if not specified)" "${ROCM_VERSIONS}"
|
||||
print_default_option python-versions "[VERSION] [VERSION...]" "Python 3 minor releases" "${PYTHON_VERSIONS}"
|
||||
print_default_option "user -u" "[USERNAME]" "DockerHub username" "${USER}"
|
||||
print_default_option "retry -r" "[N]" "Number of attempts to build (to account for network errors)" "${RETRY}"
|
||||
print_default_option push "" "Push the image to Dockerhub" ""
|
||||
#print_default_option lto "[on|off]" "Enable LTO" "${LTO}"
|
||||
}
|
||||
|
||||
send-error()
|
||||
{
|
||||
usage
|
||||
echo -e "\nError: ${@}"
|
||||
exit 1
|
||||
}
|
||||
|
||||
verbose-run()
|
||||
{
|
||||
echo -e "\n### Executing \"${@}\"... ###\n"
|
||||
eval "${@}"
|
||||
}
|
||||
|
||||
verbose-build()
|
||||
{
|
||||
echo -e "\n### Executing \"${@}\" a maximum of ${RETRY} times... ###\n"
|
||||
for i in $(seq 1 1 ${RETRY})
|
||||
do
|
||||
set +e
|
||||
eval "${@}"
|
||||
local RETC=$?
|
||||
set -e
|
||||
if [ "${RETC}" -eq 0 ]; then
|
||||
break
|
||||
else
|
||||
echo -en "\n### Command failed with error code ${RETC}... "
|
||||
if [ "${i}" -ne "${RETRY}" ]; then
|
||||
echo -e "Retrying... ###\n"
|
||||
sleep 3
|
||||
else
|
||||
echo -e "Exiting... ###\n"
|
||||
exit ${RETC}
|
||||
fi
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
reset-last()
|
||||
{
|
||||
last() { send-error "Unsupported argument :: ${1}"; }
|
||||
}
|
||||
|
||||
reset-last
|
||||
load-matrix
|
||||
n=0
|
||||
while [[ $# -gt 0 ]]
|
||||
do
|
||||
case "${1}" in
|
||||
-h|--help)
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
-m|--matrix)
|
||||
shift
|
||||
if [[ $# -gt 0 && ! "${1}" =~ ^-- ]]; then
|
||||
show-matrix "${1}"
|
||||
else
|
||||
show-matrix
|
||||
fi
|
||||
exit 0
|
||||
;;
|
||||
"--distro")
|
||||
shift
|
||||
DISTRO=$(tolower ${1})
|
||||
last() { DISTRO="${DISTRO} $(tolower${1})"; }
|
||||
;;
|
||||
"--versions")
|
||||
shift
|
||||
VERSIONS=${1}
|
||||
last() { VERSIONS="${VERSIONS} ${1}"; }
|
||||
;;
|
||||
"--rocm-versions")
|
||||
shift
|
||||
ROCM_VERSIONS=${1}
|
||||
last() { ROCM_VERSIONS="${ROCM_VERSIONS} ${1}"; }
|
||||
;;
|
||||
"--python-versions")
|
||||
shift
|
||||
PYTHON_VERSIONS=${1}
|
||||
last() { PYTHON_VERSIONS="${PYTHON_VERSIONS} ${1}"; }
|
||||
;;
|
||||
--user|-u)
|
||||
shift
|
||||
USER=${1}
|
||||
reset-last
|
||||
;;
|
||||
--push)
|
||||
PUSH=1
|
||||
reset-last
|
||||
;;
|
||||
--no-pull)
|
||||
PULL=""
|
||||
reset-last
|
||||
;;
|
||||
--retry|-r)
|
||||
shift
|
||||
RETRY=${1}
|
||||
reset-last
|
||||
;;
|
||||
"--*")
|
||||
send-error "Unsupported argument at position $((${n} + 1)) :: ${1}"
|
||||
;;
|
||||
*)
|
||||
last ${1}
|
||||
;;
|
||||
esac
|
||||
n=$((${n} + 1))
|
||||
shift
|
||||
done
|
||||
|
||||
# Validate input parameters for os-distros and rocm-versions
|
||||
validate-distro
|
||||
validate-combinations
|
||||
|
||||
DOCKER_FILE="Dockerfile.${DISTRO}"
|
||||
|
||||
if [ "${RETRY}" -lt 1 ]; then
|
||||
RETRY=1
|
||||
fi
|
||||
|
||||
if [ -n "${BUILD_CI}" ]; then DOCKER_FILE="${DOCKER_FILE}.ci"; fi
|
||||
cd docker # Forced since PWD is parent dir
|
||||
if [ ! -f ${DOCKER_FILE} ]; then send-error "File \"${DOCKER_FILE}\" not found"; fi
|
||||
|
||||
for VERSION in ${VERSIONS}
|
||||
do
|
||||
VERSION_MAJOR=$(echo ${VERSION} | sed 's/\./ /g' | awk '{print $1}')
|
||||
VERSION_MINOR=$(echo ${VERSION} | sed 's/\./ /g' | awk '{print $2}')
|
||||
VERSION_PATCH=$(echo ${VERSION} | sed 's/\./ /g' | awk '{print $3}')
|
||||
for ROCM_VERSION in ${ROCM_VERSIONS}
|
||||
do
|
||||
ROCM_MAJOR=$(echo ${ROCM_VERSION} | sed 's/\./ /g' | awk '{print $1}')
|
||||
ROCM_MINOR=$(echo ${ROCM_VERSION} | sed 's/\./ /g' | awk '{print $2}')
|
||||
ROCM_PATCH=$(echo ${ROCM_VERSION} | sed 's/\./ /g' | awk '{print $3}')
|
||||
if [ "${ROCM_PATCH}" = "0" ] || [ -z "${ROCM_PATCH}" ]; then
|
||||
CONTAINER=${USER}/rocprofiler-systems:release-base-${DISTRO}-${VERSION}-rocm-${ROCM_MAJOR}.${ROCM_MINOR}
|
||||
else
|
||||
CONTAINER=${USER}/rocprofiler-systems:release-base-${DISTRO}-${VERSION}-rocm-${ROCM_VERSION}
|
||||
fi
|
||||
if [ "${DISTRO}" = "ubuntu" ]; then
|
||||
case "${VERSION}" in
|
||||
24.04)
|
||||
ROCM_REPO_DIST="noble"
|
||||
;;
|
||||
22.04)
|
||||
ROCM_REPO_DIST="jammy"
|
||||
;;
|
||||
20.04)
|
||||
ROCM_REPO_DIST="focal"
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
verbose-build docker build . ${PULL} --progress plain -f ${DOCKER_FILE} --tag ${CONTAINER} --build-arg DISTRO=${DISTRO} --build-arg VERSION=${VERSION} --build-arg ROCM_VERSION=${ROCM_VERSION} --build-arg PYTHON_VERSIONS=\"${PYTHON_VERSIONS}\"
|
||||
elif [ "${DISTRO}" = "rhel" ]; then
|
||||
# use Rocky Linux as a base image for RHEL builds
|
||||
DISTRO_BASE_IMAGE=rockylinux/rockylinux
|
||||
verbose-build docker build . ${PULL} --progress plain -f ${DOCKER_FILE} --tag ${CONTAINER} --build-arg DISTRO=${DISTRO_BASE_IMAGE} --build-arg VERSION=${VERSION} --build-arg ROCM_VERSION=${ROCM_VERSION} --build-arg PYTHON_VERSIONS=\"${PYTHON_VERSIONS}\"
|
||||
elif [ "${DISTRO}" = "opensuse" ]; then
|
||||
DISTRO_IMAGE="opensuse/leap"
|
||||
if [[ "${VERSION_MAJOR}" -le 15 && "${VERSION_MINOR}" -le 5 ]]; then
|
||||
PERL_REPO="15.6"
|
||||
else
|
||||
PERL_REPO="${VERSION_MAJOR}.${VERSION_MINOR}"
|
||||
fi
|
||||
verbose-build docker build . ${PULL} --progress plain -f ${DOCKER_FILE} --tag ${CONTAINER} --build-arg DISTRO=${DISTRO_IMAGE} --build-arg VERSION=${VERSION} --build-arg ROCM_VERSION=${ROCM_VERSION} --build-arg PERL_REPO=${PERL_REPO} --build-arg PYTHON_VERSIONS=\"${PYTHON_VERSIONS}\"
|
||||
fi
|
||||
if [ "${PUSH}" -ne 0 ]; then
|
||||
docker push ${CONTAINER}
|
||||
fi
|
||||
done
|
||||
done
|
||||
Archivo ejecutable
+14
@@ -0,0 +1,14 @@
|
||||
#!/bin/bash -l
|
||||
|
||||
if [ -f /etc/profile.d/modules.sh ]; then
|
||||
source /etc/profile.d/modules.sh
|
||||
module load mpi &> /dev/null
|
||||
fi
|
||||
|
||||
if [ -z "${1}" ]; then
|
||||
: ${SHELL:=/bin/bash}
|
||||
exec ${SHELL}
|
||||
else
|
||||
set -e
|
||||
eval $@
|
||||
fi
|
||||
Archivo ejecutable
+126
@@ -0,0 +1,126 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
if [ ! -f CMakeLists.txt ]; then
|
||||
if [ ! -f ../CMakeLists.txt ]; then
|
||||
echo "Error! Execute script from source directory"
|
||||
exit 1
|
||||
else
|
||||
cd ..
|
||||
fi
|
||||
fi
|
||||
|
||||
set -e
|
||||
|
||||
tolower()
|
||||
{
|
||||
echo "$@" | awk -F '\\|~\\|' '{print tolower($1)}';
|
||||
}
|
||||
|
||||
toupper()
|
||||
{
|
||||
echo "$@" | awk -F '\\|~\\|' '{print toupper($1)}';
|
||||
}
|
||||
|
||||
usage()
|
||||
{
|
||||
print_option() { printf " --%-20s %-24s %s\n" "${1}" "${2}" "${3}"; }
|
||||
echo "Options:"
|
||||
print_option "help -h" "" "This message"
|
||||
|
||||
echo ""
|
||||
print_default_option() { printf " --%-20s %-24s %s (default: %s)\n" "${1}" "${2}" "${3}" "$(tolower ${4})"; }
|
||||
print_default_option distro "[ubuntu|opensuse]" "OS distribution" "${DISTRO}"
|
||||
print_default_option versions "[VERSION] [VERSION...]" "Ubuntu or OpenSUSE release" "${VERSIONS}"
|
||||
print_default_option rocm-versions "[VERSION] [VERSION...]" "ROCm versions" "${ROCM_VERSIONS}"
|
||||
print_default_option user "[USERNAME]" "DockerHub username" "${USER}"
|
||||
|
||||
echo ""
|
||||
echo "Usage: ${BASH_SOURCE[0]} <OPTIONS> -- <test-release.sh OPTIONS>"
|
||||
echo " e.g:"
|
||||
echo " ${BASH_SOURCE[0]} --distro ubuntu --versions 20.04 --rocm-versions 5.0 5.1 -- --stgz /path/to/stgz/installer"
|
||||
}
|
||||
|
||||
send-error()
|
||||
{
|
||||
echo -e "\nError: ${@}"
|
||||
exit 1
|
||||
}
|
||||
|
||||
verbose-run()
|
||||
{
|
||||
echo -e "\n### Executing \"${@}\"... ###\n"
|
||||
exec "${@}"
|
||||
}
|
||||
|
||||
test-release()
|
||||
{
|
||||
CONTAINER=${1}
|
||||
shift
|
||||
local DOCKER_ARGS=""
|
||||
tty -s && DOCKER_ARGS="-it" || DOCKER_ARGS=""
|
||||
verbose-run docker run ${DOCKER_ARGS} --rm -v ${PWD}:/home/rocprofiler-systems ${CONTAINER} /home/rocprofiler-systems/scripts/test-release.sh ${@}
|
||||
}
|
||||
|
||||
reset-last()
|
||||
{
|
||||
last() { send-error "Unsupported argument :: ${1}"; }
|
||||
}
|
||||
|
||||
reset-last
|
||||
|
||||
: ${USER:=$(whoami)}
|
||||
: ${DISTRO:=ubuntu}
|
||||
: ${VERSIONS:=22.04 20.04}
|
||||
: ${ROCM_VERSIONS:=6.2}
|
||||
|
||||
n=0
|
||||
while [[ $# -gt 0 ]]
|
||||
do
|
||||
case "${1}" in
|
||||
-h|--help)
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
"--distro")
|
||||
shift
|
||||
DISTRO=${1}
|
||||
last() { DISTRO="${DISTRO} ${1}"; }
|
||||
;;
|
||||
"--versions")
|
||||
shift
|
||||
VERSIONS=${1}
|
||||
last() { VERSIONS="${VERSIONS} ${1}"; }
|
||||
;;
|
||||
"--rocm-versions")
|
||||
shift
|
||||
ROCM_VERSIONS=${1}
|
||||
last() { ROCM_VERSIONS="${ROCM_VERSIONS} ${1}"; }
|
||||
;;
|
||||
--user|-u)
|
||||
shift
|
||||
USER=${1}
|
||||
reset-last
|
||||
;;
|
||||
"--")
|
||||
shift
|
||||
SCRIPT_ARGS=${@}
|
||||
break
|
||||
;;
|
||||
*)
|
||||
last ${1}
|
||||
;;
|
||||
esac
|
||||
n=$((${n} + 1))
|
||||
shift
|
||||
done
|
||||
|
||||
CODE_VERSION=$(cat VERSION)
|
||||
|
||||
for VERSION in ${VERSIONS}
|
||||
do
|
||||
TAG=${DISTRO}-${VERSION}
|
||||
for ROCM_VERSION in ${ROCM_VERSIONS}
|
||||
do
|
||||
test-release ${USER}/rocprofiler-systems:release-base-${TAG}-rocm-${ROCM_VERSION} ${SCRIPT_ARGS}
|
||||
done
|
||||
done
|
||||
Referencia en una nueva incidencia
Block a user