cpack workflow for building installers (#35)

* cpack workflow for building installers

- ConfigCPack.cmake update
  - STGZ and DEB + containers + test artifact
  - DEBIAN_FRONTEND + set -v
  - submodule fix
  - actions checkout
- OMNITRACE_ROCM_VERSION + continue-on-error
- Change CPack generators + fix path to DEB
- separate configure, build, and package steps
- use cd instead of pushd
- FindROCmVersion + fix to cpack testing
- use ${ROCM_PATH}/.info/version for ROCm version info
- Tweaks for debian installer
- Packaging fixes
- Use CMAKE_SHARED_LIBRARY_SUFFIX instead of .so
- Split cpack.yml into 4 workflows
- Replace source with export in cpack
- Dyninst boost uses tar.gz instead of zip on Unix

* Fix to common join

* Update VERSION to 1.0.0

[ROCm/rocprofiler-systems commit: 5c4d5c394f]
This commit is contained in:
Jonathan R. Madsen
2022-03-27 22:52:36 -05:00
committed by GitHub
parent 5f08854a3a
commit 4ddb8405ac
14 changed files with 1260 additions and 43 deletions
@@ -54,6 +54,13 @@ parse:
PASS_REGULAR_EXPRESSION: '*'
FAIL_REGULAR_EXPRESSION: '*'
SKIP_REGULAR_EXPRESSION: '*'
rocm_version_message:
flags:
- STATUS
- WARNING
- SEND_ERROR
- FATAL_ERROR
- AUTHOR_WARNING
override_spec: {}
vartags: []
proptags: []
@@ -1,8 +1,7 @@
name: cancel-builds-on-update
on:
workflow_run:
# workflows: ['formatting', 'ubuntu-bionic', 'ubuntu-focal-dyninst-package', 'ubuntu-focal-external-rocm', 'ubuntu-focal-external', 'ubuntu-focal']
workflows: ['formatting', 'ubuntu-focal-external', 'ubuntu-focal-external-rocm']
workflows: ['formatting', 'ubuntu-bionic', 'ubuntu-focal-dyninst-package', 'ubuntu-focal-external-rocm', 'ubuntu-focal-external', 'ubuntu-focal', 'cpack-bionic', 'cpack-bionic-rocm', 'cpack-focal', cpack-focal-rocm']
types: ['requested']
jobs:
@@ -0,0 +1,204 @@
name: cpack-bionic-rocm
on:
push:
branches: [releases/**]
pull_request:
branches: [releases/**]
env:
CMAKE_BUILD_PARALLEL_LEVEL: 2
CORE_CMAKE_ARGS: -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=OFF -DCMAKE_INSTALL_PREFIX=/opt/omnitrace
OMNITRACE_CMAKE_ARGS: -DOMNITRACE_MAX_THREADS=2048 -DOMNITRACE_BUILD_TESTING=OFF -DOMNITRACE_USE_MPI_HEADERS=ON -DOMNITRACE_USE_HIP=ON
TIMEMORY_CMAKE_ARGS: -DTIMEMORY_USE_LIBUNWIND=ON -DTIMEMORY_BUILD_LIBUNWIND=ON -DTIMEMORY_BUILD_PORTABLE=ON
DYNINST_CMAKE_ARGS: -DOMNITRACE_BUILD_DYNINST=ON -DDYNINST_BUILD_TBB=ON -DDYNINST_BUILD_BOOST=ON -DDYNINST_BUILD_ELFUTILS=ON -DDYNINST_BUILD_LIBIBERTY=ON -DDYNINST_USE_OpenMP=ON
DEBIAN_FRONTEND: noninteractive
GIT_DISCOVERY_ACROSS_FILESYSTEM: 1
jobs:
cpack:
runs-on: ubuntu-20.04
container:
image: ubuntu:${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [18.04]
rocm-latest: [5.0]
rocm-version: [4.5, 5.0]
extensions: ["", "all"]
steps:
- name: Patch Git
timeout-minutes: 5
run: |
apt-get update
apt-get install -y software-properties-common
add-apt-repository -y ppa:git-core/ppa
apt-get update
apt-get upgrade -y
apt-get install -y git
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Install System Packages
timeout-minutes: 20
run: |
set -v
apt-get update
apt-get dist-upgrade -y
apt-get install -y build-essential cmake libnuma-dev wget gnupg2 m4 git-core autoconf libtool autotools-dev python3-pip lsb-release libpapi-dev libpfm4-dev libudev-dev libopenmpi-dev openmpi-bin rpm librpm-dev
python3 -m pip install 'cmake==3.18.4'
- name: Install HIP Packages
if: ${{ matrix.rocm-version != matrix.rocm-latest }}
timeout-minutes: 20
run: |
set -v
wget -q -O - https://repo.radeon.com/rocm/rocm.gpg.key | apt-key add -
echo "deb [arch=amd64] https://repo.radeon.com/rocm/apt/${{ matrix.rocm-version }}/ ubuntu main" | tee /etc/apt/sources.list.d/rocm.list
apt-get update
apt-get dist-upgrade -y
apt-get install -y rocm-dev rocm-utils roctracer-dev rocprofiler-dev hip-base hsa-amd-aqlprofile hsa-rocr-dev hsakmt-roct-dev rocm-smi-lib
- name: Install HIP Packages
if: ${{ matrix.rocm-version == matrix.rocm-latest }}
timeout-minutes: 20
run: |
set -v
wget -q -O - https://repo.radeon.com/rocm/rocm.gpg.key | apt-key add -
echo "deb [arch=amd64] https://repo.radeon.com/rocm/apt/debian/ ubuntu main" | tee /etc/apt/sources.list.d/rocm.list
apt-get update
apt-get dist-upgrade -y
apt-get install -y rocm-dev rocm-utils roctracer-dev rocprofiler-dev hip-base hsa-amd-aqlprofile hsa-rocr-dev hsakmt-roct-dev rocm-smi-lib
- name: Configure Env
run: |
export OMNITRACE_VERSION=$(cat VERSION)
export OMNITRACE_DISTRO=$(lsb_release -i | awk '{print $NF}')-$(lsb_release -r | awk '{print $NF}')
echo "OMNITRACE_VERSION=${OMNITRACE_VERSION}" >> $GITHUB_ENV
echo "OMNITRACE_DISTRO=${OMNITRACE_DISTRO}" >> $GITHUB_ENV
echo "COMMON_CMAKE_ARGS=${CORE_CMAKE_ARGS} ${OMNITRACE_CMAKE_ARGS} ${TIMEMORY_CMAKE_ARGS} ${DYNINST_CMAKE_ARGS}" >> $GITHUB_ENV
echo "PACKAGE_BASE_TAG=omnitrace-${OMNITRACE_VERSION}-${OMNITRACE_DISTRO}" >> $GITHUB_ENV
echo "PATH=${HOME}/.local/bin:${PATH}" >> $GITHUB_ENV
- name: Print Env
run: |
env
# HIP without extensions
- name: Configure Package
if: ${{ matrix.extensions == '' }}
timeout-minutes: 10
run: |
set -v
cmake -B build-release ${COMMON_CMAKE_ARGS} .
# HIP with extensions
- name: Configure Package
if: ${{ matrix.extensions == 'all' }}
timeout-minutes: 10
run: |
set -v
cmake -B build-release ${COMMON_CMAKE_ARGS} -DOMNITRACE_USE_PAPI=ON -DOMNITRACE_USE_OMPT=ON .
# Build
- name: Build Package
timeout-minutes: 45
run: |
set -v
cmake --build build-release --target all
# Generate STGZ
- name: Generate STGZ
timeout-minutes: 45
run: |
set -v
cd build-release
cpack -G STGZ
# Generate DEB
- name: Generate DEB
timeout-minutes: 45
run: |
set -v
cd build-release
cpack -G DEB -D CPACK_PACKAGING_INSTALL_PREFIX=/opt/omnitrace
- name: List Files
timeout-minutes: 10
run: |
find . -type f | egrep '\.(sh|deb|rpm)$'
- name: STGZ Artifacts
timeout-minutes: 10
uses: actions/upload-artifact@v2
with:
name: stgz-installers
path: |
build-release/omnitrace-*.sh
- name: DEB Artifacts
timeout-minutes: 10
uses: actions/upload-artifact@v2
with:
name: deb-installers
path: |
build-release/omnitrace_*.deb
# before testing remove any artifacts of the build
- name: Remove Build and Install
timeout-minutes: 10
run: |
mv build-release/omnitrace-*.sh ./
mv build-release/omnitrace_*.deb ./
rm -rf build-release
rm -rf /opt/omnitrace
- name: STGZ Install
timeout-minutes: 10
run: |
set -v
mkdir /opt/omnitrace-stgz
./omnitrace-*.sh --prefix=/opt/omnitrace-stgz --skip-license --exclude-dir
- name: List STGZ Install
timeout-minutes: 10
continue-on-error: true
run: |
find /opt/omnitrace-stgz
- name: Test STGZ Install
timeout-minutes: 10
run: |
set -v
export PATH=/opt/omnitrace-stgz/bin:${PATH}
export LD_LIBRARY_PATH=/opt/omnitrace-stgz/lib:${LD_LIBRARY_PATH}
omnitrace-avail --help
omnitrace --help
omnitrace-critical-trace --help
- name: DEB Install
timeout-minutes: 10
run: |
set -v
dpkg --contents ./omnitrace_*.deb
dpkg -i ./omnitrace_*.deb
- name: List DEB Install
timeout-minutes: 10
continue-on-error: true
run: |
find /opt/omnitrace
- name: Test DEB Install
timeout-minutes: 10
run: |
set -v
export PATH=/opt/omnitrace/bin:${PATH}
export LD_LIBRARY_PATH=/opt/omnitrace/lib:${LD_LIBRARY_PATH}
omnitrace-avail --help
omnitrace --help
omnitrace-critical-trace --help
@@ -0,0 +1,180 @@
name: cpack-bionic
on:
push:
branches: [releases/**]
pull_request:
branches: [releases/**]
env:
CMAKE_BUILD_PARALLEL_LEVEL: 2
CORE_CMAKE_ARGS: -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=OFF -DCMAKE_INSTALL_PREFIX=/opt/omnitrace
OMNITRACE_CMAKE_ARGS: -DOMNITRACE_MAX_THREADS=2048 -DOMNITRACE_BUILD_TESTING=OFF -DOMNITRACE_USE_MPI_HEADERS=ON -DOMNITRACE_USE_HIP=OFF
TIMEMORY_CMAKE_ARGS: -DTIMEMORY_USE_LIBUNWIND=ON -DTIMEMORY_BUILD_LIBUNWIND=ON -DTIMEMORY_BUILD_PORTABLE=ON
DYNINST_CMAKE_ARGS: -DOMNITRACE_BUILD_DYNINST=ON -DDYNINST_BUILD_TBB=ON -DDYNINST_BUILD_BOOST=ON -DDYNINST_BUILD_ELFUTILS=ON -DDYNINST_BUILD_LIBIBERTY=ON
DEBIAN_FRONTEND: noninteractive
GIT_DISCOVERY_ACROSS_FILESYSTEM: 1
jobs:
cpack:
runs-on: ubuntu-20.04
container:
image: ubuntu:${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [18.04]
extensions: ["", "all"]
steps:
- name: Patch Git
timeout-minutes: 5
run: |
apt-get update
apt-get install -y software-properties-common
add-apt-repository -y ppa:git-core/ppa
apt-get update
apt-get upgrade -y
apt-get install -y git
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Install System Packages
timeout-minutes: 20
run: |
set -v
apt-get update
apt-get dist-upgrade -y
apt-get install -y build-essential cmake libnuma-dev wget gnupg2 m4 git-core autoconf libtool autotools-dev python3-pip lsb-release libpapi-dev libpfm4-dev libudev-dev libopenmpi-dev openmpi-bin rpm librpm-dev
python3 -m pip install 'cmake==3.18.4'
- name: Configure Env
run: |
export OMNITRACE_VERSION=$(cat VERSION)
export OMNITRACE_DISTRO=$(lsb_release -i | awk '{print $NF}')-$(lsb_release -r | awk '{print $NF}')
echo "OMNITRACE_VERSION=${OMNITRACE_VERSION}" >> $GITHUB_ENV
echo "OMNITRACE_DISTRO=${OMNITRACE_DISTRO}" >> $GITHUB_ENV
echo "COMMON_CMAKE_ARGS=${CORE_CMAKE_ARGS} ${OMNITRACE_CMAKE_ARGS} ${TIMEMORY_CMAKE_ARGS} ${DYNINST_CMAKE_ARGS}" >> $GITHUB_ENV
echo "PACKAGE_BASE_TAG=omnitrace-${OMNITRACE_VERSION}-${OMNITRACE_DISTRO}" >> $GITHUB_ENV
echo "PATH=${HOME}/.local/bin:${PATH}" >> $GITHUB_ENV
- name: Print Env
run: |
env
# CORE without extensions
- name: Configure Package
if: ${{ matrix.extensions == '' }}
timeout-minutes: 10
run: |
set -v
cmake -B build-release ${COMMON_CMAKE_ARGS} -DDYNINST_USE_OpenMP=OFF .
# CORE with extensions
- name: Configure Package
if: ${{ matrix.extensions == 'all' }}
timeout-minutes: 10
run: |
set -v
cmake -B build-release ${COMMON_CMAKE_ARGS} -DDYNINST_USE_OpenMP=ON -DOMNITRACE_USE_PAPI=ON -DOMNITRACE_USE_OMPT=ON .
# Build
- name: Build Package
timeout-minutes: 45
run: |
set -v
cmake --build build-release --target all
# Generate STGZ
- name: Generate STGZ
timeout-minutes: 45
run: |
set -v
cd build-release
cpack -G STGZ
# Generate DEB
- name: Generate DEB
timeout-minutes: 45
run: |
set -v
cd build-release
cpack -G DEB -D CPACK_PACKAGING_INSTALL_PREFIX=/opt/omnitrace
- name: List Files
timeout-minutes: 10
run: |
find . -type f | egrep '\.(sh|deb|rpm)$'
- name: STGZ Artifacts
timeout-minutes: 10
uses: actions/upload-artifact@v2
with:
name: stgz-installers
path: |
build-release/omnitrace-*.sh
- name: DEB Artifacts
timeout-minutes: 10
uses: actions/upload-artifact@v2
with:
name: deb-installers
path: |
build-release/omnitrace_*.deb
# before testing remove any artifacts of the build
- name: Remove Build and Install
timeout-minutes: 10
run: |
mv build-release/omnitrace-*.sh ./
mv build-release/omnitrace_*.deb ./
rm -rf build-release
rm -rf /opt/omnitrace
- name: STGZ Install
timeout-minutes: 10
run: |
set -v
mkdir /opt/omnitrace-stgz
./omnitrace-*.sh --prefix=/opt/omnitrace-stgz --skip-license --exclude-dir
- name: List STGZ Install
timeout-minutes: 10
continue-on-error: true
run: |
find /opt/omnitrace-stgz
- name: Test STGZ Install
timeout-minutes: 10
run: |
set -v
export PATH=/opt/omnitrace-stgz/bin:${PATH}
export LD_LIBRARY_PATH=/opt/omnitrace-stgz/lib:${LD_LIBRARY_PATH}
omnitrace-avail --help
omnitrace --help
omnitrace-critical-trace --help
- name: DEB Install
timeout-minutes: 10
run: |
set -v
dpkg --contents ./omnitrace_*.deb
dpkg -i ./omnitrace_*.deb
- name: List DEB Install
timeout-minutes: 10
continue-on-error: true
run: |
find /opt/omnitrace
- name: Test DEB Install
timeout-minutes: 10
run: |
set -v
export PATH=/opt/omnitrace/bin:${PATH}
export LD_LIBRARY_PATH=/opt/omnitrace/lib:${LD_LIBRARY_PATH}
omnitrace-avail --help
omnitrace --help
omnitrace-critical-trace --help
@@ -0,0 +1,204 @@
name: cpack-focal-rocm
on:
push:
branches: [releases/**]
pull_request:
branches: [releases/**]
env:
CMAKE_BUILD_PARALLEL_LEVEL: 2
CORE_CMAKE_ARGS: -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=OFF -DCMAKE_INSTALL_PREFIX=/opt/omnitrace
OMNITRACE_CMAKE_ARGS: -DOMNITRACE_MAX_THREADS=2048 -DOMNITRACE_BUILD_TESTING=OFF -DOMNITRACE_USE_MPI_HEADERS=ON -DOMNITRACE_USE_HIP=ON
TIMEMORY_CMAKE_ARGS: -DTIMEMORY_USE_LIBUNWIND=ON -DTIMEMORY_BUILD_LIBUNWIND=ON -DTIMEMORY_BUILD_PORTABLE=ON
DYNINST_CMAKE_ARGS: -DOMNITRACE_BUILD_DYNINST=ON -DDYNINST_BUILD_TBB=ON -DDYNINST_BUILD_BOOST=ON -DDYNINST_BUILD_ELFUTILS=ON -DDYNINST_BUILD_LIBIBERTY=ON -DDYNINST_USE_OpenMP=ON
DEBIAN_FRONTEND: noninteractive
GIT_DISCOVERY_ACROSS_FILESYSTEM: 1
jobs:
cpack:
runs-on: ubuntu-20.04
container:
image: ubuntu:${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [20.04]
rocm-latest: [5.0]
rocm-version: [4.5, 5.0]
extensions: ["", "all"]
steps:
- name: Patch Git
timeout-minutes: 5
run: |
apt-get update
apt-get install -y software-properties-common
add-apt-repository -y ppa:git-core/ppa
apt-get update
apt-get upgrade -y
apt-get install -y git
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Install System Packages
timeout-minutes: 20
run: |
set -v
apt-get update
apt-get dist-upgrade -y
apt-get install -y build-essential cmake libnuma-dev wget gnupg2 m4 git-core autoconf libtool autotools-dev python3-pip lsb-release libpapi-dev libpfm4-dev libudev-dev libopenmpi-dev openmpi-bin rpm librpm-dev
python3 -m pip install 'cmake==3.18.4'
- name: Install HIP Packages
if: ${{ matrix.rocm-version != matrix.rocm-latest }}
timeout-minutes: 20
run: |
set -v
wget -q -O - https://repo.radeon.com/rocm/rocm.gpg.key | apt-key add -
echo "deb [arch=amd64] https://repo.radeon.com/rocm/apt/${{ matrix.rocm-version }}/ ubuntu main" | tee /etc/apt/sources.list.d/rocm.list
apt-get update
apt-get dist-upgrade -y
apt-get install -y rocm-dev rocm-utils roctracer-dev rocprofiler-dev hip-base hsa-amd-aqlprofile hsa-rocr-dev hsakmt-roct-dev rocm-smi-lib
- name: Install HIP Packages
if: ${{ matrix.rocm-version == matrix.rocm-latest }}
timeout-minutes: 20
run: |
set -v
wget -q -O - https://repo.radeon.com/rocm/rocm.gpg.key | apt-key add -
echo "deb [arch=amd64] https://repo.radeon.com/rocm/apt/debian/ ubuntu main" | tee /etc/apt/sources.list.d/rocm.list
apt-get update
apt-get dist-upgrade -y
apt-get install -y rocm-dev rocm-utils roctracer-dev rocprofiler-dev hip-base hsa-amd-aqlprofile hsa-rocr-dev hsakmt-roct-dev rocm-smi-lib
- name: Configure Env
run: |
export OMNITRACE_VERSION=$(cat VERSION)
export OMNITRACE_DISTRO=$(lsb_release -i | awk '{print $NF}')-$(lsb_release -r | awk '{print $NF}')
echo "OMNITRACE_VERSION=${OMNITRACE_VERSION}" >> $GITHUB_ENV
echo "OMNITRACE_DISTRO=${OMNITRACE_DISTRO}" >> $GITHUB_ENV
echo "COMMON_CMAKE_ARGS=${CORE_CMAKE_ARGS} ${OMNITRACE_CMAKE_ARGS} ${TIMEMORY_CMAKE_ARGS} ${DYNINST_CMAKE_ARGS}" >> $GITHUB_ENV
echo "PACKAGE_BASE_TAG=omnitrace-${OMNITRACE_VERSION}-${OMNITRACE_DISTRO}" >> $GITHUB_ENV
echo "PATH=${HOME}/.local/bin:${PATH}" >> $GITHUB_ENV
- name: Print Env
run: |
env
# HIP without extensions
- name: Configure Package
if: ${{ matrix.extensions == '' }}
timeout-minutes: 10
run: |
set -v
cmake -B build-release ${COMMON_CMAKE_ARGS} .
# HIP with extensions
- name: Configure Package
if: ${{ matrix.extensions == 'all' }}
timeout-minutes: 10
run: |
set -v
cmake -B build-release ${COMMON_CMAKE_ARGS} -DOMNITRACE_USE_PAPI=ON -DOMNITRACE_USE_OMPT=ON .
# Build
- name: Build Package
timeout-minutes: 45
run: |
set -v
cmake --build build-release --target all
# Generate STGZ
- name: Generate STGZ
timeout-minutes: 45
run: |
set -v
cd build-release
cpack -G STGZ
# Generate DEB
- name: Generate DEB
timeout-minutes: 45
run: |
set -v
cd build-release
cpack -G DEB -D CPACK_PACKAGING_INSTALL_PREFIX=/opt/omnitrace
- name: List Files
timeout-minutes: 10
run: |
find . -type f | egrep '\.(sh|deb|rpm)$'
- name: STGZ Artifacts
timeout-minutes: 10
uses: actions/upload-artifact@v2
with:
name: stgz-installers
path: |
build-release/omnitrace-*.sh
- name: DEB Artifacts
timeout-minutes: 10
uses: actions/upload-artifact@v2
with:
name: deb-installers
path: |
build-release/omnitrace_*.deb
# before testing remove any artifacts of the build
- name: Remove Build and Install
timeout-minutes: 10
run: |
mv build-release/omnitrace-*.sh ./
mv build-release/omnitrace_*.deb ./
rm -rf build-release
rm -rf /opt/omnitrace
- name: STGZ Install
timeout-minutes: 10
run: |
set -v
mkdir /opt/omnitrace-stgz
./omnitrace-*.sh --prefix=/opt/omnitrace-stgz --skip-license --exclude-dir
- name: List STGZ Install
timeout-minutes: 10
continue-on-error: true
run: |
find /opt/omnitrace-stgz
- name: Test STGZ Install
timeout-minutes: 10
run: |
set -v
export PATH=/opt/omnitrace-stgz/bin:${PATH}
export LD_LIBRARY_PATH=/opt/omnitrace-stgz/lib:${LD_LIBRARY_PATH}
omnitrace-avail --help
omnitrace --help
omnitrace-critical-trace --help
- name: DEB Install
timeout-minutes: 10
run: |
set -v
dpkg --contents ./omnitrace_*.deb
dpkg -i ./omnitrace_*.deb
- name: List DEB Install
timeout-minutes: 10
continue-on-error: true
run: |
find /opt/omnitrace
- name: Test DEB Install
timeout-minutes: 10
run: |
set -v
export PATH=/opt/omnitrace/bin:${PATH}
export LD_LIBRARY_PATH=/opt/omnitrace/lib:${LD_LIBRARY_PATH}
omnitrace-avail --help
omnitrace --help
omnitrace-critical-trace --help
@@ -0,0 +1,180 @@
name: cpack-focal
on:
push:
branches: [releases/**]
pull_request:
branches: [releases/**]
env:
CMAKE_BUILD_PARALLEL_LEVEL: 2
CORE_CMAKE_ARGS: -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=OFF -DCMAKE_INSTALL_PREFIX=/opt/omnitrace
OMNITRACE_CMAKE_ARGS: -DOMNITRACE_MAX_THREADS=2048 -DOMNITRACE_BUILD_TESTING=OFF -DOMNITRACE_USE_MPI_HEADERS=ON -DOMNITRACE_USE_HIP=OFF
TIMEMORY_CMAKE_ARGS: -DTIMEMORY_USE_LIBUNWIND=ON -DTIMEMORY_BUILD_LIBUNWIND=ON -DTIMEMORY_BUILD_PORTABLE=ON
DYNINST_CMAKE_ARGS: -DOMNITRACE_BUILD_DYNINST=ON -DDYNINST_BUILD_TBB=ON -DDYNINST_BUILD_BOOST=ON -DDYNINST_BUILD_ELFUTILS=ON -DDYNINST_BUILD_LIBIBERTY=ON
DEBIAN_FRONTEND: noninteractive
GIT_DISCOVERY_ACROSS_FILESYSTEM: 1
jobs:
cpack:
runs-on: ubuntu-20.04
container:
image: ubuntu:${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [20.04]
extensions: ["", "all"]
steps:
- name: Patch Git
timeout-minutes: 5
run: |
apt-get update
apt-get install -y software-properties-common
add-apt-repository -y ppa:git-core/ppa
apt-get update
apt-get upgrade -y
apt-get install -y git
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Install System Packages
timeout-minutes: 20
run: |
set -v
apt-get update
apt-get dist-upgrade -y
apt-get install -y build-essential cmake libnuma-dev wget gnupg2 m4 git-core autoconf libtool autotools-dev python3-pip lsb-release libpapi-dev libpfm4-dev libudev-dev libopenmpi-dev openmpi-bin rpm librpm-dev
python3 -m pip install 'cmake==3.18.4'
- name: Configure Env
run: |
export OMNITRACE_VERSION=$(cat VERSION)
export OMNITRACE_DISTRO=$(lsb_release -i | awk '{print $NF}')-$(lsb_release -r | awk '{print $NF}')
echo "OMNITRACE_VERSION=${OMNITRACE_VERSION}" >> $GITHUB_ENV
echo "OMNITRACE_DISTRO=${OMNITRACE_DISTRO}" >> $GITHUB_ENV
echo "COMMON_CMAKE_ARGS=${CORE_CMAKE_ARGS} ${OMNITRACE_CMAKE_ARGS} ${TIMEMORY_CMAKE_ARGS} ${DYNINST_CMAKE_ARGS}" >> $GITHUB_ENV
echo "PACKAGE_BASE_TAG=omnitrace-${OMNITRACE_VERSION}-${OMNITRACE_DISTRO}" >> $GITHUB_ENV
echo "PATH=${HOME}/.local/bin:${PATH}" >> $GITHUB_ENV
- name: Print Env
run: |
env
# CORE without extensions
- name: Configure Package
if: ${{ matrix.extensions == '' }}
timeout-minutes: 10
run: |
set -v
cmake -B build-release ${COMMON_CMAKE_ARGS} -DDYNINST_USE_OpenMP=OFF .
# CORE with extensions
- name: Configure Package
if: ${{ matrix.extensions == 'all' }}
timeout-minutes: 10
run: |
set -v
cmake -B build-release ${COMMON_CMAKE_ARGS} -DDYNINST_USE_OpenMP=ON -DOMNITRACE_USE_PAPI=ON -DOMNITRACE_USE_OMPT=ON .
# Build
- name: Build Package
timeout-minutes: 45
run: |
set -v
cmake --build build-release --target all
# Generate STGZ
- name: Generate STGZ
timeout-minutes: 45
run: |
set -v
cd build-release
cpack -G STGZ
# Generate DEB
- name: Generate DEB
timeout-minutes: 45
run: |
set -v
cd build-release
cpack -G DEB -D CPACK_PACKAGING_INSTALL_PREFIX=/opt/omnitrace
- name: List Files
timeout-minutes: 10
run: |
find . -type f | egrep '\.(sh|deb|rpm)$'
- name: STGZ Artifacts
timeout-minutes: 10
uses: actions/upload-artifact@v2
with:
name: stgz-installers
path: |
build-release/omnitrace-*.sh
- name: DEB Artifacts
timeout-minutes: 10
uses: actions/upload-artifact@v2
with:
name: deb-installers
path: |
build-release/omnitrace_*.deb
# before testing remove any artifacts of the build
- name: Remove Build and Install
timeout-minutes: 10
run: |
mv build-release/omnitrace-*.sh ./
mv build-release/omnitrace_*.deb ./
rm -rf build-release
rm -rf /opt/omnitrace
- name: STGZ Install
timeout-minutes: 10
run: |
set -v
mkdir /opt/omnitrace-stgz
./omnitrace-*.sh --prefix=/opt/omnitrace-stgz --skip-license --exclude-dir
- name: List STGZ Install
timeout-minutes: 10
continue-on-error: true
run: |
find /opt/omnitrace-stgz
- name: Test STGZ Install
timeout-minutes: 10
run: |
set -v
export PATH=/opt/omnitrace-stgz/bin:${PATH}
export LD_LIBRARY_PATH=/opt/omnitrace-stgz/lib:${LD_LIBRARY_PATH}
omnitrace-avail --help
omnitrace --help
omnitrace-critical-trace --help
- name: DEB Install
timeout-minutes: 10
run: |
set -v
dpkg --contents ./omnitrace_*.deb
dpkg -i ./omnitrace_*.deb
- name: List DEB Install
timeout-minutes: 10
continue-on-error: true
run: |
find /opt/omnitrace
- name: Test DEB Install
timeout-minutes: 10
run: |
set -v
export PATH=/opt/omnitrace/bin:${PATH}
export LD_LIBRARY_PATH=/opt/omnitrace/lib:${LD_LIBRARY_PATH}
omnitrace-avail --help
omnitrace --help
omnitrace-critical-trace --help
@@ -142,19 +142,6 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
include(Formatting) # format target
include(Packages) # finds third-party libraries
if(OMNITRACE_USE_HIP OR OMNITRACE_USE_ROCTRACER)
find_package(HIP QUIET)
if(HIP_VERSION_MAJOR GREATER_EQUAL 4 AND HIP_VERSION_MINOR GREATER 3)
set(roctracer_kfdwrapper_LIBRARY)
endif()
omnitrace_add_feature(HIP_VERSION "HIP version")
else()
set(HIP_VERSION "0.0.0")
set(HIP_VERSION_MAJOR 0)
set(HIP_VERSION_MINOR 0)
set(HIP_VERSION_PATCH 0)
endif()
omnitrace_activate_clang_tidy()
# custom visibility settings
+1 -1
View File
@@ -1 +1 @@
0.1.0
1.0.0
@@ -1,4 +1,28 @@
# Add packaging directives for timemory
if(DYNINST_BUILD_ELFUTILS AND DYNINST_ELFUTILS_DOWNLOAD_VERSION)
foreach(_LIB dw elf)
install(
FILES
${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/dyninst-tpls/lib/lib${_LIB}${CMAKE_SHARED_LIBRARY_SUFFIX}
${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/dyninst-tpls/lib/lib${_LIB}${CMAKE_SHARED_LIBRARY_SUFFIX}.1
${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/dyninst-tpls/lib/lib${_LIB}-${DYNINST_ELFUTILS_DOWNLOAD_VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX}
DESTINATION ${CMAKE_INSTALL_LIBDIR}/dyninst-tpls/lib
OPTIONAL)
endforeach()
endif()
if(EXISTS /etc/lsb-release AND NOT IS_DIRECTORY /etc/lsb-release)
file(READ /etc/lsb-release _LSB_RELEASE)
if(_LSB_RELEASE)
string(REGEX REPLACE "DISTRIB_ID=(.*)\nDISTRIB_RELEASE=(.*)\nDISTRIB_CODENAME=.*"
"\\1-\\2" _SYSTEM_NAME "${_LSB_RELEASE}")
endif()
endif()
if(NOT _SYSTEM_NAME)
set(_SYSTEM_NAME "${CMAKE_SYSTEM_NAME}")
endif()
# Add packaging directives
set(CPACK_PACKAGE_NAME ${PROJECT_NAME})
set(CPACK_PACKAGE_VENDOR "Advanced Micro Devices, Inc.")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY
@@ -8,53 +32,162 @@ set(CPACK_PACKAGE_VERSION_MINOR "${PROJECT_VERSION_MINOR}")
set(CPACK_PACKAGE_VERSION_PATCH "${PROJECT_VERSION_PATCH}")
set(CPACK_PACKAGE_CONTACT "jonathan.madsen@amd.com")
set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE")
set(OMNITRACE_CPACK_SYSTEM_NAME
"${_SYSTEM_NAME}"
CACHE STRING "System name, e.g. Linux or Ubuntu-18.04")
set(OMNITRACE_CPACK_PACKAGE_SUFFIX "")
if(DYNINST_BUILD_BOOST
OR DYNINST_BUILD_TBB
OR DYNINST_BUILD_ELFUTILS
OR DYNINST_BUILD_LIBIBERTY)
set(CPACK_INSTALLED_DIRECTORIES
"${CMAKE_INSTALL_PREFIX}/lib/dyninst-tpls/include" "lib/dyninst-tpls/include"
"${CMAKE_INSTALL_PREFIX}/lib/dyninst-tpls/lib" "lib/dyninst-tpls/lib")
if(OMNITRACE_USE_HIP
OR OMNITRACE_USE_ROCTRACER
OR OMNITRACE_USE_ROCM_SMI)
set(OMNITRACE_CPACK_PACKAGE_SUFFIX
"${OMNITRACE_CPACK_PACKAGE_SUFFIX}-ROCm-${ROCmVersion_NUMERIC_VERSION}")
endif()
if(DYNINST_BUILD_ELFUTILS)
list(APPEND CPACK_INSTALLED_DIRECTORIES
"${CMAKE_INSTALL_PREFIX}/lib/dyninst-tpls/bin" "lib/dyninst-tpls/bin"
"${CMAKE_INSTALL_PREFIX}/lib/dyninst-tpls/share" "lib/dyninst-tpls/share")
if(OMNITRACE_USE_PAPI)
set(OMNITRACE_CPACK_PACKAGE_SUFFIX "${OMNITRACE_CPACK_PACKAGE_SUFFIX}-PAPI")
endif()
if(OMNITRACE_USE_OMPT)
set(OMNITRACE_CPACK_PACKAGE_SUFFIX "${OMNITRACE_CPACK_PACKAGE_SUFFIX}-OMPT")
endif()
if(OMNITRACE_USE_MPI)
set(VALID_MPI_IMPLS "mpich" "openmpi")
if("${MPI_C_COMPILER_INCLUDE_DIRS}" MATCHES "openmpi")
set(OMNITRACE_MPI_IMPL "openmpi")
elseif("${MPI_C_COMPILER_INCLUDE_DIRS}" MATCHES "mpich")
set(OMNITRACE_MPI_IMPL "mpich")
else()
message(
WARNING
"MPI implementation could not be determined. Please set OMNITRACE_MPI_IMPL to one of the following for CPack: ${VALID_MPI_IMPLS}"
)
endif()
if(OMNITRACE_MPI_IMPL AND NOT "${OMNITRACE_MPI_IMPL}" IN_LIST VALID_MPI_IMPLS)
message(
SEND_ERROR
"Invalid OMNITRACE_MPI_IMPL (${OMNITRACE_MPI_IMPL}). Should be one of: ${VALID_MPI_IMPLS}"
)
else()
omnitrace_add_feature(OMNITRACE_MPI_IMPL
"MPI implementation for CPack DEBIAN depends")
endif()
if("${OMNITRACE_MPI_IMPL}" STREQUAL "openmpi")
set(OMNITRACE_MPI_IMPL_UPPER "OpenMPI")
elseif("${OMNITRACE_MPI_IMPL}" STREQUAL "mpich")
set(OMNITRACE_MPI_IMPL_UPPER "MPICH")
endif()
set(OMNITRACE_CPACK_PACKAGE_SUFFIX
"${OMNITRACE_CPACK_PACKAGE_SUFFIX}-${OMNITRACE_MPI_IMPL_UPPER}")
endif()
set(CPACK_PACKAGE_FILE_NAME
"${CPACK_PACKAGE_NAME}-${OMNITRACE_VERSION}-${OMNITRACE_CPACK_SYSTEM_NAME}${OMNITRACE_CPACK_PACKAGE_SUFFIX}"
)
if(DEFINED ENV{CPACK_PACKAGE_FILE_NAME})
set(CPACK_PACKAGE_FILE_NAME $ENV{CPACK_PACKAGE_FILE_NAME})
endif()
set(OMNITRACE_PACKAGE_FILE_NAME
${CPACK_PACKAGE_NAME}-${OMNITRACE_VERSION}-${OMNITRACE_CPACK_SYSTEM_NAME}${OMNITRACE_CPACK_PACKAGE_SUFFIX}
)
omnitrace_add_feature(OMNITRACE_PACKAGE_FILE_NAME "CPack filename")
# -------------------------------------------------------------------------------------- #
#
# Debian package specific variables
#
# -------------------------------------------------------------------------------------- #
set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://github.com/AARInternal/omnitrace")
set(CPACK_DEBIAN_PACKAGE_RELEASE "${CMAKE_SYSTEM_NAME}${OMNITRACE_CPACK_PACKAGE_SUFFIX}")
string(REGEX REPLACE "([a-zA-Z])-([0-9])" "\\1\\2" CPACK_DEBIAN_PACKAGE_RELEASE
"${CPACK_DEBIAN_PACKAGE_RELEASE}")
string(REPLACE "-" "~" CPACK_DEBIAN_PACKAGE_RELEASE "${CPACK_DEBIAN_PACKAGE_RELEASE}")
if(DEFINED ENV{CPACK_DEBIAN_PACKAGE_RELEASE})
set(CPACK_DEBIAN_PACKAGE_RELEASE $ENV{CPACK_DEBIAN_PACKAGE_RELEASE})
else()
set(CPACK_DEBIAN_PACKAGE_RELEASE "local")
endif()
set(_DEBIAN_PACKAGE_DEPENDS "")
if(DYNINST_USE_OpenMP)
list(APPEND _DEBIAN_PACKAGE_DEPENDS libgomp1)
endif()
if(TIMEMORY_USE_PAPI)
list(APPEND _DEBIAN_PACKAGE_DEPENDS libpapi-dev libpfm4)
endif()
if(NOT OMNITRACE_BUILD_DYNINST)
if(NOT DYNINST_BUILD_BOOST)
foreach(_BOOST_COMPONENT atomic system thread date-time filesystem)
list(APPEND _DEBIAN_PACKAGE_DEPENDS
"libboost-${_BOOST_COMPONENT}-dev (>= 1.67.0)")
endforeach()
endif()
if(NOT DYNINST_BUILD_TBB)
list(APPEND _DEBIAN_PACKAGE_DEPENDS "libtbb-dev (>= 2018.6)")
endif()
if(NOT DYNINST_BUILD_LIBIBERTY)
list(APPEND _DEBIAN_PACKAGE_DEPENDS "libiberty-dev (>= 20170913)")
endif()
endif()
if(ROCmVersion_FOUND)
set(_ROCTRACER_SUFFIX " (>= 1.0.0.${ROCmVersion_NUMERIC_VERSION})")
set(_ROCM_SMI_SUFFIX
" (>= ${ROCmVersion_MAJOR_VERSION}.0.0.${ROCmVersion_NUMERIC_VERSION})")
endif()
if(OMNITRACE_USE_ROCM_SMI)
list(APPEND _DEBIAN_PACKAGE_DEPENDS "rocm-smi-lib${_ROCM_SMI_SUFFIX}")
endif()
if(OMNITRACE_USE_ROCTRACER)
list(APPEND _DEBIAN_PACKAGE_DEPENDS "roctracer-dev${_ROCTRACER_SUFFIX}")
endif()
if(OMNITRACE_USE_MPI)
if("${OMNITRACE_MPI_IMPL}" STREQUAL "openmpi")
list(APPEND _DEBIAN_PACKAGE_DEPENDS "libopenmpi-dev")
elseif("${OMNITRACE_MPI_IMPL}" STREQUAL "mpich")
list(APPEND _DEBIAN_PACKAGE_DEPENDS "libmpich-dev")
endif()
endif()
string(REPLACE ";" ", " _DEBIAN_PACKAGE_DEPENDS "${_DEBIAN_PACKAGE_DEPENDS}")
set(CPACK_DEBIAN_PACKAGE_DEPENDS
"${_DEBIAN_PACKAGE_DEPENDS}"
CACHE STRING "Debian package dependencies")
omnitrace_add_feature(CPACK_DEBIAN_PACKAGE_DEPENDS "Debian package dependencies")
set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT")
# -------------------------------------------------------------------------------------- #
#
# RPM package specific variables
#
# -------------------------------------------------------------------------------------- #
if(DEFINED CPACK_PACKAGING_INSTALL_PREFIX)
set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION "${CPACK_PACKAGING_INSTALL_PREFIX}")
endif()
set(CPACK_RPM_PACKAGE_RELEASE "${CMAKE_SYSTEM_NAME}${OMNITRACE_CPACK_PACKAGE_SUFFIX}")
string(REGEX REPLACE "([a-zA-Z])-([0-9])" "\\1\\2" CPACK_RPM_PACKAGE_RELEASE
"${CPACK_RPM_PACKAGE_RELEASE}")
string(REPLACE "-" "~" CPACK_RPM_PACKAGE_RELEASE "${CPACK_RPM_PACKAGE_RELEASE}")
if(DEFINED ENV{CPACK_RPM_PACKAGE_RELEASE})
set(CPACK_RPM_PACKAGE_RELEASE $ENV{CPACK_RPM_PACKAGE_RELEASE})
else()
set(CPACK_RPM_PACKAGE_RELEASE "local")
endif()
# Get rpm distro
if(CPACK_RPM_PACKAGE_RELEASE)
set(CPACK_RPM_PACKAGE_RELEASE_DIST ON)
endif()
set(CPACK_RPM_FILE_NAME "RPM-DEFAULT")
# -------------------------------------------------------------------------------------- #
#
# Prepare final version for the CPACK use
#
# -------------------------------------------------------------------------------------- #
set(CPACK_PACKAGE_VERSION
"${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}"
)
# Set the names now using CPACK utility
set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT")
set(CPACK_RPM_FILE_NAME "RPM-DEFAULT")
include(CPack)
@@ -0,0 +1,294 @@
#[=======================================================================[.rst:
FindROCmVersion
---------------
Search the <ROCM_PATH>/.info/version* files to determine the version of ROCm
Use this module by invoking find_package with the form::
find_package(ROCmVersion
[version] [EXACT]
[REQUIRED])
This module finds the version info for ROCm. The cached variables are::
ROCmVersion_FOUND - Whether the ROCm versioning was found
ROCmVersion_FULL_VERSION - The exact string from `<ROCM_PATH>/.info/version` or similar
ROCmVersion_MAJOR_VERSION - Major version, e.g. 4 in 4.5.2.100-40502
ROCmVersion_MINOR_VERSION - Minor version, e.g. 5 in 4.5.2.100-40502
ROCmVersion_PATCH_VERSION - Patch version, e.g. 2 in 4.5.2.100-40502
ROCmVersion_TWEAK_VERSION - Tweak version, e.g. 100 in 4.5.2.100-40502
ROCmVersion_REVISION_VERSION - Revision version, e.g. 40502 in 4.5.2.100-40502.
ROCmVersion_EPOCH_VERSION - See deb-version for a description of epochs. Epochs are used when versioning system change
ROCmVersion_CANONICAL_VERSION - `[<EPOCH>:]<MAJOR>.<MINOR>.<MINOR>[.<TWEAK>][-<REVISION>]`
ROCmVersion_NUMERIC_VERSION - e.g. `10000*<MAJOR> + 100*<MINOR> + <PATCH>`, e.g. 40502 for ROCm 4.5.2
ROCmVersion_TRIPLE_VERSION - e.g. `<MAJOR>.<MINOR>.<PATCH>`, e.g. 4.5.2 for ROCm 4.5.2
These variables are relevant for the find procedure::
ROCmVersion_DEBUG - Print info about processing
ROCmVersion_VERSION_FILE - `<FILE>` to read from in `<ROCM_PATH>/.info/<FILE>`, e.g. `version`, `version-dev`, `version-hip-libraries`, etc.
It may also be a full path
ROCmVersion_DIR - Root location for <ROCM_PATH>
#]=======================================================================]
# scope this to a function to avoid leaking local variables
function(ROCM_VERSION_PARSE_VERSION_FILES)
function(ROCM_VERSION_MESSAGE _TYPE)
if(ROCmVersion_DEBUG)
message(${_TYPE} "[ROCmVersion] ${ARGN}")
endif()
endfunction()
# the list of variables set by module. when one of these changes, we need to unset the
# cache variables after it
foreach(
_V
EPOCH
MAJOR
MINOR
PATCH
TWEAK
REVISION
TRIPLE
NUMERIC
FULL
CANONICAL)
list(APPEND _ALL_VARIABLES ROCmVersion_${_V}_VERSION)
endforeach()
set(_REMAIN_VARIABLES ${_ALL_VARIABLES})
# this macro watches for changes in the variables and unsets the remaining cache
# varaible when they change
function(ROCM_VERSION_WATCH_FOR_CHANGE _var)
set(_rocm_version_watch_var_name ROCmVersion_WATCH_VALUE_${_var})
if(DEFINED ${_rocm_version_watch_var_name})
if("${${_var}}" STREQUAL "${${_rocm_version_watch_var_name}}")
if(NOT "${${_var}}" STREQUAL "")
rocm_version_message(STATUS "${_var} :: ${${_var}}")
endif()
list(REMOVE_ITEM _REMAIN_VARIABLES ${_var})
set(_REMAIN_VARIABLES
"${_REMAIN_VARIABLES}"
PARENT_SCOPE)
return()
else()
rocm_version_message(
STATUS
"${_var} changed :: ${${_rocm_version_watch_var_name}} --> ${${_var}}"
)
foreach(_V ${_REMAIN_VARIABLES})
rocm_version_message(
STATUS "${_var} changed :: Unsetting cache variable ${_V}...")
unset(${_V} CACHE)
endforeach()
endif()
else()
if(NOT "${${_var}}" STREQUAL "")
rocm_version_message(STATUS "${_var} :: ${${_var}}")
endif()
endif()
# store the value for the next run
set(${_rocm_version_watch_var_name}
"${${_var}}"
CACHE INTERNAL "Last value of ${_var}" FORCE)
endfunction()
# read a .info/version* file and propagate the variables to the calling scope
function(ROCM_VERSION_READ_FILE _FILE _VAR_PREFIX)
file(READ "${_FILE}" FULL_VERSION_STRING LIMIT_COUNT 1)
# remove any line endings
string(REGEX REPLACE "(\n|\r)" "" FULL_VERSION_STRING "${FULL_VERSION_STRING}")
# store the full version so it can be set later
set(FULL_VERSION "${FULL_VERSION_STRING}")
# get number and remove from full version string
string(REGEX REPLACE "([0-9]+)\:(.*)" "\\1" EPOCH_VERSION
"${FULL_VERSION_STRING}")
string(REGEX REPLACE "([0-9]+)\:(.*)" "\\2" FULL_VERSION_STRING
"${FULL_VERSION_STRING}")
if(EPOCH_VERSION STREQUAL FULL_VERSION)
set(EPOCH_VERSION)
endif()
# get number and remove from full version string
string(REGEX REPLACE "([0-9]+)(.*)" "\\1" MAJOR_VERSION "${FULL_VERSION_STRING}")
string(REGEX REPLACE "([0-9]+)(.*)" "\\2" FULL_VERSION_STRING
"${FULL_VERSION_STRING}")
# get number and remove from full version string
string(REGEX REPLACE "\.([0-9]+)(.*)" "\\1" MINOR_VERSION
"${FULL_VERSION_STRING}")
string(REGEX REPLACE "\.([0-9]+)(.*)" "\\2" FULL_VERSION_STRING
"${FULL_VERSION_STRING}")
# get number and remove from full version string
string(REGEX REPLACE "\.([0-9]+)(.*)" "\\1" PATCH_VERSION
"${FULL_VERSION_STRING}")
string(REGEX REPLACE "\.([0-9]+)(.*)" "\\2" FULL_VERSION_STRING
"${FULL_VERSION_STRING}")
# get number and remove from full version string
string(REGEX REPLACE "\.([0-9]+)(.*)" "\\1" TWEAK_VERSION
"${FULL_VERSION_STRING}")
string(REGEX REPLACE "\.([0-9]+)(.*)" "\\2" FULL_VERSION_STRING
"${FULL_VERSION_STRING}")
# get number
string(REGEX REPLACE "-([0-9A-Za-z+~]+)" "\\1" REVISION_VERSION
"${FULL_VERSION_STRING}")
set(CANONICAL_VERSION)
set(_MAJOR_SEP ":")
set(_MINOR_SEP ".")
set(_PATCH_SEP ".")
set(_TWEAK_SEP ".")
set(_REVISION_SEP "-")
foreach(_V EPOCH MAJOR MINOR PATCH TWEAK REVISION)
if(${_V}_VERSION)
set(CANONICAL_VERSION "${CANONICAL_VERSION}${_${_V}_SEP}${${_V}_VERSION}")
else()
set(CANONICAL_VERSION "${CANONICAL_VERSION}${_${_V}_SEP}0")
endif()
endforeach()
set(_MAJOR_SEP "")
foreach(_V MAJOR MINOR PATCH)
if(${_V}_VERSION)
set(TRIPLE_VERSION "${TRIPLE_VERSION}${_${_V}_SEP}${${_V}_VERSION}")
else()
set(TRIPLE_VERSION "${TRIPLE_VERSION}${_${_V}_SEP}0")
endif()
endforeach()
math(
EXPR
NUMERIC_VERSION
"(10000 * (${MAJOR_VERSION}+0)) + (100 * (${MINOR_VERSION}+0)) + (${PATCH_VERSION}+0)"
)
# propagate to parent scopes
foreach(
_V
EPOCH
MAJOR
MINOR
PATCH
TWEAK
REVISION
TRIPLE
NUMERIC
CANONICAL
FULL)
set(${_VAR_PREFIX}_${_V}_VERSION
${${_V}_VERSION}
PARENT_SCOPE)
endforeach()
endfunction()
# search for HIP to set ROCM_PATH
if(NOT hip_FOUND)
find_package(hip)
endif()
function(COMPUTE_ROCM_VERSION_DIR)
if(EXISTS "${ROCmVersion_VERSION_FILE}" AND IS_ABSOLUTE
"${ROCmVersion_VERSION_FILE}")
get_filename_component(_VERSION_DIR "${ROCmVersion_VERSION_FILE}" PATH)
get_filename_component(_VERSION_DIR "${_VERSION_DIR}/.." ABSOLUTE)
set(ROCmVersion_DIR
"${_VERSION_DIR}"
CACHE PATH "Root path to ROCm's .info/${ROCmVersion_VERSION_FILE}"
${ARGN})
rocm_version_watch_for_change(ROCmVersion_DIR)
endif()
endfunction()
if(ROCmVersion_VERSION_FILE)
get_filename_component(_VERSION_FILE "${ROCmVersion_VERSION_FILE}" NAME)
set(_VERSION_FILES ${_VERSION_FILE})
compute_rocm_version_dir(FORCE)
else()
set(_VERSION_FILES version version-dev version-hip-libraries version-hiprt
version-hiprt-devel version-hip-sdk version-libs version-utils)
rocm_version_message(STATUS "ROCmVersion version files: ${_VERSION_FILES}")
endif()
# convert env to cache if not defined
foreach(_PATH ROCmVersion_DIR ROCmVersion_ROOT ROCmVersion_ROOT_DIR ROCM_PATH)
if(NOT DEFINED ${_PATH} AND DEFINED ENV{${_PATH}})
set(${_PATH}
"$ENV{${_PATH}}"
CACHE PATH "Search path for ROCm version for ROCmVersion")
endif()
endforeach()
if(ROCmVersion_DIR)
set(_PATHS ${ROCmVersion_DIR})
else()
set(_PATHS ${ROCmVersion_DIR} ${ROCmVersion_ROOT} ${ROCmVersion_ROOT_DIR}
${ROCM_PATH} $ENV{CMAKE_PREFIX_PATH} ${CMAKE_PREFIX_PATH} /opt/rocm)
rocm_version_message(STATUS "ROCmVersion search paths: ${_PATHS}")
endif()
string(REPLACE ":" ";" _PATHS "${_PATHS}")
foreach(_PATH ${_PATHS})
foreach(_FILE ${_VERSION_FILES})
set(_F ${_PATH}/.info/${_FILE})
if(EXISTS ${_F})
set(ROCmVersion_VERSION_FILE
"${_F}"
CACHE FILEPATH "File with versioning info")
rocm_version_watch_for_change(ROCmVersion_VERSION_FILE)
compute_rocm_version_dir()
else()
rocm_version_message(AUTHOR_WARNING "File does not exist: ${_F}")
endif()
endforeach()
endforeach()
if(EXISTS "${ROCmVersion_VERSION_FILE}")
set(_F "${ROCmVersion_VERSION_FILE}")
rocm_version_message(STATUS "Reading ${_F}...")
get_filename_component(_B "${_F}" NAME)
string(REPLACE "." "_" _B "${_B}")
string(REPLACE "-" "_" _B "${_B}")
rocm_version_read_file(${_F} ${_B})
foreach(
_V
EPOCH
MAJOR
MINOR
PATCH
TWEAK
REVISION
TRIPLE
NUMERIC
FULL
CANONICAL)
set(_CACHE_VAR ROCmVersion_${_V}_VERSION)
set(_LOCAL_VAR ${_B}_${_V}_VERSION)
set(ROCmVersion_${_V}_VERSION
"${${_LOCAL_VAR}}"
CACHE STRING "ROCm ${_V} version")
rocm_version_watch_for_change(${_CACHE_VAR})
endforeach()
endif()
endfunction()
# execute
rocm_version_parse_version_files()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(
ROCmVersion
VERSION_VAR ROCmVersion_FULL_VERSION
REQUIRED_VARS ROCmVersion_FULL_VERSION ROCmVersion_TRIPLE_VERSION ROCmVersion_DIR
ROCmVersion_VERSION_FILE)
# don't add major/minor/patch/etc. version variables to required vars because they might
# be zero, which will cause CMake to evaluate it as not set
@@ -97,6 +97,33 @@ if(OMNITRACE_USE_ROCM_SMI)
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:${rocm-smi_LIBRARY_DIRS}")
endif()
# ----------------------------------------------------------------------------------------#
#
# hip version
#
# ----------------------------------------------------------------------------------------#
if(OMNITRACE_USE_HIP
OR OMNITRACE_USE_ROCTRACER
OR OMNITRACE_USE_ROCM_SMI)
find_package(ROCmVersion REQUIRED)
set(OMNITRACE_ROCM_VERSION ${ROCmVersion_FULL_VERSION})
set(OMNITRACE_HIP_VERSION_MAJOR ${ROCmVersion_MAJOR_VERSION})
set(OMNITRACE_HIP_VERSION_MINOR ${ROCmVersion_MINOR_VERSION})
set(OMNITRACE_HIP_VERSION_PATCH ${ROCmVersion_PATCH_VERSION})
set(OMNITRACE_HIP_VERSION ${ROCmVersion_TRIPLE_VERSION})
if(OMNITRACE_HIP_VERSION_MAJOR GREATER_EQUAL 4 AND OMNITRACE_HIP_VERSION_MINOR
GREATER 3)
set(roctracer_kfdwrapper_LIBRARY)
endif()
omnitrace_add_feature(OMNITRACE_ROCM_VERSION "ROCm version used by omnitrace")
else()
set(OMNITRACE_HIP_VERSION "0.0.0")
set(OMNITRACE_HIP_VERSION_MAJOR 0)
set(OMNITRACE_HIP_VERSION_MINOR 0)
set(OMNITRACE_HIP_VERSION_PATCH 0)
endif()
# ----------------------------------------------------------------------------------------#
#
# MPI
Submodule projects/rocprofiler-systems/external/dyninst updated: 82b10fdcf5...1cb91f1eea
@@ -41,13 +41,15 @@ join(DelimT&& _delim, Args&&... _args)
{
std::stringstream _ss{};
OMNITRACE_FOLD_EXPRESSION(_ss << _delim << _args);
auto _ret = _ss.str();
if constexpr(std::is_same<DelimT, char>::value)
{
return _ss.str().substr(1);
return (_ret.length() > 1) ? _ret.substr(1) : std::string{};
}
else
{
return _ss.str().substr(std::string{ _delim }.length());
auto&& _len = std::string{ _delim }.length();
return (_ret.length() > _len) ? _ret.substr(_len) : std::string{};
}
}
} // namespace
@@ -23,10 +23,10 @@
#pragma once
// clang-format off
#define OMNITRACE_HIP_VERSION_STRING "@HIP_VERSION@"
#define OMNITRACE_HIP_VERSION_MAJOR @HIP_VERSION_MAJOR@
#define OMNITRACE_HIP_VERSION_MINOR @HIP_VERSION_MINOR@
#define OMNITRACE_HIP_VERSION_PATCH @HIP_VERSION_PATCH@
#define OMNITRACE_HIP_VERSION_STRING "@OMNITRACE_HIP_VERSION@"
#define OMNITRACE_HIP_VERSION_MAJOR @OMNITRACE_HIP_VERSION_MAJOR@
#define OMNITRACE_HIP_VERSION_MINOR @OMNITRACE_HIP_VERSION_MINOR@
#define OMNITRACE_HIP_VERSION_PATCH @OMNITRACE_HIP_VERSION_PATCH@
#if defined(OMNITRACE_USE_ROCTRACER)
# define OMNITRACE_ROCTRACER_LIBKFDWRAPPER "@roctracer_kfdwrapper_LIBRARY@"