Build Consumers #10
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |