# Build the latest versions of applications that consume Dyninst name: Build Consumers on: schedule: - cron: '0 3 * * 1' # Monday at 3AM workflow_dispatch: jobs: spack-build: strategy: fail-fast: false matrix: consumer: [ "hpctoolkit@develop", "must+stackwalker~backward~tsan" # extrae+dyninst - not yet tested, may not support dyninst >10.0.0 # omnitrace - Needs updated cmake # timemory - Needs updated cmake ] runs-on: ubuntu-latest steps: - name: ${{ matrix.consumer }} run: | sudo apt update -qq sudo apt install -y -qq --no-install-recommends build-essential gcc g++ gfortran m4 cmake autoconf python3 git unzip openmpi-bin libopenmpi-dev git clone --depth=1 --branch=develop https://github.com/spack/spack spack/bin/spack compiler find spack/bin/spack external find --not-buildable cmake python git m4 openmpi gmake spack/bin/spack install ${{ matrix.consumer }} ^dyninst@master systemtap: permissions: packages: read strategy: fail-fast: true matrix: os: ['ubuntu-23.10'] runs-on: ubuntu-latest 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 run: | apt update apt install -y git python3 libjson-c-dev m4 autoconf - name: Fetch systemtap run: | git clone --depth=1 https://sourceware.org/git/systemtap.git - name: Make symlinks run: | ln -s /dyninst/install/include /usr/include/dyninst ln -s /dyninst/install/lib /usr/lib64/dyninst - name: Build systemtap run: | cd systemtap autoreconf mkdir build cd build ../configure --with-dyninst --without-python3-probes make -j2 llnl-stat: permissions: packages: read strategy: fail-fast: true matrix: os: ['ubuntu-20.04'] runs-on: ubuntu-latest container: image: ghcr.io/dyninst/amd64/${{ matrix.os }}:latest credentials: username: ${{ github.actor }} password: ${{ secrets.github_token }} name: llnl-stat ${{ matrix.os }} steps: - name: Install dependencies run: | apt update apt install -y nano git bison flex python3 build-essential dh-autoreconf wget libgcrypt20-dev libboost-program-options-dev libboost-regex-dev libboost-wave-dev libpython3-dev python3-distutils - name: Install GraphLib run: | 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 run: | 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 run: | cd / git clone --depth=1 https://github.com/llnl/launchmon.git cd launchmon ./bootstrap mkdir build cd build ../configure make -j2 make install - name: Install MRNet run: | 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 run: | cd / 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: permissions: packages: read strategy: fail-fast: true matrix: os: ['ubuntu-20.04'] runs-on: ubuntu-latest container: image: ghcr.io/dyninst/amd64/${{ matrix.os }}:latest credentials: username: ${{ github.actor }} password: ${{ secrets.github_token }} name: TAU ${{ matrix.os }} steps: - name: Install dependencies run: | # TAU assumes Dyninst needs libdwarf instead of libdw. This has no real # effect on Dyninst as we RPATH our deps. It just makes the manually-constructed # link line in the TAU build work. apt update apt install -y git libdwarf1 - name: Fix libdwarf run: | ln -s /usr/lib/x86_64-linux-gnu/libdwarf.so.1.0.0 /usr/lib/x86_64-linux-gnu/libdwarf.so - name: Fetch TAU run: | git clone --depth=1 https://github.com/UO-OACISS/tau2 - name: Build TAU run: | cd tau2 ./configure -dyninst=/dyninst/install make -j2