Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ci: Spack #3980

Open
wants to merge 197 commits into
base: main
Choose a base branch
from
Open

ci: Spack #3980

wants to merge 197 commits into from

Conversation

paulgessinger
Copy link
Member

@paulgessinger paulgessinger commented Dec 11, 2024

PLEASE DESCRIBE YOUR CHANGES.
THIS MESSAGE ENDS UP AS THE COMMIT MESSAGE.
DO NOT USE @-MENTIONS HERE!

--- END COMMIT MESSAGE ---

Any further description goes here, @-mentions are ok here!

  • Use a conventional commits prefix: quick summary
    • We mostly use feat, fix, refactor, docs, chore and build types.
  • A milestone will be assigned by one of the maintainers

Summary by CodeRabbit

Release Notes

  • New Features

    • Introduced a new GitHub Actions workflow for managing dependencies.
    • Added new shell scripts for OpenGL package management and parallel execution of commands.
    • Added a Python script for selecting and retrieving lockfiles based on tags and architecture.
  • Infrastructure

    • Updated CI/CD configuration files for GitHub Actions and GitLab CI.
    • Improved dependency management and caching strategies.
    • Enhanced parallel processing scripts.
  • Code Improvements

    • Refined type safety in Eigen concepts and method signatures.
    • Updated build configuration for multiple platforms.
  • Testing

    • Updated test file hashes for Geant4 simulation tests.
  • Documentation

    • Added comments and improved code readability in various files.

@paulgessinger paulgessinger changed the title remove some workflows temporarily ci: Spack Dec 11, 2024
Copy link

coderabbitai bot commented Dec 11, 2024

Walkthrough

A comprehensive overhaul of dependency management and continuous integration workflows has been implemented. The changes introduce a new GitHub Actions workflow for dependencies, modify existing CI configurations across multiple platforms, and update several utility scripts to enhance dependency installation, caching, and environment setup processes.

Changes

File Change Summary
.github/actions/dependencies/action.yml New GitHub Actions workflow for dependency installation
.github/workflows/analysis.yml, .github/workflows/builds.yml Updated dependency installation methods, using new custom action
.gitlab-ci.yml Modified variables, caching strategies, and dependency management
CI/dependencies/ New scripts for OpenGL setup, parallel execution, lockfile selection, and Spack setup
Core/include/Acts/... Minor type conversion updates in Eigen-related concepts and methods

Sequence Diagram

sequenceDiagram
    participant CI as Continuous Integration
    participant Deps as Dependency Action
    participant Spack as Spack Package Manager
    participant Env as Build Environment

    CI->>Deps: Trigger dependency installation
    Deps->>Spack: Setup and configure
    Spack->>Env: Install required packages
    Env-->>Deps: Environment prepared
    Deps-->>CI: Ready for build
Loading

Possibly related PRs

Suggested Labels

automerge

Suggested Reviewers

  • AJPfleger

Poem

Dependencies dance, a CI ballet 🤖
Spack weaves magic, scripts at play
Workflows sing, with actions bright
Builds emerge from digital light
Code's harmony, now crystal clear! 🌟


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR. (Beta)
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@github-actions github-actions bot added the Infrastructure Changes to build tools, continous integration, ... label Dec 11, 2024
@github-actions github-actions bot added this to the next milestone Dec 11, 2024
@github-actions github-actions bot added Component - Core Affects the Core module Component - Plugins Affects one or more Plugins Event Data Model and removed Component - Plugins Affects one or more Plugins labels Dec 13, 2024
@github-actions github-actions bot added Component - Examples Affects the Examples module Changes Performance labels Dec 20, 2024
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (2)
.gitlab-ci.yml (2)

21-35: 🛠️ Refactor suggestion

Cache policy define, you must!

Missing cache policy configuration, I observe. Define policy for cache management, essential it is.

Apply this diff to improve cache configuration:

  cache:
   - key:
       files:
         - CI/dependencies/setup_spack.sh
       prefix: spack_${SPACK_VERSION}
+      policy: pull-push
+      when: always
     paths:
      - spack
      - .spack

96-98: 🛠️ Refactor suggestion

Template for cleanup, create we must!

Duplicated cleanup configuration across jobs, I observe. DRY principle follow, we should.

Create cleanup template job:

.cleanup_template:
  after_script:
    - !reference [.spack_cleanup, after_script]

# Then extend in each job:
clang_tidy:
  extends: .cleanup_template
  # ... rest of job configuration

Also applies to: 130-132, 171-173, 194-196, 224-226, 267-269, 296-297, 337-339, 397-399

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5cce4e8 and 68f97e5.

