Skip to content

Build Consumers

Build Consumers #10

Workflow file for this run

name: Build Consumers
on:
schedule:
- cron: '0 3 * * 1' # Monday at 3AM
workflow_dispatch:
jobs:
get-oses:
runs-on: ubuntu-latest
outputs:
latest: ${{ steps.all.outputs.latest }}
steps:
- name: Checkout
uses: actions/checkout@v4
- id: all
uses: ./.github/actions/os-versions
hpctoolkit:
runs-on: ubuntu-latest
needs: get-oses
strategy:
fail-fast: false
matrix:
os: ${{ fromJson(needs.get-oses.outputs.latest) }}
permissions:
packages: read
container:
image: ghcr.io/dyninst/amd64/${{ matrix.os }}:latest
credentials:
username: ${{ github.actor }}
password: ${{ secrets.github_token }}
name: HPCToolkit (${{ matrix.os }})
steps:
- name: Checkout Dyninst
uses: actions/checkout@v4
with:
path: "src" # relative to ${GITHUB_WORKSPACE}
- name: Install dependencies (Ubuntu)
if: ${{ startsWith(matrix.os, 'ubuntu') }}
shell: bash
run: |
set -ex
apt update -qq
apt install -y -qq gfortran m4 autoconf python3 python3-venv meson ninja-build pkgconf curl libgtest-dev libgmock-dev
- name: Install dependencies (Fedora)
if: ${{ startsWith(matrix.os, 'fedora') }}
shell: bash
run: |
set -ex
yum install -y gcc-gfortran m4 autoconf python3 python3-devel meson ninja-build pkgconf curl gtest-devel gmock-devel patch which
- name: Install spack
shell: bash
run: |
set -ex
git clone --depth=1 --branch=develop https://github.com/spack/spack
spack/bin/spack compiler find
- name: Install spack externals
shell: bash
run: |
set -ex
spack/bin/spack external find --not-buildable cmake git m4 gmake meson ninja pkgconf curl python curl cmake
add="${GITHUB_WORKSPACE}/src/.github/scripts/add_spack_package.py"
python3 ${add} $HOME/.spack --lib dyninst --version master --location /dyninst/install
- name: Build
shell: bash
run: |
set -ex
spack/bin/spack install -j2 hpctoolkit@develop~viewer~papi ^intel-tbb ^dyninst@master
must:
runs-on: ubuntu-latest
needs: get-oses
strategy:
fail-fast: false
matrix:
os: ${{ fromJson(needs.get-oses.outputs.latest) }}
permissions:
packages: read
container:
image: ghcr.io/dyninst/amd64/${{ matrix.os }}:latest
credentials:
username: ${{ github.actor }}
password: ${{ secrets.github_token }}
name: must (${{ matrix.os }})
steps:
- name: Install dependencies (Ubuntu)
if: ${{ startsWith(matrix.os, 'ubuntu') }}
shell: bash
run: |
set -ex
apt update -qq
apt install -y -qq openmpi-bin libopenmpi-dev gfortran libxml2-dev wget python3
- name: Install dependencies (Fedora)
if: ${{ startsWith(matrix.os, 'fedora') }}
shell: bash
run: |
set -ex
yum install -y openmpi openmpi-devel gcc-gfortran libxml2-devel wget python3
- name: Build
shell: bash
run: |
set -ex
version="1.9.2"
mkdir must; cd must # can't build in / because must does unusual checks
wget https://hpc.rwth-aachen.de/must/files/MUST-v${version}.tar.gz
tar -zxf MUST-v${version}.tar.gz --strip-components=1
if [[ "${{ matrix.os }}" =~ "fedora" ]]; then
source /etc/profile.d/modules.sh
module load mpi
fi
if [[ ! -d /dyninst/install/lib ]]; then
ln -s /dyninst/install/lib* /dyninst/install/lib
fi
opts+="-DENABLE_TSAN=OFF "
opts+="-DUSE_BACKWARD=OFF "
opts+="-DUSE_CALLPATH=ON "
opts+="-DSTACKWALKER_INSTALL_PREFIX=/dyninst/install "
opts+="-DCMAKE_BUILD_TYPE=RelWithDebInfo "
cmake . -B build ${opts}
cmake --build build --parallel 2
systemtap:
runs-on: ubuntu-latest
needs: get-oses
strategy:
fail-fast: false
matrix:
os: ${{ fromJson(needs.get-oses.outputs.latest) }}
permissions:
packages: read
container:
image: ghcr.io/dyninst/amd64/${{ matrix.os }}:latest
credentials:
username: ${{ github.actor }}
password: ${{ secrets.github_token }}
name: systemtap (${{ matrix.os }})
steps:
- name: Install dependencies
if: ${{ startsWith(matrix.os, 'ubuntu') }}
shell: bash
run: |
set -ex
apt -qq update
apt -qq install -y git python3 libjson-c-dev m4 autoconf gettext
- name: Install dependencies
if: ${{ startsWith(matrix.os, 'fedora') }}
shell: bash
run: |
set -ex
yum install -y git python3 json-c-devel m4 autoconf dh-autoreconf gettext which
- name: Set up systemtap
shell: bash
run: |
git clone --depth=1 https://sourceware.org/git/systemtap.git
ln -s /dyninst/install/include /usr/include/dyninst
ln -s /dyninst/install/lib* /usr/lib64/dyninst
- name: Build systemtap
shell: bash
run: |
set -ex
cd systemtap
autoreconf
mkdir build
cd build
../configure --with-dyninst --without-python3-probes
make -j2
llnl-stat:
runs-on: ubuntu-latest
needs: get-oses
strategy:
fail-fast: false
matrix:
os: ${{ fromJson(needs.get-oses.outputs.latest) }}
permissions:
packages: read
container:
image: ghcr.io/dyninst/amd64/${{ matrix.os }}:latest
credentials:
username: ${{ github.actor }}
password: ${{ secrets.github_token }}
name: STAT (${{ matrix.os }})
steps:
- name: Install dependencies
if: ${{ startsWith(matrix.os, 'ubuntu') }}
shell: bash
run: |
set -ex
apt update -qq
apt install -y git bison flex python3 build-essential dh-autoreconf wget libgcrypt20-dev \
libboost-program-options-dev libboost-regex-dev libboost-wave-dev python3-dev \
python3-setuptools
- name: Install dependencies
if: ${{ startsWith(matrix.os, 'fedora') }}
shell: bash
run: |
set -ex
yum install -y git bison flex python3 dh-autoreconf wget libgcrypt-devel \
boost-program-options boost-regex boost-wave python3-devel \
python3-setuptools libtool-ltdl-devel which
- name: Install GraphLib
shell: bash
run: |
set -ex
git clone --depth=1 https://github.com/LLNL/graphlib
cd graphlib
mkdir build
cd build
cmake ..
cmake --build . --parallel 2
cmake --install . # /usr
- name: Install GraphViz
shell: bash
run: |
set -ex
cd /
git clone --depth=1 https://gitlab.com/graphviz/graphviz.git
cd graphviz
./autogen.sh
mkdir build
cd build
../configure --without-qt --without-gts --without-doc --without-expat --without-ghostscript \
--without-gtkplus --without-libgd --without-pangocairo --without-popler \
--without-quartz --without-x
make -j2
make install
- name: Install launchmon
shell: bash
run: |
set -ex
cd /
git clone --depth=1 https://github.com/llnl/launchmon.git
cd launchmon
./bootstrap
mkdir build
cd build
../configure CXXFLAGS='--std=c++11'
make -j2
make install
- name: Install MRNet
shell: bash
run: |
set -ex
cd /
git clone --depth=1 https://github.com/dyninst/mrnet.git
cd mrnet
mkdir build
cd build
CC=gcc CXX=g++ ../configure --enable-shared
make -j2
make install
- name: Install STAT
shell: bash
run: |
set -ex
cd /
# STAT manually sets the lib subdir to 'lib'
if [[ ! -d /dyninst/install/lib ]]; then
ln -s /dyninst/install/lib* /dyninst/install/lib
fi
git clone --depth=1 https://github.com/llnl/stat.git
cd stat
./bootstrap
mkdir build
cd build
../configure --disable-gui --disable-examples --with-stackwalker=/dyninst/install --with-mrnet=/usr/local
make -j2
tau:
runs-on: ubuntu-latest
needs: get-oses
strategy:
fail-fast: false
matrix:
os: ${{ fromJson(needs.get-oses.outputs.latest) }}
permissions:
packages: read
container:
image: ghcr.io/dyninst/amd64/${{ matrix.os }}:latest
credentials:
username: ${{ github.actor }}
password: ${{ secrets.github_token }}
name: TAU (${{ matrix.os }})
steps:
- name: Fetch TAU
shell: bash
run: |
set -ex
git clone --depth=1 https://github.com/UO-OACISS/tau2
- name: Build TAU
shell: bash
run: |
set -ex
# TAU manually sets the lib subdir to 'lib'
if [[ -d /dyninst/install/lib64 ]]; then
ln -s /dyninst/install/lib64 /dyninst/install/lib
fi
cd tau2
./configure -dyninst=/dyninst/install -tbb=/usr/lib
make -j2
# Part of the Barcelona Supercomputing Performance Tools (https://github.com/bsc-performance-tools).
extrae:
runs-on: ubuntu-latest
needs: get-oses
strategy:
fail-fast: false
matrix:
os: ${{ fromJson(needs.get-oses.outputs.latest) }}
permissions:
packages: read
container:
image: ghcr.io/dyninst/amd64/${{ matrix.os }}:latest
credentials:
username: ${{ github.actor }}
password: ${{ secrets.github_token }}
name: extrae (${{ matrix.os }})
steps:
- name: Install dependencies (Ubuntu)
if: ${{ startsWith(matrix.os, 'ubuntu') }}
shell: bash
run: |
set -ex
apt update
apt install -y libxml2-dev autoconf m4 libtool gcc-13 g++-13 gfortran-13 libiberty-dev binutils-dev
# extrae does not build with gcc-14 (the default compiler on the latest fedora)
- name: Build extrae
if: ${{ startsWith(matrix.os, 'ubuntu') }}
shell: bash
run: |
set -ex
git clone --depth=1 https://github.com/bsc-performance-tools/extrae
cd extrae
autoreconf -fiv
lib_dir_suffix=
if [[ -d /dyninst/install/lib64 ]]; then
lib_dir_suffix=64
fi
lib_dir="/usr/lib${lib_dir_suffix}"
export CC=gcc-13 CXX=g++-13 FC=gfortran-13
./configure \
--disable-doc \
--without-mpi \
--without-unwind \
--without-papi \
--with-dyninst=/dyninst/install \
--with-elfutils=/usr \
--with-elfutils-libs=${lib_dir} \
--with-tbb=/usr \
--with-tbb-libs=${lib_dir} \
--with-boost=/usr \
--with-boost-libs=${lib_dir} \
--with-xml=/usr \
--with-xml2-libs=${lib_dir} \
--with-xml2-headers=/usr/include
make -j2