Compare commits

...

797 Commits

Author SHA1 Message Date
Amin Ya 04f0267e50
Merge pull request #449 from aminya/renovate/major-dependencies
fix(deps): update dependencies (major)
2026-01-19 17:55:10 -08:00
renovate[bot] 1155f23302
fix(deps): update dependencies 2026-01-20 01:22:19 +00:00
Amin Ya 867d72f10a
Merge pull request #437 from aminya/renovate/dependencies
fix(deps): update dependencies
2026-01-19 17:20:24 -08:00
renovate[bot] daf5d4b9da
fix(deps): update dependencies 2026-01-20 01:20:16 +00:00
Amin Ya 31141736b3
Merge pull request #444 from aminya/renovate/major-github-artifact-actions
chore(deps): update github artifact actions (major)
2026-01-19 17:20:01 -08:00
Amin Ya 9792a2bbe0
Merge pull request #459 from aminya/renovate/fedora-44.x
chore(deps): update fedora docker tag to v44
2026-01-19 17:19:36 -08:00
renovate[bot] 27061795a8
chore(deps): update github artifact actions 2026-01-19 08:08:16 +00:00
Amin Ya 1f17f92d6a chore(release): v1.8.0 [skip test] 2026-01-18 23:58:27 -08:00
Amin Ya bd777f32ba
fix: default to LLVM 20.1.8 (#460) 2026-01-18 23:52:00 -08:00
Amin Ya f3c42a2724 chore(deps): update fedora docker tag to v44 2026-01-18 23:40:57 -08:00
renovate[bot] 38bbe83367
chore(deps): update fedora docker tag to v44 2026-01-19 07:40:03 +00:00
renovate[bot] 156935991e
chore(deps): update node.js to v22.22.0 (#456)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-18 23:37:41 -08:00
renovate[bot] 51ca1f1f80
chore(deps): update dependency turbo to v2.7.5 (#458)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-18 23:37:23 -08:00
renovate[bot] 5c16b2f2fd
chore(deps): update actions/cache action to v5 (#457)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-18 23:37:09 -08:00
Amin Ya 7c7690a1ac
feat: update default LLVM, Mingw, CMake, Ninja, Task, Meson (#455)
* feat: update LLVM to 21.1.8 + Mingw to 15.2

* feat: update ninja, cmake, task, meson

* fix: downgrade fedora to 43

* fix: upgrade doxygen
2026-01-15 15:20:14 -08:00
renovate[bot] aaf5bb78ea
chore(deps): update devdependencies (#430)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-15 04:19:20 -08:00
renovate[bot] 4878b35f60
chore(deps): update fedora docker tag to v44 (#440) [skip ci]
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-15 04:17:24 -08:00
renovate[bot] 957a3565d3
chore(deps): update peter-evans/dockerhub-description action to v5 (#442) [skip ci]
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-15 04:16:44 -08:00
renovate[bot] aa2e7dbda1
chore(deps): update actions/setup-node action to v6 (#443) [skip ci]
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-15 04:15:08 -08:00
Amin Ya c9b0b918df
feat: use bun as the package manager (#454) [skip ci]
* feat: use bun as the package manager

* fix: update vite to the latest version

* ci: setup node as well as bun

* fix: use node to run minijson

* ci: use MacOS 14 large instead of MacOS 13

* ci: use macos-15-intel instead

* fix: apply patches manually
2026-01-15 04:14:40 -08:00
renovate[bot] 9306008c10
chore(deps): update actions/checkout action to v6 (#451) [skip ci]
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-15 04:14:08 -08:00
Amin Yahyaabadi 9bc9b8cd8a chore(release): v1.7.2 [skip test] 2025-11-10 00:13:02 -08:00
Amin Ya 3481e9e840
feat: support LLVM 21 + GCC 15.2 (#447) 2025-11-10 00:10:16 -08:00
renovate[bot] cc0e9fb8ec
chore(deps): update actions/download-artifact action to v5 (#434)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-25 00:04:40 -07:00
renovate[bot] 131fbe52b0
chore(deps): update actions/checkout action to v5 (#435)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-25 00:04:08 -07:00
renovate[bot] d93d404f38
fix(deps): update dependency @types/node to v22.17.2 (#431)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-25 00:03:50 -07:00
renovate[bot] a55b1da658
chore(deps): update pnpm to v10.15.0 (#432)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-25 00:03:37 -07:00
Amin Ya 24822b26f9
Merge pull request #429 from aminya/build-improve
feat: add a unified setup-options for all setup functions
2025-07-10 09:46:29 -07:00
Amin Yahyaabadi 747e9cfe05 fix: fix partial options for tar 2025-07-10 07:11:16 -07:00
Amin Yahyaabadi 26bd7cda45 fix: allow partial options for setup tools 2025-07-10 06:59:25 -07:00
Amin Yahyaabadi 6f1d3cd81e fix: add setup-options for all setup functions 2025-07-10 06:59:25 -07:00
Amin Yahyaabadi bb0daa4e32 build: use esbuild for minification
Size is not much of a concern for setup-cpp and the difference is few KB.
2025-07-10 06:59:25 -07:00
Amin Yahyaabadi a276e6e3d1 chore(release): v1.7.1 [skip test] 2025-07-10 06:52:11 -07:00
Amin Yahyaabadi 1c89539b8f fix: handle no update failures for llvm 2025-07-07 22:42:22 -07:00
renovate[bot] b32feb04d5
chore(deps): update devdependencies (#426)
* chore(deps): update devdependencies

* fix: fix babel config

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Amin Yahyaabadi <aminyahyaabadi74@gmail.com>
2025-07-06 04:50:43 -07:00
Amin Ya d8571402cb
Merge pull request #425 from aminya/windows-llvm
fix: prefer complete Window LLVM package + add tar tool
2025-07-03 07:23:39 -07:00
Amin Ya aa0fcb9bee fix: use 7z for tar extraction on windows 2025-07-03 06:58:13 -07:00
Amin Yahyaabadi 988cdb3377 fix: extra tar by 7z on windows 2025-07-03 06:32:22 -07:00
Amin Ya d09e6b8dab
Merge pull request #418 from aminya/renovate/dependencies
fix(deps): update dependency @types/node to v22.16.0
2025-07-03 05:47:27 -07:00
renovate[bot] c43a237684
fix(deps): update dependency @types/node to v22.16.0 2025-07-03 12:47:18 +00:00
Amin Ya 6004eca28b
Merge pull request #423 from aminya/renovate/node-22.x
chore(deps): update node.js to v22.17.0
2025-07-03 05:46:53 -07:00
renovate[bot] d42bb0b88f
chore(deps): update node.js to v22.17.0 2025-07-03 12:46:46 +00:00
Amin Ya c9eb020813
Merge pull request #421 from aminya/renovate/pnpm-10.x
chore(deps): update pnpm to v10.12.4
2025-07-03 05:46:39 -07:00
renovate[bot] 3cb32ec74d
chore(deps): update pnpm to v10.12.4 2025-07-03 12:45:58 +00:00
Amin Ya fb3f6ad2f8
Merge pull request #424 from aminya/update
fix: add LLVM 20.1.7 + mingw 15.1-r2 + gcovr via apt on Ubuntu by default
2025-07-03 05:45:03 -07:00
Amin Yahyaabadi 559fcdd572 feat: add tar as an installable tool 2025-07-03 05:42:22 -07:00
Amin Yahyaabadi 8e6c0edd38 fix: strip components for windows LLVM tar.xz 2025-07-03 05:26:22 -07:00
Amin Yahyaabadi 8ffe76cee3 fix: prefer complete Window LLVM package 2025-07-03 04:57:50 -07:00
Amin Yahyaabadi 0fa8654824 fix: fix apt resolving on non-Linux 2025-07-03 04:56:17 -07:00
Amin Yahyaabadi 928af1ef3b ci: remove deprecated windows 2019 2025-07-03 04:45:30 -07:00
Amin Yahyaabadi 751b635450 fix: install gcovr via apt on Ubuntu by default 2025-07-03 04:44:58 -07:00
Amin Yahyaabadi 056bb3b1d9 fix: add LLVM 20.1.7 + mingw 15.1-r2 2025-07-02 04:32:00 -07:00
Amin Ya fe10751e1c
Merge pull request #417 from aminya/renovate/dependencies
fix(deps): update dependency @types/node to v22.15.30
2025-06-08 21:57:19 -07:00
Amin Ya c0171961c2
Merge pull request #416 from aminya/renovate/pnpm-10.x
chore(deps): update pnpm to v10.12.1
2025-06-08 21:57:11 -07:00
renovate[bot] ce9f94db97
chore(deps): update devdependencies (#415)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-08 21:56:50 -07:00
renovate[bot] 9392dd1bd8
chore(deps): update pnpm to v10.12.1 2025-06-08 17:47:30 +00:00
renovate[bot] 2e6bb1caa0
fix(deps): update dependency @types/node to v22.15.30 2025-06-08 07:52:37 +00:00
Amin Yahyaabadi 004edc1952 chore(release): v1.7.0 [skip test] 2025-06-08 00:46:36 -07:00
Amin Ya 46cbfc276f
Merge pull request #414 from aminya/updates
fix: update cmake, task, powershell, meson, doxygen
2025-06-06 02:31:27 -07:00
Amin Yahyaabadi 396258ba63 fix: update doxygen to 1.14.0 2025-06-05 01:44:23 -07:00
Amin Yahyaabadi 70e614fd48 fix: update meson to 1.8.1 2025-06-05 01:41:07 -07:00
Amin Yahyaabadi 075261cd2b fix: update powershell to 7.5.1 2025-06-05 01:40:37 -07:00
Amin Yahyaabadi fcda129998 fix: update task to 3.43.3 2025-06-05 01:40:18 -07:00
Amin Yahyaabadi 42ccc76417 fix: update cmake to 3.31.7 2025-06-05 01:38:12 -07:00
Amin Ya af7dd8c367
Merge pull request #387 from aminya/bump-llvm
fix: update default LLVM to v20 + GCC 15
2025-06-03 02:58:32 -07:00
Amin Yahyaabadi b21cd99e0b fix: default to llvm 19 on alpine 2025-06-03 01:51:55 -07:00
Amin Yahyaabadi 085eecfbd1 fix: remove the vcpkg pin for alpine 2025-06-03 01:40:06 -07:00
Amin Yahyaabadi 197080ad94 test: default to gcc 15 on Mac and Windows 2025-06-03 01:27:40 -07:00
Amin Yahyaabadi 15c6190549 fix: add newer llvm 20 versions 2025-06-03 00:43:01 -07:00
Amin Yahyaabadi 38b4d16f6e fix: update default LLVM to v20 2025-06-03 00:39:28 -07:00
renovate[bot] 00a96b353f
chore(deps): update dependency turbo to v2.5.4 (#411)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-03 00:39:00 -07:00
Amin Ya 8d6f65af17
Merge pull request #413 from aminya/renovate/dependencies
fix(deps): update dependency @types/node to v22.15.29
2025-06-03 00:21:13 -07:00
renovate[bot] 55470af31b
fix(deps): update dependency @types/node to v22.15.29 2025-05-31 02:22:01 +00:00
renovate[bot] 820b8f3163
chore(deps): update devdependencies (#412)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-26 22:07:57 -07:00
Amin Yahyaabadi 3a19939866 fix: handle no version for cmake 2025-05-26 22:07:03 -07:00
renovate[bot] 3b773c4e87
chore(deps): update dependency npm-run-all2 to v8.0.4 (#410)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-25 14:24:49 -07:00
renovate[bot] 0d11c74dbd
chore(deps): update dependency @aminya/minijson to v1.1.3 (#409)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-24 23:57:23 -07:00
Amin Ya f0dab3c2eb
Merge pull request #404 from aminya/renovate/dependencies
fix(deps): update dependency @types/node to v22.15.21
2025-05-24 23:54:25 -07:00
renovate[bot] f015113d31
fix(deps): update dependency @types/node to v22.15.21 2025-05-24 11:11:49 +00:00
Amin Yahyaabadi 9dc9c217f4 chore: v1.6.2 2025-05-24 04:07:26 -07:00
Amin Yahyaabadi 5649ee9e2d chore: v1.6.1 2025-05-24 04:02:55 -07:00
Amin Yahyaabadi ecb2ccca2e chore: add npm ignore to reduce package size 2025-05-24 04:02:24 -07:00
Amin Ya 2a58e75f05
Merge pull request #407 from aminya/pin
fix: pin the apt-fast and nala installers
2025-05-24 03:41:16 -07:00
renovate[bot] f1825e19b6
chore(deps): update devdependencies (#403)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-24 03:41:03 -07:00
Amin Ya e09ae7eb8e
Merge pull request #405 from aminya/renovate/node-22.x
chore(deps): update node.js to v22.16.0
2025-05-24 01:01:19 -07:00
renovate[bot] 45a956b27e
chore(deps): update devdependencies (#406)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-24 01:00:58 -07:00
Amin Yahyaabadi 1cfde8e589 fix: pin the apt-fast and nala installers 2025-05-24 00:58:55 -07:00
renovate[bot] a4ca8de391
chore(deps): update node.js to v22.16.0 2025-05-24 06:55:24 +00:00
Amin Yahyaabadi 022729da27 Revert "chore(deps): update noelware/docker-manifest-action action to v1"
This reverts commit 80ffb63efd.
2025-05-22 04:24:55 -07:00
Amin Yahyaabadi 6b72a94712 chore(release): v1.6.0 2025-05-22 03:56:32 -07:00
Amin Ya 464f3a00d5
Merge pull request #402 from aminya/faster-fast-apt
fix: add apt-fast optimizations
2025-05-20 22:15:55 -07:00
Amin Yahyaabadi faff663ab1 fix: add apt-fast optimizations 2025-05-20 21:38:17 -07:00
Amin Ya da1971da81
Merge pull request #401 from aminya/apt-fast
feat: add apt-fast as an installable tool
2025-05-20 16:09:08 -07:00
Amin Ya dbf5b5e2bf
Merge pull request #398 from aminya/renovate/node-22.x
chore(deps): update node.js to v22.15.1
2025-05-20 13:00:12 -07:00
Amin Yahyaabadi 3fd1b0b32c test: do not print version of apt-fast 2025-05-20 12:56:59 -07:00
Amin Yahyaabadi 988b5fd210 fix: update the apt-fast config as root 2025-05-20 12:32:52 -07:00
Amin Yahyaabadi c9348d3629 test: do not remove apt-fast 2025-05-20 12:17:00 -07:00
Amin Yahyaabadi 9b5350fb6e test: run apt tests in series 2025-05-20 11:18:37 -07:00
Amin Yahyaabadi b7dcc5b7e6 fix: do not use apt due to race conditions 2025-05-20 03:32:09 -07:00
Amin Yahyaabadi 264de9ab1a test: add import tests for all packages 2025-05-20 03:26:08 -07:00
Amin Yahyaabadi fc5f36e99b test: add import tests for all packages 2025-05-20 03:23:35 -07:00
Amin Yahyaabadi 1134b80cc2 chore: use turbo for build 2025-05-20 02:52:27 -07:00
Amin Yahyaabadi 6540167f34 feat move setup-nala to setup-apt 2025-05-20 02:39:27 -07:00
Amin Yahyaabadi 62036a9dd7 feat: move the apt-fast installer to setup-apt package 2025-05-20 02:32:22 -07:00
Amin Yahyaabadi 350b16f518 fix: prefer apt-fast or apt over apt-get 2025-05-20 02:23:12 -07:00
Amin Yahyaabadi 4c0bf0acdb fix: make apt-fast non-interactive 2025-05-20 02:17:12 -07:00
Amin Yahyaabadi ecc6c767e0 feat: add apt-fast as an installable tool 2025-05-20 01:52:30 -07:00
Amin Yahyaabadi 00fe6df1cf fix: rename isUbuntu to hasAptget 2025-05-20 01:43:24 -07:00
renovate[bot] 46ac5adacc
chore(deps): update node.js to v22.15.1 2025-05-20 04:27:57 +00:00
Amin Ya e10853e3f5
Merge pull request #399 from aminya/renovate/pnpm-10.x
chore(deps): update pnpm to v10.11.0
2025-05-19 21:26:58 -07:00
Amin Ya 3fffbe9648
Merge pull request #400 from aminya/renovate/noelware-docker-manifest-action-1.x
chore(deps): update noelware/docker-manifest-action action to v1
2025-05-19 21:26:43 -07:00
Amin Ya c9145519e3
Merge pull request #395 from aminya/renovate/dependencies
fix(deps): update dependency @types/node to v22.15.19
2025-05-19 21:26:06 -07:00
renovate[bot] 5c5dffcda7
chore(deps): update devdependencies (#382)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-19 20:44:28 -07:00
renovate[bot] 6c94aa9d63
fix(deps): update dependency @types/node to v22.15.19 2025-05-19 16:17:25 +00:00
renovate[bot] 80ffb63efd
chore(deps): update noelware/docker-manifest-action action to v1 2025-05-17 06:50:14 +00:00
renovate[bot] 5accdbc0a7
chore(deps): update pnpm to v10.11.0 2025-05-17 02:36:48 +00:00
renovate[bot] d8c2b30cb3
chore(deps): update dependency cspell to v9 (#396)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-11 17:09:01 -07:00
Amin Yahyaabadi 829f53844a ci: disable arch llvm and alpine mingw [skip test] 2025-05-09 21:52:41 -07:00
Amin Yahyaabadi 28288fd7bc chore(release): v1.5.4 [skip test] 2025-05-09 20:49:48 -07:00
Amin Ya 5ea110ae8d
Merge pull request #397 from aminya/bashrc-loop [skip ci]
fix: avoid rc sourcing loops + fix: always add guards for sourcing rc files
2025-05-09 20:46:40 -07:00
Amin Yahyaabadi 9bc8921c0a ci: disable deprecated ubuntu 20 2025-05-09 20:46:08 -07:00
Amin Yahyaabadi e8ac0e7160 fix: add rcOptions for vcpkg system binaries 2025-05-09 20:45:21 -07:00
Amin Yahyaabadi 9d12750bbe fix: always add guards for sourcing rc files 2025-05-09 20:43:23 -07:00
Amin Yahyaabadi c9007c8f5a fix: avoid rc sourcing loops 2025-05-09 20:41:22 -07:00
Amin Yahyaabadi 05bd2b5297 fix: fix llvm add-apt-repository for debian 2025-05-05 05:10:57 -07:00
renovate[bot] 3d8c387d48
chore(deps): update dependency npm-run-all2 to v8 (#394)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-04 20:17:03 -07:00
Amin Yahyaabadi 55f022dea4 fix: fix add-apt-repository in Debian 2025-05-04 06:24:26 -07:00
Amin Yahyaabadi 75890615f7 fix: fix addition of git to PATH on Windows 2025-04-30 12:39:42 -07:00
Amin Ya a7162273d0
Merge pull request #393 from aminya/renovate/dependencies
fix(deps): update dependency @types/node to v22.15.3
2025-04-30 12:11:14 -07:00
Amin Ya f40cb3bc3f
Merge pull request #392 from aminya/renovate/node-22.x
chore(deps): update node.js to v22.15.0
2025-04-30 12:11:04 -07:00
Amin Yahyaabadi ac92a10732 fix: update pnpm + fix cspell 2025-04-30 12:09:38 -07:00
Amin Yahyaabadi d10f4b6db0 fix: ignore setup-cpp cli installation errors 2025-04-30 12:05:24 -07:00
renovate[bot] 8fb6bd1b28
fix(deps): update dependency @types/node to v22.15.3 2025-04-30 19:01:13 +00:00
renovate[bot] a993d3ff56
chore(deps): update node.js to v22.15.0 2025-04-30 19:00:30 +00:00
Amin Yahyaabadi d0235b0adb ci: add missing git option for actions 2025-04-30 11:57:57 -07:00
Amin Ya 79f7ff95eb
Merge pull request #383 from aminya/renovate/dependencies
fix(deps): update dependency @types/node to v22.14.1
2025-04-21 09:47:53 -07:00
Amin Ya 3bc026fd01
Merge pull request #384 from aminya/renovate/pnpm-10.x
chore(deps): update pnpm to v10.9.0
2025-04-21 09:47:38 -07:00
Amin Ya 6c5ed96033
Merge pull request #390 from aminya/renovate/rharkor-caching-for-turbo-1.x
chore(deps): update rharkor/caching-for-turbo action to v1.8
2025-04-21 09:47:18 -07:00
renovate[bot] 70850773b2
chore(deps): update devdependencies (#391)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-21 11:46:58 -05:00
renovate[bot] 186f2dc52d
chore(deps): update pnpm to v10.9.0 2025-04-21 09:36:15 +00:00
renovate[bot] b683fdffce
chore(deps): update rharkor/caching-for-turbo action to v1.8 2025-04-12 02:23:30 +00:00
renovate[bot] bb5b6b1b44
fix(deps): update dependency @types/node to v22.14.1 2025-04-11 23:24:46 +00:00
Amin Yahyaabadi 6370aaa025 fix: remove exports map from package 2025-04-07 07:24:19 -07:00
Amin Yahyaabadi 95a7de4f2e fix: fix CLI shabang not working - independent lib 2025-04-07 07:21:37 -07:00
Amin Yahyaabadi d6447bbe91 fix: build cli independent of lib 2025-04-07 06:25:39 -07:00
Amin Yahyaabadi 71c0122abf chore(release): v1.5.0 [skip test] 2025-04-07 02:59:09 -07:00
Amin Ya ad7d44b1e3
Merge pull request #388 from aminya/llvm
fix: do not add LLVM libraries to dyld by default
2025-04-07 02:54:48 -07:00
Amin Yahyaabadi 7e66da1495 fix: do not add LLVM libraries to dyld by default
On MacOS, the LLVM binaries could conflict with the system libraries. It's better to intentionally use the LLVM binaries.

Now, `LLVM_DYLD_LIBRARY_PATH` and `LLVM_LD_LIBRARY_PATH` are used instead of `DYLD_LIBRARY_PATH` and `LD_LIBRARY_PATH`.

In bashrc, after sourcing cpprc, you could
```shell
export LD_LIBRARY_PATH="$LLVM_LD_LIBRARY_PATH;$LD_LIBRARY_PATH"
export DYLD_LIBRARY_PATH="$LLVM_DYLD_LIBRARY_PATH;$DYLD_LIBRARY_PATH"
```
2025-04-07 02:37:30 -07:00
Amin Ya f37a612a84
Merge pull request #389 from aminya/alpine-vcpkg-arm64
fix: pin vcpkg on Alpine Arm64
2025-04-07 02:36:22 -07:00
Amin Yahyaabadi d60a91780b fix: pin vcpkg on Alpine Arm64 2025-04-07 02:01:46 -07:00
Amin Ya a5ee5b0e9b
Merge pull request #386 from aminya/library
feat: allow using setup-cpp as a library
2025-04-07 01:22:11 -07:00
Amin Yahyaabadi dc7c474237 fix: set the exit error code correctly 2025-04-07 01:20:02 -07:00
Amin Yahyaabadi a8782096b0 fix: add types for the library usage 2025-04-06 23:51:21 -07:00
Amin Yahyaabadi f5f4ddffea fix: bundle CLI deps via vite 2025-04-06 23:30:44 -07:00
Amin Yahyaabadi 6ef4c24024 fix: transform CLI via SWC reusing lib bundle 2025-04-06 23:12:55 -07:00
Amin Yahyaabadi d1834415a9 fix: return results of the installation in lib mode 2025-04-06 21:53:09 -07:00
Amin Yahyaabadi 68964ee26c feat: allow using setup-cpp as a library 2025-04-06 21:30:53 -07:00
Amin Yahyaabadi 6ee48d5c81 docs: add alpine images to readme [skip ci] 2025-04-03 11:43:38 -07:00
Amin Yahyaabadi fc7a5158bd chore(release): v1.4.0 [skip test] 2025-03-23 17:36:30 -07:00
Amin Ya 1837c0d47a
Merge pull request #381 from aminya/docker-versions
ci: add docker tags with the base platform versions
2025-03-23 17:33:12 -07:00
Amin Yahyaabadi 83d70f96bc ci: add docker tags with the base platform versions 2025-03-23 17:13:15 -07:00
Amin Ya be9dd533df
Merge pull request #379 from aminya/alpine
feat: support Alpine + add setup-alpine package + detect externally managed python
2025-03-23 12:25:49 -07:00
Amin Yahyaabadi 2e04f42cca ci: do not test mingw on alpine 2025-03-23 11:33:22 -07:00
Amin Yahyaabadi 6ecab5ef9d fix: fix ninja version on Alpine 2025-03-23 11:25:33 -07:00
Amin Yahyaabadi 8eb691a796 ci: build alpine on Arm64 2025-03-23 11:17:40 -07:00
Amin Yahyaabadi 895d69ee98 fix: fix the docker entrypoint on Alpine 2025-03-23 11:09:49 -07:00
renovate[bot] 8e78c541a2
chore(deps): update dependency rollup to v4.37.0 (#380)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-23 11:07:13 -07:00
Amin Yahyaabadi c04f432701 test: add examples for alpine docker 2025-03-23 04:44:35 -07:00
Amin Yahyaabadi 24ed36b061 fix: fix pipx installation on arch 2025-03-23 04:42:47 -07:00
Amin Yahyaabadi d34b955da5 feat: support community repo for alpine 2025-03-23 04:35:28 -07:00
Amin Yahyaabadi ae24e964ab fix: fix powershell/mingw installation on alpine 2025-03-23 04:27:28 -07:00
Amin Yahyaabadi 8a0c8a726b fix: do not remove apk-tools 2025-03-23 04:15:53 -07:00
Amin Yahyaabadi ad49f54a72 fix: fix extraction deps on alpine 2025-03-23 04:07:31 -07:00
Amin Yahyaabadi f23c0b8778 fix: install base compilers for vcpkg on alpine 2025-03-23 04:02:35 -07:00
Amin Yahyaabadi d8d2caee94 fix: fix llvm installation on alpine 2025-03-23 03:54:01 -07:00
Amin Yahyaabadi 477dd40685 fix: ignore version for doxygen on alpine 2025-03-23 03:52:33 -07:00
Amin Yahyaabadi 2ee99e208e fix: install cmake/ninja via system for alpine 2025-03-23 03:52:07 -07:00
Amin Yahyaabadi 0730cb5e36 fix: ensure env is set for the current process 2025-03-23 03:03:13 -07:00
Amin Yahyaabadi 5b56272eaf fix: fix pkgconf name for alpine 2025-03-23 02:57:26 -07:00
Amin Yahyaabadi bcc7fc2a92 fix: rename installApkPack for consistency 2025-03-23 02:55:38 -07:00
Amin Yahyaabadi d04bcbf1dc fix: fix vcpkg deps on alpine 2025-03-23 02:54:16 -07:00
Amin Yahyaabadi e6bd753a7f fix: do not try installing externally managed pip packages 2025-03-23 02:51:37 -07:00
Amin Yahyaabadi 4d2ad5fc8b fix: fix python3 prefix for alpine packages 2025-03-23 02:43:22 -07:00
Amin Yahyaabadi 1158c50fa0 fix: detect externally managed pythons 2025-03-23 02:40:21 -07:00
Amin Yahyaabadi 9a2e61232c fix: do not use python prefix for pipx installation 2025-03-23 01:53:17 -07:00
Amin Yahyaabadi 4c992d0556 fix: fix pip package installation on alpine 2025-03-23 01:49:31 -07:00
Amin Yahyaabadi ba81f6ae16 fix: do not use root for apk update 2025-03-23 01:46:00 -07:00
Amin Yahyaabadi 5a0bbafcb2 feat: install bash for alpine 2025-03-23 01:40:17 -07:00
Amin Yahyaabadi 3108fdcf8d ci: add docker images for testing alpine 2025-03-23 01:25:57 -07:00
Amin Yahyaabadi dd785bad39 feat: add alpine installers for all tools 2025-03-23 01:18:33 -07:00
Amin Yahyaabadi 18f6af3e6c feat: support installing specific versions for alpine 2025-03-23 01:04:45 -07:00
Amin Yahyaabadi f737a07371 feat: add setup-alpine package 2025-03-23 00:57:08 -07:00
Amin Yahyaabadi 6cd53aa7e2 ci: fix creation manifests for images with suffix [skip test] 2025-03-22 23:36:58 -07:00
Amin Yahyaabadi f4fab9f74a ci: create multi-arch manifest for ubuntu 20/24 [skip test] 2025-03-22 22:32:09 -07:00
Amin Yahyaabadi 7974077db1 docs: update setup-cpp version in the readme [skip test] 2025-03-22 20:26:13 -07:00
Amin Yahyaabadi 045f4c5242 chore(release): v1.3.0 [skip test] 2025-03-22 20:22:46 -07:00
renovate[bot] 2fe3219ef1
chore(deps): update devdependencies (#376)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-22 20:15:18 -07:00
Amin Ya 7ea6387acb
Merge pull request #377 from aminya/renovate/pnpm-10.x
chore(deps): update pnpm to v10.6.5
2025-03-22 18:39:25 -07:00
Amin Ya 01ccf4c1cc
Merge pull request #378 from aminya/renovate/dependencies
fix(deps): update dependency @types/node to v22.13.11
2025-03-22 18:39:04 -07:00
Amin Ya be9505b2e5
Merge pull request #375 from aminya/ubuntu-base-versions
feat: add Ubuntu 20 and 24 docker builds
2025-03-22 18:38:44 -07:00
Amin Yahyaabadi 2428548d77 fix: fix venv check for ubuntu 20 2025-03-22 17:56:47 -07:00
Amin Yahyaabadi ae4905b61c fix: add groups for python installation sections 2025-03-22 17:52:31 -07:00
Amin Yahyaabadi 8b1e80507e fix: skip double pipx installation if not needed 2025-03-22 17:33:51 -07:00
Amin Yahyaabadi af1b02b5ed fix: use apt-get instead of nala in setup-cpp Ubuntu images 2025-03-22 17:10:46 -07:00
renovate[bot] 9845e6e84d
fix(deps): update dependency @types/node to v22.13.11 2025-03-22 06:03:08 +00:00
renovate[bot] 1273879b4d
chore(deps): update pnpm to v10.6.5 2025-03-22 02:45:08 +00:00
Amin Yahyaabadi a96be2f0e6 feat: add Ubuntu 20 and 24 docker builds 2025-03-21 15:58:59 -07:00
Amin Yahyaabadi fd0d475a53 chore: do not run publish for the root [skip ci] 2025-03-16 21:24:27 -07:00
Amin Yahyaabadi 81892a4640 chore(release): v1.2.2 [skip test] 2025-03-16 21:22:18 -07:00
Amin Ya d11e5d7d70
Merge pull request #373 from aminya/linux-arm-ci
feat: install sccache on latest ubuntu arm
2025-03-16 21:16:12 -07:00
Amin Yahyaabadi 29c12dc98c feat: install sccache on latest ubuntu arm 2025-03-16 20:26:54 -07:00
Amin Ya a63071ebb3
Merge pull request #363 from aminya/linux-arm-ci
ci:  tests and executables for Linux arm + fix Doxygen, Sccache on Linux Arm + fix old LLVM on latest Ubuntu arm + fix apt installation fallbacks to latest
2025-03-16 03:04:58 -07:00
Amin Yahyaabadi 8115710285 fix: fix apt cache check and version fallback 2025-03-16 02:48:07 -07:00
Amin Yahyaabadi 660206b3e3 fix: fix falling back to latest for apt 2025-03-16 02:00:27 -07:00
Amin Yahyaabadi b59e0ce00b fix: fix the libtinfo5 download link on Linux arm 2025-03-16 01:40:18 -07:00
Amin Yahyaabadi 374c0cd9ec fix: fallback to the latest doxygen on Linux arm 2025-03-16 01:31:40 -07:00
Amin Yahyaabadi 2250f08263 test: skip infer, sccache, bazel tests on Linux arm 2025-03-16 01:29:22 -07:00
Amin Yahyaabadi 1916446e22 fix: add script for updating all asset lists 2025-03-16 01:29:22 -07:00
Amin Yahyaabadi 67fad8bf37 fix: upgrade Doxygen to 1.13.2 2025-03-16 01:29:22 -07:00
Amin Yahyaabadi a4bc77491c fix: fix Bazel installation on Linux arm64 2025-03-16 01:29:22 -07:00
Amin Yahyaabadi a835d4b72e fix: install the default Doxygen version on Linux
Update versions.json

Update doxygen.ts
2025-03-16 01:29:22 -07:00
Amin Yahyaabadi 6ef1af9182 fix: fix vcpkg bootstrap test in home with spaces 2025-03-16 01:29:22 -07:00
Amin Yahyaabadi fb55d3cdfe fix: brew isn't supported on Linux arm 2025-03-16 00:22:54 -07:00
Amin Yahyaabadi 29cd2e193a ci: tests and executables for Linux arm 2025-03-16 00:20:53 -07:00
Amin Ya 1d64427488
Merge pull request #372 from aminya/renovate/pnpm-10.x
chore(deps): update pnpm to v10.6.3
2025-03-14 20:42:25 -07:00
renovate[bot] 3cc2476a87
chore(deps): update devdependencies (#371)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-14 20:41:53 -07:00
renovate[bot] 56767a8edb
chore(deps): update pnpm to v10.6.3 2025-03-15 01:50:20 +00:00
Amin Yahyaabadi a76dd1b9e9 ci: improve docker cache hits by using the exact tag 2025-03-10 23:09:27 -07:00
Amin Yahyaabadi 12841b3f65 chore(release): v1.2.1 [skip test] 2025-03-10 22:17:00 -07:00
Amin Yahyaabadi b4d8a5c5a6 ci: fix the docker tags to be 1.2.0 [skip test] 2025-03-10 22:10:31 -07:00
Amin Yahyaabadi f51e073858 chore(release): v1.2.0 2025-03-10 21:31:55 -07:00
Amin Yahyaabadi 828e0bb625 fix: fix brew warning GitHub Actions matcher 2025-03-10 21:30:33 -07:00
Amin Yahyaabadi f3b54ce57b fix: simplify brew warning matcher 2025-03-10 21:28:50 -07:00
Amin Ya 413acc39d5
Merge pull request #370 from aminya/performance-polyfill
fix: polyfill performance for crypto randomuuid
2025-03-10 19:38:20 -07:00
Amin Yahyaabadi 7fee45544a fix: polifyll performance for crypto randomuuid 2025-03-10 02:07:13 -07:00
Amin Ya a2dc2bcd46
Merge pull request #369 from aminya/brew-warnings
fix: avoid already installed warnings for brew
2025-03-10 02:04:13 -07:00
Amin Ya 6eadc0b59c
Merge pull request #368 from aminya/crypto-randomuuid
fix: add polyfil for crypto.randomuuid
2025-03-10 01:34:09 -07:00
Amin Yahyaabadi 8d0a96782d fix: avoid already installed warnings for brew 2025-03-10 01:33:12 -07:00
Amin Yahyaabadi 6cb9980520 fix: add polyfil for crypto.randomuuid 2025-03-10 00:38:16 -07:00
Amin Ya 65cf4fec22
Merge pull request #367 from aminya/macos-llvm-installer
feat: install LLVM via brew on Mac if possible
2025-03-10 00:37:44 -07:00
Amin Yahyaabadi 4532f2e61b fix: force installing LLVM via bottles 2025-03-10 00:18:44 -07:00
Amin Yahyaabadi 4b9980f829 fix: add the llvm bin dir to path for brew 2025-03-10 00:16:25 -07:00
Amin Yahyaabadi eab64e395d feat: install LLVM via brew on Mac if possible 2025-03-09 15:15:31 -07:00
Amin Yahyaabadi 15f3a89bc3 feat: find brew package installation dir 2025-03-09 15:13:19 -07:00
Amin Ya c99abc9332
Merge pull request #366 from aminya/renovate/dependencies
fix(deps): update dependency @types/node to v22.13.10
2025-03-09 14:25:23 -07:00
renovate[bot] 595d13eb74
fix(deps): update dependency @types/node to v22.13.10 2025-03-09 21:25:19 +00:00
Amin Ya 799b040705
Merge pull request #364 from aminya/llvm-deps
refactor: refactor llvm install into modules
2025-03-09 14:23:45 -07:00
Amin Ya e4a5426f18
Merge pull request #359 from aminya/renovate/dependencies
fix(deps): update dependency ci-info to v4.2.0
2025-03-09 14:23:13 -07:00
renovate[bot] db6e8f43c7
fix(deps): update dependency ci-info to v4.2.0 2025-03-09 17:55:30 +00:00
Amin Yahyaabadi 935a8bc14f refactor: refactor llvm install into modules 2025-03-09 01:08:52 -08:00
Amin Ya 57e4acf400
Merge pull request #362 from aminya/git [skip ci]
feat: add git as an installable tool
2025-03-09 00:33:28 -08:00
Amin Yahyaabadi 15b21af353 fix: do not install git if already installed 2025-03-08 23:30:52 -08:00
Amin Yahyaabadi 873a0ce059 fix: add script to find the git binaries on Windows 2025-03-08 23:29:53 -08:00
Amin Yahyaabadi ae8148bb39 fix: fix the git installation path on Windows 2025-03-08 19:21:10 -08:00
Amin Yahyaabadi 43327b967b feat: add git as an installable tool 2025-03-08 00:55:16 -08:00
Amin Ya 627988e604
Merge pull request #361 from aminya/docker-multiarch
Add multi-architecture Docker images for setup-cpp
2025-03-08 00:48:41 -08:00
Amin Yahyaabadi 70694dbfc8 ci: disable provenance when pushing the images 2025-03-08 00:35:31 -08:00
Amin Yahyaabadi 8b8619681b ci: use the docker-manifest-action 2025-03-08 00:35:31 -08:00
Amin Ya 1b57bfb75c
Merge pull request #346 from aminya/renovate/pnpm-10.x
chore(deps): update pnpm to v10.6.1
2025-03-08 00:31:09 -08:00
renovate[bot] e4cc1b5646
chore(deps): update devdependencies (#360)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-08 00:27:27 -08:00
renovate[bot] 09063da084
chore(deps): update pnpm to v10.6.1 2025-03-08 08:25:33 +00:00
renovate[bot] 14d5c85db3
chore(deps): update devdependencies (#358)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-08 02:16:23 +00:00
Amin Yahyaabadi f1b09297e4 ci: skip mingw tagging on Fedora [push docker] 2025-03-07 11:25:13 -08:00
Amin Yahyaabadi 24a3400624 ci: do not use buildx [push docker] 2025-03-07 11:25:13 -08:00
Amin Yahyaabadi d28287bcdd ci: allow testing docker push on pull requests [push docker] 2025-03-07 11:25:13 -08:00
Amin Yahyaabadi ff692ffecf ci: remove from buildplatform for derived images 2025-03-07 11:25:13 -08:00
Amin Yahyaabadi 8ed3641662 ci: load the docker image after push 2025-03-07 11:25:13 -08:00
Amin Yahyaabadi 555c4d7266 ci: pull the image before tagging latest 2025-03-07 11:25:13 -08:00
Amin Yahyaabadi 65fdb2804b fix: use the image id for tagging the latest [skip test] 2025-03-07 11:25:13 -08:00
Amin Yahyaabadi e7e3464df0 fix: qualify the docker image when tagging the latest [skip test] 2025-03-07 11:25:13 -08:00
Amin Yahyaabadi 458bb0507a ci: simplify the platform suffix creation 2025-03-07 11:25:13 -08:00
Amin Yahyaabadi 0a8eedb221 ci: push multi-arch ubuntu images using docker manifest 2025-03-05 02:20:06 -08:00
Amin Yahyaabadi 380714f257 ci: ensure docker images are multi-arch 2025-03-05 01:42:32 -08:00
Amin Yahyaabadi 17c1155177 chore(release): v1.1.1 [skip test] 2025-03-02 13:03:07 -08:00
Amin Yahyaabadi 8e4db9105a chore: update build files 2025-03-02 12:59:29 -08:00
Amin Ya 50c4edcfba
Merge pull request #353 from aminya/modern
fix: use the modern bundle in the docker images
2025-03-02 11:47:18 -08:00
Amin Yahyaabadi 7b7f98df79 fix: use the modern bundle in the docker images 2025-03-02 03:24:07 -08:00
Amin Ya d4b7fadbc1
Merge pull request #349 from aminya/renovate/dependencies
fix(deps): update dependencies
2025-03-02 03:20:22 -08:00
renovate[bot] 61a2c6e82a
chore(deps): update dependency cross-spawn to v7.0.6 (#348)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-02 03:20:05 -08:00
renovate[bot] 8dd7e1e5c1
fix(deps): update dependencies 2025-03-02 11:18:02 +00:00
Amin Yahyaabadi eb5c9f99ea ci: disable updates for pinned packages 2025-03-02 03:17:06 -08:00
Amin Yahyaabadi c5a4ff71d9 chore: pin which for renovate 2025-03-02 03:13:01 -08:00
Amin Yahyaabadi b3b549cd20 fix: fix bash env on archlinux 2025-03-02 03:10:09 -08:00
Amin Ya 4839c1d280
Merge pull request #351 from aminya/test [skip test]
fix: use logged in bash as the entry point of docker + add more docker tests
2025-03-02 02:05:38 -08:00
Amin Yahyaabadi 6e542e60af test: log in as bash in the container tests 2025-03-02 01:19:22 -08:00
Amin Yahyaabadi 97b09dfba2 fix: use logged in bash as the entry point of docker 2025-03-02 01:15:06 -08:00
Amin Yahyaabadi 7d8a4af8c4 test: add script for docker image structure tests 2025-03-02 00:34:53 -08:00
Amin Yahyaabadi 40453112a2 docs: update ci badges [skip ci] 2025-03-01 03:58:20 -08:00
Amin Yahyaabadi b9d35d9335 ci: fix the caching for docker builds [skip test] 2025-03-01 03:35:41 -08:00
Amin Yahyaabadi db266b5009 ci: skip readme update for fedora mingw 2025-03-01 03:34:38 -08:00
Amin Yahyaabadi 3aac37c3fb chore(release): v1.1.0 [skip test] 2025-03-01 03:15:17 -08:00
Amin Yahyaabadi 8a10f32320 ci: update Docker hub readmes automatically 2025-03-01 03:13:48 -08:00
Amin Ya fd2c1df30d
Merge pull request #350 from aminya/install-tool [skip ci]
feat: install setup-cpp CLI in GitHub Actions
2025-03-01 03:07:49 -08:00
Amin Yahyaabadi 43d46eff60 fix: make setup-cpp --version/help immutable 2025-03-01 02:17:33 -08:00
Amin Yahyaabadi 3ce1db2ddb fix: add option for setup-cpp cli install 2025-03-01 01:56:17 -08:00
Amin Yahyaabadi 1d824aa3c1 fix: install the setup-cpp cli in all envs 2025-03-01 01:44:17 -08:00
Amin Yahyaabadi 4f0c49a2d2 feat: install setup-cpp CLI in GitHub Actions 2025-03-01 01:29:42 -08:00
Amin Ya 4136222b38
Merge pull request #347 from aminya/deps [skip ci]
fix: update dependencies
2025-03-01 00:58:53 -08:00
Amin Yahyaabadi 4019fa56b0 fix: update dependencies 2025-03-01 00:43:33 -08:00
Amin Yahyaabadi 7c86e32fdd ci(docker): fix the tag reference for the base image 2025-03-01 00:24:28 -08:00
Amin Yahyaabadi 2b5218b10f doc: fix the docker images names in the readme [skip test] 2025-03-01 00:04:50 -08:00
Amin Yahyaabadi 4ed5cf931f chore(release): 1.0.0 2025-02-28 23:57:53 -08:00
Amin Ya f6ef086bf7
Merge pull request #345 from aminya/gccc [skip ci]
feat: add docker images with gcc as the compiler + Fix gcc paths in Fedora/Arch
2025-02-28 23:56:27 -08:00
Amin Yahyaabadi 3883a177d6 chore: add cmake for the tests 2025-02-28 23:11:54 -08:00
Amin Yahyaabadi 9a1ed094b0 fix: fix the dynamic gcc regex + update pnpm 2025-02-28 23:11:36 -08:00
Amin Yahyaabadi 0fe9cd6e11 fix: fix finding the latest gcc installed 2025-02-27 12:49:58 -08:00
Amin Yahyaabadi 8e83c0e114 fix: fix parsing of gcc version from the binary 2025-02-27 12:28:36 -08:00
Amin Yahyaabadi 4c635e726f fix: escape the variant name in regex 2025-02-27 12:18:03 -08:00
Amin Yahyaabadi f3bd8fd76e fix: accept the latest gcc if version is not specified 2025-02-27 09:54:32 -08:00
Amin Yahyaabadi 45081d3277 test: complete list of exe in docker tests 2025-02-27 03:09:20 -08:00
Amin Yahyaabadi 1de0accc14 fix: enable source maps in docker builds 2025-02-27 02:52:28 -08:00
Amin Yahyaabadi a9764989af fix: fix gcc/g++ paths on Fedora/Arch 2025-02-27 02:48:19 -08:00
Amin Yahyaabadi 1c96aae406 test: add docker structure tests for base images 2025-02-27 01:45:07 -08:00
Amin Yahyaabadi 806ecbfb14 fix: update archive-files 2025-02-27 01:42:16 -08:00
Amin Yahyaabadi 8a65a11eac docs: update the readme image list order 2025-02-27 00:56:26 -08:00
Amin Ya 35236e9929
ci: fix docker gcc on Fedora 2025-02-24 23:34:16 -08:00
Amin Yahyaabadi 054a01ce56 test: add gcc docker examples 2025-02-24 22:56:12 -08:00
Amin Yahyaabadi 333c93619e feat: add docker images with gcc as the compiler 2025-02-24 22:48:38 -08:00
Amin Ya 44d6681130
Merge pull request #344 from aminya/conan [skip ci]
ci: add conan, cmakelang, meson to base images
2025-02-24 13:16:37 -08:00
Amin Yahyaabadi 9dd9fb88cf ci: add conan, cmakelang, meson to base images 2025-02-24 11:43:48 -08:00
Amin Yahyaabadi 348d31f538 ci: install vcpkg on arm on native runners 2025-02-24 11:15:47 -08:00
Amin Ya 6f636f96f2
Merge pull request #343 from aminya/arm64-docker [skip ci]
ci: add Arm64 docker builds + add setup-cpp base Docker images + fix vcpkg on Linux Arm64 + update apt for the first install
2025-02-24 11:14:16 -08:00
Amin Yahyaabadi d81982f0b8 ci: build on native Linux arm runner 2025-02-24 11:00:11 -08:00
Amin Yahyaabadi edca93e670 fix: reference the latest tag in docker stages 2025-02-24 10:52:02 -08:00
Amin Yahyaabadi a00d0ef0b6 ci: skip build tests on arm64 due to vcpkg 2025-02-24 03:14:08 -08:00
Amin Yahyaabadi 9ba7b69ac1 fix: disable vcpkg based on dpkg arch 2025-02-23 23:06:47 -08:00
Amin Yahyaabadi 1a07db80e7 fix: skip tool installation if version is false 2025-02-23 22:55:00 -08:00
Amin Yahyaabadi 8f8b73f53d fix: exclude vcpkg on arm64 docker 2025-02-23 22:30:29 -08:00
Amin Ya 068684f46b ci: unpin buildx version for qemu 7 2025-02-23 21:35:44 -08:00
Amin Ya 3f7161439e
ci: use the latest qemu 2025-02-23 21:18:10 -08:00
Amin Yahyaabadi 9f3979461e fix: do not add test toolchain for mingw 2025-02-23 17:33:08 -08:00
Amin Yahyaabadi 2294a21607 fix: update the apt repos for the first time when installing 2025-02-23 17:32:18 -08:00
Amin Yahyaabadi ab235ba854 fix: disable installation timeouts 2025-02-23 17:13:42 -08:00
Amin Yahyaabadi 4330bb5cf2 fix: pin buildx due to segfaults 2025-02-23 16:13:13 -08:00
Amin Yahyaabadi 176905d067 fix: use the default mingw version on ubuntu 2025-02-23 16:06:17 -08:00
Amin Yahyaabadi ed642e3c97 fix: apt-get update dockers + skip mingw on fedora 2025-02-23 15:34:56 -08:00
Amin Yahyaabadi 5b04f53d41 fix: use apt-get for addAptRepo 2025-02-23 15:18:36 -08:00
Amin Yahyaabadi 3d88ff3446 fix: update vcpkg hash in cpp_vcpkg_project 2025-02-23 15:17:07 -08:00
Amin Yahyaabadi 818f740c52 fix: avoid failure of software-properties-common installation 2025-02-23 15:05:55 -08:00
Amin Yahyaabadi 40c2ffd2be fix: error on unmatched apt package version by default 2025-02-23 14:55:57 -08:00
Amin Yahyaabadi 0c09b5d740 test: update cpp_vcpkg_project 2025-02-23 14:50:49 -08:00
Amin Yahyaabadi 28befc3cbc fix: fix ubuntu llvm cleanup 2025-02-23 14:47:47 -08:00
Amin Yahyaabadi 063ff00baf fix: do not use -y for apt-get/nala update 2025-02-23 03:26:32 -08:00
Amin Yahyaabadi 8b818570f5 fix: set VCPKG_FORCE_SYSTEM_BINARIES for linux arm64 2025-02-23 03:26:32 -08:00
Amin Yahyaabadi b20073c6f5 ci: add setup-cpp base images 2025-02-23 03:26:32 -08:00
Amin Yahyaabadi 77458ed404 ci: disable actions cache on Windows [skip ci] 2025-02-23 02:31:05 -08:00
Amin Yahyaabadi c49e25690a ci: install qemu 7 for cross compilation [skip test] 2025-02-23 02:23:32 -08:00
Amin Yahyaabadi 902ec7be5e ci: build arm64 docker only on ubuntu 2025-02-23 02:13:34 -08:00
Amin Yahyaabadi 474b9dded5 fix: install the latest nodejs on Ubuntu docker 2025-02-23 02:08:59 -08:00
Amin Yahyaabadi 7a7572279c ci: exclude arm64 builds on Arch docker 2025-02-23 02:08:55 -08:00
Amin Yahyaabadi c7d3db8462 ci: add Arm64 docker builds 2025-02-23 01:49:16 -08:00
Amin Ya 5999587c4c
Merge pull request #342 from aminya/renovate/pnpm-10.x [skip ci]
chore(deps): update pnpm to v10.4.1
2025-02-23 01:38:47 -08:00
renovate[bot] 3f095866c3
chore(deps): update pnpm to v10.4.1 2025-02-16 22:06:04 +00:00
Amin Yahyaabadi abe2d67f8c chore(release): v0.46.2 [skip test] 2025-02-15 22:45:12 -08:00
Amin Ya 68aea2b63e
Merge pull request #341 from aminya/compiler-version [skip ci]
fix: more robust parsing of compiler name/versions
2025-02-15 22:43:22 -08:00
Amin Ya 49c8316b3c
Merge pull request #339 from aminya/renovate/pnpm-10.x [skip ci] 2025-02-15 22:33:02 -08:00
Amin Ya e584d285f2
Merge pull request #338 from aminya/renovate/node-22.x [skip ci] 2025-02-15 22:32:45 -08:00
Amin Yahyaabadi 3290875f5f fix: more robust parsing of compiler name/versions 2025-02-15 22:26:25 -08:00
renovate[bot] 100c4e6db6
chore(deps): update pnpm to v10.4.0 2025-02-15 03:14:08 +00:00
renovate[bot] bdbd5b5fb0
chore(deps): update dependency node to v22.14.0 2025-02-15 03:13:51 +00:00
Amin Yahyaabadi ef2de93e77 ci: fix ignore patterns for eslint [skip test] 2025-02-11 01:04:17 -08:00
Amin Yahyaabadi fce207515b ci: fix releasing of executables and dist 2025-02-11 00:59:25 -08:00
Amin Ya 302c2937a9
Merge pull request #337 from aminya/renovate/pnpm-10.x [skip ci] 2025-02-09 22:50:22 -08:00
renovate[bot] daf22b970d
chore(deps): update pnpm to v10.2.1 2025-02-08 01:52:22 +00:00
Amin Yahyaabadi 185a60867a ci: place the artifacts and exe 2025-02-07 14:11:47 -08:00
Amin Yahyaabadi f7141f2b69 ci: skip dist push on main branch [skip test] 2025-02-07 12:34:05 -08:00
Amin Yahyaabadi 06230ecbcd ci: fix downloading of artifacts + docker cache [skip test] 2025-02-07 12:29:07 -08:00
Amin Yahyaabadi a03cb7ea00 chore(release): v0.46.1 [skip test] 2025-02-06 03:00:50 -08:00
Amin Ya be9c96f67c
Merge pull request #334 from aminya/keywords [skip ci]
feat: support exclusive asset matching keywords+ Fix clang 15/16 on Ubuntu 24
2025-02-06 02:39:46 -08:00
github-actions[bot] a2312d2e6e chore(build): update dist 2025-02-06 10:38:51 +00:00
Amin Yahyaabadi f5bc42aff8 fix: prefer exe binaries for llvm on Windows 2025-02-06 02:37:08 -08:00
Amin Yahyaabadi 6f44503311 fix: update pnpm to 10 2025-02-06 01:57:31 -08:00
Amin Yahyaabadi a3723b08a9 fix: use fs-extra for move 2025-01-31 15:42:24 -08:00
Amin Yahyaabadi c2c30d9a33 fix: extract tar.xz files correctly with 7zip 2025-01-31 15:23:08 -08:00
Amin Yahyaabadi b7e481e350 fix: make the x86 arch optional for llvm windows 2025-01-30 10:12:46 -08:00
Amin Yahyaabadi e647ab787e fix: catch the fallback errors directly 2025-01-30 10:12:46 -08:00
Amin Yahyaabadi 01f6ff6b9c feat: fix installation on clang 15/16 on Ubuntu 24 2025-01-30 10:12:46 -08:00
Amin Yahyaabadi 2ff473f883 feat: support exclusive asset keyword matching 2025-01-30 10:12:45 -08:00
Amin Ya 87d6792c19
Merge pull request #336 from aminya/upload [skip ci]
ci: update to upload/download actions v4
2025-01-30 10:12:30 -08:00
Amin Yahyaabadi 8f3364ce7b ci: update to upload/download actions v4 2025-01-30 09:51:17 -08:00
Amin Ya c08b751296
Merge pull request #333 from aminya/gcc [skip ci]
fix: do not fallback to latest apt package by default + fix: install both libtinfo5 and libtinfo6 for clang
2025-01-29 02:24:28 -08:00
Amin Yahyaabadi 0dee00a185 fix: install both libtinfo5 and libtinfo6 for clang 2025-01-29 00:57:29 -08:00
Amin Yahyaabadi d58ee0edd1 fix: do not fallback to latest apt package by default 2025-01-29 00:56:32 -08:00
Amin Yahyaabadi 12e62a1b8d chore: v0.46.0 [skip test] 2025-01-25 23:05:50 -08:00
Amin Ya 60dbf57778
Merge pull request #331 from aminya/llvm-remove-repo [skip ci]
feat: remove the LLVM repo on apt install failures + support LLVM 11-16 on Ubuntu 24 + fix GCC on Linux Arm64 + install GCC without PPA if possible
2025-01-25 23:04:34 -08:00
Amin Yahyaabadi 035c0629d9 fix: update the add-apt-repository llvm patch 2025-01-25 22:51:40 -08:00
Amin Yahyaabadi 119345363d fix: first try gcc installation without the ppa 2025-01-25 22:45:55 -08:00
Amin Yahyaabadi b8c9910896 fix: fix gcc installation on Ubuntu Arm64 2025-01-25 22:42:57 -08:00
Amin Yahyaabadi d1a8e5ecfe fix: add missing CURRENT_LLVM_STABLE variable 2025-01-25 22:36:10 -08:00
Amin Yahyaabadi 17f5ebc5b9 fix: install libtinfo 6 instead of libtinfo-dev 2025-01-25 22:33:19 -08:00
Amin Yahyaabadi a1e30580e4 feat: remove the LLVM repo on apt install failures 2025-01-24 23:22:12 -08:00
Amin Yahyaabadi 1fd813945e chore: v0.45.0 [skip test] 2025-01-12 04:57:02 -08:00
Amin Ya d90b3b5cdc
Merge pull request #327 from aminya/venv-mac
fix: check for existence of venv module before installing
2025-01-12 04:42:02 -08:00
Amin Yahyaabadi 0528a87872 fix: install pipx via pip too 2025-01-12 04:10:52 -08:00
Amin Yahyaabadi 627f57a609 fix: fix pipx ensure path failures 2025-01-12 03:41:12 -08:00
Amin Yahyaabadi 361073ae6b ci: use pnpm lock as the cache key in CI 2025-01-12 03:27:46 -08:00
Amin Yahyaabadi 113d1f50d6 fix: install pipx system-wide first 2025-01-12 03:20:44 -08:00
Amin Yahyaabadi 770dfb4c2c fix: install venv before pip 2025-01-12 02:55:14 -08:00
Amin Yahyaabadi 025098a948 fix: check for existence of venv module before installing 2025-01-12 02:32:41 -08:00
Amin Ya f1ec26fa74
Merge pull request #323 from aminya/renovate/node-22.x [skip ci]
chore(deps): update dependency node to v22.13.0
2025-01-12 02:09:13 -08:00
Amin Ya ef74ed30fd
Merge pull request #324 from aminya/update-cmake [skip ci]
fix: update LLVM to 19 + update cmake, meson, task, mingw + feat: support Windows arm cross-compilation + test on MacOS 15
2025-01-12 02:08:47 -08:00
Amin Yahyaabadi 6b8e64ce19 ci: skip node 12 tests on macos 15 [skip ci] 2025-01-12 02:08:25 -08:00
Amin Yahyaabadi 4c12eccdfd fix: increase the gain of win64 2025-01-12 01:53:08 -08:00
Amin Yahyaabadi 6351fa6075 Revert: fix: update LLVM to 19.1.6 on MacOS x64 2025-01-12 01:53:08 -08:00
Amin Yahyaabadi e950a04eab fix: prefer non-msvc version of llvm for Win64 2025-01-12 01:53:08 -08:00
Amin Yahyaabadi 5f8524ef4c fix: downgrade LLVM to 18 on MacOS arm64 2025-01-12 01:53:08 -08:00
Amin Yahyaabadi ecd0bffbc2 test: fix the llvm test 2025-01-12 01:53:08 -08:00
Amin Yahyaabadi 237f9758b3 fix: update dependencies 2025-01-12 00:48:44 -08:00
Amin Yahyaabadi 50e59f5e2d fix: down-grade llvm to 19.1.4 on MacOS arm 2025-01-12 00:48:44 -08:00
Amin Yahyaabadi 8478964054 test: clean LLVM installations after each test 2025-01-12 00:48:44 -08:00
Amin Yahyaabadi c605e7fcc4 fix: update LLVM to 19.1.6 on MacOS x64 2025-01-12 00:48:44 -08:00
Amin Yahyaabadi 75001ab879 ci: build executables on older OS 2025-01-12 00:48:44 -08:00
Amin Yahyaabadi d8ee0a12c4 fix: make LLVM platform keywords optional 2025-01-12 00:48:44 -08:00
Amin Yahyaabadi bb6b0562ab ci: update MacOS runner images 2025-01-12 00:48:44 -08:00
Amin Yahyaabadi 897607b76f feat: support Windows arm cross-compilation 2025-01-12 00:48:44 -08:00
renovate[bot] 7c123200da
chore(deps): update dependency node to v22.13.0 2025-01-12 08:48:43 +00:00
Amin Yahyaabadi 5dca7bce94 feat: update default LLVM to 19.1.6 2025-01-12 00:48:43 -08:00
Amin Yahyaabadi c231ef1f4a fix: support solaris for LLVM 2025-01-12 00:48:43 -08:00
Amin Yahyaabadi 120e8ebbd0 fix: better matching of LLVM urls for newer releases 2025-01-12 00:48:43 -08:00
Amin Yahyaabadi 97d8a63d36 fix: add support for llvm 19 + update mingw list 2025-01-12 00:48:43 -08:00
Amin Yahyaabadi 00565bef9d fix: update task to 3.40.1 2025-01-12 00:48:43 -08:00
Amin Yahyaabadi 508fcd9cb8 fix: update meson to 1.6.1 2025-01-12 00:48:43 -08:00
Amin Yahyaabadi 4096f68632 fix: update cmake to 3.31.4 2025-01-12 00:48:43 -08:00
Amin Ya 9eae7b8aaa
Merge pull request #321 from aminya/renovate/pnpm-9.x [skip ci]
chore(deps): update pnpm to v9.15.3
2025-01-12 00:48:14 -08:00
renovate[bot] b25fd057cf
chore(deps): update pnpm to v9.15.3 2025-01-06 01:19:36 +00:00
Amin Yahyaabadi 0a06f2b113
Merge pull request #317 from aminya/renovate/node-22.x [skip ci] 2024-12-15 01:02:45 -08:00
Amin Yahyaabadi 9c2009ec06
Merge pull request #318 from aminya/renovate/pnpm-9.x [skip ci] 2024-12-15 01:02:31 -08:00
renovate[bot] 5e4bb00321
chore(deps): update pnpm to v9.15.0 2024-12-06 16:17:37 +00:00
renovate[bot] 2a71c9306c
chore(deps): update dependency node to v22.12.0 2024-12-03 21:12:34 +00:00
Amin Yahyaabadi f29afea287
Merge pull request #316 from aminya/renovate/pnpm-9.x [skip ci] 2024-11-14 13:28:21 -08:00
renovate[bot] 6c114ac3ab
chore(deps): update pnpm to v9.13.1 2024-11-14 19:46:37 +00:00
Amin Yahyaabadi 4481860df9
Merge pull request #315 from aminya/warnings [skip ci] 2024-11-05 00:31:32 -08:00
Amin Yahyaabadi 867ce44795 fix: use info for venv/setuptools failures 2024-11-01 05:35:48 -07:00
Amin Yahyaabadi 255caeb121 fix: require python 3.8.0 for cpplint 2024-11-01 02:35:56 -07:00
Amin Yahyaabadi 4d95a50556 feat: support all brew install options 2024-11-01 02:25:55 -07:00
Amin Yahyaabadi 8672e6af19 fix: fix doxygen warning on macos 2024-10-31 00:59:24 -07:00
Amin Yahyaabadi b8fbd53a44 fix: do not warn on pipx, venv, setuptools installations 2024-10-31 00:58:11 -07:00
Amin Yahyaabadi 75454f9c75
Merge pull request #312 from aminya/update-versions [skip ci] 2024-10-31 00:53:07 -07:00
Amin Yahyaabadi e77865a1bd fix: fix gcovr on Fedora/Archlinux 2024-10-30 23:50:53 -07:00
Amin Yahyaabadi 9f44eb2c24 fix: fix checking of up to date bin min versions 2024-10-30 23:40:53 -07:00
Amin Yahyaabadi f85ad55d63 fix: handle version range for python 2024-10-30 23:22:07 -07:00
Amin Yahyaabadi 4b7354baf0 fix: fix no default version for the tool 2024-10-25 01:58:32 -07:00
Amin Yahyaabadi 819d82997a feat: store default versions in a json version file 2024-10-25 01:49:11 -07:00
Amin Yahyaabadi e0e749b984 ci: use node/pnpm versions from config files [skip ci] 2024-10-25 00:20:06 -07:00
Amin Yahyaabadi ac7fe2df3f
Merge pull request #311 from aminya/renovate/node-22.x [skip ci] 2024-10-25 00:18:16 -07:00
renovate[bot] 780290387b
chore(deps): update dependency node to v22.10.0 2024-10-25 07:08:50 +00:00
Amin Yahyaabadi 905cc44d65
Merge pull request #310 from aminya/renovate/pnpm-9.x [skip ci] 2024-10-25 00:08:28 -07:00
renovate[bot] 50b145e467
chore(deps): update pnpm to v9.12.2 2024-10-19 02:15:22 +00:00
Amin Yahyaabadi 094e4c470d
Merge pull request #309 from aminya/renovate/pnpm-9.x [skip ci] 2024-10-12 07:18:13 -07:00
renovate[bot] 3f505ba05e
chore(deps): update pnpm to v9.12.1 2024-10-07 14:04:46 +00:00
Amin Yahyaabadi 24f9b03dc4 fix: fix ci-info not running in an ESM context 2024-10-06 20:48:03 -07:00
Amin Yahyaabadi d485b24c12 chore: v0.44.0 [skip test] 2024-10-02 14:14:36 -07:00
Amin Yahyaabadi 9935084e22
Merge pull request #308 from aminya/artifacts [skip ci] 2024-10-02 14:10:40 -07:00
Amin Yahyaabadi 2a67ff955e fix: add amd64_x86 architecture alias [skip ci] 2024-10-02 14:09:04 -07:00
Amin Yahyaabadi 76f06a9dda fix!: update Conan to v2
BREAKING Now the default Conan version is v2 instead of v1
2024-10-02 13:53:03 -07:00
Amin Yahyaabadi 9560b8d586
Merge pull request #306 from aminya/versions [skip ci] 2024-09-22 23:11:24 -07:00
Amin Yahyaabadi 59c68f43d8
fix: fix mingw version satisfaction check 2024-09-22 22:33:33 -07:00
Amin Yahyaabadi ed3b715dd5
fix: add range specifier for simple versions 2024-09-22 22:11:55 -07:00
Amin Yahyaabadi 5e9dd36c6f
feat: support runtime, thread, and exception model on MinGW windows 2024-09-22 21:44:13 -07:00
Amin Yahyaabadi 1e3ecc0794
fix: refactor setupMinGW into an independent function 2024-09-22 21:19:57 -07:00
Amin Yahyaabadi 526968f7e2
feat: use semver for matching binary assets 2024-09-22 21:12:29 -07:00
Amin Yahyaabadi 2653c43e67
fix: update cmake, gcovr, conan, meson, task, doxygen 2024-09-22 20:28:52 -07:00
Amin Yahyaabadi 8c22730f32
Merge pull request #305 from aminya/renovate/dependencies [skip ci] 2024-09-20 23:14:47 -07:00
renovate[bot] 8afbb1a7c6
fix(deps): update dependencies 2024-09-21 02:59:06 +00:00
Amin Yahyaabadi 88f2cb4b22
Merge pull request #301 from aminya/renovate/pnpm-9.x [skip ci] 2024-09-20 19:58:03 -07:00
renovate[bot] 52acadc64a
chore(deps): update pnpm to v9.11.0 2024-09-20 19:38:53 -07:00
Amin Yahyaabadi ff4c8289ac
Merge pull request #300 from aminya/renovate/devdependencies [skip ci] 2024-09-20 19:35:22 -07:00
Amin Yahyaabadi d511d1fb52
chore(renovate): pin the ignored packages [skip ci] 2024-09-20 19:31:25 -07:00
github-actions[bot] ea49034e9a chore(build): update dist 2024-09-21 02:22:59 +00:00
Amin Yahyaabadi b2a7ceb1aa
ci: check out the branch in the build job 2024-09-20 19:21:33 -07:00
Amin Yahyaabadi efdf36d38c
ci: commit the dist after the build 2024-09-20 19:18:02 -07:00
renovate[bot] 48bca6ce1e
chore(deps): update devdependencies 2024-09-21 01:05:27 +00:00
Amin Yahyaabadi 898e68dbc3
chore: add ignored deps for renovate [skip ci] 2024-09-20 18:04:45 -07:00
Amin Yahyaabadi 45b558c2a6
chore: use matchPackageNames for renovate [skip ci] 2024-09-20 18:01:48 -07:00
Amin Yahyaabadi 1034f25a9b
Merge pull request #286 from aminya/renovate/devdependencies [skip ci]
fix(deps): update dependencies
2024-09-20 17:58:08 -07:00
Amin Yahyaabadi 9d702fc974
fix: downgrade execa to 7 2024-09-20 16:44:43 -07:00
Amin Yahyaabadi 77859ef9f3
fix: disable unsafe-math optimizations 2024-09-20 16:24:50 -07:00
Amin Yahyaabadi 32a534716d
fix: downgrade numerous + update @types/node 2024-09-20 16:17:38 -07:00
Amin Yahyaabadi 72f96bf6fe
fix: polyfil timers/promise 2024-09-20 16:00:03 -07:00
Amin Yahyaabadi 654b790525
fix: update execa to 9.4.0 2024-09-20 15:48:10 -07:00
Amin Yahyaabadi be3c5a5688
fix: use setup-python patch for smaller binaries 2024-09-20 15:43:39 -07:00
Amin Yahyaabadi f6458ee4e1
fix: fix the build + downgrade eslint to 8 2024-09-20 15:29:42 -07:00
renovate[bot] 056d7a999d
chore(deps): update devdependencies 2024-09-19 22:41:39 +00:00
Amin Yahyaabadi 5f4f319fe8
chore: v0.43.0 [skip test] 2024-09-19 15:39:46 -07:00
Amin Yahyaabadi 037f22b114
Merge pull request #298 from aminya/compiler-sync [skip ci] 2024-09-19 15:38:38 -07:00
Amin Yahyaabadi e4f89db091
fix: check of compiler should be synced 2024-09-19 15:00:10 -07:00
Amin Yahyaabadi 3a86553eb1
fix: sync LLVM compiler version and clang tools version 2024-09-19 14:53:36 -07:00
Amin Yahyaabadi 5d12f41e90
Merge pull request #297 from aminya/cpplint [skip ci] 2024-09-19 14:34:45 -07:00
Amin Yahyaabadi 16c789591a
docs: separate the analyzer/linter category [skip ci] 2024-09-19 14:17:03 -07:00
Amin Yahyaabadi 1e259843db
test: skip infer test on Ubuntu 20 and below 2024-09-19 14:06:59 -07:00
Amin Yahyaabadi 69b2c1b021
feat: add support for facebook/infer 2024-09-18 22:19:38 -07:00
Amin Yahyaabadi 118cfec161
feat: add support for lizard 2024-09-18 21:41:19 -07:00
Amin Yahyaabadi 19a213deb1
feat: add support for flawfinder 2024-09-18 21:35:14 -07:00
Amin Yahyaabadi aae4991f09
feat: add support for cpplint 2024-09-18 21:33:02 -07:00
Amin Yahyaabadi c60a5ed965
chore: v0.42.0 [skip test] 2024-09-18 19:44:55 -07:00
Amin Yahyaabadi 1f6f8322f8
Merge pull request #296 from aminya/llvm-urls [skip ci]
fix: avoid old LLVM release HTTP redirects + fix libtinfo5 installation on Ubuntu 24
2024-09-18 19:38:07 -07:00
Amin Yahyaabadi 2a2a8eb39a
fix: fix installation of libtinfo5 on Ubuntu 24 2024-09-18 18:59:46 -07:00
Amin Yahyaabadi f0dd57ea4d
fix: avoid old LLVM release HTTP redirects 2024-09-18 17:33:23 -07:00
Amin Yahyaabadi fb2a9a2418
Merge pull request #294 from aminya/cmakelang [skip ci] 2024-09-18 17:17:08 -07:00
Amin Yahyaabadi c9bc540d32
fix: fix the pipx packages bin directory 2024-09-18 17:04:40 -07:00
Amin Yahyaabadi 4d73853d57
fix: remove the pkg extension from the pip pkg names 2024-09-18 16:50:12 -07:00
Amin Yahyaabadi 4ebcbc18f2
fix: fix checking of a pip package existence 2024-09-18 16:27:12 -07:00
Amin Yahyaabadi d316735ce5
fix: fisrt check python binary instead of python3
To avoid preferring brew over system python
2024-09-17 17:17:23 -07:00
Amin Yahyaabadi 381411326c
fix: fix the types of node builtin modules 2024-09-17 17:16:43 -07:00
Amin Yahyaabadi 3a8e462ed6
fix: manually memoize getPython 2024-09-17 15:49:19 -07:00
Amin Yahyaabadi 99db11072d
feat: skip installation of pip/pipx packages if already installed 2024-09-17 15:32:20 -07:00
Amin Yahyaabadi 67a1d8d27d
feat: add support for cmakelang, cmake-lint, cmake-format 2024-09-17 14:53:47 -07:00
Amin Yahyaabadi d7f5466d92
Merge pull request #293 from aminya/aliases [skip ci] 2024-09-17 14:45:49 -07:00
Amin Yahyaabadi 8a39523391
feat: support more compiler/tool aliases (e.g. clang, clang-tidy) 2024-09-17 14:32:10 -07:00
Amin Yahyaabadi fc60b25730
chore: v0.41.1 [skip test] 2024-09-17 13:03:34 -07:00
Amin Yahyaabadi 5d06e63ba4
Merge pull request #290 from aminya/llvm-flags [skip ci] 2024-09-17 13:01:31 -07:00
Amin Yahyaabadi 22ad634883
fix(llvm): set LLVM_CPPFLAGS/LDFLAGS instead of CPPFLAGS/LDFLAGS 2024-09-17 12:06:23 -07:00
Amin Yahyaabadi 691fa792a8
Merge pull request #287 from aminya/unzip-windows [skip ci] 2024-09-10 01:28:24 -07:00
Amin Yahyaabadi 5e68b686da
Merge pull request #272 from aminya/renovate/pnpm-9.x [skip ci] 2024-09-10 01:28:02 -07:00
Amin Yahyaabadi 1318ec90f6
ci: update pnpm to 9.10.0 in ci [skip ci] 2024-09-10 01:27:39 -07:00
Amin Yahyaabadi 01e15aee5c
fix: faster zip extraction on Windows via 7z 2024-09-10 01:12:30 -07:00
renovate[bot] b18b6f4875
chore(deps): update pnpm to v9.10.0 2024-09-09 20:34:11 +00:00
Amin Yahyaabadi 90d7a9bccf
docs: add macos-14 to the github actions example [skip ci] 2024-09-08 06:10:52 -07:00
Amin Yahyaabadi bfbfe9ca0b
chore: v0.41.0 [skip test] 2024-09-08 05:46:08 -07:00
Amin Yahyaabadi 7b3520d222
Merge pull request #285 from aminya/llvm [skip ci] 2024-09-08 05:35:12 -07:00
Amin Yahyaabadi d5024653f1
fix: fix pipx installation on MacOS ARM 2024-09-08 05:30:09 -07:00
Amin Yahyaabadi 6294c32d20
fix: fix make gnubin directory on MacOS ARM 2024-09-08 05:30:09 -07:00
Amin Yahyaabadi 2e807b3c46
ci: run the tests on MacOS ARM 2024-09-08 05:30:08 -07:00
Amin Yahyaabadi 8ffde703f2
fix: suppress the file name printing in unzip 2024-09-08 05:04:28 -07:00
Amin Yahyaabadi ed70b16a4c
ci: create macos-arm setup-cpp binaries 2024-09-08 04:50:57 -07:00
Amin Yahyaabadi c98723f655
fix: fix setup-cpp mjs entry in executables 2024-09-08 04:50:30 -07:00
Amin Yahyaabadi 590aaa8bb9
fix: add a non-root user for install yay on Arch 2024-09-08 04:48:58 -07:00
Amin Yahyaabadi 00b86b9dbf
fix: add script for installing yay 2024-09-08 04:20:01 -07:00
Amin Yahyaabadi 0379559965
fix: filter/sort the LLVM asset names 2024-09-08 04:01:03 -07:00
Amin Yahyaabadi bc81ce31a4
fix: install ncurses5-compat-libs on arch using aur 2024-09-08 03:38:31 -07:00
Amin Yahyaabadi d95a1c182b
fix: support ninja on Windows/Linux arm 2024-09-08 03:34:24 -07:00
Amin Yahyaabadi 6003b39332
fix: add arch aliases + support CMake on Windows Arm 2024-09-08 03:30:37 -07:00
Amin Yahyaabadi e714af79eb
fix: install ncurses for LLVM on Arch/Fedora 2024-09-08 03:15:02 -07:00
Amin Yahyaabadi dcadbb8407
fix: support matching assets with partial versions specified 2024-09-08 02:56:57 -07:00
Amin Yahyaabadi e1217a3287
fix: default to LLVM 18.1.8 on most platforms 2024-09-08 02:35:06 -07:00
Amin Yahyaabadi e003dfdeac
feat: find LLVM assets based on platform/arch/version heuristics 2024-09-07 17:30:45 -07:00
Amin Yahyaabadi 22bfbec1e0
fix: match assets via keywords 2024-09-07 16:04:03 -07:00
Amin Yahyaabadi d0c5d225d2
fix: manually unescape + in the LLVM URL names 2024-09-07 02:25:14 -07:00
Amin Yahyaabadi 8d16de0d38
feat: add generic saveHTMLAssets util 2024-09-07 02:13:15 -07:00
Amin Yahyaabadi f918fcc1fc
feat: add script for fetching LLVM asset list 2024-09-07 01:59:58 -07:00
Amin Yahyaabadi a91fdcafff
Merge pull request #284 from aminya/assets [skip ci] 2024-09-07 00:57:49 -07:00
Amin Yahyaabadi d54a82148a
fix: minify json assets via @aminya/minijson 2024-09-07 00:42:27 -07:00
Amin Yahyaabadi cb3bbf182c
chore: v0.40.0 2024-09-04 19:41:56 -07:00
Amin Yahyaabadi 57e4019423
Merge pull request #280 from aminya/vite [skip ci] 2024-09-04 14:29:08 -07:00
Amin Yahyaabadi 6e3b572a56
fix: filter 7z in mingw asset list 2024-09-04 02:04:32 -07:00
Amin Yahyaabadi 3e4a96d3c7
fix: use patha only when needed 2024-09-04 02:04:32 -07:00
Amin Yahyaabadi ae014dcdc3
build: transform babel via babel plugin 2024-09-04 02:04:31 -07:00
Amin Yahyaabadi e7ebe0f63e
ci: smoke test the node 12/20 bundles 2024-09-04 02:04:31 -07:00
Amin Yahyaabadi 1fab60e5ce
build: build legacy target via Vite 2024-09-04 01:27:11 -07:00
Amin Yahyaabadi ab36eabc6a
Merge pull request #279 from aminya/vite [skip ci] 2024-09-04 01:17:02 -07:00
Amin Yahyaabadi 8302e555d2
fix: do not use __dirname 2024-09-04 00:56:29 -07:00
Amin Yahyaabadi 050615f245
fix: add node shims for ESM target 2024-09-04 00:07:13 -07:00
Amin Yahyaabadi 7547f75b96
ci: add integration test for modern bundle 2024-09-03 23:50:34 -07:00
Amin Yahyaabadi fb5b743b5f
fix: use EsModule for actions/http-client 2024-09-03 23:42:52 -07:00
Amin Yahyaabadi 8db3315e6c
feat: add Modern ESModule target via Vite 2024-09-03 23:19:49 -07:00
Amin Yahyaabadi 4e90bbcbd8
Merge pull request #278 from aminya/modern-remove [skip ci] 2024-09-03 22:26:05 -07:00
Amin Yahyaabadi 8bbc80d7ce
fix!: remove actions bundle in favour of modern bundle 2024-09-03 15:57:30 -07:00
Amin Yahyaabadi b923ad9bbd
Merge pull request #277 from aminya/mingw [skip ci] 2024-09-03 15:11:21 -07:00
Amin Yahyaabadi bd9b386672
fix: fix parsing of gcc version on macos + sort gcc exes 2024-09-03 14:52:31 -07:00
Amin Yahyaabadi c2e0936c40
fix: search under bindir for gcc exe 2024-09-03 14:16:56 -07:00
Amin Yahyaabadi 7cb1fce6d7
fix: more robust version getting from gcc cmd 2024-09-03 12:20:35 -07:00
Amin Yahyaabadi 4e9255bbdf
test: test the default GCC version correctly 2024-09-03 05:02:24 -07:00
Amin Yahyaabadi 6cf096c7bf
fix: detect default gcc version via cmd 2024-09-03 04:28:04 -07:00
Amin Yahyaabadi a45740c01f
fix: fix default gcc version + fix Mingw arch 2024-09-03 04:08:37 -07:00
Amin Yahyaabadi 11fad2b093
feat: use GitHub API to find a matching MinGW releases 2024-09-03 03:54:07 -07:00
Amin Yahyaabadi 81c10d4abc
fix: use the default version on Ubuntu, Fedora, Arch, macOS, etc. 2024-09-03 03:43:50 -07:00
Amin Yahyaabadi 324effb605
Merge pull request #276 from aminya/nala [skip ci] 2024-09-03 03:43:09 -07:00
Amin Yahyaabadi b6193582b7
fix: fix nala installation on Ubuntu 20.04 2024-09-03 02:37:03 -07:00
Amin Yahyaabadi 4e7c4bb64b
fix: install nala via default repo or installer 2024-09-03 00:16:55 -07:00
Amin Yahyaabadi 61855cf251
Merge pull request #275 from aminya/deps [skip ci] 2024-09-02 23:43:50 -07:00
Amin Yahyaabadi ccbe5dcb3e
chore: update dev-dependencies 2024-09-02 23:31:47 -07:00
Amin Yahyaabadi f07e7e86a4
Merge pull request #270 from aminya/undici [skip ci] 2024-08-30 01:32:54 -07:00
Amin Yahyaabadi d18470dcca
fix: reduce bundle size by patching actions/http-client undici import 2024-08-29 17:16:39 -07:00
Amin Yahyaabadi 56a945c190
Merge pull request #269 from aminya/apt 2024-08-29 16:38:30 -07:00
Amin Yahyaabadi c17f568574
fix: fix timeouts by using memoizee 2024-08-29 16:12:54 -07:00
Amin Yahyaabadi 9a295dea76
fix: memoize apt update/init via micromemoize 2024-08-28 15:30:20 -07:00
Amin Yahyaabadi 0dbc7a0d00
fix: refactor apt functions into separate files 2024-08-28 15:17:21 -07:00
Amin Yahyaabadi adb1af1e17
fix!: only support a single repository/key for each apt package
BREAKING the option for repositories/keys are now singular instead of an array
2024-08-28 14:30:38 -07:00
Amin Yahyaabadi 2032957802
docs: add examples for setup-apt functions 2024-08-28 14:12:56 -07:00
Amin Yahyaabadi 19bf09e888
feat!: support addAptKey options through installAptPack
BREAKING no default keys are added during apt installations anymore. Explicitly pass the keys needed.
BREAKING the arguments to addAptKeyViaServer and addAptKeyViaDownload has changed. addAptKeyViaDownload renamed to addAptKeyViaURL
2024-08-28 13:55:40 -07:00
Amin Yahyaabadi 12442d6b61
chore: publish packages 1.0.1 2024-08-26 15:12:30 -07:00
Amin Yahyaabadi f5c5e9e808
Merge pull request #266 from aminya/setup-brew [skip ci] 2024-08-26 15:06:27 -07:00
Amin Yahyaabadi 0660ca7619
fix: add module type to packages + fix running the packages tests 2024-08-26 14:46:06 -07:00
Amin Yahyaabadi f2d212e7ec
feat: introduce setup-brew package 2024-08-23 15:20:37 -07:00
Amin Yahyaabadi 20b8aaf39f
Merge pull request #259 from aminya/renovate/pnpm-9.x [skip ci] 2024-08-23 01:15:24 -07:00
Amin Yahyaabadi c38aec23f9
chore: update pnpm to 9.8.0 2024-08-23 00:57:35 -07:00
Amin Yahyaabadi 6827680827
chore: v0.39.0 [skip test] 2024-08-22 15:14:53 -07:00
Amin Yahyaabadi e486e3676a
Merge pull request #264 from aminya/powershell-ubuntu-24 [skip ci] 2024-08-21 15:45:47 -07:00
Amin Yahyaabadi c2afe421b0
test: pass the install directory for powershell 2024-08-21 15:29:27 -07:00
Amin Yahyaabadi 20c025d4d7
fix: fix tool destination file names + automatic extract functions 2024-08-21 15:10:46 -07:00
Amin Yahyaabadi 41c74d00e3
fix: install extraction dependencies 2024-08-20 17:17:23 -07:00
Amin Yahyaabadi f1968293bc
fix: chmod the downloaded binaries in setupBin 2024-08-20 16:41:08 -07:00
Amin Yahyaabadi 555cb15f76
feat: add binary-based powershell installation 2024-08-20 16:26:14 -07:00
Amin Yahyaabadi 35ec48abe6
Merge pull request #263 from aminya/brew-overwrite [skip ci] 2024-08-20 16:06:36 -07:00
Amin Yahyaabadi 286daf2183
fix: overwrite and cask are mutually exclusive 2024-08-20 15:34:12 -07:00
Amin Yahyaabadi 5a68a08a86
chore: update parcel to 2.0.0-canary.1717 2024-08-20 15:22:57 -07:00
Amin Yahyaabadi 61b376c9e4
chore: hoist the types packages 2024-08-20 15:22:14 -07:00
Amin Yahyaabadi b7b6d75da7
feat: add overwrite option for brew + enabled by default
Update setupBrewPack.ts
2024-08-20 15:22:13 -07:00
Amin Yahyaabadi 42d0df7db6
Merge pull request #262 from aminya/downloader [skip ci] 2024-08-19 01:39:57 -07:00
Amin Yahyaabadi 8a5b753ad5
fix: install ca-certificates before downloading 2024-08-19 01:18:00 -07:00
Amin Yahyaabadi ee265991bc
fix: use node-download-helper instead of actions/http-client and curl 2024-08-18 01:53:22 -07:00
Amin Yahyaabadi a247573c5d
fix: use http client for downloading the LLVM installer 2024-08-17 09:16:20 -07:00
Amin Yahyaabadi 1a9cdb35d8
fix: use http client for downloading brew + fix brew ARM path 2024-08-16 23:21:05 -07:00
Amin Yahyaabadi d3b2f3531c
fix!: rename os-env to envosman due to npm conflict 2024-08-16 02:56:38 -07:00
Amin Yahyaabadi a4b28aacb7
Merge pull request #258 from aminya/packages 2024-08-16 02:39:36 -07:00
Amin Yahyaabadi 9d12380389
fix!: rename setup-apt functions to include the name apt 2024-08-16 02:38:15 -07:00
Amin Yahyaabadi e881f4079c
chore: add prepublishOnly for packages 2024-08-16 02:32:26 -07:00
Amin Yahyaabadi ad1b1ee820
refactor: refactor and add docs for setup-apt functions 2024-08-16 02:19:59 -07:00
Amin Yahyaabadi 1865b24b57
docs: add readme for setup-apt and os-env 2024-08-16 02:01:51 -07:00
Amin Yahyaabadi dc74686724
feat: add setup-apt package for all the apt utils 2024-08-16 01:50:32 -07:00
Amin Yahyaabadi 1704d8457d
fix: inline the options into all apt exec calls + improve errors 2024-08-16 01:19:09 -07:00
Amin Yahyaabadi 080dafd056
fix: warn on not respecting the requested apt version upon failures 2024-08-16 00:35:35 -07:00
Amin Yahyaabadi a06af07c8d
fix: add a new line before/after the guard headers 2024-08-16 00:29:37 -07:00
Amin Yahyaabadi c0d283fa60
chore: add lefthook to do a clean build before commit 2024-08-16 00:05:23 -07:00
Amin Yahyaabadi 287549e862
fix: fix the apt exec options for piped executions 2024-08-15 23:34:15 -07:00
Amin Yahyaabadi 429d0724fa
fix: avoid needing rcFile for nala lang settings 2024-08-15 23:06:59 -07:00
Amin Yahyaabadi efbc01e1b5
fix!: rename addEnv options to be simpler 2024-08-15 17:26:17 -07:00
Amin Yahyaabadi fce9cac0b5
test: resolve js files from ts files for tests 2024-08-15 17:12:29 -07:00
Amin Yahyaabadi 382285ae64
chore: add linting checks via turbo 2024-08-15 17:01:33 -07:00
Amin Yahyaabadi 4facf05dc0
build: add turbo for faster builds 2024-08-15 15:55:02 -07:00
Amin Yahyaabadi 08cf20cc0e
fix: add js file extension for all relative imports 2024-08-15 15:22:07 -07:00
Amin Yahyaabadi 33c1974e70
fix: use default pnpm configuration 2024-08-15 15:02:03 -07:00
Amin Yahyaabadi 0b45dac798
fix: fix the rcPath for setup-cpp 2024-08-15 14:54:05 -07:00
Amin Yahyaabadi 771228c4ae
feat!: add guard and source RC options for os-env 2024-08-14 19:07:39 -07:00
Amin Yahyaabadi 77e643057d
feat: add os-env package for managing path, env, rc files 2024-08-14 18:22:33 -07:00
Amin Yahyaabadi 5962369655
chore: v0.38.3 [skip test] 2024-08-13 00:54:19 -07:00
Amin Yahyaabadi 933c6eaf84
fix: add missing brew input to actions.yml + fix ccache input + improve description 2024-08-13 00:53:43 -07:00
Amin Yahyaabadi f898162cf1
chore: v0.38.2 [skip test] 2024-08-12 14:26:19 -07:00
Amin Yahyaabadi bcd2a428a8
Merge pull request #257 from aminya/vcpkg-version 2024-08-12 11:05:41 -07:00
Amin Yahyaabadi 315189b36f
fix: install LLVM dependencies after LLVM 2024-08-12 03:21:33 -07:00
Amin Yahyaabadi a65482651a
fix: allow parallel apt calls in the llvm installer 2024-08-12 03:10:38 -07:00
Amin Yahyaabadi a93caaa4ac
fix: wait for apt lock if it is held 2024-08-12 02:42:51 -07:00
Amin Yahyaabadi 7e559c044f
fix: fix the version check for vcpkg 2024-08-12 02:19:44 -07:00
Amin Yahyaabadi 040d33199e
fix: fix check for apt package installs 2024-08-12 02:14:08 -07:00
Amin Yahyaabadi 1818c421dc
fix: allow specifying the vcpkg version 2024-08-12 01:53:56 -07:00
Amin Yahyaabadi 55af62e5b4
chore: v0.38.1 [skip test] 2024-08-08 16:50:07 -07:00
Amin Yahyaabadi b86c009455
Merge pull request #255 from aminya/skip-apt [skip ci] 2024-08-08 16:30:30 -07:00
Amin Yahyaabadi 41e84d833e
fix: install python3-apt before installing nala 2024-08-08 16:16:36 -07:00
Amin Yahyaabadi 5aa7099535
fix: update before checking args when requested 2024-08-08 16:08:25 -07:00
Amin Yahyaabadi a9d70080cf
fix: update if apt-cache fails + skip init deps if installed 2024-08-08 15:48:21 -07:00
Amin Yahyaabadi 9ab878fa33
fix: skip apt installation calls if package already installed 2024-08-08 15:21:23 -07:00
Amin Yahyaabadi 3774e9b3ac
Merge pull request #254 from aminya/cache 2024-08-08 15:08:00 -07:00
Amin Yahyaabadi e2c1dd3622
fix: configurable runner tool cache + disabled by default
Runner tool cache can fill up the disk space (e.g. for LLVM), so it is disabled by default
2024-08-08 15:07:45 -07:00
Amin Yahyaabadi 76b3fd37b4
fix: extract CMake packages using tar exe 2024-08-08 13:28:20 -07:00
Amin Yahyaabadi f7abbbcc5d
chore: v0.38.0 [skip test] 2024-08-08 01:52:08 -07:00
Amin Yahyaabadi 71d2ff15d2
Merge pull request #253 from aminya/versions [skip ci] 2024-08-08 01:49:37 -07:00
Amin Yahyaabadi be629c9363
fix: use Doxygen 1.10 on Ubuntu 20 and older 2024-08-08 01:26:46 -07:00
Amin Yahyaabadi f767bd8819
fix: downgrade doxygen to 1.11.0 2024-08-08 00:49:41 -07:00
Amin Yahyaabadi 72b07394f9
fix: update default ninja, cmake, conan,meson, task, doxygen 2024-08-07 16:50:35 -07:00
Amin Yahyaabadi cb2000c8e4
fix: add the latest LLVM 18 URL installers 2024-08-07 16:47:22 -07:00
Amin Yahyaabadi e0753dd7d1
Merge pull request #252 from aminya/ubuntu-24 [skip ci] 2024-08-07 16:35:40 -07:00
Amin Yahyaabadi 7d9eec942d
fix: test on Ubuntu 24.04 + add default versions for ubuntu 24 2024-08-07 16:17:38 -07:00
Amin Yahyaabadi 75540d0976
Merge pull request #227 from aminya/python-search-windows 2024-08-07 16:09:12 -07:00
Amin Yahyaabadi c75a134b9c
fix: add default search paths for python on Windows 2024-08-07 14:01:14 -07:00
Amin Yahyaabadi 45a40e9d95
fix: throw an error if could not find the python binary 2024-08-07 13:59:07 -07:00
Amin Yahyaabadi 7f2f3d2a33
Merge pull request #250 from aminya/renovate/docker-build-push-action-6.x 2024-08-07 13:55:26 -07:00
Amin Yahyaabadi 1257bf3d2f
Merge pull request #251 from aminya/biome [skip ci] 2024-08-07 13:54:54 -07:00
Amin Yahyaabadi d9e900ea1f
ci: remove deprecated macos-11 GitHub Actions runner [skip ci] 2024-08-07 13:54:34 -07:00
Amin Yahyaabadi 905b59672f
fix: fix nala gpg and repo urls 2024-08-07 13:16:16 -07:00
Amin Yahyaabadi a993cd60c0
fix: polyfill diagnostics_channel for backwards compatibility 2024-08-07 12:00:15 -07:00
Amin Yahyaabadi 36e7f447d4
fix: polyfill util/types for backwards compatibility 2024-08-07 11:55:06 -07:00
Amin Yahyaabadi d5ec3ff06e
fix: polyfill web streams for backwards compatibility 2024-08-07 11:52:15 -07:00
Amin Yahyaabadi ff2af8ebc9
fix: transform private methods for Node 12 2024-08-07 11:45:28 -07:00
Amin Yahyaabadi d59649d812
fix: update nodejs to 22 + pnpm to 9 in CI 2024-08-07 11:35:04 -07:00
Amin Yahyaabadi e3bbe73e91
ci: always upload the dist in build 2024-08-07 11:28:09 -07:00
Amin Yahyaabadi 1c6c8db5a9
fix: update dependencies 2024-08-07 11:28:08 -07:00
Amin Yahyaabadi 4ab758d47f
fix: add biome linter + fix the issues 2024-08-06 23:44:32 -07:00
renovate[bot] 8aeb5e4f4e
chore(deps): update docker/build-push-action action to v6 2024-06-22 02:02:20 +00:00
Amin Yahyaabadi 34bb783813
Merge pull request #242 from aminya/macos-arm [skip test] 2024-04-10 12:16:24 -07:00
Amin Yahyaabadi cceb0f93f2
fix: fix all the eslint issues 2024-04-09 23:58:48 -07:00
Amin Yahyaabadi 1d9b24d3a2 fix: use fs/promises instead of sync fs 2024-04-03 01:09:24 -07:00
Amin Yahyaabadi 1cbbd6c740 feat: generate binaries for MacOS Arm 2024-04-03 01:03:49 -07:00
Amin Yahyaabadi 17a5a833c4
Merge pull request #241 from aminya/bashrc-update [skip ci] 2024-04-03 00:57:50 -07:00
Amin Yahyaabadi 072c438abb
Merge pull request #240 from aminya/dprint [skip ci] 2024-04-03 00:38:55 -07:00
Amin Yahyaabadi 183707949f fix: parallelize updating rc files 2024-04-03 00:36:48 -07:00
Amin Yahyaabadi a4e6fc40b5 fix: update bashrc even if cpprc exists already 2024-04-03 00:29:44 -07:00
Amin Yahyaabadi f1bbf95a2d fix: upstream the msvc-dev-cmd types from upstream 2024-04-03 00:19:00 -07:00
Amin Yahyaabadi 0ea92a8664 fix: fix msvc-dev-cmd types 2024-04-03 00:15:46 -07:00
Amin Yahyaabadi 15f5776d5f lint: use dprint for formatting 2024-04-03 00:15:43 -07:00
Amin Yahyaabadi 5ff0bde949
Merge pull request #239 from aminya/validate-dist [skip test] 2024-03-31 23:58:10 -07:00
Amin Yahyaabadi a2421ffd12 ci: only cache pnpm store for the build step 2024-03-31 23:56:16 -07:00
Amin Yahyaabadi df26d7ef8a ci: limit the number of running CI runs 2024-03-31 23:53:54 -07:00
Amin Yahyaabadi 4f1627cf7a ci: validate dist via git diff 2024-03-31 23:40:44 -07:00
Amin Yahyaabadi c930e9c0c7
Merge pull request #236 from tchaikov/llvm-18 [skip test] 2024-03-31 23:36:38 -07:00
Amin Yahyaabadi f2ab88cd91 ci: hard-code the dockerhub username 2024-03-31 22:44:39 -07:00
Amin Yahyaabadi 0487e80610 fix: default to LLVM 17 2024-03-31 22:39:25 -07:00
Amin Yahyaabadi c8867dae41 fix: fix linux binaries for llvm 2024-03-31 22:39:25 -07:00
Kefu Chai fd34bfcefe add LLVM 18.1.0 and 18.1.1
Fixes #228
Signed-off-by: Kefu Chai <tchaikov@gmail.com>
2024-03-31 22:39:25 -07:00
Amin Yahyaabadi 3490656d25
docs: format the readme [skip ci] 2024-03-24 03:29:51 -07:00
Amin Yahyaabadi a4e4c6c3be
docs: add prebuilt images to readme [skip ci] 2024-03-24 01:20:42 -07:00
Amin Yahyaabadi ebd14f40db
Merge pull request #237 from aminya/docker-publish 2024-03-24 01:06:56 -07:00
Amin Yahyaabadi c8e2110f69
ci: tag latest in the same step [skip ci] 2024-03-24 01:06:41 -07:00
Amin Yahyaabadi 526d06e31f
ci: push the latest only on master [skip test] 2024-03-24 00:58:35 -07:00
Amin Yahyaabadi 1f53bd746a
ci: tag as latest after using exact versions 2024-03-24 00:52:14 -07:00
Amin Yahyaabadi 7a90df0732
ci: add the scope for the test images 2024-03-24 00:33:04 -07:00
Amin Yahyaabadi 85853d5f3a
ci: test the built images 2024-03-24 00:25:30 -07:00
Amin Yahyaabadi d6950a396f
feat: build and publish docker images 2024-03-24 00:20:20 -07:00
Amin Yahyaabadi 2908244529
chore: v0.37.0 [skip test] 2024-02-19 01:13:26 -08:00
Amin Yahyaabadi 41a235324f
Merge pull request #232 from aminya/macos 2024-02-18 23:43:15 -08:00
Amin Yahyaabadi ea2732fbf8
test: skip doxygen test on macos 11 + use brew 2024-02-18 23:42:50 -08:00
Amin Yahyaabadi dbfc8a80e6
fix: fix the binary path for macos doxygen binaries 2024-02-18 23:12:39 -08:00
Amin Yahyaabadi 77fbfe849b
fix: fix skipping graphviz on macos 2024-02-17 03:24:38 -08:00
Amin Yahyaabadi 36d895f6c6
fix: improve compatibility with Node 12 2024-02-17 02:01:57 -08:00
Amin Yahyaabadi 99a1254616
test: skip graphviz test on Macos 11 and older 2024-02-17 02:01:56 -08:00
Amin Yahyaabadi 32bae2b687
fix: use dynamic import for ArchiveHdi 2024-02-17 01:30:22 -08:00
Amin Yahyaabadi 8ce16c2fbc
fix: add stream/promises compat layer 2024-02-17 00:37:14 -08:00
Amin Yahyaabadi 1c7c39221b
test: fix importing @shockpkg/archive-files in jest 2024-02-17 00:31:11 -08:00
Amin Yahyaabadi c0f0580956
fix: fix shockpkg/archive-files usage for jest and windows 2024-02-16 23:36:54 -08:00
Amin Yahyaabadi 9a5a9cc5b5
fix: fix extracting dmg files 2024-02-16 23:11:59 -08:00
Amin Yahyaabadi d0aafc239f
fix: update dependencies 2024-02-16 23:07:54 -08:00
Amin Yahyaabadi f2828c7aeb
feat: install doxygen via official Dmg files 2024-02-16 21:47:47 -08:00
Amin Yahyaabadi f9b35199a3
feat: use Node 20 in GitHub Actions 2024-02-16 15:15:35 -08:00
Amin Yahyaabadi b17665893e
ci: test on MacOS 13 2024-02-16 15:15:14 -08:00
Amin Yahyaabadi 5465644a17
feat: skip graphviz installation on older MacOS
f
2024-02-16 15:15:14 -08:00
Amin Yahyaabadi 88ef2fc50d
Merge pull request #230 from aminya/pipx [skip ci] 2024-02-16 14:13:27 -08:00
Amin Yahyaabadi 5eefa3d4ef fix: install pipx using apt without a prefix on Linux 2024-02-14 04:16:39 -08:00
Amin Yahyaabadi 4e8c2f8bfb
chore: v0.36.2 [skip test] 2024-01-24 17:08:05 -08:00
Amin Yahyaabadi 5876082b0b
Merge pull request #225 from aminya/pipx [skip ci]
fix: install to the user home when using pipx as sudo
2024-01-24 15:32:19 -08:00
Amin Yahyaabadi a486582e84
fix: do not override pipx paths if env variables are specified 2024-01-24 14:27:55 -08:00
Amin Yahyaabadi 0324d60e51
test: use the correct python binary name on darwin 2024-01-24 14:20:55 -08:00
Amin Yahyaabadi 87f57022f5
test: ignore nala-legacy installation error 2024-01-24 13:03:35 -08:00
Amin Yahyaabadi 7fba762e3e
fix: ensure existence of folders for pipx home 2024-01-24 13:02:42 -08:00
Amin Yahyaabadi cc30e9b1d5
fix: ensure existence of the pipx folders 2024-01-24 12:46:28 -08:00
Amin Yahyaabadi 5f8ace2495
fix: add pipxBinDir to PATH 2024-01-24 12:12:19 -08:00
Amin Yahyaabadi f3a5dc3f05
fix: fix PIPX_HOME on Windows and MacOS 2024-01-22 21:02:38 -08:00
Amin Yahyaabadi 1a3ed1a856
fix: require ~ in untildifyUser 2024-01-22 16:25:47 -08:00
Amin Yahyaabadi c85b694b1c
fix: install to the user home when using pipx as sudo 2024-01-22 14:07:36 -08:00
Amin Yahyaabadi f55ff60ae4
Merge pull request #224 from aminya/llvm [skip ci]
Update LLVM, CMake, Meson, Task, Doxygen + Downgrade Gcovr
2024-01-22 12:03:19 -08:00
Amin Yahyaabadi 8a8bb46acc
fix: upgrade cmake, meson, task 2024-01-22 02:31:42 -08:00
Amin Yahyaabadi 9ac61de219
fix: upgrade doxygen to 1.10.0 2024-01-22 02:30:12 -08:00
Amin Yahyaabadi d8a5d20641
fix: downgrade gcovr to 5.2 2024-01-22 02:28:55 -08:00
Amin Yahyaabadi e05c1f4361
fix: update llvm to 17.0.6 2024-01-22 02:27:21 -08:00
Amin Yahyaabadi bdba3524ef
Merge pull request #222 from aminya/update-deps [skip ci]
fix: update dependencies
2024-01-22 02:21:07 -08:00
Amin Yahyaabadi 47e4597aa4
test: remove .js extension for typescript files for jest 2024-01-22 02:07:57 -08:00
Amin Yahyaabadi 8b2ab43823
fix: add fs/promises compat for node 12 2024-01-22 01:54:10 -08:00
Amin Yahyaabadi 649bb63b16
fix: update admina to the latest with execa 7 2024-01-22 01:43:45 -08:00
Amin Yahyaabadi 23929dfd4b
chore: update parcel 2024-01-22 01:41:22 -08:00
Amin Yahyaabadi a823e49204
chore: downgrade prettier 2024-01-22 01:41:21 -08:00
Amin Yahyaabadi 21189b4661
chore: use hoisted settings for pnpm 2024-01-22 01:41:21 -08:00
Amin Yahyaabadi 4c125e89f7
fix: update dependencies 2024-01-22 01:41:20 -08:00
Amin Yahyaabadi d5a5fcb4a9
Merge pull request #223 from tchaikov/llvm-60 [skip ci]
fix: use higher priority when installing llvm alternatives
2024-01-22 01:19:06 -08:00
Kefu Chai 3d4cc40549 fix: use higher priority when installing llvm alternatives
before this change, gcc and g++ are installed using `updateAptAlternatives()`
with the same priority of 40 when they are installed along with
ld and libstdc++ as the dependencies of clang and llvm. but both
gcc and clang are installed using the same priority of 40 on ubuntu,
and the same applies to g++ and clang++. this renders it impossible
to use the default compilers of cc and cxx when clang/llvm is installed
using setup-cpp on an ubuntu host, as gcc is always prefered over
clang by the update-alternatives, as their priorities are identical.

in this change, the "priority" parameter is added to the setupGcc(),
so that we can specify a different priority when installing llvm.
strictly speaking, this is not necessary. as we can just use a higher
priority when calling updateAptAlternatives() in llvm/llvm.ts. but by
making it more explicit, we can ensure that we always prefer llvm over
gcc when installing llvm.

Signed-off-by: Kefu Chai <tchaikov@gmail.com>
2024-01-22 14:25:47 +08:00
Amin Yahyaabadi dd5d0e8699
Merge pull request #219 from aminya/renovate/fedora-40.x [skip ci]
chore(deps): update fedora docker tag to v40
2024-01-20 22:46:45 -08:00
renovate[bot] 264b8374eb
chore(deps): update fedora docker tag to v40 2024-01-21 06:11:47 +00:00
Amin Yahyaabadi 20388ee176
Merge pull request #216 from aminya/renovate/actions-setup-node-4.x [skip ci]
chore(deps): update actions/setup-node action to v4
2024-01-20 17:44:20 -08:00
renovate[bot] ae0ebdc3d5
chore(deps): update actions/setup-node action to v4 2024-01-21 01:02:29 +00:00
Amin Yahyaabadi 43d5bd524a
Merge pull request #213 from aminya/renovate/actions-cache-4.x [skip ci]
chore(deps): update actions/cache action to v4
2024-01-20 14:38:36 -08:00
Amin Yahyaabadi c5353c0863
Merge pull request #214 from aminya/renovate/actions-checkout-4.x [skip ci]
chore(deps): update actions/checkout action to v4
2024-01-20 14:38:19 -08:00
renovate[bot] 9ac5afb42a
chore(deps): update actions/checkout action to v4 2024-01-20 22:33:44 +00:00
renovate[bot] 5a9e4ef868
chore(deps): update actions/cache action to v4 2024-01-20 22:33:40 +00:00
Amin Yahyaabadi 6e563b8e5f chore: v0.36.1 [skip test] 2023-11-15 11:04:51 -08:00
Amin Yahyaabadi 0f23eb0c23
Merge pull request #210 from aminya/versions [skip ci] 2023-11-15 11:03:01 -08:00
Amin Yahyaabadi 7987f9195b fix: use llvm 17.0.4 on Windows 2023-11-14 11:38:59 -08:00
Amin Yahyaabadi b532e97a17 fix: update llvm to 17.0.5 2023-11-14 11:15:00 -08:00
Amin Yahyaabadi 0f59570d63 fix: update Conan, Meson, Task 2023-11-14 11:10:02 -08:00
Amin Yahyaabadi 0343736846 chore: update built files [skip ci] 2023-10-22 17:14:00 -07:00
Amin Yahyaabadi baac8c6db3 chore: v0.36.0 [skip test] 2023-10-22 17:12:39 -07:00
Amin Yahyaabadi c3c5a8178f
Merge pull request #209 from iainchesworth/feature/add-support-for-llvm-17
Feature/add support for llvm 17
2023-10-21 18:16:01 -07:00
Iain Chesworth ec2fe0a7d5 Add Ubuntu 22.04 specific default for LLVM 17.0.2 2023-10-21 23:37:19 +11:00
Iain Chesworth f1914d3936 Update default on Windows to 17.0.3, Linux to 17.0.2, and the "default" to 17.0.3. 2023-10-21 23:31:38 +11:00
Iain Chesworth 0af408ae6a Add support for LLVM 17 on Windows, Linux. 2023-10-21 23:18:02 +11:00
Amin Yahyaabadi a296e2c916 chore: v0.35.7 [skip test] 2023-10-20 11:32:28 -07:00
Amin Yahyaabadi 4083828161
Merge pull request #207 from aminya/msvc [skip ci] 2023-10-20 09:53:58 -07:00
Amin Yahyaabadi de1bfe912f chore: fix the linting issues 2023-10-19 10:15:20 -07:00
Amin Yahyaabadi ce47e106b8 fix: support finding BuildTools msvc 2023-10-19 10:12:36 -07:00
Amin Yahyaabadi e85adb2ac6 docs: update the docs for exec-powershell [skip ci] 2023-10-19 09:57:34 -07:00
Amin Yahyaabadi 10b6a5e666 docs: mention Node 12 or higher requirement [skip ci] 2023-09-11 14:02:43 -07:00
Amin Yahyaabadi e2b11c45c1 fix: specify NODE_MAJOR as 20 [skip ci] 2023-09-11 13:56:44 -07:00
Amin Yahyaabadi 8f9bbe3ffa
Merge pull request #205 from aminya/docs [skip ci] 2023-09-11 13:52:50 -07:00
Amin Yahyaabadi 20bb9d646a docs: use npm in setup-cpp for GitLab [skip ci] 2023-09-11 13:52:27 -07:00
Amin Yahyaabadi 9833f067a0 docs: add docerk file for ubuntu 20.04 2023-09-11 13:50:40 -07:00
Amin Yahyaabadi 436e27cecb chore: v0.35.6 [skip test] 2023-09-11 11:48:10 -07:00
Amin Yahyaabadi 6a37ff7253 fix: fix grantUserWriteAccess for cpprc 2023-09-11 11:47:10 -07:00
Amin Yahyaabadi bb4056425a
Merge pull request #203 from aminya/chown [skip ci]
feat: use grantUserWriteAccess from admina and await it
2023-09-11 11:33:14 -07:00
Amin Yahyaabadi 4f69ae3519 feat: use grantUserWriteAccess from admina and await it 2023-09-11 11:05:16 -07:00
Amin Yahyaabadi 5f4cbc86cd chore: v0.35.5 [skip test] 2023-09-11 09:47:45 -07:00
Amin Yahyaabadi 0cf6799b89
Merge pull request #202 from aminya/clang-format-version [skip ci] 2023-09-11 09:46:05 -07:00
Amin Yahyaabadi 17286fce04 fix: specify the major version for clang-format 2023-09-11 09:09:40 -07:00
Amin Yahyaabadi 15f7626551 chore: v0.35.4 [skip test] 2023-09-11 01:21:58 -07:00
Amin Yahyaabadi edd2c831ed fix: remove pip caching from actions_python 2023-09-11 01:21:43 -07:00
Amin Yahyaabadi d3a4b94794 fix: choose clang-format before other patches 2023-09-11 00:28:17 -07:00
Amin Yahyaabadi 9e5af3bc58
Merge pull request #201 from aminya/clang-format [skip ci] 2023-09-11 00:16:55 -07:00
Amin Yahyaabadi 734bc14554 feat: support only installing clang-format on Ubuntu 2023-09-10 23:58:16 -07:00
Amin Yahyaabadi 4ca8d58635
Merge pull request #199 from aminya/setup-python-bundle [skip ci] 2023-09-07 23:55:33 -07:00
Amin Yahyaabadi 96396ce7c5 perf: add dynamically loaded cache-dependencies for actions python
This reduces the main bundle size by ⚠️  1.28 MB minified! This bundle is loaded only when caching is enabled.

`setup-python` is used in [`setup-cpp`](https://github.com/aminya/setup-cpp) as a library. This optimization reduces the bundle size for that package as well. The build system of `setup-python` uses `ncc`, which doesn't immediately benefit from this change, but setup-cpp uses `Parcel`, which shows this huge improvement.

The reason for this huge reduction is that caching the dependencies uses the `@actions/cache` package, which is an extremely large package with big dependencies. The bundle size before this separation shows this:
![Screenshot_20230907_230625](https://github.com/actions/setup-python/assets/16418197/ec1baf34-85c3-459d-b8cf-894899959b2c)
2023-09-07 23:21:19 -07:00
Amin Yahyaabadi ffff3ab313 chore: v0.35.3 [skip test] 2023-09-07 14:15:08 -07:00
Amin Yahyaabadi 771f77f24f
Merge pull request #198 from aminya/fixes [skip ci] 2023-09-07 13:58:58 -07:00
Amin Yahyaabadi 99191e7285 fix: async grantUserWriteAccess 2023-09-07 13:47:30 -07:00
Amin Yahyaabadi 5126444593 fix: optimize the build with terser-config-atomic 2023-09-07 13:46:37 -07:00
Amin Yahyaabadi ff2b1155f8 fix: fix memoization for promises 2023-09-07 13:46:36 -07:00
Amin Yahyaabadi afcae25e9d
Merge pull request #196 from aminya/venv [skip ci] 2023-09-07 13:07:52 -07:00
Amin Yahyaabadi 47a297a43e fix: use pip index versions to check the existence of a package 2023-09-07 11:27:34 -07:00
Amin Yahyaabadi af4a6f813e fix: check for pip existence outside the try/catch loop 2023-09-07 11:04:26 -07:00
Amin Yahyaabadi 3fa4b5925a fix: use the system package manager instead of pip for standard modules 2023-09-06 21:38:08 -07:00
Amin Yahyaabadi 678aa3361f fix: use an info level message for reboot requirements for choco 2023-09-06 21:29:38 -07:00
Amin Yahyaabadi 6af571471a fix: log the pip fallback error 2023-09-06 21:29:20 -07:00
Amin Yahyaabadi ddbec096fd fix: fix venv installation warning 2023-09-06 21:18:43 -07:00
364 changed files with 19575 additions and 36681 deletions

1
.gitattributes vendored
View File

@ -7,4 +7,3 @@
# autogenerated files
dist/ -diff
package-lock.json -diff
pnpm-lock.yaml -diff

View File

@ -1,7 +1,9 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": ["config:base"],
"schedule": ["every weekend"],
"labels": ["dependencies"],
"separateMajorMinor": "false",
"separateMajorMinor": true,
"packageRules": [
{
"matchDepTypes": ["devDependencies"],
@ -15,6 +17,11 @@
"matchUpdateTypes": ["major", "minor", "patch", "pin", "digest", "lockFileMaintenance", "rollback", "bump"],
"groupName": "dependencies",
"semanticCommitType": "fix"
},
{
"matchDatasources": ["npm"],
"matchPackageNames": ["eslint", "numerous", "execa", "which", ",@types/eslint"],
"enabled": false
}
]
}

View File

@ -2,67 +2,75 @@ name: CI
on:
pull_request:
push:
branches:
- master
- main
- dev
tags:
- "*"
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true
env:
NODE_OPTIONS: --enable-source-maps
version: "1.8.0"
jobs:
Build:
runs-on: ubuntu-22.04
runs-on: ${{ matrix.os }}
name: Build
if: ${{ !contains(github.event.head_commit.message, '[skip ci]') }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-22.04
node:
- 20
pnpm:
- 8
steps:
- uses: actions/checkout@v3
- name: Cache
uses: actions/cache@v3
- uses: actions/checkout@v6
with:
path: |
~/.pnpm-store
D:\.pnpm-store
./node_modules
./.parcel-cache
key: "setupcpp-cache-OS:${{ matrix.os }}-node:${{ matrix.node }}-pnpm:${{ matrix.pnpm }}-${{ hashFiles('./.npmrc') }}-deps:${{ hashFiles('./package.json') }}"
restore-keys: |
"setupcpp-cache-OS:${{ matrix.os }}-"
ref: ${{ github.head_ref || github.ref_name }}
- name: Setup Node
uses: actions/setup-node@v3
uses: actions/setup-node@v6
with:
node-version: ${{ matrix.node }}
node-version-file: "./.nvmrc"
- name: Setup Pnpm
uses: pnpm/action-setup@v2
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
version: ${{ matrix.pnpm }}
bun-version-file: "package.json"
- name: Install
run: |
pnpm install
bun install
- name: Build
run: |
pnpm build
pnpm build.docker_tests
bun run build
bun run build.docker-ci
- name: Lint
run: |
pnpm run test.lint
bun run test.lint
- name: Update Dist
run: |
if [ "$(git diff --ignore-space-at-eol --text dist/ | wc -l)" -gt "0" ]; then
if [[ "${{ github.ref_name }}" =~ ^refs/heads/ ]]; then
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git add dist/
git commit -m "chore(build): update dist"
git push
else
echo "Skipping push for non-branch commit"
fi
fi
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload Dist
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v6
if: always()
with:
name: dist
path: |
@ -74,7 +82,6 @@ jobs:
BuildExecutable:
name: Build-Executable-${{ matrix.os }}
needs: [Build]
if: ${{ !contains(github.event.head_commit.message, '[skip ci]') }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
@ -82,60 +89,71 @@ jobs:
os:
- windows-2022
- ubuntu-22.04
- macos-12
node:
- 20
pnpm:
- 8
- ubuntu-22.04-arm
- macos-15-intel # x64
- macos-14 # arm64
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v6
- name: Download Artifacts
uses: actions/download-artifact@v3
uses: actions/download-artifact@v7
with:
name: dist
- name: Setup Node
uses: actions/setup-node@v3
uses: actions/setup-node@v6
with:
node-version: ${{ matrix.node }}
node-version-file: "./.nvmrc"
- name: Setup Pnpm
uses: pnpm/action-setup@v2
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
version: ${{ matrix.pnpm }}
bun-version-file: "package.json"
- name: Cache node_modules
uses: actions/cache@v3
if: ${{ !contains(matrix.os, 'windows') }}
uses: actions/cache@v5
with:
path: |
~/.pnpm-store
D:\.pnpm-store
~/.bun
./node_modules
key: "setupcpp-node_modules-cache-OS:${{ matrix.os }}-node:${{ matrix.node }}-pnpm:${{ matrix.pnpm }}-${{ hashFiles('./.npmrc') }}-deps:${{ hashFiles('./package.json') }}"
key: "setupcpp-node_modules-cache-OS:${{ matrix.os }}-${{ hashFiles('./.npmrc', './package.json', './.nvmrc', './bun.lock') }}"
restore-keys: |
"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
run: |
pnpm install
bun install
# Create self-contained executable that bundles Nodejs
- name: Create Executable
run: |
pnpm run pack.exe
bun run pack.exe
- name: Upload Executables
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v6
with:
name: exe
name: exe-${{ matrix.os }}
path: |
./exe
retention-days: 1
retention-days: 7
Test:
name: Test-${{ matrix.os }}
if: ${{ !contains(github.event.head_commit.message, '[skip ci]') }}
needs: [Build]
runs-on: ${{ matrix.os }}
strategy:
@ -143,49 +161,50 @@ jobs:
matrix:
os:
- windows-2022
- windows-2019
- ubuntu-24.04-arm
- ubuntu-24.04
- ubuntu-22.04-arm
- ubuntu-22.04
- ubuntu-20.04
- macos-12
- macos-11
node:
- 20
pnpm:
- 8
# - ubuntu-20.04
- macos-15 # arm64
# - macos-15-large # x64
- macos-14 # arm64
- macos-15-intel # x64
# - macos-14-xlarge #arm64
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v6
with:
submodules: true
- name: Download Dist
uses: actions/download-artifact@v3
uses: actions/download-artifact@v7
with:
name: dist
- name: Setup Node
uses: actions/setup-node@v3
uses: actions/setup-node@v6
with:
node-version: ${{ matrix.node }}
node-version-file: "./.nvmrc"
- name: Setup Pnpm
uses: pnpm/action-setup@v2
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
version: ${{ matrix.pnpm }}
bun-version-file: "package.json"
- name: Cache node_modules
uses: actions/cache@v3
if: ${{ !contains(matrix.os, 'windows') }}
uses: actions/cache@v5
with:
path: |
~/.pnpm-store
D:\.pnpm-store
~/.bun
./node_modules
key: "setupcpp-node_modules-cache-OS:${{ matrix.os }}-node:${{ matrix.node }}-pnpm:${{ matrix.pnpm }}-${{ hashFiles('./.npmrc') }}-deps:${{ hashFiles('./package.json') }}"
key: "setupcpp-node_modules-cache-OS:${{ matrix.os }}-${{ hashFiles('./.npmrc', './package.json', './.nvmrc', './bun.lock') }}"
restore-keys: |
"setupcpp-node_modules-cache-OS:${{ matrix.os }}-"
- name: Install
run: |
pnpm install
bun install
# - name: Setup SSH debugging session
# uses: mxschmitt/action-tmate@v3
@ -193,90 +212,360 @@ jobs:
- name: Tests
if: ${{ !contains(github.event.head_commit.message, '[skip test]') }}
run: |
pnpm run test
bun run test
env:
RUNNER_OS_NAME: ${{ matrix.os }}
- name: Setup Node 20
uses: actions/setup-node@v6
with:
node-version: 20
- name: Smoke Test Modern Bundle
if: ${{ !contains(github.event.head_commit.message, '[skip test]') }}
run: |
node ./dist/modern/setup-cpp.mjs --help
node ./dist/modern/setup-cpp.mjs --gcc true --cmake true
env:
RUNNER_OS_NAME: ${{ matrix.os }}
- name: Smoke Test Global Install
if: ${{ !contains(github.event.head_commit.message, '[skip test]') }}
run: |
setup-cpp --help
- name: Setup Node 12
uses: actions/setup-node@v3
if: ${{ !contains(matrix.os, 'macos-14') && !contains(matrix.os, 'macos-15') }}
uses: actions/setup-node@v6
with:
node-version: 12
- name: Smoke Test Node 12
- name: Smoke Test Legacy Bundle
run: |
node ./dist/legacy/setup-cpp.js --help
- name: Setup Node 16
uses: actions/setup-node@v3
with:
node-version: 16
- name: Smoke Test Node 16
run: |
node ./dist/actions/setup-cpp.js --help
node ./dist/legacy/setup-cpp.js --gcc true --cmake true
Docker:
name: Test-${{ matrix.container }}
if: ${{ !contains(github.event.head_commit.message, '[skip ci]') }}
name: Docker-${{ matrix.container.image }}-${{ matrix.platform }}-${{ matrix.container.tag }}
needs: [Build]
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-22.04
node:
- 20
pnpm:
- 8
- ubuntu-24.04
platform:
- linux/amd64
container:
- "ubuntu.dockerfile"
- "fedora.dockerfile"
- "arch.dockerfile"
- "ubuntu-mingw.dockerfile"
# - "fedora-mingw.dockerfile"
# - "arch-mingw.dockerfile"
- { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "24.04" }
- { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "22.04" }
- { 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:
- os: ubuntu-24.04-arm
platform: linux/arm64
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:
- uses: actions/checkout@v3
- uses: actions/checkout@v6
with:
submodules: true
- name: Download Dist
uses: actions/download-artifact@v3
uses: actions/download-artifact@v7
with:
name: dist
- name: Build
id: docker_build
- name: Define Platform Suffix
id: platform
run: |
docker build -f ./dev/docker/__tests__/${{ matrix.container }} -t setup-cpp .
if [[ "${{ matrix.platform }}" == "linux/amd64" ]]; then
echo "suffix=amd64" >> $GITHUB_OUTPUT
else
echo "suffix=arm64" >> $GITHUB_OUTPUT
fi
- name: Login to Docker Hub
uses: docker/login-action@v3
if: ${{ github.event_name != 'pull_request' || contains(github.event.head_commit.message, '[push docker]') }}
with:
username: aminya
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build setup-cpp-${{matrix.container.distro }}
id: build_base
uses: docker/build-push-action@v6
with:
context: .
file: ./dev/docker/ci/${{ matrix.container.distro }}.dockerfile
push: ${{ github.event_name != 'pull_request' || contains(github.event.head_commit.message, '[push docker]') }}
load: true
provenance: false
platforms: ${{ matrix.platform }}
tags: aminya/${{ matrix.container.image }}:${{ matrix.container.tag }}-${{ env.version }}-${{ steps.platform.outputs.suffix }}
cache-from: type=registry,ref=aminya/${{ matrix.container.image }}:${{ matrix.container.tag }}-${{ env.version }}-${{ steps.platform.outputs.suffix }}
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 }}
if: ${{ github.event_name != 'pull_request' || contains(github.event.head_commit.message, '[push docker]') }}
uses: peter-evans/dockerhub-description@v5
with:
username: aminya
password: ${{ secrets.DOCKERHUB_TOKEN }}
repository: aminya/${{ matrix.container.image }}
readme-filepath: ./README_DOCKER.md
- name: Build setup-cpp-${{matrix.container.distro }}-llvm
id: build_llvm
if: ${{ matrix.container.distro != 'arch' }}
uses: docker/build-push-action@v6
with:
context: .
file: ./dev/docker/ci/${{ matrix.container.distro }}-llvm.dockerfile
push: ${{ github.event_name != 'pull_request' || contains(github.event.head_commit.message, '[push docker]') }}
load: true
provenance: false
platforms: ${{ matrix.platform }}
tags: aminya/${{ matrix.container.image }}-llvm:${{ matrix.container.tag }}-${{ env.version }}-${{ steps.platform.outputs.suffix }}
cache-from: type=registry,ref=aminya/${{ matrix.container.image }}-llvm:${{ matrix.container.tag }}-${{ env.version }}-${{ steps.platform.outputs.suffix }}
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
if: ${{ (github.event_name != 'pull_request' || contains(github.event.head_commit.message, '[push docker]')) && matrix.container.distro != 'arch' }}
uses: peter-evans/dockerhub-description@v5
with:
username: aminya
password: ${{ secrets.DOCKERHUB_TOKEN }}
repository: aminya/${{ matrix.container.image }}-llvm
readme-filepath: ./README_DOCKER.md
- name: Test LLVM
if: ${{ !contains(github.event.head_commit.message, '[skip test]') && matrix.container.distro != 'arch' }}
uses: docker/build-push-action@v6
with:
context: .
file: ./dev/docker/examples/${{ matrix.container.distro }}-llvm.dockerfile
push: false
platforms: ${{ matrix.platform }}
tags: aminya/test-${{ matrix.container.image }}-llvm:${{ matrix.container.tag }}-${{ env.version }}
- name: Build setup-cpp-${{matrix.container.distro }}-gcc
id: build_gcc
uses: docker/build-push-action@v6
with:
context: .
file: ./dev/docker/ci/${{ matrix.container.distro }}-gcc.dockerfile
push: ${{ github.event_name != 'pull_request' || contains(github.event.head_commit.message, '[push docker]') }}
load: true
provenance: false
platforms: ${{ matrix.platform }}
tags: aminya/${{ matrix.container.image }}-gcc:${{ matrix.container.tag }}-${{ env.version }}-${{ steps.platform.outputs.suffix }}
cache-from: type=registry,ref=aminya/${{ matrix.container.image }}-gcc:${{ matrix.container.tag }}-${{ env.version }}-${{ steps.platform.outputs.suffix }}
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
if: ${{ github.event_name != 'pull_request' || contains(github.event.head_commit.message, '[push docker]') }}
uses: peter-evans/dockerhub-description@v5
with:
username: aminya
password: ${{ secrets.DOCKERHUB_TOKEN }}
repository: aminya/${{ matrix.container.image }}-gcc
readme-filepath: ./README_DOCKER.md
- name: Test gcc
if: ${{ !contains(github.event.head_commit.message, '[skip test]') }}
uses: docker/build-push-action@v6
with:
context: .
file: ./dev/docker/examples/${{ matrix.container.distro }}-gcc.dockerfile
push: false
platforms: ${{ matrix.platform }}
tags: aminya/test-${{ matrix.container.image }}-gcc:${{ matrix.container.tag }}-${{ env.version }}
- name: Build setup-cpp-${{matrix.container.distro }}-mingw
id: build_mingw
if: ${{ matrix.container.distro != 'fedora' && !(matrix.container.distro == 'alpine' && matrix.platform == 'linux/arm64') }}
uses: docker/build-push-action@v6
with:
context: .
file: ./dev/docker/ci/${{ matrix.container.distro }}-mingw.dockerfile
push: ${{ github.event_name != 'pull_request' || contains(github.event.head_commit.message, '[push docker]') }}
load: true
provenance: false
platforms: ${{ matrix.platform }}
tags: aminya/${{ matrix.container.image }}-mingw:${{ matrix.container.tag }}-${{ env.version }}-${{ steps.platform.outputs.suffix }}
cache-from: type=registry,ref=aminya/${{ matrix.container.image }}-mingw:${{ matrix.container.tag }}-${{ env.version }}-${{ steps.platform.outputs.suffix }}
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
if: ${{ github.event_name != 'pull_request' && matrix.container.distro != 'fedora' && !(matrix.container.distro == 'alpine' && matrix.platform == 'linux/arm64') }}
uses: peter-evans/dockerhub-description@v5
with:
username: aminya
password: ${{ secrets.DOCKERHUB_TOKEN }}
repository: aminya/${{ matrix.container.image }}-mingw
readme-filepath: ./README_DOCKER.md
- name: Test Mingw
if: ${{ !contains(github.event.head_commit.message, '[skip test]') && matrix.container.distro != 'fedora' && matrix.container.distro != 'alpine' }}
uses: docker/build-push-action@v6
with:
context: .
file: ./dev/docker/examples/${{ matrix.container.distro }}-mingw.dockerfile
push: false
platforms: ${{ matrix.platform }}
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:
if: startsWith(github.ref, 'refs/tags/')
needs: [Build, BuildExecutable, Test, Docker]
runs-on: ubuntu-22.04
needs: [Build, BuildExecutable, Test]
runs-on: ubuntu-24.04
steps:
- name: Download All Artifacts
uses: actions/download-artifact@v3
- name: Download Executables
uses: actions/download-artifact@v7
with:
pattern: exe-*
path: ./exe/
merge-multiple: true
- name: Place Artifacts
- name: Chmod executables
shell: bash
run: |
mv -v ./dist/ ./dist-artifacts
mv -v ./dist-artifacts/* ./
chmod +x -R ./exe/
- name: Draft the release
uses: meeDamian/github-release@2.0
- name: Download Dist
uses: actions/download-artifact@v7
with:
token: ${{ secrets.GITHUB_TOKEN }}
gzip: folders
draft: true
files: >
./exe/setup-cpp-x64-windows.exe
./exe/setup-cpp-x64-linux
./exe/setup-cpp-x64-macos
./dist/legacy/setup-cpp.js
./dist/legacy/setup-cpp.js.map
./dist/legacy/
./dist/actions/
./dist/modern/
name: dist
path: dist/
- name: Tar Dist
run: |
tar -czf modern.tgz ./dist/modern
tar -czf legacy.tgz ./dist/legacy
ls -R ./dist/
continue-on-error: true
- name: Create Release in this repo
uses: softprops/action-gh-release@v2
with:
files: |
./exe/*
modern.tgz
legacy.tgz
generate_release_notes: true
# fail_on_unmatched_files: true

9
.gitignore vendored
View File

@ -17,3 +17,12 @@ exe/
*.log
*.exe
.cache/
coverage
.turbo
/src/llvm/assets/
/build
dist/library
*.tgz

24
.npmignore Normal file
View File

@ -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

5
.npmrc
View File

@ -1,6 +1,3 @@
public-hoist-pattern[]=*
package-lock=false
lockfile=true
prefer-frozen-lockfile=true
side-effects-cache=true
# optional=false
shamefully-hoist=true

1
.nvm
View File

@ -1 +0,0 @@
v18.15.0

1
.nvmrc Normal file
View File

@ -0,0 +1 @@
22.22.0

View File

@ -1,3 +1,9 @@
{
"recommendations": ["orta.vscode-jest", "esbenp.prettier-vscode", "dbaeumer.vscode-eslint"]
"recommendations": [
"orta.vscode-jest",
"esbenp.prettier-vscode",
"dbaeumer.vscode-eslint",
"biomejs.biome",
"p42ai.refactor"
]
}

79
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,79 @@
{
"[dockerfile]": {
"editor.defaultFormatter": "dprint.dprint"
},
"[javascript]": {
"editor.defaultFormatter": "dprint.dprint"
},
"[javascriptreact]": {
"editor.defaultFormatter": "dprint.dprint"
},
"[json]": {
"editor.defaultFormatter": "dprint.dprint"
},
"[jsonc]": {
"editor.defaultFormatter": "dprint.dprint"
},
"[markdown]": {
"editor.defaultFormatter": "dprint.dprint"
},
"[typescript]": {
"editor.defaultFormatter": "dprint.dprint"
},
"[typescriptreact]": {
"editor.defaultFormatter": "dprint.dprint"
},
"[yaml]": {
"editor.defaultFormatter": "dprint.dprint"
},
"[github-actions-workflow]": {
"editor.defaultFormatter": "dprint.dprint"
},
"cSpell.advanced.feature.useReferenceProviderWithRename": true,
"cSpell.checkOnlyEnabledFileTypes": false,
"cSpell.numSuggestions": 3,
"cSpell.showAutocompleteSuggestions": true,
"eslint.enable": true,
"eslint.options": {
"cache": true,
"cacheLocation": "./node_modules/.cache/eslint/",
"errorOnUnmatchedPattern": false,
"extensions": [
"ts",
"tsx",
"js",
"jsx",
"cjs",
"mjs",
"json",
"yaml",
"astro",
"mdx",
"html"
]
},
"eslint.probe": [
"typescript",
"typescriptreact",
"javascript",
"javascriptreact",
"json",
"jsonc",
"yaml",
"markdown",
"html",
"astro"
],
"explorer.copyRelativePathSeparator": "/",
"files.eol": "\n",
"files.insertFinalNewline": true,
"files.trimFinalNewlines": true,
"hadolint.hadolintPath": "./target/bin/hadolint",
"prettier.enable": false,
"javascript.preferences.importModuleSpecifierEnding": "js",
"typescript.preferences.importModuleSpecifierEnding": "js",
"eslint.useESLintClass": true,
"yaml.schemas": {
"https://json.schemastore.org/container-structure-test.json": "/dev/docker/ci/tests/*.yml"
}
}

16
CMakeLists.txt Normal file
View File

@ -0,0 +1,16 @@
cmake_minimum_required(VERSION 3.21...3.28)
project(
setup_cpp_tests
VERSION 1.8.0
DESCRIPTION "Tests for setup-cpp"
HOMEPAGE_URL "https://github.com/aminya/setup-cpp"
LANGUAGES CXX C)
add_subdirectory("./dev/cpp_vcpkg_project")
add_executable(test_gcc ./src/gcc/__tests__/main.cpp)
target_compile_features(test_gcc PRIVATE cxx_std_17)
add_executable(test_llvm ./src/llvm/__tests__/main.cpp)
target_compile_features(test_llvm PRIVATE cxx_std_17)

View File

@ -1,9 +1,9 @@
# 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
pnpm install
bun install
```
To avoid permenant changes to your system, you can use the test docker images under `./dev/docker/__tests__`.

363
README.md
View File

@ -2,27 +2,41 @@
Install all the tools required for building and testing C++/C projects.
![Build Status (Github Actions)](https://github.com/aminya/setup-cpp/workflows/CI/badge.svg)
[![Build Status (Github Actions](https://github.com/aminya/setup-cpp/actions/workflows/CI.yml/badge.svg)](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.
`setup-cpp` can be used locally from terminal, from CI services like GitHub Actions and GitLab Pipelines, and inside containers like Docker.
`setup-cpp` is supported on many platforms. It is continuously tested on several configurations including Windows (11, 10, 2022, 2019), Linux (Ubuntu 22.04, Ubuntu 20.04, Fedora, ArchLinux), and macOS (12, 11, 10.15). `setup-cpp` is backed by unit tests for each tool and integration tests for compiling cpp projects.
`setup-cpp` is supported on many platforms. It is continuously tested on several configurations including Windows (11, 10, 2022, 2019) x64/ARM/x86, Linux (Ubuntu 24.0, 22.04, 20.04, 18.04, Fedora, ArchLinux) x64/ARM64, and macOS (15, 14, 13, 12, 11, 10.15) x64/ARM. `setup-cpp` is backed by unit tests for each tool and integration tests for compiling cpp projects.
<!-- dprint-ignore -->
```yaml
# GitHub Actions example:
- name: Setup Cpp
uses: aminya/setup-cpp@v1
with:
compiler: llvm
vcvarsall: true
cmake: true
ninja: true
vcpkg: true
```
## Features
`setup-cpp` is **modular** and you can choose to install any of these tools:
| category | tools |
| --------------------- | ------------------------------------------------------------ |
| compiler and analyzer | llvm, gcc, msvc, vcvarsall, cppcheck, clangtidy, clangformat |
| build system | cmake, ninja, meson, make, task, bazel |
| package manager | vcpkg, conan, choco, brew, nala |
| cache | cppcache, sccache |
| documentation | doxygen, graphviz |
| coverage | gcovr, opencppcoverage, kcov |
| other | python, powershell, sevenzip |
| category | tools |
| --------------- | ----------------------------------------------------------------------------------------------------------- |
| compiler | llvm, gcc, msvc, apple-clang, vcvarsall |
| build system | cmake, ninja, meson, make, task, bazel |
| 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 |
| cache | ccache, sccache |
| documentation | doxygen, graphviz |
| coverage | gcovr, opencppcoverage, kcov |
| other | python, powershell, sevenzip, tar |
`setup-cpp` automatically handles the dependencies of the selected tool (e.g., `python` is required for `conan`).
@ -37,58 +51,84 @@ Run `setup-cpp` with the available options.
```shell
# Windows example (open PowerShell as admin)
npx setup-cpp --compiler llvm --cmake true --ninja true --ccache true --vcpkg true
RefreshEnv.cmd # activate the environment
# restart the shell to activate the environment
```
```shell
# Linux/Macos example
sudo npx setup-cpp --compiler llvm --cmake true --ninja true --ccache true --vcpkg true
source ~/.cpprc
source ~/.cpprc # activate cpp environment variables
```
NOTE: In the `compiler` entry, you can specify the version after `-` like `llvm-11.0.0`. For the tools, you can pass a specific version instead of `true` that chooses the default version
NOTE: In the `compiler` entry, you can specify the version after `-` like `llvm-18`. For the tools, you can pass a specific version instead of `true` that chooses the default version
NOTE: On Unix systems, when `setup-cpp` is used locally or in other CI services like GitLab, the environment variables are added to `~/.cpprc`. You should run `source ~/.cpprc` to immediately activate the environment variables. This file is automatically sourced in the next shell restart from `~/.bashrc` or `~/.profile` if `SOURCE_CPPRC` is not set to `0`. To deactivate `.cpprc` in the next shell restart, rename/remove `~/.cpprc`.
NOTE: On Unix systems, if you are already a root user (e.g., in a GitLab runner or Docker), you will not need to use `sudo`.
NOTE: setup-cpp requires Nodejs 12 or higher. If Nodejs shipped with your distribution is older than 12, install the latest Node (e.g. for [Ubuntu 20.04](https://github.com/aminya/setup-cpp/blob/e2b11c45c1108526f905729542711e343a54a7fb/dev/docker/setup-cpp-ubuntu-20.0.4.dockerfile#L4-L13)), or alternatively you can use the executables that are self-contained (see the next section).
#### With executable
Download the executable for your platform from [here](https://github.com/aminya/setup-cpp/releases/tag/v0.35.2), and run it with the available options. You can also automate downloading using `wget`, `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
# windows x64
curl -o ./setup-cpp.exe -LJ "https://github.com/aminya/setup-cpp/releases/download/v1.8.0/setup-cpp-x64-windows.exe"
# linux x64
curl -o ./setup-cpp -LJ "https://github.com/aminya/setup-cpp/releases/download/v1.8.0/setup-cpp-x64-linux"
# linux arm64
curl -o ./setup-cpp -LJ "https://github.com/aminya/setup-cpp/releases/download/v1.8.0/setup-cpp-arm64-linux"
# macos arm64
curl -o ./setup-cpp -LJ "https://github.com/aminya/setup-cpp/releases/download/v1.8.0/setup-cpp-arm64-macos"
# macos x64
curl -o ./setup-cpp -LJ "https://github.com/aminya/setup-cpp/releases/download/v1.8.0/setup-cpp-x64-macos"
```
An example that installs llvm, cmake, ninja, ccache, and vcpkg:
```shell
# windows example (open PowerShell as admin)
curl -LJO "https://github.com/aminya/setup-cpp/releases/download/v0.35.2/setup-cpp-x64-windows.exe"
./setup-cpp-x64-windows --compiler llvm --cmake true --ninja true --ccache true --vcpkg true
RefreshEnv.cmd # activate cpp environment variables
./setup-cpp --compiler llvm --cmake true --ninja true --ccache true --vcpkg true
# restart the shell to activate the environment
```
```shell
# linux example
wget "https://github.com/aminya/setup-cpp/releases/download/v0.35.2/setup-cpp-x64-linux"
chmod +x ./setup-cpp-x64-linux
sudo ./setup-cpp-x64-linux --compiler llvm --cmake true --ninja true --ccache true --vcpkg true
# linux/macos example
chmod +x ./setup-cpp
sudo ./setup-cpp --compiler llvm --cmake true --ninja true --ccache true --vcpkg true
source ~/.cpprc # activate cpp environment variables
```
```shell
# macos example
wget "https://github.com/aminya/setup-cpp/releases/download/v0.35.2/setup-cpp-x64-macos"
chmod +x ./setup-cpp-x64-macos
sudo ./setup-cpp-x64-macos --compiler llvm --cmake true --ninja true --ccache true --vcpkg true
source ~/.cpprc # activate cpp environment variables
```
NOTE: On Unix systems, if you are already a root user (e.g., in a GitLab runner or Docker), you will not need to use `sudo`.
### Inside GitHub Actions
Here is a complete cross-platform example that tests llvm, gcc, and msvc. It also uses cmake, ninja, vcpkg, and cppcheck.
A simple example for building with LLVM, cmake, ninja, vcpkg:
<!-- dprint-ignore -->
```yaml
- name: Setup Cpp
uses: aminya/setup-cpp@v1
with:
compiler: llvm
vcvarsall: true
cmake: true
ninja: true
vcpkg: true
```
A simple example for installing clang-format for code formatting:
<!-- dprint-ignore -->
```yaml
- name: Setup Cpp
uses: aminya/setup-cpp@v1
with:
clang-format: true
```
A complete cross-platform example that tests llvm, gcc, and msvc. It also uses cmake, ninja, vcpkg, and cppcheck.
`.github/workflows/ci.yml`:
@ -109,12 +149,13 @@ jobs:
matrix:
os:
- windows-2022
- ubuntu-22.04
- macos-12
- ubuntu-24.04
- macos-14 # arm64
- macos-13
compiler:
- llvm
- gcc
# you can specify the version after `-` like `llvm-13.0.0`.
# you can specify the version after `-` like `llvm-18`.
include:
- os: "windows-2022"
compiler: "msvc"
@ -124,13 +165,19 @@ jobs:
uses: actions/cache@v3
with:
path: |
./build/
~/vcpkg
./build/vcpkg_installed
${{ env.HOME }}/.cache/vcpkg/archives
~/.cache/vcpkg/archives
${{ env.LOCALAPPDATA }}/vcpkg/archives
${{ env.APPDATA }}/vcpkg/archives
${{ env.XDG_CACHE_HOME }}/vcpkg/archives
${{ env.LOCALAPPDATA }}\vcpkg\archives
${{ env.APPDATA }}\vcpkg\archives
key: ${{ runner.os }}-${{ matrix.compiler }}-${{ env.BUILD_TYPE }}-${{ hashFiles('**/CMakeLists.txt') }}-${{ hashFiles('./vcpkg.json')}}
~/.cache/ccache
~/.ccache
~/.config/ccache
~/Library/Caches/ccache
${{ env.LOCALAPPDATA }}/ccache
${{ env.XDG_CACHE_HOME }}/ccache
key: ${{ runner.os }}-${{ matrix.compiler }}-${{ env.BUILD_TYPE }}-${{ hashFiles('**/CMakeLists.txt', './vcpkg.json') }}
restore-keys: |
${{ runner.os }}-${{ env.BUILD_TYPE }}-
@ -138,16 +185,176 @@ jobs:
uses: aminya/setup-cpp@v1
with:
compiler: ${{ matrix.compiler }}
vcvarsall: ${{ contains(matrix.os, 'windows') }}
vcvarsall: true
cmake: true
ninja: true
vcpkg: true
cppcheck: true
clangtidy: true # instead of `true`, which chooses the default version, you can pass a specific version.
# ...
cppcheck: true # instead of `true`, which chooses the default version, you can pass a specific version.
```
### Inside Docker
When using the `setup-cpp` action in GitHub Actions, by default it will also install the `setup-cpp` CLI, which you can use in the subsequent commands. You can modify the default behaviour if needed.
```yaml
- name: Setup Cpp
uses: aminya/setup-cpp@v1
with:
setup-cpp: true
node-package-manager: "npm"
- name: Use Setup Cpp CLI
run: setup-cpp --compiler llvm --cmake true --ninja true --ccache true --vcpkg true
```
### Prebuilt Docker Images
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 tags are in the following template:
- 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`
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
FROM aminya/setup-cpp-ubuntu:24.04 AS builder
```
Image with `llvm` and the base tools:
```dockerfile
FROM aminya/setup-cpp-ubuntu-llvm:24.04 AS builder
```
Image with `gcc` and the base tools:
```dockerfile
FROM aminya/setup-cpp-ubuntu-gcc:24.04 AS builder
```
Image with `mingw` and the base tools:
```dockerfile
FROM aminya/setup-cpp-ubuntu-mingw:24.04 AS builder
```
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>
Base image with `cmake, ninja, task, vcpkg, python, make, cppcheck, gcovr, doxygen, ccache, conan, meson, cmakelang`
```dockerfile
FROM aminya/setup-cpp-fedora:40 AS builder
```
Image with `llvm` and the base tools:
```dockerfile
FROM aminya/setup-cpp-fedora-llvm:40 AS builder
```
Image with `gcc` and the base tools:
```dockerfile
FROM aminya/setup-cpp-fedora-gcc:40 AS builder
```
Image with `mingw` and the base tools:
```dockerfile
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>
### Custom Docker Images
If you need to install the tools selectively, you can create your own Docker image with the tools you need.
Here is an example for using setup-cpp to make a builder image that has the Cpp tools you need.
@ -159,8 +366,9 @@ RUN apt-get update -qq && \
# install nodejs
apt-get install -y --no-install-recommends nodejs npm && \
# install setup-cpp
npm install -g setup-cpp@v0.35.2 && \
npm install -g setup-cpp@v1.8.0 && \
# install the compiler and tools
NODE_OPTIONS="--enable-source-maps" \
setup-cpp \
--nala true \
--compiler llvm \
@ -182,15 +390,15 @@ RUN apt-get update -qq && \
rm -rf /var/lib/apt/lists/* && \
rm -rf /tmp/*
ENTRYPOINT ["/bin/bash"]
SHELL ["/bin/bash", "-l", "-c"]
ENTRYPOINT ["/bin/bash", "-l"]
#### Building (example)
FROM setup-cpp-ubuntu AS builder
COPY ./dev/cpp_vcpkg_project /home/app
WORKDIR /home/app
RUN bash -c 'source ~/.cpprc \
&& task build'
RUN task build
#### Running environment
# use a fresh image as the runner
@ -209,7 +417,7 @@ If you want to build the ones included, then run:
```shell
git clone --recurse-submodules https://github.com/aminya/setup-cpp
cd ./setup-cpp
docker build -f ./dev/docker/setup-cpp-ubuntu.dockerfile -t setup-cpp-ubuntu .
docker build -f ./dev/docker/setup-cpp/setup-cpp-ubuntu.dockerfile -t setup-cpp-ubuntu-llvm:22.04-17 ./
```
Where you should use the path to the dockerfile after `-f`.
@ -217,7 +425,7 @@ Where you should use the path to the dockerfile after `-f`.
After build, run the following to start an interactive shell in your container
```shell
docker run -it setup-cpp
docker run -it setup-cpp-ubuntu-llvm:22.04-17
```
### Inside Docker inside GitHub Actions
@ -231,7 +439,7 @@ jobs:
strategy:
matrix:
os:
- ubuntu-22.04
- ubuntu-24.04
steps:
- uses: actions/checkout@v3
- name: Build
@ -263,14 +471,14 @@ stages:
apt-get update -qq
apt-get install -y --no-install-recommends curl gnupg ca-certificates
# keys used by apt
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1E9377A2BA9EF27F
.setup-cpp: &setup-cpp |
curl -LJO "https://github.com/aminya/setup-cpp/releases/download/v0.35.2/setup-cpp-x64-linux"
chmod +x setup-cpp-x64-linux
# install nodejs
apt-get install -y --no-install-recommends nodejs npm
# install setup-cpp
npm install -g setup-cpp@v1.8.0
# install the compiler and tools
./setup-cpp-x64-linux --compiler $compiler --cmake true --ninja true --ccache true --vcpkg true
source ~/.cpprc
@ -297,6 +505,37 @@ test_linux_gcc:
- *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
[Setup-Cpp on Dev.to](https://dev.to/aminya/setup-cpp-3ia4)

160
README_DOCKER.md Normal file
View File

@ -0,0 +1,160 @@
# setup-cpp
Install all the tools required for building and testing C++/C projects.
[![Build Status (Github Actions](https://github.com/aminya/setup-cpp/actions/workflows/CI.yml/badge.svg)](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.
`setup-cpp` can be used locally from terminal, from CI services like GitHub Actions and GitLab Pipelines, and inside containers like Docker.
`setup-cpp` is supported on many platforms. It is continuously tested on several configurations including Windows (11, 10, 2022, 2019) x64/ARM/x86, Linux (Ubuntu 24.0, 22.04, 20.04, 18.04, Fedora, ArchLinux) x64/ARM64, and macOS (15, 14, 13, 12, 11, 10.15) x64/ARM. `setup-cpp` is backed by unit tests for each tool and integration tests for compiling cpp projects.
See https://github.com/aminya/setup-cpp for more information about using `setup-cpp` in different environments.
### Prebuilt Docker Images
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 tags are in the following template:
- 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`
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
FROM aminya/setup-cpp-ubuntu:24.04 AS builder
```
Image with `llvm` and the base tools:
```dockerfile
FROM aminya/setup-cpp-ubuntu-llvm:24.04 AS builder
```
Image with `gcc` and the base tools:
```dockerfile
FROM aminya/setup-cpp-ubuntu-gcc:24.04 AS builder
```
Image with `mingw` and the base tools:
```dockerfile
FROM aminya/setup-cpp-ubuntu-mingw:24.04 AS builder
```
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>
Base image with `cmake, ninja, task, vcpkg, python, make, cppcheck, gcovr, doxygen, ccache, conan, meson, cmakelang`
```dockerfile
FROM aminya/setup-cpp-fedora:40 AS builder
```
Image with `llvm` and the base tools:
```dockerfile
FROM aminya/setup-cpp-fedora-llvm:40 AS builder
```
Image with `gcc` and the base tools:
```dockerfile
FROM aminya/setup-cpp-fedora-gcc:40 AS builder
```
Image with `mingw` and the base tools:
```dockerfile
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>

View File

@ -3,95 +3,176 @@ description: "Install all the tools required for building and testing C++/C proj
author: "Amin Yahyaabadi"
inputs:
compiler:
description: "The compiler to use and its optional version separated by - e.g. llvm-13.0.0"
required: false
architecture:
description: "The CPU architecture"
required: false
llvm:
description: "The llvm version to install"
required: false
gcc:
description: "The gcc version to install"
required: false
msvc:
description: "The msvc version to install"
required: false
vcvarsall:
description: "If should run vcvarsall?"
required: false
cmake:
description: "The cmake version to install."
required: false
ninja:
description: "The ninja version to install."
required: false
conan:
description: "The conan version to install."
required: false
make:
description: "The make version to install."
required: false
task:
description: "The task version to install."
required: false
vcpkg:
description: "The vcpkg version to install."
required: false
meson:
description: "The meson version to install."
required: false
gcovr:
description: "The gcovr version to install."
required: false
python:
description: "The python version to install."
required: false
ccache:
description: "The ccache version to install."
required: false
sccache:
description: "The sccache version to install."
required: false
doxygen:
description: "The doxygen version to install."
required: false
graphviz:
description: "The graphviz version to install."
required: false
cppcheck:
description: "The cppcheck version to install."
required: false
clangtidy:
description: "The clang-tidy version to install."
required: false
clangformat:
description: "The clang-format version to install."
required: false
opencppcoverage:
description: "The opencppcoverage version to install."
required: false
kcov:
description: "The kcov version to install."
required: false
sevenzip:
description: "The 7z version to install."
required: false
nala:
description: 'The nala version to install ("" or "legacy").'
required: false
powershell:
description: "The powershell version to install."
required: false
timeout:
description: "The timeout for installation of one tool (in minutes)."
default: "20"
required: false
cache-tools:
description: "If should cache the installed tools? (Default: false)"
required: false
architecture:
description: "The CPU architecture"
required: false
compiler:
description: "The compiler to use and its optional version separated by - e.g. llvm-13.0.0"
required: false
llvm:
description: "Wether to install llvm (true/false) or the specific version to install"
required: false
clang:
description: "Wether to install clang (true/false) or the specific version to install"
required: false
gcc:
description: "Wether to install gcc (true/false) or the specific version to install"
required: false
msvc:
description: "Wether to install msvc (true/false) or the specific version to install"
required: false
cl:
description: "Wether to install cl (true/false) or the specific version to install"
required: false
msbuild:
description: "Wether to install msbuild (true/false) or the specific version to install"
required: false
visualstudio:
description: "Wether to install visualstudio (true/false) or the specific version to install"
required: false
apple-clang:
description: "Wether to install apple-clang (true/false) or the specific version to install"
required: false
apple-llvm:
description: "Wether to install apple-llvm (true/false) or the specific version to install"
required: false
appleclang:
description: "Wether to install apple-clang (true/false) or the specific version to install"
required: false
applellvm:
description: "Wether to install apple-llvm (true/false) or the specific version to install"
required: false
vcvarsall:
description: "If should run vcvarsall?"
required: false
cppcheck:
description: "Wether to install cppcheck (true/false) or the specific version to install."
required: false
cpplint:
description: "Wether to install cpplint (true/false) or the specific version to install."
required: false
flawfinder:
description: "Wether to install flawfinder (true/false) or the specific version to install."
required: false
lizard:
description: "Wether to install lizard (true/false) or the specific version to install."
required: false
infer:
description: "Wether to install facebook/infer (true/false) or the specific version to install."
required: false
clang-tidy:
description: "Wether to install clang-tidy (true/false) or the specific version to install."
required: false
clangtidy:
description: "The clangWether to install tidy (true/false) or the specific version to install."
required: false
clang-format:
description: "The clangWether to install format (true/false) or the specific version to install."
required: false
clangformat:
description: "The clangWether to install format (true/false) or the specific version to install."
required: false
cmake:
description: "Wether to install cmake (true/false) or the specific version to install."
required: false
cmakelang:
description: "Wether to install cmakelang (true/false) or the specific version to install."
required: false
cmake-lint:
description: "Wether to install cmake-lint (true/false) or the specific version to install."
required: false
cmakelint:
description: "Wether to install cmake-lint (true/false) or the specific version to install."
required: false
cmake-format:
description: "Wether to install cmake-format (true/false) or the specific version to install."
required: false
cmakeformat:
description: "Wether to install cmake-format (true/false) or the specific version to install."
required: false
ninja:
description: "Wether to install ninja (true/false) or the specific version to install."
required: false
conan:
description: "Wether to install conan (true/false) or the specific version to install."
required: false
make:
description: "Wether to install make (true/false) or the specific version to install."
required: false
task:
description: "Wether to install task (true/false) or the specific version to install."
required: false
vcpkg:
description: "Wether to install vcpkg (true/false) or the specific version to install."
required: false
meson:
description: "Wether to install meson (true/false) or the specific version to install."
required: false
choco:
description: "Wether to install chocolatey (true/false) or the specific version to install."
required: false
brew:
description: "Wether to install brew (true/false) or the specific version to install."
required: false
nala:
description: 'Wether to install nala (true/false) or the specific version to install ("" or "legacy").'
required: false
ccache:
description: "Wether to install ccache (true/false) or the specific version to install."
required: false
sccache:
description: "Wether to install sccache (true/false) or the specific version to install."
required: false
doxygen:
description: "Wether to install doxygen (true/false) or the specific version to install."
required: false
graphviz:
description: "Wether to install graphviz (true/false) or the specific version to install."
required: false
gcovr:
description: "Wether to install gcovr (true/false) or the specific version to install."
required: false
opencppcoverage:
description: "Wether to install opencppcoverage (true/false) or the specific version to install."
required: false
kcov:
description: "Wether to install kcov (true/false) or the specific version to install."
required: false
sevenzip:
description: "Wether to install 7z (true/false) or the specific version to install."
required: false
powershell:
description: "Wether to install powershell (true/false) or the specific version to install."
required: false
pwsh:
description: "Wether to install pwsh (true/false) or the specific version to install."
required: false
python:
description: "Wether to install python (true/false) or the specific version to install."
required: false
setup-cpp:
description: "Wether to install setup-cpp (true/false) or the specific version to install. (Default to the current version called by the action)"
required: false
node-package-manager:
description: "The node package manager to use (npm/yarn/pnpm) when installing setup-cpp globally"
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:
using: "node16"
main: "dist/actions/setup-cpp.js"
using: "node20"
main: "dist/modern/setup-cpp.mjs"
branding:
icon: "award"

12
babel.config.mts Normal file
View File

@ -0,0 +1,12 @@
import type { TransformOptions } from "@babel/core"
// @ts-expect-error no types
import RemoveNodePrefix from "@upleveled/babel-plugin-remove-node-prefix"
const babelConfig: TransformOptions = {
plugins: [
RemoveNodePrefix,
],
sourceMaps: true,
sourceType: "module",
}
export default babelConfig

66
biome.jsonc Normal file
View File

@ -0,0 +1,66 @@
{
"$schema": "https://biomejs.dev/schemas/1.9.1/schema.json",
"files": {
"ignore": [
"**/node_modules/**",
"**/.pnpm-store/**",
"**/dist/**",
"dev/cpp_vcpkg_project/**/*",
"**/.venv/",
"**/.*cache/",
"coverage/",
"**/coverage/",
"**/github_brechtsanders_winlibs_mingw.json"
],
"ignoreUnknown": true
},
"organizeImports": {
"enabled": true
},
"linter": {
"enabled": true,
"rules": {
"recommended": true,
"style": {
"noInferrableTypes": "off",
"noUselessElse": "off",
"noNonNullAssertion": "off",
"useNodejsImportProtocol": "off"
},
"complexity": {
"useLiteralKeys": "off"
},
"suspicious": {
"noConfusingVoidType": "off"
},
"correctness": {
"useImportExtensions": {
"level": "error",
"options": {
"suggestedExtensions": {
"ts": {
"component": "js",
"module": "js"
}
}
}
}
}
}
},
"formatter": {
"enabled": false,
"indentWidth": 4,
"indentStyle": "space"
},
"json": {
"formatter": {
"enabled": false,
"trailingCommas": "none"
},
"parser": {
"allowComments": true,
"allowTrailingCommas": true
}
}
}

3724
bun.lock Normal file

File diff suppressed because it is too large Load Diff

2
bunfig.toml Normal file
View File

@ -0,0 +1,2 @@
[install]
linker = "hoisted"

View File

@ -10,18 +10,29 @@ ignorePaths:
- dev/cpp_vcpkg_project
- "**/node_modules/"
- .vscode/extensions.json
- patches/*.patch
- "**/github_*.json"
- "**/llvm_org_releases.json"
words:
- aarch
- aminya
- applellvm
- armv
- bazel
- bazelisk
- binfmt
- biome
- biomejs
- buildtools
- Buildx
- caxa
- ccache
- choco
- clangd
- cmake
- cmakeformat
- cmakelang
- cmakelint
- cobertura
- copr
- CPATH
@ -30,11 +41,18 @@ words:
- cpprc
- Cpython
- DCMAKE
- dearmor
- deps
- devel
- dpkg
- dprint
- DVCPKG
- dyld
- eabi
- envosman
- envosmanrc
- esac
- esbuild
- esmodule
- execa
- ftxui
@ -42,9 +60,13 @@ words:
- gcovr
- ghes
- Graphviz
- gtar
- hadolint
- iarna
- inja
- isci
- isroot
- jsonify
- kcov
- LDFLAGS
- lefticus
@ -53,6 +75,11 @@ words:
- libdw
- libstdc
- libtinfo
- liuli
- llvmorg
- mdimporterdir
- memoizee
- mkdirp
- msbuild
- msvc
- msvcrt
@ -61,27 +88,37 @@ words:
- mxschmitt
- nala
- noconfirm
- nodistro
- NOPASSWD
- noprogressbar
- noreply
- nothrow
- npmrc
- nvmrc
- Opencppcoverage
- OSSDK
- papm
- patha
- pipx
- pnpm
- pnpx
- pwsh
- pygments
- pypy
- qlplugindir
- rharkor
- Sccache
- setupcpp
- setx
- sparcv
- SYSROOT
- Syuu
- terserrc
- tonistiigi
- Trofimovich
- tsbuildinfo
- ucrt
- untildified
- untildify
- upleveled
- vbatts
@ -89,11 +126,13 @@ words:
- VCPKG
- vcvarsall
- venv
- venvs
- visualc
- visualcpp
- vsversion
- whatwg
- xcrun
- xlarge
- Yahyaabadi
ignoreWords: []
import: []

@ -1 +1 @@
Subproject commit c30589196b2c59a3055dfc7c24244b4a1f48b081
Subproject commit b3f3cd5726740baa888d9e71ec783ca22596c057

View File

@ -1,53 +0,0 @@
## base image
FROM archlinux:base-devel as setup-cpp-arch-mingw
COPY "./dist/legacy" "/usr/lib/setup-cpp/"
# install git
RUN pacman -Syuu --noconfirm && \
pacman-db-upgrade && \
pacman -S --noconfirm --needed git
# install yay
RUN useradd -m -G nobody -s /bin/bash yay && passwd -d yay && echo "yay ALL=(ALL) ALL" >> /etc/sudoers
RUN git clone --depth 1 https://aur.archlinux.org/yay.git /opt/yay
WORKDIR /opt/yay
RUN chown -R yay:root . && chmod -R 775 .
USER yay
WORKDIR /opt/yay
RUN makepkg -si --noprogressbar --noconfirm
## clean up
USER root
WORKDIR /
RUN rm -rf /opt/yay
RUN pacman -Syuu --noconfirm && \
pacman-db-upgrade && \
# install nodejs
pacman -S --noconfirm --needed nodejs npm && \
# install the compiler and tools
node /usr/lib/setup-cpp/setup-cpp.js \
--compiler mingw \
--cmake true \
--ninja true \
--task true \
--vcpkg true \
--python true \
--make true \
--cppcheck true \
--gcovr true \
--doxygen true \
--ccache true && \
# arch cleanup
pacman -Scc --noconfirm && \
rm -rf /var/cache/pacman/pkg/* && \
rm -rf /tmp/*
ENTRYPOINT ["/bin/bash"]
#### Cross Building (example)
FROM setup-cpp-arch-mingw AS builder-mingw
COPY ./dev/cpp_vcpkg_project /home/app
WORKDIR /home/app
RUN bash -c 'source ~/.cpprc \
&& task build_cross_mingw'

View File

@ -1,23 +0,0 @@
schemaVersion: 2.0.0
commandTests:
- 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

View File

@ -1,46 +0,0 @@
## base image
FROM archlinux:base as setup-cpp-arch
COPY "./dist/legacy" "/usr/lib/setup-cpp/"
RUN pacman -Syuu --noconfirm && \
pacman-db-upgrade && \
# install nodejs
pacman -S --noconfirm --needed nodejs npm && \
# install the compiler and tools
node /usr/lib/setup-cpp/setup-cpp.js \
--compiler llvm \
--cmake true \
--ninja true \
--task true \
--vcpkg true \
--python true \
--make true \
--cppcheck true \
--gcovr true \
--doxygen true \
--ccache true && \
# arch cleanup
pacman -Scc --noconfirm && \
rm -rf /var/cache/pacman/pkg/* && \
rm -rf /tmp/*
ENTRYPOINT ["/bin/bash"]
#### Building (example)
FROM setup-cpp-arch AS builder
COPY ./dev/cpp_vcpkg_project /home/app
WORKDIR /home/app
RUN bash -c 'source ~/.cpprc \
&& task build'
#### Running environment
# use a fresh image as the runner
FROM archlinux:base 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"]

View File

@ -1,28 +0,0 @@
schemaVersion: 2.0.0
commandTests:
- name: ninja
command: /root/ninja/ninja
args: ["--version"]
expectedOutput: [".*1.*"]
- name: gcovr
command: gcovr
args: ["--version"]
expectedOutput: [".*gcovr.*"]
- name: ccache
command: ccache
args: ["--version"]
expectedOutput: [".*ccache.*"]
- name: doxygen
command: doxygen
args: ["--version"]
expectedOutput: [".*1.*"]
- name: clang
command: /usr/lib/llvm-15/bin/clang
args: ["--version"]
expectedOutput: [".*clang.*"]
fileExistenceTests:
- name: "vcpkg"
path: "/root/vcpkg"
shouldExist: true

View File

@ -1,35 +0,0 @@
## base image
FROM fedora:38 as setup-cpp-fedora-mingw
COPY "./dist/legacy" "/usr/lib/setup-cpp/"
# install nodejs
RUN dnf -y install nodejs npm && \
# install the compiler and tools
node /usr/lib/setup-cpp/setup-cpp.js \
--compiler mingw \
--cmake true \
--ninja true \
--task true \
--vcpkg true \
--python true \
--make true \
--cppcheck true \
--gcovr true \
--doxygen true \
--ccache true \
--powershell true && \
# cleanup
dnf clean all && \
rm -rf /tmp/*
ENTRYPOINT ["/bin/bash"]
#### Cross Building (example)
FROM setup-cpp-fedora-mingw AS builder-mingw
COPY ./dev/cpp_vcpkg_project /home/app
WORKDIR /home/app
RUN bash -c 'source ~/.cpprc \
&& task build_cross_mingw'

View File

@ -1,43 +0,0 @@
## base image
FROM fedora:38 as setup-cpp-fedora
COPY "./dist/legacy" "/usr/lib/setup-cpp/"
# install nodejs
RUN dnf -y install nodejs npm && \
# install the compiler and tools
node /usr/lib/setup-cpp/setup-cpp.js \
--compiler llvm \
--cmake true \
--ninja true \
--task true \
--vcpkg true \
--python true \
--make true \
--cppcheck true \
--gcovr true \
--doxygen true \
--ccache true && \
# cleanup
dnf clean all && \
rm -rf /tmp/*
ENTRYPOINT ["/bin/bash"]
#### Building (example)
FROM setup-cpp-fedora AS builder
COPY ./dev/cpp_vcpkg_project /home/app
WORKDIR /home/app
RUN bash -c 'source ~/.cpprc \
&& task build'
#### Running environment
# use a fresh image as the runner
FROM fedora:38 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"]

View File

@ -1,28 +0,0 @@
schemaVersion: 2.0.0
commandTests:
- name: ninja
command: /root/ninja/ninja
args: ["--version"]
expectedOutput: [".*1.*"]
- name: gcovr
command: gcovr
args: ["--version"]
expectedOutput: [".*gcovr.*"]
- name: ccache
command: ccache
args: ["--version"]
expectedOutput: [".*ccache.*"]
- name: doxygen
command: doxygen
args: ["--version"]
expectedOutput: [".*1.*"]
- name: clang
command: /usr/lib/llvm-15/bin/clang
args: ["--version"]
expectedOutput: [".*clang.*"]
fileExistenceTests:
- name: "vcpkg"
path: "/root/vcpkg"
shouldExist: true

View File

@ -1,26 +0,0 @@
import { readFile, writeFile } from "fs/promises"
async function main() {
const dockerFiles = ["ubuntu", "arch", "fedora", "ubuntu-mingw", "arch-mingw", "fedora-mingw"]
await Promise.all(
dockerFiles.map(async (dockerFile) => {
const dockerFileContent = await readFile(`./dev/docker/setup-cpp-${dockerFile}.dockerfile`, "utf-8")
const builderExample = await readFile(`./dev/docker/${dockerFile}.dockerfile`, "utf-8")
const modifiedDockerFile = dockerFileContent
// load the externally built setup-cpp
.replace(/FROM (.*)/g, `FROM $1\n\nCOPY "./dist/legacy" "/usr/lib/setup-cpp/"`)
.replace("setup-cpp ", "node /usr/lib/setup-cpp/setup-cpp.js ")
// remove the npm install line
.replace(/# install setup-cpp\n\s*npm install -g setup-cpp.*/, "")
// concat the two files
const newDockerFileContent = `${modifiedDockerFile}\n${builderExample}`
// write the new file in dev/docker/__tests__
await writeFile(`./dev/docker/__tests__/${dockerFile}.dockerfile`, newDockerFileContent)
}),
)
}
await main()

View File

@ -1,41 +0,0 @@
#### Base Image
FROM ubuntu:22.04 as setup-cpp-ubuntu-mingw
COPY "./dist/legacy" "/usr/lib/setup-cpp/"
RUN apt-get update -qq && \
# install nodejs
apt-get install -y --no-install-recommends nodejs npm && \
# install the compiler and tools
node /usr/lib/setup-cpp/setup-cpp.js \
--nala true \
--compiler mingw \
--cmake true \
--ninja true \
--task true \
--vcpkg true \
--python true \
--make true \
--cppcheck true \
--gcovr true \
--doxygen true \
--ccache true \
--powershell true && \
# cleanup
nala autoremove -y && \
nala autopurge -y && \
apt-get clean && \
nala clean --lists && \
rm -rf /var/lib/apt/lists/* && \
rm -rf /tmp/*
ENTRYPOINT ["/bin/bash"]
#### Cross Building (example)
FROM setup-cpp-ubuntu-mingw AS builder-mingw
COPY ./dev/cpp_vcpkg_project /home/app
WORKDIR /home/app
RUN bash -c 'source ~/.cpprc \
&& task build_cross_mingw'

View File

@ -1,23 +0,0 @@
schemaVersion: 2.0.0
commandTests:
- 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

View File

@ -1,49 +0,0 @@
#### Base Image
FROM ubuntu:22.04 as setup-cpp-ubuntu
COPY "./dist/legacy" "/usr/lib/setup-cpp/"
RUN apt-get update -qq && \
# install nodejs
apt-get install -y --no-install-recommends nodejs npm && \
# install the compiler and tools
node /usr/lib/setup-cpp/setup-cpp.js \
--nala true \
--compiler llvm \
--cmake true \
--ninja true \
--task true \
--vcpkg true \
--python true \
--make true \
--cppcheck true \
--gcovr true \
--doxygen true \
--ccache true && \
# cleanup
nala autoremove -y && \
nala autopurge -y && \
apt-get clean && \
nala clean --lists && \
rm -rf /var/lib/apt/lists/* && \
rm -rf /tmp/*
ENTRYPOINT ["/bin/bash"]
#### Building (example)
FROM setup-cpp-ubuntu AS builder
COPY ./dev/cpp_vcpkg_project /home/app
WORKDIR /home/app
RUN bash -c 'source ~/.cpprc \
&& task build'
#### Running environment
# use a fresh image as the runner
FROM ubuntu:22.04 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"]

View File

@ -1,41 +0,0 @@
schemaVersion: 2.0.0
commandTests:
- name: ninja
command: /root/ninja/ninja
args: ["--version"]
expectedOutput: [".*1.*"]
- name: gcovr
command: /usr/local/bin/gcovr
args: ["--version"]
expectedOutput: [".*gcovr.*"]
- name: ccache
command: /usr/bin/ccache
args: ["--version"]
expectedOutput: [".*ccache.*"]
- name: doxygen
command: /usr/bin/doxygen
args: ["--version"]
expectedOutput: [".*1.*"]
- name: cppcheck
command: /usr/bin/cppcheck
args: ["--version"]
expectedOutput: [".*Cppcheck.*"]
- name: clang
command: /usr/lib/llvm-15/bin/clang
args: ["--version"]
expectedOutput: [".*clang.*"]
fileExistenceTests:
- name: "vcpkg"
path: "/root/vcpkg"
shouldExist: true
- name: "llvm"
path: "/root/llvm"
shouldExist: true
- name: "ninja"
path: "/root/ninja"
shouldExist: true
- name: "cmake"
path: "/root/cmake"
shouldExist: true

View File

@ -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"]

View File

@ -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"]

View File

@ -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"]

View File

@ -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"]

View File

@ -0,0 +1,12 @@
FROM aminya/setup-cpp-arch:latest AS setup-cpp-arch-gcc
# install llvm
RUN node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.mjs \
--compiler gcc && \
# arch cleanup
pacman -Scc --noconfirm && \
rm -rf /var/cache/pacman/pkg/* && \
rm -rf /tmp/*
SHELL ["/bin/bash", "-l", "-c"]
ENTRYPOINT ["/bin/bash", "-l"]

View File

@ -0,0 +1,12 @@
FROM aminya/setup-cpp-arch:latest AS setup-cpp-arch-llvm
# install llvm
RUN node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.mjs \
--compiler llvm && \
# arch cleanup
pacman -Scc --noconfirm && \
rm -rf /var/cache/pacman/pkg/* && \
rm -rf /tmp/*
SHELL ["/bin/bash", "-l", "-c"]
ENTRYPOINT ["/bin/bash", "-l"]

View File

@ -0,0 +1,13 @@
FROM aminya/setup-cpp-arch:latest AS setup-cpp-arch-mingw
# install mingw/powershell
RUN node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.mjs \
--compiler mingw \
--powershell true && \
# arch cleanup
pacman -Scc --noconfirm && \
rm -rf /var/cache/pacman/pkg/* && \
rm -rf /tmp/*
SHELL ["/bin/bash", "-l", "-c"]
ENTRYPOINT ["/bin/bash", "-l"]

View File

@ -0,0 +1,43 @@
## base image
FROM --platform=$BUILDPLATFORM archlinux:base AS arch-nodejs
# Setup bash environment
RUN echo '[[ -f ~/.bashrc ]] && . ~/.bashrc' > /root/.bash_profile
RUN pacman -Syuu --noconfirm && \
pacman-db-upgrade && \
# install nodejs
pacman -S --noconfirm --needed nodejs npm && \
# cleanup
pacman -Scc --noconfirm && \
rm -rf /var/cache/pacman/pkg/* && \
rm -rf /tmp/*
FROM arch-nodejs AS setup-cpp-arch
COPY "./dist/modern" "/usr/lib/setup-cpp/"
# install the cpp tools
RUN pacman -Syuu --noconfirm && \
pacman-db-upgrade && \
node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.mjs \
--cmake true \
--ninja true \
--task true \
--vcpkg true \
--python true \
--make true \
--cppcheck true \
--gcovr true \
--doxygen true \
--ccache true \
--conan true \
--cmakelang true \
--meson true && \
# arch cleanup
pacman -Scc --noconfirm && \
rm -rf /var/cache/pacman/pkg/* && \
rm -rf /tmp/*
SHELL ["/bin/bash", "-l", "-c"]
ENTRYPOINT ["/bin/bash", "-l"]

View File

@ -0,0 +1,21 @@
import { readFile, writeFile } from "fs/promises"
async function main() {
const names = ["ubuntu-llvm", "arch-llvm", "fedora-llvm", "ubuntu-mingw", "arch-mingw", "fedora-mingw"]
await Promise.all(
names.map(async (name) => {
const dockerFileContent = await readFile(`./dev/docker/setup-cpp/setup-cpp-${name}.dockerfile`, "utf-8")
const modifiedDockerFile = dockerFileContent
// load the externally built 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.mjs ")
// remove the npm install line
.replace(/# install setup-cpp\n\s*npm install -g setup-cpp.*\n/, "")
// write the new file in dev/docker/ci
await writeFile(`./dev/docker/ci/${name}.dockerfile`, modifiedDockerFile)
}),
)
}
await main()

View File

@ -0,0 +1,11 @@
FROM aminya/setup-cpp-fedora:latest AS setup-cpp-fedora-gcc
# install gcc
RUN node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.mjs \
--compiler gcc && \
# cleanup
dnf clean all && \
rm -rf /tmp/*
SHELL ["/bin/bash", "-l", "-c"]
ENTRYPOINT ["/bin/bash", "-l"]

View File

@ -0,0 +1,11 @@
FROM aminya/setup-cpp-fedora:latest AS setup-cpp-fedora-llvm
# install llvm
RUN node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.mjs \
--compiler llvm && \
# cleanup
dnf clean all && \
rm -rf /tmp/*
SHELL ["/bin/bash", "-l", "-c"]
ENTRYPOINT ["/bin/bash", "-l"]

View File

@ -0,0 +1,12 @@
FROM aminya/setup-cpp-fedora:latest AS setup-cpp-fedora-mingw
# install mingw
RUN node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.mjs \
--compiler mingw \
--powershell true && \
# cleanup
dnf clean all && \
rm -rf /tmp/*
SHELL ["/bin/bash", "-l", "-c"]
ENTRYPOINT ["/bin/bash", "-l"]

View File

@ -0,0 +1,34 @@
## base image
FROM --platform=$BUILDPLATFORM fedora:44 AS fedora-nodejs
# install nodejs
RUN dnf -y install nodejs npm && \
# cleanup
dnf clean all && \
rm -rf /tmp/*
FROM fedora-nodejs AS setup-cpp-fedora
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 \
--vcpkg true \
--python true \
--make true \
--cppcheck true \
--gcovr true \
--doxygen true \
--ccache true \
--conan true \
--cmakelang true \
--meson true && \
# cleanup
dnf clean all && \
rm -rf /tmp/*
SHELL ["/bin/bash", "-l", "-c"]
ENTRYPOINT ["/bin/bash", "-l"]

View File

@ -0,0 +1,73 @@
schemaVersion: 2.0.0
commandTests:
- name: cmake
command: bash
args: ["-l", "-c", "cmake --version"]
expectedOutput: [".*3.*"]
- name: ninja
command: bash
args: ["-l", "-c", "ninja --version"]
expectedOutput: [".*1.*"]
- name: task
command: bash
args: ["-l", "-c", "task --version"]
expectedOutput: [".*Task version:\\s*v3.*"]
- name: python
command: bash
args: ["-l", "-c", "python --version"]
expectedOutput: [".*Python.*"]
- name: python3
command: bash
args: ["-l", "-c", "python3 --version"]
expectedOutput: [".*Python.*"]
- name: make
command: bash
args: ["-l", "-c", "make --version"]
expectedOutput: [".*GNU Make.*"]
- name: cppcheck
command: bash
args: ["-l", "-c", "cppcheck --version"]
expectedOutput: [".*"]
- name: gcovr
command: bash
args: ["-l", "-c", "gcovr --version"]
expectedOutput: [".*gcovr.*"]
- name: doxygen
command: bash
args: ["-l", "-c", "doxygen --version"]
expectedOutput: [".*1.*"]
- name: ccache
command: bash
args: ["-l", "-c", "ccache --version"]
expectedOutput: [".*"]
- name: conan
command: bash
args: ["-l", "-c", "conan --version"]
expectedOutput: [".*"]
- name: meson
command: bash
args: ["-l", "-c", "meson --version"]
expectedOutput: [".*"]
- name: cmake-format
command: bash
args: ["-l", "-c", "cmake-format --version"]
expectedOutput: [".*"]
- name: cmake-lint
command: bash
args: ["-l", "-c", "cmake-lint --version"]
expectedOutput: [".*"]
fileExistenceTests:
- name: "vcpkg"
path: "/root/vcpkg"
shouldExist: true
- name: "ninja"
path: "/root/ninja"
shouldExist: true
- name: "cmake"
path: "/root/cmake"
shouldExist: true
- name: "task"
path: "/root/task"
shouldExist: true

View File

@ -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\\+\\+.*"]

View File

@ -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",
})
}

View File

@ -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.*"]

View File

@ -2,22 +2,19 @@ schemaVersion: 2.0.0
commandTests:
- name: mingw c compiler
command: x86_64-w64-mingw32-gcc
args: ["--version"]
command: bash
args: ["-l", "-c", "x86_64-w64-mingw32-gcc --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.*"]
command: bash
args: ["-l", "-c", "x86_64-w64-mingw32-g++ --version"]
expectedOutput: [".*x86_64-w64-mingw32-g\\+\\+.*"]
- name: powershell
command: pwsh
args: ["-Version"]
command: bash
args: ["-l", "-c", "pwsh --version"]
expectedOutput: [".*PowerShell.*"]
fileExistenceTests:
- name: "vcpkg"
path: "/root/vcpkg"
shouldExist: true
- name: "cross root"
path: "/usr/x86_64-w64-mingw32"
shouldExist: true

View File

@ -0,0 +1,13 @@
FROM aminya/setup-cpp-ubuntu:latest AS setup-cpp-ubuntu-gcc
# install gcc
RUN node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.mjs \
--compiler gcc && \
# cleanup
apt-get clean autoclean && \
apt-get autoremove -y && \
rm -rf /var/lib/apt/lists/* && \
rm -rf /tmp/*
SHELL ["/bin/bash", "-l", "-c"]
ENTRYPOINT ["/bin/bash", "-l"]

View File

@ -0,0 +1,13 @@
FROM aminya/setup-cpp-ubuntu:latest AS setup-cpp-ubuntu-llvm
# install llvm
RUN node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.mjs \
--compiler llvm && \
# cleanup
apt-get clean autoclean && \
apt-get autoremove -y && \
rm -rf /var/lib/apt/lists/* && \
rm -rf /tmp/*
SHELL ["/bin/bash", "-l", "-c"]
ENTRYPOINT ["/bin/bash", "-l"]

View File

@ -0,0 +1,14 @@
FROM aminya/setup-cpp-ubuntu:latest AS setup-cpp-ubuntu-mingw
# install mingw/powershell
RUN node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.mjs \
--compiler mingw \
--powershell true && \
# cleanup
apt-get clean autoclean && \
apt-get autoremove -y && \
rm -rf /var/lib/apt/lists/* && \
rm -rf /tmp/*
SHELL ["/bin/bash", "-l", "-c"]
ENTRYPOINT ["/bin/bash", "-l"]

View File

@ -0,0 +1,47 @@
ARG BASE_VERSION=22.04
#### Base Image with Node.js
FROM --platform=$BUILDPLATFORM ubuntu:${BASE_VERSION} AS ubuntu-nodejs
# install latest nodejs
RUN apt-get update -qq && \
apt-get install -y --no-install-recommends curl gnupg ca-certificates && \
mkdir -p /etc/apt/keyrings && \
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_22.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list && \
apt-get update -qq && \
apt-get install -y --no-install-recommends nodejs && \
# cleanup
apt-get clean && \
rm -rf /var/lib/apt/lists/* && \
rm -rf /tmp/*
#### Base Image with Tools
FROM ubuntu-nodejs AS setup-cpp-ubuntu
COPY "./dist/modern" "/usr/lib/setup-cpp/"
# install the cpp tools
RUN node --enable-source-maps /usr/lib/setup-cpp/setup-cpp.mjs \
--apt-fast true \
--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
apt-get clean autoclean && \
apt-get autoremove -y && \
rm -rf /var/lib/apt/lists/* && \
rm -rf /tmp/*
SHELL ["/bin/bash", "-l", "-c"]
ENTRYPOINT ["/bin/bash", "-l"]

View File

@ -1,14 +1,13 @@
#### Building (example)
FROM setup-cpp-fedora AS builder
FROM aminya/setup-cpp-alpine-gcc AS builder
COPY ./dev/cpp_vcpkg_project /home/app
WORKDIR /home/app
RUN bash -c 'source ~/.cpprc \
&& task build'
RUN task build
#### Running environment
# use a fresh image as the runner
FROM fedora:38 as 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/

View File

@ -1,14 +1,13 @@
#### Building (example)
FROM setup-cpp-ubuntu AS builder
FROM aminya/setup-cpp-alpine-llvm AS builder
COPY ./dev/cpp_vcpkg_project /home/app
WORKDIR /home/app
RUN bash -c 'source ~/.cpprc \
&& task build'
RUN task build
#### Running environment
# use a fresh image as the runner
FROM ubuntu:22.04 as 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/

View File

@ -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'

View File

@ -1,14 +1,13 @@
#### Building (example)
FROM setup-cpp-arch AS builder
FROM aminya/setup-cpp-arch-gcc AS builder
COPY ./dev/cpp_vcpkg_project /home/app
WORKDIR /home/app
RUN bash -c 'source ~/.cpprc \
&& task build'
RUN task build
#### Running environment
# use a fresh image as the runner
FROM archlinux:base as runner
FROM archlinux:base AS runner
# copy the built binaries and their runtime dependencies
COPY --from=builder /home/app/build/my_exe/Release/ /home/app/

View File

@ -0,0 +1,15 @@
#### Building (example)
FROM aminya/setup-cpp-arch-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 archlinux:base 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"]

View File

@ -1,5 +1,5 @@
#### Cross Building (example)
FROM setup-cpp-arch-mingw AS builder-mingw
FROM aminya/setup-cpp-arch-mingw AS builder-mingw
COPY ./dev/cpp_vcpkg_project /home/app
WORKDIR /home/app

View File

@ -0,0 +1,15 @@
#### Building (example)
FROM aminya/setup-cpp-fedora-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 fedora:40 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"]

View File

@ -0,0 +1,15 @@
#### Building (example)
FROM aminya/setup-cpp-fedora-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 fedora:40 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"]

View File

@ -1,5 +1,5 @@
#### Cross Building (example)
FROM setup-cpp-fedora-mingw AS builder-mingw
FROM aminya/setup-cpp-fedora-mingw AS builder-mingw
COPY ./dev/cpp_vcpkg_project /home/app
WORKDIR /home/app

View File

@ -0,0 +1,15 @@
#### Building (example)
FROM aminya/setup-cpp-ubuntu-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 ubuntu:22.04 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"]

View File

@ -0,0 +1,15 @@
#### Building (example)
FROM aminya/setup-cpp-ubuntu-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 ubuntu:22.04 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"]

View File

@ -1,5 +1,5 @@
#### Cross Building (example)
FROM setup-cpp-ubuntu-mingw AS builder-mingw
FROM aminya/setup-cpp-ubuntu-mingw AS builder-mingw
COPY ./dev/cpp_vcpkg_project /home/app
WORKDIR /home/app

View File

@ -1,32 +0,0 @@
#### Base Image
FROM ubuntu:22.04 as setup-cpp-ubuntu-mingw
RUN apt-get update -qq && \
# install nodejs
apt-get install -y --no-install-recommends nodejs npm && \
# install setup-cpp
npm install -g setup-cpp@v0.35.2 && \
# install the compiler and tools
setup-cpp \
--nala true \
--compiler mingw \
--cmake true \
--ninja true \
--task true \
--vcpkg true \
--python true \
--make true \
--cppcheck true \
--gcovr true \
--doxygen true \
--ccache true \
--powershell true && \
# cleanup
nala autoremove -y && \
nala autopurge -y && \
apt-get clean && \
nala clean --lists && \
rm -rf /var/lib/apt/lists/* && \
rm -rf /tmp/*
ENTRYPOINT ["/bin/bash"]

View File

@ -1,31 +0,0 @@
#### Base Image
FROM ubuntu:22.04 as setup-cpp-ubuntu
RUN apt-get update -qq && \
# install nodejs
apt-get install -y --no-install-recommends nodejs npm && \
# install setup-cpp
npm install -g setup-cpp@v0.35.2 && \
# install the compiler and tools
setup-cpp \
--nala true \
--compiler llvm \
--cmake true \
--ninja true \
--task true \
--vcpkg true \
--python true \
--make true \
--cppcheck true \
--gcovr true \
--doxygen true \
--ccache true && \
# cleanup
nala autoremove -y && \
nala autopurge -y && \
apt-get clean && \
nala clean --lists && \
rm -rf /var/lib/apt/lists/* && \
rm -rf /tmp/*
ENTRYPOINT ["/bin/bash"]

View File

@ -1,13 +1,14 @@
## base image
FROM archlinux:base as setup-cpp-arch
FROM archlinux:base AS setup-cpp-arch
RUN pacman -Syuu --noconfirm && \
pacman-db-upgrade && \
# install nodejs
# install nodejs
pacman -S --noconfirm --needed nodejs npm && \
# install setup-cpp
npm install -g setup-cpp@v0.35.2 && \
# install the compiler and tools
# install setup-cpp
npm install -g setup-cpp@v1.1.1 && \
# install the compiler and tools
NODE_OPTIONS="--enable-source-maps" \
setup-cpp \
--compiler llvm \
--cmake true \
@ -20,9 +21,10 @@ RUN pacman -Syuu --noconfirm && \
--gcovr true \
--doxygen true \
--ccache true && \
# arch cleanup
# arch cleanup
pacman -Scc --noconfirm && \
rm -rf /var/cache/pacman/pkg/* && \
rm -rf /tmp/*
ENTRYPOINT ["/bin/bash"]
SHELL ["/bin/bash", "-l", "-c"]
ENTRYPOINT ["/bin/bash", "-l"]

View File

@ -1,13 +1,14 @@
## base image
FROM archlinux:base as setup-cpp-arch-mingw
FROM archlinux:base AS setup-cpp-arch-mingw
RUN pacman -Syuu --noconfirm && \
pacman-db-upgrade && \
# install nodejs
# install nodejs
pacman -S --noconfirm --needed nodejs npm && \
# install setup-cpp
npm install -g setup-cpp@v0.35.2 && \
# install the compiler and tools
# install setup-cpp
npm install -g setup-cpp@v1.1.1 && \
# install the compiler and tools
NODE_OPTIONS="--enable-source-maps" \
setup-cpp \
--compiler mingw \
--cmake true \
@ -20,9 +21,10 @@ RUN pacman -Syuu --noconfirm && \
--gcovr true \
--doxygen true \
--ccache true && \
# arch cleanup
# arch cleanup
pacman -Scc --noconfirm && \
rm -rf /var/cache/pacman/pkg/* && \
rm -rf /tmp/*
ENTRYPOINT ["/bin/bash"]
SHELL ["/bin/bash", "-l", "-c"]
ENTRYPOINT ["/bin/bash", "-l"]

View File

@ -1,11 +1,12 @@
## base image
FROM fedora:38 as setup-cpp-fedora
FROM fedora:44 AS setup-cpp-fedora
# install nodejs
RUN dnf -y install nodejs npm && \
# install setup-cpp
npm install -g setup-cpp@v0.35.2 && \
# install the compiler and tools
# install setup-cpp
npm install -g setup-cpp@v1.1.1 && \
# install the compiler and tools
NODE_OPTIONS="--enable-source-maps" \
setup-cpp \
--compiler llvm \
--cmake true \
@ -18,8 +19,9 @@ RUN dnf -y install nodejs npm && \
--gcovr true \
--doxygen true \
--ccache true && \
# cleanup
# cleanup
dnf clean all && \
rm -rf /tmp/*
ENTRYPOINT ["/bin/bash"]
SHELL ["/bin/bash", "-l", "-c"]
ENTRYPOINT ["/bin/bash", "-l"]

View File

@ -1,11 +1,12 @@
## base image
FROM fedora:38 as setup-cpp-fedora-mingw
FROM fedora:44 AS setup-cpp-fedora-mingw
# install nodejs
RUN dnf -y install nodejs npm && \
# install setup-cpp
npm install -g setup-cpp@v0.35.2 && \
# install the compiler and tools
# install setup-cpp
npm install -g setup-cpp@v1.1.1 && \
# install the compiler and tools
NODE_OPTIONS="--enable-source-maps" \
setup-cpp \
--compiler mingw \
--cmake true \
@ -19,8 +20,9 @@ RUN dnf -y install nodejs npm && \
--doxygen true \
--ccache true \
--powershell true && \
# cleanup
# cleanup
dnf clean all && \
rm -rf /tmp/*
ENTRYPOINT ["/bin/bash"]
SHELL ["/bin/bash", "-l", "-c"]
ENTRYPOINT ["/bin/bash", "-l"]

View File

@ -0,0 +1,40 @@
#### Base Image
FROM ubuntu:20.04 AS setup-cpp-ubuntu-mingw
RUN apt-get update -qq && \
# install latest nodejs on ubuntu 20.04
apt-get update -qq && \
apt-get install -y --no-install-recommends curl gnupg ca-certificates && \
mkdir -p /etc/apt/keyrings && \
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_22.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list && \
apt-get update -qq && \
apt-get install -y --no-install-recommends nodejs && \
# install setup-cpp
npm install -g setup-cpp@v1.1.1 && \
# install the compiler and tools
NODE_OPTIONS="--enable-source-maps" \
setup-cpp \
--nala true \
--compiler mingw \
--cmake true \
--ninja true \
--task true \
--vcpkg true \
--python true \
--make true \
--cppcheck true \
--gcovr true \
--doxygen true \
--ccache true \
--powershell true && \
# cleanup
nala autoremove -y && \
nala autopurge -y && \
apt-get clean && \
nala clean --lists && \
rm -rf /var/lib/apt/lists/* && \
rm -rf /tmp/*
SHELL ["/bin/bash", "-l", "-c"]
ENTRYPOINT ["/bin/bash", "-l"]

View File

@ -0,0 +1,38 @@
#### Base Image
FROM ubuntu:22.04 AS setup-cpp-ubuntu
# install latest nodejs
RUN apt-get update -qq && \
apt-get install -y --no-install-recommends curl gnupg ca-certificates && \
mkdir -p /etc/apt/keyrings && \
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_22.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list && \
apt-get update -qq && \
apt-get install -y --no-install-recommends nodejs && \
# install setup-cpp
npm install -g setup-cpp@v1.1.1 && \
# install the compiler and tools
NODE_OPTIONS="--enable-source-maps" \
setup-cpp \
--nala true \
--compiler llvm \
--cmake true \
--ninja true \
--task true \
--vcpkg true \
--python true \
--make true \
--cppcheck true \
--gcovr true \
--doxygen true \
--ccache true && \
# cleanup
nala autoremove -y && \
nala autopurge -y && \
apt-get clean && \
nala clean --lists && \
rm -rf /var/lib/apt/lists/* && \
rm -rf /tmp/*
SHELL ["/bin/bash", "-l", "-c"]
ENTRYPOINT ["/bin/bash", "-l"]

View File

@ -0,0 +1,39 @@
#### Base Image
FROM ubuntu:22.04 AS setup-cpp-ubuntu-mingw
# install latest nodejs
RUN apt-get update -qq && \
apt-get install -y --no-install-recommends curl gnupg ca-certificates && \
mkdir -p /etc/apt/keyrings && \
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_22.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list && \
apt-get update -qq && \
apt-get install -y --no-install-recommends nodejs && \
# install setup-cpp
npm install -g setup-cpp@v1.1.1 && \
# install the compiler and tools
NODE_OPTIONS="--enable-source-maps" \
setup-cpp \
--nala true \
--compiler mingw \
--cmake true \
--ninja true \
--task true \
--vcpkg true \
--python true \
--make true \
--cppcheck true \
--gcovr true \
--doxygen true \
--ccache true \
--powershell true && \
# cleanup
nala autoremove -y && \
nala autopurge -y && \
apt-get clean && \
nala clean --lists && \
rm -rf /var/lib/apt/lists/* && \
rm -rf /tmp/*
SHELL ["/bin/bash", "-l", "-c"]
ENTRYPOINT ["/bin/bash", "-l"]

View File

@ -1,17 +0,0 @@
/* eslint-disable import/no-extraneous-dependencies */
const { minify } = require("terser")
const { readFileSync, writeFileSync } = require("fs")
const { join, dirname } = require("path")
async function main() {
console.log("Disabling debug messages inside @actions/core")
const file = join(dirname(__dirname), "dist", "setup-cpp.js")
const { code, map } = await minify(readFileSync(file, "utf8"), { sourceMap: true, ...require("../.terserrc.js") })
writeFileSync(file, code)
writeFileSync(`${file}.map`, map)
}
main().catch(function (err) {
throw err
})

View File

@ -15,29 +15,18 @@ function getPlatformName() {
}
}
function main() {
let exes
if (process.platform === "win32") {
exes = [".exe"]
} else if (process.platform === "darwin") {
exes = [""]
} else {
exes = [""]
}
async function main() {
const exe = process.platform === "win32" ? ".exe" : ""
return Promise.all(
exes.map((exe) =>
execaNode("./node_modules/caxa/build/index.mjs", [
"--input",
"./dist/modern",
"--output",
`./exe/setup-cpp-${process.arch}-${getPlatformName()}${exe}`,
"--",
`{{caxa}}/node_modules/.bin/node${exe}`,
`{{caxa}}/setup-cpp.js`,
]),
),
)
await execaNode("./node_modules/caxa/build/index.mjs", [
"--input",
"./dist/modern",
"--output",
`./exe/setup-cpp-${process.arch}-${getPlatformName()}${exe}`,
"--",
`{{caxa}}/node_modules/.bin/node${exe}`,
"{{caxa}}/setup-cpp.mjs",
])
}
main().catch((err) => {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,17 +0,0 @@
{
"problemMatcher": [
{
"owner": "gcc",
"pattern": [
{
"regexp": "^(.*?):(\\d+):(\\d*):?\\s+(?:fatal\\s+)?(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
]
}
]
}

View File

@ -1,17 +0,0 @@
{
"problemMatcher": [
{
"owner": "llvm",
"pattern": [
{
"regexp": "^(.*?):(\\d+):(\\d*):?\\s+(?:fatal\\s+)?(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
]
}
]
}

View File

@ -1,18 +0,0 @@
{
"problemMatcher": [
{
"owner": "msvc",
"pattern": [
{
"regexp": "^(?:\\s+\\d+>)?(\\S.*)\\((\\d+),?(\\d+)?(?:,\\d+,\\d+)?\\)\\s*:\\s+(error|warning|info)\\s+(\\w{1,2}\\d+)\\s*:\\s*(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"code": 5,
"message": 6
}
]
}
]
}

View File

@ -1,18 +0,0 @@
{
"problemMatcher": [
{
"owner": "python",
"pattern": [
{
"regexp": "^\\s*File\\s\\\"(.*)\\\",\\sline\\s(\\d+),\\sin\\s(.*)$",
"file": 1,
"line": 2
},
{
"regexp": "^\\s*raise\\s(.*)\\(\\'(.*)\\'\\)$",
"message": 2
}
]
}
]
}

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

7
dist/legacy/assets/index-DsNLw0ut.js vendored Normal file

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

View File

@ -1,17 +1 @@
{
"problemMatcher": [
{
"owner": "gcc",
"pattern": [
{
"regexp": "^(.*?):(\\d+):(\\d*):?\\s+(?:fatal\\s+)?(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
]
}
]
}
{"problemMatcher":[{"owner":"gcc","pattern":[{"regexp":"^(.*?):(\\d+):(\\d*):?\\s+(?:fatal\\s+)?(warning|error):\\s+(.*)$","file":1,"line":2,"column":3,"severity":4,"message":5}]}]}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
{"v1.2.0":["infer-osx-x86_64-v1.2.0.tar.xz","infer-osx-arm64-v1.2.0.tar.xz","infer-linux-x86_64-v1.2.0.tar.xz"],"v1.1.0":["infer-linux64-v1.1.0.tar.xz"],"v1.0.0":["infer-osx-v1.0.0.tar.xz","infer-linux64-v1.0.0.tar.xz"],"v0.17.0":["infer-osx-v0.17.0.tar.xz","infer-linux64-v0.17.0.tar.xz"],"v0.16.0":["infer-osx-v0.16.0.tar.xz","infer-linux64-v0.16.0.tar.xz"],"v0.15.0":["infer-osx-v0.15.0.tar.xz","infer-linux64-v0.15.0.tar.xz"],"v0.14.0":["infer-osx-v0.14.0.tar.xz","infer-linux64-v0.14.0.tar.xz"],"v0.13.1":["infer-osx-v0.13.1.tar.xz","infer-linux64-v0.13.1.tar.xz"],"v0.13.0":["infer-osx-v0.13.0.tar.xz","infer-linux64-v0.13.0.tar.xz"],"v0.12.1":["infer-osx-v0.12.1.tar.xz","infer-linux64-v0.12.1.tar.xz"],"v0.12.0":["infer-osx-v0.12.0.tar.xz","infer-linux64-v0.12.0.tar.xz"],"v0.11.0":["infer-osx-v0.11.0.tar.xz","infer-linux64-v0.11.0.tar.xz"],"v0.10.0":["infer-osx-v0.10.0.tar.xz","infer-linux64-v0.10.0.tar.xz"],"v0.9.5":["infer-osx-v0.9.5.tar.xz","infer-linux64-v0.9.5.tar.xz"],"v0.9.4.1":["infer-osx-v0.9.4.1.tar.xz","infer-linux64-v0.9.4.1.tar.xz"],"v0.9.4":["infer-osx-v0.9.4.tar.xz","infer-linux64-v0.9.4.tar.xz"],"v0.9.3":["infer-osx-v0.9.3.tar.xz","infer-linux64-v0.9.3.tar.xz"],"v0.9.2":["infer-osx-v0.9.2.tar.xz","infer-linux64-v0.9.2.tar.xz"],"v0.9.1":["infer-osx-v0.9.1.tar.xz","infer-linux64-v0.9.1.tar.xz"],"v0.9.0":["infer-osx-v0.9.0.tar.xz","infer-linux64-v0.9.0.tar.xz"],"v0.8.1":["infer-osx-v0.8.1.tar.xz","infer-linux64-v0.8.1.tar.xz"],"v0.8.0":["infer-osx-v0.8.0.tar.xz","infer-linux64-v0.8.0.tar.xz"],"v0.7.0":["infer-osx-v0.7.0.tar.xz","infer-linux64-v0.7.0.tar.xz"],"v0.6.0":["infer-osx-v0.6.0.tar.xz","infer-linux64-v0.6.0.tar.xz"],"v0.5.0":["infer-osx-v0.5.0.tar.xz","infer-linux64-v0.5.0.tar.xz"],"v0.4.0":["infer-osx-v0.4.0.tar.xz","infer-linux64-v0.4.0.tar.xz"],"v0.3.0":["infer-osx-v0.3.0.tar.xz","infer-linux64-v0.3.0.tar.xz"]}

File diff suppressed because one or more lines are too long

View File

@ -1,17 +1 @@
{
"problemMatcher": [
{
"owner": "llvm",
"pattern": [
{
"regexp": "^(.*?):(\\d+):(\\d*):?\\s+(?:fatal\\s+)?(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
]
}
]
}
{"problemMatcher":[{"owner":"llvm","pattern":[{"regexp":"^(.*?):(\\d+):(\\d*):?\\s+(?:fatal\\s+)?(warning|error):\\s+(.*)$","file":1,"line":2,"column":3,"severity":4,"message":5}]}]}

1
dist/legacy/llvm_org_releases.json vendored Normal file

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