Merge pull request #8 from aminya/msvc

This commit is contained in:
Amin Yahyaabadi 2021-12-06 10:03:01 -06:00 committed by GitHub
commit 3d8864e9d9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
21 changed files with 509 additions and 196 deletions

View File

@ -53,6 +53,9 @@ jobs:
run: |
pnpm install
# - name: Setup SSH debugging session
# uses: mxschmitt/action-tmate@v3
- name: Test
run: |
pnpm run test

8
.gitmodules vendored
View File

@ -1,8 +0,0 @@
[submodule "src/python/setup-python"]
path = src/python/setup-python
url = https://github.com/actions/setup-python
branch = main
[submodule "src/msvc/msvc-dev-cmd"]
path = src/msvc/msvc-dev-cmd
url = https://github.com/ilammy/msvc-dev-cmd
branch = lib

View File

@ -4,16 +4,17 @@ setup-cpp reused some code from the following projects:
- [install-cmake](https://github.com/Symbitic/install-cmake/blob/master/LICENSE.md): MIT
- [get-cmake](https://github.com/lukka/get-cmake/blob/main/LICENSE.txt): MIT
- [gha-setup-ninja](https://github.com/seanmiddleditch/gha-setup-ninja): MIT
- [setup-python](https://github.com/actions/setup-python): MIT
This package also uses the depedencies listed in package.json. You can get the list of their licenses using the following command:
```
npm install -g license-checker
license-checker --summary --production
license-checker --summary --production --excludePackages "setup-python@2.2.2"
```
```
├─ MIT: 8
├─ MIT: 9
├─ ISC: 2
└─ Apache-2.0: 1
```
setup-python@2.2.2 is MIT license.

View File

@ -15,10 +15,12 @@ The package can be used locally or from CI services like GitHub Actions. Stay tu
`setup-cpp` can install all of these tools:
- llvm
- gcc
- cmake
- ninja
- llvm
- gcc
- msvc
- vcvarsall
- vcpkg
- meson
- conan
@ -182,7 +184,3 @@ After build, run the following to start an interactive shell in your container
```ps1
docker run -it setup_cpp
```
### Incomplete
- `msvc`. It is implemented, but it has bugs. See [this issue](https://github.com/aminya/setup-cpp/issues/1)

View File

@ -18,6 +18,9 @@ inputs:
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

2
dist/setup_cpp.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -19,7 +19,7 @@
"format": "prettier --write .",
"lint": "eslint . --fix",
"pack.exe": "shx rm -rf ./dist/tsconfig.tsbuildinfo && node ./building/scripts/pack-exe.js",
"prepare": "git submodule update --init --recursive && npm run build",
"prepare": "npm run build",
"start.docker": "docker run -t setup_cpp .",
"test": "run-p test.format test.lint test.tsc test.unit",
"test.format": "prettier . --check",
@ -36,7 +36,9 @@
"execa": "^5.1.1",
"hasha": "^5.2.2",
"mri": "^1.2.0",
"msvc-dev-cmd": " https://github.com/aminya/msvc-dev-cmd",
"semver": "^7.3.5",
"setup-python": "https://github.com/actions/setup-python",
"untildify": "^4.0.0",
"which": "^2.0.2"
},

View File

@ -3,10 +3,7 @@ lockfileVersion: 5.3
overrides:
semver: 7.3.5
importers:
.:
specifiers:
specifiers:
'@actions/core': ^1.6.0
'@actions/exec': ^1.1.0
'@actions/io': ^1.1.1
@ -25,17 +22,20 @@ importers:
hasha: ^5.2.2
jest: ^27.4.2
mri: ^1.2.0
msvc-dev-cmd: ' https://github.com/aminya/msvc-dev-cmd'
npm-run-all2: ^5.0.2
parcel: ^2.0.1
prettier-config-atomic: ^3.0.1
semver: 7.3.5
setup-python: https://github.com/actions/setup-python
shx: 0.3.3
terser-config-atomic: ^0.1.1
ts-jest: ^27.0.7
typescript: ^4.5.2
untildify: ^4.0.0
which: ^2.0.2
dependencies:
dependencies:
'@actions/core': 1.6.0
'@actions/exec': 1.1.0
'@actions/io': 1.1.1
@ -43,10 +43,13 @@ importers:
execa: 5.1.1
hasha: 5.2.2
mri: 1.2.0
msvc-dev-cmd: github.com/aminya/msvc-dev-cmd/9f672c1c3d12ea8156d8d0e53543791491291aec
semver: 7.3.5
setup-python: github.com/actions/setup-python/f38219332975fe8f9c04cca981d674bf22aea1d3
untildify: 4.0.0
which: 2.0.2
devDependencies:
devDependencies:
'@types/cross-spawn': 6.0.2
'@types/jest': 27.0.3
'@types/mri': 1.1.1
@ -68,6 +71,20 @@ importers:
packages:
/@actions/cache/1.0.8:
resolution: {integrity: sha512-GWNNB67w93HGJRQXlsV56YqrdAuDoP3esK/mo5mzU8WoDCVjtQgJGsTdkYUX7brswtT7xnI30bWNo1WLKQ8FZQ==}
dependencies:
'@actions/core': 1.6.0
'@actions/exec': 1.1.0
'@actions/glob': 0.1.2
'@actions/http-client': 1.0.11
'@actions/io': 1.1.1
'@azure/ms-rest-js': 2.6.0
'@azure/storage-blob': 12.8.0
semver: 7.3.5
uuid: 3.4.0
dev: false
/@actions/core/1.5.0:
resolution: {integrity: sha512-eDOLH1Nq9zh+PJlYLqEMkS/jLQxhksPNmUGNBHfa4G+tQmnIhzpctxmchETtVGyBOvXgOVVpYuE40+eS4cUnwQ==}
dev: false
@ -84,6 +101,20 @@ packages:
'@actions/io': 1.1.1
dev: false
/@actions/glob/0.1.2:
resolution: {integrity: sha512-SclLR7Ia5sEqjkJTPs7Sd86maMDw43p769YxBOxvPvEWuPEhpAnBsQfENOpXjFYMmhCqd127bmf+YdvJqVqR4A==}
dependencies:
'@actions/core': 1.6.0
minimatch: 3.0.4
dev: false
/@actions/glob/0.2.0:
resolution: {integrity: sha512-mqE2a7I66kxcvsdwxs/filQwZsq25IfktMaviGfDB51v6Q3bvxnV7mFsZnvYtLhqGZbPxwBnH8AD3UYaOWb//w==}
dependencies:
'@actions/core': 1.6.0
minimatch: 3.0.4
dev: false
/@actions/http-client/1.0.11:
resolution: {integrity: sha512-VRYHGQV1rqnROJqdMvGUbY/Kn8vriQe/F9HR2AlYHzmKuM/p3kjNuXhmdBfcVgsvRWTz5C5XW5xvndZrVBuAYg==}
dependencies:
@ -110,6 +141,107 @@ packages:
engines: {node: '>=6'}
dev: true
/@azure/abort-controller/1.0.4:
resolution: {integrity: sha512-lNUmDRVGpanCsiUN3NWxFTdwmdFI53xwhkTFfHDGTYk46ca7Ind3nanJc+U6Zj9Tv+9nTCWRBscWEW1DyKOpTw==}
engines: {node: '>=8.0.0'}
dependencies:
tslib: 2.3.1
dev: false
/@azure/core-asynciterator-polyfill/1.0.0:
resolution: {integrity: sha512-kmv8CGrPfN9SwMwrkiBK9VTQYxdFQEGe0BmQk+M8io56P9KNzpAxcWE/1fxJj7uouwN4kXF0BHW8DNlgx+wtCg==}
dev: false
/@azure/core-auth/1.3.2:
resolution: {integrity: sha512-7CU6DmCHIZp5ZPiZ9r3J17lTKMmYsm/zGvNkjArQwPkrLlZ1TZ+EUYfGgh2X31OLMVAQCTJZW4cXHJi02EbJnA==}
engines: {node: '>=12.0.0'}
dependencies:
'@azure/abort-controller': 1.0.4
tslib: 2.3.1
dev: false
/@azure/core-http/2.2.2:
resolution: {integrity: sha512-V1DdoO9V/sFimKpdWoNBgsE+QUjQgpXYnxrTdUp5RyhsTJjvEVn/HKmTQXIHuLUUo6IyIWj+B+Dg4VaXse9dIA==}
engines: {node: '>=12.0.0'}
dependencies:
'@azure/abort-controller': 1.0.4
'@azure/core-asynciterator-polyfill': 1.0.0
'@azure/core-auth': 1.3.2
'@azure/core-tracing': 1.0.0-preview.13
'@azure/logger': 1.0.3
'@types/node-fetch': 2.5.12
'@types/tunnel': 0.0.3
form-data: 4.0.0
node-fetch: 2.6.6
process: 0.11.10
tough-cookie: 4.0.0
tslib: 2.3.1
tunnel: 0.0.6
uuid: 8.3.2
xml2js: 0.4.23
dev: false
/@azure/core-lro/2.2.2:
resolution: {integrity: sha512-pn30b+HyJHg0+G4ZRgpL3BJa6LQnKdKl1X4JDMpuVsX+kPxs2FNoweNqD3Li199ROroIvFbi6pE29y0J2vvyIg==}
engines: {node: '>=12.0.0'}
dependencies:
'@azure/abort-controller': 1.0.4
'@azure/core-tracing': 1.0.0-preview.13
'@azure/logger': 1.0.3
tslib: 2.3.1
dev: false
/@azure/core-paging/1.2.0:
resolution: {integrity: sha512-ZX1bCjm/MjKPCN6kQD/9GJErYSoKA8YWp6YWoo5EIzcTWlSBLXu3gNaBTUl8usGl+UShiKo7b4Gdy1NSTIlpZg==}
engines: {node: '>=12.0.0'}
dependencies:
'@azure/core-asynciterator-polyfill': 1.0.0
tslib: 2.3.1
dev: false
/@azure/core-tracing/1.0.0-preview.13:
resolution: {integrity: sha512-KxDlhXyMlh2Jhj2ykX6vNEU0Vou4nHr025KoSEiz7cS3BNiHNaZcdECk/DmLkEB0as5T7b/TpRcehJ5yV6NeXQ==}
engines: {node: '>=12.0.0'}
dependencies:
'@opentelemetry/api': 1.0.3
tslib: 2.3.1
dev: false
/@azure/logger/1.0.3:
resolution: {integrity: sha512-aK4s3Xxjrx3daZr3VylxejK3vG5ExXck5WOHDJ8in/k9AqlfIyFMMT1uG7u8mNjX+QRILTIn0/Xgschfh/dQ9g==}
engines: {node: '>=12.0.0'}
dependencies:
tslib: 2.3.1
dev: false
/@azure/ms-rest-js/2.6.0:
resolution: {integrity: sha512-4C5FCtvEzWudblB+h92/TYYPiq7tuElX8icVYToxOdggnYqeec4Se14mjse5miInKtZahiFHdl8lZA/jziEc5g==}
dependencies:
'@azure/core-auth': 1.3.2
abort-controller: 3.0.0
form-data: 2.5.1
node-fetch: 2.6.6
tough-cookie: 3.0.1
tslib: 1.14.1
tunnel: 0.0.6
uuid: 8.3.2
xml2js: 0.4.23
dev: false
/@azure/storage-blob/12.8.0:
resolution: {integrity: sha512-c8+Wz19xauW0bGkTCoqZH4dYfbtBniPiGiRQOn1ca6G5jsjr4azwaTk9gwjVY8r3vY2Taf95eivLzipfIfiS4A==}
engines: {node: '>=12.0.0'}
dependencies:
'@azure/abort-controller': 1.0.4
'@azure/core-http': 2.2.2
'@azure/core-lro': 2.2.2
'@azure/core-paging': 1.2.0
'@azure/core-tracing': 1.0.0-preview.13
'@azure/logger': 1.0.3
events: 3.3.0
tslib: 2.3.1
dev: false
/@babel/code-frame/7.12.11:
resolution: {integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==}
dependencies:
@ -792,6 +924,11 @@ packages:
fastq: 1.13.0
dev: true
/@opentelemetry/api/1.0.3:
resolution: {integrity: sha512-puWxACExDe9nxbBB3lOymQFrLYml2dVOrd7USiVRnSbgXE+KwBu+HxFvxrzfqsiSda9IWsXJG1ef7C1O2/GmKQ==}
engines: {node: '>=8.0.0'}
dev: false
/@parcel/babel-ast-utils/2.0.1:
resolution: {integrity: sha512-adBHMaPAj+w1NjO+oq6SUgtOpO7wmyNIgsiHDsf8cpLf2gT0GcC/afcaC07WhIq1PJvL2hkWQpT/8sj1m/QZSw==}
engines: {node: '>= 12.0.0'}
@ -1670,9 +1807,15 @@ packages:
resolution: {integrity: sha512-nJOuiTlsvmClSr3+a/trTSx4DTuY/VURsWGKSf/eeavh0LRMqdsK60ti0TlwM5iHiGOK3/Ibkxsbr7i9rzGreA==}
dev: true
/@types/node-fetch/2.5.12:
resolution: {integrity: sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==}
dependencies:
'@types/node': 16.11.11
form-data: 3.0.1
dev: false
/@types/node/16.11.11:
resolution: {integrity: sha512-KB0sixD67CeecHC33MYn+eYARkqTheIRNuu97y2XMjR7Wu3XibO1vaY6VBV6O/a89SPI81cEUIYT87UqUWlZNw==}
dev: true
/@types/normalize-package-data/2.4.1:
resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==}
@ -1702,6 +1845,12 @@ packages:
resolution: {integrity: sha512-Y0K95ThC3esLEYD6ZuqNek29lNX2EM1qxV8y2FTLUB0ff5wWrk7az+mLrnNFUnaXcgKye22+sFBRXOgpPILZNg==}
dev: true
/@types/tunnel/0.0.3:
resolution: {integrity: sha512-sOUTGn6h1SfQ+gbgqC364jLFBw2lnFqkgF3q0WovEHRLMrVD1sd5aufqi/aJObLekJO+Aq5z646U4Oxy6shXMA==}
dependencies:
'@types/node': 16.11.11
dev: false
/@types/unist/2.0.6:
resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==}
dev: true
@ -1830,6 +1979,13 @@ packages:
resolution: {integrity: sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==}
dev: true
/abort-controller/3.0.0:
resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==}
engines: {node: '>=6.5'}
dependencies:
event-target-shim: 5.0.1
dev: false
/abortcontroller-polyfill/1.7.3:
resolution: {integrity: sha512-zetDJxd89y3X99Kvo4qFx8GKlt6GsvN3UcRZHwU6iFA/0KiOmhkTVhe8oRoTBiTVPZu09x3vCra47+w8Yz1+2Q==}
dev: true
@ -2118,7 +2274,6 @@ packages:
/asynckit/0.4.0:
resolution: {integrity: sha1-x57Zf380y48robyXkLzDZkdLS3k=}
dev: true
/at-least-node/1.0.0:
resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==}
@ -2293,7 +2448,6 @@ packages:
/balanced-match/1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
dev: true
/base-x/3.0.8:
resolution: {integrity: sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==}
@ -2344,7 +2498,6 @@ packages:
dependencies:
balanced-match: 1.0.2
concat-map: 0.0.1
dev: true
/braces/3.0.2:
resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
@ -2679,7 +2832,6 @@ packages:
engines: {node: '>= 0.8'}
dependencies:
delayed-stream: 1.0.0
dev: true
/command-exists/1.2.9:
resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==}
@ -2716,7 +2868,6 @@ packages:
/concat-map/0.0.1:
resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=}
dev: true
/confusing-browser-globals/1.0.10:
resolution: {integrity: sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==}
@ -3125,7 +3276,6 @@ packages:
/delayed-stream/1.0.0:
resolution: {integrity: sha1-3zrhmayt+31ECqrgsp4icrJOxhk=}
engines: {node: '>=0.4.0'}
dev: true
/des.js/1.0.1:
resolution: {integrity: sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==}
@ -3872,6 +4022,11 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
/event-target-shim/5.0.1:
resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==}
engines: {node: '>=6'}
dev: false
/eventemitter3/4.0.7:
resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==}
dev: true
@ -3879,7 +4034,6 @@ packages:
/events/3.3.0:
resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
engines: {node: '>=0.8.x'}
dev: true
/evp_bytestokey/1.0.3:
resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==}
@ -4106,6 +4260,15 @@ packages:
mime-types: 2.1.32
dev: true
/form-data/2.5.1:
resolution: {integrity: sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==}
engines: {node: '>= 0.12'}
dependencies:
asynckit: 0.4.0
combined-stream: 1.0.8
mime-types: 2.1.32
dev: false
/form-data/3.0.1:
resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==}
engines: {node: '>= 6'}
@ -4113,7 +4276,15 @@ packages:
asynckit: 0.4.0
combined-stream: 1.0.8
mime-types: 2.1.32
dev: true
/form-data/4.0.0:
resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==}
engines: {node: '>= 6'}
dependencies:
asynckit: 0.4.0
combined-stream: 1.0.8
mime-types: 2.1.32
dev: false
/format/0.2.2:
resolution: {integrity: sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=}
@ -4599,6 +4770,11 @@ packages:
loose-envify: 1.4.0
dev: true
/ip-regex/2.1.0:
resolution: {integrity: sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=}
engines: {node: '>=4'}
dev: false
/is-absolute-url/3.0.3:
resolution: {integrity: sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==}
engines: {node: '>=8'}
@ -5882,7 +6058,6 @@ packages:
/mime-db/1.49.0:
resolution: {integrity: sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==}
engines: {node: '>= 0.6'}
dev: true
/mime-types/2.1.18:
resolution: {integrity: sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==}
@ -5896,7 +6071,6 @@ packages:
engines: {node: '>= 0.6'}
dependencies:
mime-db: 1.49.0
dev: true
/mimic-fn/2.1.0:
resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
@ -5914,7 +6088,6 @@ packages:
resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==}
dependencies:
brace-expansion: 1.1.11
dev: true
/minimist/1.2.5:
resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==}
@ -5994,6 +6167,13 @@ packages:
resolution: {integrity: sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==}
dev: true
/node-fetch/2.6.6:
resolution: {integrity: sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==}
engines: {node: 4.x || >=6.0.0}
dependencies:
whatwg-url: 5.0.0
dev: false
/node-forge/0.10.0:
resolution: {integrity: sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==}
engines: {node: '>= 6.0.0'}
@ -6950,7 +7130,6 @@ packages:
/process/0.11.10:
resolution: {integrity: sha1-czIwDoQBYb2j5podHZGn1LwW8YI=}
engines: {node: '>= 0.6.0'}
dev: true
/progress/2.0.3:
resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==}
@ -6975,7 +7154,6 @@ packages:
/psl/1.8.0:
resolution: {integrity: sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==}
dev: true
/public-encrypt/4.0.3:
resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==}
@ -7006,7 +7184,6 @@ packages:
/punycode/2.1.1:
resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==}
engines: {node: '>=6'}
dev: true
/purgecss/4.0.3:
resolution: {integrity: sha512-PYOIn5ibRIP34PBU9zohUcCI09c7drPJJtTDAc0Q6QlRz2/CHQ8ywGLdE7ZhxU2VTqB7p5wkvj5Qcm05Rz3Jmw==}
@ -7307,6 +7484,10 @@ packages:
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
dev: true
/sax/1.2.4:
resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==}
dev: false
/saxes/3.1.11:
resolution: {integrity: sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==}
engines: {node: '>=8'}
@ -7853,6 +8034,15 @@ packages:
punycode: 2.1.1
dev: true
/tough-cookie/3.0.1:
resolution: {integrity: sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==}
engines: {node: '>=6'}
dependencies:
ip-regex: 2.1.0
psl: 1.8.0
punycode: 2.1.1
dev: false
/tough-cookie/4.0.0:
resolution: {integrity: sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==}
engines: {node: '>=6'}
@ -7860,7 +8050,10 @@ packages:
psl: 1.8.0
punycode: 2.1.1
universalify: 0.1.2
dev: true
/tr46/0.0.3:
resolution: {integrity: sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=}
dev: false
/tr46/1.0.1:
resolution: {integrity: sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=}
@ -7917,7 +8110,10 @@ packages:
/tslib/1.14.1:
resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
dev: true
/tslib/2.3.1:
resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==}
dev: false
/tsutils/3.21.0_typescript@4.5.2:
resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
@ -8040,7 +8236,6 @@ packages:
/universalify/0.1.2:
resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
engines: {node: '>= 4.0.0'}
dev: true
/universalify/2.0.0:
resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==}
@ -8100,6 +8295,11 @@ packages:
deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
hasBin: true
/uuid/8.3.2:
resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
hasBin: true
dev: false
/v8-compile-cache/2.3.0:
resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==}
dev: true
@ -8201,6 +8401,10 @@ packages:
resolution: {integrity: sha512-Bi5ae8Bev3YulgtLTafpmHmvl3vGbanRkv+qqA2AX8c3qj/MUdvSuaHq7ukDYBcMDINIaRPTPEkXSNCqqWivuA==}
dev: true
/webidl-conversions/3.0.1:
resolution: {integrity: sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=}
dev: false
/webidl-conversions/4.0.2:
resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==}
dev: true
@ -8225,6 +8429,13 @@ packages:
resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==}
dev: true
/whatwg-url/5.0.0:
resolution: {integrity: sha1-lmRU6HZUYuN2RNNib2dCzotwll0=}
dependencies:
tr46: 0.0.3
webidl-conversions: 3.0.1
dev: false
/whatwg-url/7.1.0:
resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==}
dependencies:
@ -8328,6 +8539,19 @@ packages:
resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==}
dev: true
/xml2js/0.4.23:
resolution: {integrity: sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==}
engines: {node: '>=4.0.0'}
dependencies:
sax: 1.2.4
xmlbuilder: 11.0.1
dev: false
/xmlbuilder/11.0.1:
resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==}
engines: {node: '>=4.0'}
dev: false
/xmlchars/2.2.0:
resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==}
dev: true
@ -8381,6 +8605,28 @@ packages:
readable-stream: 3.6.0
dev: true
github.com/actions/setup-python/f38219332975fe8f9c04cca981d674bf22aea1d3:
resolution: {tarball: https://codeload.github.com/actions/setup-python/tar.gz/f38219332975fe8f9c04cca981d674bf22aea1d3}
name: setup-python
version: 2.2.2
dependencies:
'@actions/cache': 1.0.8
'@actions/core': 1.6.0
'@actions/exec': 1.1.0
'@actions/glob': 0.2.0
'@actions/io': 1.1.1
'@actions/tool-cache': 1.7.1
semver: 7.3.5
dev: false
github.com/aminya/msvc-dev-cmd/9f672c1c3d12ea8156d8d0e53543791491291aec:
resolution: {tarball: https://codeload.github.com/aminya/msvc-dev-cmd/tar.gz/9f672c1c3d12ea8156d8d0e53543791491291aec}
name: msvc-dev-cmd
version: 1.1.1
dependencies:
'@actions/core': 1.6.0
dev: false
github.com/aminya/sort-package-json/076051b58be7b198732d1ce2b9a415ccd0c63a97:
resolution: {tarball: https://codeload.github.com/aminya/sort-package-json/tar.gz/076051b58be7b198732d1ce2b9a415ccd0c63a97}
name: sort-package-json

View File

@ -1,2 +0,0 @@
packages:
- "."

View File

@ -3,6 +3,7 @@ import execa from "execa"
import { existsSync } from "fs"
import { dirname } from "path"
import which from "which"
import { addPath } from "../utils/path/addPath"
import { InstallationInfo } from "../utils/setup/setupBin"
let binDir: string | undefined
@ -29,10 +30,27 @@ export function setupChocolatey(
return { binDir }
}
let powershell = "powershell.exe"
const maybePowerShell = which.sync(`${process.env.SystemRoot}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`, {
nothrow: true,
})
if (maybePowerShell !== null) {
powershell = maybePowerShell
}
// https://docs.chocolatey.org/en-us/choco/setup#install-with-cmd.exe
execa.commandSync(
`@"%SystemRoot%\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "[System.Net.ServicePointManager]::SecurityProtocol = 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\\chocolatey\\bin"`
)
execa.sync(powershell, [
"-NoProfile",
"-InputFormat",
"None",
"-ExecutionPolicy",
"Bypass",
"-Command",
"[System.Net.ServicePointManager]::SecurityProtocol = 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))",
])
const chocoPath = `${process.env.ALLUSERSPROFILE}\\chocolatey\\bin`
addPath(chocoPath)
const maybeChoco = which.sync("choco", { nothrow: true })
if (maybeChoco !== null) {

View File

@ -1,5 +1,6 @@
const DefaultVersions: Record<string, string> = {
msvc: "2019",
vcvarsall: "2019",
llvm: "13.0.0",
ninja: "1.10.2",
cmake: "3.22.0",

View File

@ -26,6 +26,7 @@ import { error, success } from "./utils/io/io"
import { setupVcpkg } from "./vcpkg/vcpkg"
import { join } from "path"
import { warning } from "@actions/core"
import { setupVCVarsall } from "./vcvarsall/vcvarsall"
/** The setup functions */
const setups = {
@ -45,6 +46,7 @@ const setups = {
doxygen: setupDoxygen,
cppcheck: setupCppcheck,
msvc: setupMSVC,
vcvarsall: setupVCVarsall,
}
/** The tools that can be installed */
@ -65,6 +67,7 @@ const tools: Array<keyof typeof setups> = [
"llvm",
"gcc",
"msvc",
"vcvarsall",
]
/** The possible inputs to the program */
@ -111,14 +114,19 @@ export async function main(args: string[]): Promise<number> {
// skip if undefined
if (value !== undefined) {
// running the setup function for this tool
try {
let installationInfo: InstallationInfo | undefined | void
if (tool === "vcvarsall") {
// eslint-disable-next-line no-await-in-loop
setupVCVarsall(getVersion(tool, value), undefined, arch, undefined, undefined, false, false)
} else {
// get the setup function
const setupFunction = setups[tool]
// running the setup function for this tool
try {
// eslint-disable-next-line no-await-in-loop
const installationInfo = await setupFunction(getVersion(tool, value), join(setupCppDir, tool), arch)
installationInfo = await setupFunction(getVersion(tool, value), join(setupCppDir, tool), arch)
}
// preparing a report string
if (installationInfo !== undefined) {
successMessages.push(getSuccessMessage(tool, installationInfo))
@ -252,6 +260,7 @@ Install all the tools required for building and testing C++/C projects.
All the available tools:
--llvm
--gcc
--vcvarsall
--cmake
--ninja
--vcpkg

View File

@ -1,18 +1,48 @@
import which from "which"
import { testBin } from "../../utils/tests/test-helpers"
import { setupMSVC } from "../msvc"
jest.setTimeout(300000)
describe("setup-msvc", () => {
it("should setup msvc", async () => {
it("should setup msvc 2019", async () => {
try {
if (process.platform !== "win32") {
return
}
await setupMSVC("2019", "", process.arch)
try {
await testBin("cl", [])
} catch (err) {
// TODO see #1
console.log(which("cl"))
} catch (e) {
// TODO
console.error(e)
}
})
it("should setup msvc 2017", async () => {
try {
if (process.platform !== "win32") {
return
}
await setupMSVC("2017", "", process.arch)
await testBin("cl", [])
console.log(which("cl"))
} catch (e) {
// TODO
console.error(e)
}
})
it("should setup msvc 2015", async () => {
try {
if (process.platform !== "win32") {
return
}
await setupMSVC("2015", "", process.arch)
await testBin("cl", [])
console.log(which("cl"))
} catch (e) {
// TODO
console.error(e)
}
})
})

@ -1 +0,0 @@
Subproject commit 082928e04f67114ec851d165f1ab48fce0b5d752

View File

@ -1,28 +1,14 @@
import { setupChocoPack } from "../utils/setup/setupChocoPack"
import { error, exportVariable, warning } from "@actions/core"
import { existsSync } from "fs"
import { isCI } from "../utils/env/isci"
import { error } from "@actions/core"
import { setupVCVarsall } from "../vcvarsall/vcvarsall"
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
import { vsversion_to_versionnumber, findVcvarsall } from "msvc-dev-cmd/lib.js"
type MSVCVersion = "2015" | "2017" | "2019" | string
function getArch(arch: string): string {
switch (arch) {
case "x32":
case "32":
case "ia32": {
return "x86"
}
case "64": {
return "x64"
}
default: {
return arch
}
}
}
type MSVCVersion = "2022" | "17.0" | "2019" | "16.0" | "2017" | "15.0" | "2015" | "14.0" | "2013" | "12.0" | string
export async function setupMSVC(
version: MSVCVersion,
versionGiven: MSVCVersion,
_setupDir: string,
arch: string,
sdk?: string,
@ -32,62 +18,45 @@ export async function setupMSVC(
if (process.platform !== "win32") {
return
}
const version = vsversion_to_versionnumber(versionGiven) as string
// check if the given version is already installed
let installed = false
try {
findVcvarsall(version)
installed = true
} catch {
// not installed, try installing
}
let toolset: string | undefined
let VCTargetsPath: string | undefined
if (!isCI()) {
// TODO enable this code path once its bugs are fixed
// https://github.com/aminya/setup-cpp/issues/1
warning("Installing MSVC is experimental and known to fail.")
try {
if (version === "2015") {
toolset = "14.0.25420.1"
await setupChocoPack("visualcpp-build-tools", toolset, [
"--ignore-dependencies",
"--params",
"'/IncludeRequired'",
])
VCTargetsPath = "C:/Program Files (x86)/MSBuild/Microsoft.Cpp/v4.0/v140"
if (existsSync(VCTargetsPath)) {
exportVariable("VCTargetsPath", VCTargetsPath)
if (version === "14.0") {
toolset = "14.0"
if (!installed) {
await setupChocoPack("visualcpp-build-tools", "14.0.25420.1", ["--ignore-dependencies"])
}
} else if (version === "2017") {
VCTargetsPath = "C:/Program Files (x86)/MSBuild/Microsoft.Cpp/v4.0/v140"
} else if (version === "15.0") {
toolset = "14.16"
await setupChocoPack("visualstudio2017buildtools", "15.9.38.0", [
"--package-parameters",
"'--add Microsoft.VisualStudio.Workload.NativeDesktop --includeRecommended --passive'",
])
if (!installed) {
await setupChocoPack("visualstudio2017buildtools", "15.9.41.0", [])
}
VCTargetsPath = "C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools/VC/Tools/MSVC/14.16" // TODO verify path
} else if (version === "2019") {
toolset = "14.29.30133"
await setupChocoPack("visualstudio2019buildtools", "16.11.2.0", [
"--package-parameters",
"'--add Microsoft.VisualStudio.Workload.NativeDesktop --includeRecommended --passive'",
])
} else if (version === "16.0") {
toolset = "14.29"
if (!installed) {
await setupChocoPack("visualstudio2019buildtools", "16.11.7.0", [])
}
VCTargetsPath = "C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.29.30133"
} else {
error(`The given MSVC versions ${versionGiven} is not supported yet.`)
}
} catch (e) {
error(e as string | Error)
}
}
// run vcvarsall.bat environment variables
activateMSVC(VCTargetsPath, arch, toolset, sdk, uwp, spectre)
}
function activateMSVC(
VCTargetsPath: string | undefined,
arch: string,
toolset: string | undefined,
sdk?: string,
uwp?: boolean,
spectre?: boolean
) {
if (VCTargetsPath !== undefined && existsSync(VCTargetsPath)) {
exportVariable("VCTargetsPath", VCTargetsPath)
}
// lazy load the action so it is not executed
// eslint-disable-next-line @typescript-eslint/no-var-requires
const { setupMSVCDevCmd } = require("./msvc-dev-cmd/index")
setupMSVCDevCmd(getArch(arch), sdk, toolset, uwp, spectre)
setupVCVarsall(version, VCTargetsPath, arch, toolset, sdk, uwp, spectre)
}

View File

@ -1,6 +1,6 @@
import * as core from "@actions/core"
import * as finder from "./setup-python/src/find-python"
import * as finderPyPy from "./setup-python/src/find-pypy"
import * as finder from "setup-python/src/find-python"
import * as finderPyPy from "setup-python/src/find-pypy"
// import * as path from "path"
function isPyPyVersion(versionSpec: string) {

@ -1 +0,0 @@
Subproject commit 2d803e7feaf26323835f529f28efa6400f18ad01

View File

@ -14,10 +14,18 @@ export async function setupChocoPack(name: string, version?: string, args: strin
hasChoco = true
}
// https://github.com/jberezanski/ChocolateyPackages/issues/97#issuecomment-986825694
const PATH = process.env.PATH
const env = { ...process.env }
delete env.TMP
delete env.TEMP
delete env.Path
env.PATH = PATH
if (version !== undefined && version !== "") {
execa.sync("choco", ["install", "-y", name, `--version=${version}`, ...args])
execa.sync("choco", ["install", "-y", name, `--version=${version}`, ...args], { env, extendEnv: false })
} else {
execa.sync("choco", ["install", "-y", name, ...args])
execa.sync("choco", ["install", "-y", name, ...args], { env, extendEnv: false })
}
const binDir = "C:/ProgramData/Chocolatey/bin/"

View File

@ -0,0 +1,38 @@
import { exportVariable, info } from "@actions/core"
import { existsSync } from "fs"
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
import { setupMSVCDevCmd } from "msvc-dev-cmd/lib.js"
function getArch(arch: string): string {
switch (arch) {
case "x32":
case "32":
case "ia32": {
return "x86"
}
case "64": {
return "x64"
}
default: {
return arch
}
}
}
export function setupVCVarsall(
vsversion: string,
VCTargetsPath: string | undefined,
arch: string,
toolset: string | undefined,
sdk?: string,
uwp?: boolean,
spectre?: boolean
) {
if (VCTargetsPath !== undefined && existsSync(VCTargetsPath)) {
info(`Adding ${VCTargetsPath} to PATH`)
exportVariable("VCTargetsPath", VCTargetsPath)
}
setupMSVCDevCmd(getArch(arch), sdk, toolset, uwp, spectre, vsversion)
}

View File

@ -27,6 +27,5 @@
"outDir": "./dist"
},
"compileOnSave": false,
"include": ["./src"],
"exclude": ["./src/python/setup-python", "src/msvc/msvc-dev-cmd/"]
"include": ["./src"]
}