Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
dfae891
Add metacg-config tool (#83)
sebastiankreutzer Aug 25, 2025
81f1883
[Graph] Fix mergetests target (#84)
jplehr Aug 26, 2025
ba77ff3
Handle inconsistent isVirtual entry when reading V2 CGs (#86)
sebastiankreutzer Sep 4, 2025
1cb99e6
Add CGCollector2 (#45)
sebastiankreutzer Sep 5, 2025
42f1981
Fix bug in Callgraph::erase where edge caches were only partially upd…
pearzt Sep 8, 2025
fc6f647
[CGC2] Fix build path for cgc2 testing downstream (#89)
jplehr Sep 17, 2025
33363be
[Graph] Fix member visibility to private (#91)
jplehr Sep 22, 2025
148a257
[CMake] Rename ctest names and consolidate CMake (#92)
jplehr Sep 22, 2025
84efcc8
[CMake][CGC2] Fix CMake formatting and check workflow (#93)
jplehr Sep 22, 2025
a8118c7
[PGIS] Add missing header; remove unused header (#90)
jplehr Sep 22, 2025
28a1159
[NFC] Fix logic to get source file name when using LLVM 21 (#94)
pearzt Oct 22, 2025
ded345e
Implement CGDiff (#85)
silas-martens Oct 23, 2025
91f7071
[NFC] Fix downstream CI (#95)
silas-martens Oct 27, 2025
5b4315a
Allow reading null CG in file format v2 (#96)
silas-martens Nov 4, 2025
e5beed1
Add deprecation note for CGC AA (#97)
sebastiankreutzer Nov 14, 2025
1291533
[CGC2] Fix error in test script (#88)
jplehr Nov 14, 2025
35b638b
Revert "[CGC2] Fix error in test script (#88)" (#99)
sebastiankreutzer Nov 14, 2025
378e289
Fixes test failures for CGC2 (#101)
TimHeldmann Nov 27, 2025
982b4e7
Reopen: [CGC2] Fix error in test script (#100)
sebastiankreutzer Nov 27, 2025
4ff6ddf
[pymetacg] Support global metadata (#102)
pearzt Dec 1, 2025
b478626
[CGDiff] Fix CMake to build tests only when METACG_BUILD_UNIT_TESTS i…
pearzt Dec 3, 2025
b63f2e8
[NFC] Fix Clang version check for FileEntry::getName() (#105)
silas-martens Dec 8, 2025
7cf5708
Pretty print JSON output of cgdiff (#107)
sebastiankreutzer Dec 17, 2025
5729bc2
Replace old testers with CGDiff (#103)
silas-martens Dec 18, 2025
e70f9f0
[CGC2] Add --cg-file=<string> option (#109)
silas-martens Jan 15, 2026
8941106
[CGQuery] CLI tool for call graph analyses (#108)
silas-martens Jan 15, 2026
6705bdd
Fix race conditions in CGC2 test script (#110)
silas-martens Jan 15, 2026
5f410b0
Add CaGe LLVM call graph generator (#82)
sebastiankreutzer Jan 28, 2026
d831bf9
[CI] Update docker-run GitHub action (#116)
jplehr Feb 17, 2026
d9233f4
[Cage] Only pass non-resolved calls to metavirt (#117)
pearzt Feb 17, 2026
08a985b
Add install rules for cgdiff and cgquery (#114)
pearzt Feb 17, 2026
b989e1b
[Cage] Fix bug where output path could not be set via env variable or…
pearzt Feb 24, 2026
15b36cc
[CGToDot] New CLI tool for dot export (#119)
gomfol12 Mar 4, 2026
a9df524
Reworked Gitlab-CI (#112)
pearzt Mar 4, 2026
8652544
[MetaCG] Remove old/abandoned container recipes (#120)
jplehr Mar 10, 2026
0326390
[NFC] Remove offending semicolon in header (#122)
jplehr Mar 10, 2026
8b8378d
[MetaCG] Update LICENSE date (#126)
jplehr Mar 10, 2026
b546c6d
[CI] Update container file name and GH action (#121)
jplehr Mar 10, 2026
c109257
[MetaCG] Update version to 1.0.0 (#127)
jplehr Mar 10, 2026
ea5d8ba
[CI] Only cmake-format changed files in workflow (#125)
jplehr Mar 10, 2026
5fb7a05
[MetaCG] Add LLVM-20 container recipe (#123)
jplehr Mar 10, 2026
7701199
Refactor cgc2's plugin interface to use LLVM's utilities (#130)
TimHeldmann Mar 12, 2026
7ae0501
[Graph] Add Callgraph class unit tests (#133)
jplehr Mar 12, 2026
3a31d27
[NFC] Update README (#128)
jplehr Mar 13, 2026
953b489
Prepare CaGe to be extensible via plugins (#129)
TimHeldmann Mar 13, 2026
fbf86c3
[NFC] Update GH Actions checkout to v6 (#124)
jplehr Mar 13, 2026
9700302
[CI] Clarify output in mcg-lint job (#134)
jplehr Mar 19, 2026
c250855
[NFC][Graph] Clean up includes (#132)
jplehr Mar 19, 2026
5d17262
[Graph] Add more Callgraph unit tests (#135)
jplehr Mar 19, 2026
5eb5133
Add top-level include directory (#136)
sebastiankreutzer Mar 23, 2026
1c86783
[CGQuery] Refactor & add (Post) Dominator analysis (#111)
silas-martens Mar 26, 2026
f556b70
Reduce logging spam in non-debug mode (#131)
TimHeldmann Apr 17, 2026
b64a4ef
Feat/plugin interface touchup (#138)
TimHeldmann Apr 23, 2026
1e6da8d
Fix Downstream CI (#139)
TimHeldmann Apr 29, 2026
6951bbd
[CGFCOLLECTOR] Adding Fortran call graph collector (#115)
gomfol12 May 28, 2026
a38c50c
Set version to v1.00.0 to allow two-digit minor version numbers (#141)
pearzt May 28, 2026
5100bc9
[Downstream CI] Remove --parallel so that CMake respects the configur…
pearzt May 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
12 changes: 0 additions & 12 deletions .ci-defaults-template.yml

This file was deleted.

355 changes: 355 additions & 0 deletions .ci/gitlab/.gitlab-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,355 @@
# File: .gitlab-ci.yml
# License: Part of the MetaCG proect. Licensed under BSD 3 clause license. See LICENSE.txt file at https://github.com/tudasc/metacg/LICENSE.txt
# Description: File to configure our Gitlab CI

variables:
GIT_STRATEGY: none
GIT_CLONE_PATH: $CI_BUILDS_DIR/$CI_PIPELINE_ID

CMAKE_GENERATOR: Ninja
CMAKE_BUILD_PARALLEL_LEVEL: 8

CMAKE_C_COMPILER_LAUNCHER: ccache
CMAKE_CXX_COMPILER_LAUNCHER: ccache


# Setup for job matrix, covering different versions of GCC and LLVM
.parallel-setup: &parallel-setup
parallel:
matrix:
- GCC: 11
LLVM: [15.0.7, 16.0.6, 17.0.6, 18.1.8, 19.1.7, 20.1.8, 21.1.4]
_CC: clang
_CXX: clang++
- GCC: 15
LLVM: [21.1.4]
_CC: clang
_CXX: clang++
- GCC: 15
LLVM: [21.1.4]
_CC: gcc
_CXX: g++

variables:
VARIANT: "$_CC-GCC-$GCC-LLVM-$LLVM"
SPENV: "spenv-$VARIANT"
BUILD: "build-$VARIANT"
INSTALL: "install-$VARIANT"

# Setup for all jobs (except those preparing the environment)
.job-setup: &job-setup
<<: *parallel-setup

before_script:
- spack env activate $SPENV


# Stages
stages:
- prepare
- configure-build-lint
- test
- integration-test
- install

# Stage: Prepare
# ==============
mcg-download:
stage: prepare
variables:
GIT_STRATEGY: fetch
GIT_CLONE_PATH: $CI_BUILDS_DIR/$CI_PIPELINE_ID
script:
- echo 'Done.'

prepare-environment:
stage: prepare
needs: ["mcg-download"]
<<: *parallel-setup
script:
- which spack
- spack --version
- mkdir -p $SPENV
- |
./.ci/gitlab/spack/replace.sh \
< ./.ci/gitlab/spack/spack_env_template.yaml \
> $SPENV/spack.yaml \
"<GCCVERSION>" $GCC \
"<LLVMVERSION>" $LLVM
- spack env activate $SPENV
- ./.ci/gitlab/spack/prepare.sh

cache:
key:
files:
- ".ci/gitlab/spack/spack_env_template.yaml"
- ".ci/gitlab/.gitlab-ci.yaml"
prefix: "$VARIANT"
paths:
- $SPENV/spack.yaml
- $SPENV/spack.lock
policy: pull-push


# Stage: configure-build-lint
# ===========================
mcg-cmake-lint:
stage: configure-build-lint
script:
- spack load --first py-cmake-format
- for f in $(find {cgcollector,graph,pgis} -name "CMakeLists.txt"); do cmake-format --check $f || exit 1; done ; cmake-format --check CMakeLists.txt
- for f in $(find ./cmake -type f); do cmake-format --check $f || exit 1; done

build:
stage: configure-build-lint
<<: *job-setup

script:
- echo $SPENV
- echo $BUILD
- export CC=$(which ${_CC})
- export CXX=$(which ${_CXX})
- echo $CC
- echo $CXX
- cmake -S . -B $BUILD
-DCMAKE_INSTALL_PREFIX=$INSTALL
-DCMAKE_C_COMPILER=$_CC
-DCMAKE_CXX_COMPILER=$_CXX
-DMETACG_BUILD_CGCOLLECTOR=ON
-DMETACG_BUILD_GRAPH_TOOLS=ON
-DMETACG_BUILD_CGPATCH=ON
-DCAGE_USE_METAVIRT=ON
-DCGPATCH_USE_MPI=OFF
-DMETACG_BUILD_PYMETACG=ON
-DMETACG_BUILD_PYMETACG_TESTS=ON
-DMETACG_USE_EXTERNAL_JSON=ON
-DMETACG_USE_EXTERNAL_CXXOPTS=ON
-DMETACG_USE_EXTERNAL_NANOBIND=ON
-DLLVM_EXTERNAL_LIT=$(which lit)
-DCUBE_DIR=$(spack location -i cubelib)
-DMETACG_BUILD_CGFCOLLECTOR=ON
- cmake --build $BUILD

# test whether a custom in-tree metadata type gets included in the build
configure-custom-md:
stage: configure-build-lint
needs: ["build"] # to prevent this job from interfering with the different builds
script:
- spack load --first cmake
- test -d graph/include/metacg/metadata/custom || exit 1
- echo "// Empty test header" > graph/include/metacg/metadata/custom/TestHeader.h
- cmake -S . -B build-configure-md -DCMAKE_BUILD_TYPE=Debug -DMETACG_BUILD_UNIT_TESTS=OFF
- grep "TestHeader.h" "build-configure-md/graph/include/metacg/metadata/CustomMD.h" || exit 1
- rm -f graph/include/metacg/metadata/custom/TestHeader.h


# Stage: test
# ===========
test-graphlib:
<<: *job-setup
stage: test
script:
- cd $BUILD/graph/test/unit && ./libtests --gtest_output=xml:${VARIANT}.xml
- sed -i -e "s/Test\"/Test-${VARIANT}\"/g" ${VARIANT}.xml
artifacts:
when: always
paths:
- $BUILD/graph/test/unit/${VARIANT}.xml
reports:
junit: $BUILD/graph/test/unit/${VARIANT}.xml

test-pymetacg:
<<: *job-setup
stage: test
script:
- cd $BUILD/pymetacg/tests
- ctest . --verbose

test-cgc:
<<: *job-setup
stage: test
script:
- cd cgcollector/test
- mkdir -p log
- bash run_format_two_test.sh -b $BUILD

test-cgpatch-lit:
<<: *job-setup
stage: test
script:
- cmake --install $BUILD
- cmake --build $BUILD --target pass-tests
- cmake --build $BUILD --target pass-tests-lto
- cmake --build $BUILD --target pass-tests-optimized
- cmake --build $BUILD --target pass-tests-optimized-lto

test-cgdiff:
<<: *job-setup
stage: test
script:
- cd $BUILD/tools/cgdiff/test/unit/
- ./cgdifftests

check-test-format:
<<: *job-setup
stage: test
script:
- ./checkTests.sh $BUILD/tools/cgformat/cgformat

test-cgformat:
<<: *job-setup
stage: test
script:
- cd $BUILD/tools/cgformat/test
- ./run_cgformat_tests.sh

test-cgtodot:
<<: *job-setup
stage: test
script:
- cd $BUILD/tools/cgtodot
- ctest . --verbose


# Stage: integration-test
# =======================
test-cgcollector2:
<<: *job-setup
stage: integration-test
script:
- cd tools/cgcollector2/test/
- ./testBase.sh -b $BUILD

test-cgvalidate:
<<: *job-setup
stage: integration-test
script:
- cd cgcollector/test/integration
- ./runner.sh $BUILD

test-graphlib-merge:
<<: *job-setup
stage: integration-test
script:
- cd graph/test/integration/CallgraphMerge
- ./MergeTestRunner.sh -b $BUILD

test-target-collector:
<<: *job-setup
stage: integration-test
script:
- cmake --install $BUILD
- cd graph/test/integration/TargetCollector
- ./TestRunner.sh -b $BUILD

test-cgpatch-integration:
<<: *job-setup
script:
- cd $BUILD/tools/cgpatch/test/integration/
- ./CGPIntegrationRunner.sh -b $BUILD

test-cgdiff-integration:
<<: *job-setup
stage: integration-test
script:
- cmake --install $BUILD
- cd tools/cgdiff/test/integration/
- ./run_tests.sh -b $BUILD

test-cage:
<<: *job-setup
parallel:
matrix:
- GCC: 11
LLVM: [16.0.6, 17.0.6, 18.1.8, 19.1.7, 20.1.8, 21.1.4]
_CC: clang
_CXX: clang++
- GCC: 15
LLVM: [21.1.4]
_CC: clang
_CXX: clang++
- GCC: 15
LLVM: [21.1.4]
_CC: gcc
_CXX: g++
stage: integration-test
script:
- cd $BUILD/tools/cage/test
- ./runCaGeTests.sh

test-cgfcollector:
<<: *job-setup
parallel:
matrix:
- GCC: 11
LLVM: [18.1.8, 19.1.7, 20.1.8, 21.1.4]
_CC: clang
_CXX: clang++
- GCC: 15
LLVM: [21.1.4]
_CC: clang
_CXX: clang++
- GCC: 15
LLVM: [21.1.4]
_CC: gcc
_CXX: g++
stage: integration-test
script:
- cd $BUILD/cgfcollector
- ctest . --verbose


# Stage: install
# ==============
install:
stage: install
<<: *job-setup

script:
- cmake --install $BUILD
- stat $INSTALL/lib64/libmetacg.so
- stat $INSTALL/bin/cgcollector
- stat $INSTALL/include/metacg/metadata/CustomMD.h
- stat $INSTALL/lib64/cmake/metacg/metacgConfig.cmake
- stat $INSTALL/bin/cgdiff
- stat $INSTALL/bin/cgquery
- stat $INSTALL/bin/cgformat
- stat $INSTALL/bin/cgconvert
- stat $INSTALL/bin/cgtodot
- export LD_LIBRARY_PATH=$INSTALL/lib64:$INSTALL/lib:$LD_LIBRARY_PATH
- $INSTALL/bin/metacg-config --help
- $INSTALL/bin/cgcollector --help

# test whether we can build project that uses MetaCG
install-test:
<<: *job-setup
stage: install
needs: ["install"]
script:
- export BUILD=$(realpath $BUILD)
- export INSTALL=$(realpath $INSTALL)
- cd graph/test/install
- CMAKE_PREFIX_PATH=$INSTALL/lib64/cmake/metacg cmake -S . -B $BUILD-install-test
- cmake --build $BUILD-install-test

CGC2Plugin-test:
<<: *job-setup
stage: install
needs: ["install"]
script:
- export BUILD=$(realpath $BUILD)
- export INSTALL=$(realpath $INSTALL)
- cd tools/cgcollector2/CGC2DemoPlugin
- CMAKE_PREFIX_PATH=$INSTALL/lib64/cmake/metacg cmake -S . -B $BUILD-install-test-cgc2
- cmake --build $BUILD-install-test-cgc2

CaGePlugin-test:
<<: *job-setup
stage: install
needs: ["install"]
script:
- export BUILD=$(realpath $BUILD)
- export INSTALL=$(realpath $INSTALL)
- cd tools/cage/CaGeDemoPlugin
- CMAKE_PREFIX_PATH=$INSTALL/lib64/cmake/metacg cmake -S . -B $BUILD-install-test-cage
- cmake --build $BUILD-install-test-cage
3 changes: 3 additions & 0 deletions .ci/gitlab/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# GitLab CI

This directory contains the scripts and configuration for running the downstream CI on the [Lichtenberg high-performance computer](https://www.hrz.tu-darmstadt.de/hlr/hochleistungsrechnen/index.en.jsp).
Loading
Loading