Skip to content

Commit

Permalink
Added contributing file
Browse files Browse the repository at this point in the history
Added bestpractices badge

Update readme

Update readme

Update readme

Update readme

Update Copyright

Added Deniz to the list of contributors

Added fair-software.yml

Update zenodo file

Minor

Minor

Update github workflows

Update github workflows

Update scripts for generating json files

Added more contributors

Update codemeta.json

Update codemeta.json

Update codemeta.json

Minor change readme

Minor change

Clang-format

Update authors

Minor change for zenodo

Update cleanup_cache.yml

Deleted old folders xball, mfi and lumon

Added a display for cmake status

Added a display for SUPPORTED_CXX_STANDARDS

Added a display for CMAKE_CXX_STANDARD

Removed old detector classes for lumon, mfi and xball

Removed xball from compilehelper/CMakeLists.txt

Added color to supported C++ standards

Minor change in the general CMakeLists-txt
  • Loading branch information
jose-luis-rs committed Jan 1, 2025
1 parent 331d5ed commit 5e6e635
Show file tree
Hide file tree
Showing 1,642 changed files with 2,390 additions and 11,069 deletions.
22 changes: 14 additions & 8 deletions .github/workflows/check_metadata.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,27 @@ name: Check AUTHORS and CONTRIBUTORS in metadata
on:
push:
paths:
- AUTHORS
- CONTRIBUTORS
- .zenodo.json
- AUTHORS
- CONTRIBUTORS
- .zenodo.json
pull_request:
paths:
- AUTHORS
- CONTRIBUTORS
- .zenodo.json
- AUTHORS
- CONTRIBUTORS
- .zenodo.json

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Try updating metadata
run: python meta_update.py
run: python update_zenodo.py

- name: Check for Updates
run: git diff --exit-code || echo "Metadata files require updates. Please commit the changes."
run: |
git diff --exit-code || (echo "Metadata files require updates. Please commit the changes." && exit 1)
25 changes: 19 additions & 6 deletions .github/workflows/cleanup_cache.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,23 +14,36 @@ jobs:
- name: Checkout repository
uses: actions/checkout@v4

- name: Setup Git
run: git config --global user.email "[email protected]" && git config --global user.name "GitHub Actions"
- name: Debug gh CLI
run: |
gh --version
gh auth status
gh extension list
- name: Cleanup
- name: Update GitHub CLI
run: sudo apt-get install gh

- name: Install and Verify gh-actions-cache Extension
run: |
gh extension install actions/gh-actions-cache || exit 1
gh extension list | grep gh-actions-cache || (echo "Extension installation failed" && exit 1)
- name: Test actions-cache list
run: |
gh actions-cache list -R R3BRootGroup/R3BRoot -L 5 || echo "Failed to list caches"
- name: Cleanup
run: |
echo "Fetching list of cache keys"
cacheKeys=$(gh actions-cache list -R R3BRootGroup/R3BRoot -L 100 | cut -f 1 | grep -v 'build-deps') || exit 1
## Setting this to not fail the workflow while deleting cache keys.
set +e
echo "Deleting old caches..."
for cacheKey in $cacheKeys
do
gh actions-cache delete $cacheKey -R R3BRootGroup/R3BRoot --confirm || exit 1
gh actions-cache delete $cacheKey -R R3BRootGroup/R3BRoot --confirm || echo "Failed to delete $cacheKey"
done
echo "Done"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

23 changes: 23 additions & 0 deletions .github/workflows/fair-software.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# SPDX-FileCopyrightText: 2024 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH, Darmstadt, Germany
#
# SPDX-License-Identifier: LGPL-3.0-or-later

name: fair-software

on:
push:
paths:
- README.md

jobs:
verify:
name: "fair-software"
runs-on: ubuntu-latest
if: github.repository == 'R3BRootGroup/R3BRoot'
steps:
- uses: fair-software/[email protected]
name: Measure compliance with fair-software.eu recommendations
env:
PYCHARM_HOSTED: "Trick colorama into displaying colored output"
with:
MY_REPO_URL: "https://github.com/${{ github.repository }}"
28 changes: 25 additions & 3 deletions .zenodo.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
"related_identifiers": [
{
"identifier": "https://github.com/FairRootGroup/FairSoft/",
"relation": "isDerivedFrom",
"relation": "isCompiledBy",
"resource_type": "software",
"scheme": "url"
},
Expand All @@ -24,7 +24,7 @@
},
{
"identifier": "https://gitlab.com/chalmers-subexp/ucesb/",
"relation": "isRelatedTo",
"relation": "isSupplementedBy",
"resource_type": "software",
"scheme": "url"
},
Expand Down Expand Up @@ -69,9 +69,10 @@
"Data analysis",
"Structure and dynamics of nuclei",
"Nuclear reactions",
"Equation of state",
"Nuclear fission",
"Hypernuclei",
"Equation of state",
"Short range NN correlations",
"R3B experiments",
"GSI/FAIR facility"
],
Expand All @@ -93,6 +94,12 @@
"orcid": "0000-0001-6919-8869",
"affiliation": "GSI Helmholtzzentrum für Schwerionenforschung, 64291 Darmstadt, Germany"
},
{
"name": "Audouin, Laurent",
"orcid": "0000-0001-9899-6923",
"email": "[email protected]",
"affiliation": "IPN Orsay, 91406 Orsay, France"
},
{
"name": "Barriere, Antoine",
"orcid": "0009-0005-2204-3516",
Expand Down Expand Up @@ -317,6 +324,11 @@
"orcid": "0000-0002-6506-8562",
"affiliation": "STFC Daresbury Laboratory, Warrington, United Kingdom"
},
{
"type": "Other",
"name": "Lorenz, Enis",
"affiliation": "Technische Universität Darmstadt, Fachbereich Physik, Institut für Kernphysik, 64289 Darmstadt, Germany"
},
{
"type": "Other",
"name": "Paschalis, Stefanos",
Expand All @@ -338,6 +350,11 @@
"name": "Ponnath, Lukas",
"affiliation": "Technische Universität Darmstadt, Fachbereich Physik, Institut für Kernphysik, 64289 Darmstadt, Germany"
},
{
"type": "Other",
"name": "Qi, Christine",
"affiliation": "Massachusetts Institute of Technology, MA 02139 Cambridge, USA"
},
{
"type": "Other",
"name": "Rybalchenko, Alexey"
Expand All @@ -352,6 +369,11 @@
"name": "Rossi, Dominic",
"affiliation": "Technische Universität Darmstadt, Fachbereich Physik, Institut für Kernphysik, 64289 Darmstadt, Germany"
},
{
"type": "Other",
"name": "Savran, Deniz",
"affiliation": "GSI Helmholtzzentrum für Schwerionenforschung, 64291 Darmstadt, Germany"
},
{
"type": "Other",
"name": "Storck, Sonja",
Expand Down
1 change: 1 addition & 0 deletions AUTHORS
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
Rodríguez-Sánchez, Jose Luis [[email protected]] [https://orcid.org/0000-0002-4702-5294] [CITENI, Industrial Campus of Ferrol, University of Coruña, 15403 Ferrol, Spain]
Alvarez Pol, Hector [[email protected]] [https://orcid.org/0000-0001-9643-6252] [IGFAE, University of Santiago de Compostela, 15782 Santiago de Compostela, Spain]
Atar, Leyla [https://orcid.org/0000-0001-6919-8869] [GSI Helmholtzzentrum für Schwerionenforschung, 64291 Darmstadt, Germany]
Audouin, Laurent [[email protected]] [https://orcid.org/0000-0001-9899-6923] [IPN Orsay, 91406 Orsay, France]
Barriere, Antoine [https://orcid.org/0009-0005-2204-3516] [GANIL, 14000 Caen, France]
Bott, Lukas [https://orcid.org/0000-0002-9554-6246] [Goethe University Frankfurt, 60629 Frankfurt am Main, Germany]
Chatillon, Audrey [CEA, DAM, DIF, 91297 Arpajon, France]
Expand Down
30 changes: 23 additions & 7 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
##############################################################################
# Copyright (C) 2019 GSI Helmholtzzentrum für Schwerionenforschung GmbH #
# Copyright (C) 2019-2024 Members of R3B Collaboration #
# Copyright (C) 2019-2025 Members of R3B Collaboration #
# #
# This software is distributed under the terms of the #
# GNU General Public Licence (GPL) version 3, #
Expand All @@ -24,7 +24,7 @@ endif()
cmake_minimum_required(VERSION 3.15 FATAL_ERROR)

# set cmake policies
cmake_policy(VERSION 3.15...3.24)
cmake_policy(VERSION 3.15...3.31)

# Set name of our project to "R3BROOT". Has to be done after check of cmake version
project(R3BROOT LANGUAGES C CXX Fortran)
Expand Down Expand Up @@ -112,8 +112,6 @@ if("${FairRoot_VERSION}" VERSION_LESS 18.2.1)
FATAL_ERROR
"Incompatible FairRoot version detected: ${FairRoot_VERSION}. R3BRoot requires FairRoot v18.2.1 or later"
)
else()
message(STATUS "You seem to be using FairRoot ${FairRoot_VERSION}.")
endif()

# added a variable to point to r3broot path in the system
Expand Down Expand Up @@ -343,6 +341,27 @@ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
set(VMCWORKDIR ${CMAKE_SOURCE_DIR})

# Display SUPPORTED_CXX_STANDARDS
set(SUPPORTED_CXX_STANDARDS "")
foreach(version 14 17 20 23)
string(CONCAT flag "cxx_std_" ${version})
if(flag IN_LIST CMAKE_CXX_COMPILE_FEATURES)
list(APPEND SUPPORTED_CXX_STANDARDS ${version})
endif()
endforeach()

if(SUPPORTED_CXX_STANDARDS)
message(STATUS "${Cyan}Supported C++ standards:${CR} ${SUPPORTED_CXX_STANDARDS}")
message(STATUS "${Cyan}CMake is using C++ standard:${CR} ${BGreen}${CMAKE_CXX_STANDARD}${CR}")
else()
message(WARNING "No supported C++ standards found!")
endif()

# Display configurations
message(STATUS "CMake C++ Flags: ${CMAKE_CXX_FLAGS}")
message(STATUS "Library Output Directory: ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}")
message(STATUS "Runtime Output Directory: ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")

if(USE_PATH_INFO)
if(APPLE)
set(LD_LIBRARY_PATH $ENV{DYLD_LIBRARY_PATH})
Expand Down Expand Up @@ -554,11 +573,9 @@ if(NOT MODULE)
endif()
add_subdirectory(neuland)
add_subdirectory(glad)
add_subdirectory(xball)
add_subdirectory(dch)
add_subdirectory(fiber)
add_subdirectory(gfi)
add_subdirectory(mfi)
add_subdirectory(land)
add_subdirectory(los)
add_subdirectory(rolu)
Expand All @@ -575,7 +592,6 @@ if(NOT MODULE)
add_subdirectory(strawtubes)
add_subdirectory(music)
add_subdirectory(r3bgen)
add_subdirectory(lumon)
add_subdirectory(califa)
add_subdirectory(evtvis)
add_subdirectory(psp)
Expand Down
130 changes: 130 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
# Contributing

## Bug reports, feature request, questions etc

Create a [Github Issue](https://github.com/R3BRootGroup/R3BRoot/issues/new/choose).

## Contributing code

Create a [Github Pull Request](https://github.com/R3BRootGroup/R3BRoot/compare):

1. By default, develop against the [`dev`](https://github.com/R3BRootGroup/R3BRoot/tree/dev)
branch and base your PR against it.
* In rare cases (e.g. backports, some hotfixes) base against the appropriate
branch.
2. If you are a first time contributor, add a separate commit in your PR which
adds your name to the [`CONTRIBUTORS`](CONTRIBUTORS) file.
3. Follow our [Coding Guidelines](#coding-guidelines).
4. Expect that a reviewer will ask you for restructuring your commits! This
usually happens towards the end of the lifetime of a PR when it matured
enough for merging.

# Coding Guidelines

These guidelines are horribly incomplete at this point in time, but one has to
start somewhere ;) Exactly because these guidelines are relatively new, do not be
alarmed if large parts of this repo do not follow them (yet). The idea is to
apply them incrementally on new code and when existing code is modified. These
guidelines will also evolve as time passes.

How to reference a rule in an issue or PR discussion:
```
// reference to our guideline
[G.2](https://github.com/R3BRootGroup/R3BRoot/blob/master/CONTRIBUTING.md#g.2-adopted-c++-core-guidelines)
// reference to c++ core guideline with prefix CPPCG::
[CPPCG::I.11](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#i11-never-transfer-ownership-by-a-raw-pointer-t-or-reference-t)
```

## G - General

### G.1 Our CI runs [`clang-tidy`](https://clang.llvm.org/extra/clang-tidy/)

**Config**: [`.clang-tidy`](.clang-tidy)

We currently do not strictly enforce *clang-tidy* checks, but the author
should try to address any warnings. The set of enabled checks will evolve over
time.

### G.2 Adopted C++ Core Guidelines

This shall be an evolving list of explicitely adopted C++ Core Guidelines:

* [CPPCG::I.11: Never transfer ownership by a raw pointer (`T*`) or reference (`T&`)](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#i11-never-transfer-ownership-by-a-raw-pointer-t-or-reference-t)
* If an owning raw pointer cannot be avoided for legacy reasons,
**you must add a comment documenting the ownership semantics!**

### G.3 Write a good Git history

* Follow [the seven rules of a great Git commit message](https://cbea.ms/git-commit/#seven-rules)!
* Use a meaningful commit granularity, e.g. do not mix
unrelated changes in a single commit and vice verse squash related commits
into one.
* Utilize [the commit message body to explain *what* and *why* and not *how*](https://cbea.ms/git-commit/#why-not-how).
Aim your message to be meaningful (concise, but complete
enough) to a reader in the future! See also G.4!
* Utilize [reference keywords](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword)
both in commit messages as well as in PR comments if applicable.

### G.4 Conventional Commits

* Follow the [Conventional Commits Specification](https://www.conventionalcommits.org/en/v1.0.0/)
* Adopted `type`s: `fix:`, `feat:`, `build:`, `chore:`, `ci:`, `docs:`,
`style:`, `refactor:`, `perf:`, `test:`
* If a `scope` is used, prefer the library name (first directory level below
`R3BRoot/`), e.g. `fix(base):` or `feat(geobase):`

### G.5 Signed Commits and Tags

You may use any signature format Git and Github support (SSH e.g. may be more
convenient, if one does not have a GPG key yet).

* [Github - Setup](https://docs.github.com/en/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key)
* [Github - Signing Commits](https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits)
* [Github - Signing Tags](https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-tags)
* [Git - Signing Your Work](https://git-scm.com/book/en/v2/Git-Tools-Signing-Your-Work)
Make sure to consider `git config [--local|--global] commit.gpgsign true`
(scroll down to the bottom)

## D - Documentation

### D.1 Use [doxygen-style comments](https://www.doxygen.nl/manual/commands.html)

## S - Style

### S.1 Our CI enforces formatting with [`clang-format`](https://clang.llvm.org/docs/ClangFormat.html)

**Config**: [`.clang-format`](.clang-format)

Rarely, it is needed to opt-out of *clang-format* for certain code sections
because it would just make things worse.

**Example**:
```cpp
// clang-format off
fDescription.add_options()
("help", "Print this message")
("nevents", po::value<int>(), "Number of events to simulate")
("engine", po::value<vector<string>>(), "Monte Carlo engine")
("multi-threaded", "Geant4 multi threaded")
("output-file", po::value<vector<string>>(), "Output file")
("parameter-file", po::value<vector<string>>(), "Parameter file")
("random-seed", po::value<int>(), "Seed for the random number generator");
// clang-format on
```

### S.2 Prefer variable names describing *what* they contain

Avoid repeating just the typename.

**Reason**: Readability

**Example**:
```cpp
TList* list = module->GetList(); // avoid
TList* volList = module->GetListOfVolumes(); // acceptable
TList* volumes = module->GetVolumes(); // ✓ prefer

for (auto const& listEntry : *list) { /*...*/ } // avoid
for (auto const& aVol : *volList) { /*...*/ } // acceptable
for (auto const& volume : *volumes) { /*...*/ } // ✓ prefer
```
Loading

0 comments on commit 5e6e635

Please sign in to comment.