📒 Files selected for processing (1)
  • .gitlab-ci.yml (17 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (13)
  • GitHub Check: CI Bridge / lcg_106a: [alma9, clang16]
  • GitHub Check: CI Bridge / lcg_106a: [alma9, gcc14]
  • GitHub Check: CI Bridge / lcg_106a: [alma9, gcc13]
  • GitHub Check: CI Bridge / lcg_105: [alma9, clang16]
  • GitHub Check: CI Bridge / lcg_105: [alma9, gcc13]
  • GitHub Check: CI Bridge / linux_ubuntu_2204_clang
  • GitHub Check: CI Bridge / linux_ubuntu_2204
  • GitHub Check: CI Bridge / build_linux_ubuntu
  • GitHub Check: CI Bridge / build_exatrkx
  • GitHub Check: CI Bridge / clang_tidy
  • GitHub Check: CI Bridge / build_exatrkx_cpu
  • GitHub Check: build_performance
  • GitHub Check: build_debug
🔇 Additional comments (1)
.gitlab-ci.yml (1)

294-294: Test scope narrow, it is! Explain you must!

Single test case selected: test_full_chain_odd_example_pythia_geant4. Reason for limiting test scope, document you should.

✅ Verification successful

Justified, the test selection is! Comprehensive coverage it provides!

Two full chain tests exist, but chosen wisely, the Pythia+Geant4 variant was. More thorough testing it provides, as both DD4hep and Geant4 dependencies it requires. Redundant, running both tests would be, as similar functionality they validate. Resources and time, we must conserve!

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check available test cases
echo "Checking for other test cases..."
fd "test_.+\.py" Examples/Python/tests/ -x grep -l "test_full_chain"

Length of output: 182


Script:

#!/bin/bash
# Check content of test file for full chain tests and their documentation
echo "=== Checking test_examples.py for full chain tests ==="
rg "def test_full_chain" -B 2 -A 2 Examples/Python/tests/test_examples.py

echo -e "\n=== Checking for test documentation ==="
rg "test_full_chain.*\(" -B 5 Examples/Python/tests/test_examples.py

Length of output: 1046

.gitlab-ci.yml Show resolved Hide resolved
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 68f97e5 and 3751f6e.

📒 Files selected for processing (1)
  • .github/workflows/builds.yml (10 hunks)
🧰 Additional context used
🪛 actionlint (1.7.4)
.github/workflows/builds.yml

185-185: shellcheck reported issue in this script: SC2086:info:7:6: Double quote to prevent globbing and word splitting

(shellcheck)


185-185: shellcheck reported issue in this script: SC2155:warning:9:8: Declare and assign separately to avoid masking return values

(shellcheck)


185-185: shellcheck reported issue in this script: SC2086:info:9:23: Double quote to prevent globbing and word splitting

(shellcheck)


185-185: shellcheck reported issue in this script: SC2086:info:11:6: Double quote to prevent globbing and word splitting

(shellcheck)

⏰ Context from checks skipped due to timeout of 90000ms (19)
  • GitHub Check: CI Bridge / lcg_106a: [alma9, clang16]
  • GitHub Check: CI Bridge / lcg_106a: [alma9, gcc14]
  • GitHub Check: CI Bridge / lcg_106a: [alma9, gcc13]
  • GitHub Check: CI Bridge / lcg_105: [alma9, clang16]
  • GitHub Check: CI Bridge / linux_ubuntu_2204_clang
  • GitHub Check: CI Bridge / lcg_105: [alma9, gcc13]
  • GitHub Check: CI Bridge / linux_ubuntu_2204
  • GitHub Check: CI Bridge / build_linux_ubuntu
  • GitHub Check: CI Bridge / build_exatrkx
  • GitHub Check: CI Bridge / build_exatrkx_cpu
  • GitHub Check: build_performance
  • GitHub Check: build_debug
  • GitHub Check: CI Bridge / clang_tidy
  • GitHub Check: unused_files
  • GitHub Check: missing_includes
  • GitHub Check: linux_ubuntu_extra (ubuntu2204, 20, clang++)
  • GitHub Check: macos
  • GitHub Check: linux_ubuntu_extra (ubuntu2204, 20, g++)
  • GitHub Check: linux_ubuntu
🔇 Additional comments (4)
.github/workflows/builds.yml (4)

40-43: Centralized dependency management, wise this is!

Refactored dependency installation through custom action, you have. Improved maintainability and consistency across jobs, this brings. Strong with the Force, this change is.

Also applies to: 124-126, 165-167, 266-269, 341-344


214-242: Document the fate of performance reporting, you must.

Commented out this job is, yet explanation there is not. If temporary this change be, document the reason and timeline for restoration, you should. If permanent this removal is, clean up and remove entirely, you must.


254-254: Container image update, verify we must.

From version 63 to 71, a significant jump this is. Changes in the container image, impact our builds they might.

✅ Verification successful

Safe, this container update appears to be, hmm.

Version 71, though not the latest it may be, a stable choice it seems. Monitor the build logs, you should, but proceed with confidence, you can. Conservative version selection, wisdom it shows.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check container image tags
gh api \
  -H "Accept: application/vnd.github+json" \
  /orgs/acts-project/packages/container/ubuntu2204/versions | \
  jq '.[].metadata.container.tags'

Length of output: 474


Script:

#!/bin/bash
# Check for changelog or release notes
fd changelog -i
fd release.md -i
fd releases.md -i

# Check recent commits mentioning container versions
git log --oneline -n 20 | grep -i "container"

Length of output: 85


Script:

#!/bin/bash
# Check release documentation content
cat docs/contribution/release.md

# Also check if there are any container-related issues or discussions
gh issue list --state all --search "container version" --limit 5

Length of output: 6837


23-23: Verify compatibility with new dependency version, hmm.

From v5 to v7_b7, a significant leap this is. Ensure tested thoroughly, all downstream dependencies must be.

✅ Verification successful

Proceed with dependency version change, you may! Hmmmm.

Searched through the codebase, I have. No other references to v5 that require updates, found there were. Independent change this appears to be, yes. Safe to update DEPENDENCY_TAG from v5 to v7_b7, it is.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for any hardcoded dependency version references
rg -g '!.git' 'v5' 

Length of output: 65555


Script:

#!/bin/bash
# Search for dependency-related files
fd -t f "requirements|dependencies|package|deps" 

# Also check for any version constraints in CMake files
fd -t f "CMakeLists.txt|*.cmake"

Length of output: 909


Script:

#!/bin/bash
# Search requirements files for v5 references
rg "v5" CI/*/requirements.* Examples/*/requirements.* docs/requirements.*

# Search CMake files with fixed strings
fd -t f --fixed-strings "CMakeLists.txt"
fd -t f --extension cmake

Length of output: 7553


Script:

#!/bin/bash
# Search main CMake files and those likely to contain dependency info
rg -g "*.cmake" "v[0-9]" cmake/
rg "DEPENDENCY" CMakeLists.txt cmake/

Length of output: 173

.github/workflows/builds.yml Show resolved Hide resolved
Comment on lines +201 to +203
- uses: mxschmitt/action-tmate@v3
if: failure()

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- uses: mxschmitt/action-tmate@v3
if: failure()

git push

#
# linux_physmon_perf_report:
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add this back in

Comment on lines +357 to +358
ccache -z &&
cmake -B build -S .
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
ccache -z &&
cmake -B build -S .
ccache -z
&& cmake -B build -S .

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

🧹 Nitpick comments (1)
CI/dependencies/setup.sh (1)

223-223: Balance in shell options, maintain we must!

Set shell option without previous enabling, confusing it is. Remove unnecessary command or add corresponding set -u, we should!

-set +u
+# If needed, wrap specific commands with set +u/set -u instead of global disable
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3751f6e and 57e5bc5.

📒 Files selected for processing (2)
  • CI/dependencies/setup.sh (1 hunks)
  • CI/dependencies/setup_spack.sh (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • CI/dependencies/setup_spack.sh
⏰ Context from checks skipped due to timeout of 90000ms (12)
  • GitHub Check: CI Bridge / lcg_106a: [alma9, clang16]
  • GitHub Check: CI Bridge / lcg_106a: [alma9, gcc14]
  • GitHub Check: CI Bridge / lcg_106a: [alma9, gcc13]
  • GitHub Check: CI Bridge / lcg_105: [alma9, clang16]
  • GitHub Check: CI Bridge / lcg_105: [alma9, gcc13]
  • GitHub Check: CI Bridge / linux_ubuntu_2204_clang
  • GitHub Check: CI Bridge / linux_ubuntu_2204
  • GitHub Check: CI Bridge / build_linux_ubuntu
  • GitHub Check: CI Bridge / build_exatrkx
  • GitHub Check: CI Bridge / build_exatrkx_cpu
  • GitHub Check: CI Bridge / clang_tidy
  • GitHub Check: missing_includes
🔇 Additional comments (2)
CI/dependencies/setup.sh (2)

85-94: Sanitize destination path, you must!

Path injection vulnerabilities, prevent we should. Sanitize and validate destination path, essential it is.


124-137: Validate mirror URLs, essential it is!

Trust blindly in URLs, we must not. Validate mirror URLs before use, safer it would be.

CI/dependencies/setup.sh Show resolved Hide resolved
CI/dependencies/setup.sh Show resolved Hide resolved
CI/dependencies/setup.sh Show resolved Hide resolved
CI/dependencies/setup.sh Show resolved Hide resolved
CI/dependencies/setup.sh Show resolved Hide resolved
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (2)
.github/actions/dependencies/action.yml (2)

9-12: Improve the description of GITHUB_TOKEN input, hmmmm.

More specific about the token's purpose and required permissions, we must be. Help others understand the security implications, this will.

-    description: 'Secrets to pass to the action'
+    description: 'GitHub token for authenticating package downloads and accessing private repositories'

27-61: Monitor the cache size, we should.

Wise it is to track the ways of the cache. Like the Force, unlimited it is not. Add cache size logging, we must.

 rm -rf spack/.git
 mkdir spack_cache
 cp -r spack spack_cache/
 cp -r ~/.spack spack_cache/
+du -sh spack_cache | tee cache_size.txt
+echo "Cache size logged to cache_size.txt it has been."
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 57e5bc5 and a37a5b9.

📒 Files selected for processing (1)
  • .github/actions/dependencies/action.yml (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (18)
  • GitHub Check: CI Bridge / lcg_105: [alma9, clang16]
  • GitHub Check: merge-sentinel
  • GitHub Check: CI Bridge / lcg_105: [alma9, gcc13]
  • GitHub Check: CI Bridge / build_linux_ubuntu
  • GitHub Check: CI Bridge / linux_ubuntu_2204_clang
  • GitHub Check: unused_files
  • GitHub Check: CI Bridge / linux_ubuntu_2204
  • GitHub Check: CI Bridge / clang_tidy
  • GitHub Check: CI Bridge / build_exatrkx
  • GitHub Check: missing_includes
  • GitHub Check: linux_ubuntu_extra (ubuntu2204, 20, clang++)
  • GitHub Check: linux_ubuntu_extra (ubuntu2204, 20, g++)
  • GitHub Check: CI Bridge / build_exatrkx
  • GitHub Check: CI Bridge / build_linux_ubuntu
  • GitHub Check: linux_ubuntu
  • GitHub Check: CI Bridge / build_exatrkx_cpu
  • GitHub Check: CI Bridge / clang_tidy
  • GitHub Check: macos
🔇 Additional comments (1)
.github/actions/dependencies/action.yml (1)

62-73: 🛠️ Refactor suggestion

Improve error handling and logging in setup script execution, we must.

Like a Padawan without guidance, this script runs without proper error checks. More wisdom in our execution path, we need.

-          echo "With compiler"
-          CI/dependencies/setup.sh -c "${{ inputs.compiler }}"
+          echo "Installing dependencies with compiler: ${{ inputs.compiler }}"
+          CI/dependencies/setup.sh -c "${{ inputs.compiler }}" || {
+            echo "Failed the dependency installation has. Investigate you must." >&2
+            exit 1
+          }
-          echo "Without compiler"
-          CI/dependencies/setup.sh
+          echo "Installing dependencies with default compiler"
+          CI/dependencies/setup.sh || {
+            echo "Failed the dependency installation has. Investigate you must." >&2
+            exit 1
+          }

Run this script to verify the setup.sh script exists and is executable:

.github/actions/dependencies/action.yml Show resolved Hide resolved
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (2)
.gitlab-ci.yml (2)

21-40: Cache policy define, you must!

Missing cache cleanup policy, I observe. Define policy for cache management, essential it is.

Add cache policy configuration:

   cache:
     - key:
         files:
           - CI/dependencies/setup_spack.sh
         prefix: spack_${SPACK_VERSION}
+      policy: pull-push
+      when: always
       paths:
         - spack
         - .spack

Line range hint 96-417: Refactor cleanup script, we should!

Duplicated cleanup configuration across jobs, I sense. To template job, move cleanup script we must.

Create new template job:

.cleanup_template:
  after_script:
    - !reference [.spack_cleanup, after_script]

# Then in each job:
build_exatrkx_cpu:
  extends: .cleanup_template
  # ... rest of the job configuration
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a37a5b9 and 1c59936.

📒 Files selected for processing (2)
  • .gitlab-ci.yml (18 hunks)
  • CI/dependencies/setup.sh (1 hunks)
🧰 Additional context used
📓 Learnings (1)
.gitlab-ci.yml (1)
Learnt from: paulgessinger
PR: acts-project/acts#3980
File: .gitlab-ci.yml:67-67
Timestamp: 2025-01-13T12:18:19.248Z
Learning: When reviewing file paths in CI scripts, consider the working directory context set by previous commands like `cd`. In the Acts project's CI, many scripts are executed from within the `src` directory after cloning the repository.
⏰ Context from checks skipped due to timeout of 90000ms (21)
  • GitHub Check: merge-sentinel
  • GitHub Check: CI Bridge / lcg_106a: [alma9, clang16]
  • GitHub Check: CI Bridge / lcg_106a: [alma9, gcc14]
  • GitHub Check: CI Bridge / lcg_106a: [alma9, gcc13]
  • GitHub Check: CI Bridge / lcg_105: [alma9, clang16]
  • GitHub Check: CI Bridge / lcg_105: [alma9, gcc13]
  • GitHub Check: CI Bridge / linux_ubuntu_2204_clang
  • GitHub Check: CI Bridge / linux_ubuntu_2204
  • GitHub Check: CI Bridge / clang_tidy
  • GitHub Check: CI Bridge / build_linux_ubuntu
  • GitHub Check: CI Bridge / build_exatrkx
  • GitHub Check: CI Bridge / build_exatrkx_cpu
  • GitHub Check: unused_files
  • GitHub Check: macos
  • GitHub Check: linux_ubuntu_extra (ubuntu2204, 20, clang++)
  • GitHub Check: missing_includes
  • GitHub Check: linux_ubuntu_extra (ubuntu2204, 20, g++)
  • GitHub Check: build_performance
  • GitHub Check: linux_ubuntu
  • GitHub Check: build_debug
  • GitHub Check: docs
🔇 Additional comments (6)
CI/dependencies/setup.sh (5)

1-6: Strengthen error handling, we must!

Hmm, selective error handling, I sense. When sourced, continue silently on errors, the script does. Dangerous, this path is!


124-143: 🛠️ Refactor suggestion

Validate mirror URLs, essential it is!

Trust blindly in URLs, we must not. Validate mirror URLs before use, safer it would be.

Apply this diff to add URL validation:

+function is_valid_mirror_url() {
+  local url="$1"
+  [[ "$url" =~ ^oci://(ghcr\.io|registry\.cern\.ch)/[a-zA-Z0-9/_-]+$ ]]
+}

 if [ -n "${CI:-}" ]; then
   start_section "Add buildcache mirror"
   mirror_name="acts-spack-buildcache"
   mirror_url="oci://ghcr.io/acts-project/spack-buildcache"
   if [ -n "${GITLAB_CI:-}" ]; then
     mirror_url="oci://registry.cern.ch/ghcr.io/acts-project/spack-buildcache"
   fi
+  if ! is_valid_mirror_url "$mirror_url"; then
+    echo "Error: Invalid mirror URL: $mirror_url" >&2
+    exit 1
+  fi
   spack mirror add ${mirror_name} ${mirror_url} --unsigned

Likely invalid or redundant comment.


182-184: 🛠️ Refactor suggestion

Verify installation success, we must!

Blind to failures, the installation process is. Check exit status and log errors properly, we should!

Apply this diff to improve error handling:

-time "${SCRIPT_DIR}"/parallel.sh "$NCPUS" spack -e "${env_dir}" install --use-buildcache only \
-  | tee install.log \
-  | grep -v "^Waiting\|^\[+\]"
+# Use temporary file for full log
+install_log=$(mktemp)
+if ! time "${SCRIPT_DIR}"/parallel.sh "$NCPUS" spack -e "${env_dir}" install --use-buildcache only \
+  2>&1 | tee "$install_log"; then
+    echo "Installation failed! Check $install_log for details" >&2
+    exit 1
+fi
+# Filter and display progress
+grep -v "^Waiting\|^\[+\]" "$install_log"

Likely invalid or redundant comment.


148-150: 🛠️ Refactor suggestion

Check directory permissions, you must!

Create directories blindly, we should not. Verify permissions and ownership first, we must!

Apply this diff to add permission checks:

 env_dir="${destination}/env"
 view_dir="${destination}/view"
+if ! mkdir -p "${env_dir}" 2>/dev/null; then
+    echo "Error: Cannot create directory ${env_dir}. Check permissions!" >&2
+    exit 1
+fi
-mkdir -p ${env_dir}

Likely invalid or redundant comment.


12-23: 🛠️ Refactor suggestion

Validate environment variables, you must!

Blindly trust input values, we should not. Validate environment variables before setting, we must!

Apply this diff to add validation:

 function set_env {
   key="$1"
   value="$2"
 
+  # Validate key format
+  if [[ ! "$key" =~ ^[A-Za-z_][A-Za-z0-9_]*$ ]]; then
+    echo "Invalid environment variable name: $key" >&2
+    return 1
+  fi
+
+  # Sanitize value
+  value="${value//[$'\n\r']/_}"
+
   echo "=> ${key}=${value}"

Likely invalid or redundant comment.

.gitlab-ci.yml (1)

Line range hint 64-387: Document migration status and plans, you must!

Hmm, partial migration to GitHub Actions, I sense. While physmon workflow exists, other critical features - clang-tidy and ExaTrkX builds - replacements have not, I find. Document the migration strategy and timeline in PR description, essential it is.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
.gitlab-ci.yml (1)

Line range hint 113-116: Document CUDA architecture choices, you should!

Specific CUDA architectures configured:

TORCH_CUDA_ARCH_LIST="8.0 8.6 8.9 9.0"

Document reason for chosen architectures and minimum requirements, helpful for future maintainers this would be.

Add comment explaining architecture choices and requirements:

+# CUDA architectures for Ampere (8.0), Ampere GA102 (8.6), Hopper (9.0)
+# Minimum supported architecture: 8.0 (NVIDIA A100)
 export TORCH_CUDA_ARCH_LIST="8.0 8.6 8.9 9.0"
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 1c59936 and aab69b8.

📒 Files selected for processing (1)
  • .gitlab-ci.yml (18 hunks)
🧰 Additional context used
📓 Learnings (1)
.gitlab-ci.yml (1)
Learnt from: paulgessinger
PR: acts-project/acts#3980
File: .gitlab-ci.yml:67-67
Timestamp: 2025-01-13T12:18:19.248Z
Learning: When reviewing file paths in CI scripts, consider the working directory context set by previous commands like `cd`. In the Acts project's CI, many scripts are executed from within the `src` directory after cloning the repository.
⏰ Context from checks skipped due to timeout of 90000ms (16)
  • GitHub Check: CI Bridge / linux_ubuntu_2204_clang
  • GitHub Check: linux_ubuntu_extra (ubuntu2204, 20, clang++)
  • GitHub Check: linux_ubuntu_extra (ubuntu2204, 20, g++)
  • GitHub Check: macos
  • GitHub Check: linux_ubuntu
  • GitHub Check: CI Bridge / linux_ubuntu_2204
  • GitHub Check: CI Bridge / build_linux_ubuntu
  • GitHub Check: build_performance
  • GitHub Check: build_debug
  • GitHub Check: unused_files
  • GitHub Check: CI Bridge / build_exatrkx
  • GitHub Check: CI Bridge / build_exatrkx_cpu
  • GitHub Check: missing_includes
  • GitHub Check: CI Bridge / clang_tidy
  • GitHub Check: CI Bridge / clang_tidy
  • GitHub Check: docs
🔇 Additional comments (4)
.gitlab-ci.yml (4)

273-284: Well structured downstream testing, this is!

Good practice, testing downstream project compatibility is. Clear configuration and proper error checking with -Werror, approve this change I do.


21-35: 🛠️ Refactor suggestion

Define cache policy, you must!

Missing cache policy configuration, I observe. Define policy for cache management, essential it is.

Add cache policy configuration:

  cache:
   - key:
       files:
         - CI/dependencies/setup_spack.sh
       prefix: spack_${SPACK_VERSION}
+      policy: pull-push
+      when: always
     paths:
      - spack
      - .spack

Likely invalid or redundant comment.


267-267: Parallel test execution disabled, why it is?

Commented out parallel test execution with #-j$(nproc), impact on CI pipeline duration this may have. If intentional this is, document the reason you must.

Also applies to: 393-393, 488-488


312-312: Single test execution, concerning this is!

From full test suite to single test test_full_chain_odd_example_pythia_geant4, changed it has. Verify intentional this is and document reason you must.

✅ Verification successful

Intentional this change is, young padawan!

A specialized integration test this is, combining Pythia8 and Geant4 with full detector simulation. Complex dependencies it requires, and time-consuming it is. Separate execution from main test suite, wisdom shows. In test file, well documented the purpose is, with proper skip markers for missing dependencies.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for any related discussions or issues
gh issue list --search "pythia geant4 test" --state all
gh pr list --search "pythia geant4 test" --state all

Length of output: 877


Script:

#!/bin/bash
# Check git history for this specific line in gitlab-ci.yml
git log -L312,312:.gitlab-ci.yml

# Find the test file
fd "test_full_chain_odd_example_pythia_geant4" 

# Look for related documentation
rg -i "test_full_chain_odd_example_pythia_geant4" --type md

Length of output: 106


Script:

#!/bin/bash
# Find Python test files containing the test name
rg -t python "def test_full_chain_odd_example_pythia_geant4" -B2 -A5

# Look for pytest configuration files
fd "pytest.ini|conftest.py"

# Search for files containing both Pythia and Geant4 in tests
rg -l "pythia.*geant4|geant4.*pythia" -i $(fd -t f . "tests")

Length of output: 448


Script:

#!/bin/bash
# Check test file content
cat Examples/Python/tests/test_examples.py

# Check pytest configuration
cat pytest.ini
cat Examples/Python/tests/conftest.py

# Check documentation context
rg -A3 -B3 "test_full_chain_odd_example_pythia_geant4" docs/

Length of output: 50600

@paulgessinger
Copy link
Member Author

@stephenswat This is green now. I set the ctest execution to single threaded, but I'm inclined to actually remove the (ostensibly) problematic unit tests. I don't think they actually provided that much additional value, contrary to what I thought when I added them originally.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🔭 Outside diff range comments (1)
.gitlab-ci.yml (1)

Document the path to GitHub Actions, you must!

Confirmed, the Force reveals a mixed migration state:

  • To GitHub Actions, physmon has fully moved
  • In transition, ExaTrkX jobs appear to be
  • In GitLab CI only, clang-tidy remains
  • Clear guidance on this journey, developers need

Document in PR description, you shall:

  • Current state of migration
  • Timeline for remaining jobs
  • Which CI system to trust, when duplicated they are
🔗 Analysis chain

Line range hint 64-187: Document migration status and plans, you must!

Hmm, partial migration to GitHub Actions, I sense. Document the migration strategy and timeline in PR description, essential it is. If temporary disable this is, explain the rationale you should.

Also applies to: 261-387

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check if these jobs are replaced elsewhere
rg -A 5 "clang.?tidy|exatrkx|test_examples|physmon" --type yaml .github/workflows/

Length of output: 6465


Script:

#!/bin/bash
# Check for clang-tidy configuration files in GitHub Actions
fd clang-tidy .github/
# Check for recent changes to clang-tidy configurations
fd clang-tidy . --exclude .git

Length of output: 71

🧹 Nitpick comments (2)
.github/workflows/analysis.yml (1)

Line range hint 267-267: Document the reason for single-threaded tests, we must!

Single-threaded execution prevents floating-point exceptions in G4EmModelManager, as mentioned in PR description. Add comment to explain this, you should.

-    - ctest --test-dir build #-j$(nproc)
+    # Running single-threaded to prevent floating-point exceptions in G4EmModelManager
+    - ctest --test-dir build
.gitlab-ci.yml (1)

21-35: Cache policy define, you must!

Missing cache cleanup policy, I observe. Define policy for cache management, essential it is.

  cache:
   - key:
       files:
         - CI/dependencies/setup_spack.sh
       prefix: spack_${SPACK_VERSION}
+      policy: pull-push
+      when: always
     paths:
      - spack
      - .spack
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 84ecb53 and f3f74cd.

📒 Files selected for processing (5)
  • .github/workflows/analysis.yml (3 hunks)
  • .gitlab-ci.yml (17 hunks)
  • CI/dependencies/opengl.sh (1 hunks)
  • CMakeLists.txt (1 hunks)
  • Examples/Python/tests/root_file_hashes.txt (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • CI/dependencies/opengl.sh
  • Examples/Python/tests/root_file_hashes.txt
🧰 Additional context used
📓 Learnings (1)
.gitlab-ci.yml (1)
Learnt from: paulgessinger
PR: acts-project/acts#3980
File: .gitlab-ci.yml:67-67
Timestamp: 2025-01-13T12:18:19.248Z
Learning: When reviewing file paths in CI scripts, consider the working directory context set by previous commands like `cd`. In the Acts project's CI, many scripts are executed from within the `src` directory after cloning the repository.
⏰ Context from checks skipped due to timeout of 90000ms (7)
  • GitHub Check: merge-sentinel
  • GitHub Check: unused_files
  • GitHub Check: macos
  • GitHub Check: build_debug
  • GitHub Check: docs
  • GitHub Check: linux_ubuntu
  • GitHub Check: missing_includes
🔇 Additional comments (6)
.github/workflows/analysis.yml (3)

39-42: Wise choice, using custom action for dependencies is!

Centralized dependency management, better maintainability brings. The Force flows strong through this one.


Line range hint 273-282: Strong with downstream testing, this one is!

Verify compatibility with downstream projects, essential it is. Well-structured configuration, I sense.


25-25: Verify the dependency tag exists and is compatible, hmm!

The tag v7_b7 exists, verify we must. Critical for workflow stability, this is.

.gitlab-ci.yml (1)

255-255: Correct path usage, I sense!

From src directory, script runs. Path src/CI/dependencies/setup.sh, valid it is.

CMakeLists.txt (2)

16-44: Strong with CMake policies, this one is!

Clear and explicit policy settings, better build configuration brings. Well-structured and documented, these changes are.


Line range hint 285-297: Wise protection against broken Boost version, this is!

Known issues with Boost 1.85.0, prevent its usage we must. Clear error message and version check, well implemented they are.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (2)
.gitlab-ci.yml (2)

21-35: Cache configuration for Spack, well structured it is.

Two-level cache strategy, wise choice this is:

  1. Spack installation cache based on setup script
  2. Lockfile cache for dependencies

But missing cache policy configuration, I observe. Add cache policy, you should.

   cache:
    - key:
        files:
          - CI/dependencies/setup_spack.sh
        prefix: spack_${SPACK_VERSION}
+       policy: pull-push
        paths:
         - spack
         - .spack
    - key:
        files:
         - spack_lockfile_cache/digest.txt
        prefix: spack_lockfile_
+       policy: pull-push
        paths:
         - spack_lockfile_cache

67-67: Path consistency in dependencies setup, maintain we must!

Two different paths for same script, confusion this brings:

  • Line 67: CI/dependencies/setup.sh
  • Line 255: src/CI/dependencies/setup.sh

But! Working directory context different it is. From src directory, both paths valid they are. Clear documentation of this behavior, add we should.

Add comment to explain working directory context:

+    # Note: Script is executed from within src directory
     source CI/dependencies/setup.sh -c clang++

Also applies to: 255-255

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f3f74cd and 7b9402c.

📒 Files selected for processing (1)
  • .gitlab-ci.yml (18 hunks)
🧰 Additional context used
📓 Learnings (1)
.gitlab-ci.yml (1)
Learnt from: paulgessinger
PR: acts-project/acts#3980
File: .gitlab-ci.yml:67-67
Timestamp: 2025-01-13T12:18:19.248Z
Learning: When reviewing file paths in CI scripts, consider the working directory context set by previous commands like `cd`. In the Acts project's CI, many scripts are executed from within the `src` directory after cloning the repository.
⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: merge-sentinel
🔇 Additional comments (5)
.gitlab-ci.yml (5)

7-10: New variables for Spack configuration, I see.

Good addition of SPACK_VERSION and LOCKFILE_CACHE_DIR variables, this is. Clear purpose they serve, hmm.


37-40: Cleanup script, efficient it is.

Good practice to clean unnecessary files and caches after job completion, this is.


393-393: Parallel test execution disabled, performance impact this has.

Commented out parallel test execution with #-j$(nproc). If stability issues exist, document them you must. If temporary measure this is, tracking issue create we should.

Would you like me to create an issue to track the parallel test execution investigation?


488-488: Commented parallel test execution, explain you must!

Disabled parallel test execution with #-j$(nproc), impact on CI pipeline duration this may have.

✅ Verification successful

Hmmmm, intentional this configuration is, young padawan!

Observe carefully, I do:

  • Parallel tests run successfully in main build job with -j$(nproc)
  • For specialized builds like LCG and Ubuntu 22.04, sequential execution chosen wisely it was
  • Balance between speed and stability, maintained it must be

Wise decision this is, for specialized environments. Question this configuration, you need not.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for test execution configurations
echo "Searching for parallel test execution patterns..."
rg "\-j\$\(nproc\)" --type yaml

echo -e "\nSearching for related test timeouts or failures..."
rg "timeout|TIMEOUT|failed|FAILED" -A 5 .gitlab-ci.yml

Length of output: 315


Script:

#!/bin/bash
# Search for test-related configurations
echo "=== CI Test Jobs ==="
rg "test:" -A 10 .gitlab-ci.yml

echo -e "\n=== Build Directory Usage ==="
rg "build" -A 5 .gitlab-ci.yml

echo -e "\n=== CTest Configurations ==="
fd -e txt -e cmake . --exec rg -l "ctest|CTest|TEST"

Length of output: 6421


313-313: Single test execution, concerning this is.

Changed from running all tests to single test test_full_chain_odd_example_pythia_geant4. Verify this change intentional it is, and document reason you must.

✅ Verification successful

Intentional change this is, hmm. Specialized integration test it runs.

Found in Examples/Python/tests/test_examples.py, this test combines Pythia and Geant4 components in full chain execution. Comprehensive integration test it is, sufficient for this CI stage's purpose. Other tests, redundant they may be.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for related test configurations or discussions
echo "Searching for related test configurations..."
rg "test_full_chain_odd_example_pythia_geant4" --type yaml
echo -e "\nSearching for related test files..."
fd -e py -e cpp "test_full_chain" 

Length of output: 365


Script:

#!/bin/bash
# Check git history for this change
echo "=== Checking recent changes to .gitlab-ci.yml ==="
git diff HEAD~1 HEAD -- .gitlab-ci.yml

echo -e "\n=== Looking for test files and documentation ==="
# Search for test files related to Pythia or Geant4
fd -e py "test.*pythia|test.*geant" 

echo -e "\n=== Checking for testing documentation ==="
# Look for testing documentation
fd -g "README*" -g "CONTRIBUTING*" -g "TESTING*" -X cat {}

Length of output: 2071


Script:

#!/bin/bash
# Search for test files with broader patterns
echo "=== Searching for test files ==="
fd -t f "test" -e py -e cpp

echo -e "\n=== Looking for CI documentation ==="
# Check common CI doc locations
fd -t f -g "*CI*.md" -g "*test*.md" -g "README.md" -X grep -l "test" {} | xargs cat

echo -e "\n=== Searching for test patterns ==="
# Search for similar test patterns
rg "test_full_chain|pythia.*test|geant.*test" -t py -t cpp

Length of output: 22803

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (3)
.gitlab-ci.yml (3)

21-35: Cache configuration, well structured it is!

Wise decision to separate cache keys based on:

  • Spack setup script changes
  • Lockfile digest changes

But missing cache policy configuration, I observe. Add cache policy, we should!

   cache:
    - key:
        files:
          - CI/dependencies/setup_spack.sh
        prefix: spack_${SPACK_VERSION}
+       policy: pull-push
+       when: always
      paths:
       - spack
       - .spack

313-313: Test scope limited, it has become!

Single test case test_full_chain_odd_example_pythia_geant4 selected, but reason not documented. If temporary measure this is, comment explaining the limitation, add you should!

-    - pytest -rFsv -k "test_full_chain_odd_example_pythia_geant4" -v -s
+    # Temporarily running only the full chain test due to <reason>
+    - pytest -rFsv -k "test_full_chain_odd_example_pythia_geant4" -v -s

96-98: Cleanup template, repeated it is!

Many jobs, same cleanup configuration they share. To template job, move cleanup script we should!

.cleanup_template:
  after_script:
    - !reference [.spack_cleanup, after_script]

# Then in each job:
build_exatrkx_cpu:
  extends: .cleanup_template
  # ... rest of the job configuration

Also applies to: 130-132, 171-173, 194-196, 224-226, 287-289, 315-317, 356-358, 416-418

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7b9402c and fe3f516.

📒 Files selected for processing (1)
  • .gitlab-ci.yml (16 hunks)
🧰 Additional context used
📓 Learnings (1)
.gitlab-ci.yml (1)
Learnt from: paulgessinger
PR: acts-project/acts#3980
File: .gitlab-ci.yml:67-67
Timestamp: 2025-01-13T12:18:19.248Z
Learning: When reviewing file paths in CI scripts, consider the working directory context set by previous commands like `cd`. In the Acts project's CI, many scripts are executed from within the `src` directory after cloning the repository.
⏰ Context from checks skipped due to timeout of 90000ms (14)
  • GitHub Check: merge-sentinel
  • GitHub Check: linux_ubuntu_extra (ubuntu2204, 20, clang++)
  • GitHub Check: linux_ubuntu_extra (ubuntu2204, 20, g++)
  • GitHub Check: CI Bridge / build_exatrkx
  • GitHub Check: macos
  • GitHub Check: linux_ubuntu
  • GitHub Check: unused_files
  • GitHub Check: CI Bridge / build_exatrkx_cpu
  • GitHub Check: CI Bridge / build_exatrkx_cpu
  • GitHub Check: missing_includes
  • GitHub Check: CI Bridge / clang_tidy
  • GitHub Check: CI Bridge / clang_tidy
  • GitHub Check: docs
  • GitHub Check: build_debug
🔇 Additional comments (2)
.gitlab-ci.yml (2)

37-40: Cleanup script, efficient it is!

Good practice to clean:

  • Git repository
  • Build artifacts
  • Cache files
  • Python bytecode

394-394: Parallel testing, disabled it appears!

Commented out parallel test execution with #-j$(nproc), but reason not documented. If performance impact significant it is, document the rationale you must!

Also applies to: 489-489

@@ -39,14 +64,13 @@ clang_tidy:
&& ln -sf /usr/bin/clang-18 /usr/bin/clang
&& ln -sf /usr/bin/clang-tidy-18 /usr/bin/clang-tidy

- source CI/dependencies.sh
- source CI/dependencies/setup.sh -c clang++
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codebase verification

Correct path, found I have! Fix this inconsistency, we must!

In .gitlab-ci.yml, a single reference to src/CI/dependencies/setup.sh exists, while all other occurrences correctly use CI/dependencies/setup.sh. Change this path, you must:

  • Line with incorrect path: source src/CI/dependencies/setup.sh -c g++

Use CI/dependencies/setup.sh consistently throughout the configuration, hmm, yes!

🔗 Analysis chain

Inconsistent path usage, I sense!

Two different paths for setup script, used they are:

  • CI/dependencies/setup.sh
  • src/CI/dependencies/setup.sh

Choose one path and use consistently, you must!

Also applies to: 159-159, 190-190, 214-214, 255-255, 306-306, 340-340, 380-380

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check which path exists and is used most frequently
echo "Checking file existence..."
ls -l CI/dependencies/setup.sh src/CI/dependencies/setup.sh 2>/dev/null || true

echo -e "\nChecking usage frequency..."
rg "CI/dependencies/setup.sh" --type yaml
rg "src/CI/dependencies/setup.sh" --type yaml

Length of output: 1162

Comment on lines +7 to +10
SPACK_VERSION: develop-acts
LOCKFILE_CACHE_DIR: ${CI_PROJECT_DIR}/spack_lockfile_cache

DEPENDENCY_TAG: v7_b7
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codebase verification

Troubling disturbance in the Force, I sense with SPACK_VERSION!

Invalid, the SPACK_VERSION: develop-acts configuration appears to be. Exists in the Spack repository, this version does not, hmm! Neither as a tag nor as a branch, found it could be. Break your CI pipeline, this might!

  • Verify the correct Spack version identifier, you must
  • In upstream Spack repository, ensure its existence, you should
  • Document the chosen version, wisdom suggests
🔗 Analysis chain

New variables for dependency management, added they are!

Good addition of SPACK_VERSION and LOCKFILE_CACHE_DIR variables, I see. Version control and caching strategy, improved they are. But verify the version tag, we must!

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check if the specified version tag exists in the Spack repository
gh api repos/spack/spack/git/refs/tags/develop-acts || echo "Tag not found"

Length of output: 247


Script:

#!/bin/bash
# Check if develop-acts exists as a branch
gh api repos/spack/spack/branches/develop-acts || echo "Branch not found"

# Also check if this is documented somewhere in the repository
rg -i "develop-acts" -g "!.git*"

Length of output: 283

Copy link
Member

@stephenswat stephenswat left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this looks excellent, and I'm very happy to approve it. Great work!

Does seem to contain some unrelated changes though.

Comment on lines +623 to +627
requires(Concepts::eigen_base_is_fixed_size<val_t> &&
Concepts::eigen_bases_have_same_num_rows<val_t, cov_t> &&
Concepts::eigen_base_is_square<cov_t> &&
Eigen::PlainObjectBase<val_t>::RowsAtCompileTime <=
toUnderlying(eBoundSize))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unintended change?

Comment on lines +4 to +5
test_geant4__particles_simulation.root: fd10da8000715f7f515001670e713efd8df21501b32e9b2635f0152d63eecaf4
test_geant4__hits.root: d8efffea763de487454c23c48bde26548df59f2342807b3b486eb98bdc6a1559
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this a Spack-related change or did this sneak in somehow?

@@ -44,7 +44,7 @@ export DYLD_LIBRARY_PATH="$script_dir/lib:${DYLD_LIBRARY_PATH}"

# activate dependencies if present
if [[ -d "@ROOT_DIR@" ]]; then
. @ROOT_BINDIR@/thisroot.sh
. @ROOT_DIR@/../../../bin/thisroot.sh
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this portable? How can it be that the bin directory lives three levels above ROOT_DIR? Or does ROOT_DIR point at where the .cmake file lives?

@@ -500,7 +500,7 @@ class VectorMultiTrajectory final
Concepts::eigen_bases_have_same_num_rows<val_t, cov_t> &&
Concepts::eigen_base_is_square<cov_t> &&
Eigen::PlainObjectBase<val_t>::RowsAtCompileTime <=
static_cast<std::underlying_type_t<BoundIndices>>(eBoundSize))
toUnderlying(eBoundSize))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I assume this is unrelated, together with many of the changes below it.

Copy link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Changes Performance Component - Core Affects the Core module Component - Examples Affects the Examples module Component - Plugins Affects one or more Plugins Event Data Model Infrastructure Changes to build tools, continous integration, ...
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants