Skip to content

Commit 6a6e95f

Browse files
committed
Bootstrap Copier template
1 parent 0f7655a commit 6a6e95f

48 files changed

Lines changed: 1547 additions & 702 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.beman-tidy.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
2+
3+
# This is the config file for beman-tidy, which checks compliance with the Beman Standard (https://github.com/bemanproject/beman/blob/main/docs/beman_standard.md)
4+
# Check documentation for beman-tidy here:
5+
# https://github.com/bemanproject/beman-tidy/blob/main/README.md
6+
7+
disabled_rules:
8+
# None
9+
ignored_paths:
10+
# None

.clang-format

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ IndentCaseBlocks: false
125125
IndentCaseLabels: false
126126
IndentExternBlock: AfterExternBlock
127127
IndentGotoLabels: true
128-
IndentPPDirectives: None
128+
IndentPPDirectives: BeforeHash
129129
IndentRequiresClause: true
130130
IndentWidth: 4
131131
IndentWrappedFunctionNames: false

.copier-answers.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# Standard answers and internal state managed by Copier
2+
_commit: 2.0.0-322-gc3c230c
3+
_src_path: https://github.com/steve-downey/exemplar.git
4+
description: Expected Over References
5+
maintainer: steve-downey
6+
minimum_cpp_build_version: '20'
7+
paper: PnnnnRr
8+
project_name: expected
9+
unit_test_library: gtest
10+
# Hidden variables manually tracked because 'when: false' omits them from _copier_answers
11+
generating_exemplar: false
12+
owner: "bemanproject"
13+
ci_tests_cron: "15 12 * * 2"
14+
pre_commit_update_cron: "50 7 * * 4"

.exemplar_version

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ec861600898941a5114f352f1efcba57d825b6d0

.gitattributes

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
infra/** linguist-vendored
2-
cookiecutter/** linguist-vendored
2+
template/** linguist-vendored
3+
copier/** linguist-vendored
34
*.bib -linguist-detectable
45
*.tex -linguist-detectable
56
papers/* linguist-documentation

.github/CODEOWNERS

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,3 @@
11
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
2-
# Codeowners for reviews on PRs
32

4-
# Note(river):
5-
# **Please understand how codeowner file work before uncommenting anything in this section:**
6-
# https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners
7-
#
8-
# For projects using expected as a template and intend to reuse its infrastructure,
9-
# River (@wusatosi) helped create most of the original infrastructure under the scope described below,
10-
# they are more than happy to help out with any PRs downstream,
11-
# as well as to sync any useful change upstream to expected.
12-
#
13-
# Github Actions:
14-
# .github/workflows/ @wusatosi # Add other project owners here
15-
#
16-
# Devcontainer:
17-
# .devcontainer/ @wusatosi # Add other project owners here
18-
#
19-
# Pre-commit:
20-
# .pre-commit-config.yaml @wusatosi # Add other project owners here
21-
# .markdownlint.yaml @wusatosi # Add other project owners here
22-
23-
* @ednolan @bretbrownjr @camio @dietmarkuehl @neatudarius @steve-downey @wusatosi
3+
* @steve-downey

.github/workflows/ci_tests.yml

Lines changed: 113 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,57 @@ on:
99
pull_request:
1010
workflow_dispatch:
1111
schedule:
12-
- cron: '30 15 * * *'
12+
- cron: '15 12 * * 2'
13+
14+
concurrency:
15+
group: ${{format('{0}:{1}', github.repository, github.ref)}}
16+
cancel-in-progress: true
1317

1418
jobs:
1519
beman-submodule-check:
16-
uses: bemanproject/infra-workflows/.github/workflows/reusable-beman-submodule-check.yml@1.2.1
20+
uses: bemanproject/infra-workflows/.github/workflows/reusable-beman-submodule-check.yml@1.7.2
21+
22+
copier-test:
23+
runs-on: ubuntu-latest
24+
container:
25+
image: ghcr.io/bemanproject/infra-containers-gcc:latest
26+
steps:
27+
- uses: actions/checkout@v4
28+
- name: Install uv
29+
shell: bash
30+
run: |
31+
curl -LsSf https://astral.sh/uv/install.sh | sh
32+
echo "$HOME/.local/bin" >> $GITHUB_PATH
33+
- name: Test Copier Template Variants
34+
shell: bash
35+
env:
36+
GITHUB_ACTIONS: true
37+
# gcc-release will use GCC 15 which supports C++23 modules appropriately in this container
38+
run: ./copier/test_standard_project.sh gcc-release
1739

40+
copier-cmake-matrix:
41+
runs-on: ubuntu-latest
42+
container:
43+
image: ghcr.io/bemanproject/infra-containers-gcc:latest
44+
strategy:
45+
fail-fast: false
46+
matrix:
47+
cmake_version: ["3.30.9", "3.31.10", "4.0.3", "4.1.3", "4.2.3", "4.3.2"]
48+
steps:
49+
- uses: actions/checkout@v4
50+
- name: Install uv
51+
shell: bash
52+
run: |
53+
curl -LsSf https://astral.sh/uv/install.sh | sh
54+
echo "$HOME/.local/bin" >> $GITHUB_PATH
55+
- name: Test Copier Template Variants Matrix
56+
shell: bash
57+
env:
58+
GITHUB_ACTIONS: true
59+
# Run across our experimental boundaries
60+
run: ./copier/test_cmake_matrix.sh gcc-release ${{ matrix.cmake_version }}
1861
preset-test:
19-
uses: bemanproject/infra-workflows/.github/workflows/reusable-beman-preset-test.yml@1.2.1
62+
uses: bemanproject/infra-workflows/.github/workflows/reusable-beman-preset-test.yml@1.7.2
2063
with:
2164
matrix_config: >
2265
[
@@ -31,25 +74,50 @@ jobs:
3174
]
3275
3376
build-and-test:
34-
uses: bemanproject/infra-workflows/.github/workflows/reusable-beman-build-and-test.yml@1.2.1
77+
uses: bemanproject/infra-workflows/.github/workflows/reusable-beman-build-and-test.yml@1.7.2
3578
with:
3679
matrix_config: >
3780
{
3881
"gcc": [
39-
{ "versions": ["15"],
82+
{ "versions": ["16"],
4083
"tests": [
4184
{ "cxxversions": ["c++26"],
4285
"tests": [
4386
{ "stdlibs": ["libstdc++"],
4487
"tests": [
4588
"Debug.Default", "Release.Default", "Release.TSan",
4689
"Release.MaxSan", "Debug.Werror",
47-
"Debug.Coverage"
90+
"Debug.Coverage", "Debug.-DBEMAN_EXPECTED_USE_MODULES=On"
4891
]
4992
}
5093
]
5194
},
52-
{ "cxxversions": ["c++23", "c++20", "c++17"],
95+
{ "cxxversions": ["c++23"],
96+
"tests": [
97+
{ "stdlibs": ["libstdc++"],
98+
"tests": [
99+
"Release.Default", "Debug.-DBEMAN_EXPECTED_USE_MODULES=On"
100+
]
101+
}
102+
]
103+
},
104+
{ "cxxversions": ["c++20", "c++17"],
105+
"tests": [{ "stdlibs": ["libstdc++"], "tests": ["Release.Default"]}]
106+
}
107+
]
108+
},
109+
{ "versions": ["15"],
110+
"tests": [
111+
{ "cxxversions": ["c++26", "c++23"],
112+
"tests": [
113+
{ "stdlibs": ["libstdc++"],
114+
"tests": [
115+
"Release.Default", "Debug.-DBEMAN_EXPECTED_USE_MODULES=On"
116+
]
117+
}
118+
]
119+
},
120+
{ "cxxversions": ["c++20", "c++17"],
53121
"tests": [{ "stdlibs": ["libstdc++"], "tests": ["Release.Default"]}]
54122
}
55123
]
@@ -71,26 +139,36 @@ jobs:
71139
}
72140
],
73141
"clang": [
74-
{ "versions": ["21"],
142+
{ "versions": ["22"],
75143
"tests": [
76144
{"cxxversions": ["c++26"],
77145
"tests": [
78146
{ "stdlibs": ["libstdc++", "libc++"],
79147
"tests": [
80148
"Debug.Default", "Release.Default", "Release.TSan",
81-
"Release.MaxSan", "Debug.Werror"
149+
"Release.MaxSan", "Debug.Werror",
150+
"Debug.-DBEMAN_EXPECTED_USE_MODULES=On"
82151
]
83152
}
84153
]
85154
},
86-
{ "cxxversions": ["c++23", "c++20", "c++17"],
155+
{ "cxxversions": ["c++23"],
156+
"tests": [
157+
{ "stdlibs": ["libstdc++", "libc++"],
158+
"tests": [
159+
"Release.Default", "Debug.-DBEMAN_EXPECTED_USE_MODULES=On"
160+
]
161+
}
162+
]
163+
},
164+
{ "cxxversions": ["c++20", "c++17"],
87165
"tests": [
88166
{"stdlibs": ["libstdc++", "libc++"], "tests": ["Release.Default"]}
89167
]
90168
}
91169
]
92170
},
93-
{ "versions": ["20", "19"],
171+
{ "versions": ["21", "20", "19"],
94172
"tests": [
95173
{ "cxxversions": ["c++26", "c++23", "c++20", "c++17"],
96174
"tests": [
@@ -99,7 +177,17 @@ jobs:
99177
}
100178
]
101179
},
102-
{ "versions": ["18", "17"],
180+
{ "versions": ["18"],
181+
"tests": [
182+
{ "cxxversions": ["c++26", "c++23", "c++20", "c++17"],
183+
"tests": [{"stdlibs": ["libc++"], "tests": ["Release.Default"]}]
184+
},
185+
{ "cxxversions": ["c++23", "c++20", "c++17"],
186+
"tests": [{"stdlibs": ["libstdc++"], "tests": ["Release.Default"]}]
187+
}
188+
]
189+
},
190+
{ "versions": ["17"],
103191
"tests": [
104192
{ "cxxversions": ["c++26", "c++23", "c++20", "c++17"],
105193
"tests": [{"stdlibs": ["libc++"], "tests": ["Release.Default"]}]
@@ -125,7 +213,10 @@ jobs:
125213
{ "cxxversions": ["c++23"],
126214
"tests": [
127215
{ "stdlibs": ["stl"],
128-
"tests": ["Debug.Default", "Release.Default", "Release.MaxSan"]
216+
"tests": [
217+
"Debug.Default", "Release.Default", "Release.MaxSan",
218+
"Debug.-DBEMAN_EXPECTED_USE_MODULES=On"
219+
]
129220
}
130221
]
131222
}
@@ -134,13 +225,17 @@ jobs:
134225
]
135226
}
136227
137-
install-test:
138-
uses: bemanproject/infra-workflows/.github/workflows/reusable-beman-install-test.yml@1.2.1
228+
vcpkg-ci:
229+
uses: bemanproject/infra-workflows/.github/workflows/reusable-beman-vcpkg-ci.yml@1.7.2
139230
with:
140-
image: ghcr.io/bemanproject/infra-containers-gcc:latest
141-
cxx_standard: 26
231+
port_name: beman-expected
232+
feature_combinations: |
233+
[
234+
{"features": {}},
235+
{"features": {"modules": true}}
236+
]
142237
143238
create-issue-when-fault:
144239
needs: [preset-test, build-and-test]
145240
if: failure() && github.event_name == 'schedule'
146-
uses: bemanproject/infra-workflows/.github/workflows/reusable-beman-create-issue-when-fault.yml@1.2.1
241+
uses: bemanproject/infra-workflows/.github/workflows/reusable-beman-create-issue-when-fault.yml@1.7.2

.github/workflows/pre-commit-check.yml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
12
name: Lint Check (pre-commit)
23

34
on:
@@ -8,6 +9,12 @@ on:
89
branches:
910
- main
1011

12+
permissions:
13+
contents: read
14+
checks: write
15+
issues: write
16+
pull-requests: write
17+
1118
jobs:
1219
pre-commit:
13-
uses: bemanproject/infra-workflows/.github/workflows/reusable-beman-pre-commit.yml@1.2.1
20+
uses: bemanproject/infra-workflows/.github/workflows/reusable-beman-pre-commit.yml@1.7.2

.github/workflows/pre-commit-update.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ name: Weekly pre-commit autoupdate
55
on:
66
workflow_dispatch:
77
schedule:
8-
- cron: "0 16 * * 0"
8+
- cron: "50 7 * * 4"
99

1010
jobs:
1111
auto-update-pre-commit:
12-
uses: bemanproject/infra-workflows/.github/workflows/reusable-beman-update-pre-commit.yml@1.2.1
12+
uses: bemanproject/infra-workflows/.github/workflows/reusable-beman-update-pre-commit.yml@1.7.2
1313
secrets:
1414
APP_ID: ${{ secrets.AUTO_PR_BOT_APP_ID }}
1515
PRIVATE_KEY: ${{ secrets.AUTO_PR_BOT_PRIVATE_KEY }}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
2+
3+
name: vcpkg registry release
4+
on:
5+
release:
6+
types: [published]
7+
jobs:
8+
vcpkg-release:
9+
uses: bemanproject/infra-workflows/.github/workflows/reusable-beman-vcpkg-release.yml@1.7.2
10+
with:
11+
port_name: beman-expected
12+
secrets:
13+
VCPKG_REGISTRY_TOKEN: ${{ secrets.VCPKG_REGISTRY_TOKEN }}

0 commit comments

Comments
 (0)