mirror of https://github.com/aminya/setup-cpp
Merge pull request #8 from aminya/msvc
This commit is contained in:
commit
3d8864e9d9
|
@ -53,6 +53,9 @@ jobs:
|
|||
run: |
|
||||
pnpm install
|
||||
|
||||
# - name: Setup SSH debugging session
|
||||
# uses: mxschmitt/action-tmate@v3
|
||||
|
||||
- name: Test
|
||||
run: |
|
||||
pnpm run test
|
||||
|
|
|
@ -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
|
|
@ -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.
|
10
README.md
10
README.md
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -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"
|
||||
},
|
||||
|
|
294
pnpm-lock.yaml
294
pnpm-lock.yaml
|
@ -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
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
packages:
|
||||
- "."
|
|
@ -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) {
|
||||
|
|
|
@ -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",
|
||||
|
|
17
src/main.ts
17
src/main.ts
|
@ -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
|
||||
|
|
|
@ -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
|
101
src/msvc/msvc.ts
101
src/msvc/msvc.ts
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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
|
|
@ -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/"
|
||||
|
|
|
@ -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)
|
||||
}
|
|
@ -27,6 +27,5 @@
|
|||
"outDir": "./dist"
|
||||
},
|
||||
"compileOnSave": false,
|
||||
"include": ["./src"],
|
||||
"exclude": ["./src/python/setup-python", "src/msvc/msvc-dev-cmd/"]
|
||||
"include": ["./src"]
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue