mirror of https://github.com/aminya/setup-cpp.git
Compare commits
290 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
04f0267e50 | |
|
|
1155f23302 | |
|
|
867d72f10a | |
|
|
daf5d4b9da | |
|
|
31141736b3 | |
|
|
9792a2bbe0 | |
|
|
27061795a8 | |
|
|
1f17f92d6a | |
|
|
bd777f32ba | |
|
|
f3c42a2724 | |
|
|
38bbe83367 | |
|
|
156935991e | |
|
|
51ca1f1f80 | |
|
|
5c16b2f2fd | |
|
|
7c7690a1ac | |
|
|
aaf5bb78ea | |
|
|
4878b35f60 | |
|
|
957a3565d3 | |
|
|
aa2e7dbda1 | |
|
|
c9b0b918df | |
|
|
9306008c10 | |
|
|
9bc9b8cd8a | |
|
|
3481e9e840 | |
|
|
cc0e9fb8ec | |
|
|
131fbe52b0 | |
|
|
d93d404f38 | |
|
|
a55b1da658 | |
|
|
24822b26f9 | |
|
|
747e9cfe05 | |
|
|
26bd7cda45 | |
|
|
6f1d3cd81e | |
|
|
bb0daa4e32 | |
|
|
a276e6e3d1 | |
|
|
1c89539b8f | |
|
|
b32feb04d5 | |
|
|
d8571402cb | |
|
|
aa0fcb9bee | |
|
|
988cdb3377 | |
|
|
d09e6b8dab | |
|
|
c43a237684 | |
|
|
6004eca28b | |
|
|
d42bb0b88f | |
|
|
c9eb020813 | |
|
|
3cb32ec74d | |
|
|
fb3f6ad2f8 | |
|
|
559fcdd572 | |
|
|
8e6c0edd38 | |
|
|
8ffe76cee3 | |
|
|
0fa8654824 | |
|
|
928af1ef3b | |
|
|
751b635450 | |
|
|
056bb3b1d9 | |
|
|
fe10751e1c | |
|
|
c0171961c2 | |
|
|
ce9f94db97 | |
|
|
9392dd1bd8 | |
|
|
2e6bb1caa0 | |
|
|
004edc1952 | |
|
|
46cbfc276f | |
|
|
396258ba63 | |
|
|
70e614fd48 | |
|
|
075261cd2b | |
|
|
fcda129998 | |
|
|
42ccc76417 | |
|
|
af7dd8c367 | |
|
|
b21cd99e0b | |
|
|
085eecfbd1 | |
|
|
197080ad94 | |
|
|
15c6190549 | |
|
|
38b4d16f6e | |
|
|
00a96b353f | |
|
|
8d6f65af17 | |
|
|
55470af31b | |
|
|
820b8f3163 | |
|
|
3a19939866 | |
|
|
3b773c4e87 | |
|
|
0d11c74dbd | |
|
|
f0dab3c2eb | |
|
|
f015113d31 | |
|
|
9dc9c217f4 | |
|
|
5649ee9e2d | |
|
|
ecb2ccca2e | |
|
|
2a58e75f05 | |
|
|
f1825e19b6 | |
|
|
e09ae7eb8e | |
|
|
45a956b27e | |
|
|
1cfde8e589 | |
|
|
a4ca8de391 | |
|
|
022729da27 | |
|
|
6b72a94712 | |
|
|
464f3a00d5 | |
|
|
faff663ab1 | |
|
|
da1971da81 | |
|
|
dbf5b5e2bf | |
|
|
3fd1b0b32c | |
|
|
988b5fd210 | |
|
|
c9348d3629 | |
|
|
9b5350fb6e | |
|
|
b7dcc5b7e6 | |
|
|
264de9ab1a | |
|
|
fc5f36e99b | |
|
|
1134b80cc2 | |
|
|
6540167f34 | |
|
|
62036a9dd7 | |
|
|
350b16f518 | |
|
|
4c0bf0acdb | |
|
|
ecc6c767e0 | |
|
|
00fe6df1cf | |
|
|
46ac5adacc | |
|
|
e10853e3f5 | |
|
|
3fffbe9648 | |
|
|
c9145519e3 | |
|
|
5c5dffcda7 | |
|
|
6c94aa9d63 | |
|
|
80ffb63efd | |
|
|
5accdbc0a7 | |
|
|
d8c2b30cb3 | |
|
|
829f53844a | |
|
|
28288fd7bc | |
|
|
5ea110ae8d | |
|
|
9bc8921c0a | |
|
|
e8ac0e7160 | |
|
|
9d12750bbe | |
|
|
c9007c8f5a | |
|
|
05bd2b5297 | |
|
|
3d8c387d48 | |
|
|
55f022dea4 | |
|
|
75890615f7 | |
|
|
a7162273d0 | |
|
|
f40cb3bc3f | |
|
|
ac92a10732 | |
|
|
d10f4b6db0 | |
|
|
8fb6bd1b28 | |
|
|
a993d3ff56 | |
|
|
d0235b0adb | |
|
|
79f7ff95eb | |
|
|
3bc026fd01 | |
|
|
6c5ed96033 | |
|
|
70850773b2 | |
|
|
186f2dc52d | |
|
|
b683fdffce | |
|
|
bb5b6b1b44 | |
|
|
6370aaa025 | |
|
|
95a7de4f2e | |
|
|
d6447bbe91 | |
|
|
71c0122abf | |
|
|
ad7d44b1e3 | |
|
|
7e66da1495 | |
|
|
f37a612a84 | |
|
|
d60a91780b | |
|
|
a5ee5b0e9b | |
|
|
dc7c474237 | |
|
|
a8782096b0 | |
|
|
f5f4ddffea | |
|
|
6ef4c24024 | |
|
|
d1834415a9 | |
|
|
68964ee26c | |
|
|
6ee48d5c81 | |
|
|
fc7a5158bd | |
|
|
1837c0d47a | |
|
|
83d70f96bc | |
|
|
be9dd533df | |
|
|
2e04f42cca | |
|
|
6ecab5ef9d | |
|
|
8eb691a796 | |
|
|
895d69ee98 | |
|
|
8e78c541a2 | |
|
|
c04f432701 | |
|
|
24ed36b061 | |
|
|
d34b955da5 | |
|
|
ae24e964ab | |
|
|
8a0c8a726b | |
|
|
ad49f54a72 | |
|
|
f23c0b8778 | |
|
|
d8d2caee94 | |
|
|
477dd40685 | |
|
|
2ee99e208e | |
|
|
0730cb5e36 | |
|
|
5b56272eaf | |
|
|
bcc7fc2a92 | |
|
|
d04bcbf1dc | |
|
|
e6bd753a7f | |
|
|
4d2ad5fc8b | |
|
|
1158c50fa0 | |
|
|
9a2e61232c | |
|
|
4c992d0556 | |
|
|
ba81f6ae16 | |
|
|
5a0bbafcb2 | |
|
|
3108fdcf8d | |
|
|
dd785bad39 | |
|
|
18f6af3e6c | |
|
|
f737a07371 | |
|
|
6cd53aa7e2 | |
|
|
f4fab9f74a | |
|
|
7974077db1 | |
|
|
045f4c5242 | |
|
|
2fe3219ef1 | |
|
|
7ea6387acb | |
|
|
01ccf4c1cc | |
|
|
be9505b2e5 | |
|
|
2428548d77 | |
|
|
ae4905b61c | |
|
|
8b1e80507e | |
|
|
af1b02b5ed | |
|
|
9845e6e84d | |
|
|
1273879b4d | |
|
|
a96be2f0e6 | |
|
|
fd0d475a53 | |
|
|
81892a4640 | |
|
|
d11e5d7d70 | |
|
|
29c12dc98c | |
|
|
a63071ebb3 | |
|
|
8115710285 | |
|
|
660206b3e3 | |
|
|
b59e0ce00b | |
|
|
374c0cd9ec | |
|
|
2250f08263 | |
|
|
1916446e22 | |
|
|
67fad8bf37 | |
|
|
a4bc77491c | |
|
|
a835d4b72e | |
|
|
6ef1af9182 | |
|
|
fb55d3cdfe | |
|
|
29cd2e193a | |
|
|
1d64427488 | |
|
|
3cc2476a87 | |
|
|
56767a8edb | |
|
|
a76dd1b9e9 | |
|
|
12841b3f65 | |
|
|
b4d8a5c5a6 | |
|
|
f51e073858 | |
|
|
828e0bb625 | |
|
|
f3b54ce57b | |
|
|
413acc39d5 | |
|
|
7fee45544a | |
|
|
a2dc2bcd46 | |
|
|
6eadc0b59c | |
|
|
8d0a96782d | |
|
|
6cb9980520 | |
|
|
65cf4fec22 | |
|
|
4532f2e61b | |
|
|
4b9980f829 | |
|
|
eab64e395d | |
|
|
15f3a89bc3 | |
|
|
c99abc9332 | |
|
|
595d13eb74 | |
|
|
799b040705 | |
|
|
e4a5426f18 | |
|
|
db6e8f43c7 | |
|
|
935a8bc14f | |
|
|
57e4acf400 | |
|
|
15b21af353 | |
|
|
873a0ce059 | |
|
|
ae8148bb39 | |
|
|
43327b967b | |
|
|
627988e604 | |
|
|
70694dbfc8 | |
|
|
8b8619681b | |
|
|
1b57bfb75c | |
|
|
e4cc1b5646 | |
|
|
09063da084 | |
|
|
14d5c85db3 | |
|
|
f1b09297e4 | |
|
|
24a3400624 | |
|
|
d28287bcdd | |
|
|
ff692ffecf | |
|
|
8ed3641662 | |
|
|
555c4d7266 | |
|
|
65fdb2804b | |
|
|
e7e3464df0 | |
|
|
458bb0507a | |
|
|
0a8eedb221 | |
|
|
380714f257 | |
|
|
17c1155177 | |
|
|
8e4db9105a | |
|
|
50c4edcfba | |
|
|
7b7f98df79 | |
|
|
d4b7fadbc1 | |
|
|
61a2c6e82a | |
|
|
8dd7e1e5c1 | |
|
|
eb5c9f99ea | |
|
|
c5a4ff71d9 | |
|
|
b3b549cd20 | |
|
|
4839c1d280 | |
|
|
6e542e60af | |
|
|
97b09dfba2 | |
|
|
7d8a4af8c4 | |
|
|
40453112a2 | |
|
|
b9d35d9335 | |
|
|
db266b5009 |
|
|
@ -1,7 +1,9 @@
|
||||||
{
|
{
|
||||||
|
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||||
|
"extends": ["config:base"],
|
||||||
"schedule": ["every weekend"],
|
"schedule": ["every weekend"],
|
||||||
"labels": ["dependencies"],
|
"labels": ["dependencies"],
|
||||||
"separateMajorMinor": "false",
|
"separateMajorMinor": true,
|
||||||
"packageRules": [
|
"packageRules": [
|
||||||
{
|
{
|
||||||
"matchDepTypes": ["devDependencies"],
|
"matchDepTypes": ["devDependencies"],
|
||||||
|
|
@ -18,8 +20,8 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"matchDatasources": ["npm"],
|
"matchDatasources": ["npm"],
|
||||||
"matchPackageNames": ["eslint", "numerous", "execa"],
|
"matchPackageNames": ["eslint", "numerous", "execa", "which", ",@types/eslint"],
|
||||||
"rangeStrategy": "pin"
|
"enabled": false
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ concurrency:
|
||||||
|
|
||||||
env:
|
env:
|
||||||
NODE_OPTIONS: --enable-source-maps
|
NODE_OPTIONS: --enable-source-maps
|
||||||
|
version: "1.8.0"
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
Build:
|
Build:
|
||||||
|
|
@ -23,30 +24,32 @@ jobs:
|
||||||
os:
|
os:
|
||||||
- ubuntu-22.04
|
- ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
ref: ${{ github.head_ref || github.ref_name }}
|
ref: ${{ github.head_ref || github.ref_name }}
|
||||||
|
|
||||||
- name: Setup Node
|
- name: Setup Node
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v6
|
||||||
with:
|
with:
|
||||||
node-version-file: "./.nvmrc"
|
node-version-file: "./.nvmrc"
|
||||||
|
|
||||||
- name: Setup Pnpm
|
- name: Setup Bun
|
||||||
uses: pnpm/action-setup@v4
|
uses: oven-sh/setup-bun@v2
|
||||||
|
with:
|
||||||
|
bun-version-file: "package.json"
|
||||||
|
|
||||||
- name: Install
|
- name: Install
|
||||||
run: |
|
run: |
|
||||||
pnpm install
|
bun install
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
run: |
|
run: |
|
||||||
pnpm build
|
bun run build
|
||||||
pnpm build.docker-ci
|
bun run build.docker-ci
|
||||||
|
|
||||||
- name: Lint
|
- name: Lint
|
||||||
run: |
|
run: |
|
||||||
pnpm run test.lint
|
bun run test.lint
|
||||||
|
|
||||||
- name: Update Dist
|
- name: Update Dist
|
||||||
run: |
|
run: |
|
||||||
|
|
@ -54,7 +57,7 @@ jobs:
|
||||||
if [[ "${{ github.ref_name }}" =~ ^refs/heads/ ]]; then
|
if [[ "${{ github.ref_name }}" =~ ^refs/heads/ ]]; then
|
||||||
git config user.name "github-actions[bot]"
|
git config user.name "github-actions[bot]"
|
||||||
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
||||||
|
|
||||||
git add dist/
|
git add dist/
|
||||||
git commit -m "chore(build): update dist"
|
git commit -m "chore(build): update dist"
|
||||||
git push
|
git push
|
||||||
|
|
@ -66,7 +69,7 @@ jobs:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
- name: Upload Dist
|
- name: Upload Dist
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v6
|
||||||
if: always()
|
if: always()
|
||||||
with:
|
with:
|
||||||
name: dist
|
name: dist
|
||||||
|
|
@ -84,49 +87,65 @@ jobs:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os:
|
os:
|
||||||
- windows-2019
|
- windows-2022
|
||||||
- ubuntu-20.04
|
- ubuntu-22.04
|
||||||
- macos-13 # x64
|
- ubuntu-22.04-arm
|
||||||
|
- macos-15-intel # x64
|
||||||
- macos-14 # arm64
|
- macos-14 # arm64
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v6
|
||||||
|
|
||||||
- name: Download Artifacts
|
- name: Download Artifacts
|
||||||
uses: actions/download-artifact@v4
|
uses: actions/download-artifact@v7
|
||||||
with:
|
with:
|
||||||
name: dist
|
name: dist
|
||||||
|
|
||||||
- name: Setup Node
|
- name: Setup Node
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v6
|
||||||
with:
|
with:
|
||||||
node-version-file: "./.nvmrc"
|
node-version-file: "./.nvmrc"
|
||||||
|
|
||||||
- name: Setup Pnpm
|
- name: Setup Bun
|
||||||
uses: pnpm/action-setup@v4
|
uses: oven-sh/setup-bun@v2
|
||||||
|
with:
|
||||||
|
bun-version-file: "package.json"
|
||||||
|
|
||||||
- name: Cache node_modules
|
- name: Cache node_modules
|
||||||
if: ${{ !contains(matrix.os, 'windows') }}
|
if: ${{ !contains(matrix.os, 'windows') }}
|
||||||
uses: actions/cache@v4
|
uses: actions/cache@v5
|
||||||
with:
|
with:
|
||||||
path: |
|
path: |
|
||||||
~/.pnpm-store
|
~/.bun
|
||||||
D:\.pnpm-store
|
|
||||||
./node_modules
|
./node_modules
|
||||||
key: "setupcpp-node_modules-cache-OS:${{ matrix.os }}-${{ hashFiles('./.npmrc', './package.json', './.nvmrc', './pnpm-*.yaml') }}"
|
key: "setupcpp-node_modules-cache-OS:${{ matrix.os }}-${{ hashFiles('./.npmrc', './package.json', './.nvmrc', './bun.lock') }}"
|
||||||
restore-keys: |
|
restore-keys: |
|
||||||
"setupcpp-node_modules-cache-OS:${{ matrix.os }}-"
|
"setupcpp-node_modules-cache-OS:${{ matrix.os }}-"
|
||||||
|
|
||||||
|
- name: Cache Turbo
|
||||||
|
uses: rharkor/caching-for-turbo@v1.8
|
||||||
|
|
||||||
|
- name: Cache .cache
|
||||||
|
uses: actions/cache@v5
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
./.cache/eslint
|
||||||
|
./.cache/cspell
|
||||||
|
/home/runner/.cache/dprint
|
||||||
|
key: "setupcpp-cache-OS:${{ matrix.os }}-${{ hashFiles('./*.json', './.*rc', './*.yml') }}"
|
||||||
|
restore-keys: |
|
||||||
|
"setupcpp-cache-OS:${{ matrix.os }}-"
|
||||||
|
|
||||||
- name: Install
|
- name: Install
|
||||||
run: |
|
run: |
|
||||||
pnpm install
|
bun install
|
||||||
|
|
||||||
# Create self-contained executable that bundles Nodejs
|
# Create self-contained executable that bundles Nodejs
|
||||||
- name: Create Executable
|
- name: Create Executable
|
||||||
run: |
|
run: |
|
||||||
pnpm run pack.exe
|
bun run pack.exe
|
||||||
|
|
||||||
- name: Upload Executables
|
- name: Upload Executables
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v6
|
||||||
with:
|
with:
|
||||||
name: exe-${{ matrix.os }}
|
name: exe-${{ matrix.os }}
|
||||||
path: |
|
path: |
|
||||||
|
|
@ -142,49 +161,50 @@ jobs:
|
||||||
matrix:
|
matrix:
|
||||||
os:
|
os:
|
||||||
- windows-2022
|
- windows-2022
|
||||||
- windows-2019
|
- ubuntu-24.04-arm
|
||||||
- ubuntu-24.04
|
- ubuntu-24.04
|
||||||
|
- ubuntu-22.04-arm
|
||||||
- ubuntu-22.04
|
- ubuntu-22.04
|
||||||
- ubuntu-20.04
|
# - ubuntu-20.04
|
||||||
- macos-15 # arm64
|
- macos-15 # arm64
|
||||||
# - macos-15-large # x64
|
# - macos-15-large # x64
|
||||||
- macos-14 # arm64
|
- macos-14 # arm64
|
||||||
# - macos-14-large # x64
|
- macos-15-intel # x64
|
||||||
# - macos-14-xlarge #arm64
|
# - macos-14-xlarge #arm64
|
||||||
- macos-13 # x64
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
submodules: true
|
submodules: true
|
||||||
|
|
||||||
- name: Download Dist
|
- name: Download Dist
|
||||||
uses: actions/download-artifact@v4
|
uses: actions/download-artifact@v7
|
||||||
with:
|
with:
|
||||||
name: dist
|
name: dist
|
||||||
|
|
||||||
- name: Setup Node
|
- name: Setup Node
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v6
|
||||||
with:
|
with:
|
||||||
node-version-file: "./.nvmrc"
|
node-version-file: "./.nvmrc"
|
||||||
|
|
||||||
- name: Setup Pnpm
|
- name: Setup Bun
|
||||||
uses: pnpm/action-setup@v4
|
uses: oven-sh/setup-bun@v2
|
||||||
|
with:
|
||||||
|
bun-version-file: "package.json"
|
||||||
|
|
||||||
- name: Cache node_modules
|
- name: Cache node_modules
|
||||||
if: ${{ !contains(matrix.os, 'windows') }}
|
if: ${{ !contains(matrix.os, 'windows') }}
|
||||||
uses: actions/cache@v4
|
uses: actions/cache@v5
|
||||||
with:
|
with:
|
||||||
path: |
|
path: |
|
||||||
~/.pnpm-store
|
~/.bun
|
||||||
D:\.pnpm-store
|
|
||||||
./node_modules
|
./node_modules
|
||||||
key: "setupcpp-node_modules-cache-OS:${{ matrix.os }}-${{ hashFiles('./.npmrc', './package.json', './.nvmrc', './pnpm-*.yaml') }}"
|
key: "setupcpp-node_modules-cache-OS:${{ matrix.os }}-${{ hashFiles('./.npmrc', './package.json', './.nvmrc', './bun.lock') }}"
|
||||||
restore-keys: |
|
restore-keys: |
|
||||||
"setupcpp-node_modules-cache-OS:${{ matrix.os }}-"
|
"setupcpp-node_modules-cache-OS:${{ matrix.os }}-"
|
||||||
|
|
||||||
- name: Install
|
- name: Install
|
||||||
run: |
|
run: |
|
||||||
pnpm install
|
bun install
|
||||||
|
|
||||||
# - name: Setup SSH debugging session
|
# - name: Setup SSH debugging session
|
||||||
# uses: mxschmitt/action-tmate@v3
|
# uses: mxschmitt/action-tmate@v3
|
||||||
|
|
@ -192,12 +212,12 @@ jobs:
|
||||||
- name: Tests
|
- name: Tests
|
||||||
if: ${{ !contains(github.event.head_commit.message, '[skip test]') }}
|
if: ${{ !contains(github.event.head_commit.message, '[skip test]') }}
|
||||||
run: |
|
run: |
|
||||||
pnpm run test
|
bun run test
|
||||||
env:
|
env:
|
||||||
RUNNER_OS_NAME: ${{ matrix.os }}
|
RUNNER_OS_NAME: ${{ matrix.os }}
|
||||||
|
|
||||||
- name: Setup Node 20
|
- name: Setup Node 20
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v6
|
||||||
with:
|
with:
|
||||||
node-version: 20
|
node-version: 20
|
||||||
|
|
||||||
|
|
@ -216,7 +236,7 @@ jobs:
|
||||||
|
|
||||||
- name: Setup Node 12
|
- name: Setup Node 12
|
||||||
if: ${{ !contains(matrix.os, 'macos-14') && !contains(matrix.os, 'macos-15') }}
|
if: ${{ !contains(matrix.os, 'macos-14') && !contains(matrix.os, 'macos-15') }}
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v6
|
||||||
with:
|
with:
|
||||||
node-version: 12
|
node-version: 12
|
||||||
- name: Smoke Test Legacy Bundle
|
- name: Smoke Test Legacy Bundle
|
||||||
|
|
@ -225,7 +245,7 @@ jobs:
|
||||||
node ./dist/legacy/setup-cpp.js --gcc true --cmake true
|
node ./dist/legacy/setup-cpp.js --gcc true --cmake true
|
||||||
|
|
||||||
Docker:
|
Docker:
|
||||||
name: Docker-${{ matrix.container.image }}-${{ matrix.platform }}
|
name: Docker-${{ matrix.container.image }}-${{ matrix.platform }}-${{ matrix.container.tag }}
|
||||||
needs: [Build]
|
needs: [Build]
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
strategy:
|
strategy:
|
||||||
|
|
@ -236,44 +256,80 @@ jobs:
|
||||||
platform:
|
platform:
|
||||||
- linux/amd64
|
- linux/amd64
|
||||||
container:
|
container:
|
||||||
- { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "22.04-1.1.0" }
|
- { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "24.04" }
|
||||||
- { distro: "fedora", image: "setup-cpp-fedora", tag: "40-1.1.0" }
|
- { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "22.04" }
|
||||||
- { distro: "arch", image: "setup-cpp-arch", tag: "base-1.1.0" }
|
- { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "20.04" }
|
||||||
|
- { distro: "fedora", image: "setup-cpp-fedora", tag: "44" }
|
||||||
|
- { distro: "arch", image: "setup-cpp-arch", tag: "base" }
|
||||||
|
- { distro: "alpine", image: "setup-cpp-alpine", tag: "3.21", base_version: "22-alpine3.21" }
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-24.04-arm
|
- os: ubuntu-24.04-arm
|
||||||
platform: linux/arm64
|
platform: linux/arm64
|
||||||
container: { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "22.04-1.1.0" }
|
container: { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "24.04" }
|
||||||
|
- os: ubuntu-24.04-arm
|
||||||
|
platform: linux/arm64
|
||||||
|
container: { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "22.04" }
|
||||||
|
- os: ubuntu-24.04-arm
|
||||||
|
platform: linux/arm64
|
||||||
|
container: { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "20.04" }
|
||||||
|
- os: ubuntu-24.04-arm
|
||||||
|
platform: linux/arm64
|
||||||
|
container: { distro: "alpine", image: "setup-cpp-alpine", tag: "3.21", base_version: "22-alpine3.21" }
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
submodules: true
|
submodules: true
|
||||||
|
|
||||||
- name: Download Dist
|
- name: Download Dist
|
||||||
uses: actions/download-artifact@v4
|
uses: actions/download-artifact@v7
|
||||||
with:
|
with:
|
||||||
name: dist
|
name: dist
|
||||||
|
|
||||||
|
- name: Define Platform Suffix
|
||||||
|
id: platform
|
||||||
|
run: |
|
||||||
|
if [[ "${{ matrix.platform }}" == "linux/amd64" ]]; then
|
||||||
|
echo "suffix=amd64" >> $GITHUB_OUTPUT
|
||||||
|
else
|
||||||
|
echo "suffix=arm64" >> $GITHUB_OUTPUT
|
||||||
|
fi
|
||||||
|
|
||||||
- name: Login to Docker Hub
|
- name: Login to Docker Hub
|
||||||
uses: docker/login-action@v3
|
uses: docker/login-action@v3
|
||||||
if: ${{ github.event_name != 'pull_request' }}
|
if: ${{ github.event_name != 'pull_request' || contains(github.event.head_commit.message, '[push docker]') }}
|
||||||
with:
|
with:
|
||||||
username: aminya
|
username: aminya
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
|
||||||
- name: Build setup-cpp-${{matrix.container.distro }}
|
- name: Build setup-cpp-${{matrix.container.distro }}
|
||||||
|
id: build_base
|
||||||
uses: docker/build-push-action@v6
|
uses: docker/build-push-action@v6
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
file: ./dev/docker/ci/${{ matrix.container.distro }}.dockerfile
|
file: ./dev/docker/ci/${{ matrix.container.distro }}.dockerfile
|
||||||
push: ${{ github.event_name != 'pull_request' }}
|
push: ${{ github.event_name != 'pull_request' || contains(github.event.head_commit.message, '[push docker]') }}
|
||||||
|
load: true
|
||||||
|
provenance: false
|
||||||
platforms: ${{ matrix.platform }}
|
platforms: ${{ matrix.platform }}
|
||||||
tags: aminya/${{ matrix.container.image }}:${{ matrix.container.tag }},aminya/${{ matrix.container.image }}:latest
|
tags: aminya/${{ matrix.container.image }}:${{ matrix.container.tag }}-${{ env.version }}-${{ steps.platform.outputs.suffix }}
|
||||||
cache-from: type=registry,ref=user/app:latest
|
cache-from: type=registry,ref=aminya/${{ matrix.container.image }}:${{ matrix.container.tag }}-${{ env.version }}-${{ steps.platform.outputs.suffix }}
|
||||||
cache-to: type=inline
|
cache-to: type=inline
|
||||||
|
build-args: BASE_VERSION=${{ matrix.container.base_version || matrix.container.tag }}
|
||||||
|
|
||||||
|
- name: Tag latest locally
|
||||||
|
run: |
|
||||||
|
docker tag aminya/${{ matrix.container.image }}:${{ matrix.container.tag }}-${{ env.version }}-${{ steps.platform.outputs.suffix }} aminya/${{ matrix.container.image }}:latest
|
||||||
|
docker tag aminya/${{ matrix.container.image }}:${{ matrix.container.tag }}-${{ env.version }}-${{ steps.platform.outputs.suffix }} aminya/${{ matrix.container.image }}:${{ matrix.container.tag }}
|
||||||
|
|
||||||
|
- name: Push latest to Docker Hub
|
||||||
|
if: ${{ github.event_name != 'pull_request' && matrix.container.distro != 'ubuntu' && matrix.container.distro != 'alpine' }}
|
||||||
|
run: |
|
||||||
|
docker push aminya/${{ matrix.container.image }}:latest
|
||||||
|
docker push aminya/${{ matrix.container.image }}:${{ matrix.container.tag }}
|
||||||
|
|
||||||
- name: Docker Readme for setup-cpp-${{matrix.container.distro }}
|
- name: Docker Readme for setup-cpp-${{matrix.container.distro }}
|
||||||
if: ${{ github.event_name != 'pull_request' }}
|
if: ${{ github.event_name != 'pull_request' || contains(github.event.head_commit.message, '[push docker]') }}
|
||||||
uses: peter-evans/dockerhub-description@v4
|
uses: peter-evans/dockerhub-description@v5
|
||||||
with:
|
with:
|
||||||
username: aminya
|
username: aminya
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
|
@ -281,19 +337,35 @@ jobs:
|
||||||
readme-filepath: ./README_DOCKER.md
|
readme-filepath: ./README_DOCKER.md
|
||||||
|
|
||||||
- name: Build setup-cpp-${{matrix.container.distro }}-llvm
|
- name: Build setup-cpp-${{matrix.container.distro }}-llvm
|
||||||
|
id: build_llvm
|
||||||
|
if: ${{ matrix.container.distro != 'arch' }}
|
||||||
uses: docker/build-push-action@v6
|
uses: docker/build-push-action@v6
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
file: ./dev/docker/ci/${{ matrix.container.distro }}-llvm.dockerfile
|
file: ./dev/docker/ci/${{ matrix.container.distro }}-llvm.dockerfile
|
||||||
push: ${{ github.event_name != 'pull_request' }}
|
push: ${{ github.event_name != 'pull_request' || contains(github.event.head_commit.message, '[push docker]') }}
|
||||||
|
load: true
|
||||||
|
provenance: false
|
||||||
platforms: ${{ matrix.platform }}
|
platforms: ${{ matrix.platform }}
|
||||||
tags: aminya/${{ matrix.container.image }}-llvm:${{ matrix.container.tag }},aminya/${{ matrix.container.image }}-llvm:latest
|
tags: aminya/${{ matrix.container.image }}-llvm:${{ matrix.container.tag }}-${{ env.version }}-${{ steps.platform.outputs.suffix }}
|
||||||
cache-from: type=registry,ref=user/app:latest
|
cache-from: type=registry,ref=aminya/${{ matrix.container.image }}-llvm:${{ matrix.container.tag }}-${{ env.version }}-${{ steps.platform.outputs.suffix }}
|
||||||
cache-to: type=inline
|
cache-to: type=inline
|
||||||
|
|
||||||
|
- name: Tag latest locally
|
||||||
|
if: ${{ matrix.container.distro != 'arch' }}
|
||||||
|
run: |
|
||||||
|
docker tag aminya/${{ matrix.container.image }}-llvm:${{ matrix.container.tag }}-${{ env.version }}-${{ steps.platform.outputs.suffix }} aminya/${{ matrix.container.image }}-llvm:latest
|
||||||
|
docker tag aminya/${{ matrix.container.image }}-llvm:${{ matrix.container.tag }}-${{ env.version }}-${{ steps.platform.outputs.suffix }} aminya/${{ matrix.container.image }}-llvm:${{ matrix.container.tag }}
|
||||||
|
|
||||||
|
- name: Push latest to Docker Hub
|
||||||
|
if: ${{ github.event_name != 'pull_request' && matrix.container.distro != 'ubuntu' && matrix.container.distro != 'alpine' && matrix.container.distro != 'arch' }}
|
||||||
|
run: |
|
||||||
|
docker push aminya/${{ matrix.container.image }}-llvm:latest
|
||||||
|
docker push aminya/${{ matrix.container.image }}-llvm:${{ matrix.container.tag }}
|
||||||
|
|
||||||
- name: Docker Readme for setup-cpp-${{matrix.container.distro }}-llvm
|
- name: Docker Readme for setup-cpp-${{matrix.container.distro }}-llvm
|
||||||
if: ${{ github.event_name != 'pull_request' }}
|
if: ${{ (github.event_name != 'pull_request' || contains(github.event.head_commit.message, '[push docker]')) && matrix.container.distro != 'arch' }}
|
||||||
uses: peter-evans/dockerhub-description@v4
|
uses: peter-evans/dockerhub-description@v5
|
||||||
with:
|
with:
|
||||||
username: aminya
|
username: aminya
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
|
@ -301,29 +373,43 @@ jobs:
|
||||||
readme-filepath: ./README_DOCKER.md
|
readme-filepath: ./README_DOCKER.md
|
||||||
|
|
||||||
- name: Test LLVM
|
- name: Test LLVM
|
||||||
if: ${{ !contains(github.event.head_commit.message, '[skip test]') }}
|
if: ${{ !contains(github.event.head_commit.message, '[skip test]') && matrix.container.distro != 'arch' }}
|
||||||
uses: docker/build-push-action@v6
|
uses: docker/build-push-action@v6
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
file: ./dev/docker/examples/${{ matrix.container.distro }}-llvm.dockerfile
|
file: ./dev/docker/examples/${{ matrix.container.distro }}-llvm.dockerfile
|
||||||
push: false
|
push: false
|
||||||
platforms: ${{ matrix.platform }}
|
platforms: ${{ matrix.platform }}
|
||||||
tags: aminya/test-${{ matrix.container.image }}-llvm:${{ matrix.container.tag }}
|
tags: aminya/test-${{ matrix.container.image }}-llvm:${{ matrix.container.tag }}-${{ env.version }}
|
||||||
|
|
||||||
- name: Build setup-cpp-${{matrix.container.distro }}-gcc
|
- name: Build setup-cpp-${{matrix.container.distro }}-gcc
|
||||||
|
id: build_gcc
|
||||||
uses: docker/build-push-action@v6
|
uses: docker/build-push-action@v6
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
file: ./dev/docker/ci/${{ matrix.container.distro }}-gcc.dockerfile
|
file: ./dev/docker/ci/${{ matrix.container.distro }}-gcc.dockerfile
|
||||||
push: ${{ github.event_name != 'pull_request' }}
|
push: ${{ github.event_name != 'pull_request' || contains(github.event.head_commit.message, '[push docker]') }}
|
||||||
|
load: true
|
||||||
|
provenance: false
|
||||||
platforms: ${{ matrix.platform }}
|
platforms: ${{ matrix.platform }}
|
||||||
tags: aminya/${{ matrix.container.image }}-gcc:${{ matrix.container.tag }},aminya/${{ matrix.container.image }}-gcc:latest
|
tags: aminya/${{ matrix.container.image }}-gcc:${{ matrix.container.tag }}-${{ env.version }}-${{ steps.platform.outputs.suffix }}
|
||||||
cache-from: type=registry,ref=user/app:latest
|
cache-from: type=registry,ref=aminya/${{ matrix.container.image }}-gcc:${{ matrix.container.tag }}-${{ env.version }}-${{ steps.platform.outputs.suffix }}
|
||||||
cache-to: type=inline
|
cache-to: type=inline
|
||||||
|
|
||||||
|
- name: Tag latest locally
|
||||||
|
run: |
|
||||||
|
docker tag aminya/${{ matrix.container.image }}-gcc:${{ matrix.container.tag }}-${{ env.version }}-${{ steps.platform.outputs.suffix }} aminya/${{ matrix.container.image }}-gcc:latest
|
||||||
|
docker tag aminya/${{ matrix.container.image }}-gcc:${{ matrix.container.tag }}-${{ env.version }}-${{ steps.platform.outputs.suffix }} aminya/${{ matrix.container.image }}-gcc:${{ matrix.container.tag }}
|
||||||
|
|
||||||
|
- name: Push latest to Docker Hub
|
||||||
|
if: ${{ github.event_name != 'pull_request' && matrix.container.distro != 'ubuntu' && matrix.container.distro != 'alpine' }}
|
||||||
|
run: |
|
||||||
|
docker push aminya/${{ matrix.container.image }}-gcc:latest
|
||||||
|
docker push aminya/${{ matrix.container.image }}-gcc:${{ matrix.container.tag }}
|
||||||
|
|
||||||
- name: Docker Readme for setup-cpp-${{matrix.container.distro }}-gcc
|
- name: Docker Readme for setup-cpp-${{matrix.container.distro }}-gcc
|
||||||
if: ${{ github.event_name != 'pull_request' }}
|
if: ${{ github.event_name != 'pull_request' || contains(github.event.head_commit.message, '[push docker]') }}
|
||||||
uses: peter-evans/dockerhub-description@v4
|
uses: peter-evans/dockerhub-description@v5
|
||||||
with:
|
with:
|
||||||
username: aminya
|
username: aminya
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
|
@ -338,37 +424,111 @@ jobs:
|
||||||
file: ./dev/docker/examples/${{ matrix.container.distro }}-gcc.dockerfile
|
file: ./dev/docker/examples/${{ matrix.container.distro }}-gcc.dockerfile
|
||||||
push: false
|
push: false
|
||||||
platforms: ${{ matrix.platform }}
|
platforms: ${{ matrix.platform }}
|
||||||
tags: aminya/test-${{ matrix.container.image }}-gcc:${{ matrix.container.tag }}
|
tags: aminya/test-${{ matrix.container.image }}-gcc:${{ matrix.container.tag }}-${{ env.version }}
|
||||||
|
|
||||||
- name: Build setup-cpp-${{matrix.container.distro }}-mingw
|
- name: Build setup-cpp-${{matrix.container.distro }}-mingw
|
||||||
if: ${{ !contains(matrix.container.distro, 'fedora') }}
|
id: build_mingw
|
||||||
|
if: ${{ matrix.container.distro != 'fedora' && !(matrix.container.distro == 'alpine' && matrix.platform == 'linux/arm64') }}
|
||||||
uses: docker/build-push-action@v6
|
uses: docker/build-push-action@v6
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
file: ./dev/docker/ci/${{ matrix.container.distro }}-mingw.dockerfile
|
file: ./dev/docker/ci/${{ matrix.container.distro }}-mingw.dockerfile
|
||||||
push: ${{ github.event_name != 'pull_request' }}
|
push: ${{ github.event_name != 'pull_request' || contains(github.event.head_commit.message, '[push docker]') }}
|
||||||
|
load: true
|
||||||
|
provenance: false
|
||||||
platforms: ${{ matrix.platform }}
|
platforms: ${{ matrix.platform }}
|
||||||
tags: aminya/${{ matrix.container.image }}-mingw:${{ matrix.container.tag }},aminya/${{ matrix.container.image }}-mingw:latest
|
tags: aminya/${{ matrix.container.image }}-mingw:${{ matrix.container.tag }}-${{ env.version }}-${{ steps.platform.outputs.suffix }}
|
||||||
cache-from: type=registry,ref=user/app:latest
|
cache-from: type=registry,ref=aminya/${{ matrix.container.image }}-mingw:${{ matrix.container.tag }}-${{ env.version }}-${{ steps.platform.outputs.suffix }}
|
||||||
cache-to: type=inline
|
cache-to: type=inline
|
||||||
|
|
||||||
|
- name: Tag latest locally
|
||||||
|
if: ${{ matrix.container.distro != 'fedora' && !(matrix.container.distro == 'alpine' && matrix.platform == 'linux/arm64') }}
|
||||||
|
run: |
|
||||||
|
docker tag aminya/${{ matrix.container.image }}-mingw:${{ matrix.container.tag }}-${{ env.version }}-${{ steps.platform.outputs.suffix }} aminya/${{ matrix.container.image }}-mingw:latest
|
||||||
|
docker tag aminya/${{ matrix.container.image }}-mingw:${{ matrix.container.tag }}-${{ env.version }}-${{ steps.platform.outputs.suffix }} aminya/${{ matrix.container.image }}-mingw:${{ matrix.container.tag }}
|
||||||
|
- name: Push latest to Docker Hub
|
||||||
|
if: ${{ github.event_name != 'pull_request' && matrix.container.distro != 'ubuntu' && matrix.container.distro != 'fedora' && matrix.container.distro != 'alpine' }}
|
||||||
|
run: |
|
||||||
|
docker push aminya/${{ matrix.container.image }}-mingw:latest
|
||||||
|
docker push aminya/${{ matrix.container.image }}-mingw:${{ matrix.container.tag }}
|
||||||
|
|
||||||
- name: Docker Readme for setup-cpp-${{matrix.container.distro }}-mingw
|
- name: Docker Readme for setup-cpp-${{matrix.container.distro }}-mingw
|
||||||
if: ${{ github.event_name != 'pull_request' }}
|
if: ${{ github.event_name != 'pull_request' && matrix.container.distro != 'fedora' && !(matrix.container.distro == 'alpine' && matrix.platform == 'linux/arm64') }}
|
||||||
uses: peter-evans/dockerhub-description@v4
|
uses: peter-evans/dockerhub-description@v5
|
||||||
with:
|
with:
|
||||||
username: aminya
|
username: aminya
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
repository: aminya/${{ matrix.container.image }}-mingw
|
repository: aminya/${{ matrix.container.image }}-mingw
|
||||||
readme-filepath: ./README_DOCKER.md
|
readme-filepath: ./README_DOCKER.md
|
||||||
|
|
||||||
- name: Test Mingw
|
- name: Test Mingw
|
||||||
if: ${{ !contains(github.event.head_commit.message, '[skip test]') && !contains(matrix.container.distro, 'fedora') }}
|
if: ${{ !contains(github.event.head_commit.message, '[skip test]') && matrix.container.distro != 'fedora' && matrix.container.distro != 'alpine' }}
|
||||||
uses: docker/build-push-action@v6
|
uses: docker/build-push-action@v6
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
file: ./dev/docker/examples/${{ matrix.container.distro }}-mingw.dockerfile
|
file: ./dev/docker/examples/${{ matrix.container.distro }}-mingw.dockerfile
|
||||||
push: false
|
push: false
|
||||||
platforms: ${{ matrix.platform }}
|
platforms: ${{ matrix.platform }}
|
||||||
tags: aminya/test-${{ matrix.container.image }}-mingw:${{ matrix.container.tag }}
|
tags: aminya/test-${{ matrix.container.image }}-mingw:${{ matrix.container.tag }}-${{ env.version }}
|
||||||
|
|
||||||
|
Docker-Manifest:
|
||||||
|
needs: [Docker]
|
||||||
|
runs-on: ubuntu-24.04
|
||||||
|
if: ${{ github.event_name != 'pull_request' || contains(github.event.head_commit.message, '[push docker]') }}
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
container:
|
||||||
|
- { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "20.04", suffix: "", latest: false }
|
||||||
|
- { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "20.04", suffix: "-llvm", latest: false }
|
||||||
|
- { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "20.04", suffix: "-gcc", latest: false }
|
||||||
|
- { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "20.04", suffix: "-mingw", latest: false }
|
||||||
|
|
||||||
|
- { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "22.04", suffix: "", latest: false }
|
||||||
|
- { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "22.04", suffix: "-llvm", latest: false }
|
||||||
|
- { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "22.04", suffix: "-gcc", latest: false }
|
||||||
|
- { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "22.04", suffix: "-mingw", latest: false }
|
||||||
|
|
||||||
|
- { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "24.04", suffix: "", latest: true }
|
||||||
|
- { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "24.04", suffix: "-llvm", latest: true }
|
||||||
|
- { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "24.04", suffix: "-gcc", latest: true }
|
||||||
|
- { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "24.04", suffix: "-mingw", latest: true }
|
||||||
|
|
||||||
|
- { distro: "alpine", image: "setup-cpp-alpine", tag: "3.21", suffix: "", latest: true }
|
||||||
|
- { distro: "alpine", image: "setup-cpp-alpine", tag: "3.21", suffix: "-llvm", latest: true }
|
||||||
|
- { distro: "alpine", image: "setup-cpp-alpine", tag: "3.21", suffix: "-gcc", latest: true }
|
||||||
|
# - { distro: "alpine", image: "setup-cpp-alpine", tag: "3.21", suffix: "-mingw", latest: true }
|
||||||
|
steps:
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
|
- name: Login to Docker Hub
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
username: aminya
|
||||||
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
|
||||||
|
- uses: Noelware/docker-manifest-action@0.4.3
|
||||||
|
with:
|
||||||
|
inputs: aminya/${{ matrix.container.image }}${{ matrix.container.suffix }}:${{ matrix.container.tag }}-${{ env.version }}
|
||||||
|
images: aminya/${{ matrix.container.image }}${{ matrix.container.suffix }}:${{ matrix.container.tag }}-${{ env.version }}-amd64,aminya/${{ matrix.container.image }}${{ matrix.container.suffix }}:${{ matrix.container.tag }}-${{ env.version }}-arm64
|
||||||
|
push: true
|
||||||
|
amend: true
|
||||||
|
|
||||||
|
- uses: Noelware/docker-manifest-action@0.4.3
|
||||||
|
with:
|
||||||
|
inputs: aminya/${{ matrix.container.image }}${{ matrix.container.suffix }}:${{ matrix.container.tag }}
|
||||||
|
images: aminya/${{ matrix.container.image }}${{ matrix.container.suffix }}:${{ matrix.container.tag }}-${{ env.version }}-amd64,aminya/${{ matrix.container.image }}${{ matrix.container.suffix }}:${{ matrix.container.tag }}-${{ env.version }}-arm64
|
||||||
|
push: true
|
||||||
|
amend: true
|
||||||
|
|
||||||
|
- uses: Noelware/docker-manifest-action@0.4.3
|
||||||
|
if: ${{ matrix.container.latest }}
|
||||||
|
with:
|
||||||
|
inputs: aminya/${{ matrix.container.image }}${{ matrix.container.suffix }}:latest
|
||||||
|
images: aminya/${{ matrix.container.image }}${{ matrix.container.suffix }}:${{ matrix.container.tag }}-${{ env.version }}-amd64,aminya/${{ matrix.container.image }}${{ matrix.container.suffix }}:${{ matrix.container.tag }}-${{ env.version }}-arm64
|
||||||
|
push: true
|
||||||
|
amend: true
|
||||||
|
|
||||||
Release:
|
Release:
|
||||||
if: startsWith(github.ref, 'refs/tags/')
|
if: startsWith(github.ref, 'refs/tags/')
|
||||||
|
|
@ -376,7 +536,7 @@ jobs:
|
||||||
runs-on: ubuntu-24.04
|
runs-on: ubuntu-24.04
|
||||||
steps:
|
steps:
|
||||||
- name: Download Executables
|
- name: Download Executables
|
||||||
uses: actions/download-artifact@v4
|
uses: actions/download-artifact@v7
|
||||||
with:
|
with:
|
||||||
pattern: exe-*
|
pattern: exe-*
|
||||||
path: ./exe/
|
path: ./exe/
|
||||||
|
|
@ -388,7 +548,7 @@ jobs:
|
||||||
chmod +x -R ./exe/
|
chmod +x -R ./exe/
|
||||||
|
|
||||||
- name: Download Dist
|
- name: Download Dist
|
||||||
uses: actions/download-artifact@v4
|
uses: actions/download-artifact@v7
|
||||||
with:
|
with:
|
||||||
name: dist
|
name: dist
|
||||||
path: dist/
|
path: dist/
|
||||||
|
|
|
||||||
|
|
@ -24,3 +24,5 @@ coverage
|
||||||
/src/llvm/assets/
|
/src/llvm/assets/
|
||||||
|
|
||||||
/build
|
/build
|
||||||
|
dist/library
|
||||||
|
*.tgz
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
.DS_Store
|
||||||
|
Thumbs.db
|
||||||
|
**/node_modules
|
||||||
|
**/temp-*
|
||||||
|
**/tsconfig.tsbuildinfo
|
||||||
|
.parcel-cache
|
||||||
|
**/exe/
|
||||||
|
**/log
|
||||||
|
**/exe
|
||||||
|
**/cache
|
||||||
|
**/.cache
|
||||||
|
**/coverage
|
||||||
|
**/.turbo
|
||||||
|
src/llvm/assets/
|
||||||
|
**/build
|
||||||
|
**/__tests__
|
||||||
|
**/dev/cpp_vcpkg_project
|
||||||
|
**/packages/*/dist/
|
||||||
|
**/*.tgz
|
||||||
|
**/.eslintrc.json
|
||||||
|
**/jest.config.mjs
|
||||||
|
.vscode/
|
||||||
|
.github/
|
||||||
|
biome.jsonc
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
import { buildTerserOptions } from "terser-config-atomic/dist/builder.js"
|
|
||||||
const config = buildTerserOptions(process.env.NODE_ENV, undefined, true)
|
|
||||||
|
|
||||||
if (
|
|
||||||
typeof config.compress === "object"
|
|
||||||
&& "unsafe_math" in config.compress
|
|
||||||
) {
|
|
||||||
config.compress.unsafe_math = false
|
|
||||||
}
|
|
||||||
|
|
||||||
export default config
|
|
||||||
|
|
@ -72,5 +72,8 @@
|
||||||
"prettier.enable": false,
|
"prettier.enable": false,
|
||||||
"javascript.preferences.importModuleSpecifierEnding": "js",
|
"javascript.preferences.importModuleSpecifierEnding": "js",
|
||||||
"typescript.preferences.importModuleSpecifierEnding": "js",
|
"typescript.preferences.importModuleSpecifierEnding": "js",
|
||||||
"eslint.useESLintClass": true
|
"eslint.useESLintClass": true,
|
||||||
|
"yaml.schemas": {
|
||||||
|
"https://json.schemastore.org/container-structure-test.json": "/dev/docker/ci/tests/*.yml"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.21...3.28)
|
||||||
|
|
||||||
project(
|
project(
|
||||||
setup_cpp_tests
|
setup_cpp_tests
|
||||||
VERSION 1.1.0
|
VERSION 1.8.0
|
||||||
DESCRIPTION "Tests for setup-cpp"
|
DESCRIPTION "Tests for setup-cpp"
|
||||||
HOMEPAGE_URL "https://github.com/aminya/setup-cpp"
|
HOMEPAGE_URL "https://github.com/aminya/setup-cpp"
|
||||||
LANGUAGES CXX C)
|
LANGUAGES CXX C)
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
# Contributing
|
# Contributing
|
||||||
|
|
||||||
You will need [`pnpm`](https://pnpm.io/installation) to build and test `setup-cpp`:
|
You will need [`bun`](https://bun.com/) to build and test `setup-cpp`:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
pnpm install
|
bun install
|
||||||
```
|
```
|
||||||
|
|
||||||
To avoid permenant changes to your system, you can use the test docker images under `./dev/docker/__tests__`.
|
To avoid permenant changes to your system, you can use the test docker images under `./dev/docker/__tests__`.
|
||||||
|
|
|
||||||
155
README.md
155
README.md
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
Install all the tools required for building and testing C++/C projects.
|
Install all the tools required for building and testing C++/C projects.
|
||||||
|
|
||||||

|
[](https://github.com/aminya/setup-cpp/actions/workflows/CI.yml)
|
||||||
|
|
||||||
Setting up a **cross-platform** environment for building and testing C++/C projects is a bit tricky. Each platform has its own compilers, and each of them requires a different installation procedure. This package aims to fix this issue.
|
Setting up a **cross-platform** environment for building and testing C++/C projects is a bit tricky. Each platform has its own compilers, and each of them requires a different installation procedure. This package aims to fix this issue.
|
||||||
|
|
||||||
|
|
@ -31,12 +31,12 @@ Setting up a **cross-platform** environment for building and testing C++/C proje
|
||||||
| --------------- | ----------------------------------------------------------------------------------------------------------- |
|
| --------------- | ----------------------------------------------------------------------------------------------------------- |
|
||||||
| compiler | llvm, gcc, msvc, apple-clang, vcvarsall |
|
| compiler | llvm, gcc, msvc, apple-clang, vcvarsall |
|
||||||
| build system | cmake, ninja, meson, make, task, bazel |
|
| build system | cmake, ninja, meson, make, task, bazel |
|
||||||
| package manager | vcpkg, conan, choco, brew, nala, setup-cpp |
|
| package manager | vcpkg, conan, choco, brew, apt-fast, nala, git, setup-cpp |
|
||||||
| analyzer/linter | clang-tidy, clang-format, cppcheck, cpplint, flawfinder, lizard, infer, cmakelang, cmake-format, cmake-lint |
|
| analyzer/linter | clang-tidy, clang-format, cppcheck, cpplint, flawfinder, lizard, infer, cmakelang, cmake-format, cmake-lint |
|
||||||
| cache | ccache, sccache |
|
| cache | ccache, sccache |
|
||||||
| documentation | doxygen, graphviz |
|
| documentation | doxygen, graphviz |
|
||||||
| coverage | gcovr, opencppcoverage, kcov |
|
| coverage | gcovr, opencppcoverage, kcov |
|
||||||
| other | python, powershell, sevenzip |
|
| other | python, powershell, sevenzip, tar |
|
||||||
|
|
||||||
`setup-cpp` automatically handles the dependencies of the selected tool (e.g., `python` is required for `conan`).
|
`setup-cpp` automatically handles the dependencies of the selected tool (e.g., `python` is required for `conan`).
|
||||||
|
|
||||||
|
|
@ -70,23 +70,19 @@ NOTE: setup-cpp requires Nodejs 12 or higher. If Nodejs shipped with your distri
|
||||||
|
|
||||||
#### With executable
|
#### With executable
|
||||||
|
|
||||||
Download the executable for your platform from [here](https://github.com/aminya/setup-cpp/releases/tag/v1.1.0), and run it with the available options. You can also automate downloading using `curl`, or other similar tools.
|
Download the executable for your platform from [here](https://github.com/aminya/setup-cpp/releases/tag/v1.8.0), and run it with the available options. You can also automate downloading using `curl`, or other similar tools.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
# windows x64
|
# windows x64
|
||||||
curl -o ./setup-cpp.exe -LJ "https://github.com/aminya/setup-cpp/releases/download/v1.1.0/setup-cpp-x64-windows.exe"
|
curl -o ./setup-cpp.exe -LJ "https://github.com/aminya/setup-cpp/releases/download/v1.8.0/setup-cpp-x64-windows.exe"
|
||||||
|
|
||||||
# linux x64
|
# linux x64
|
||||||
curl -o ./setup-cpp -LJ "https://github.com/aminya/setup-cpp/releases/download/v1.1.0/setup-cpp-x64-linux"
|
curl -o ./setup-cpp -LJ "https://github.com/aminya/setup-cpp/releases/download/v1.8.0/setup-cpp-x64-linux"
|
||||||
chmod +x ./setup-cpp
|
# linux arm64
|
||||||
|
curl -o ./setup-cpp -LJ "https://github.com/aminya/setup-cpp/releases/download/v1.8.0/setup-cpp-arm64-linux"
|
||||||
# macos arm64
|
# macos arm64
|
||||||
curl -o ./setup-cpp -LJ "https://github.com/aminya/setup-cpp/releases/download/v1.1.0/setup-cpp-arm64-macos"
|
curl -o ./setup-cpp -LJ "https://github.com/aminya/setup-cpp/releases/download/v1.8.0/setup-cpp-arm64-macos"
|
||||||
chmod +x ./setup-cpp
|
|
||||||
|
|
||||||
# macos x64
|
# macos x64
|
||||||
curl -o ./setup-cpp -LJ "https://github.com/aminya/setup-cpp/releases/download/v1.1.0/setup-cpp-x64-macos"
|
curl -o ./setup-cpp -LJ "https://github.com/aminya/setup-cpp/releases/download/v1.8.0/setup-cpp-x64-macos"
|
||||||
chmod +x ./setup-cpp
|
|
||||||
```
|
```
|
||||||
|
|
||||||
An example that installs llvm, cmake, ninja, ccache, and vcpkg:
|
An example that installs llvm, cmake, ninja, ccache, and vcpkg:
|
||||||
|
|
@ -99,6 +95,7 @@ An example that installs llvm, cmake, ninja, ccache, and vcpkg:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
# linux/macos example
|
# linux/macos example
|
||||||
|
chmod +x ./setup-cpp
|
||||||
sudo ./setup-cpp --compiler llvm --cmake true --ninja true --ccache true --vcpkg true
|
sudo ./setup-cpp --compiler llvm --cmake true --ninja true --ccache true --vcpkg true
|
||||||
source ~/.cpprc # activate cpp environment variables
|
source ~/.cpprc # activate cpp environment variables
|
||||||
```
|
```
|
||||||
|
|
@ -212,90 +209,145 @@ When using the `setup-cpp` action in GitHub Actions, by default it will also ins
|
||||||
|
|
||||||
To provide fast development environments, `setup-cpp` provides several prebuilt docker images that have the tools you need. You can use these images as a base image for your project.
|
To provide fast development environments, `setup-cpp` provides several prebuilt docker images that have the tools you need. You can use these images as a base image for your project.
|
||||||
|
|
||||||
The names are in the format `aminya/setup-cpp-<platform>:<platform_version>-<setup_cpp_version>` and `aminya/setup-cpp-<platform>-<compiler>:<platform_version>-<setup_cpp_version>`.
|
The tags are in the following template:
|
||||||
|
|
||||||
#### Ubuntu Images
|
- Base image: `aminya/setup-cpp-ubuntu:24.04`
|
||||||
|
- Compiler image: `aminya/setup-cpp-ubuntu-llvm:24.04`
|
||||||
|
- Base image with pinned setup-cpp version: `aminya/setup-cpp-ubuntu:24.04-v1.8.0`
|
||||||
|
- Compiler image with pinned setup-cpp version: `aminya/setup-cpp-ubuntu-llvm:24.04-v1.8.0`
|
||||||
|
|
||||||
Base image with `cmake, ninja, task, vcpkg, python, make, cppcheck, gcovr, doxygen, ccache, conan, meson, cmakelang`
|
The supported platforms are `ubuntu`, `alpine`, `fedora`, and `arch`. The supported compilers are `llvm`, `gcc`, and `mingw`.
|
||||||
|
|
||||||
|
#### Ubuntu Images (amd64 and arm64)
|
||||||
|
|
||||||
|
Setup-cpp provides prebuilt images for various Ubuntu versions (20.04, 22.04, 24.04) with support for base tools, and compilers `llvm`, `gcc`, and `mingw` available for `amd64` and `arm64` architectures.
|
||||||
|
|
||||||
|
Base image with `cmake, ninja, task, vcpkg, python, make, cppcheck, gcovr, doxygen, ccache, conan, meson, cmakelang` for Ubuntu 24.04:
|
||||||
|
|
||||||
```dockerfile
|
```dockerfile
|
||||||
FROM aminya/setup-cpp-ubuntu:22.04-1.1.0 AS builder
|
FROM aminya/setup-cpp-ubuntu:24.04 AS builder
|
||||||
```
|
```
|
||||||
|
|
||||||
Image with `llvm` and the base tools:
|
Image with `llvm` and the base tools:
|
||||||
|
|
||||||
```dockerfile
|
```dockerfile
|
||||||
FROM aminya/setup-cpp-ubuntu-llvm:22.04-1.1.0 AS builder
|
FROM aminya/setup-cpp-ubuntu-llvm:24.04 AS builder
|
||||||
```
|
```
|
||||||
|
|
||||||
Image with `gcc` and the base tools:
|
Image with `gcc` and the base tools:
|
||||||
|
|
||||||
```dockerfile
|
```dockerfile
|
||||||
FROM aminya/setup-cpp-ubuntu-gcc:22.04-1.1.0 AS builder
|
FROM aminya/setup-cpp-ubuntu-gcc:24.04 AS builder
|
||||||
```
|
```
|
||||||
|
|
||||||
Image with `mingw` and the base tools:
|
Image with `mingw` and the base tools:
|
||||||
|
|
||||||
```dockerfile
|
```dockerfile
|
||||||
FROM aminya/setup-cpp-ubuntu-mingw:22.04-1.1.0 AS builder
|
FROM aminya/setup-cpp-ubuntu-mingw:24.04 AS builder
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Fedora Images
|
There are also the variants for Ubuntu `22.04`
|
||||||
|
|
||||||
|
```dockerfile
|
||||||
|
FROM aminya/setup-cpp-ubuntu:22.04 AS builder
|
||||||
|
FROM aminya/setup-cpp-ubuntu-llvm:22.04 AS builder
|
||||||
|
FROM aminya/setup-cpp-ubuntu-gcc:22.04 AS builder
|
||||||
|
FROM aminya/setup-cpp-ubuntu-mingw:22.04 AS builder
|
||||||
|
```
|
||||||
|
|
||||||
|
And for Ubuntu `20.04`:
|
||||||
|
|
||||||
|
```dockerfile
|
||||||
|
FROM aminya/setup-cpp-ubuntu:20.04 AS builder
|
||||||
|
FROM aminya/setup-cpp-ubuntu-llvm:20.04 AS builder
|
||||||
|
FROM aminya/setup-cpp-ubuntu-gcc:20.04 AS builder
|
||||||
|
FROM aminya/setup-cpp-ubuntu-mingw:20.04 AS builder
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Alpine Images (amd64 and arm64)
|
||||||
|
|
||||||
|
Setup-cpp provides prebuilt images for Alpine with support for base tools, and compilers `llvm`, `gcc`, and `mingw` available for `amd64` and `arm64` architectures.
|
||||||
|
|
||||||
|
Base image with `cmake, ninja, task, vcpkg, python, make, cppcheck, gcovr, doxygen, ccache, conan, meson, cmakelang` for Alpine 3.18:
|
||||||
|
|
||||||
|
```dockerfile
|
||||||
|
FROM aminya/setup-cpp-alpine:3.21 AS builder
|
||||||
|
```
|
||||||
|
|
||||||
|
Image with `llvm` and the base tools:
|
||||||
|
|
||||||
|
```dockerfile
|
||||||
|
FROM aminya/setup-cpp-alpine-llvm:3.21 AS builder
|
||||||
|
```
|
||||||
|
|
||||||
|
Image with `gcc` and the base tools:
|
||||||
|
|
||||||
|
```dockerfile
|
||||||
|
FROM aminya/setup-cpp-alpine-gcc:3.21 AS builder
|
||||||
|
```
|
||||||
|
|
||||||
|
Image with `mingw` and the base tools:
|
||||||
|
|
||||||
|
```dockerfile
|
||||||
|
FROM aminya/setup-cpp-alpine-mingw:3.21 AS builder
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Fedora Images (amd64)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
Base image with `cmake, ninja, task, vcpkg, python, make, cppcheck, gcovr, doxygen, ccache, conan, meson, cmakelang`
|
Base image with `cmake, ninja, task, vcpkg, python, make, cppcheck, gcovr, doxygen, ccache, conan, meson, cmakelang`
|
||||||
|
|
||||||
```dockerfile
|
```dockerfile
|
||||||
FROM aminya/setup-cpp-fedora:40-1.1.0 AS builder
|
FROM aminya/setup-cpp-fedora:40 AS builder
|
||||||
```
|
```
|
||||||
|
|
||||||
Image with `llvm` and the base tools:
|
Image with `llvm` and the base tools:
|
||||||
|
|
||||||
```dockerfile
|
```dockerfile
|
||||||
FROM aminya/setup-cpp-fedora-llvm:40-1.1.0 AS builder
|
FROM aminya/setup-cpp-fedora-llvm:40 AS builder
|
||||||
```
|
```
|
||||||
|
|
||||||
Image with `gcc` and the base tools:
|
Image with `gcc` and the base tools:
|
||||||
|
|
||||||
```dockerfile
|
```dockerfile
|
||||||
FROM aminya/setup-cpp-fedora-gcc:40-1.1.0 AS builder
|
FROM aminya/setup-cpp-fedora-gcc:40 AS builder
|
||||||
```
|
```
|
||||||
|
|
||||||
Image with `mingw` and the base tools:
|
Image with `mingw` and the base tools:
|
||||||
|
|
||||||
```dockerfile
|
```dockerfile
|
||||||
FROM aminya/setup-cpp-fedora-mingw:40-1.1.0 AS builder
|
FROM aminya/setup-cpp-fedora-mingw:40 AS builder
|
||||||
```
|
```
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
#### ArchLinux Images
|
#### ArchLinux Images (amd64)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
Base image with `cmake, ninja, task, vcpkg, python, make, cppcheck, gcovr, doxygen, ccache, conan, meson, cmakelang`
|
Base image with `cmake, ninja, task, vcpkg, python, make, cppcheck, gcovr, doxygen, ccache, conan, meson, cmakelang`
|
||||||
|
|
||||||
```dockerfile
|
```dockerfile
|
||||||
FROM aminya/setup-cpp-arch:base-1.1.0 AS builder
|
FROM aminya/setup-cpp-arch:base AS builder
|
||||||
```
|
```
|
||||||
|
|
||||||
Image with `llvm` and the base tools:
|
Image with `llvm` and the base tools:
|
||||||
|
|
||||||
```dockerfile
|
```dockerfile
|
||||||
FROM aminya/setup-cpp-arch-llvm:base-1.1.0 AS builder
|
FROM aminya/setup-cpp-arch-llvm:base AS builder
|
||||||
```
|
```
|
||||||
|
|
||||||
Image with `gcc` and the base tools:
|
Image with `gcc` and the base tools:
|
||||||
|
|
||||||
```dockerfile
|
```dockerfile
|
||||||
FROM aminya/setup-cpp-arch-gcc:base-1.1.0 AS builder
|
FROM aminya/setup-cpp-arch-gcc:base AS builder
|
||||||
```
|
```
|
||||||
|
|
||||||
Image with `mingw` and the base tools:
|
Image with `mingw` and the base tools:
|
||||||
|
|
||||||
```dockerfile
|
```dockerfile
|
||||||
FROM aminya/setup-cpp-arch-mingw:base-1.1.0 AS builder
|
FROM aminya/setup-cpp-arch-mingw:base AS builder
|
||||||
```
|
```
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
@ -314,7 +366,7 @@ RUN apt-get update -qq && \
|
||||||
# install nodejs
|
# install nodejs
|
||||||
apt-get install -y --no-install-recommends nodejs npm && \
|
apt-get install -y --no-install-recommends nodejs npm && \
|
||||||
# install setup-cpp
|
# install setup-cpp
|
||||||
npm install -g setup-cpp@v1.1.0 && \
|
npm install -g setup-cpp@v1.8.0 && \
|
||||||
# install the compiler and tools
|
# install the compiler and tools
|
||||||
NODE_OPTIONS="--enable-source-maps" \
|
NODE_OPTIONS="--enable-source-maps" \
|
||||||
setup-cpp \
|
setup-cpp \
|
||||||
|
|
@ -338,15 +390,15 @@ RUN apt-get update -qq && \
|
||||||
rm -rf /var/lib/apt/lists/* && \
|
rm -rf /var/lib/apt/lists/* && \
|
||||||
rm -rf /tmp/*
|
rm -rf /tmp/*
|
||||||
|
|
||||||
ENTRYPOINT ["/bin/bash"]
|
SHELL ["/bin/bash", "-l", "-c"]
|
||||||
|
ENTRYPOINT ["/bin/bash", "-l"]
|
||||||
|
|
||||||
#### Building (example)
|
#### Building (example)
|
||||||
FROM setup-cpp-ubuntu AS builder
|
FROM setup-cpp-ubuntu AS builder
|
||||||
|
|
||||||
COPY ./dev/cpp_vcpkg_project /home/app
|
COPY ./dev/cpp_vcpkg_project /home/app
|
||||||
WORKDIR /home/app
|
WORKDIR /home/app
|
||||||
RUN bash -c 'source ~/.cpprc \
|
RUN task build
|
||||||
&& task build'
|
|
||||||
|
|
||||||
#### Running environment
|
#### Running environment
|
||||||
# use a fresh image as the runner
|
# use a fresh image as the runner
|
||||||
|
|
@ -424,7 +476,7 @@ stages:
|
||||||
apt-get install -y --no-install-recommends nodejs npm
|
apt-get install -y --no-install-recommends nodejs npm
|
||||||
|
|
||||||
# install setup-cpp
|
# install setup-cpp
|
||||||
npm install -g setup-cpp@v1.1.0
|
npm install -g setup-cpp@v1.8.0
|
||||||
|
|
||||||
# install the compiler and tools
|
# install the compiler and tools
|
||||||
./setup-cpp-x64-linux --compiler $compiler --cmake true --ninja true --ccache true --vcpkg true
|
./setup-cpp-x64-linux --compiler $compiler --cmake true --ninja true --ccache true --vcpkg true
|
||||||
|
|
@ -453,6 +505,37 @@ test_linux_gcc:
|
||||||
- *test
|
- *test
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### As a Library in Nodejs
|
||||||
|
|
||||||
|
```ts
|
||||||
|
import { setupCpp, success, error } from "setup-cpp"
|
||||||
|
|
||||||
|
async function main() {
|
||||||
|
const { errorMessages, successMessages } = await setupCpp({
|
||||||
|
compiler: "llvm",
|
||||||
|
cmake: true,
|
||||||
|
ninja: true,
|
||||||
|
vcpkg: true,
|
||||||
|
})
|
||||||
|
|
||||||
|
for (const message of errorMessages) {
|
||||||
|
error(message)
|
||||||
|
}
|
||||||
|
for (const message of successMessages) {
|
||||||
|
success(message)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (errorMessages.length !== 0) {
|
||||||
|
process.exit(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
main().catch(err => {
|
||||||
|
console.error(err)
|
||||||
|
process.exit(1)
|
||||||
|
})
|
||||||
|
```
|
||||||
|
|
||||||
## Articles
|
## Articles
|
||||||
|
|
||||||
[Setup-Cpp on Dev.to](https://dev.to/aminya/setup-cpp-3ia4)
|
[Setup-Cpp on Dev.to](https://dev.to/aminya/setup-cpp-3ia4)
|
||||||
|
|
|
||||||
103
README_DOCKER.md
103
README_DOCKER.md
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
Install all the tools required for building and testing C++/C projects.
|
Install all the tools required for building and testing C++/C projects.
|
||||||
|
|
||||||

|
[](https://github.com/aminya/setup-cpp/actions/workflows/CI.yml)
|
||||||
|
|
||||||
Setting up a **cross-platform** environment for building and testing C++/C projects is a bit tricky. Each platform has its own compilers, and each of them requires a different installation procedure. This package aims to fix this issue.
|
Setting up a **cross-platform** environment for building and testing C++/C projects is a bit tricky. Each platform has its own compilers, and each of them requires a different installation procedure. This package aims to fix this issue.
|
||||||
|
|
||||||
|
|
@ -16,82 +16,145 @@ See https://github.com/aminya/setup-cpp for more information about using `setup-
|
||||||
|
|
||||||
To provide fast development environments, `setup-cpp` provides several prebuilt docker images that have the tools you need. You can use these images as a base image for your project.
|
To provide fast development environments, `setup-cpp` provides several prebuilt docker images that have the tools you need. You can use these images as a base image for your project.
|
||||||
|
|
||||||
The names are in the format `aminya/setup-cpp-<platform>:<platform_version>-<setup_cpp_version>` and `aminya/setup-cpp-<platform>-<compiler>:<platform_version>-<setup_cpp_version>`.
|
The tags are in the following template:
|
||||||
|
|
||||||
#### Ubuntu Images
|
- Base image: `aminya/setup-cpp-ubuntu:24.04`
|
||||||
|
- Compiler image: `aminya/setup-cpp-ubuntu-llvm:24.04`
|
||||||
|
- Base image with pinned setup-cpp version: `aminya/setup-cpp-ubuntu:24.04-v1.8.0`
|
||||||
|
- Compiler image with pinned setup-cpp version: `aminya/setup-cpp-ubuntu-llvm:24.04-v1.8.0`
|
||||||
|
|
||||||
Base image with `cmake, ninja, task, vcpkg, python, make, cppcheck, gcovr, doxygen, ccache, conan, meson, cmakelang`
|
The supported platforms are `ubuntu`, `alpine`, `fedora`, and `arch`. The supported compilers are `llvm`, `gcc`, and `mingw`.
|
||||||
|
|
||||||
|
#### Ubuntu Images (amd64 and arm64)
|
||||||
|
|
||||||
|
Setup-cpp provides prebuilt images for various Ubuntu versions (20.04, 22.04, 24.04) with support for base tools, and compilers `llvm`, `gcc`, and `mingw` available for `amd64` and `arm64` architectures.
|
||||||
|
|
||||||
|
Base image with `cmake, ninja, task, vcpkg, python, make, cppcheck, gcovr, doxygen, ccache, conan, meson, cmakelang` for Ubuntu 24.04:
|
||||||
|
|
||||||
```dockerfile
|
```dockerfile
|
||||||
FROM aminya/setup-cpp-ubuntu:22.04-1.1.0 AS builder
|
FROM aminya/setup-cpp-ubuntu:24.04 AS builder
|
||||||
```
|
```
|
||||||
|
|
||||||
Image with `llvm` and the base tools:
|
Image with `llvm` and the base tools:
|
||||||
|
|
||||||
```dockerfile
|
```dockerfile
|
||||||
FROM aminya/setup-cpp-ubuntu-llvm:22.04-1.1.0 AS builder
|
FROM aminya/setup-cpp-ubuntu-llvm:24.04 AS builder
|
||||||
```
|
```
|
||||||
|
|
||||||
Image with `gcc` and the base tools:
|
Image with `gcc` and the base tools:
|
||||||
|
|
||||||
```dockerfile
|
```dockerfile
|
||||||
FROM aminya/setup-cpp-ubuntu-gcc:22.04-1.1.0 AS builder
|
FROM aminya/setup-cpp-ubuntu-gcc:24.04 AS builder
|
||||||
```
|
```
|
||||||
|
|
||||||
Image with `mingw` and the base tools:
|
Image with `mingw` and the base tools:
|
||||||
|
|
||||||
```dockerfile
|
```dockerfile
|
||||||
FROM aminya/setup-cpp-ubuntu-mingw:22.04-1.1.0 AS builder
|
FROM aminya/setup-cpp-ubuntu-mingw:24.04 AS builder
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Fedora Images
|
There are also the variants for Ubuntu `22.04`
|
||||||
|
|
||||||
Base image with `cmake, ninja, task, vcpkg, python, make, cppcheck, gcovr, doxygen, ccache, conan, meson, cmakelang`
|
|
||||||
|
|
||||||
```dockerfile
|
```dockerfile
|
||||||
FROM aminya/setup-cpp-fedora:40-1.1.0 AS builder
|
FROM aminya/setup-cpp-ubuntu:22.04 AS builder
|
||||||
|
FROM aminya/setup-cpp-ubuntu-llvm:22.04 AS builder
|
||||||
|
FROM aminya/setup-cpp-ubuntu-gcc:22.04 AS builder
|
||||||
|
FROM aminya/setup-cpp-ubuntu-mingw:22.04 AS builder
|
||||||
|
```
|
||||||
|
|
||||||
|
And for Ubuntu `20.04`:
|
||||||
|
|
||||||
|
```dockerfile
|
||||||
|
FROM aminya/setup-cpp-ubuntu:20.04 AS builder
|
||||||
|
FROM aminya/setup-cpp-ubuntu-llvm:20.04 AS builder
|
||||||
|
FROM aminya/setup-cpp-ubuntu-gcc:20.04 AS builder
|
||||||
|
FROM aminya/setup-cpp-ubuntu-mingw:20.04 AS builder
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Alpine Images (amd64 and arm64)
|
||||||
|
|
||||||
|
Setup-cpp provides prebuilt images for Alpine with support for base tools, and compilers `llvm`, `gcc`, and `mingw` available for `amd64` and `arm64` architectures.
|
||||||
|
|
||||||
|
Base image with `cmake, ninja, task, vcpkg, python, make, cppcheck, gcovr, doxygen, ccache, conan, meson, cmakelang` for Alpine 3.18:
|
||||||
|
|
||||||
|
```dockerfile
|
||||||
|
FROM aminya/setup-cpp-alpine:3.21 AS builder
|
||||||
```
|
```
|
||||||
|
|
||||||
Image with `llvm` and the base tools:
|
Image with `llvm` and the base tools:
|
||||||
|
|
||||||
```dockerfile
|
```dockerfile
|
||||||
FROM aminya/setup-cpp-fedora-llvm:40-1.1.0 AS builder
|
FROM aminya/setup-cpp-alpine-llvm:3.21 AS builder
|
||||||
```
|
```
|
||||||
|
|
||||||
Image with `gcc` and the base tools:
|
Image with `gcc` and the base tools:
|
||||||
|
|
||||||
```dockerfile
|
```dockerfile
|
||||||
FROM aminya/setup-cpp-fedora-gcc:40-1.1.0 AS builder
|
FROM aminya/setup-cpp-alpine-gcc:3.21 AS builder
|
||||||
```
|
```
|
||||||
|
|
||||||
Image with `mingw` and the base tools:
|
Image with `mingw` and the base tools:
|
||||||
|
|
||||||
```dockerfile
|
```dockerfile
|
||||||
FROM aminya/setup-cpp-fedora-mingw:40-1.1.0 AS builder
|
FROM aminya/setup-cpp-alpine-mingw:3.21 AS builder
|
||||||
```
|
```
|
||||||
|
|
||||||
#### ArchLinux Images
|
#### Fedora Images (amd64)
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
Base image with `cmake, ninja, task, vcpkg, python, make, cppcheck, gcovr, doxygen, ccache, conan, meson, cmakelang`
|
Base image with `cmake, ninja, task, vcpkg, python, make, cppcheck, gcovr, doxygen, ccache, conan, meson, cmakelang`
|
||||||
|
|
||||||
```dockerfile
|
```dockerfile
|
||||||
FROM aminya/setup-cpp-arch:base-1.1.0 AS builder
|
FROM aminya/setup-cpp-fedora:40 AS builder
|
||||||
```
|
```
|
||||||
|
|
||||||
Image with `llvm` and the base tools:
|
Image with `llvm` and the base tools:
|
||||||
|
|
||||||
```dockerfile
|
```dockerfile
|
||||||
FROM aminya/setup-cpp-arch-llvm:base-1.1.0 AS builder
|
FROM aminya/setup-cpp-fedora-llvm:40 AS builder
|
||||||
```
|
```
|
||||||
|
|
||||||
Image with `gcc` and the base tools:
|
Image with `gcc` and the base tools:
|
||||||
|
|
||||||
```dockerfile
|
```dockerfile
|
||||||
FROM aminya/setup-cpp-arch-gcc:base-1.1.0 AS builder
|
FROM aminya/setup-cpp-fedora-gcc:40 AS builder
|
||||||
```
|
```
|
||||||
|
|
||||||
Image with `mingw` and the base tools:
|
Image with `mingw` and the base tools:
|
||||||
|
|
||||||
```dockerfile
|
```dockerfile
|
||||||
FROM aminya/setup-cpp-arch-mingw:base-1.1.0 AS builder
|
FROM aminya/setup-cpp-fedora-mingw:40 AS builder
|
||||||
```
|
```
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
#### ArchLinux Images (amd64)
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
|
Base image with `cmake, ninja, task, vcpkg, python, make, cppcheck, gcovr, doxygen, ccache, conan, meson, cmakelang`
|
||||||
|
|
||||||
|
```dockerfile
|
||||||
|
FROM aminya/setup-cpp-arch:base AS builder
|
||||||
|
```
|
||||||
|
|
||||||
|
Image with `llvm` and the base tools:
|
||||||
|
|
||||||
|
```dockerfile
|
||||||
|
FROM aminya/setup-cpp-arch-llvm:base AS builder
|
||||||
|
```
|
||||||
|
|
||||||
|
Image with `gcc` and the base tools:
|
||||||
|
|
||||||
|
```dockerfile
|
||||||
|
FROM aminya/setup-cpp-arch-gcc:base AS builder
|
||||||
|
```
|
||||||
|
|
||||||
|
Image with `mingw` and the base tools:
|
||||||
|
|
||||||
|
```dockerfile
|
||||||
|
FROM aminya/setup-cpp-arch-mingw:base AS builder
|
||||||
|
```
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
|
||||||
|
|
@ -163,6 +163,12 @@ inputs:
|
||||||
node-package-manager:
|
node-package-manager:
|
||||||
description: "The node package manager to use (npm/yarn/pnpm) when installing setup-cpp globally"
|
description: "The node package manager to use (npm/yarn/pnpm) when installing setup-cpp globally"
|
||||||
required: false
|
required: false
|
||||||
|
git:
|
||||||
|
description: "Wether to install git (true/false) or the specific version to install."
|
||||||
|
required: false
|
||||||
|
tar:
|
||||||
|
description: "Wether to install tar (true/false) or the specific version to install."
|
||||||
|
required: false
|
||||||
|
|
||||||
runs:
|
runs:
|
||||||
using: "node20"
|
using: "node20"
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import type { TransformOptions } from "@babel/core"
|
import type { TransformOptions } from "@babel/core"
|
||||||
// @ts-ignore
|
// @ts-expect-error no types
|
||||||
import RemoveNodePrefix from "@upleveled/babel-plugin-remove-node-prefix"
|
import RemoveNodePrefix from "@upleveled/babel-plugin-remove-node-prefix"
|
||||||
|
|
||||||
const babelConfig: TransformOptions = {
|
const babelConfig: TransformOptions = {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
[install]
|
||||||
|
linker = "hoisted"
|
||||||
|
|
@ -31,6 +31,8 @@ words:
|
||||||
- clangd
|
- clangd
|
||||||
- cmake
|
- cmake
|
||||||
- cmakeformat
|
- cmakeformat
|
||||||
|
- cmakelang
|
||||||
|
- cmakelint
|
||||||
- cobertura
|
- cobertura
|
||||||
- copr
|
- copr
|
||||||
- CPATH
|
- CPATH
|
||||||
|
|
@ -48,6 +50,7 @@ words:
|
||||||
- dyld
|
- dyld
|
||||||
- eabi
|
- eabi
|
||||||
- envosman
|
- envosman
|
||||||
|
- envosmanrc
|
||||||
- esac
|
- esac
|
||||||
- esbuild
|
- esbuild
|
||||||
- esmodule
|
- esmodule
|
||||||
|
|
@ -57,11 +60,13 @@ words:
|
||||||
- gcovr
|
- gcovr
|
||||||
- ghes
|
- ghes
|
||||||
- Graphviz
|
- Graphviz
|
||||||
|
- gtar
|
||||||
- hadolint
|
- hadolint
|
||||||
- iarna
|
- iarna
|
||||||
- inja
|
- inja
|
||||||
- isci
|
- isci
|
||||||
- isroot
|
- isroot
|
||||||
|
- jsonify
|
||||||
- kcov
|
- kcov
|
||||||
- LDFLAGS
|
- LDFLAGS
|
||||||
- lefticus
|
- lefticus
|
||||||
|
|
@ -71,6 +76,7 @@ words:
|
||||||
- libstdc
|
- libstdc
|
||||||
- libtinfo
|
- libtinfo
|
||||||
- liuli
|
- liuli
|
||||||
|
- llvmorg
|
||||||
- mdimporterdir
|
- mdimporterdir
|
||||||
- memoizee
|
- memoizee
|
||||||
- mkdirp
|
- mkdirp
|
||||||
|
|
@ -100,6 +106,7 @@ words:
|
||||||
- pygments
|
- pygments
|
||||||
- pypy
|
- pypy
|
||||||
- qlplugindir
|
- qlplugindir
|
||||||
|
- rharkor
|
||||||
- Sccache
|
- Sccache
|
||||||
- setupcpp
|
- setupcpp
|
||||||
- setx
|
- setx
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
FROM aminya/setup-cpp-alpine:latest AS setup-cpp-alpine-gcc
|
||||||
|
|
||||||
|
# install gcc
|
||||||
|
RUN node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.mjs \
|
||||||
|
--compiler gcc && \
|
||||||
|
# cleanup
|
||||||
|
rm -rf /var/cache/apk/*
|
||||||
|
|
||||||
|
SHELL ["/entrypoint.sh", "/bin/sh", "-c"]
|
||||||
|
ENTRYPOINT ["/entrypoint.sh", "/bin/sh"]
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
FROM aminya/setup-cpp-alpine:latest AS setup-cpp-alpine-llvm
|
||||||
|
|
||||||
|
# install llvm
|
||||||
|
RUN node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.mjs \
|
||||||
|
--compiler llvm && \
|
||||||
|
# cleanup
|
||||||
|
rm -rf /var/cache/apk/*
|
||||||
|
|
||||||
|
SHELL ["/entrypoint.sh", "/bin/sh", "-c"]
|
||||||
|
ENTRYPOINT ["/entrypoint.sh", "/bin/sh"]
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
FROM aminya/setup-cpp-alpine:latest AS setup-cpp-alpine-mingw
|
||||||
|
|
||||||
|
# install mingw/powershell
|
||||||
|
RUN node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.mjs \
|
||||||
|
--compiler mingw \
|
||||||
|
--powershell true && \
|
||||||
|
# cleanup
|
||||||
|
rm -rf /var/cache/apk/*
|
||||||
|
|
||||||
|
SHELL ["/entrypoint.sh", "/bin/sh", "-c"]
|
||||||
|
ENTRYPOINT ["/entrypoint.sh", "/bin/sh"]
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
ARG BASE_VERSION=22-alpine3.21
|
||||||
|
|
||||||
|
#### Base Image with Node.js
|
||||||
|
FROM --platform=$BUILDPLATFORM node:${BASE_VERSION} AS alpine-nodejs
|
||||||
|
|
||||||
|
#### Base Image with Tools
|
||||||
|
FROM alpine-nodejs AS setup-cpp-alpine
|
||||||
|
|
||||||
|
COPY "./dist/modern" "/usr/lib/setup-cpp/"
|
||||||
|
|
||||||
|
# install the cpp tools
|
||||||
|
RUN node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.mjs \
|
||||||
|
--cmake true \
|
||||||
|
--ninja true \
|
||||||
|
--task true \
|
||||||
|
--python true \
|
||||||
|
--make true \
|
||||||
|
--cppcheck true \
|
||||||
|
--gcovr true \
|
||||||
|
--doxygen true \
|
||||||
|
--vcpkg true \
|
||||||
|
--ccache true \
|
||||||
|
--conan true \
|
||||||
|
--cmakelang true \
|
||||||
|
--meson true && \
|
||||||
|
# cleanup
|
||||||
|
rm -rf /var/cache/apk/*
|
||||||
|
|
||||||
|
# Custom entrypoint due to bash -l limitations on Alpine
|
||||||
|
RUN printf '#!/bin/bash\nsource $HOME/.cpprc\nexec "$@"\n' > /entrypoint.sh && \
|
||||||
|
chmod +x /entrypoint.sh
|
||||||
|
|
||||||
|
SHELL ["/entrypoint.sh", "/bin/sh", "-c"]
|
||||||
|
ENTRYPOINT ["/entrypoint.sh", "/bin/sh"]
|
||||||
|
|
@ -1,11 +1,12 @@
|
||||||
FROM --platform=$BUILDPLATFORM aminya/setup-cpp-arch:latest AS setup-cpp-arch-gcc
|
FROM aminya/setup-cpp-arch:latest AS setup-cpp-arch-gcc
|
||||||
|
|
||||||
# install llvm
|
# install llvm
|
||||||
RUN node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.js \
|
RUN node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.mjs \
|
||||||
--compiler gcc && \
|
--compiler gcc && \
|
||||||
# arch cleanup
|
# arch cleanup
|
||||||
pacman -Scc --noconfirm && \
|
pacman -Scc --noconfirm && \
|
||||||
rm -rf /var/cache/pacman/pkg/* && \
|
rm -rf /var/cache/pacman/pkg/* && \
|
||||||
rm -rf /tmp/*
|
rm -rf /tmp/*
|
||||||
|
|
||||||
ENTRYPOINT ["/bin/bash"]
|
SHELL ["/bin/bash", "-l", "-c"]
|
||||||
|
ENTRYPOINT ["/bin/bash", "-l"]
|
||||||
|
|
|
||||||
|
|
@ -1,68 +0,0 @@
|
||||||
schemaVersion: 2.0.0
|
|
||||||
|
|
||||||
commandTests:
|
|
||||||
- name: cmake
|
|
||||||
command: cmake
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*3.*"]
|
|
||||||
- name: ninja
|
|
||||||
command: /root/ninja/ninja
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*1.*"]
|
|
||||||
- name: task
|
|
||||||
command: task
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*Task version:\\s*v3.*"]
|
|
||||||
- name: python
|
|
||||||
command: python
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*Python.*"]
|
|
||||||
- name: python3
|
|
||||||
command: python3
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*Python.*"]
|
|
||||||
- name: make
|
|
||||||
command: make
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*GNU Make.*"]
|
|
||||||
- name: cppcheck
|
|
||||||
command: cppcheck
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: gcovr
|
|
||||||
command: gcovr
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*gcovr.*"]
|
|
||||||
- name: doxygen
|
|
||||||
command: doxygen
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*1.*"]
|
|
||||||
- name: ccache
|
|
||||||
command: ccache
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: conan
|
|
||||||
command: conan
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: meson
|
|
||||||
command: meson
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: cmake-format
|
|
||||||
command: cmake-format
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: cmake-lint
|
|
||||||
command: cmake-lint
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: gcc
|
|
||||||
command: /usr/bin/gcc
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*gcc.*"]
|
|
||||||
|
|
||||||
fileExistenceTests:
|
|
||||||
- name: "vcpkg"
|
|
||||||
path: "/root/vcpkg"
|
|
||||||
shouldExist: true
|
|
||||||
|
|
@ -1,11 +1,12 @@
|
||||||
FROM --platform=$BUILDPLATFORM aminya/setup-cpp-arch:latest AS setup-cpp-arch-llvm
|
FROM aminya/setup-cpp-arch:latest AS setup-cpp-arch-llvm
|
||||||
|
|
||||||
# install llvm
|
# install llvm
|
||||||
RUN node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.js \
|
RUN node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.mjs \
|
||||||
--compiler llvm && \
|
--compiler llvm && \
|
||||||
# arch cleanup
|
# arch cleanup
|
||||||
pacman -Scc --noconfirm && \
|
pacman -Scc --noconfirm && \
|
||||||
rm -rf /var/cache/pacman/pkg/* && \
|
rm -rf /var/cache/pacman/pkg/* && \
|
||||||
rm -rf /tmp/*
|
rm -rf /tmp/*
|
||||||
|
|
||||||
ENTRYPOINT ["/bin/bash"]
|
SHELL ["/bin/bash", "-l", "-c"]
|
||||||
|
ENTRYPOINT ["/bin/bash", "-l"]
|
||||||
|
|
|
||||||
|
|
@ -1,68 +0,0 @@
|
||||||
schemaVersion: 2.0.0
|
|
||||||
|
|
||||||
commandTests:
|
|
||||||
- name: cmake
|
|
||||||
command: cmake
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*3.*"]
|
|
||||||
- name: ninja
|
|
||||||
command: /root/ninja/ninja
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*1.*"]
|
|
||||||
- name: task
|
|
||||||
command: task
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*Task version:\\s*v3.*"]
|
|
||||||
- name: python
|
|
||||||
command: python
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*Python.*"]
|
|
||||||
- name: python3
|
|
||||||
command: python3
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*Python.*"]
|
|
||||||
- name: make
|
|
||||||
command: make
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*GNU Make.*"]
|
|
||||||
- name: cppcheck
|
|
||||||
command: cppcheck
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: gcovr
|
|
||||||
command: gcovr
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*gcovr.*"]
|
|
||||||
- name: doxygen
|
|
||||||
command: doxygen
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*1.*"]
|
|
||||||
- name: ccache
|
|
||||||
command: ccache
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: conan
|
|
||||||
command: conan
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: meson
|
|
||||||
command: meson
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: cmake-format
|
|
||||||
command: cmake-format
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: cmake-lint
|
|
||||||
command: cmake-lint
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: clang
|
|
||||||
command: /usr/lib/llvm-15/bin/clang
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*clang.*"]
|
|
||||||
|
|
||||||
fileExistenceTests:
|
|
||||||
- name: "vcpkg"
|
|
||||||
path: "/root/vcpkg"
|
|
||||||
shouldExist: true
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
FROM --platform=$BUILDPLATFORM aminya/setup-cpp-arch:latest AS setup-cpp-arch-mingw
|
FROM aminya/setup-cpp-arch:latest AS setup-cpp-arch-mingw
|
||||||
|
|
||||||
# install mingw/powershell
|
# install mingw/powershell
|
||||||
RUN node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.js \
|
RUN node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.mjs \
|
||||||
--compiler mingw \
|
--compiler mingw \
|
||||||
--powershell true && \
|
--powershell true && \
|
||||||
# arch cleanup
|
# arch cleanup
|
||||||
|
|
@ -9,4 +9,5 @@ RUN node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.js \
|
||||||
rm -rf /var/cache/pacman/pkg/* && \
|
rm -rf /var/cache/pacman/pkg/* && \
|
||||||
rm -rf /tmp/*
|
rm -rf /tmp/*
|
||||||
|
|
||||||
ENTRYPOINT ["/bin/bash"]
|
SHELL ["/bin/bash", "-l", "-c"]
|
||||||
|
ENTRYPOINT ["/bin/bash", "-l"]
|
||||||
|
|
|
||||||
|
|
@ -1,79 +0,0 @@
|
||||||
schemaVersion: 2.0.0
|
|
||||||
|
|
||||||
commandTests:
|
|
||||||
- name: cmake
|
|
||||||
command: cmake
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*3.*"]
|
|
||||||
- name: ninja
|
|
||||||
command: /root/ninja/ninja
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*1.*"]
|
|
||||||
- name: task
|
|
||||||
command: task
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*Task version:\\s*v3.*"]
|
|
||||||
- name: python
|
|
||||||
command: python
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*Python.*"]
|
|
||||||
- name: python3
|
|
||||||
command: python3
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*Python.*"]
|
|
||||||
- name: make
|
|
||||||
command: make
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*GNU Make.*"]
|
|
||||||
- name: cppcheck
|
|
||||||
command: cppcheck
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: gcovr
|
|
||||||
command: gcovr
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*gcovr.*"]
|
|
||||||
- name: doxygen
|
|
||||||
command: doxygen
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*1.*"]
|
|
||||||
- name: ccache
|
|
||||||
command: ccache
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: conan
|
|
||||||
command: conan
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: meson
|
|
||||||
command: meson
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: cmake-format
|
|
||||||
command: cmake-format
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: cmake-lint
|
|
||||||
command: cmake-lint
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: mingw c compiler
|
|
||||||
command: x86_64-w64-mingw32-gcc
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*x86_64-w64-mingw32-gcc.*"]
|
|
||||||
- name: mingw c++ compiler
|
|
||||||
command: x86_64-w64-mingw32-g++
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*x86_64-w64-mingw32-g\\+\\+*"]
|
|
||||||
- name: powershell
|
|
||||||
command: pwsh
|
|
||||||
args: ["-Version"]
|
|
||||||
expectedOutput: [".*PowerShell.*"]
|
|
||||||
|
|
||||||
fileExistenceTests:
|
|
||||||
- name: "vcpkg"
|
|
||||||
path: "/root/vcpkg"
|
|
||||||
shouldExist: true
|
|
||||||
- name: "cross root"
|
|
||||||
path: "/usr/x86_64-w64-mingw32"
|
|
||||||
shouldExist: true
|
|
||||||
|
|
@ -1,6 +1,9 @@
|
||||||
## base image
|
## base image
|
||||||
FROM --platform=$BUILDPLATFORM archlinux:base AS arch-nodejs
|
FROM --platform=$BUILDPLATFORM archlinux:base AS arch-nodejs
|
||||||
|
|
||||||
|
# Setup bash environment
|
||||||
|
RUN echo '[[ -f ~/.bashrc ]] && . ~/.bashrc' > /root/.bash_profile
|
||||||
|
|
||||||
RUN pacman -Syuu --noconfirm && \
|
RUN pacman -Syuu --noconfirm && \
|
||||||
pacman-db-upgrade && \
|
pacman-db-upgrade && \
|
||||||
# install nodejs
|
# install nodejs
|
||||||
|
|
@ -10,14 +13,14 @@ RUN pacman -Syuu --noconfirm && \
|
||||||
rm -rf /var/cache/pacman/pkg/* && \
|
rm -rf /var/cache/pacman/pkg/* && \
|
||||||
rm -rf /tmp/*
|
rm -rf /tmp/*
|
||||||
|
|
||||||
FROM --platform=$BUILDPLATFORM arch-nodejs AS setup-cpp-arch
|
FROM arch-nodejs AS setup-cpp-arch
|
||||||
|
|
||||||
COPY "./dist/legacy" "/usr/lib/setup-cpp/"
|
COPY "./dist/modern" "/usr/lib/setup-cpp/"
|
||||||
|
|
||||||
# install the cpp tools
|
# install the cpp tools
|
||||||
RUN pacman -Syuu --noconfirm && \
|
RUN pacman -Syuu --noconfirm && \
|
||||||
pacman-db-upgrade && \
|
pacman-db-upgrade && \
|
||||||
node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.js \
|
node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.mjs \
|
||||||
--cmake true \
|
--cmake true \
|
||||||
--ninja true \
|
--ninja true \
|
||||||
--task true \
|
--task true \
|
||||||
|
|
@ -36,4 +39,5 @@ RUN pacman -Syuu --noconfirm && \
|
||||||
rm -rf /var/cache/pacman/pkg/* && \
|
rm -rf /var/cache/pacman/pkg/* && \
|
||||||
rm -rf /tmp/*
|
rm -rf /tmp/*
|
||||||
|
|
||||||
ENTRYPOINT ["/bin/bash"]
|
SHELL ["/bin/bash", "-l", "-c"]
|
||||||
|
ENTRYPOINT ["/bin/bash", "-l"]
|
||||||
|
|
|
||||||
|
|
@ -1,64 +0,0 @@
|
||||||
schemaVersion: 2.0.0
|
|
||||||
|
|
||||||
commandTests:
|
|
||||||
- name: cmake
|
|
||||||
command: cmake
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*3.*"]
|
|
||||||
- name: ninja
|
|
||||||
command: /root/ninja/ninja
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*1.*"]
|
|
||||||
- name: task
|
|
||||||
command: task
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*Task version:\\s*v3.*"]
|
|
||||||
- name: python
|
|
||||||
command: python
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*Python.*"]
|
|
||||||
- name: python3
|
|
||||||
command: python3
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*Python.*"]
|
|
||||||
- name: make
|
|
||||||
command: make
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*GNU Make.*"]
|
|
||||||
- name: cppcheck
|
|
||||||
command: cppcheck
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: gcovr
|
|
||||||
command: gcovr
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*gcovr.*"]
|
|
||||||
- name: doxygen
|
|
||||||
command: doxygen
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*1.*"]
|
|
||||||
- name: ccache
|
|
||||||
command: ccache
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: conan
|
|
||||||
command: conan
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: meson
|
|
||||||
command: meson
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: cmake-format
|
|
||||||
command: cmake-format
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: cmake-lint
|
|
||||||
command: cmake-lint
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
|
|
||||||
fileExistenceTests:
|
|
||||||
- name: "vcpkg"
|
|
||||||
path: "/root/vcpkg"
|
|
||||||
shouldExist: true
|
|
||||||
|
|
@ -7,8 +7,8 @@ async function main() {
|
||||||
const dockerFileContent = await readFile(`./dev/docker/setup-cpp/setup-cpp-${name}.dockerfile`, "utf-8")
|
const dockerFileContent = await readFile(`./dev/docker/setup-cpp/setup-cpp-${name}.dockerfile`, "utf-8")
|
||||||
const modifiedDockerFile = dockerFileContent
|
const modifiedDockerFile = dockerFileContent
|
||||||
// load the externally built setup-cpp
|
// load the externally built setup-cpp
|
||||||
.replace(/FROM (.*)/g, `FROM $1\n\nCOPY "./dist/legacy" "/usr/lib/setup-cpp/"`)
|
.replace(/FROM (.*)/g, `FROM $1\n\nCOPY "./dist/modern" "/usr/lib/setup-cpp/"`)
|
||||||
.replace("setup-cpp ", "node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.js ")
|
.replace("setup-cpp ", "node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.mjs ")
|
||||||
// remove the npm install line
|
// remove the npm install line
|
||||||
.replace(/# install setup-cpp\n\s*npm install -g setup-cpp.*\n/, "")
|
.replace(/# install setup-cpp\n\s*npm install -g setup-cpp.*\n/, "")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
||||||
import fastGlob from "fast-glob"
|
|
||||||
const { glob } = fastGlob
|
|
||||||
import path from "path"
|
|
||||||
import { execa } from "execa"
|
|
||||||
|
|
||||||
async function main() {
|
|
||||||
const testFiles = await glob("./dev/docker/ci/*.yml")
|
|
||||||
const results = await Promise.all(testFiles.map(async (testFile) => {
|
|
||||||
try {
|
|
||||||
// the image name
|
|
||||||
const image = `setup-cpp-${path.basename(testFile, ".yml")}`
|
|
||||||
|
|
||||||
// check if the image exists
|
|
||||||
const imageExists = await execa("docker", ["images", "-q", image])
|
|
||||||
if (imageExists.exitCode !== 0 || imageExists.stdout.trim() === "") {
|
|
||||||
console.log(`Image ${image} does not exist`)
|
|
||||||
return 2
|
|
||||||
}
|
|
||||||
|
|
||||||
await execa("container-structure-test", ["test", "--image", image, "--config", testFile], {
|
|
||||||
stdio: "inherit",
|
|
||||||
})
|
|
||||||
return 0
|
|
||||||
} catch (error) {
|
|
||||||
console.error(error.message)
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
}))
|
|
||||||
|
|
||||||
if (results.some((result) => result === 1)) {
|
|
||||||
process.exit(1)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
await main()
|
|
||||||
|
|
@ -1,10 +1,11 @@
|
||||||
FROM --platform=$BUILDPLATFORM aminya/setup-cpp-fedora:latest AS setup-cpp-fedora-gcc
|
FROM aminya/setup-cpp-fedora:latest AS setup-cpp-fedora-gcc
|
||||||
|
|
||||||
# install gcc
|
# install gcc
|
||||||
RUN node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.js \
|
RUN node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.mjs \
|
||||||
--compiler gcc && \
|
--compiler gcc && \
|
||||||
# cleanup
|
# cleanup
|
||||||
dnf clean all && \
|
dnf clean all && \
|
||||||
rm -rf /tmp/*
|
rm -rf /tmp/*
|
||||||
|
|
||||||
ENTRYPOINT ["/bin/bash"]
|
SHELL ["/bin/bash", "-l", "-c"]
|
||||||
|
ENTRYPOINT ["/bin/bash", "-l"]
|
||||||
|
|
|
||||||
|
|
@ -1,68 +0,0 @@
|
||||||
schemaVersion: 2.0.0
|
|
||||||
|
|
||||||
commandTests:
|
|
||||||
- name: cmake
|
|
||||||
command: cmake
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*3.*"]
|
|
||||||
- name: ninja
|
|
||||||
command: /root/ninja/ninja
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*1.*"]
|
|
||||||
- name: task
|
|
||||||
command: task
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*Task version:\\s*v3.*"]
|
|
||||||
- name: python
|
|
||||||
command: python
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*Python.*"]
|
|
||||||
- name: python3
|
|
||||||
command: python3
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*Python.*"]
|
|
||||||
- name: make
|
|
||||||
command: make
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*GNU Make.*"]
|
|
||||||
- name: cppcheck
|
|
||||||
command: cppcheck
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: gcovr
|
|
||||||
command: gcovr
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*gcovr.*"]
|
|
||||||
- name: doxygen
|
|
||||||
command: doxygen
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*1.*"]
|
|
||||||
- name: ccache
|
|
||||||
command: ccache
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: conan
|
|
||||||
command: conan
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: meson
|
|
||||||
command: meson
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: cmake-format
|
|
||||||
command: cmake-format
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: cmake-lint
|
|
||||||
command: cmake-lint
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: gcc
|
|
||||||
command: /usr/bin/gcc
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*gcc.*"]
|
|
||||||
|
|
||||||
fileExistenceTests:
|
|
||||||
- name: "vcpkg"
|
|
||||||
path: "/root/vcpkg"
|
|
||||||
shouldExist: true
|
|
||||||
|
|
@ -1,10 +1,11 @@
|
||||||
FROM --platform=$BUILDPLATFORM aminya/setup-cpp-fedora:latest AS setup-cpp-fedora-llvm
|
FROM aminya/setup-cpp-fedora:latest AS setup-cpp-fedora-llvm
|
||||||
|
|
||||||
# install llvm
|
# install llvm
|
||||||
RUN node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.js \
|
RUN node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.mjs \
|
||||||
--compiler llvm && \
|
--compiler llvm && \
|
||||||
# cleanup
|
# cleanup
|
||||||
dnf clean all && \
|
dnf clean all && \
|
||||||
rm -rf /tmp/*
|
rm -rf /tmp/*
|
||||||
|
|
||||||
ENTRYPOINT ["/bin/bash"]
|
SHELL ["/bin/bash", "-l", "-c"]
|
||||||
|
ENTRYPOINT ["/bin/bash", "-l"]
|
||||||
|
|
|
||||||
|
|
@ -1,68 +0,0 @@
|
||||||
schemaVersion: 2.0.0
|
|
||||||
|
|
||||||
commandTests:
|
|
||||||
- name: cmake
|
|
||||||
command: cmake
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*3.*"]
|
|
||||||
- name: ninja
|
|
||||||
command: /root/ninja/ninja
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*1.*"]
|
|
||||||
- name: task
|
|
||||||
command: task
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*Task version:\\s*v3.*"]
|
|
||||||
- name: python
|
|
||||||
command: python
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*Python.*"]
|
|
||||||
- name: python3
|
|
||||||
command: python3
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*Python.*"]
|
|
||||||
- name: make
|
|
||||||
command: make
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*GNU Make.*"]
|
|
||||||
- name: cppcheck
|
|
||||||
command: cppcheck
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: gcovr
|
|
||||||
command: gcovr
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*gcovr.*"]
|
|
||||||
- name: doxygen
|
|
||||||
command: doxygen
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*1.*"]
|
|
||||||
- name: ccache
|
|
||||||
command: ccache
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: conan
|
|
||||||
command: conan
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: meson
|
|
||||||
command: meson
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: cmake-format
|
|
||||||
command: cmake-format
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: cmake-lint
|
|
||||||
command: cmake-lint
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: clang
|
|
||||||
command: /usr/lib/llvm-15/bin/clang
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*clang.*"]
|
|
||||||
|
|
||||||
fileExistenceTests:
|
|
||||||
- name: "vcpkg"
|
|
||||||
path: "/root/vcpkg"
|
|
||||||
shouldExist: true
|
|
||||||
|
|
@ -1,11 +1,12 @@
|
||||||
FROM --platform=$BUILDPLATFORM aminya/setup-cpp-fedora:latest AS setup-cpp-fedora-mingw
|
FROM aminya/setup-cpp-fedora:latest AS setup-cpp-fedora-mingw
|
||||||
|
|
||||||
# install mingw
|
# install mingw
|
||||||
RUN node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.js \
|
RUN node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.mjs \
|
||||||
--compiler mingw \
|
--compiler mingw \
|
||||||
--powershell true && \
|
--powershell true && \
|
||||||
# cleanup
|
# cleanup
|
||||||
dnf clean all && \
|
dnf clean all && \
|
||||||
rm -rf /tmp/*
|
rm -rf /tmp/*
|
||||||
|
|
||||||
ENTRYPOINT ["/bin/bash"]
|
SHELL ["/bin/bash", "-l", "-c"]
|
||||||
|
ENTRYPOINT ["/bin/bash", "-l"]
|
||||||
|
|
|
||||||
|
|
@ -1,79 +0,0 @@
|
||||||
schemaVersion: 2.0.0
|
|
||||||
|
|
||||||
commandTests:
|
|
||||||
- name: cmake
|
|
||||||
command: cmake
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*3.*"]
|
|
||||||
- name: ninja
|
|
||||||
command: /root/ninja/ninja
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*1.*"]
|
|
||||||
- name: task
|
|
||||||
command: task
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*Task version:\\s*v3.*"]
|
|
||||||
- name: python
|
|
||||||
command: python
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*Python.*"]
|
|
||||||
- name: python3
|
|
||||||
command: python3
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*Python.*"]
|
|
||||||
- name: make
|
|
||||||
command: make
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*GNU Make.*"]
|
|
||||||
- name: cppcheck
|
|
||||||
command: cppcheck
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: gcovr
|
|
||||||
command: gcovr
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*gcovr.*"]
|
|
||||||
- name: doxygen
|
|
||||||
command: doxygen
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*1.*"]
|
|
||||||
- name: ccache
|
|
||||||
command: ccache
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: conan
|
|
||||||
command: conan
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: meson
|
|
||||||
command: meson
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: cmake-format
|
|
||||||
command: cmake-format
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: cmake-lint
|
|
||||||
command: cmake-lint
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: mingw c compiler
|
|
||||||
command: x86_64-w64-mingw32-gcc
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*x86_64-w64-mingw32-gcc.*"]
|
|
||||||
- name: mingw c++ compiler
|
|
||||||
command: x86_64-w64-mingw32-cpp
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*x86_64-w64-mingw32-cpp.*"]
|
|
||||||
- name: powershell
|
|
||||||
command: pwsh
|
|
||||||
args: ["-Version"]
|
|
||||||
expectedOutput: [".*PowerShell.*"]
|
|
||||||
|
|
||||||
fileExistenceTests:
|
|
||||||
- name: "vcpkg"
|
|
||||||
path: "/root/vcpkg"
|
|
||||||
shouldExist: true
|
|
||||||
- name: "cross root"
|
|
||||||
path: "/usr/x86_64-w64-mingw32"
|
|
||||||
shouldExist: true
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
## base image
|
## base image
|
||||||
FROM --platform=$BUILDPLATFORM fedora:40 AS fedora-nodejs
|
FROM --platform=$BUILDPLATFORM fedora:44 AS fedora-nodejs
|
||||||
|
|
||||||
# install nodejs
|
# install nodejs
|
||||||
RUN dnf -y install nodejs npm && \
|
RUN dnf -y install nodejs npm && \
|
||||||
|
|
@ -7,12 +7,12 @@ RUN dnf -y install nodejs npm && \
|
||||||
dnf clean all && \
|
dnf clean all && \
|
||||||
rm -rf /tmp/*
|
rm -rf /tmp/*
|
||||||
|
|
||||||
FROM --platform=$BUILDPLATFORM fedora-nodejs AS setup-cpp-fedora
|
FROM fedora-nodejs AS setup-cpp-fedora
|
||||||
|
|
||||||
COPY "./dist/legacy" "/usr/lib/setup-cpp/"
|
COPY "./dist/modern" "/usr/lib/setup-cpp/"
|
||||||
|
|
||||||
# install the cpp tools
|
# install the cpp tools
|
||||||
RUN node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.js \
|
RUN node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.mjs \
|
||||||
--cmake true \
|
--cmake true \
|
||||||
--ninja true \
|
--ninja true \
|
||||||
--task true \
|
--task true \
|
||||||
|
|
@ -30,4 +30,5 @@ RUN node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.js \
|
||||||
dnf clean all && \
|
dnf clean all && \
|
||||||
rm -rf /tmp/*
|
rm -rf /tmp/*
|
||||||
|
|
||||||
ENTRYPOINT ["/bin/bash"]
|
SHELL ["/bin/bash", "-l", "-c"]
|
||||||
|
ENTRYPOINT ["/bin/bash", "-l"]
|
||||||
|
|
|
||||||
|
|
@ -1,64 +0,0 @@
|
||||||
schemaVersion: 2.0.0
|
|
||||||
|
|
||||||
commandTests:
|
|
||||||
- name: cmake
|
|
||||||
command: cmake
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*3.*"]
|
|
||||||
- name: ninja
|
|
||||||
command: /root/ninja/ninja
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*1.*"]
|
|
||||||
- name: task
|
|
||||||
command: task
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*Task version:\\s*v3.*"]
|
|
||||||
- name: python
|
|
||||||
command: python
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*Python.*"]
|
|
||||||
- name: python3
|
|
||||||
command: python3
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*Python.*"]
|
|
||||||
- name: make
|
|
||||||
command: make
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*GNU Make.*"]
|
|
||||||
- name: cppcheck
|
|
||||||
command: cppcheck
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: gcovr
|
|
||||||
command: gcovr
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*gcovr.*"]
|
|
||||||
- name: doxygen
|
|
||||||
command: doxygen
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*1.*"]
|
|
||||||
- name: ccache
|
|
||||||
command: ccache
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: conan
|
|
||||||
command: conan
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: meson
|
|
||||||
command: meson
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: cmake-format
|
|
||||||
command: cmake-format
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: cmake-lint
|
|
||||||
command: cmake-lint
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
|
|
||||||
fileExistenceTests:
|
|
||||||
- name: "vcpkg"
|
|
||||||
path: "/root/vcpkg"
|
|
||||||
shouldExist: true
|
|
||||||
|
|
@ -2,76 +2,72 @@ schemaVersion: 2.0.0
|
||||||
|
|
||||||
commandTests:
|
commandTests:
|
||||||
- name: cmake
|
- name: cmake
|
||||||
command: cmake
|
command: bash
|
||||||
args: ["--version"]
|
args: ["-l", "-c", "cmake --version"]
|
||||||
expectedOutput: [".*3.*"]
|
expectedOutput: [".*3.*"]
|
||||||
- name: ninja
|
- name: ninja
|
||||||
command: /root/ninja/ninja
|
command: bash
|
||||||
args: ["--version"]
|
args: ["-l", "-c", "ninja --version"]
|
||||||
expectedOutput: [".*1.*"]
|
expectedOutput: [".*1.*"]
|
||||||
- name: task
|
- name: task
|
||||||
command: task
|
command: bash
|
||||||
args: ["--version"]
|
args: ["-l", "-c", "task --version"]
|
||||||
expectedOutput: [".*Task version:\\s*v3.*"]
|
expectedOutput: [".*Task version:\\s*v3.*"]
|
||||||
- name: python
|
- name: python
|
||||||
command: python
|
command: bash
|
||||||
args: ["--version"]
|
args: ["-l", "-c", "python --version"]
|
||||||
expectedOutput: [".*Python.*"]
|
expectedOutput: [".*Python.*"]
|
||||||
- name: python3
|
- name: python3
|
||||||
command: python3
|
command: bash
|
||||||
args: ["--version"]
|
args: ["-l", "-c", "python3 --version"]
|
||||||
expectedOutput: [".*Python.*"]
|
expectedOutput: [".*Python.*"]
|
||||||
- name: make
|
- name: make
|
||||||
command: make
|
command: bash
|
||||||
args: ["--version"]
|
args: ["-l", "-c", "make --version"]
|
||||||
expectedOutput: [".*GNU Make.*"]
|
expectedOutput: [".*GNU Make.*"]
|
||||||
- name: cppcheck
|
- name: cppcheck
|
||||||
command: cppcheck
|
command: bash
|
||||||
args: ["--version"]
|
args: ["-l", "-c", "cppcheck --version"]
|
||||||
expectedOutput: [".*"]
|
expectedOutput: [".*"]
|
||||||
- name: gcovr
|
- name: gcovr
|
||||||
command: gcovr
|
command: bash
|
||||||
args: ["--version"]
|
args: ["-l", "-c", "gcovr --version"]
|
||||||
expectedOutput: [".*gcovr.*"]
|
expectedOutput: [".*gcovr.*"]
|
||||||
- name: doxygen
|
- name: doxygen
|
||||||
command: doxygen
|
command: bash
|
||||||
args: ["--version"]
|
args: ["-l", "-c", "doxygen --version"]
|
||||||
expectedOutput: [".*1.*"]
|
expectedOutput: [".*1.*"]
|
||||||
- name: ccache
|
- name: ccache
|
||||||
command: ccache
|
command: bash
|
||||||
args: ["--version"]
|
args: ["-l", "-c", "ccache --version"]
|
||||||
expectedOutput: [".*"]
|
expectedOutput: [".*"]
|
||||||
- name: conan
|
- name: conan
|
||||||
command: conan
|
command: bash
|
||||||
args: ["--version"]
|
args: ["-l", "-c", "conan --version"]
|
||||||
expectedOutput: [".*"]
|
expectedOutput: [".*"]
|
||||||
- name: meson
|
- name: meson
|
||||||
command: meson
|
command: bash
|
||||||
args: ["--version"]
|
args: ["-l", "-c", "meson --version"]
|
||||||
expectedOutput: [".*"]
|
expectedOutput: [".*"]
|
||||||
- name: cmake-format
|
- name: cmake-format
|
||||||
command: cmake-format
|
command: bash
|
||||||
args: ["--version"]
|
args: ["-l", "-c", "cmake-format --version"]
|
||||||
expectedOutput: [".*"]
|
expectedOutput: [".*"]
|
||||||
- name: cmake-lint
|
- name: cmake-lint
|
||||||
command: cmake-lint
|
command: bash
|
||||||
args: ["--version"]
|
args: ["-l", "-c", "cmake-lint --version"]
|
||||||
expectedOutput: [".*"]
|
expectedOutput: [".*"]
|
||||||
- name: clang
|
|
||||||
command: /usr/lib/llvm-15/bin/clang
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*clang.*"]
|
|
||||||
|
|
||||||
fileExistenceTests:
|
fileExistenceTests:
|
||||||
- name: "vcpkg"
|
- name: "vcpkg"
|
||||||
path: "/root/vcpkg"
|
path: "/root/vcpkg"
|
||||||
shouldExist: true
|
shouldExist: true
|
||||||
- name: "llvm"
|
|
||||||
path: "/root/llvm"
|
|
||||||
shouldExist: true
|
|
||||||
- name: "ninja"
|
- name: "ninja"
|
||||||
path: "/root/ninja"
|
path: "/root/ninja"
|
||||||
shouldExist: true
|
shouldExist: true
|
||||||
- name: "cmake"
|
- name: "cmake"
|
||||||
path: "/root/cmake"
|
path: "/root/cmake"
|
||||||
shouldExist: true
|
shouldExist: true
|
||||||
|
- name: "task"
|
||||||
|
path: "/root/task"
|
||||||
|
shouldExist: true
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
schemaVersion: 2.0.0
|
||||||
|
|
||||||
|
commandTests:
|
||||||
|
- name: gcc
|
||||||
|
command: bash
|
||||||
|
args: ["-l", "-c", "gcc --version"]
|
||||||
|
expectedOutput: [".*gcc.*"]
|
||||||
|
- name: g++
|
||||||
|
command: bash
|
||||||
|
args: ["-l", "-c", "g++ --version"]
|
||||||
|
expectedOutput: [".*g\\+\\+.*"]
|
||||||
|
|
@ -0,0 +1,81 @@
|
||||||
|
import path from "path"
|
||||||
|
import { fileURLToPath } from "url"
|
||||||
|
import { execa } from "execa"
|
||||||
|
|
||||||
|
const __dirname = path.dirname(fileURLToPath(import.meta.url))
|
||||||
|
const rootDir = path.resolve(__dirname, "..", "..", "..", "..")
|
||||||
|
const testsDir = path.resolve(rootDir, "./dev/docker/ci/tests")
|
||||||
|
|
||||||
|
async function main() {
|
||||||
|
const variants = ["base", "gcc", "llvm", "mingw"]
|
||||||
|
|
||||||
|
const distros = ["ubuntu", "fedora", "arch"]
|
||||||
|
|
||||||
|
let failed = false
|
||||||
|
for (const distro of distros) {
|
||||||
|
for (const variant of variants) {
|
||||||
|
// eslint-disable-next-line no-await-in-loop
|
||||||
|
const result = await testDocker(variant, distro)
|
||||||
|
if (result !== 0) {
|
||||||
|
failed = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (failed) {
|
||||||
|
process.exit(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
await main()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test the docker image
|
||||||
|
* @param variant - The variant to test
|
||||||
|
* @param distro - The distro to test
|
||||||
|
* @returns The exit code of the test
|
||||||
|
*/
|
||||||
|
async function testDocker(variant: string, distro: string): Promise<number> {
|
||||||
|
try {
|
||||||
|
const image = variant === "base"
|
||||||
|
? `aminya/setup-cpp-${distro}:latest`
|
||||||
|
: `aminya/setup-cpp-${distro}-${variant}:latest`
|
||||||
|
const testConfig = path.join(testsDir, `${variant}.yml`)
|
||||||
|
|
||||||
|
console.log(`Testing ${image} with ${testConfig} `)
|
||||||
|
|
||||||
|
// Test the specific config
|
||||||
|
await runContainerStructureTest(image, testConfig)
|
||||||
|
|
||||||
|
// Test the base config
|
||||||
|
if (variant !== "base") {
|
||||||
|
const baseResult = await testDocker("base", distro)
|
||||||
|
if (baseResult !== 0) {
|
||||||
|
return baseResult
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0
|
||||||
|
} catch (error) {
|
||||||
|
if (error instanceof Error) {
|
||||||
|
console.error(error.message)
|
||||||
|
} else {
|
||||||
|
console.error(error)
|
||||||
|
}
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function runContainerStructureTest(image: string, testConfig: string) {
|
||||||
|
await execa("container-structure-test", [
|
||||||
|
"test",
|
||||||
|
"--pull",
|
||||||
|
"--image",
|
||||||
|
image,
|
||||||
|
"--config",
|
||||||
|
testConfig,
|
||||||
|
"--platform",
|
||||||
|
"linux/amd64",
|
||||||
|
], {
|
||||||
|
stdio: "inherit",
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
schemaVersion: 2.0.0
|
||||||
|
|
||||||
|
commandTests:
|
||||||
|
- name: clang
|
||||||
|
command: bash
|
||||||
|
args: ["-l", "-c", "clang --version"]
|
||||||
|
expectedOutput: [".*clang version.*"]
|
||||||
|
- name: clang++
|
||||||
|
command: bash
|
||||||
|
args: ["-l", "-c", "clang++ --version"]
|
||||||
|
expectedOutput: [".*clang version.*"]
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
schemaVersion: 2.0.0
|
||||||
|
|
||||||
|
commandTests:
|
||||||
|
- name: mingw c compiler
|
||||||
|
command: bash
|
||||||
|
args: ["-l", "-c", "x86_64-w64-mingw32-gcc --version"]
|
||||||
|
expectedOutput: [".*x86_64-w64-mingw32-gcc.*"]
|
||||||
|
- name: mingw c++ compiler
|
||||||
|
command: bash
|
||||||
|
args: ["-l", "-c", "x86_64-w64-mingw32-g++ --version"]
|
||||||
|
expectedOutput: [".*x86_64-w64-mingw32-g\\+\\+.*"]
|
||||||
|
- name: powershell
|
||||||
|
command: bash
|
||||||
|
args: ["-l", "-c", "pwsh --version"]
|
||||||
|
expectedOutput: [".*PowerShell.*"]
|
||||||
|
|
||||||
|
fileExistenceTests:
|
||||||
|
- name: "cross root"
|
||||||
|
path: "/usr/x86_64-w64-mingw32"
|
||||||
|
shouldExist: true
|
||||||
|
|
@ -1,14 +1,13 @@
|
||||||
FROM --platform=$BUILDPLATFORM aminya/setup-cpp-ubuntu:latest AS setup-cpp-ubuntu-gcc
|
FROM aminya/setup-cpp-ubuntu:latest AS setup-cpp-ubuntu-gcc
|
||||||
|
|
||||||
# install gcc
|
# install gcc
|
||||||
RUN node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.js \
|
RUN node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.mjs \
|
||||||
--compiler gcc && \
|
--compiler gcc && \
|
||||||
# cleanup
|
# cleanup
|
||||||
nala autoremove -y && \
|
apt-get clean autoclean && \
|
||||||
nala autopurge -y && \
|
apt-get autoremove -y && \
|
||||||
apt-get clean && \
|
|
||||||
nala clean --lists && \
|
|
||||||
rm -rf /var/lib/apt/lists/* && \
|
rm -rf /var/lib/apt/lists/* && \
|
||||||
rm -rf /tmp/*
|
rm -rf /tmp/*
|
||||||
|
|
||||||
ENTRYPOINT ["/bin/bash"]
|
SHELL ["/bin/bash", "-l", "-c"]
|
||||||
|
ENTRYPOINT ["/bin/bash", "-l"]
|
||||||
|
|
|
||||||
|
|
@ -1,78 +0,0 @@
|
||||||
schemaVersion: 2.0.0
|
|
||||||
|
|
||||||
commandTests:
|
|
||||||
- name: cmake
|
|
||||||
command: cmake
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*3.*"]
|
|
||||||
- name: ninja
|
|
||||||
command: /root/ninja/ninja
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*1.*"]
|
|
||||||
- name: task
|
|
||||||
command: task
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*Task version:\\s*v3.*"]
|
|
||||||
- name: python
|
|
||||||
command: python
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*Python.*"]
|
|
||||||
- name: python3
|
|
||||||
command: python3
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*Python.*"]
|
|
||||||
- name: make
|
|
||||||
command: make
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*GNU Make.*"]
|
|
||||||
- name: cppcheck
|
|
||||||
command: cppcheck
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: gcovr
|
|
||||||
command: gcovr
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*gcovr.*"]
|
|
||||||
- name: doxygen
|
|
||||||
command: doxygen
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*1.*"]
|
|
||||||
- name: ccache
|
|
||||||
command: ccache
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: conan
|
|
||||||
command: conan
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: meson
|
|
||||||
command: meson
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: cmake-format
|
|
||||||
command: cmake-format
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: cmake-lint
|
|
||||||
command: cmake-lint
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: gcc
|
|
||||||
command: /usr/bin/gcc
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*gcc.*"]
|
|
||||||
- name: g++
|
|
||||||
command: /usr/bin/g++
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*g++.*"]
|
|
||||||
|
|
||||||
fileExistenceTests:
|
|
||||||
- name: "vcpkg"
|
|
||||||
path: "/root/vcpkg"
|
|
||||||
shouldExist: true
|
|
||||||
- name: "ninja"
|
|
||||||
path: "/root/ninja"
|
|
||||||
shouldExist: true
|
|
||||||
- name: "cmake"
|
|
||||||
path: "/root/cmake"
|
|
||||||
shouldExist: true
|
|
||||||
|
|
@ -1,14 +1,13 @@
|
||||||
FROM --platform=$BUILDPLATFORM aminya/setup-cpp-ubuntu:latest AS setup-cpp-ubuntu-llvm
|
FROM aminya/setup-cpp-ubuntu:latest AS setup-cpp-ubuntu-llvm
|
||||||
|
|
||||||
# install llvm
|
# install llvm
|
||||||
RUN node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.js \
|
RUN node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.mjs \
|
||||||
--compiler llvm && \
|
--compiler llvm && \
|
||||||
# cleanup
|
# cleanup
|
||||||
nala autoremove -y && \
|
apt-get clean autoclean && \
|
||||||
nala autopurge -y && \
|
apt-get autoremove -y && \
|
||||||
apt-get clean && \
|
|
||||||
nala clean --lists && \
|
|
||||||
rm -rf /var/lib/apt/lists/* && \
|
rm -rf /var/lib/apt/lists/* && \
|
||||||
rm -rf /tmp/*
|
rm -rf /tmp/*
|
||||||
|
|
||||||
ENTRYPOINT ["/bin/bash"]
|
SHELL ["/bin/bash", "-l", "-c"]
|
||||||
|
ENTRYPOINT ["/bin/bash", "-l"]
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,14 @@
|
||||||
FROM --platform=$BUILDPLATFORM aminya/setup-cpp-ubuntu:latest AS setup-cpp-ubuntu-mingw
|
FROM aminya/setup-cpp-ubuntu:latest AS setup-cpp-ubuntu-mingw
|
||||||
|
|
||||||
# install mingw/powershell
|
# install mingw/powershell
|
||||||
RUN node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.js \
|
RUN node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.mjs \
|
||||||
--compiler mingw \
|
--compiler mingw \
|
||||||
--powershell true && \
|
--powershell true && \
|
||||||
# cleanup
|
# cleanup
|
||||||
nala autoremove -y && \
|
apt-get clean autoclean && \
|
||||||
nala autopurge -y && \
|
apt-get autoremove -y && \
|
||||||
apt-get clean && \
|
|
||||||
nala clean --lists && \
|
|
||||||
rm -rf /var/lib/apt/lists/* && \
|
rm -rf /var/lib/apt/lists/* && \
|
||||||
rm -rf /tmp/*
|
rm -rf /tmp/*
|
||||||
|
|
||||||
ENTRYPOINT ["/bin/bash"]
|
SHELL ["/bin/bash", "-l", "-c"]
|
||||||
|
ENTRYPOINT ["/bin/bash", "-l"]
|
||||||
|
|
|
||||||
|
|
@ -1,79 +0,0 @@
|
||||||
schemaVersion: 2.0.0
|
|
||||||
|
|
||||||
commandTests:
|
|
||||||
- name: cmake
|
|
||||||
command: cmake
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*3.*"]
|
|
||||||
- name: ninja
|
|
||||||
command: /root/ninja/ninja
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*1.*"]
|
|
||||||
- name: task
|
|
||||||
command: task
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*Task version:\\s*v3.*"]
|
|
||||||
- name: python
|
|
||||||
command: python
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*Python.*"]
|
|
||||||
- name: python3
|
|
||||||
command: python3
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*Python.*"]
|
|
||||||
- name: make
|
|
||||||
command: make
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*GNU Make.*"]
|
|
||||||
- name: cppcheck
|
|
||||||
command: cppcheck
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: gcovr
|
|
||||||
command: gcovr
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*gcovr.*"]
|
|
||||||
- name: doxygen
|
|
||||||
command: doxygen
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*1.*"]
|
|
||||||
- name: ccache
|
|
||||||
command: ccache
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: conan
|
|
||||||
command: conan
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: meson
|
|
||||||
command: meson
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: cmake-format
|
|
||||||
command: cmake-format
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: cmake-lint
|
|
||||||
command: cmake-lint
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: mingw c compiler
|
|
||||||
command: x86_64-w64-mingw32-gcc
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*x86_64-w64-mingw32-gcc.*"]
|
|
||||||
- name: mingw c++ compiler
|
|
||||||
command: x86_64-w64-mingw32-g++
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*x86_64-w64-mingw32-g\\+\\+*"]
|
|
||||||
- name: powershell
|
|
||||||
command: pwsh
|
|
||||||
args: ["-Version"]
|
|
||||||
expectedOutput: [".*PowerShell.*"]
|
|
||||||
|
|
||||||
fileExistenceTests:
|
|
||||||
- name: "vcpkg"
|
|
||||||
path: "/root/vcpkg"
|
|
||||||
shouldExist: true
|
|
||||||
- name: "cross root"
|
|
||||||
path: "/usr/x86_64-w64-mingw32"
|
|
||||||
shouldExist: true
|
|
||||||
|
|
@ -1,12 +1,14 @@
|
||||||
|
ARG BASE_VERSION=22.04
|
||||||
|
|
||||||
#### Base Image with Node.js
|
#### Base Image with Node.js
|
||||||
FROM --platform=$BUILDPLATFORM ubuntu:22.04 AS ubuntu-nodejs
|
FROM --platform=$BUILDPLATFORM ubuntu:${BASE_VERSION} AS ubuntu-nodejs
|
||||||
|
|
||||||
# install latest nodejs
|
# install latest nodejs
|
||||||
RUN apt-get update -qq && \
|
RUN apt-get update -qq && \
|
||||||
apt-get install -y --no-install-recommends curl gnupg ca-certificates && \
|
apt-get install -y --no-install-recommends curl gnupg ca-certificates && \
|
||||||
mkdir -p /etc/apt/keyrings && \
|
mkdir -p /etc/apt/keyrings && \
|
||||||
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && \
|
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && \
|
||||||
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list && \
|
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list && \
|
||||||
apt-get update -qq && \
|
apt-get update -qq && \
|
||||||
apt-get install -y --no-install-recommends nodejs && \
|
apt-get install -y --no-install-recommends nodejs && \
|
||||||
# cleanup
|
# cleanup
|
||||||
|
|
@ -15,13 +17,13 @@ RUN apt-get update -qq && \
|
||||||
rm -rf /tmp/*
|
rm -rf /tmp/*
|
||||||
|
|
||||||
#### Base Image with Tools
|
#### Base Image with Tools
|
||||||
FROM --platform=$BUILDPLATFORM ubuntu-nodejs AS setup-cpp-ubuntu
|
FROM ubuntu-nodejs AS setup-cpp-ubuntu
|
||||||
|
|
||||||
COPY "./dist/legacy" "/usr/lib/setup-cpp/"
|
COPY "./dist/modern" "/usr/lib/setup-cpp/"
|
||||||
|
|
||||||
# install the cpp tools
|
# install the cpp tools
|
||||||
RUN node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.js \
|
RUN node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.mjs \
|
||||||
--nala true \
|
--apt-fast true \
|
||||||
--cmake true \
|
--cmake true \
|
||||||
--ninja true \
|
--ninja true \
|
||||||
--task true \
|
--task true \
|
||||||
|
|
@ -36,9 +38,10 @@ RUN node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.js \
|
||||||
--cmakelang true \
|
--cmakelang true \
|
||||||
--meson true && \
|
--meson true && \
|
||||||
# cleanup
|
# cleanup
|
||||||
nala autoremove -y && \
|
apt-get clean autoclean && \
|
||||||
nala autopurge -y && \
|
apt-get autoremove -y && \
|
||||||
apt-get clean && \
|
|
||||||
nala clean --lists && \
|
|
||||||
rm -rf /var/lib/apt/lists/* && \
|
rm -rf /var/lib/apt/lists/* && \
|
||||||
rm -rf /tmp/*
|
rm -rf /tmp/*
|
||||||
|
|
||||||
|
SHELL ["/bin/bash", "-l", "-c"]
|
||||||
|
ENTRYPOINT ["/bin/bash", "-l"]
|
||||||
|
|
|
||||||
|
|
@ -1,70 +0,0 @@
|
||||||
schemaVersion: 2.0.0
|
|
||||||
|
|
||||||
commandTests:
|
|
||||||
- name: cmake
|
|
||||||
command: cmake
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*3.*"]
|
|
||||||
- name: ninja
|
|
||||||
command: /root/ninja/ninja
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*1.*"]
|
|
||||||
- name: task
|
|
||||||
command: task
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*Task version:\\s*v3.*"]
|
|
||||||
- name: python
|
|
||||||
command: python
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*Python.*"]
|
|
||||||
- name: python3
|
|
||||||
command: python3
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*Python.*"]
|
|
||||||
- name: make
|
|
||||||
command: make
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*GNU Make.*"]
|
|
||||||
- name: cppcheck
|
|
||||||
command: cppcheck
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: gcovr
|
|
||||||
command: gcovr
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*gcovr.*"]
|
|
||||||
- name: doxygen
|
|
||||||
command: doxygen
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*1.*"]
|
|
||||||
- name: ccache
|
|
||||||
command: ccache
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: conan
|
|
||||||
command: conan
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: meson
|
|
||||||
command: meson
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: cmake-format
|
|
||||||
command: cmake-format
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
- name: cmake-lint
|
|
||||||
command: cmake-lint
|
|
||||||
args: ["--version"]
|
|
||||||
expectedOutput: [".*"]
|
|
||||||
|
|
||||||
fileExistenceTests:
|
|
||||||
- name: "vcpkg"
|
|
||||||
path: "/root/vcpkg"
|
|
||||||
shouldExist: true
|
|
||||||
- name: "ninja"
|
|
||||||
path: "/root/ninja"
|
|
||||||
shouldExist: true
|
|
||||||
- name: "cmake"
|
|
||||||
path: "/root/cmake"
|
|
||||||
shouldExist: true
|
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
#### Building (example)
|
||||||
|
FROM aminya/setup-cpp-alpine-gcc AS builder
|
||||||
|
|
||||||
|
COPY ./dev/cpp_vcpkg_project /home/app
|
||||||
|
WORKDIR /home/app
|
||||||
|
RUN task build
|
||||||
|
|
||||||
|
#### Running environment
|
||||||
|
# use a fresh image as the runner
|
||||||
|
FROM alpine:3.21 AS runner
|
||||||
|
|
||||||
|
# copy the built binaries and their runtime dependencies
|
||||||
|
COPY --from=builder /home/app/build/my_exe/Release/ /home/app/
|
||||||
|
WORKDIR /home/app/
|
||||||
|
ENTRYPOINT ["./my_exe"]
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
#### Building (example)
|
||||||
|
FROM aminya/setup-cpp-alpine-llvm AS builder
|
||||||
|
|
||||||
|
COPY ./dev/cpp_vcpkg_project /home/app
|
||||||
|
WORKDIR /home/app
|
||||||
|
RUN task build
|
||||||
|
|
||||||
|
#### Running environment
|
||||||
|
# use a fresh image as the runner
|
||||||
|
FROM alpine:3.21 AS runner
|
||||||
|
|
||||||
|
# copy the built binaries and their runtime dependencies
|
||||||
|
COPY --from=builder /home/app/build/my_exe/Release/ /home/app/
|
||||||
|
WORKDIR /home/app/
|
||||||
|
ENTRYPOINT ["./my_exe"]
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
#### Cross Building (example)
|
||||||
|
FROM aminya/setup-cpp-alpine-mingw AS builder-mingw
|
||||||
|
|
||||||
|
COPY ./dev/cpp_vcpkg_project /home/app
|
||||||
|
WORKDIR /home/app
|
||||||
|
RUN bash -c 'source ~/.cpprc \
|
||||||
|
&& task build_cross_mingw'
|
||||||
|
|
@ -3,8 +3,7 @@ FROM aminya/setup-cpp-arch-gcc AS builder
|
||||||
|
|
||||||
COPY ./dev/cpp_vcpkg_project /home/app
|
COPY ./dev/cpp_vcpkg_project /home/app
|
||||||
WORKDIR /home/app
|
WORKDIR /home/app
|
||||||
RUN bash -c 'source ~/.cpprc \
|
RUN task build
|
||||||
&& task build'
|
|
||||||
|
|
||||||
#### Running environment
|
#### Running environment
|
||||||
# use a fresh image as the runner
|
# use a fresh image as the runner
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,7 @@ FROM aminya/setup-cpp-arch-llvm AS builder
|
||||||
|
|
||||||
COPY ./dev/cpp_vcpkg_project /home/app
|
COPY ./dev/cpp_vcpkg_project /home/app
|
||||||
WORKDIR /home/app
|
WORKDIR /home/app
|
||||||
RUN bash -c 'source ~/.cpprc \
|
RUN task build
|
||||||
&& task build'
|
|
||||||
|
|
||||||
#### Running environment
|
#### Running environment
|
||||||
# use a fresh image as the runner
|
# use a fresh image as the runner
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,7 @@ FROM aminya/setup-cpp-fedora-gcc AS builder
|
||||||
|
|
||||||
COPY ./dev/cpp_vcpkg_project /home/app
|
COPY ./dev/cpp_vcpkg_project /home/app
|
||||||
WORKDIR /home/app
|
WORKDIR /home/app
|
||||||
RUN bash -c 'source ~/.cpprc \
|
RUN task build
|
||||||
&& task build'
|
|
||||||
|
|
||||||
#### Running environment
|
#### Running environment
|
||||||
# use a fresh image as the runner
|
# use a fresh image as the runner
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,7 @@ FROM aminya/setup-cpp-fedora-llvm AS builder
|
||||||
|
|
||||||
COPY ./dev/cpp_vcpkg_project /home/app
|
COPY ./dev/cpp_vcpkg_project /home/app
|
||||||
WORKDIR /home/app
|
WORKDIR /home/app
|
||||||
RUN bash -c 'source ~/.cpprc \
|
RUN task build
|
||||||
&& task build'
|
|
||||||
|
|
||||||
#### Running environment
|
#### Running environment
|
||||||
# use a fresh image as the runner
|
# use a fresh image as the runner
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,7 @@ FROM aminya/setup-cpp-ubuntu-gcc AS builder
|
||||||
|
|
||||||
COPY ./dev/cpp_vcpkg_project /home/app
|
COPY ./dev/cpp_vcpkg_project /home/app
|
||||||
WORKDIR /home/app
|
WORKDIR /home/app
|
||||||
RUN bash -c 'source ~/.cpprc \
|
RUN task build
|
||||||
&& task build'
|
|
||||||
|
|
||||||
#### Running environment
|
#### Running environment
|
||||||
# use a fresh image as the runner
|
# use a fresh image as the runner
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,7 @@ FROM aminya/setup-cpp-ubuntu-llvm AS builder
|
||||||
|
|
||||||
COPY ./dev/cpp_vcpkg_project /home/app
|
COPY ./dev/cpp_vcpkg_project /home/app
|
||||||
WORKDIR /home/app
|
WORKDIR /home/app
|
||||||
RUN bash -c 'source ~/.cpprc \
|
RUN task build
|
||||||
&& task build'
|
|
||||||
|
|
||||||
#### Running environment
|
#### Running environment
|
||||||
# use a fresh image as the runner
|
# use a fresh image as the runner
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ RUN pacman -Syuu --noconfirm && \
|
||||||
# install nodejs
|
# install nodejs
|
||||||
pacman -S --noconfirm --needed nodejs npm && \
|
pacman -S --noconfirm --needed nodejs npm && \
|
||||||
# install setup-cpp
|
# install setup-cpp
|
||||||
npm install -g setup-cpp@v1.1.0 && \
|
npm install -g setup-cpp@v1.1.1 && \
|
||||||
# install the compiler and tools
|
# install the compiler and tools
|
||||||
NODE_OPTIONS="--enable-source-maps" \
|
NODE_OPTIONS="--enable-source-maps" \
|
||||||
setup-cpp \
|
setup-cpp \
|
||||||
|
|
@ -26,4 +26,5 @@ RUN pacman -Syuu --noconfirm && \
|
||||||
rm -rf /var/cache/pacman/pkg/* && \
|
rm -rf /var/cache/pacman/pkg/* && \
|
||||||
rm -rf /tmp/*
|
rm -rf /tmp/*
|
||||||
|
|
||||||
ENTRYPOINT ["/bin/bash"]
|
SHELL ["/bin/bash", "-l", "-c"]
|
||||||
|
ENTRYPOINT ["/bin/bash", "-l"]
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ RUN pacman -Syuu --noconfirm && \
|
||||||
# install nodejs
|
# install nodejs
|
||||||
pacman -S --noconfirm --needed nodejs npm && \
|
pacman -S --noconfirm --needed nodejs npm && \
|
||||||
# install setup-cpp
|
# install setup-cpp
|
||||||
npm install -g setup-cpp@v1.1.0 && \
|
npm install -g setup-cpp@v1.1.1 && \
|
||||||
# install the compiler and tools
|
# install the compiler and tools
|
||||||
NODE_OPTIONS="--enable-source-maps" \
|
NODE_OPTIONS="--enable-source-maps" \
|
||||||
setup-cpp \
|
setup-cpp \
|
||||||
|
|
@ -26,4 +26,5 @@ RUN pacman -Syuu --noconfirm && \
|
||||||
rm -rf /var/cache/pacman/pkg/* && \
|
rm -rf /var/cache/pacman/pkg/* && \
|
||||||
rm -rf /tmp/*
|
rm -rf /tmp/*
|
||||||
|
|
||||||
ENTRYPOINT ["/bin/bash"]
|
SHELL ["/bin/bash", "-l", "-c"]
|
||||||
|
ENTRYPOINT ["/bin/bash", "-l"]
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
## base image
|
## base image
|
||||||
FROM fedora:40 AS setup-cpp-fedora
|
FROM fedora:44 AS setup-cpp-fedora
|
||||||
|
|
||||||
# install nodejs
|
# install nodejs
|
||||||
RUN dnf -y install nodejs npm && \
|
RUN dnf -y install nodejs npm && \
|
||||||
# install setup-cpp
|
# install setup-cpp
|
||||||
npm install -g setup-cpp@v1.1.0 && \
|
npm install -g setup-cpp@v1.1.1 && \
|
||||||
# install the compiler and tools
|
# install the compiler and tools
|
||||||
NODE_OPTIONS="--enable-source-maps" \
|
NODE_OPTIONS="--enable-source-maps" \
|
||||||
setup-cpp \
|
setup-cpp \
|
||||||
|
|
@ -23,4 +23,5 @@ RUN dnf -y install nodejs npm && \
|
||||||
dnf clean all && \
|
dnf clean all && \
|
||||||
rm -rf /tmp/*
|
rm -rf /tmp/*
|
||||||
|
|
||||||
ENTRYPOINT ["/bin/bash"]
|
SHELL ["/bin/bash", "-l", "-c"]
|
||||||
|
ENTRYPOINT ["/bin/bash", "-l"]
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
## base image
|
## base image
|
||||||
FROM fedora:40 AS setup-cpp-fedora-mingw
|
FROM fedora:44 AS setup-cpp-fedora-mingw
|
||||||
|
|
||||||
# install nodejs
|
# install nodejs
|
||||||
RUN dnf -y install nodejs npm && \
|
RUN dnf -y install nodejs npm && \
|
||||||
# install setup-cpp
|
# install setup-cpp
|
||||||
npm install -g setup-cpp@v1.1.0 && \
|
npm install -g setup-cpp@v1.1.1 && \
|
||||||
# install the compiler and tools
|
# install the compiler and tools
|
||||||
NODE_OPTIONS="--enable-source-maps" \
|
NODE_OPTIONS="--enable-source-maps" \
|
||||||
setup-cpp \
|
setup-cpp \
|
||||||
|
|
@ -24,4 +24,5 @@ RUN dnf -y install nodejs npm && \
|
||||||
dnf clean all && \
|
dnf clean all && \
|
||||||
rm -rf /tmp/*
|
rm -rf /tmp/*
|
||||||
|
|
||||||
ENTRYPOINT ["/bin/bash"]
|
SHELL ["/bin/bash", "-l", "-c"]
|
||||||
|
ENTRYPOINT ["/bin/bash", "-l"]
|
||||||
|
|
|
||||||
|
|
@ -7,11 +7,11 @@ RUN apt-get update -qq && \
|
||||||
apt-get install -y --no-install-recommends curl gnupg ca-certificates && \
|
apt-get install -y --no-install-recommends curl gnupg ca-certificates && \
|
||||||
mkdir -p /etc/apt/keyrings && \
|
mkdir -p /etc/apt/keyrings && \
|
||||||
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && \
|
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && \
|
||||||
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list && \
|
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list && \
|
||||||
apt-get update -qq && \
|
apt-get update -qq && \
|
||||||
apt-get install -y --no-install-recommends nodejs && \
|
apt-get install -y --no-install-recommends nodejs && \
|
||||||
# install setup-cpp
|
# install setup-cpp
|
||||||
npm install -g setup-cpp@v1.1.0 && \
|
npm install -g setup-cpp@v1.1.1 && \
|
||||||
# install the compiler and tools
|
# install the compiler and tools
|
||||||
NODE_OPTIONS="--enable-source-maps" \
|
NODE_OPTIONS="--enable-source-maps" \
|
||||||
setup-cpp \
|
setup-cpp \
|
||||||
|
|
@ -36,4 +36,5 @@ RUN apt-get update -qq && \
|
||||||
rm -rf /var/lib/apt/lists/* && \
|
rm -rf /var/lib/apt/lists/* && \
|
||||||
rm -rf /tmp/*
|
rm -rf /tmp/*
|
||||||
|
|
||||||
ENTRYPOINT ["/bin/bash"]
|
SHELL ["/bin/bash", "-l", "-c"]
|
||||||
|
ENTRYPOINT ["/bin/bash", "-l"]
|
||||||
|
|
|
||||||
|
|
@ -6,11 +6,11 @@ RUN apt-get update -qq && \
|
||||||
apt-get install -y --no-install-recommends curl gnupg ca-certificates && \
|
apt-get install -y --no-install-recommends curl gnupg ca-certificates && \
|
||||||
mkdir -p /etc/apt/keyrings && \
|
mkdir -p /etc/apt/keyrings && \
|
||||||
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && \
|
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && \
|
||||||
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list && \
|
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list && \
|
||||||
apt-get update -qq && \
|
apt-get update -qq && \
|
||||||
apt-get install -y --no-install-recommends nodejs && \
|
apt-get install -y --no-install-recommends nodejs && \
|
||||||
# install setup-cpp
|
# install setup-cpp
|
||||||
npm install -g setup-cpp@v1.1.0 && \
|
npm install -g setup-cpp@v1.1.1 && \
|
||||||
# install the compiler and tools
|
# install the compiler and tools
|
||||||
NODE_OPTIONS="--enable-source-maps" \
|
NODE_OPTIONS="--enable-source-maps" \
|
||||||
setup-cpp \
|
setup-cpp \
|
||||||
|
|
@ -34,4 +34,5 @@ RUN apt-get update -qq && \
|
||||||
rm -rf /var/lib/apt/lists/* && \
|
rm -rf /var/lib/apt/lists/* && \
|
||||||
rm -rf /tmp/*
|
rm -rf /tmp/*
|
||||||
|
|
||||||
ENTRYPOINT ["/bin/bash"]
|
SHELL ["/bin/bash", "-l", "-c"]
|
||||||
|
ENTRYPOINT ["/bin/bash", "-l"]
|
||||||
|
|
|
||||||
|
|
@ -6,11 +6,11 @@ RUN apt-get update -qq && \
|
||||||
apt-get install -y --no-install-recommends curl gnupg ca-certificates && \
|
apt-get install -y --no-install-recommends curl gnupg ca-certificates && \
|
||||||
mkdir -p /etc/apt/keyrings && \
|
mkdir -p /etc/apt/keyrings && \
|
||||||
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && \
|
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && \
|
||||||
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list && \
|
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list && \
|
||||||
apt-get update -qq && \
|
apt-get update -qq && \
|
||||||
apt-get install -y --no-install-recommends nodejs && \
|
apt-get install -y --no-install-recommends nodejs && \
|
||||||
# install setup-cpp
|
# install setup-cpp
|
||||||
npm install -g setup-cpp@v1.1.0 && \
|
npm install -g setup-cpp@v1.1.1 && \
|
||||||
# install the compiler and tools
|
# install the compiler and tools
|
||||||
NODE_OPTIONS="--enable-source-maps" \
|
NODE_OPTIONS="--enable-source-maps" \
|
||||||
setup-cpp \
|
setup-cpp \
|
||||||
|
|
@ -35,4 +35,5 @@ RUN apt-get update -qq && \
|
||||||
rm -rf /var/lib/apt/lists/* && \
|
rm -rf /var/lib/apt/lists/* && \
|
||||||
rm -rf /tmp/*
|
rm -rf /tmp/*
|
||||||
|
|
||||||
ENTRYPOINT ["/bin/bash"]
|
SHELL ["/bin/bash", "-l", "-c"]
|
||||||
|
ENTRYPOINT ["/bin/bash", "-l"]
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -143,5 +143,5 @@ if [[ "${VERSION_CODENAME}" == "bookworm" ]]; then
|
||||||
add-apt-repository -y "${REPO_NAME}"
|
add-apt-repository -y "${REPO_NAME}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
add-apt-repository -y --no-update --remove "${REPO_NAME}"
|
add-apt-repository -y --remove "${REPO_NAME}"
|
||||||
apt-get update
|
apt-get update
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
||||||
{"ninja":"1.12.1","cmake":"3.31.4","task":"3.40.1","powershell":"7.4.5","pip":">=22.2.0","python":">=3.7.9","meson":{"linux":{"ubuntu":{"20":"1.6.1","18":"0.61.4","else":"0.61.4"},"else":"1.6.1"},"else":"1.6.1"},"kcov":{"linux":{"ubuntu":{"22":"42-binary","20":"40-binary","14":"40","else":"42"},"else":"42"},"else":"42"},"doxygen":{"linux":{"archlinux":"1.12.0-2","ubuntu":{"22":"1.12.0","18":"1.10.0","else":"1.10.0"},"else":"1.12.0"},"else":"1.12.0"},"gcc":{"win32":"14.2.0posix-18.1.8-12.0.0-ucrt-r1","else":""},"mingw":{"win32":"14.2.0posix-18.1.8-12.0.0-ucrt-r1","else":""},"gcovr":{"linux":{"ubuntu":{"20":"","18":"5.0","else":"5.0"},"else":""},"else":""},"nala":{"linux":{"ubuntu":{"22":"","21":"legacy","else":"legacy"},"else":""},"else":""},"llvm":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"18.1.8"}}},"else":"19.1.6"},"clang":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"18.1.8"}}},"else":"19.1.6"},"clang++":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"18.1.8"}}},"else":"19.1.6"},"clang-tidy":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"18.1.8"}}},"else":"19.1.6"},"clangtidy":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"18.1.8"}}},"else":"19.1.6"},"clang-format":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"18.1.8"}}},"else":"19.1.6"},"clangformat":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"18.1.8"}}},"else":"19.1.6"}}
|
{"ninja":"1.13.2","cmake":"3.31.10","task":"3.46.4","powershell":"7.5.1","pip":">=22.2.0","python":">=3.7.9","meson":{"linux":{"ubuntu":{"20":"1.10.0","18":"0.61.4","else":"0.61.4"},"else":"1.10.0"},"else":"1.10.0"},"kcov":{"linux":{"ubuntu":{"22":"42-binary","20":"40-binary","14":"40","else":"42"},"else":"42"},"else":"42"},"doxygen":{"linux":{"archlinux":"1.15.0-2","ubuntu":{"22":"","18":"1.10.0","else":"1.10.0"},"else":""},"else":"1.15.0"},"tar":{"win32":"1.13-1","else":""},"gcc":{"win32":"15.2.0posix-13.0.0-ucrt-r5","else":""},"mingw":{"win32":"15.2.0posix-13.0.0-ucrt-r5","else":""},"gcovr":{"linux":{"ubuntu":{"20":"","18":"5.0","else":"5.0"},"else":""},"else":""},"nala":{"linux":{"ubuntu":{"22":"","21":"legacy","else":"legacy"},"else":""},"else":""},"llvm":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"20.1.8"}}},"linux":{"alpine":{"else":{"else":"19.1.7"}},"else":"20.1.8"},"else":"20.1.8"},"clang":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"20.1.8"}}},"linux":{"alpine":{"else":{"else":"19.1.7"}},"else":"20.1.8"},"else":"20.1.8"},"clang++":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"20.1.8"}}},"linux":{"alpine":{"else":{"else":"19.1.7"}},"else":"20.1.8"},"else":"20.1.8"},"clang-tidy":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"20.1.8"}}},"linux":{"alpine":{"else":{"else":"19.1.7"}},"else":"20.1.8"},"else":"20.1.8"},"clangtidy":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"20.1.8"}}},"linux":{"alpine":{"else":{"else":"19.1.7"}},"else":"20.1.8"},"else":"20.1.8"},"clang-format":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"20.1.8"}}},"linux":{"alpine":{"else":{"else":"19.1.7"}},"else":"20.1.8"},"else":"20.1.8"},"clangformat":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"20.1.8"}}},"linux":{"alpine":{"else":{"else":"19.1.7"}},"else":"20.1.8"},"else":"20.1.8"}}
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -143,5 +143,5 @@ if [[ "${VERSION_CODENAME}" == "bookworm" ]]; then
|
||||||
add-apt-repository -y "${REPO_NAME}"
|
add-apt-repository -y "${REPO_NAME}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
add-apt-repository -y --no-update --remove "${REPO_NAME}"
|
add-apt-repository -y --remove "${REPO_NAME}"
|
||||||
apt-get update
|
apt-get update
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue