Merge branch 'main' into merge/release/7.0.4xx-to-main
# Conflicts: # src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/OmniSharpTests.cs # src/SourceBuild/tarball/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/baselines/MsftToSbSdk.diff
This commit is contained in:
commit
724642682f
366 changed files with 8872 additions and 9800 deletions
12
.config/dotnet-tools.json
Normal file
12
.config/dotnet-tools.json
Normal file
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"version": 1,
|
||||
"isRoot": true,
|
||||
"tools": {
|
||||
"microsoft.dotnet.darc": {
|
||||
"version": "1.1.0-beta.23362.2",
|
||||
"commands": [
|
||||
"darc"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,23 +0,0 @@
|
|||
// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
|
||||
// https://github.com/microsoft/vscode-dev-containers/tree/v0.238.0/containers/dotnet
|
||||
{
|
||||
"name": "Source-Build w/ Built Tarball",
|
||||
"image": "mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-33-20210222183538-031e7d2",
|
||||
// A completely built .NET source-tarball is >64 GB
|
||||
"hostRequirements": {
|
||||
"storage": "128gb"
|
||||
},
|
||||
// Configure tool-specific properties.
|
||||
"customizations": {
|
||||
// Configure properties specific to VS Code.
|
||||
"vscode": {
|
||||
// Add the IDs of extensions you want installed when the container is created.
|
||||
"extensions": [
|
||||
"ms-dotnettools.csharp",
|
||||
"eamodio.gitlens"
|
||||
]
|
||||
}
|
||||
},
|
||||
// Use 'onCreateCommand' to run pre-build commands inside the codespace.
|
||||
"onCreateCommand": "${containerWorkspaceFolder}/.devcontainer/source-build-scripts/buildTarball.sh"
|
||||
}
|
|
@ -1,12 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
./.devcontainer/source-build-scripts/createTarball.sh
|
||||
|
||||
cd $(realpath ..)/dotnet-source/
|
||||
|
||||
./prep.sh
|
||||
|
||||
# GitHub Codespaces automatically sets RepositoryName, which conflicts with source-build scripts.
|
||||
unset RepositoryName
|
||||
|
||||
./build.sh --online --clean-while-building || true
|
|
@ -1,7 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Always return exit code 0 so that we can use the codespaces prebuild to diagnose build errors.
|
||||
./build.sh /p:ArcadeBuildTarball=true /p:TarballDir=$(realpath ..)/dotnet-source/ /p:PreserveTarballGitFolders=true || true
|
||||
|
||||
# Save the commit hash of the currently built repo, so developers know which version was built
|
||||
git rev-parse HEAD > ./artifacts/prebuild.sha
|
|
@ -1,20 +0,0 @@
|
|||
// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
|
||||
// https://github.com/microsoft/vscode-dev-containers/tree/v0.238.0/containers/dotnet
|
||||
{
|
||||
"name": "Source-Build w/ Tarball",
|
||||
"image": "mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-33-20210222183538-031e7d2",
|
||||
// A completely built .NET source tarball is >64 GB
|
||||
"hostRequirements": {
|
||||
"storage": "128gb"
|
||||
},
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"ms-dotnettools.csharp",
|
||||
"eamodio.gitlens"
|
||||
]
|
||||
}
|
||||
},
|
||||
// Use 'onCreateCommand' to run pre-build commands inside the codespace.
|
||||
"onCreateCommand": "${containerWorkspaceFolder}/.devcontainer/scripts/createTarball.sh"
|
||||
}
|
|
@ -1,5 +0,0 @@
|
|||
// Use this devcontainer if you don't need the full context of a source-build tarball
|
||||
{
|
||||
"name": "Source-Build",
|
||||
"image": "mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-33-20210222183538-031e7d2"
|
||||
}
|
55
.devcontainer/vmr-source-build/README.md
Normal file
55
.devcontainer/vmr-source-build/README.md
Normal file
|
@ -0,0 +1,55 @@
|
|||
<!--
|
||||
######## ######## ### ######## ######## ## ## #### ######
|
||||
## ## ## ## ## ## ## ## ## ## ## ## ##
|
||||
## ## ## ## ## ## ## ## ## ## ## ##
|
||||
######## ###### ## ## ## ## ## ######### ## ######
|
||||
## ## ## ######### ## ## ## ## ## ## ##
|
||||
## ## ## ## ## ## ## ## ## ## ## ## ##
|
||||
## ## ######## ## ## ######## ## ## ## #### ######
|
||||
-->
|
||||
|
||||
This Codespace can help you debug the source build of .NET. In case you have run this from a
|
||||
`dotnet/installer` PR branch, it will contain the VMR (`dotnet/dotnet`) checked out into
|
||||
`/workspaces/dotnet` with the PR changes pulled into it. You can then attempt to source-build
|
||||
the VMR which is what the VMR leg in the installer PR build doing. This build takes about 45
|
||||
minutes and, after completion, produces an archived .NET SDK located in
|
||||
`/workspaces/dotnet/artifacts/x64/Release`.
|
||||
|
||||
## Build the SDK
|
||||
|
||||
To build the VMR, run following:
|
||||
```bash
|
||||
cd /workspaces/dotnet
|
||||
./build.sh --online
|
||||
```
|
||||
|
||||
> Please note that, at this time, the build modifies some of the checked-in sources so it might
|
||||
be preferential to rebuild the Codespace between attempts (or reset the working tree changes).
|
||||
|
||||
For more details, see the instructions at https://github.com/dotnet/dotnet.
|
||||
|
||||
## Synchronize your changes in locally
|
||||
|
||||
When debugging the build, you have two options how to test your changes in this environment.
|
||||
|
||||
### Making changes to the VMR directly
|
||||
|
||||
You can make the changes directly to the local checkout of the VMR at `/workspaces/dotnet`. You
|
||||
can then try to build the VMR and see if the change works for you.
|
||||
|
||||
### Pull changes into the Codespace from your fork
|
||||
|
||||
You can also make a fix in the individual source repository (e.g. `dotnet/runtime`) and push the
|
||||
fix into a branch; can be in your fork too. Once you have the commit pushed, you can pull this
|
||||
version of the repository into the Codespace by running:
|
||||
|
||||
```
|
||||
/workspaces/synchronize-vmr.sh \
|
||||
--repository <repo>:<commit, tag or branch> \
|
||||
--remote <repo>:<fork URI>
|
||||
```
|
||||
|
||||
You can now proceed building the VMR in the Codespace using instructions above. You can repeat
|
||||
this process and sync a new commit from your fork. Only note that, at this time, Source-Build
|
||||
modifies some of the checked-in sources so you'll need to revert the working tree changes
|
||||
between attempts.
|
25
.devcontainer/vmr-source-build/devcontainer.json
Normal file
25
.devcontainer/vmr-source-build/devcontainer.json
Normal file
|
@ -0,0 +1,25 @@
|
|||
// Container suitable for investigating issues with source build
|
||||
// Contains the VMR (dotnet/dotnet) with applied changes from the current PR
|
||||
// The container supports source-building the SDK
|
||||
{
|
||||
"name": "VMR with PR changes",
|
||||
"image": "mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-36",
|
||||
"hostRequirements": {
|
||||
// A completely source built .NET is >64 GB with all the repos/artifacts
|
||||
"storage": "128gb"
|
||||
},
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"ms-dotnettools.csharp"
|
||||
]
|
||||
},
|
||||
"codespaces": {
|
||||
"openFiles": [
|
||||
"installer/.devcontainer/vmr-source-build/README.md"
|
||||
]
|
||||
}
|
||||
},
|
||||
"onCreateCommand": "${containerWorkspaceFolder}/installer/.devcontainer/vmr-source-build/init.sh",
|
||||
"workspaceFolder": "/workspaces"
|
||||
}
|
30
.devcontainer/vmr-source-build/init.sh
Executable file
30
.devcontainer/vmr-source-build/init.sh
Executable file
|
@ -0,0 +1,30 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -ex
|
||||
|
||||
source="${BASH_SOURCE[0]}"
|
||||
script_root="$( cd -P "$( dirname "$source" )" && pwd )"
|
||||
|
||||
installer_dir=$(realpath "$script_root/../..")
|
||||
workspace_dir=$(realpath "$installer_dir/../")
|
||||
tmp_dir=$(realpath "$workspace_dir/tmp")
|
||||
vmr_dir=$(realpath "$workspace_dir/dotnet")
|
||||
|
||||
cp "$installer_dir/.devcontainer/vmr-source-build/synchronize-vmr.sh" "$workspace_dir"
|
||||
|
||||
mkdir -p "$tmp_dir"
|
||||
|
||||
# Codespaces performs a shallow fetch only
|
||||
git -C "$installer_dir" fetch --all --unshallow
|
||||
|
||||
# We will try to figure out, which branch is the current (PR) branch based off of
|
||||
# We need this to figure out, which VMR branch to use
|
||||
vmr_branch=$(git -C "$installer_dir" log --pretty=format:'%D' HEAD^ \
|
||||
| grep 'origin/' \
|
||||
| head -n1 \
|
||||
| sed 's@origin/@@' \
|
||||
| sed 's@,.*@@')
|
||||
|
||||
"$workspace_dir/synchronize-vmr.sh" --branch "$vmr_branch" --debug
|
||||
|
||||
(cd "$vmr_dir" && ./prep.sh)
|
4
.devcontainer/vmr-source-build/synchronize-vmr.sh
Executable file
4
.devcontainer/vmr-source-build/synchronize-vmr.sh
Executable file
|
@ -0,0 +1,4 @@
|
|||
#!/bin/bash
|
||||
|
||||
(cd /workspaces/installer \
|
||||
&& ./eng/vmr-sync.sh --vmr /workspaces/dotnet --tmp /workspaces/tmp $*)
|
630
.vsts-ci.yml
630
.vsts-ci.yml
|
@ -27,17 +27,6 @@ variables:
|
|||
- name: _PublishUsingPipelines
|
||||
value: true
|
||||
|
||||
# Default to running tests in PRs and public CI, but not in official builds
|
||||
- name: _WindowsTestArg
|
||||
value: '-test'
|
||||
- name: _NonWindowsTestArg
|
||||
value: '--test'
|
||||
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
|
||||
- name: _WindowsTestArg
|
||||
value: ''
|
||||
- name: _NonWindowsTestArg
|
||||
value: ''
|
||||
|
||||
- name: _InternalRuntimeDownloadArgs
|
||||
value: ''
|
||||
|
||||
|
@ -48,345 +37,328 @@ variables:
|
|||
/p:DotNetRuntimeSourceFeedKey=$(dotnetbuilds-internal-container-read-token-base64)
|
||||
/p:dotnetbuilds-internal-container-read-token-base64=$(dotnetbuilds-internal-container-read-token-base64)
|
||||
|
||||
- template: /eng/common/templates/variables/pool-providers.yml
|
||||
|
||||
stages:
|
||||
- stage: build
|
||||
- stage: Build
|
||||
jobs:
|
||||
# This job is for build retry configuration.
|
||||
- job: Publish_Build_Configuration
|
||||
pool:
|
||||
${{ if eq(variables['System.TeamProject'], 'public') }}:
|
||||
name: NetCore-Svc-Public
|
||||
demands: ImageOverride -equals windows.vs2019.amd64.open
|
||||
name: $(DncEngPublicBuildPool)
|
||||
demands: ImageOverride -equals windows.vs2022preview.amd64.open
|
||||
${{ if eq(variables['System.TeamProject'], 'internal') }}:
|
||||
name: NetCore1ESPool-Svc-Internal
|
||||
demands: ImageOverride -equals windows.vs2019.amd64
|
||||
name: $(DncEngInternalBuildPool)
|
||||
demands: ImageOverride -equals windows.vs2022preview.amd64
|
||||
steps:
|
||||
- publish: $(Build.SourcesDirectory)\eng\BuildConfiguration
|
||||
artifact: BuildConfiguration
|
||||
- publish: $(Build.SourcesDirectory)\eng\buildConfiguration
|
||||
artifact: buildConfiguration
|
||||
displayName: Publish Build Config
|
||||
- template: /eng/build.yml
|
||||
parameters:
|
||||
agentOs: Windows_NT
|
||||
pool:
|
||||
${{ if eq(variables['System.TeamProject'], 'public') }}:
|
||||
name: NetCore-Svc-Public
|
||||
demands: ImageOverride -equals windows.vs2019.amd64.open
|
||||
${{ if eq(variables['System.TeamProject'], 'internal') }}:
|
||||
name: NetCore1ESPool-Svc-Internal
|
||||
demands: ImageOverride -equals windows.vs2019.amd64
|
||||
timeoutInMinutes: 180
|
||||
strategy:
|
||||
matrix:
|
||||
# Public-only builds
|
||||
${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}:
|
||||
Build_Release_x64:
|
||||
_BuildConfig: Debug
|
||||
_BuildArchitecture: x64
|
||||
_DOTNET_CLI_UI_LANGUAGE: ''
|
||||
_AdditionalBuildParameters: '/p:PublishInternalAsset=true'
|
||||
_TestArg: $(_WindowsTestArg)
|
||||
# Internal-only builds
|
||||
${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
|
||||
Build_Release_x64:
|
||||
_BuildConfig: Release
|
||||
_BuildArchitecture: x64
|
||||
_DOTNET_CLI_UI_LANGUAGE: ''
|
||||
_AdditionalBuildParameters: '/p:PublishInternalAsset=true'
|
||||
_TestArg: $(_WindowsTestArg)
|
||||
Build_Release_x86:
|
||||
_BuildConfig: Release
|
||||
_BuildArchitecture: x86
|
||||
_DOTNET_CLI_UI_LANGUAGE: ''
|
||||
_AdditionalBuildParameters: ''
|
||||
_TestArg: $(_WindowsTestArg)
|
||||
Build_Release_arm64:
|
||||
_BuildConfig: Release
|
||||
_BuildArchitecture: arm64
|
||||
_DOTNET_CLI_UI_LANGUAGE: ''
|
||||
_AdditionalBuildParameters: ''
|
||||
# Never run tests on arm64
|
||||
_TestArg: ''
|
||||
|
||||
## PR-only jobs
|
||||
|
||||
- ${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}:
|
||||
|
||||
## Windows
|
||||
|
||||
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
|
||||
- template: /eng/build.yml
|
||||
- template: eng/build.yml
|
||||
parameters:
|
||||
agentOs: Windows_NT
|
||||
pool:
|
||||
${{ if eq(variables['System.TeamProject'], 'internal') }}:
|
||||
name: NetCore1ESPool-Svc-Internal
|
||||
demands: ImageOverride -equals windows.vs2019.amd64
|
||||
timeoutInMinutes: 180
|
||||
strategy:
|
||||
matrix:
|
||||
Build_Release_x64:
|
||||
_BuildConfig: Release
|
||||
_BuildArchitecture: x64
|
||||
_DOTNET_CLI_UI_LANGUAGE: ''
|
||||
_AdditionalBuildParameters: '/p:PublishInternalAsset=true'
|
||||
# Never run tests on PGO bits
|
||||
_TestArg: ''
|
||||
Build_Release_x86:
|
||||
_BuildConfig: Release
|
||||
_BuildArchitecture: x86
|
||||
_DOTNET_CLI_UI_LANGUAGE: ''
|
||||
_AdditionalBuildParameters: ''
|
||||
_TestArg: ''
|
||||
Build_Release_arm64:
|
||||
_BuildConfig: Release
|
||||
_BuildArchitecture: arm64
|
||||
_DOTNET_CLI_UI_LANGUAGE: ''
|
||||
_AdditionalBuildParameters: ''
|
||||
# Never run tests on arm64
|
||||
_TestArg: ''
|
||||
pgoInstrument: true
|
||||
jobName: Build_Debug_x64
|
||||
buildConfiguration: Debug
|
||||
buildArchitecture: x64
|
||||
additionalBuildParameters: '/p:PublishInternalAsset=true'
|
||||
runTests: true
|
||||
|
||||
- template: /eng/build.yml
|
||||
parameters:
|
||||
agentOs: Linux
|
||||
pool:
|
||||
${{ if eq(variables['System.TeamProject'], 'public') }}:
|
||||
name: NetCore-Svc-Public
|
||||
demands: ImageOverride -equals Build.Ubuntu.1804.Amd64.Open
|
||||
${{ if eq(variables['System.TeamProject'], 'internal') }}:
|
||||
name: NetCore1ESPool-Svc-Internal
|
||||
demands: ImageOverride -equals Build.Ubuntu.1804.Amd64
|
||||
timeoutInMinutes: 180
|
||||
strategy:
|
||||
matrix:
|
||||
${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}:
|
||||
Build_Ubuntu_18_04_Debug_x64:
|
||||
_BuildConfig: Debug
|
||||
_DockerParameter: '--docker ubuntu.18.04'
|
||||
_LinuxPortable: '--linux-portable'
|
||||
_RuntimeIdentifier: ''
|
||||
_BuildArchitecture: 'x64'
|
||||
_TestArg: $(_NonWindowsTestArg)
|
||||
Build_Fedora_36_Debug_x64:
|
||||
_BuildConfig: Debug
|
||||
_DockerParameter: '--docker fedora.36'
|
||||
_LinuxPortable: '--linux-portable'
|
||||
_RuntimeIdentifier: ''
|
||||
_BuildArchitecture: 'x64'
|
||||
_TestArg: $(_NonWindowsTestArg)
|
||||
Build_CentOS_7_Debug_x64:
|
||||
_BuildConfig: Debug
|
||||
_DockerParameter: '--docker centos'
|
||||
_LinuxPortable: ''
|
||||
_RuntimeIdentifier: ''
|
||||
_BuildArchitecture: 'x64'
|
||||
_TestArg: $(_NonWindowsTestArg)
|
||||
Build_Debian_11_Debug_x64:
|
||||
_BuildConfig: Debug
|
||||
_DockerParameter: '--docker debian'
|
||||
_LinuxPortable: ''
|
||||
_RuntimeIdentifier: ''
|
||||
_BuildArchitecture: 'x64'
|
||||
_AdditionalBuildParameters: '/p:BuildSdkDeb=true'
|
||||
_TestArg: $(_NonWindowsTestArg)
|
||||
Build_Arm64_Debug:
|
||||
_BuildConfig: Debug
|
||||
_DockerParameter: ''
|
||||
_LinuxPortable: '--linux-portable'
|
||||
_RuntimeIdentifier: '--runtime-id linux-arm64'
|
||||
_BuildArchitecture: 'arm64'
|
||||
# Never run tests on arm64
|
||||
_TestArg: ''
|
||||
Build_Linux_musl_Debug_x64:
|
||||
_BuildConfig: Debug
|
||||
_DockerParameter: '--docker alpine.3.15'
|
||||
_LinuxPortable: ''
|
||||
_RuntimeIdentifier: '--runtime-id linux-musl-x64'
|
||||
_BuildArchitecture: 'x64'
|
||||
# Pass in HostOSName when running on alpine
|
||||
_AdditionalBuildParameters: '/p:HostOSName="linux-musl"'
|
||||
_TestArg: $(_NonWindowsTestArg)
|
||||
${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
|
||||
Build_Arm_Release:
|
||||
_BuildConfig: Release
|
||||
_DockerParameter: ''
|
||||
_LinuxPortable: '--linux-portable'
|
||||
_RuntimeIdentifier: '--runtime-id linux-arm'
|
||||
_BuildArchitecture: 'arm'
|
||||
# Never run tests on arm
|
||||
_TestArg: ''
|
||||
Build_Arm64_Release:
|
||||
_BuildConfig: Release
|
||||
_DockerParameter: ''
|
||||
_LinuxPortable: '--linux-portable'
|
||||
_RuntimeIdentifier: '--runtime-id linux-arm64'
|
||||
_BuildArchitecture: 'arm64'
|
||||
# Never run tests on arm64
|
||||
_TestArg: ''
|
||||
Build_Linux_musl_Release_arm:
|
||||
_BuildConfig: Release
|
||||
# linux-musl-arm cross gen depends on glibc 2.27 (this OS has it)
|
||||
_DockerParameter: '--docker ubuntu.18.04'
|
||||
_LinuxPortable: ''
|
||||
_RuntimeIdentifier: '--runtime-id linux-musl-arm'
|
||||
_BuildArchitecture: 'arm'
|
||||
_AdditionalBuildParameters: '/p:OSName="linux-musl"'
|
||||
# Never run tests on arm
|
||||
_TestArg: ''
|
||||
Build_Linux_musl_Release_arm64:
|
||||
_BuildConfig: Release
|
||||
_DockerParameter: ''
|
||||
_LinuxPortable: ''
|
||||
_RuntimeIdentifier: '--runtime-id linux-musl-arm64'
|
||||
_BuildArchitecture: 'arm64'
|
||||
_AdditionalBuildParameters: '/p:OSName="linux-musl"'
|
||||
# Never run tests on arm64
|
||||
_TestArg: ''
|
||||
Build_Linux_musl_Release_x64:
|
||||
_BuildConfig: Release
|
||||
_DockerParameter: '--docker alpine.3.15'
|
||||
_LinuxPortable: ''
|
||||
_RuntimeIdentifier: '--runtime-id linux-musl-x64'
|
||||
_BuildArchitecture: 'x64'
|
||||
# Pass in HostOSName when running on alpine
|
||||
_AdditionalBuildParameters: '/p:HostOSName="linux-musl"'
|
||||
Build_Linux_Portable_Deb_Release_x64:
|
||||
_BuildConfig: Release
|
||||
_DockerParameter: '--docker ubuntu.18.04'
|
||||
_LinuxPortable: '--linux-portable'
|
||||
_RuntimeIdentifier: ''
|
||||
_BuildArchitecture: 'x64'
|
||||
# Do not publish zips and tarballs. The linux-x64 binaries are
|
||||
# already published by Build_LinuxPortable_Release_x64
|
||||
_AdditionalBuildParameters: '/p:PublishBinariesAndBadge=false /p:BuildSdkDeb=true'
|
||||
_TestArg: $(_NonWindowsTestArg)
|
||||
Build_Linux_Portable_Rpm_Release_x64:
|
||||
_BuildConfig: Release
|
||||
_DockerParameter: '--docker centos'
|
||||
_LinuxPortable: '--linux-portable'
|
||||
_RuntimeIdentifier: ''
|
||||
_BuildArchitecture: 'x64'
|
||||
# Do not publish zips and tarballs. The linux-x64 binaries are
|
||||
# already published by Build_LinuxPortable_Release_x64
|
||||
_AdditionalBuildParameters: '/p:PublishBinariesAndBadge=false'
|
||||
_TestArg: $(_NonWindowsTestArg)
|
||||
Build_Linux_Portable_Rpm_Release_Arm64:
|
||||
_BuildConfig: Release
|
||||
_DockerParameter: '--docker centos'
|
||||
_LinuxPortable: '--linux-portable'
|
||||
_RuntimeIdentifier: '--runtime-id linux-arm64'
|
||||
_BuildArchitecture: 'arm64'
|
||||
# Do not publish zips and tarballs. The linux-x64 binaries are
|
||||
# already published by Build_LinuxPortable_Release_x64
|
||||
_AdditionalBuildParameters: '/p:PublishBinariesAndBadge=false /p:CLIBUILD_SKIP_TESTS=true'
|
||||
# Never run tests on arm64
|
||||
_TestArg: ''
|
||||
Build_LinuxPortable_Release_x64:
|
||||
_BuildConfig: Release
|
||||
_DockerParameter: ''
|
||||
_LinuxPortable: '--linux-portable'
|
||||
_RuntimeIdentifier: ''
|
||||
_BuildArchitecture: 'x64'
|
||||
_TestArg: $(_NonWindowsTestArg)
|
||||
## Linux
|
||||
|
||||
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
|
||||
- template: /eng/build.yml
|
||||
- template: eng/build.yml
|
||||
parameters:
|
||||
agentOs: Linux
|
||||
pool:
|
||||
${{ if eq(variables['System.TeamProject'], 'internal') }}:
|
||||
name: NetCore1ESPool-Svc-Internal
|
||||
demands: ImageOverride -equals Build.Ubuntu.1804.Amd64
|
||||
timeoutInMinutes: 180
|
||||
strategy:
|
||||
matrix:
|
||||
Build_LinuxPortable_Release_x64:
|
||||
_BuildConfig: Release
|
||||
_DockerParameter: ''
|
||||
_LinuxPortable: '--linux-portable'
|
||||
_RuntimeIdentifier: ''
|
||||
_BuildArchitecture: 'x64'
|
||||
_TestArg: ''
|
||||
Build_Release_arm64:
|
||||
_BuildConfig: Release
|
||||
_BuildArchitecture: arm64
|
||||
_DOTNET_CLI_UI_LANGUAGE: ''
|
||||
_AdditionalBuildParameters: ''
|
||||
# Never run tests on arm64
|
||||
_TestArg: ''
|
||||
pgoInstrument: true
|
||||
jobName: Build_Ubuntu_22_04_Debug_x64
|
||||
container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-22.04'
|
||||
buildConfiguration: Debug
|
||||
buildArchitecture: x64
|
||||
linuxPortable: true
|
||||
runTests: true
|
||||
- template: eng/build.yml
|
||||
parameters:
|
||||
agentOs: Linux
|
||||
jobName: Build_Fedora_36_Debug_x64
|
||||
container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-36'
|
||||
buildConfiguration: Debug
|
||||
buildArchitecture: x64
|
||||
linuxPortable: true
|
||||
runTests: true
|
||||
- template: eng/build.yml
|
||||
parameters:
|
||||
agentOs: Linux
|
||||
jobName: Build_CentOS_8_Stream_Debug_x64
|
||||
container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream8'
|
||||
buildConfiguration: Debug
|
||||
buildArchitecture: x64
|
||||
linuxPortable: false
|
||||
runTests: true
|
||||
- template: eng/build.yml
|
||||
parameters:
|
||||
agentOs: Linux
|
||||
jobName: Build_Debian_Stretch_Debug_x64
|
||||
container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:debian-stretch'
|
||||
buildConfiguration: Debug
|
||||
buildArchitecture: x64
|
||||
additionalBuildParameters: '/p:BuildSdkDeb=true'
|
||||
linuxPortable: false
|
||||
runTests: true
|
||||
- template: eng/build.yml
|
||||
parameters:
|
||||
agentOs: Linux
|
||||
jobName: Build_Arm64_Debug
|
||||
buildConfiguration: Debug
|
||||
buildArchitecture: arm64
|
||||
runtimeIdentifier: 'linux-arm64'
|
||||
linuxPortable: true
|
||||
# Never run tests on arm64
|
||||
runTests: false
|
||||
- template: eng/build.yml
|
||||
parameters:
|
||||
agentOs: Linux
|
||||
jobName: Build_Linux_musl_Debug_x64
|
||||
container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.15-WithNode'
|
||||
buildConfiguration: Debug
|
||||
buildArchitecture: x64
|
||||
runtimeIdentifier: 'linux-musl-x64'
|
||||
# Pass in HostOSName when running on alpine
|
||||
additionalBuildParameters: '/p:HostOSName="linux-musl"'
|
||||
linuxPortable: false
|
||||
runTests: true
|
||||
- template: eng/build.yml
|
||||
parameters:
|
||||
agentOs: Linux
|
||||
jobName: Build_LinuxPortable_Release_x64
|
||||
buildConfiguration: Release
|
||||
buildArchitecture: x64
|
||||
linuxPortable: true
|
||||
runTests: true
|
||||
|
||||
- template: /eng/build.yml
|
||||
parameters:
|
||||
agentOs: Darwin
|
||||
pool:
|
||||
vmImage: 'macOS-latest'
|
||||
timeoutInMinutes: 180
|
||||
strategy:
|
||||
matrix:
|
||||
Build_Release_x64:
|
||||
_BuildConfig: Release
|
||||
_RuntimeIdentifier: ''
|
||||
_BuildArchitecture: 'x64'
|
||||
_TestArg: $(_NonWindowsTestArg)
|
||||
${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
|
||||
Build_Release_arm64:
|
||||
_BuildConfig: Release
|
||||
_RuntimeIdentifier: '--runtime-id osx-arm64'
|
||||
_BuildArchitecture: 'arm64'
|
||||
# Never run tests on arm64
|
||||
_TestArg: ''
|
||||
# MacOS
|
||||
|
||||
- template: eng/build.yml
|
||||
parameters:
|
||||
agentOs: Darwin
|
||||
jobName: Build_Release_x64
|
||||
buildConfiguration: Release
|
||||
buildArchitecture: x64
|
||||
runTests: true
|
||||
|
||||
## Official/PGO instrumentation Builds
|
||||
|
||||
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
|
||||
|
||||
## Windows
|
||||
|
||||
- template: eng/build.yml
|
||||
parameters:
|
||||
agentOs: Windows_NT
|
||||
jobName: Build_Release_x64
|
||||
buildConfiguration: Release
|
||||
buildArchitecture: x64
|
||||
additionalBuildParameters: '/p:PublishInternalAsset=true'
|
||||
runTests: false
|
||||
- template: eng/build.yml
|
||||
parameters:
|
||||
agentOs: Windows_NT
|
||||
jobName: Build_Release_x86
|
||||
buildConfiguration: Release
|
||||
buildArchitecture: x86
|
||||
runTests: false
|
||||
- template: eng/build.yml
|
||||
parameters:
|
||||
agentOs: Windows_NT
|
||||
jobName: Build_Release_arm64
|
||||
buildConfiguration: Release
|
||||
buildArchitecture: arm64
|
||||
runTests: false
|
||||
|
||||
## Linux
|
||||
|
||||
- template: eng/build.yml
|
||||
parameters:
|
||||
agentOs: Linux
|
||||
jobName: Build_Arm_Release
|
||||
buildConfiguration: Release
|
||||
buildArchitecture: arm
|
||||
runtimeIdentifier: 'linux-arm'
|
||||
linuxPortable: true
|
||||
runTests: false
|
||||
- template: eng/build.yml
|
||||
parameters:
|
||||
agentOs: Linux
|
||||
jobName: Build_Arm64_Release
|
||||
buildConfiguration: Release
|
||||
buildArchitecture: arm64
|
||||
runtimeIdentifier: 'linux-arm64'
|
||||
linuxPortable: true
|
||||
runTests: false
|
||||
- template: eng/build.yml
|
||||
parameters:
|
||||
agentOs: Linux
|
||||
jobName: Build_Linux_musl_Release_arm
|
||||
container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-18.04-cross'
|
||||
buildConfiguration: Release
|
||||
buildArchitecture: arm
|
||||
runtimeIdentifier: 'linux-musl-arm'
|
||||
additionalBuildParameters: '/p:OSName="linux-musl"'
|
||||
linuxPortable: false
|
||||
runTests: false
|
||||
- template: eng/build.yml
|
||||
parameters:
|
||||
agentOs: Linux
|
||||
jobName: Build_Linux_musl_Release_arm64
|
||||
buildConfiguration: Release
|
||||
buildArchitecture: arm64
|
||||
runtimeIdentifier: 'linux-musl-arm64'
|
||||
additionalBuildParameters: '/p:OSName="linux-musl"'
|
||||
linuxPortable: false
|
||||
runTests: false
|
||||
- template: eng/build.yml
|
||||
parameters:
|
||||
agentOs: Linux
|
||||
jobName: Build_Linux_musl_Release_x64
|
||||
container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.15-WithNode'
|
||||
buildConfiguration: Release
|
||||
buildArchitecture: x64
|
||||
runtimeIdentifier: 'linux-musl-x64'
|
||||
# Pass in HostOSName when running on alpine
|
||||
additionalBuildParameters: '/p:HostOSName="linux-musl"'
|
||||
linuxPortable: false
|
||||
runTests: false
|
||||
- template: eng/build.yml
|
||||
parameters:
|
||||
agentOs: Linux
|
||||
jobName: Build_Linux_Portable_Deb_Release_x64
|
||||
container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-22.04-debpkg'
|
||||
buildConfiguration: Release
|
||||
buildArchitecture: x64
|
||||
# Do not publish zips and tarballs. The linux-x64 binaries are
|
||||
# already published by Build_LinuxPortable_Release_x64
|
||||
additionalBuildParameters: '/p:PublishBinariesAndBadge=false /p:BuildSdkDeb=true'
|
||||
linuxPortable: true
|
||||
runTests: false
|
||||
- template: eng/build.yml
|
||||
parameters:
|
||||
agentOs: Linux
|
||||
jobName: Build_Linux_Portable_Rpm_Release_x64
|
||||
container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:cbl-mariner-2.0-fpm'
|
||||
buildConfiguration: Release
|
||||
buildArchitecture: x64
|
||||
# Do not publish zips and tarballs. The linux-x64 binaries are
|
||||
# already published by Build_LinuxPortable_Release_x64
|
||||
additionalBuildParameters: '/p:PublishBinariesAndBadge=false /p:IsRPMBasedDistro=true'
|
||||
linuxPortable: true
|
||||
runTests: false
|
||||
- template: eng/build.yml
|
||||
parameters:
|
||||
agentOs: Linux
|
||||
jobName: Build_Linux_Portable_Rpm_Release_Arm64
|
||||
container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:cbl-mariner-2.0-fpm'
|
||||
buildConfiguration: Release
|
||||
buildArchitecture: arm64
|
||||
runtimeIdentifier: 'linux-arm64'
|
||||
# Do not publish zips and tarballs. The linux-x64 binaries are
|
||||
# already published by Build_LinuxPortable_Release_x64
|
||||
additionalBuildParameters: '/p:PublishBinariesAndBadge=false /p:CLIBUILD_SKIP_TESTS=true /p:IsRPMBasedDistro=true'
|
||||
linuxPortable: true
|
||||
runTests: false
|
||||
- template: eng/build.yml
|
||||
parameters:
|
||||
agentOs: Linux
|
||||
jobName: Build_LinuxPortable_Release_x64
|
||||
buildConfiguration: Release
|
||||
buildArchitecture: x64
|
||||
linuxPortable: true
|
||||
runTests: false
|
||||
|
||||
# MacOS
|
||||
|
||||
- template: eng/build.yml
|
||||
parameters:
|
||||
agentOs: Darwin
|
||||
jobName: Build_Release_x64
|
||||
buildConfiguration: Release
|
||||
buildArchitecture: x64
|
||||
runTests: false
|
||||
- template: eng/build.yml
|
||||
parameters:
|
||||
agentOs: Darwin
|
||||
jobName: Build_Release_arm64
|
||||
runtimeIdentifier: 'osx-arm64'
|
||||
buildConfiguration: Release
|
||||
buildArchitecture: arm64
|
||||
runTests: false
|
||||
|
||||
## Windows PGO Instrumentation builds
|
||||
|
||||
- template: eng/build.yml
|
||||
parameters:
|
||||
agentOs: Windows_NT
|
||||
pgoInstrument: true
|
||||
jobName: Build_Release_x64
|
||||
buildConfiguration: Release
|
||||
buildArchitecture: x64
|
||||
additionalBuildParameters: '/p:PublishInternalAsset=true'
|
||||
runTests: false
|
||||
- template: eng/build.yml
|
||||
parameters:
|
||||
agentOs: Windows_NT
|
||||
pgoInstrument: true
|
||||
jobName: Build_Release_x86
|
||||
buildConfiguration: Release
|
||||
buildArchitecture: x86
|
||||
runTests: false
|
||||
- template: eng/build.yml
|
||||
parameters:
|
||||
agentOs: Windows_NT
|
||||
pgoInstrument: true
|
||||
jobName: Build_Release_arm64
|
||||
buildConfiguration: Release
|
||||
buildArchitecture: arm64
|
||||
runTests: false
|
||||
|
||||
## Linux PGO Instrumentation builds
|
||||
|
||||
- template: eng/build.yml
|
||||
parameters:
|
||||
agentOs: Linux
|
||||
pgoInstrument: true
|
||||
jobName: Build_LinuxPortable_Release_x64
|
||||
buildConfiguration: Release
|
||||
buildArchitecture: x64
|
||||
linuxPortable: true
|
||||
runTests: false
|
||||
|
||||
- template: eng/build.yml
|
||||
parameters:
|
||||
agentOs: Linux
|
||||
pgoInstrument: true
|
||||
jobName: Build_Release_arm64
|
||||
buildConfiguration: Release
|
||||
buildArchitecture: arm64
|
||||
linuxPortable: true
|
||||
runTests: false
|
||||
|
||||
- template: /eng/common/templates/jobs/source-build.yml
|
||||
|
||||
- template: /src/SourceBuild/Arcade/eng/common/templates/job/source-build-create-tarball.yml
|
||||
|
||||
# For .NET 7.0, source-build currently supports 7.0.1xx. Disable tarball build validation in all other branches.
|
||||
# - ${{ if in(variables['Build.Reason'], 'PullRequest') }}:
|
||||
# - template: /src/SourceBuild/Arcade/eng/common/templates/job/source-build-run-tarball-build.yml
|
||||
# parameters:
|
||||
# dependsOn: Source_Build_Create_Tarball
|
||||
|
||||
# https://github.com/dotnet/core-sdk/issues/248
|
||||
# - template: /eng/build.yml
|
||||
# parameters:
|
||||
# agentOs: FreeBSD
|
||||
# queue:
|
||||
# name: dnceng-freebsd-internal
|
||||
# timeoutInMinutes: 180
|
||||
# matrix:
|
||||
# Build_Release:
|
||||
# _BuildConfig: Release
|
||||
# _BuildArchitecture: 'x64'
|
||||
# _AdditionalBuildParameters: '/p:DisableSourceLink=true /p:DISABLE_CROSSGEN=true'
|
||||
|
||||
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
|
||||
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
|
||||
- stage: Publish
|
||||
dependsOn:
|
||||
- Build
|
||||
jobs:
|
||||
- template: /eng/common/templates/job/publish-build-assets.yml
|
||||
parameters:
|
||||
dependsOn:
|
||||
- Windows_NT
|
||||
- Linux
|
||||
- Darwin
|
||||
- Source_Build_Managed
|
||||
- Source_Build_Create_Tarball
|
||||
publishUsingPipelines: true
|
||||
publishAssetsImmediately: true
|
||||
pool:
|
||||
${{ if eq(variables['System.TeamProject'], 'internal') }}:
|
||||
name: NetCore1ESPool-Svc-Internal
|
||||
demands: ImageOverride -equals windows.vs2017.amd64
|
||||
|
||||
|
||||
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
|
||||
- template: eng\common\templates\post-build\post-build.yml
|
||||
parameters:
|
||||
publishingInfraVersion: 3
|
||||
enableSymbolValidation: false
|
||||
enableSigningValidation: false
|
||||
enableNugetValidation: false
|
||||
enableSourceLinkValidation: false
|
||||
publishInstallersAndChecksums: true
|
||||
SDLValidationParameters:
|
||||
enable: false
|
||||
params: ' -SourceToolsList @("policheck","credscan")
|
||||
-TsaInstanceURL $(_TsaInstanceURL)
|
||||
-TsaProjectName $(_TsaProjectName)
|
||||
-TsaNotificationEmail $(_TsaNotificationEmail)
|
||||
-TsaCodebaseAdmin $(_TsaCodebaseAdmin)
|
||||
-TsaBugAreaPath $(_TsaBugAreaPath)
|
||||
-TsaIterationPath $(_TsaIterationPath)
|
||||
-TsaRepositoryName "dotnet-installer"
|
||||
-TsaCodebaseName "dotnet-installer"
|
||||
-TsaPublish $True'
|
||||
name: $(DncEngInternalBuildPool)
|
||||
demands: ImageOverride -equals windows.vs2022.amd64
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# Users referenced in this file will automatically be requested as reviewers for PRs that modify the given paths.
|
||||
# See https://help.github.com/articles/about-code-owners/
|
||||
|
||||
# Snaps
|
||||
|
||||
/.devcontainer/ @dotnet/source-build-internal
|
||||
/eng/SourceBuild* @dotnet/source-build-internal
|
||||
/src/snaps/ @rbhanda
|
||||
/src/SourceBuild/ @dotnet/source-build-internal
|
||||
/src/VirtualMonoRepo/ @dotnet/product-construction
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
<DebugSymbols>true</DebugSymbols>
|
||||
|
||||
<IsShipping>true</IsShipping>
|
||||
<CoreSdkTargetFramework>net7.0</CoreSdkTargetFramework>
|
||||
<CoreSdkTargetFramework>net8.0</CoreSdkTargetFramework>
|
||||
|
||||
<!-- MSB3243 and MSB3247 fire when attempting to resolve references to the same assembly from different cultures.
|
||||
This is a prevalent problem in building the precomputed assembly reference cache. Limiting the assemblies resolved
|
||||
|
|
31
NuGet.config
31
NuGet.config
|
@ -7,41 +7,23 @@
|
|||
<clear />
|
||||
<!--Begin: Package sources managed by Dependency Flow automation. Do not edit the sources below.-->
|
||||
<!-- Begin: Package sources from DotNet-msbuild-Trusted -->
|
||||
<add key="darc-pub-DotNet-msbuild-Trusted-5785ed5" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/darc-pub-DotNet-msbuild-Trusted-5785ed5c/nuget/v3/index.json" />
|
||||
<!-- End: Package sources from DotNet-msbuild-Trusted -->
|
||||
<!-- Begin: Package sources from dotnet-aspnetcore -->
|
||||
<!-- End: Package sources from dotnet-aspnetcore -->
|
||||
<!-- Begin: Package sources from dotnet-emsdk -->
|
||||
<add key="darc-pub-dotnet-emsdk-9b227c1" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/darc-pub-dotnet-emsdk-9b227c16/nuget/v3/index.json" />
|
||||
<add key="darc-pub-dotnet-emsdk-9b227c1-2" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/darc-pub-dotnet-emsdk-9b227c16-2/nuget/v3/index.json" />
|
||||
<add key="darc-pub-dotnet-emsdk-9b227c1-1" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/darc-pub-dotnet-emsdk-9b227c16-1/nuget/v3/index.json" />
|
||||
<!-- End: Package sources from dotnet-emsdk -->
|
||||
<!-- Begin: Package sources from dotnet-runtime -->
|
||||
<!-- End: Package sources from dotnet-runtime -->
|
||||
<!-- Begin: Package sources from dotnet-sdk -->
|
||||
<add key="darc-pub-dotnet-sdk-6b937a4" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/darc-pub-dotnet-sdk-6b937a45/nuget/v3/index.json" />
|
||||
<!-- End: Package sources from dotnet-sdk -->
|
||||
<!-- Begin: Package sources from dotnet-windowsdesktop -->
|
||||
<add key="darc-int-dotnet-windowsdesktop-e346a9e" value="https://pkgs.dev.azure.com/dnceng/internal/_packaging/darc-int-dotnet-windowsdesktop-e346a9e9/nuget/v3/index.json" />
|
||||
<add key="darc-int-dotnet-windowsdesktop-e346a9e-2" value="https://pkgs.dev.azure.com/dnceng/internal/_packaging/darc-int-dotnet-windowsdesktop-e346a9e9-2/nuget/v3/index.json" />
|
||||
<add key="darc-int-dotnet-windowsdesktop-e346a9e-1" value="https://pkgs.dev.azure.com/dnceng/internal/_packaging/darc-int-dotnet-windowsdesktop-e346a9e9-1/nuget/v3/index.json" />
|
||||
<!-- End: Package sources from dotnet-windowsdesktop -->
|
||||
<!--End: Package sources managed by Dependency Flow automation. Do not edit the sources above.-->
|
||||
<add key="dotnet-tools" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json" />
|
||||
<add key="dotnet-eng" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json" />
|
||||
<add key="general-testing" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/general-testing/nuget/v3/index.json" />
|
||||
<add key="dotnet-public" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json" />
|
||||
<add key="dotnet3-transport" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet3-transport/nuget/v3/index.json" />
|
||||
<add key="dotnet3.1-transport" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet3.1-transport/nuget/v3/index.json" />
|
||||
<add key="dotnet5" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5/nuget/v3/index.json" />
|
||||
<add key="dotnet5-transport" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5-transport/nuget/v3/index.json" />
|
||||
<add key="dotnet-eol-transport" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eol-transport/nuget/v3/index.json" />
|
||||
<add key="dotnet6" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet6/nuget/v3/index.json" />
|
||||
<add key="dotnet6-transport" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet6-transport/nuget/v3/index.json" />
|
||||
<add key="dotnet7" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet7/nuget/v3/index.json" />
|
||||
<add key="dotnet7-transport" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet7-transport/nuget/v3/index.json" />
|
||||
<add key="dotnet8" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet8/nuget/v3/index.json" />
|
||||
<add key="dotnet8-transport" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet8-transport/nuget/v3/index.json" />
|
||||
<add key="dotnet-libraries" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-libraries/nuget/v3/index.json" />
|
||||
<!-- Temporary feed for Xamarin workload manifest -->
|
||||
<add key="xamarin" value="https://pkgs.dev.azure.com/azure-public/vside/_packaging/xamarin-impl/nuget/v3/index.json" />
|
||||
<add key="dotnet-libraries-transport" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-libraries-transport/nuget/v3/index.json" />
|
||||
<add key="msbuild-prerelease-with-release-version" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/darc-pub-DotNet-msbuild-Trusted-8ffc3fe3/nuget/v3/index.json" />
|
||||
</packageSources>
|
||||
<disabledPackageSources>
|
||||
<!--Begin: Package sources managed by Dependency Flow automation. Do not edit the sources below.-->
|
||||
|
@ -51,9 +33,6 @@
|
|||
<!-- Begin: Package sources from dotnet-sdk -->
|
||||
<!-- End: Package sources from dotnet-sdk -->
|
||||
<!-- Begin: Package sources from dotnet-windowsdesktop -->
|
||||
<add key="darc-int-dotnet-windowsdesktop-e346a9e-1" value="true" />
|
||||
<add key="darc-int-dotnet-windowsdesktop-e346a9e-2" value="true" />
|
||||
<add key="darc-int-dotnet-windowsdesktop-e346a9e" value="true" />
|
||||
<!-- End: Package sources from dotnet-windowsdesktop -->
|
||||
<!-- End: Package sources from dotnet-runtime -->
|
||||
<!--End: Package sources managed by Dependency Flow automation. Do not edit the sources above.-->
|
||||
|
|
511
README.md
511
README.md
|
@ -1,6 +1,5 @@
|
|||
# .NET Core SDK
|
||||
# .NET SDK Installers
|
||||
|
||||
[](https://gitter.im/dotnet/cli?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||
[](https://GitHub.com/dotnet/installer/releases/)
|
||||
[](https://github.com/dotnet/installer)
|
||||
[](https://GitHub.com/dotnet/installer/issues?q=is%3Aissue+is%3Aopened)
|
||||
|
@ -11,13 +10,22 @@
|
|||
[](https://GitHub.com/dotnet/installer/graphs/contributors/)
|
||||
[]()
|
||||
|
||||
This repo contains the source code for the cross-platform [.NET](http://github.com/dotnet/core) SDK. It aggregates the .NET toolchain, the .NET runtime, the templates, and the .NET Windows Desktop runtime. It produces zip, tarballs, and native packages for various supported platforms.
|
||||
|
||||
This repo contains the source code for the cross-platform [.NET Core](http://github.com/dotnet/core) SDK. It aggregates the .NET Toolchain, the .NET Core runtime, the templates, and the .NET Core Windows Desktop runtime. It produces zip, tarballs, and native packages for various supported platforms.
|
||||
|
||||
Looking for released versions of the .NET Core tooling?
|
||||
Looking for released versions of the .NET tooling?
|
||||
----------------------------------------
|
||||
|
||||
Download released versions of the .NET Core tools (CLI, MSBuild and the new csproj) at https://dot.net/core.
|
||||
The links below are for preview versions of .NET tooling. Prefer to use released versions of the .NET tools? Go to https://dot.net/download.
|
||||
|
||||
Looking for .NET Framework downloads?
|
||||
----------------------------------------
|
||||
|
||||
.NET Framework is the product from which the .NET Core project originated. .NET Core (mostly just called ".NET" here) adds many features and improvements and supports many more platforms than .NET Framework. .NET Framework remains fully supported and you can find the downloads on the [.NET website](https://dotnet.microsoft.com/download/dotnet-framework). For new projects, we recommend you use .NET Core.
|
||||
|
||||
Want to contribute or find out more about the .NET project?
|
||||
----------------------------------------
|
||||
|
||||
This repo is for the installers. Most of the implementation is in other repos, such as the [dotnet/runtime repo](https://github.com/dotnet/runtime) or the [dotnet/aspnetcore repo](https://github.com/dotnet/aspnetcore) and [many others](https://github.com/dotnet/core/blob/main/Documentation/core-repos.md). We welcome you to join us there!
|
||||
|
||||
Found an issue?
|
||||
---------------
|
||||
|
@ -25,7 +33,7 @@ You can consult the [Documents Index for the SDK repo](https://github.com/dotnet
|
|||
|
||||
This project has adopted the code of conduct defined by the [Contributor Covenant](http://contributor-covenant.org/) to clarify expected behavior in our community. For more information, see the [.NET Foundation Code of Conduct](http://www.dotnetfoundation.org/code-of-conduct).
|
||||
|
||||
# Build .NET installer
|
||||
# Build .NET installer
|
||||
|
||||
The repository contains native code project required for the Windows installer. If you intend to build it locally on Windows, you will need to ensure that you have the following items installed.
|
||||
- Install CMAKE 3.21.0 is required if you're building VS 17.0. Make sure to add CMAKE to your PATH (the installer will prompt you).
|
||||
|
@ -51,7 +59,22 @@ For the latest information about Source-Build support for new .NET versions, ple
|
|||
|
||||
The dependencies for building .NET from source can be found [here](https://github.com/dotnet/runtime/blob/main/docs/workflow/requirements/linux-requirements.md).
|
||||
|
||||
## Building
|
||||
## Building .NET 8.0
|
||||
|
||||
.NET 8.0 (currently in prerelease) and newer will be built from the [dotnet/dotnet](https://github.com/dotnet/dotnet) repo.
|
||||
Clone the dotnet/dotnet repo and check out the tag for the desired release.
|
||||
Then, follow the instructions in [dotnet/dotnet's README](https://github.com/dotnet/dotnet/blob/main/README.md#dev-instructions) to build .NET from source.
|
||||
|
||||
### Codespaces
|
||||
|
||||
It is also possible to utilize [GitHub Codespaces](https://github.com/features/codespaces) and build .NET from the `dotnet/dotnet` repository from source that way.
|
||||
You can either create a Codespace in `dotnet/dotnet` directly or you can also make one from a PR branch in `dotnet/installer`. This will give you an environment with the VMR checked out and containing all of new changes from the PR.
|
||||
This can be especially valuable for investigations of source-build failures during PRs.
|
||||
|
||||
To create a Codespace for a `dotnet/installer` PR, use the `vmr-source-build` devcontainer configuration (select this when "newing the Codespace with options" under the three-dots-menu).
|
||||
Further instructions on how to build inside of the Codespace will be available upon launch.
|
||||
|
||||
## Building .NET 7.0 and .NET 6.0
|
||||
|
||||
1. Create a .NET source tarball.
|
||||
|
||||
|
@ -67,10 +90,8 @@ The dependencies for building .NET from source can be found [here](https://githu
|
|||
|
||||
```bash
|
||||
cd /path/to/complete/dotnet/sources
|
||||
./prep.sh
|
||||
./prep.sh --bootstrap
|
||||
```
|
||||
|
||||
On arm64, please use `./prep.sh --bootstrap` instead. This issue is being tracked [here](https://github.com/dotnet/source-build/issues/2758).
|
||||
|
||||
3. Build the .NET SDK
|
||||
|
||||
|
@ -104,20 +125,30 @@ The dependencies for building .NET from source can be found [here](https://githu
|
|||
|
||||
Visibility|All legs|
|
||||
|:------|:------|
|
||||
|Public|[](https://dev.azure.com/dnceng/public/_build?definitionId=176)|
|
||||
|Public|[](https://dev.azure.com/dnceng-public/public/_build/latest?definitionId=20&branchName=main)|
|
||||
|Microsoft Internal|[](https://dev.azure.com/dnceng/internal/_build?definitionId=286)|
|
||||
|
||||
## Installers and Binaries
|
||||
|
||||
You can download the .NET Core SDK as either an installer (MSI, PKG) or a zip (zip, tar.gz). The .NET Core SDK contains both the .NET Core runtime and CLI tools.
|
||||
You can download the .NET SDK as either an installer (MSI, PKG) or a zip (zip, tar.gz). The .NET SDK contains both the .NET runtime and CLI tools.
|
||||
|
||||
**Note:** Be aware that the following installers are the **latest bits**. If you
|
||||
want to install the latest released versions, check out the [preceding section](#looking-for-released-versions-of-the-net-core-tooling).
|
||||
With development builds, internal NuGet feeds are necessary for some scenarios (for example, to acquire the runtime pack for self-contained apps). You can use the following NuGet.config to configure these feeds. See the following document [Configuring NuGet behavior](https://docs.microsoft.com/en-us/nuget/consume-packages/configuring-nuget-behavior) for more information on where to modify your NuGet.config to apply the changes.
|
||||
|
||||
**For .NET 8 builds**
|
||||
|
||||
```xml
|
||||
<configuration>
|
||||
<packageSources>
|
||||
<add key="dotnet8" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet8/nuget/v3/index.json" />
|
||||
</packageSources>
|
||||
</configuration>
|
||||
```
|
||||
|
||||
**For .NET 7 builds**
|
||||
|
||||
```
|
||||
```xml
|
||||
<configuration>
|
||||
<packageSources>
|
||||
<add key="dotnet7" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet7/nuget/v3/index.json" />
|
||||
|
@ -125,46 +156,25 @@ With development builds, internal NuGet feeds are necessary for some scenarios (
|
|||
</configuration>
|
||||
```
|
||||
|
||||
**For .NET 6 builds**
|
||||
|
||||
```
|
||||
<configuration>
|
||||
<packageSources>
|
||||
<add key="dotnet6" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet6/nuget/v3/index.json" />
|
||||
</packageSources>
|
||||
</configuration>
|
||||
```
|
||||
|
||||
**For .NET 6 Optional workloads**
|
||||
_The below feed is needed for 6.0 releases before RC1_
|
||||
|
||||
We strongly recommend using `--skip-manifest-update` with `dotnet workload install` as otherwise you could pick up a random build of various workloads as we'll automatically update to the newest one available on the feed.
|
||||
|
||||
```
|
||||
<configuration>
|
||||
<packageSources>
|
||||
<add key="maui" value="https://pkgs.dev.azure.com/azure-public/vside/_packaging/xamarin-impl/nuget/v3/index.json" />
|
||||
</packageSources>
|
||||
</configuration>
|
||||
```
|
||||
Please do not directly edit the table below. Use https://github.com/dotnet/installer/tree/main/tools/sdk-readme-table-generator to help you generate it. Make sure to run the table generator test and make any changes to the generator along with your changes to the table. Daily servicing builds have been removed as all servicing is done in private repos to avoid disclosure of critical security fixes. All public servicing builds can be downloaded at http://aka.ms/dotnet-download.
|
||||
Do not directly edit the table below. Use https://github.com/dotnet/installer/tree/main/tools/sdk-readme-table-generator to help you generate it. Make sure to run the table generator test and make any changes to the generator along with your changes to the table. Daily servicing builds aren't shown here because they may contain upcoming security fixes. All public servicing builds can be downloaded at http://aka.ms/dotnet-download.
|
||||
|
||||
### Table
|
||||
*Note* the 7.0.100 build will be finished internally. Below is the last public version available from that branch but is not fully updated with the final runtime.
|
||||
|
||||
| Platform | main<br>(7.0.x Runtime) | Release/7.0.1xx-preview7<br>(7.0.x Runtime) | Release/6.0.4XX<br>(6.0.x Runtime) |
|
||||
| Platform | main<br>(8.0.x Runtime) | 8.0.1xx-preview6<br>(8.0-preview6 Runtime) | Release/7.0.4xx<br>(7.0.x Runtime) |
|
||||
| :--------- | :----------: | :----------: | :----------: |
|
||||
| **Windows x64** | [![][win-x64-badge-main]][win-x64-version-main]<br>[Installer][win-x64-installer-main] - [Checksum][win-x64-installer-checksum-main]<br>[zip][win-x64-zip-main] - [Checksum][win-x64-zip-checksum-main] | [![][win-x64-badge-7.0.1XX-preview7]][win-x64-version-7.0.1XX-preview7]<br>[Installer][win-x64-installer-7.0.1XX-preview7] - [Checksum][win-x64-installer-checksum-7.0.1XX-preview7]<br>[zip][win-x64-zip-7.0.1XX-preview7] - [Checksum][win-x64-zip-checksum-7.0.1XX-preview7] | [![][win-x64-badge-6.0.4XX]][win-x64-version-6.0.4XX]<br>[Installer][win-x64-installer-6.0.4XX] - [Checksum][win-x64-installer-checksum-6.0.4XX]<br>[zip][win-x64-zip-6.0.4XX] - [Checksum][win-x64-zip-checksum-6.0.4XX] |
|
||||
| **Windows x86** | [![][win-x86-badge-main]][win-x86-version-main]<br>[Installer][win-x86-installer-main] - [Checksum][win-x86-installer-checksum-main]<br>[zip][win-x86-zip-main] - [Checksum][win-x86-zip-checksum-main] | [![][win-x86-badge-7.0.1XX-preview7]][win-x86-version-7.0.1XX-preview7]<br>[Installer][win-x86-installer-7.0.1XX-preview7] - [Checksum][win-x86-installer-checksum-7.0.1XX-preview7]<br>[zip][win-x86-zip-7.0.1XX-preview7] - [Checksum][win-x86-zip-checksum-7.0.1XX-preview7] | [![][win-x86-badge-6.0.4XX]][win-x86-version-6.0.4XX]<br>[Installer][win-x86-installer-6.0.4XX] - [Checksum][win-x86-installer-checksum-6.0.4XX]<br>[zip][win-x86-zip-6.0.4XX] - [Checksum][win-x86-zip-checksum-6.0.4XX] |
|
||||
| **Windows x64** | [![][win-x64-badge-main]][win-x64-version-main]<br>[Installer][win-x64-installer-main] - [Checksum][win-x64-installer-checksum-main]<br>[zip][win-x64-zip-main] - [Checksum][win-x64-zip-checksum-main] | [![][win-x64-badge-8.0.1XX-preview6]][win-x64-version-8.0.1XX-preview6]<br>[Installer][win-x64-installer-8.0.1XX-preview6] - [Checksum][win-x64-installer-checksum-8.0.1XX-preview6]<br>[zip][win-x64-zip-8.0.1XX-preview6] - [Checksum][win-x64-zip-checksum-8.0.1XX-preview6] | [![][win-x64-badge-7.0.4XX]][win-x64-version-7.0.4XX]<br>[Installer][win-x64-installer-7.0.4XX] - [Checksum][win-x64-installer-checksum-7.0.4XX]<br>[zip][win-x64-zip-7.0.4XX] - [Checksum][win-x64-zip-checksum-7.0.4XX] |
|
||||
| **Windows x86** | [![][win-x86-badge-main]][win-x86-version-main]<br>[Installer][win-x86-installer-main] - [Checksum][win-x86-installer-checksum-main]<br>[zip][win-x86-zip-main] - [Checksum][win-x86-zip-checksum-main] | [![][win-x86-badge-8.0.1XX-preview6]][win-x86-version-8.0.1XX-preview6]<br>[Installer][win-x86-installer-8.0.1XX-preview6] - [Checksum][win-x86-installer-checksum-8.0.1XX-preview6]<br>[zip][win-x86-zip-8.0.1XX-preview6] - [Checksum][win-x86-zip-checksum-8.0.1XX-preview6] | [![][win-x86-badge-7.0.4XX]][win-x86-version-7.0.4XX]<br>[Installer][win-x86-installer-7.0.4XX] - [Checksum][win-x86-installer-checksum-7.0.4XX]<br>[zip][win-x86-zip-7.0.4XX] - [Checksum][win-x86-zip-checksum-7.0.4XX] |
|
||||
| **Windows arm** | **N/A** | **N/A** | **N/A** |
|
||||
| **Windows arm64** | [![][win-arm64-badge-main]][win-arm64-version-main]<br>[Installer][win-arm64-installer-main] - [Checksum][win-arm64-installer-checksum-main]<br>[zip][win-arm64-zip-main] | [![][win-arm64-badge-7.0.1XX-preview7]][win-arm64-version-7.0.1XX-preview7]<br>[Installer][win-arm64-installer-7.0.1XX-preview7] - [Checksum][win-arm64-installer-checksum-7.0.1XX-preview7]<br>[zip][win-arm64-zip-7.0.1XX-preview7] | [![][win-arm64-badge-6.0.4XX]][win-arm64-version-6.0.4XX]<br>[Installer][win-arm64-installer-6.0.4XX] - [Checksum][win-arm64-installer-checksum-6.0.4XX]<br>[zip][win-arm64-zip-6.0.4XX] |
|
||||
| **macOS x64** | [![][osx-x64-badge-main]][osx-x64-version-main]<br>[Installer][osx-x64-installer-main] - [Checksum][osx-x64-installer-checksum-main]<br>[tar.gz][osx-x64-targz-main] - [Checksum][osx-x64-targz-checksum-main] | [![][osx-x64-badge-7.0.1XX-preview7]][osx-x64-version-7.0.1XX-preview7]<br>[Installer][osx-x64-installer-7.0.1XX-preview7] - [Checksum][osx-x64-installer-checksum-7.0.1XX-preview7]<br>[tar.gz][osx-x64-targz-7.0.1XX-preview7] - [Checksum][osx-x64-targz-checksum-7.0.1XX-preview7] | [![][osx-x64-badge-6.0.4XX]][osx-x64-version-6.0.4XX]<br>[Installer][osx-x64-installer-6.0.4XX] - [Checksum][osx-x64-installer-checksum-6.0.4XX]<br>[tar.gz][osx-x64-targz-6.0.4XX] - [Checksum][osx-x64-targz-checksum-6.0.4XX] |
|
||||
| **macOS arm64** | [![][osx-arm64-badge-main]][osx-arm64-version-main]<br>[Installer][osx-arm64-installer-main] - [Checksum][osx-arm64-installer-checksum-main]<br>[tar.gz][osx-arm64-targz-main] - [Checksum][osx-arm64-targz-checksum-main] | [![][osx-arm64-badge-7.0.1XX-preview7]][osx-arm64-version-7.0.1XX-preview7]<br>[Installer][osx-arm64-installer-7.0.1XX-preview7] - [Checksum][osx-arm64-installer-checksum-7.0.1XX-preview7]<br>[tar.gz][osx-arm64-targz-7.0.1XX-preview7] - [Checksum][osx-arm64-targz-checksum-7.0.1XX-preview7] | [![][osx-arm64-badge-6.0.4XX]][osx-arm64-version-6.0.4XX]<br>[Installer][osx-arm64-installer-6.0.4XX] - [Checksum][osx-arm64-installer-checksum-6.0.4XX]<br>[tar.gz][osx-arm64-targz-6.0.4XX] - [Checksum][osx-arm64-targz-checksum-6.0.4XX] |
|
||||
| **Linux x64** | [![][linux-badge-main]][linux-version-main]<br>[DEB Installer][linux-DEB-installer-main] - [Checksum][linux-DEB-installer-checksum-main]<br>[RPM Installer][linux-RPM-installer-main] - [Checksum][linux-RPM-installer-checksum-main]<br>_see installer note below_<sup>1</sup><br>[tar.gz][linux-targz-main] - [Checksum][linux-targz-checksum-main] | [![][linux-badge-7.0.1XX-preview7]][linux-version-7.0.1XX-preview7]<br>[DEB Installer][linux-DEB-installer-7.0.1XX-preview7] - [Checksum][linux-DEB-installer-checksum-7.0.1XX-preview7]<br>[RPM Installer][linux-RPM-installer-7.0.1XX-preview7] - [Checksum][linux-RPM-installer-checksum-7.0.1XX-preview7]<br>_see installer note below_<sup>1</sup><br>[tar.gz][linux-targz-7.0.1XX-preview7] - [Checksum][linux-targz-checksum-7.0.1XX-preview7] | [![][linux-badge-6.0.4XX]][linux-version-6.0.4XX]<br>[DEB Installer][linux-DEB-installer-6.0.4XX] - [Checksum][linux-DEB-installer-checksum-6.0.4XX]<br>[RPM Installer][linux-RPM-installer-6.0.4XX] - [Checksum][linux-RPM-installer-checksum-6.0.4XX]<br>_see installer note below_<sup>1</sup><br>[tar.gz][linux-targz-6.0.4XX] - [Checksum][linux-targz-checksum-6.0.4XX] |
|
||||
| **Linux arm** | [![][linux-arm-badge-main]][linux-arm-version-main]<br>[tar.gz][linux-arm-targz-main] - [Checksum][linux-arm-targz-checksum-main] | [![][linux-arm-badge-7.0.1XX-preview7]][linux-arm-version-7.0.1XX-preview7]<br>[tar.gz][linux-arm-targz-7.0.1XX-preview7] - [Checksum][linux-arm-targz-checksum-7.0.1XX-preview7] | [![][linux-arm-badge-6.0.4XX]][linux-arm-version-6.0.4XX]<br>[tar.gz][linux-arm-targz-6.0.4XX] - [Checksum][linux-arm-targz-checksum-6.0.4XX] |
|
||||
| **Linux arm64** | [![][linux-arm64-badge-main]][linux-arm64-version-main]<br>[tar.gz][linux-arm64-targz-main] - [Checksum][linux-arm64-targz-checksum-main] | [![][linux-arm64-badge-7.0.1XX-preview7]][linux-arm64-version-7.0.1XX-preview7]<br>[tar.gz][linux-arm64-targz-7.0.1XX-preview7] - [Checksum][linux-arm64-targz-checksum-7.0.1XX-preview7] | [![][linux-arm64-badge-6.0.4XX]][linux-arm64-version-6.0.4XX]<br>[tar.gz][linux-arm64-targz-6.0.4XX] - [Checksum][linux-arm64-targz-checksum-6.0.4XX] |
|
||||
| **Linux-musl-x64** | [![][linux-musl-x64-badge-main]][linux-musl-x64-version-main]<br>[tar.gz][linux-musl-x64-targz-main] - [Checksum][linux-musl-x64-targz-checksum-main] | [![][linux-musl-x64-badge-7.0.1XX-preview7]][linux-musl-x64-version-7.0.1XX-preview7]<br>[tar.gz][linux-musl-x64-targz-7.0.1XX-preview7] - [Checksum][linux-musl-x64-targz-checksum-7.0.1XX-preview7] | [![][linux-musl-x64-badge-6.0.4XX]][linux-musl-x64-version-6.0.4XX]<br>[tar.gz][linux-musl-x64-targz-6.0.4XX] - [Checksum][linux-musl-x64-targz-checksum-6.0.4XX] |
|
||||
| **Linux-musl-arm** | [![][linux-musl-arm-badge-main]][linux-musl-arm-version-main]<br>[tar.gz][linux-musl-arm-targz-main] - [Checksum][linux-musl-arm-targz-checksum-main] | [![][linux-musl-arm-badge-7.0.1XX-preview7]][linux-musl-arm-version-7.0.1XX-preview7]<br>[tar.gz][linux-musl-arm-targz-7.0.1XX-preview7] - [Checksum][linux-musl-arm-targz-checksum-7.0.1XX-preview7] | [![][linux-musl-arm-badge-6.0.4XX]][linux-musl-arm-version-6.0.4XX]<br>[tar.gz][linux-musl-arm-targz-6.0.4XX] - [Checksum][linux-musl-arm-targz-checksum-6.0.4XX] |
|
||||
| **Linux-musl-arm64** | [![][linux-musl-arm64-badge-main]][linux-musl-arm64-version-main]<br>[tar.gz][linux-musl-arm64-targz-main] - [Checksum][linux-musl-arm64-targz-checksum-main] | [![][linux-musl-arm64-badge-7.0.1XX-preview7]][linux-musl-arm64-version-7.0.1XX-preview7]<br>[tar.gz][linux-musl-arm64-targz-7.0.1XX-preview7] - [Checksum][linux-musl-arm64-targz-checksum-7.0.1XX-preview7] | [![][linux-musl-arm64-badge-6.0.4XX]][linux-musl-arm64-version-6.0.4XX]<br>[tar.gz][linux-musl-arm64-targz-6.0.4XX] - [Checksum][linux-musl-arm64-targz-checksum-6.0.4XX] |
|
||||
| **Windows arm64** | [![][win-arm64-badge-main]][win-arm64-version-main]<br>[Installer][win-arm64-installer-main] - [Checksum][win-arm64-installer-checksum-main]<br>[zip][win-arm64-zip-main] | [![][win-arm64-badge-8.0.1XX-preview6]][win-arm64-version-8.0.1XX-preview6]<br>[Installer][win-arm64-installer-8.0.1XX-preview6] - [Checksum][win-arm64-installer-checksum-8.0.1XX-preview6]<br>[zip][win-arm64-zip-8.0.1XX-preview6] | [![][win-arm64-badge-7.0.4XX]][win-arm64-version-7.0.4XX]<br>[Installer][win-arm64-installer-7.0.4XX] - [Checksum][win-arm64-installer-checksum-7.0.4XX]<br>[zip][win-arm64-zip-7.0.4XX] |
|
||||
| **macOS x64** | [![][osx-x64-badge-main]][osx-x64-version-main]<br>[Installer][osx-x64-installer-main] - [Checksum][osx-x64-installer-checksum-main]<br>[tar.gz][osx-x64-targz-main] - [Checksum][osx-x64-targz-checksum-main] | [![][osx-x64-badge-8.0.1XX-preview6]][osx-x64-version-8.0.1XX-preview6]<br>[Installer][osx-x64-installer-8.0.1XX-preview6] - [Checksum][osx-x64-installer-checksum-8.0.1XX-preview6]<br>[tar.gz][osx-x64-targz-8.0.1XX-preview6] - [Checksum][osx-x64-targz-checksum-8.0.1XX-preview6] | [![][osx-x64-badge-7.0.4XX]][osx-x64-version-7.0.4XX]<br>[Installer][osx-x64-installer-7.0.4XX] - [Checksum][osx-x64-installer-checksum-7.0.4XX]<br>[tar.gz][osx-x64-targz-7.0.4XX] - [Checksum][osx-x64-targz-checksum-7.0.4XX] |
|
||||
| **macOS arm64** | [![][osx-arm64-badge-main]][osx-arm64-version-main]<br>[Installer][osx-arm64-installer-main] - [Checksum][osx-arm64-installer-checksum-main]<br>[tar.gz][osx-arm64-targz-main] - [Checksum][osx-arm64-targz-checksum-main] | [![][osx-arm64-badge-8.0.1XX-preview6]][osx-arm64-version-8.0.1XX-preview6]<br>[Installer][osx-arm64-installer-8.0.1XX-preview6] - [Checksum][osx-arm64-installer-checksum-8.0.1XX-preview6]<br>[tar.gz][osx-arm64-targz-8.0.1XX-preview6] - [Checksum][osx-arm64-targz-checksum-8.0.1XX-preview6] | [![][osx-arm64-badge-7.0.4XX]][osx-arm64-version-7.0.4XX]<br>[Installer][osx-arm64-installer-7.0.4XX] - [Checksum][osx-arm64-installer-checksum-7.0.4XX]<br>[tar.gz][osx-arm64-targz-7.0.4XX] - [Checksum][osx-arm64-targz-checksum-7.0.4XX] |
|
||||
| **Linux x64** | [![][linux-badge-main]][linux-version-main]<br>[DEB Installer][linux-DEB-installer-main] - [Checksum][linux-DEB-installer-checksum-main]<br>[RPM Installer][linux-RPM-installer-main] - [Checksum][linux-RPM-installer-checksum-main]<br>_see installer note below_<sup>1</sup><br>[tar.gz][linux-targz-main] - [Checksum][linux-targz-checksum-main] | [![][linux-badge-8.0.1XX-preview6]][linux-version-8.0.1XX-preview6]<br>[DEB Installer][linux-DEB-installer-8.0.1XX-preview6] - [Checksum][linux-DEB-installer-checksum-8.0.1XX-preview6]<br>[RPM Installer][linux-RPM-installer-8.0.1XX-preview6] - [Checksum][linux-RPM-installer-checksum-8.0.1XX-preview6]<br>_see installer note below_<sup>1</sup><br>[tar.gz][linux-targz-8.0.1XX-preview6] - [Checksum][linux-targz-checksum-8.0.1XX-preview6] | [![][linux-badge-7.0.4XX]][linux-version-7.0.4XX]<br>[DEB Installer][linux-DEB-installer-7.0.4XX] - [Checksum][linux-DEB-installer-checksum-7.0.4XX]<br>[RPM Installer][linux-RPM-installer-7.0.4XX] - [Checksum][linux-RPM-installer-checksum-7.0.4XX]<br>_see installer note below_<sup>1</sup><br>[tar.gz][linux-targz-7.0.4XX] - [Checksum][linux-targz-checksum-7.0.4XX] |
|
||||
| **Linux arm** | [![][linux-arm-badge-main]][linux-arm-version-main]<br>[tar.gz][linux-arm-targz-main] - [Checksum][linux-arm-targz-checksum-main] | [![][linux-arm-badge-8.0.1XX-preview6]][linux-arm-version-8.0.1XX-preview6]<br>[tar.gz][linux-arm-targz-8.0.1XX-preview6] - [Checksum][linux-arm-targz-checksum-8.0.1XX-preview6] | [![][linux-arm-badge-7.0.4XX]][linux-arm-version-7.0.4XX]<br>[tar.gz][linux-arm-targz-7.0.4XX] - [Checksum][linux-arm-targz-checksum-7.0.4XX] |
|
||||
| **Linux arm64** | [![][linux-arm64-badge-main]][linux-arm64-version-main]<br>[tar.gz][linux-arm64-targz-main] - [Checksum][linux-arm64-targz-checksum-main] | [![][linux-arm64-badge-8.0.1XX-preview6]][linux-arm64-version-8.0.1XX-preview6]<br>[tar.gz][linux-arm64-targz-8.0.1XX-preview6] - [Checksum][linux-arm64-targz-checksum-8.0.1XX-preview6] | [![][linux-arm64-badge-7.0.4XX]][linux-arm64-version-7.0.4XX]<br>[tar.gz][linux-arm64-targz-7.0.4XX] - [Checksum][linux-arm64-targz-checksum-7.0.4XX] |
|
||||
| **Linux-musl-x64** | [![][linux-musl-x64-badge-main]][linux-musl-x64-version-main]<br>[tar.gz][linux-musl-x64-targz-main] - [Checksum][linux-musl-x64-targz-checksum-main] | [![][linux-musl-x64-badge-8.0.1XX-preview6]][linux-musl-x64-version-8.0.1XX-preview6]<br>[tar.gz][linux-musl-x64-targz-8.0.1XX-preview6] - [Checksum][linux-musl-x64-targz-checksum-8.0.1XX-preview6] | [![][linux-musl-x64-badge-7.0.4XX]][linux-musl-x64-version-7.0.4XX]<br>[tar.gz][linux-musl-x64-targz-7.0.4XX] - [Checksum][linux-musl-x64-targz-checksum-7.0.4XX] |
|
||||
| **Linux-musl-arm** | [![][linux-musl-arm-badge-main]][linux-musl-arm-version-main]<br>[tar.gz][linux-musl-arm-targz-main] - [Checksum][linux-musl-arm-targz-checksum-main] | [![][linux-musl-arm-badge-8.0.1XX-preview6]][linux-musl-arm-version-8.0.1XX-preview6]<br>[tar.gz][linux-musl-arm-targz-8.0.1XX-preview6] - [Checksum][linux-musl-arm-targz-checksum-8.0.1XX-preview6] | [![][linux-musl-arm-badge-7.0.4XX]][linux-musl-arm-version-7.0.4XX]<br>[tar.gz][linux-musl-arm-targz-7.0.4XX] - [Checksum][linux-musl-arm-targz-checksum-7.0.4XX] |
|
||||
| **Linux-musl-arm64** | [![][linux-musl-arm64-badge-main]][linux-musl-arm64-version-main]<br>[tar.gz][linux-musl-arm64-targz-main] - [Checksum][linux-musl-arm64-targz-checksum-main] | [![][linux-musl-arm64-badge-8.0.1XX-preview6]][linux-musl-arm64-version-8.0.1XX-preview6]<br>[tar.gz][linux-musl-arm64-targz-8.0.1XX-preview6] - [Checksum][linux-musl-arm64-targz-checksum-8.0.1XX-preview6] | [![][linux-musl-arm64-badge-7.0.4XX]][linux-musl-arm64-version-7.0.4XX]<br>[tar.gz][linux-musl-arm64-targz-7.0.4XX] - [Checksum][linux-musl-arm64-targz-checksum-7.0.4XX] |
|
||||
| **RHEL 6** | **N/A** | **N/A** | **N/A** |
|
||||
|
||||
Reference notes:
|
||||
|
@ -172,244 +182,244 @@ Reference notes:
|
|||
> * [Host, Host FX Resolver, and Shared Framework](https://github.com/dotnet/runtime/blob/main/docs/project/dogfooding.md#nightly-builds-table)
|
||||
> * [ASP.NET Core Shared Framework](https://github.com/aspnet/AspNetCore/blob/main/docs/DailyBuilds.md)
|
||||
|
||||
.NET Core SDK 2.x downloads can be found here: [.NET Core SDK 2.x Installers and Binaries](Downloads2.x.md)
|
||||
.NET Core SDK 2.x downloads can be found at [.NET Core SDK 2.x Installers and Binaries](Downloads2.x.md) but they are [out of support](https://dotnet.microsoft.com/platform/support/policy/dotnet-core).
|
||||
|
||||
[win-x64-badge-main]: https://aka.ms/dotnet/7.0.1xx/daily/win_x64_Release_version_badge.svg
|
||||
[win-x64-version-main]: https://aka.ms/dotnet/7.0.1xx/daily/productCommit-win-x64.txt
|
||||
[win-x64-installer-main]: https://aka.ms/dotnet/7.0.1xx/daily/dotnet-sdk-win-x64.exe
|
||||
[win-x64-installer-checksum-main]: https://aka.ms/dotnet/7.0.1xx/daily/dotnet-sdk-win-x64.exe.sha
|
||||
[win-x64-zip-main]: https://aka.ms/dotnet/7.0.1xx/daily/dotnet-sdk-win-x64.zip
|
||||
[win-x64-zip-checksum-main]: https://aka.ms/dotnet/7.0.1xx/daily/dotnet-sdk-win-x64.zip.sha
|
||||
[win-x64-badge-main]: https://aka.ms/dotnet/8.0.1xx/daily/win_x64_Release_version_badge.svg?no-cache
|
||||
[win-x64-version-main]: https://aka.ms/dotnet/8.0.1xx/daily/productCommit-win-x64.txt
|
||||
[win-x64-installer-main]: https://aka.ms/dotnet/8.0.1xx/daily/dotnet-sdk-win-x64.exe
|
||||
[win-x64-installer-checksum-main]: https://aka.ms/dotnet/8.0.1xx/daily/dotnet-sdk-win-x64.exe.sha
|
||||
[win-x64-zip-main]: https://aka.ms/dotnet/8.0.1xx/daily/dotnet-sdk-win-x64.zip
|
||||
[win-x64-zip-checksum-main]: https://aka.ms/dotnet/8.0.1xx/daily/dotnet-sdk-win-x64.zip.sha
|
||||
|
||||
[win-x64-badge-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/win_x64_Release_version_badge.svg
|
||||
[win-x64-version-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/productCommit-win-x64.txt
|
||||
[win-x64-installer-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/dotnet-sdk-win-x64.exe
|
||||
[win-x64-installer-checksum-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/dotnet-sdk-win-x64.exe.sha
|
||||
[win-x64-zip-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/dotnet-sdk-win-x64.zip
|
||||
[win-x64-zip-checksum-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/dotnet-sdk-win-x64.zip.sha
|
||||
[win-x64-badge-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/win_x64_Release_version_badge.svg?no-cache
|
||||
[win-x64-version-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/productCommit-win-x64.txt
|
||||
[win-x64-installer-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/dotnet-sdk-win-x64.exe
|
||||
[win-x64-installer-checksum-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/dotnet-sdk-win-x64.exe.sha
|
||||
[win-x64-zip-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/dotnet-sdk-win-x64.zip
|
||||
[win-x64-zip-checksum-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/dotnet-sdk-win-x64.zip.sha
|
||||
|
||||
[win-x64-badge-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/win_x64_Release_version_badge.svg
|
||||
[win-x64-version-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/productCommit-win-x64.txt
|
||||
[win-x64-installer-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/dotnet-sdk-win-x64.exe
|
||||
[win-x64-installer-checksum-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/dotnet-sdk-win-x64.exe.sha
|
||||
[win-x64-zip-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/dotnet-sdk-win-x64.zip
|
||||
[win-x64-zip-checksum-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/dotnet-sdk-win-x64.zip.sha
|
||||
[win-x64-badge-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/win_x64_Release_version_badge.svg?no-cache
|
||||
[win-x64-version-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/productCommit-win-x64.txt
|
||||
[win-x64-installer-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/dotnet-sdk-win-x64.exe
|
||||
[win-x64-installer-checksum-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/dotnet-sdk-win-x64.exe.sha
|
||||
[win-x64-zip-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/dotnet-sdk-win-x64.zip
|
||||
[win-x64-zip-checksum-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/dotnet-sdk-win-x64.zip.sha
|
||||
|
||||
[win-x86-badge-main]: https://aka.ms/dotnet/7.0.1xx/daily/win_x86_Release_version_badge.svg
|
||||
[win-x86-version-main]: https://aka.ms/dotnet/7.0.1xx/daily/productCommit-win-x86.txt
|
||||
[win-x86-installer-main]: https://aka.ms/dotnet/7.0.1xx/daily/dotnet-sdk-win-x86.exe
|
||||
[win-x86-installer-checksum-main]: https://aka.ms/dotnet/7.0.1xx/daily/dotnet-sdk-win-x86.exe.sha
|
||||
[win-x86-zip-main]: https://aka.ms/dotnet/7.0.1xx/daily/dotnet-sdk-win-x86.zip
|
||||
[win-x86-zip-checksum-main]: https://aka.ms/dotnet/7.0.1xx/daily/dotnet-sdk-win-x86.zip.sha
|
||||
[win-x86-badge-main]: https://aka.ms/dotnet/8.0.1xx/daily/win_x86_Release_version_badge.svg?no-cache
|
||||
[win-x86-version-main]: https://aka.ms/dotnet/8.0.1xx/daily/productCommit-win-x86.txt
|
||||
[win-x86-installer-main]: https://aka.ms/dotnet/8.0.1xx/daily/dotnet-sdk-win-x86.exe
|
||||
[win-x86-installer-checksum-main]: https://aka.ms/dotnet/8.0.1xx/daily/dotnet-sdk-win-x86.exe.sha
|
||||
[win-x86-zip-main]: https://aka.ms/dotnet/8.0.1xx/daily/dotnet-sdk-win-x86.zip
|
||||
[win-x86-zip-checksum-main]: https://aka.ms/dotnet/8.0.1xx/daily/dotnet-sdk-win-x86.zip.sha
|
||||
|
||||
[win-x86-badge-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/win_x86_Release_version_badge.svg
|
||||
[win-x86-version-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/productCommit-win-x86.txt
|
||||
[win-x86-installer-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/dotnet-sdk-win-x86.exe
|
||||
[win-x86-installer-checksum-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/dotnet-sdk-win-x86.exe.sha
|
||||
[win-x86-zip-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/dotnet-sdk-win-x86.zip
|
||||
[win-x86-zip-checksum-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/dotnet-sdk-win-x86.zip.sha
|
||||
[win-x86-badge-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/win_x86_Release_version_badge.svg?no-cache
|
||||
[win-x86-version-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/productCommit-win-x86.txt
|
||||
[win-x86-installer-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/dotnet-sdk-win-x86.exe
|
||||
[win-x86-installer-checksum-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/dotnet-sdk-win-x86.exe.sha
|
||||
[win-x86-zip-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/dotnet-sdk-win-x86.zip
|
||||
[win-x86-zip-checksum-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/dotnet-sdk-win-x86.zip.sha
|
||||
|
||||
[win-x86-badge-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/win_x86_Release_version_badge.svg
|
||||
[win-x86-version-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/productCommit-win-x86.txt
|
||||
[win-x86-installer-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/dotnet-sdk-win-x86.exe
|
||||
[win-x86-installer-checksum-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/dotnet-sdk-win-x86.exe.sha
|
||||
[win-x86-zip-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/dotnet-sdk-win-x86.zip
|
||||
[win-x86-zip-checksum-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/dotnet-sdk-win-x86.zip.sha
|
||||
[win-x86-badge-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/win_x86_Release_version_badge.svg?no-cache
|
||||
[win-x86-version-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/productCommit-win-x86.txt
|
||||
[win-x86-installer-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/dotnet-sdk-win-x86.exe
|
||||
[win-x86-installer-checksum-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/dotnet-sdk-win-x86.exe.sha
|
||||
[win-x86-zip-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/dotnet-sdk-win-x86.zip
|
||||
[win-x86-zip-checksum-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/dotnet-sdk-win-x86.zip.sha
|
||||
|
||||
[osx-x64-badge-main]: https://aka.ms/dotnet/7.0.1xx/daily/osx_x64_Release_version_badge.svg
|
||||
[osx-x64-version-main]: https://aka.ms/dotnet/7.0.1xx/daily/productCommit-osx-x64.txt
|
||||
[osx-x64-installer-main]: https://aka.ms/dotnet/7.0.1xx/daily/dotnet-sdk-osx-x64.pkg
|
||||
[osx-x64-installer-checksum-main]: https://aka.ms/dotnet/7.0.1xx/daily/dotnet-sdk-osx-x64.pkg.sha
|
||||
[osx-x64-targz-main]: https://aka.ms/dotnet/7.0.1xx/daily/dotnet-sdk-osx-x64.tar.gz
|
||||
[osx-x64-targz-checksum-main]: https://aka.ms/dotnet/7.0.1xx/daily/dotnet-sdk-osx-x64.pkg.tar.gz.sha
|
||||
[osx-x64-badge-main]: https://aka.ms/dotnet/8.0.1xx/daily/osx_x64_Release_version_badge.svg?no-cache
|
||||
[osx-x64-version-main]: https://aka.ms/dotnet/8.0.1xx/daily/productCommit-osx-x64.txt
|
||||
[osx-x64-installer-main]: https://aka.ms/dotnet/8.0.1xx/daily/dotnet-sdk-osx-x64.pkg
|
||||
[osx-x64-installer-checksum-main]: https://aka.ms/dotnet/8.0.1xx/daily/dotnet-sdk-osx-x64.pkg.sha
|
||||
[osx-x64-targz-main]: https://aka.ms/dotnet/8.0.1xx/daily/dotnet-sdk-osx-x64.tar.gz
|
||||
[osx-x64-targz-checksum-main]: https://aka.ms/dotnet/8.0.1xx/daily/dotnet-sdk-osx-x64.pkg.tar.gz.sha
|
||||
|
||||
[osx-x64-badge-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/osx_x64_Release_version_badge.svg
|
||||
[osx-x64-version-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/productCommit-osx-x64.txt
|
||||
[osx-x64-installer-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/dotnet-sdk-osx-x64.pkg
|
||||
[osx-x64-installer-checksum-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/dotnet-sdk-osx-x64.pkg.sha
|
||||
[osx-x64-targz-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/dotnet-sdk-osx-x64.tar.gz
|
||||
[osx-x64-targz-checksum-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/dotnet-sdk-osx-x64.pkg.tar.gz.sha
|
||||
[osx-x64-badge-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/osx_x64_Release_version_badge.svg?no-cache
|
||||
[osx-x64-version-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/productCommit-osx-x64.txt
|
||||
[osx-x64-installer-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/dotnet-sdk-osx-x64.pkg
|
||||
[osx-x64-installer-checksum-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/dotnet-sdk-osx-x64.pkg.sha
|
||||
[osx-x64-targz-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/dotnet-sdk-osx-x64.tar.gz
|
||||
[osx-x64-targz-checksum-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/dotnet-sdk-osx-x64.pkg.tar.gz.sha
|
||||
|
||||
[osx-x64-badge-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/osx_x64_Release_version_badge.svg
|
||||
[osx-x64-version-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/productCommit-osx-x64.txt
|
||||
[osx-x64-installer-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/dotnet-sdk-osx-x64.pkg
|
||||
[osx-x64-installer-checksum-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/dotnet-sdk-osx-x64.pkg.sha
|
||||
[osx-x64-targz-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/dotnet-sdk-osx-x64.tar.gz
|
||||
[osx-x64-targz-checksum-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/dotnet-sdk-osx-x64.pkg.tar.gz.sha
|
||||
[osx-x64-badge-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/osx_x64_Release_version_badge.svg?no-cache
|
||||
[osx-x64-version-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/productCommit-osx-x64.txt
|
||||
[osx-x64-installer-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/dotnet-sdk-osx-x64.pkg
|
||||
[osx-x64-installer-checksum-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/dotnet-sdk-osx-x64.pkg.sha
|
||||
[osx-x64-targz-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/dotnet-sdk-osx-x64.tar.gz
|
||||
[osx-x64-targz-checksum-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/dotnet-sdk-osx-x64.pkg.tar.gz.sha
|
||||
|
||||
[osx-arm64-badge-main]: https://aka.ms/dotnet/7.0.1xx/daily/osx_arm64_Release_version_badge.svg
|
||||
[osx-arm64-version-main]: https://aka.ms/dotnet/7.0.1xx/daily/productCommit-osx-arm64.txt
|
||||
[osx-arm64-installer-main]: https://aka.ms/dotnet/7.0.1xx/daily/dotnet-sdk-osx-arm64.pkg
|
||||
[osx-arm64-installer-checksum-main]: https://aka.ms/dotnet/7.0.1xx/daily/dotnet-sdk-osx-arm64.pkg.sha
|
||||
[osx-arm64-targz-main]: https://aka.ms/dotnet/7.0.1xx/daily/dotnet-sdk-osx-arm64.tar.gz
|
||||
[osx-arm64-targz-checksum-main]: https://aka.ms/dotnet/7.0.1xx/daily/dotnet-sdk-osx-arm64.pkg.tar.gz.sha
|
||||
[osx-arm64-badge-main]: https://aka.ms/dotnet/8.0.1xx/daily/osx_arm64_Release_version_badge.svg?no-cache
|
||||
[osx-arm64-version-main]: https://aka.ms/dotnet/8.0.1xx/daily/productCommit-osx-arm64.txt
|
||||
[osx-arm64-installer-main]: https://aka.ms/dotnet/8.0.1xx/daily/dotnet-sdk-osx-arm64.pkg
|
||||
[osx-arm64-installer-checksum-main]: https://aka.ms/dotnet/8.0.1xx/daily/dotnet-sdk-osx-arm64.pkg.sha
|
||||
[osx-arm64-targz-main]: https://aka.ms/dotnet/8.0.1xx/daily/dotnet-sdk-osx-arm64.tar.gz
|
||||
[osx-arm64-targz-checksum-main]: https://aka.ms/dotnet/8.0.1xx/daily/dotnet-sdk-osx-arm64.pkg.tar.gz.sha
|
||||
|
||||
[osx-arm64-badge-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/osx_arm64_Release_version_badge.svg
|
||||
[osx-arm64-version-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/productCommit-osx-arm64.txt
|
||||
[osx-arm64-installer-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/dotnet-sdk-osx-arm64.pkg
|
||||
[osx-arm64-installer-checksum-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/dotnet-sdk-osx-arm64.pkg.sha
|
||||
[osx-arm64-targz-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/dotnet-sdk-osx-arm64.tar.gz
|
||||
[osx-arm64-targz-checksum-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/dotnet-sdk-osx-arm64.pkg.tar.gz.sha
|
||||
[osx-arm64-badge-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/osx_arm64_Release_version_badge.svg?no-cache
|
||||
[osx-arm64-version-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/productCommit-osx-arm64.txt
|
||||
[osx-arm64-installer-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/dotnet-sdk-osx-arm64.pkg
|
||||
[osx-arm64-installer-checksum-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/dotnet-sdk-osx-arm64.pkg.sha
|
||||
[osx-arm64-targz-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/dotnet-sdk-osx-arm64.tar.gz
|
||||
[osx-arm64-targz-checksum-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/dotnet-sdk-osx-arm64.pkg.tar.gz.sha
|
||||
|
||||
[osx-arm64-badge-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/osx_arm64_Release_version_badge.svg
|
||||
[osx-arm64-version-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/productCommit-osx-arm64.txt
|
||||
[osx-arm64-installer-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/dotnet-sdk-osx-arm64.pkg
|
||||
[osx-arm64-installer-checksum-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/dotnet-sdk-osx-arm64.pkg.sha
|
||||
[osx-arm64-targz-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/dotnet-sdk-osx-arm64.tar.gz
|
||||
[osx-arm64-targz-checksum-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/dotnet-sdk-osx-arm64.pkg.tar.gz.sha
|
||||
[osx-arm64-badge-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/osx_arm64_Release_version_badge.svg?no-cache
|
||||
[osx-arm64-version-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/productCommit-osx-arm64.txt
|
||||
[osx-arm64-installer-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/dotnet-sdk-osx-arm64.pkg
|
||||
[osx-arm64-installer-checksum-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/dotnet-sdk-osx-arm64.pkg.sha
|
||||
[osx-arm64-targz-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/dotnet-sdk-osx-arm64.tar.gz
|
||||
[osx-arm64-targz-checksum-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/dotnet-sdk-osx-arm64.pkg.tar.gz.sha
|
||||
|
||||
[linux-badge-main]: https://aka.ms/dotnet/7.0.1xx/daily/linux_x64_Release_version_badge.svg
|
||||
[linux-version-main]: https://aka.ms/dotnet/7.0.1xx/daily/productCommit-linux-x64.txt
|
||||
[linux-DEB-installer-main]: https://aka.ms/dotnet/7.0.1xx/daily/dotnet-sdk-x64.deb
|
||||
[linux-DEB-installer-checksum-main]: https://aka.ms/dotnet/7.0.1xx/daily/dotnet-sdk-x64.deb.sha
|
||||
[linux-RPM-installer-main]: https://aka.ms/dotnet/7.0.1xx/daily/dotnet-sdk-x64.rpm
|
||||
[linux-RPM-installer-checksum-main]: https://aka.ms/dotnet/7.0.1xx/daily/dotnet-sdk-x64.rpm.sha
|
||||
[linux-targz-main]: https://aka.ms/dotnet/7.0.1xx/daily/dotnet-sdk-linux-x64.tar.gz
|
||||
[linux-targz-checksum-main]: https://aka.ms/dotnet/7.0.1xx/daily/dotnet-sdk-linux-x64.tar.gz.sha
|
||||
[linux-badge-main]: https://aka.ms/dotnet/8.0.1xx/daily/linux_x64_Release_version_badge.svg?no-cache
|
||||
[linux-version-main]: https://aka.ms/dotnet/8.0.1xx/daily/productCommit-linux-x64.txt
|
||||
[linux-DEB-installer-main]: https://aka.ms/dotnet/8.0.1xx/daily/dotnet-sdk-x64.deb
|
||||
[linux-DEB-installer-checksum-main]: https://aka.ms/dotnet/8.0.1xx/daily/dotnet-sdk-x64.deb.sha
|
||||
[linux-RPM-installer-main]: https://aka.ms/dotnet/8.0.1xx/daily/dotnet-sdk-x64.rpm
|
||||
[linux-RPM-installer-checksum-main]: https://aka.ms/dotnet/8.0.1xx/daily/dotnet-sdk-x64.rpm.sha
|
||||
[linux-targz-main]: https://aka.ms/dotnet/8.0.1xx/daily/dotnet-sdk-linux-x64.tar.gz
|
||||
[linux-targz-checksum-main]: https://aka.ms/dotnet/8.0.1xx/daily/dotnet-sdk-linux-x64.tar.gz.sha
|
||||
|
||||
[linux-badge-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/linux_x64_Release_version_badge.svg
|
||||
[linux-version-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/productCommit-linux-x64.txt
|
||||
[linux-DEB-installer-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/dotnet-sdk-x64.deb
|
||||
[linux-DEB-installer-checksum-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/dotnet-sdk-x64.deb.sha
|
||||
[linux-RPM-installer-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/dotnet-sdk-x64.rpm
|
||||
[linux-RPM-installer-checksum-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/dotnet-sdk-x64.rpm.sha
|
||||
[linux-targz-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/dotnet-sdk-linux-x64.tar.gz
|
||||
[linux-targz-checksum-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/dotnet-sdk-linux-x64.tar.gz.sha
|
||||
[linux-badge-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/linux_x64_Release_version_badge.svg?no-cache
|
||||
[linux-version-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/productCommit-linux-x64.txt
|
||||
[linux-DEB-installer-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/dotnet-sdk-x64.deb
|
||||
[linux-DEB-installer-checksum-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/dotnet-sdk-x64.deb.sha
|
||||
[linux-RPM-installer-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/dotnet-sdk-x64.rpm
|
||||
[linux-RPM-installer-checksum-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/dotnet-sdk-x64.rpm.sha
|
||||
[linux-targz-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/dotnet-sdk-linux-x64.tar.gz
|
||||
[linux-targz-checksum-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/dotnet-sdk-linux-x64.tar.gz.sha
|
||||
|
||||
[linux-badge-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/linux_x64_Release_version_badge.svg
|
||||
[linux-version-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/productCommit-linux-x64.txt
|
||||
[linux-DEB-installer-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/dotnet-sdk-x64.deb
|
||||
[linux-DEB-installer-checksum-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/dotnet-sdk-x64.deb.sha
|
||||
[linux-RPM-installer-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/dotnet-sdk-x64.rpm
|
||||
[linux-RPM-installer-checksum-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/dotnet-sdk-x64.rpm.sha
|
||||
[linux-targz-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/dotnet-sdk-linux-x64.tar.gz
|
||||
[linux-targz-checksum-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/dotnet-sdk-linux-x64.tar.gz.sha
|
||||
[linux-badge-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/linux_x64_Release_version_badge.svg?no-cache
|
||||
[linux-version-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/productCommit-linux-x64.txt
|
||||
[linux-DEB-installer-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/dotnet-sdk-x64.deb
|
||||
[linux-DEB-installer-checksum-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/dotnet-sdk-x64.deb.sha
|
||||
[linux-RPM-installer-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/dotnet-sdk-x64.rpm
|
||||
[linux-RPM-installer-checksum-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/dotnet-sdk-x64.rpm.sha
|
||||
[linux-targz-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/dotnet-sdk-linux-x64.tar.gz
|
||||
[linux-targz-checksum-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/dotnet-sdk-linux-x64.tar.gz.sha
|
||||
|
||||
[linux-arm-badge-main]: https://aka.ms/dotnet/7.0.1xx/daily/linux_arm_Release_version_badge.svg
|
||||
[linux-arm-version-main]: https://aka.ms/dotnet/7.0.1xx/daily/productCommit-linux-arm.txt
|
||||
[linux-arm-targz-main]: https://aka.ms/dotnet/7.0.1xx/daily/dotnet-sdk-linux-arm.tar.gz
|
||||
[linux-arm-targz-checksum-main]: https://aka.ms/dotnet/7.0.1xx/daily/dotnet-sdk-linux-arm.tar.gz.sha
|
||||
[linux-arm-badge-main]: https://aka.ms/dotnet/8.0.1xx/daily/linux_arm_Release_version_badge.svg?no-cache
|
||||
[linux-arm-version-main]: https://aka.ms/dotnet/8.0.1xx/daily/productCommit-linux-arm.txt
|
||||
[linux-arm-targz-main]: https://aka.ms/dotnet/8.0.1xx/daily/dotnet-sdk-linux-arm.tar.gz
|
||||
[linux-arm-targz-checksum-main]: https://aka.ms/dotnet/8.0.1xx/daily/dotnet-sdk-linux-arm.tar.gz.sha
|
||||
|
||||
[linux-arm-badge-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/linux_arm_Release_version_badge.svg
|
||||
[linux-arm-version-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/productCommit-linux-arm.txt
|
||||
[linux-arm-targz-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/dotnet-sdk-linux-arm.tar.gz
|
||||
[linux-arm-targz-checksum-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/dotnet-sdk-linux-arm.tar.gz.sha
|
||||
[linux-arm-badge-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/linux_arm_Release_version_badge.svg?no-cache
|
||||
[linux-arm-version-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/productCommit-linux-arm.txt
|
||||
[linux-arm-targz-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/dotnet-sdk-linux-arm.tar.gz
|
||||
[linux-arm-targz-checksum-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/dotnet-sdk-linux-arm.tar.gz.sha
|
||||
|
||||
[linux-arm-badge-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/linux_arm_Release_version_badge.svg
|
||||
[linux-arm-version-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/productCommit-linux-arm.txt
|
||||
[linux-arm-targz-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/dotnet-sdk-linux-arm.tar.gz
|
||||
[linux-arm-targz-checksum-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/dotnet-sdk-linux-arm.tar.gz.sha
|
||||
[linux-arm-badge-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/linux_arm_Release_version_badge.svg?no-cache
|
||||
[linux-arm-version-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/productCommit-linux-arm.txt
|
||||
[linux-arm-targz-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/dotnet-sdk-linux-arm.tar.gz
|
||||
[linux-arm-targz-checksum-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/dotnet-sdk-linux-arm.tar.gz.sha
|
||||
|
||||
[linux-arm64-badge-main]: https://aka.ms/dotnet/7.0.1xx/daily/linux_arm64_Release_version_badge.svg
|
||||
[linux-arm64-version-main]: https://aka.ms/dotnet/7.0.1xx/daily/productCommit-linux-arm64.txt
|
||||
[linux-arm64-targz-main]: https://aka.ms/dotnet/7.0.1xx/daily/dotnet-sdk-linux-arm64.tar.gz
|
||||
[linux-arm64-targz-checksum-main]: https://aka.ms/dotnet/7.0.1xx/daily/dotnet-sdk-linux-arm64.tar.gz.sha
|
||||
[linux-arm64-badge-main]: https://aka.ms/dotnet/8.0.1xx/daily/linux_arm64_Release_version_badge.svg?no-cache
|
||||
[linux-arm64-version-main]: https://aka.ms/dotnet/8.0.1xx/daily/productCommit-linux-arm64.txt
|
||||
[linux-arm64-targz-main]: https://aka.ms/dotnet/8.0.1xx/daily/dotnet-sdk-linux-arm64.tar.gz
|
||||
[linux-arm64-targz-checksum-main]: https://aka.ms/dotnet/8.0.1xx/daily/dotnet-sdk-linux-arm64.tar.gz.sha
|
||||
|
||||
[linux-arm64-badge-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/linux_arm64_Release_version_badge.svg
|
||||
[linux-arm64-version-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/productCommit-linux-arm64.txt
|
||||
[linux-arm64-targz-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/dotnet-sdk-linux-arm64.tar.gz
|
||||
[linux-arm64-targz-checksum-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/dotnet-sdk-linux-arm64.tar.gz.sha
|
||||
[linux-arm64-badge-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/linux_arm64_Release_version_badge.svg?no-cache
|
||||
[linux-arm64-version-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/productCommit-linux-arm64.txt
|
||||
[linux-arm64-targz-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/dotnet-sdk-linux-arm64.tar.gz
|
||||
[linux-arm64-targz-checksum-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/dotnet-sdk-linux-arm64.tar.gz.sha
|
||||
|
||||
[linux-arm64-badge-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/linux_arm64_Release_version_badge.svg
|
||||
[linux-arm64-version-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/productCommit-linux-arm64.txt
|
||||
[linux-arm64-targz-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/dotnet-sdk-linux-arm64.tar.gz
|
||||
[linux-arm64-targz-checksum-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/dotnet-sdk-linux-arm64.tar.gz.sha
|
||||
[linux-arm64-badge-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/linux_arm64_Release_version_badge.svg?no-cache
|
||||
[linux-arm64-version-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/productCommit-linux-arm64.txt
|
||||
[linux-arm64-targz-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/dotnet-sdk-linux-arm64.tar.gz
|
||||
[linux-arm64-targz-checksum-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/dotnet-sdk-linux-arm64.tar.gz.sha
|
||||
|
||||
[rhel-6-badge-main]: https://aka.ms/dotnet/7.0.1xx/daily/rhel.6_x64_Release_version_badge.svg
|
||||
[rhel-6-version-main]: https://aka.ms/dotnet/7.0.1xx/daily/productCommit-rhel.6-x64.txt
|
||||
[rhel-6-targz-main]: https://aka.ms/dotnet/7.0.1xx/daily/dotnet-sdk-rhel.6-x64.tar.gz
|
||||
[rhel-6-targz-checksum-main]: https://aka.ms/dotnet/7.0.1xx/daily/dotnet-sdk-rhel.6-x64.tar.gz.sha
|
||||
[rhel-6-badge-main]: https://aka.ms/dotnet/8.0.1xx/daily/rhel.6_x64_Release_version_badge.svg?no-cache
|
||||
[rhel-6-version-main]: https://aka.ms/dotnet/8.0.1xx/daily/productCommit-rhel.6-x64.txt
|
||||
[rhel-6-targz-main]: https://aka.ms/dotnet/8.0.1xx/daily/dotnet-sdk-rhel.6-x64.tar.gz
|
||||
[rhel-6-targz-checksum-main]: https://aka.ms/dotnet/8.0.1xx/daily/dotnet-sdk-rhel.6-x64.tar.gz.sha
|
||||
|
||||
[rhel-6-badge-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/rhel.6_x64_Release_version_badge.svg
|
||||
[rhel-6-version-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/productCommit-rhel.6-x64.txt
|
||||
[rhel-6-targz-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/dotnet-sdk-rhel.6-x64.tar.gz
|
||||
[rhel-6-targz-checksum-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/dotnet-sdk-rhel.6-x64.tar.gz.sha
|
||||
[rhel-6-badge-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/rhel.6_x64_Release_version_badge.svg?no-cache
|
||||
[rhel-6-version-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/productCommit-rhel.6-x64.txt
|
||||
[rhel-6-targz-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/dotnet-sdk-rhel.6-x64.tar.gz
|
||||
[rhel-6-targz-checksum-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/dotnet-sdk-rhel.6-x64.tar.gz.sha
|
||||
|
||||
[rhel-6-badge-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/rhel.6_x64_Release_version_badge.svg
|
||||
[rhel-6-version-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/productCommit-rhel.6-x64.txt
|
||||
[rhel-6-targz-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/dotnet-sdk-rhel.6-x64.tar.gz
|
||||
[rhel-6-targz-checksum-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/dotnet-sdk-rhel.6-x64.tar.gz.sha
|
||||
[rhel-6-badge-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/rhel.6_x64_Release_version_badge.svg?no-cache
|
||||
[rhel-6-version-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/productCommit-rhel.6-x64.txt
|
||||
[rhel-6-targz-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/dotnet-sdk-rhel.6-x64.tar.gz
|
||||
[rhel-6-targz-checksum-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/dotnet-sdk-rhel.6-x64.tar.gz.sha
|
||||
|
||||
[linux-musl-x64-badge-main]: https://aka.ms/dotnet/7.0.1xx/daily/linux_musl_x64_Release_version_badge.svg
|
||||
[linux-musl-x64-version-main]: https://aka.ms/dotnet/7.0.1xx/daily/productCommit-linux-musl-x64.txt
|
||||
[linux-musl-x64-targz-main]: https://aka.ms/dotnet/7.0.1xx/daily/dotnet-sdk-linux-musl-x64.tar.gz
|
||||
[linux-musl-x64-targz-checksum-main]: https://aka.ms/dotnet/7.0.1xx/daily/dotnet-sdk-linux-musl-x64.tar.gz.sha
|
||||
[linux-musl-x64-badge-main]: https://aka.ms/dotnet/8.0.1xx/daily/linux_musl_x64_Release_version_badge.svg?no-cache
|
||||
[linux-musl-x64-version-main]: https://aka.ms/dotnet/8.0.1xx/daily/productCommit-linux-musl-x64.txt
|
||||
[linux-musl-x64-targz-main]: https://aka.ms/dotnet/8.0.1xx/daily/dotnet-sdk-linux-musl-x64.tar.gz
|
||||
[linux-musl-x64-targz-checksum-main]: https://aka.ms/dotnet/8.0.1xx/daily/dotnet-sdk-linux-musl-x64.tar.gz.sha
|
||||
|
||||
[linux-musl-x64-badge-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/linux_musl_x64_Release_version_badge.svg
|
||||
[linux-musl-x64-version-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/productCommit-linux-musl-x64.txt
|
||||
[linux-musl-x64-targz-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/dotnet-sdk-linux-musl-x64.tar.gz
|
||||
[linux-musl-x64-targz-checksum-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/dotnet-sdk-linux-musl-x64.tar.gz.sha
|
||||
[linux-musl-x64-badge-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/linux_musl_x64_Release_version_badge.svg?no-cache
|
||||
[linux-musl-x64-version-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/productCommit-linux-musl-x64.txt
|
||||
[linux-musl-x64-targz-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/dotnet-sdk-linux-musl-x64.tar.gz
|
||||
[linux-musl-x64-targz-checksum-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/dotnet-sdk-linux-musl-x64.tar.gz.sha
|
||||
|
||||
[linux-musl-x64-badge-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/linux_musl_x64_Release_version_badge.svg
|
||||
[linux-musl-x64-version-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/productCommit-linux-musl-x64.txt
|
||||
[linux-musl-x64-targz-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/dotnet-sdk-linux-musl-x64.tar.gz
|
||||
[linux-musl-x64-targz-checksum-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/dotnet-sdk-linux-musl-x64.tar.gz.sha
|
||||
[linux-musl-x64-badge-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/linux_musl_x64_Release_version_badge.svg?no-cache
|
||||
[linux-musl-x64-version-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/productCommit-linux-musl-x64.txt
|
||||
[linux-musl-x64-targz-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/dotnet-sdk-linux-musl-x64.tar.gz
|
||||
[linux-musl-x64-targz-checksum-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/dotnet-sdk-linux-musl-x64.tar.gz.sha
|
||||
|
||||
[linux-musl-arm-badge-main]: https://aka.ms/dotnet/7.0.1xx/daily/linux_musl_arm_Release_version_badge.svg
|
||||
[linux-musl-arm-version-main]: https://aka.ms/dotnet/7.0.1xx/daily/productCommit-linux-musl-arm.txt
|
||||
[linux-musl-arm-targz-main]: https://aka.ms/dotnet/7.0.1xx/daily/dotnet-sdk-linux-musl-arm.tar.gz
|
||||
[linux-musl-arm-targz-checksum-main]: https://aka.ms/dotnet/7.0.1xx/daily/dotnet-sdk-linux-musl-arm.tar.gz.sha
|
||||
[linux-musl-arm-badge-main]: https://aka.ms/dotnet/8.0.1xx/daily/linux_musl_arm_Release_version_badge.svg?no-cache
|
||||
[linux-musl-arm-version-main]: https://aka.ms/dotnet/8.0.1xx/daily/productCommit-linux-musl-arm.txt
|
||||
[linux-musl-arm-targz-main]: https://aka.ms/dotnet/8.0.1xx/daily/dotnet-sdk-linux-musl-arm.tar.gz
|
||||
[linux-musl-arm-targz-checksum-main]: https://aka.ms/dotnet/8.0.1xx/daily/dotnet-sdk-linux-musl-arm.tar.gz.sha
|
||||
|
||||
[linux-musl-arm-badge-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/linux_musl_arm_Release_version_badge.svg
|
||||
[linux-musl-arm-version-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/productCommit-linux-musl-arm.txt
|
||||
[linux-musl-arm-targz-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/dotnet-sdk-linux-musl-arm.tar.gz
|
||||
[linux-musl-arm-targz-checksum-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/dotnet-sdk-linux-musl-arm.tar.gz.sha
|
||||
[linux-musl-arm-badge-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/linux_musl_arm_Release_version_badge.svg?no-cache
|
||||
[linux-musl-arm-version-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/productCommit-linux-musl-arm.txt
|
||||
[linux-musl-arm-targz-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/dotnet-sdk-linux-musl-arm.tar.gz
|
||||
[linux-musl-arm-targz-checksum-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/dotnet-sdk-linux-musl-arm.tar.gz.sha
|
||||
|
||||
[linux-musl-arm-badge-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/linux_musl_arm_Release_version_badge.svg
|
||||
[linux-musl-arm-version-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/productCommit-linux-musl-arm.txt
|
||||
[linux-musl-arm-targz-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/dotnet-sdk-linux-musl-arm.tar.gz
|
||||
[linux-musl-arm-targz-checksum-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/dotnet-sdk-linux-musl-arm.tar.gz.sha
|
||||
[linux-musl-arm-badge-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/linux_musl_arm_Release_version_badge.svg?no-cache
|
||||
[linux-musl-arm-version-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/productCommit-linux-musl-arm.txt
|
||||
[linux-musl-arm-targz-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/dotnet-sdk-linux-musl-arm.tar.gz
|
||||
[linux-musl-arm-targz-checksum-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/dotnet-sdk-linux-musl-arm.tar.gz.sha
|
||||
|
||||
[linux-musl-arm64-badge-main]: https://aka.ms/dotnet/7.0.1xx/daily/linux_musl_arm64_Release_version_badge.svg
|
||||
[linux-musl-arm64-version-main]: https://aka.ms/dotnet/7.0.1xx/daily/productCommit-linux-musl-arm64.txt
|
||||
[linux-musl-arm64-targz-main]: https://aka.ms/dotnet/7.0.1xx/daily/dotnet-sdk-linux-musl-arm64.tar.gz
|
||||
[linux-musl-arm64-targz-checksum-main]: https://aka.ms/dotnet/7.0.1xx/daily/dotnet-sdk-linux-musl-arm64.tar.gz.sha
|
||||
[linux-musl-arm64-badge-main]: https://aka.ms/dotnet/8.0.1xx/daily/linux_musl_arm64_Release_version_badge.svg?no-cache
|
||||
[linux-musl-arm64-version-main]: https://aka.ms/dotnet/8.0.1xx/daily/productCommit-linux-musl-arm64.txt
|
||||
[linux-musl-arm64-targz-main]: https://aka.ms/dotnet/8.0.1xx/daily/dotnet-sdk-linux-musl-arm64.tar.gz
|
||||
[linux-musl-arm64-targz-checksum-main]: https://aka.ms/dotnet/8.0.1xx/daily/dotnet-sdk-linux-musl-arm64.tar.gz.sha
|
||||
|
||||
[linux-musl-arm64-badge-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/linux_musl_arm64_Release_version_badge.svg
|
||||
[linux-musl-arm64-version-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/productCommit-linux-musl-arm64.txt
|
||||
[linux-musl-arm64-targz-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/dotnet-sdk-linux-musl-arm64.tar.gz
|
||||
[linux-musl-arm64-targz-checksum-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/dotnet-sdk-linux-musl-arm64.tar.gz.sha
|
||||
[linux-musl-arm64-badge-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/linux_musl_arm64_Release_version_badge.svg?no-cache
|
||||
[linux-musl-arm64-version-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/productCommit-linux-musl-arm64.txt
|
||||
[linux-musl-arm64-targz-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/dotnet-sdk-linux-musl-arm64.tar.gz
|
||||
[linux-musl-arm64-targz-checksum-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/dotnet-sdk-linux-musl-arm64.tar.gz.sha
|
||||
|
||||
[linux-musl-arm64-badge-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/linux_musl_arm64_Release_version_badge.svg
|
||||
[linux-musl-arm64-version-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/productCommit-linux-musl-arm64.txt
|
||||
[linux-musl-arm64-targz-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/dotnet-sdk-linux-musl-arm64.tar.gz
|
||||
[linux-musl-arm64-targz-checksum-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/dotnet-sdk-linux-musl-arm64.tar.gz.sha
|
||||
[linux-musl-arm64-badge-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/linux_musl_arm64_Release_version_badge.svg?no-cache
|
||||
[linux-musl-arm64-version-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/productCommit-linux-musl-arm64.txt
|
||||
[linux-musl-arm64-targz-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/dotnet-sdk-linux-musl-arm64.tar.gz
|
||||
[linux-musl-arm64-targz-checksum-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/dotnet-sdk-linux-musl-arm64.tar.gz.sha
|
||||
|
||||
[win-arm-badge-main]: https://aka.ms/dotnet/7.0.1xx/daily/win_arm_Release_version_badge.svg
|
||||
[win-arm-version-main]: https://aka.ms/dotnet/7.0.1xx/daily/productCommit-win-arm.txt
|
||||
[win-arm-zip-main]: https://aka.ms/dotnet/7.0.1xx/daily/dotnet-sdk-win-arm.zip
|
||||
[win-arm-zip-checksum-main]: https://aka.ms/dotnet/7.0.1xx/daily/dotnet-sdk-win-arm.zip.sha
|
||||
[win-arm-badge-main]: https://aka.ms/dotnet/8.0.1xx/daily/win_arm_Release_version_badge.svg?no-cache
|
||||
[win-arm-version-main]: https://aka.ms/dotnet/8.0.1xx/daily/productCommit-win-arm.txt
|
||||
[win-arm-zip-main]: https://aka.ms/dotnet/8.0.1xx/daily/dotnet-sdk-win-arm.zip
|
||||
[win-arm-zip-checksum-main]: https://aka.ms/dotnet/8.0.1xx/daily/dotnet-sdk-win-arm.zip.sha
|
||||
|
||||
[win-arm-badge-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/win_arm_Release_version_badge.svg
|
||||
[win-arm-version-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/productCommit-win-arm.txt
|
||||
[win-arm-zip-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/dotnet-sdk-win-arm.zip
|
||||
[win-arm-zip-checksum-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/dotnet-sdk-win-arm.zip.sha
|
||||
[win-arm-badge-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/win_arm_Release_version_badge.svg?no-cache
|
||||
[win-arm-version-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/productCommit-win-arm.txt
|
||||
[win-arm-zip-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/dotnet-sdk-win-arm.zip
|
||||
[win-arm-zip-checksum-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/dotnet-sdk-win-arm.zip.sha
|
||||
|
||||
[win-arm-badge-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/win_arm_Release_version_badge.svg
|
||||
[win-arm-version-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/productCommit-win-arm.txt
|
||||
[win-arm-zip-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/dotnet-sdk-win-arm.zip
|
||||
[win-arm-zip-checksum-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/dotnet-sdk-win-arm.zip.sha
|
||||
[win-arm-badge-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/win_arm_Release_version_badge.svg?no-cache
|
||||
[win-arm-version-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/productCommit-win-arm.txt
|
||||
[win-arm-zip-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/dotnet-sdk-win-arm.zip
|
||||
[win-arm-zip-checksum-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/dotnet-sdk-win-arm.zip.sha
|
||||
|
||||
[win-arm64-badge-main]: https://aka.ms/dotnet/7.0.1xx/daily/win_arm64_Release_version_badge.svg
|
||||
[win-arm64-version-main]: https://aka.ms/dotnet/7.0.1xx/daily/productCommit-win-arm64.txt
|
||||
[win-arm64-installer-main]: https://aka.ms/dotnet/7.0.1xx/daily/dotnet-sdk-win-arm64.exe
|
||||
[win-arm64-installer-checksum-main]: https://aka.ms/dotnet/7.0.1xx/daily/dotnet-sdk-win-arm64.exe.sha
|
||||
[win-arm64-zip-main]: https://aka.ms/dotnet/7.0.1xx/daily/dotnet-sdk-win-arm64.zip
|
||||
[win-arm64-zip-checksum-main]: https://aka.ms/dotnet/7.0.1xx/daily/dotnet-sdk-win-arm64.zip.sha
|
||||
[win-arm64-badge-main]: https://aka.ms/dotnet/8.0.1xx/daily/win_arm64_Release_version_badge.svg?no-cache
|
||||
[win-arm64-version-main]: https://aka.ms/dotnet/8.0.1xx/daily/productCommit-win-arm64.txt
|
||||
[win-arm64-installer-main]: https://aka.ms/dotnet/8.0.1xx/daily/dotnet-sdk-win-arm64.exe
|
||||
[win-arm64-installer-checksum-main]: https://aka.ms/dotnet/8.0.1xx/daily/dotnet-sdk-win-arm64.exe.sha
|
||||
[win-arm64-zip-main]: https://aka.ms/dotnet/8.0.1xx/daily/dotnet-sdk-win-arm64.zip
|
||||
[win-arm64-zip-checksum-main]: https://aka.ms/dotnet/8.0.1xx/daily/dotnet-sdk-win-arm64.zip.sha
|
||||
|
||||
[win-arm64-badge-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/win_arm64_Release_version_badge.svg
|
||||
[win-arm64-version-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/productCommit-win-arm64.txt
|
||||
[win-arm64-installer-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/dotnet-sdk-win-arm64.exe
|
||||
[win-arm64-installer-checksum-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/dotnet-sdk-win-arm64.exe.sha
|
||||
[win-arm64-zip-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/dotnet-sdk-win-arm64.zip
|
||||
[win-arm64-zip-checksum-7.0.1XX-preview7]: https://aka.ms/dotnet/7.0.1xx-preview7/daily/dotnet-sdk-win-arm64.zip.sha
|
||||
[win-arm64-badge-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/win_arm64_Release_version_badge.svg?no-cache
|
||||
[win-arm64-version-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/productCommit-win-arm64.txt
|
||||
[win-arm64-installer-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/dotnet-sdk-win-arm64.exe
|
||||
[win-arm64-installer-checksum-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/dotnet-sdk-win-arm64.exe.sha
|
||||
[win-arm64-zip-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/dotnet-sdk-win-arm64.zip
|
||||
[win-arm64-zip-checksum-8.0.1XX-preview6]: https://aka.ms/dotnet/8.0.1xx-preview6/daily/dotnet-sdk-win-arm64.zip.sha
|
||||
|
||||
[win-arm64-badge-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/win_arm64_Release_version_badge.svg
|
||||
[win-arm64-version-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/productCommit-win-arm64.txt
|
||||
[win-arm64-installer-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/dotnet-sdk-win-arm64.exe
|
||||
[win-arm64-installer-checksum-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/dotnet-sdk-win-arm64.exe.sha
|
||||
[win-arm64-zip-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/dotnet-sdk-win-arm64.zip
|
||||
[win-arm64-zip-checksum-6.0.4XX]: https://aka.ms/dotnet/6.0.4xx/daily/dotnet-sdk-win-arm64.zip.sha
|
||||
[win-arm64-badge-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/win_arm64_Release_version_badge.svg?no-cache
|
||||
[win-arm64-version-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/productCommit-win-arm64.txt
|
||||
[win-arm64-installer-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/dotnet-sdk-win-arm64.exe
|
||||
[win-arm64-installer-checksum-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/dotnet-sdk-win-arm64.exe.sha
|
||||
[win-arm64-zip-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/dotnet-sdk-win-arm64.zip
|
||||
[win-arm64-zip-checksum-7.0.4XX]: https://aka.ms/dotnet/7.0.4xx/daily/dotnet-sdk-win-arm64.zip.sha
|
||||
|
||||
[sdk-shas-2.2.1XX]: https://github.com/dotnet/versions/tree/master/build-info/dotnet/product/cli/release/2.2#built-repositories
|
||||
|
||||
|
@ -421,10 +431,11 @@ Sources for dotnet-install.sh and dotnet-install.ps1 are in the [install-scripts
|
|||
Questions & Comments
|
||||
--------------------
|
||||
|
||||
For all feedback, use the Issues on the [.NET CLI](https://github.com/dotnet/cli) repository.
|
||||
For all feedback, use the Issues on the [.NET SDK](https://github.com/dotnet/sdk) repository.
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
By downloading the .zip you are agreeing to the terms in the project [EULA](https://aka.ms/dotnet-core-eula).
|
||||
The .NET project uses the [MIT license](LICENSE).
|
||||
|
||||
The LICENSE and ThirdPartyNotices in any downloaded archives are authoritative.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net7.0</TargetFramework>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<TargetPlatformIdentifier>Windows</TargetPlatformIdentifier>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
|
|
17
build.sh
17
build.sh
|
@ -29,11 +29,6 @@ args=
|
|||
while [[ $# > 0 ]]; do
|
||||
lowerI="$(echo $1 | awk '{print tolower($0)}')"
|
||||
case $lowerI in
|
||||
--docker)
|
||||
export BUILD_IN_DOCKER=1
|
||||
export DOCKER_IMAGENAME=$2
|
||||
shift
|
||||
;;
|
||||
--noprettyprint)
|
||||
export DOTNET_CORESDK_NOPRETTYPRINT=1
|
||||
;;
|
||||
|
@ -44,14 +39,4 @@ while [[ $# > 0 ]]; do
|
|||
shift
|
||||
done
|
||||
|
||||
dockerbuild()
|
||||
{
|
||||
BUILD_COMMAND=$DIR/run-build.sh $DIR/eng/dockerrun.sh --non-interactive "$@"
|
||||
}
|
||||
|
||||
# Check if we need to build in docker
|
||||
if [ ! -z "$BUILD_IN_DOCKER" ]; then
|
||||
dockerbuild $args
|
||||
else
|
||||
$DIR/run-build.sh $args
|
||||
fi
|
||||
$DIR/run-build.sh $args
|
||||
|
|
|
@ -1,12 +1,21 @@
|
|||
<Project>
|
||||
<ItemGroup Condition=" '$(ArcadeBuildTarball)' != 'true' ">
|
||||
<ProjectToBuild Include="$(RepoRoot)Microsoft.DotNet.Cli.sln" />
|
||||
<ProjectToBuild Condition="'$(OS)' == 'Windows_NT' And ('$(Architecture)' == 'x86' Or '$(Architecture)' == 'x64' Or '$(Architecture)' == 'arm64' Or '$(Architecture)' == 'arm')"
|
||||
Include="$(RepoRoot)eng\version.csproj;
|
||||
$(RepoRoot)eng\native.proj" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(ArcadeBuildTarball)' == 'true' " >
|
||||
<ProjectToBuild Include="$(RepoRoot)src/SourceBuild/Arcade/src/SourceBuild.Tasks.csproj" BuildInParallel="false" />
|
||||
<ProjectToBuild Include="$(RepoRoot)src/SourceBuild/tarball/BuildSourceBuildTarball.proj" BuildInParallel="false" />
|
||||
</ItemGroup>
|
||||
<Choose>
|
||||
<When Condition=" '$(InitializeVMR)' == 'true' ">
|
||||
<!-- VMR bootstrap -->
|
||||
<ItemGroup>
|
||||
<ProjectToBuild Include="$(RepoRoot)src/VirtualMonoRepo/Tasks/VirtualMonoRepo.Tasks.csproj" BuildInParallel="false" />
|
||||
<ProjectToBuild Include="$(RepoRoot)src/VirtualMonoRepo/InitializeVMR.proj" BuildInParallel="false" />
|
||||
</ItemGroup>
|
||||
</When>
|
||||
|
||||
<Otherwise>
|
||||
<!-- Regular build -->
|
||||
<ItemGroup>
|
||||
<ProjectToBuild Include="$(RepoRoot)Microsoft.DotNet.Cli.sln" />
|
||||
<ProjectToBuild Condition="'$(OS)' == 'Windows_NT' And ('$(Architecture)' == 'x86' Or '$(Architecture)' == 'x64' Or '$(Architecture)' == 'arm64' Or '$(Architecture)' == 'arm')"
|
||||
Include="$(RepoRoot)eng\version.csproj;
|
||||
$(RepoRoot)eng\native.proj" />
|
||||
</ItemGroup>
|
||||
</Otherwise>
|
||||
</Choose>
|
||||
</Project>
|
||||
|
|
|
@ -76,7 +76,10 @@
|
|||
<SdkNonShippingAssetsToPublish Include="$(ArtifactsNonShippingPackagesDir)*.swr" />
|
||||
<SdkNonShippingAssetsToPublish Include="$(ArtifactsNonShippingPackagesDir)*.msi" />
|
||||
<SdkNonShippingAssetsToPublish Condition="'$(PublishBinariesAndBadge)' != 'false'" Include="$(ArtifactsNonShippingPackagesDir)*.tar.gz" />
|
||||
<WixPacksToPublish Include="$(ArtifactsNonShippingPackagesDir)*.wixpack.zip" />
|
||||
<SdkNonShippingAssetsToPublish Condition="'$(PublishBinariesAndBadge)' != 'false'" Include="$(ArtifactsNonShippingPackagesDir)*.zip" />
|
||||
<!-- Remove wixpacks if not doing post-build signing, since they are not needed -->
|
||||
<SdkNonShippingAssetsToPublish Remove="@(WixPacksToPublish)" Condition="'$(PostBuildSign)' != 'true'" />
|
||||
<SdkNonShippingAssetsToPublish Include="$(ArtifactsNonShippingPackagesDir)*.pkg" />
|
||||
<CheckSumsToPublish Include="$(ArtifactsShippingPackagesDir)*.sha512" />
|
||||
<CheckSumsToPublish Remove="$(ArtifactsShippingPackagesDir)productCommit-*.txt.sha512" Condition=" '$(PublishBinariesAndBadge)' == 'false'" />
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
<!-- Whenever altering this or other Source Build files, please include @dotnet/source-build-internal as a reviewer. -->
|
||||
|
||||
<Project>
|
||||
|
||||
<PropertyGroup>
|
||||
|
|
|
@ -1,5 +1,17 @@
|
|||
<!-- Whenever altering this or other Source Build files, please include @dotnet/source-build-internal as a reviewer. -->
|
||||
<!-- See aka.ms/dotnet/prebuilts for guidance on what pre-builts are and how to eliminate them. -->
|
||||
|
||||
<UsageData>
|
||||
<IgnorePatterns>
|
||||
<UsagePattern IdentityGlob="*/*" />
|
||||
<UsagePattern IdentityGlob="Microsoft.SourceBuild.Intermediate.*/*" />
|
||||
|
||||
<!--
|
||||
Temporary exclusion for NuGet packages, since NuGet is not producing source-build intermediate package,
|
||||
see: https://github.com/NuGet/Home/issues/11059
|
||||
-->
|
||||
<UsagePattern IdentityGlob="NuGet.*/*" />
|
||||
|
||||
<!-- These are coming in via runtime but the source-build infra isn't able to automatically pick up the right intermediate. -->
|
||||
<UsagePattern IdentityGlob="Microsoft.NETCore.App.Crossgen2.linux-x64/*8.0.*" />
|
||||
</IgnorePatterns>
|
||||
</UsageData>
|
||||
|
|
|
@ -1,46 +1,46 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Dependencies>
|
||||
<ProductDependencies>
|
||||
<Dependency Name="Microsoft.WindowsDesktop.App.Ref" Version="7.0.9" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop</Uri>
|
||||
<Sha>e346a9e945fd8fb247ca06c129c68458b0713cd8</Sha>
|
||||
<Dependency Name="Microsoft.WindowsDesktop.App.Ref" Version="8.0.0-preview.7.23364.5" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://github.com/dotnet/windowsdesktop</Uri>
|
||||
<Sha>86b7388006af7f1106c36c72da4d1dbeada60573</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="VS.Redist.Common.WindowsDesktop.SharedFramework.x64.7.0" Version="7.0.9-servicing.23321.11" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop</Uri>
|
||||
<Sha>e346a9e945fd8fb247ca06c129c68458b0713cd8</Sha>
|
||||
<Dependency Name="VS.Redist.Common.WindowsDesktop.SharedFramework.x64.8.0" Version="8.0.0-preview.7.23364.5" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://github.com/dotnet/windowsdesktop</Uri>
|
||||
<Sha>86b7388006af7f1106c36c72da4d1dbeada60573</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="VS.Redist.Common.WindowsDesktop.TargetingPack.x64.7.0" Version="7.0.9-servicing.23321.11" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop</Uri>
|
||||
<Sha>e346a9e945fd8fb247ca06c129c68458b0713cd8</Sha>
|
||||
<Dependency Name="VS.Redist.Common.WindowsDesktop.TargetingPack.x64.8.0" Version="8.0.0-preview.7.23364.5" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://github.com/dotnet/windowsdesktop</Uri>
|
||||
<Sha>86b7388006af7f1106c36c72da4d1dbeada60573</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.WindowsDesktop.App.Runtime.win-x64" Version="7.0.9" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop</Uri>
|
||||
<Sha>e346a9e945fd8fb247ca06c129c68458b0713cd8</Sha>
|
||||
<Dependency Name="Microsoft.WindowsDesktop.App.Runtime.win-x64" Version="8.0.0-preview.7.23364.5" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://github.com/dotnet/windowsdesktop</Uri>
|
||||
<Sha>86b7388006af7f1106c36c72da4d1dbeada60573</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="VS.Redist.Common.NetCore.SharedFramework.x64.7.0" Version="7.0.9-servicing.23320.18" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-runtime</Uri>
|
||||
<Sha>8e9a17b2216f51a5788f8b1c467a4cf3b769e7d7</Sha>
|
||||
<Dependency Name="VS.Redist.Common.NetCore.SharedFramework.x64.8.0" Version="8.0.0-preview.7.23364.3" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>ae99bb2e7a0a5db7c2bff129322965fd3c6e820d</Sha>
|
||||
<SourceBuild RepoName="runtime" ManagedOnly="false" />
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.NETCore.App.Ref" Version="7.0.9" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-runtime</Uri>
|
||||
<Sha>8e9a17b2216f51a5788f8b1c467a4cf3b769e7d7</Sha>
|
||||
<Dependency Name="Microsoft.NETCore.App.Ref" Version="8.0.0-preview.7.23364.3" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>ae99bb2e7a0a5db7c2bff129322965fd3c6e820d</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="VS.Redist.Common.NetCore.TargetingPack.x64.7.0" Version="7.0.9-servicing.23320.18" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-runtime</Uri>
|
||||
<Sha>8e9a17b2216f51a5788f8b1c467a4cf3b769e7d7</Sha>
|
||||
<Dependency Name="VS.Redist.Common.NetCore.TargetingPack.x64.8.0" Version="8.0.0-preview.7.23364.3" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>ae99bb2e7a0a5db7c2bff129322965fd3c6e820d</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.NETCore.App.Runtime.win-x64" Version="7.0.9" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-runtime</Uri>
|
||||
<Sha>8e9a17b2216f51a5788f8b1c467a4cf3b769e7d7</Sha>
|
||||
<SourceBuildTarball RepoName="runtime" ManagedOnly="true" />
|
||||
<Dependency Name="Microsoft.NETCore.App.Runtime.win-x64" Version="8.0.0-preview.7.23364.3" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>ae99bb2e7a0a5db7c2bff129322965fd3c6e820d</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.NETCore.App.Host.win-x64" Version="7.0.9" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-runtime</Uri>
|
||||
<Sha>8e9a17b2216f51a5788f8b1c467a4cf3b769e7d7</Sha>
|
||||
<Dependency Name="Microsoft.NETCore.App.Host.win-x64" Version="8.0.0-preview.7.23364.3" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>ae99bb2e7a0a5db7c2bff129322965fd3c6e820d</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.NETCore.DotNetHostResolver" Version="7.0.9" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-runtime</Uri>
|
||||
<Sha>8e9a17b2216f51a5788f8b1c467a4cf3b769e7d7</Sha>
|
||||
<Dependency Name="Microsoft.NETCore.DotNetHostResolver" Version="8.0.0-preview.7.23364.3" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>ae99bb2e7a0a5db7c2bff129322965fd3c6e820d</Sha>
|
||||
</Dependency>
|
||||
<!-- Change blob version in GenerateLayout.targets if this is unpinned to service targeting pack -->
|
||||
<!-- No new netstandard.library planned for 3.1 timeframe at this time. -->
|
||||
|
@ -48,38 +48,38 @@
|
|||
<Uri>https://github.com/dotnet/core-setup</Uri>
|
||||
<Sha>7d57652f33493fa022125b7f63aad0d70c52d810</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.NETCore.Platforms" Version="7.0.4" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-runtime</Uri>
|
||||
<Sha>8e9a17b2216f51a5788f8b1c467a4cf3b769e7d7</Sha>
|
||||
<Dependency Name="Microsoft.NETCore.Platforms" Version="8.0.0-preview.7.23364.3" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>ae99bb2e7a0a5db7c2bff129322965fd3c6e820d</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.AspNetCore.App.Ref" Version="7.0.9" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore</Uri>
|
||||
<Sha>b506e2cb7b6c0fe787305f8cfdee046b7b3f9a53</Sha>
|
||||
<Dependency Name="Microsoft.AspNetCore.App.Ref" Version="8.0.0-preview.7.23364.19" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://github.com/dotnet/aspnetcore</Uri>
|
||||
<Sha>c1e82b87adfc3d7dd75582eb8f437885e9e43be4</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.AspNetCore.App.Ref.Internal" Version="7.0.9-servicing.23321.10" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore</Uri>
|
||||
<Sha>b506e2cb7b6c0fe787305f8cfdee046b7b3f9a53</Sha>
|
||||
<Dependency Name="Microsoft.AspNetCore.App.Ref.Internal" Version="8.0.0-preview.7.23364.19" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://github.com/dotnet/aspnetcore</Uri>
|
||||
<Sha>c1e82b87adfc3d7dd75582eb8f437885e9e43be4</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.AspNetCore.App.Runtime.win-x64" Version="8.0.0-preview.7.23364.19" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://github.com/dotnet/aspnetcore</Uri>
|
||||
<Sha>c1e82b87adfc3d7dd75582eb8f437885e9e43be4</Sha>
|
||||
<SourceBuild RepoName="aspnetcore" ManagedOnly="true" />
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.AspNetCore.App.Runtime.win-x64" Version="7.0.9" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore</Uri>
|
||||
<Sha>b506e2cb7b6c0fe787305f8cfdee046b7b3f9a53</Sha>
|
||||
<Dependency Name="VS.Redist.Common.AspNetCore.SharedFramework.x64.8.0" Version="8.0.0-preview.7.23364.19" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://github.com/dotnet/aspnetcore</Uri>
|
||||
<Sha>c1e82b87adfc3d7dd75582eb8f437885e9e43be4</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="VS.Redist.Common.AspNetCore.SharedFramework.x64.7.0" Version="7.0.9-servicing.23321.10" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore</Uri>
|
||||
<Sha>b506e2cb7b6c0fe787305f8cfdee046b7b3f9a53</Sha>
|
||||
<Dependency Name="dotnet-dev-certs" Version="8.0.0-preview.7.23364.19" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://github.com/dotnet/aspnetcore</Uri>
|
||||
<Sha>c1e82b87adfc3d7dd75582eb8f437885e9e43be4</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="dotnet-dev-certs" Version="7.0.9-servicing.23321.10" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore</Uri>
|
||||
<Sha>b506e2cb7b6c0fe787305f8cfdee046b7b3f9a53</Sha>
|
||||
<Dependency Name="dotnet-user-jwts" Version="8.0.0-preview.7.23364.19" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://github.com/dotnet/aspnetcore</Uri>
|
||||
<Sha>c1e82b87adfc3d7dd75582eb8f437885e9e43be4</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="dotnet-user-jwts" Version="7.0.9-servicing.23321.10" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore</Uri>
|
||||
<Sha>b506e2cb7b6c0fe787305f8cfdee046b7b3f9a53</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="dotnet-user-secrets" Version="7.0.9-servicing.23321.10" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore</Uri>
|
||||
<Sha>b506e2cb7b6c0fe787305f8cfdee046b7b3f9a53</Sha>
|
||||
<Dependency Name="dotnet-user-secrets" Version="8.0.0-preview.7.23364.19" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://github.com/dotnet/aspnetcore</Uri>
|
||||
<Sha>c1e82b87adfc3d7dd75582eb8f437885e9e43be4</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.DotNet.Test.ProjectTemplates.2.1" Version="1.0.2-beta4.22406.1">
|
||||
<Uri>https://github.com/dotnet/test-templates</Uri>
|
||||
|
@ -98,39 +98,43 @@
|
|||
<Sha>86fd4cd1c57057f920678e29d6ecbba491abd142</Sha>
|
||||
<SourceBuild RepoName="test-templates" ManagedOnly="true" />
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.DotNet.Common.ItemTemplates" Version="7.0.400">
|
||||
<Uri>https://github.com/dotnet/sdk</Uri>
|
||||
<Sha>6b937a456ee63ecdcf0bd0bfdcc7e0a84dc0e2cc</Sha>
|
||||
<Dependency Name="Microsoft.DotNet.Test.ProjectTemplates.8.0" Version="1.1.0-rc.23330.2">
|
||||
<Uri>https://github.com/dotnet/test-templates</Uri>
|
||||
<Sha>86fd4cd1c57057f920678e29d6ecbba491abd142</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.TemplateEngine.Cli" Version="7.0.400-rtm.23361.22">
|
||||
<Dependency Name="Microsoft.DotNet.Common.ItemTemplates" Version="8.0.100-preview.7.23364.43">
|
||||
<Uri>https://github.com/dotnet/sdk</Uri>
|
||||
<Sha>6b937a456ee63ecdcf0bd0bfdcc7e0a84dc0e2cc</Sha>
|
||||
<Sha>90b64dd1baae3744708b97729f22199d6a8ebf71</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.NET.Sdk" Version="7.0.400-rtm.23361.22">
|
||||
<Dependency Name="Microsoft.TemplateEngine.Cli" Version="8.0.100-preview.7.23364.43">
|
||||
<Uri>https://github.com/dotnet/sdk</Uri>
|
||||
<Sha>6b937a456ee63ecdcf0bd0bfdcc7e0a84dc0e2cc</Sha>
|
||||
<Sha>90b64dd1baae3744708b97729f22199d6a8ebf71</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.NET.Sdk" Version="8.0.100-preview.7.23364.43">
|
||||
<Uri>https://github.com/dotnet/sdk</Uri>
|
||||
<Sha>90b64dd1baae3744708b97729f22199d6a8ebf71</Sha>
|
||||
<SourceBuild RepoName="sdk" ManagedOnly="true" />
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.DotNet.MSBuildSdkResolver" Version="7.0.400-rtm.23361.22">
|
||||
<Dependency Name="Microsoft.DotNet.MSBuildSdkResolver" Version="8.0.100-preview.7.23364.43">
|
||||
<Uri>https://github.com/dotnet/sdk</Uri>
|
||||
<Sha>6b937a456ee63ecdcf0bd0bfdcc7e0a84dc0e2cc</Sha>
|
||||
<Sha>90b64dd1baae3744708b97729f22199d6a8ebf71</Sha>
|
||||
</Dependency>
|
||||
<!-- For coherency purposes, these versions should be gated by the versions of winforms and wpf routed via windowsdesktop -->
|
||||
<Dependency Name="Microsoft.Dotnet.WinForms.ProjectTemplates" Version="7.0.9-servicing.23321.6" CoherentParentDependency="Microsoft.WindowsDesktop.App.Runtime.win-x64">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-winforms</Uri>
|
||||
<Sha>dd121ee97234c7490f6111cf0c7bfa9235923f81</Sha>
|
||||
<Dependency Name="Microsoft.Dotnet.WinForms.ProjectTemplates" Version="8.0.0-preview.7.23363.9" CoherentParentDependency="Microsoft.WindowsDesktop.App.Runtime.win-x64">
|
||||
<Uri>https://github.com/dotnet/winforms</Uri>
|
||||
<Sha>925505ff196be6347cf0143efb0302845ed59634</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.DotNet.Wpf.ProjectTemplates" Version="7.0.9-servicing.23321.9" CoherentParentDependency="Microsoft.WindowsDesktop.App.Runtime.win-x64">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-wpf</Uri>
|
||||
<Sha>d41bd7da4139331ef02657deb7944df43b8a181c</Sha>
|
||||
<Dependency Name="Microsoft.DotNet.Wpf.ProjectTemplates" Version="8.0.0-preview.7.23363.6" CoherentParentDependency="Microsoft.WindowsDesktop.App.Runtime.win-x64">
|
||||
<Uri>https://github.com/dotnet/wpf</Uri>
|
||||
<Sha>0a402013135941d7927951203343186ec840045b</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.FSharp.Compiler" Version="12.7.0-beta.23328.4" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Dependency Name="Microsoft.FSharp.Compiler" Version="12.8.0-beta.23363.1" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://github.com/dotnet/fsharp</Uri>
|
||||
<Sha>521a4efba79d9afcfb18bc946d3dda5133252939</Sha>
|
||||
<Sha>0b3c293d1e721ae5fbfb10a4e9f191cbb64650ca</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.SourceBuild.Intermediate.fsharp" Version="7.0.400-beta.23328.4" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Dependency Name="Microsoft.SourceBuild.Intermediate.fsharp" Version="8.0.100-beta.23363.1" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://github.com/dotnet/fsharp</Uri>
|
||||
<Sha>521a4efba79d9afcfb18bc946d3dda5133252939</Sha>
|
||||
<Sha>0b3c293d1e721ae5fbfb10a4e9f191cbb64650ca</Sha>
|
||||
<SourceBuild RepoName="fsharp" ManagedOnly="true" />
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.NET.Test.Sdk" Version="17.7.0-preview-23317-01" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
|
@ -138,86 +142,104 @@
|
|||
<Sha>919ec8358820228cc5fa77ef000051c1d6875399</Sha>
|
||||
<SourceBuild RepoName="vstest" ManagedOnly="true" />
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.NET.ILLink.Tasks" Version="7.0.100-1.23321.1" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://github.com/dotnet/linker</Uri>
|
||||
<Sha>13a94b5bdc9d01ecd9eb2bd699bd34d597c3ec19</Sha>
|
||||
<SourceBuild RepoName="linker" ManagedOnly="true" />
|
||||
<RepoName>linker</RepoName>
|
||||
<Dependency Name="Microsoft.NET.ILLink.Tasks" Version="8.0.0-preview.7.23364.3" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>ae99bb2e7a0a5db7c2bff129322965fd3c6e820d</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Net.Compilers.Toolset" Version="4.7.0-3.23360.7" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Dependency Name="Microsoft.Net.Compilers.Toolset" Version="4.8.0-1.23364.3" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://github.com/dotnet/roslyn</Uri>
|
||||
<Sha>7c338f34cdccae85b80dc56a60a9e5733f82cfb4</Sha>
|
||||
<Sha>006a3d367a06a806454c63841c7df29e43a08b47</Sha>
|
||||
<SourceBuild RepoName="roslyn" ManagedOnly="true" />
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Build" Version="17.7.0" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Dependency Name="Microsoft.Build" Version="17.8.0-preview-23364-04" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://github.com/dotnet/msbuild</Uri>
|
||||
<Sha>5785ed5c22cebcbf3a7c79dc8c91c3ce7954b2f5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.SourceBuild.Intermediate.msbuild" Version="17.7.0-preview-23323-05" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://github.com/dotnet/msbuild</Uri>
|
||||
<Sha>5785ed5c22cebcbf3a7c79dc8c91c3ce7954b2f5</Sha>
|
||||
<Sha>4989625ae896cf35e87c15fd756c3bec341734b3</Sha>
|
||||
<SourceBuild RepoName="msbuild" ManagedOnly="true" />
|
||||
</Dependency>
|
||||
<Dependency Name="NuGet.Build.Tasks" Version="6.7.0-rc.111" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Dependency Name="NuGet.Build.Tasks" Version="6.8.0-preview.1.22" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://github.com/nuget/nuget.client</Uri>
|
||||
<Sha>13f2b6af6e9864711e815cfbffd7aa5015c52cec</Sha>
|
||||
<Sha>b3c4e8094bbb924408180d700ae5b3d37713587c</Sha>
|
||||
<SourceBuildTarball RepoName="nuget-client" ManagedOnly="true" />
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.ApplicationInsights" Version="2.0.0">
|
||||
<Uri>https://github.com/Microsoft/ApplicationInsights-dotnet</Uri>
|
||||
<Sha>53b80940842204f78708a538628288ff5d741a1d</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.NET.Workload.Emscripten.net6.Manifest-7.0.100" Version="7.0.9" CoherentParentDependency="VS.Redist.Common.NetCore.SharedFramework.x64.7.0">
|
||||
<Dependency Name="Microsoft.NET.Workload.Emscripten.Current.Manifest-8.0.100.Transport" Version="8.0.0-preview.7.23361.2" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
||||
<Uri>https://github.com/dotnet/emsdk</Uri>
|
||||
<Sha>9b227c1606a01920839873f840f6b76f7b492a66</Sha>
|
||||
<Sha>afbff08914374ed6790324635b9346d1256680fc</Sha>
|
||||
<SourceBuild RepoName="emsdk" ManagedOnly="true" />
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.NET.Workload.Emscripten.net7.Manifest-7.0.100" Version="7.0.9" CoherentParentDependency="VS.Redist.Common.NetCore.SharedFramework.x64.7.0">
|
||||
<Uri>https://github.com/dotnet/emsdk</Uri>
|
||||
<Sha>9b227c1606a01920839873f840f6b76f7b492a66</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Deployment.DotNet.Releases" Version="1.0.0-preview5.1.22263.1">
|
||||
<Dependency Name="Microsoft.Deployment.DotNet.Releases" Version="1.0.0-preview.6.23206.1" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://github.com/dotnet/deployment-tools</Uri>
|
||||
<Sha>c3ad00ae84489071080a606f6a8e43c9a91a5cc2</Sha>
|
||||
<SourceBuildTarball RepoName="deployment-tools" ManagedOnly="true" />
|
||||
<Sha>9e870996b8bf0b91a791edd1039bfd23bdd01af8</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.SourceBuild.Intermediate.source-build-externals" Version="7.0.0-alpha.1.22505.1">
|
||||
<!-- Explicit dependency because Microsoft.Deployment.DotNet.Releases has different versioning
|
||||
than the SB intermediate -->
|
||||
<Dependency Name="Microsoft.SourceBuild.Intermediate.deployment-tools" Version="8.0.0-preview.6.23206.1" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://github.com/dotnet/deployment-tools</Uri>
|
||||
<Sha>9e870996b8bf0b91a791edd1039bfd23bdd01af8</Sha>
|
||||
<SourceBuild RepoName="deployment-tools" ManagedOnly="true" />
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.SourceBuild.Intermediate.source-build-externals" Version="8.0.0-alpha.1.23362.1">
|
||||
<Uri>https://github.com/dotnet/source-build-externals</Uri>
|
||||
<Sha>c47ba6c19d50081f90008da8bc61b3ac20348f20</Sha>
|
||||
<Sha>76026f9224bd83ede7b2f494912694a30169c233</Sha>
|
||||
<SourceBuild RepoName="source-build-externals" ManagedOnly="true" />
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.SourceBuild.Intermediate.symreader" Version="1.4.0-beta2-21475-02">
|
||||
<Dependency Name="Microsoft.SourceBuild.Intermediate.symreader" Version="2.1.0-beta.23253.1">
|
||||
<Uri>https://github.com/dotnet/symreader</Uri>
|
||||
<Sha>7b9791daa3a3477eb22ec805946c9fff8b42d8ca</Sha>
|
||||
<Sha>2c8079e2e8e78c0cd11ac75a32014756136ecdb9</Sha>
|
||||
<SourceBuild RepoName="symreader" ManagedOnly="true" />
|
||||
</Dependency>
|
||||
<Dependency Name="System.CommandLine" Version="2.0.0-beta4.23307.1" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://github.com/dotnet/command-line-api</Uri>
|
||||
<Sha>02fe27cd6a9b001c8feb7938e6ef4b3799745759</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.SourceBuild.Intermediate.command-line-api" Version="0.1.430701" CoherentParentDependency="Microsoft.NET.Sdk">
|
||||
<Uri>https://github.com/dotnet/command-line-api</Uri>
|
||||
<Sha>02fe27cd6a9b001c8feb7938e6ef4b3799745759</Sha>
|
||||
<SourceBuild RepoName="command-line-api" ManagedOnly="true" />
|
||||
</Dependency>
|
||||
</ProductDependencies>
|
||||
<ToolsetDependencies>
|
||||
<Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="7.0.0-beta.23361.2">
|
||||
<Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="8.0.0-beta.23361.1">
|
||||
<Uri>https://github.com/dotnet/arcade</Uri>
|
||||
<Sha>cae11bc40b691f546d788f7ab37f7eaf0e24ded8</Sha>
|
||||
<Sha>2d2482f9b6ccaaac02ef39adc06b3e30b29a5c13</Sha>
|
||||
<SourceBuild RepoName="arcade" ManagedOnly="true" />
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.DotNet.CMake.Sdk" Version="7.0.0-beta.23361.2">
|
||||
<Dependency Name="Microsoft.DotNet.CMake.Sdk" Version="8.0.0-beta.23361.1">
|
||||
<Uri>https://github.com/dotnet/arcade</Uri>
|
||||
<Sha>cae11bc40b691f546d788f7ab37f7eaf0e24ded8</Sha>
|
||||
<Sha>2d2482f9b6ccaaac02ef39adc06b3e30b29a5c13</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.DotNet.Build.Tasks.Installers" Version="7.0.0-beta.23361.2">
|
||||
<Dependency Name="Microsoft.DotNet.Build.Tasks.Installers" Version="8.0.0-beta.23361.1">
|
||||
<Uri>https://github.com/dotnet/arcade</Uri>
|
||||
<Sha>cae11bc40b691f546d788f7ab37f7eaf0e24ded8</Sha>
|
||||
<Sha>2d2482f9b6ccaaac02ef39adc06b3e30b29a5c13</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.SourceBuild.Intermediate.source-build-reference-packages" Version="7.0.0-alpha.1.23219.1">
|
||||
<Dependency Name="Microsoft.DotNet.Darc" Version="1.1.0-beta.23362.2">
|
||||
<Uri>https://github.com/dotnet/arcade-services</Uri>
|
||||
<Sha>5dfdb40159336b9d1557c5416c20748c6ea7c579</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.DotNet.DarcLib" Version="1.1.0-beta.23362.2">
|
||||
<Uri>https://github.com/dotnet/arcade-services</Uri>
|
||||
<Sha>5dfdb40159336b9d1557c5416c20748c6ea7c579</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Logging.Console" Version="8.0.0-alpha.1.22557.12">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>af841c8b33cecc92d74222298f1e45bf7bf3d90a</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.SourceBuild.Intermediate.source-build-reference-packages" Version="8.0.0-alpha.1.23362.3">
|
||||
<Uri>https://github.com/dotnet/source-build-reference-packages</Uri>
|
||||
<Sha>525b6c35cc5c5c9b80b47044be2e4e77858d505a</Sha>
|
||||
<Sha>2b54fbefe764f25c622a0c6b7376bcf561d156cf</Sha>
|
||||
<SourceBuild RepoName="source-build-reference-packages" ManagedOnly="true" />
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.SourceLink.GitHub" Version="1.2.0-beta-22429-01" CoherentParentDependency="Microsoft.DotNet.Arcade.Sdk">
|
||||
<Dependency Name="Microsoft.SourceLink.GitHub" Version="8.0.0-beta.23360.2" CoherentParentDependency="Microsoft.DotNet.Arcade.Sdk">
|
||||
<Uri>https://github.com/dotnet/sourcelink</Uri>
|
||||
<Sha>e57efa1ed395dd6975b33052719facb24f03ee0b</Sha>
|
||||
<Sha>a1eed1e0522f47f4fbf60ed5f8caef3679208d66</Sha>
|
||||
<SourceBuild RepoName="sourcelink" ManagedOnly="true" />
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.DotNet.XliffTasks" Version="1.0.0-beta.22427.1" CoherentParentDependency="Microsoft.DotNet.Arcade.Sdk">
|
||||
<Dependency Name="Microsoft.DotNet.XliffTasks" Version="1.0.0-beta.23326.1" CoherentParentDependency="Microsoft.DotNet.Arcade.Sdk">
|
||||
<Uri>https://github.com/dotnet/xliff-tasks</Uri>
|
||||
<Sha>740189d758fb3bbdc118c5b6171ef1a7351a8c44</Sha>
|
||||
<Sha>10a822a79bde97ca45faa76dc4ec33b85533728a</Sha>
|
||||
<SourceBuild RepoName="xliff-tasks" ManagedOnly="true" />
|
||||
</Dependency>
|
||||
</ToolsetDependencies>
|
||||
|
|
|
@ -5,25 +5,28 @@
|
|||
<UsingToolNetFrameworkReferenceAssemblies>true</UsingToolNetFrameworkReferenceAssemblies>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<VersionMajor>7</VersionMajor>
|
||||
<VersionMajor>8</VersionMajor>
|
||||
<VersionMinor>0</VersionMinor>
|
||||
<VersionSDKMinor>4</VersionSDKMinor>
|
||||
<VersionSDKMinor>1</VersionSDKMinor>
|
||||
<VersionFeature>00</VersionFeature>
|
||||
<VersionPrefix>$(VersionMajor).$(VersionMinor).$(VersionSDKMinor)$(VersionFeature)</VersionPrefix>
|
||||
<PreReleaseVersionLabel>rtm</PreReleaseVersionLabel>
|
||||
<PreReleaseVersionIteration>
|
||||
</PreReleaseVersionIteration>
|
||||
<PreReleaseVersionLabel>preview</PreReleaseVersionLabel>
|
||||
<PreReleaseVersionIteration>7</PreReleaseVersionIteration>
|
||||
<MajorMinorVersion>$(VersionMajor).$(VersionMinor)</MajorMinorVersion>
|
||||
<CliProductBandVersion>$(MajorMinorVersion).$(VersionSDKMinor)</CliProductBandVersion>
|
||||
<!-- Enable to remove prerelease label. -->
|
||||
<StabilizePackageVersion Condition="'$(StabilizePackageVersion)' == ''">true</StabilizePackageVersion>
|
||||
<StabilizePackageVersion Condition="'$(StabilizePackageVersion)' == ''">false</StabilizePackageVersion>
|
||||
<DotNetFinalVersionKind Condition="'$(StabilizePackageVersion)' == 'true'">release</DotNetFinalVersionKind>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<VersionFeature21>30</VersionFeature21>
|
||||
<VersionFeature31>32</VersionFeature31>
|
||||
<VersionFeature50>17</VersionFeature50>
|
||||
<VersionFeature60>$([MSBuild]::Add($(VersionFeature), 20))</VersionFeature60>
|
||||
<VersionFeature60>19</VersionFeature60>
|
||||
<VersionFeature70>8</VersionFeature70>
|
||||
<!-- Should be kept in sync with VersionFeature70. It should match the version of Microsoft.NET.ILLink.Tasks
|
||||
referenced by the same 7.0 SDK that references the 7.0.VersionFeature70 runtime pack. -->
|
||||
<_NET70ILLinkPackVersion>7.0.100-1.23211.1</_NET70ILLinkPackVersion>
|
||||
</PropertyGroup>
|
||||
<!-- Restore feeds -->
|
||||
<PropertyGroup Label="Restore feeds">
|
||||
|
@ -33,22 +36,31 @@
|
|||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<!-- Dependency from https://github.com/dotnet/arcade -->
|
||||
<MicrosoftDotNetBuildTasksInstallersPackageVersion>7.0.0-beta.23361.2</MicrosoftDotNetBuildTasksInstallersPackageVersion>
|
||||
<MicrosoftDotNetBuildTasksInstallersPackageVersion>8.0.0-beta.23361.1</MicrosoftDotNetBuildTasksInstallersPackageVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<!-- Dependency from https://github.com/dotnet/arcade-services -->
|
||||
<MicrosoftDotNetDarcLibVersion>1.1.0-beta.23362.2</MicrosoftDotNetDarcLibVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<!-- Dependency from https://github.com/dotnet/winforms -->
|
||||
<MicrosoftDotnetWinFormsProjectTemplatesPackageVersion>7.0.9-servicing.23321.6</MicrosoftDotnetWinFormsProjectTemplatesPackageVersion>
|
||||
<MicrosoftDotnetWinFormsProjectTemplatesPackageVersion>8.0.0-preview.7.23363.9</MicrosoftDotnetWinFormsProjectTemplatesPackageVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<!-- Dependency from https://github.com/dotnet/wpf -->
|
||||
<MicrosoftDotNetWpfProjectTemplatesPackageVersion>7.0.9-servicing.23321.9</MicrosoftDotNetWpfProjectTemplatesPackageVersion>
|
||||
<MicrosoftDotNetWpfProjectTemplatesPackageVersion>8.0.0-preview.7.23363.6</MicrosoftDotNetWpfProjectTemplatesPackageVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<!-- Dependency from https://github.com/dotnet/test-templates -->
|
||||
<!-- Legacy versions -->
|
||||
<MicrosoftDotNetTestProjectTemplates21PackageVersion>1.0.2-beta4.22406.1</MicrosoftDotNetTestProjectTemplates21PackageVersion>
|
||||
<MicrosoftDotNetTestProjectTemplates30PackageVersion>1.0.2-beta4.22406.1</MicrosoftDotNetTestProjectTemplates30PackageVersion>
|
||||
<!-- Supported versions -->
|
||||
<MicrosoftDotNetTestProjectTemplates31PackageVersion>1.1.0-rc.22558.1</MicrosoftDotNetTestProjectTemplates31PackageVersion>
|
||||
<MicrosoftDotNetTestProjectTemplates50PackageVersion>1.1.0-rc.23330.2</MicrosoftDotNetTestProjectTemplates50PackageVersion>
|
||||
<MicrosoftDotNetTestProjectTemplates60PackageVersion>1.1.0-rc.23330.2</MicrosoftDotNetTestProjectTemplates60PackageVersion>
|
||||
<MicrosoftDotNetTestProjectTemplates70PackageVersion>1.1.0-rc.23330.2</MicrosoftDotNetTestProjectTemplates70PackageVersion>
|
||||
<MicrosoftDotNetTestProjectTemplates80PackageVersion>1.1.0-rc.23330.2</MicrosoftDotNetTestProjectTemplates80PackageVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<!-- NUnit3.DotNetNew.Template versions do not 'flow in' -->
|
||||
|
@ -56,50 +68,50 @@
|
|||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<!-- Dependencies from https://github.com/aspnet/AspNetCore -->
|
||||
<MicrosoftAspNetCoreAppRuntimewinx64PackageVersion>7.0.9</MicrosoftAspNetCoreAppRuntimewinx64PackageVersion>
|
||||
<MicrosoftAspNetCoreAppRefPackageVersion>7.0.9</MicrosoftAspNetCoreAppRefPackageVersion>
|
||||
<MicrosoftAspNetCoreAppRefInternalPackageVersion>7.0.9-servicing.23321.10</MicrosoftAspNetCoreAppRefInternalPackageVersion>
|
||||
<VSRedistCommonAspNetCoreSharedFrameworkx6470PackageVersion>7.0.9-servicing.23321.10</VSRedistCommonAspNetCoreSharedFrameworkx6470PackageVersion>
|
||||
<dotnetdevcertsPackageVersion>7.0.9-servicing.23321.10</dotnetdevcertsPackageVersion>
|
||||
<dotnetuserjwtsPackageVersion>7.0.9-servicing.23321.10</dotnetuserjwtsPackageVersion>
|
||||
<dotnetusersecretsPackageVersion>7.0.9-servicing.23321.10</dotnetusersecretsPackageVersion>
|
||||
<MicrosoftAspNetCoreAppRuntimewinx64PackageVersion>8.0.0-preview.7.23364.19</MicrosoftAspNetCoreAppRuntimewinx64PackageVersion>
|
||||
<MicrosoftAspNetCoreAppRefPackageVersion>8.0.0-preview.7.23364.19</MicrosoftAspNetCoreAppRefPackageVersion>
|
||||
<MicrosoftAspNetCoreAppRefInternalPackageVersion>8.0.0-preview.7.23364.19</MicrosoftAspNetCoreAppRefInternalPackageVersion>
|
||||
<VSRedistCommonAspNetCoreSharedFrameworkx6480PackageVersion>8.0.0-preview.7.23364.19</VSRedistCommonAspNetCoreSharedFrameworkx6480PackageVersion>
|
||||
<dotnetdevcertsPackageVersion>8.0.0-preview.7.23364.19</dotnetdevcertsPackageVersion>
|
||||
<dotnetuserjwtsPackageVersion>8.0.0-preview.7.23364.19</dotnetuserjwtsPackageVersion>
|
||||
<dotnetusersecretsPackageVersion>8.0.0-preview.7.23364.19</dotnetusersecretsPackageVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<MicroBuildCorePackageVersion>0.2.0</MicroBuildCorePackageVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<!-- Dependencies from https://github.com/dotnet/sdk -->
|
||||
<MicrosoftDotNetCommonItemTemplatesPackageVersion>7.0.400</MicrosoftDotNetCommonItemTemplatesPackageVersion>
|
||||
<MicrosoftNETSdkPackageVersion>7.0.400-rtm.23361.22</MicrosoftNETSdkPackageVersion>
|
||||
<MicrosoftDotNetMSBuildSdkResolverPackageVersion>7.0.400-rtm.23361.22</MicrosoftDotNetMSBuildSdkResolverPackageVersion>
|
||||
<MicrosoftDotNetCommonItemTemplatesPackageVersion>8.0.100-preview.7.23364.43</MicrosoftDotNetCommonItemTemplatesPackageVersion>
|
||||
<MicrosoftNETSdkPackageVersion>8.0.100-preview.7.23364.43</MicrosoftNETSdkPackageVersion>
|
||||
<MicrosoftDotNetMSBuildSdkResolverPackageVersion>8.0.100-preview.7.23364.43</MicrosoftDotNetMSBuildSdkResolverPackageVersion>
|
||||
<MicrosoftNETBuildExtensionsPackageVersion>$(MicrosoftNETSdkPackageVersion)</MicrosoftNETBuildExtensionsPackageVersion>
|
||||
<MicrosoftDotnetToolsetInternalPackageVersion>$(MicrosoftNETSdkPackageVersion)</MicrosoftDotnetToolsetInternalPackageVersion>
|
||||
<MicrosoftDotnetTemplateLocatorPackageVersion>$(MicrosoftNETSdkPackageVersion)</MicrosoftDotnetTemplateLocatorPackageVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<!-- Dependencies from https://github.com/dotnet/roslyn -->
|
||||
<MicrosoftNetCompilersToolsetPackageVersion>4.7.0-3.23360.7</MicrosoftNetCompilersToolsetPackageVersion>
|
||||
<MicrosoftNetCompilersToolsetPackageVersion>4.8.0-1.23364.3</MicrosoftNetCompilersToolsetPackageVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<!-- Dependencies from https://github.com/dotnet/corefx -->
|
||||
<MicrosoftNETCorePlatformsPackageVersion>7.0.4</MicrosoftNETCorePlatformsPackageVersion>
|
||||
<MicrosoftNETCorePlatformsPackageVersion>8.0.0-preview.7.23364.3</MicrosoftNETCorePlatformsPackageVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<!-- Dependencies from https://github.com/dotnet/core-setup -->
|
||||
<VSRedistCommonNetCoreSharedFrameworkx6470PackageVersion>7.0.9-servicing.23320.18</VSRedistCommonNetCoreSharedFrameworkx6470PackageVersion>
|
||||
<VSRedistCommonNetCoreTargetingPackx6470PackageVersion>7.0.9-servicing.23320.18</VSRedistCommonNetCoreTargetingPackx6470PackageVersion>
|
||||
<MicrosoftNETCoreAppRuntimewinx64PackageVersion>7.0.9</MicrosoftNETCoreAppRuntimewinx64PackageVersion>
|
||||
<MicrosoftNETCoreAppHostwinx64PackageVersion>7.0.9</MicrosoftNETCoreAppHostwinx64PackageVersion>
|
||||
<MicrosoftNETCoreAppRefPackageVersion>7.0.9</MicrosoftNETCoreAppRefPackageVersion>
|
||||
<MicrosoftNETCoreDotNetHostResolverPackageVersion>7.0.9</MicrosoftNETCoreDotNetHostResolverPackageVersion>
|
||||
<VSRedistCommonNetCoreSharedFrameworkx6480PackageVersion>8.0.0-preview.7.23364.3</VSRedistCommonNetCoreSharedFrameworkx6480PackageVersion>
|
||||
<VSRedistCommonNetCoreTargetingPackx6480PackageVersion>8.0.0-preview.7.23364.3</VSRedistCommonNetCoreTargetingPackx6480PackageVersion>
|
||||
<MicrosoftNETCoreAppRuntimewinx64PackageVersion>8.0.0-preview.7.23364.3</MicrosoftNETCoreAppRuntimewinx64PackageVersion>
|
||||
<MicrosoftNETCoreAppHostwinx64PackageVersion>8.0.0-preview.7.23364.3</MicrosoftNETCoreAppHostwinx64PackageVersion>
|
||||
<MicrosoftNETCoreAppRefPackageVersion>8.0.0-preview.7.23364.3</MicrosoftNETCoreAppRefPackageVersion>
|
||||
<MicrosoftNETCoreDotNetHostResolverPackageVersion>8.0.0-preview.7.23364.3</MicrosoftNETCoreDotNetHostResolverPackageVersion>
|
||||
<NETStandardLibraryRefPackageVersion>2.1.0</NETStandardLibraryRefPackageVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<!-- Dependencies from https://github.com/dotnet/windowsdesktop -->
|
||||
<VSRedistCommonWindowsDesktopSharedFrameworkx6470PackageVersion>7.0.9-servicing.23321.11</VSRedistCommonWindowsDesktopSharedFrameworkx6470PackageVersion>
|
||||
<VSRedistCommonWindowsDesktopTargetingPackx6470PackageVersion>7.0.9-servicing.23321.11</VSRedistCommonWindowsDesktopTargetingPackx6470PackageVersion>
|
||||
<MicrosoftWindowsDesktopAppRuntimewinx64PackageVersion>7.0.9</MicrosoftWindowsDesktopAppRuntimewinx64PackageVersion>
|
||||
<MicrosoftWindowsDesktopAppRefPackageVersion>7.0.9</MicrosoftWindowsDesktopAppRefPackageVersion>
|
||||
<VSRedistCommonWindowsDesktopSharedFrameworkx6480PackageVersion>8.0.0-preview.7.23364.5</VSRedistCommonWindowsDesktopSharedFrameworkx6480PackageVersion>
|
||||
<VSRedistCommonWindowsDesktopTargetingPackx6480PackageVersion>8.0.0-preview.7.23364.5</VSRedistCommonWindowsDesktopTargetingPackx6480PackageVersion>
|
||||
<MicrosoftWindowsDesktopAppRuntimewinx64PackageVersion>8.0.0-preview.7.23364.5</MicrosoftWindowsDesktopAppRuntimewinx64PackageVersion>
|
||||
<MicrosoftWindowsDesktopAppRefPackageVersion>8.0.0-preview.7.23364.5</MicrosoftWindowsDesktopAppRefPackageVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<!-- Runtime and Apphost pack versions are the same for all RIDs. We flow the x64 -->
|
||||
|
@ -111,7 +123,11 @@
|
|||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<!-- Dependencies from https://github.com/NuGet/NuGet.Client -->
|
||||
<NuGetVersioningPackageVersion>5.8.0</NuGetVersioningPackageVersion>
|
||||
<NuGetBuildTasksPackageVersion>6.8.0-preview.1.22</NuGetBuildTasksPackageVersion>
|
||||
</PropertyGroup>
|
||||
<!-- Dependencies from https://github.com/dotnet/deployment-tools -->
|
||||
<PropertyGroup>
|
||||
<MicrosoftDeploymentDotNetReleasesVersion>1.0.0-preview.6.23206.1</MicrosoftDeploymentDotNetReleasesVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<!-- Automated versions for asp.net templates -->
|
||||
|
@ -119,7 +135,7 @@
|
|||
<MicrosoftNETSdkFeatureAndPatchVersion>$(MicrosoftNETSdkPackageVersion.Split('.')[2])</MicrosoftNETSdkFeatureAndPatchVersion>
|
||||
<MicrosoftNETSdkFeatureAndPatchVersion>$(MicrosoftNETSdkFeatureAndPatchVersion.Split('-')[0])</MicrosoftNETSdkFeatureAndPatchVersion>
|
||||
<MicrosoftNETSdkPatchVersion>$(MicrosoftNETSdkFeatureAndPatchVersion.Substring(1))</MicrosoftNETSdkPatchVersion>
|
||||
<!--
|
||||
<!--
|
||||
Between branding and shipping, the templates should stay at last month's version.
|
||||
If the incoming SDK version is 2 versions behind us, we know we just branded but haven't done the internal -> public merge yet.
|
||||
Therefore we stay at last month's version.
|
||||
|
@ -130,17 +146,26 @@
|
|||
<SubtractOneFromTemplateVersions Condition="$([MSBuild]::Subtract($(VersionFeature), $(MicrosoftNETSdkPatchVersion))) >= 2">true</SubtractOneFromTemplateVersions>
|
||||
<SubtractOneFromTemplateVersions Condition="$(VersionFeature) >= 1 AND ! $(MicrosoftNETSdkPackageVersion.Contains('rtm')) AND ! $(MicrosoftNETSdkPackageVersion.Contains('servicing'))">true</SubtractOneFromTemplateVersions>
|
||||
<AspNetCoreTemplateFeature60>$([MSBuild]::Subtract($(VersionFeature60), 1))</AspNetCoreTemplateFeature60>
|
||||
<AspNetCoreTemplateFeature70>$([MSBuild]::Subtract($(VersionFeature70), 1))</AspNetCoreTemplateFeature70>
|
||||
<AspNetCoreTemplateFeature60 Condition="$(MicrosoftNETSdkPackageVersion.Contains('preview'))">$(VersionFeature60)</AspNetCoreTemplateFeature60>
|
||||
<AspNetCoreTemplateFeature70 Condition="$(MicrosoftNETSdkPackageVersion.Contains('preview'))">$(VersionFeature70)</AspNetCoreTemplateFeature70>
|
||||
<AspNetCoreTemplateFeature60 Condition="'$(SubtractOneFromTemplateVersions)' == 'true'">$([MSBuild]::Subtract($(AspNetCoreTemplateFeature60), 1))</AspNetCoreTemplateFeature60>
|
||||
<AspNetCoreTemplateFeature70 Condition="'$(SubtractOneFromTemplateVersions)' == 'true'">$([MSBuild]::Subtract($(AspNetCoreTemplateFeature70), 1))</AspNetCoreTemplateFeature70>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<!-- Cross-release dependency versions -->
|
||||
<MicrosoftDotNetCommonItemTemplates50PackageVersion>5.0.403</MicrosoftDotNetCommonItemTemplates50PackageVersion>
|
||||
<MicrosoftDotNetCommonItemTemplates60PackageVersion>6.0.302</MicrosoftDotNetCommonItemTemplates60PackageVersion>
|
||||
<MicrosoftDotNetCommonItemTemplates70PackageVersion>7.0.100</MicrosoftDotNetCommonItemTemplates70PackageVersion>
|
||||
<MicrosoftAspNetCoreAppRuntime50PackageVersion>5.0.17</MicrosoftAspNetCoreAppRuntime50PackageVersion>
|
||||
<MicrosoftAspNetCoreAppRuntime60PackageVersion>6.0.14</MicrosoftAspNetCoreAppRuntime60PackageVersion>
|
||||
<MicrosoftAspNetCoreAppRuntime70PackageVersion>7.0.3</MicrosoftAspNetCoreAppRuntime70PackageVersion>
|
||||
<MicrosoftWinFormsProjectTemplates50PackageVersion>5.0.17-servicing.22215.4</MicrosoftWinFormsProjectTemplates50PackageVersion>
|
||||
<MicrosoftWPFProjectTemplates50PackageVersion>5.0.17-servicing.22218.2</MicrosoftWPFProjectTemplates50PackageVersion>
|
||||
<MicrosoftWinFormsProjectTemplates60PackageVersion>6.0.7-servicing.22322.3</MicrosoftWinFormsProjectTemplates60PackageVersion>
|
||||
<MicrosoftWPFProjectTemplates60PackageVersion>6.0.7-servicing.22322.2</MicrosoftWPFProjectTemplates60PackageVersion>
|
||||
<MicrosoftWinFormsProjectTemplates70PackageVersion>7.0.0-rtm.22518.7</MicrosoftWinFormsProjectTemplates70PackageVersion>
|
||||
<MicrosoftWPFProjectTemplates70PackageVersion>7.0.0-rtm.22518.2</MicrosoftWPFProjectTemplates70PackageVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<HostFxrVersion>$(MicrosoftNETCoreAppRuntimePackageVersion)</HostFxrVersion>
|
||||
|
@ -150,13 +175,20 @@
|
|||
<WixPackageVersion>1.0.0-v3.14.0.5722</WixPackageVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<!-- 8.0 Template versions -->
|
||||
<MicrosoftDotnetWinFormsProjectTemplates80PackageVersion>$(MicrosoftDotnetWinFormsProjectTemplatesPackageVersion)</MicrosoftDotnetWinFormsProjectTemplates80PackageVersion>
|
||||
<MicrosoftDotNetWpfProjectTemplates80PackageVersion>$(MicrosoftDotNetWpfProjectTemplatesPackageVersion)</MicrosoftDotNetWpfProjectTemplates80PackageVersion>
|
||||
<NUnit3Templates80PackageVersion>$(NUnit3DotNetNewTemplatePackageVersion)</NUnit3Templates80PackageVersion>
|
||||
<MicrosoftDotNetCommonItemTemplates80PackageVersion>$(MicrosoftDotNetCommonItemTemplatesPackageVersion)</MicrosoftDotNetCommonItemTemplates80PackageVersion>
|
||||
<MicrosoftDotNetCommonProjectTemplates80PackageVersion>$(MicrosoftDotNetCommonItemTemplatesPackageVersion)</MicrosoftDotNetCommonProjectTemplates80PackageVersion>
|
||||
<AspNetCorePackageVersionFor80Templates>$(MicrosoftAspNetCoreAppRuntimePackageVersion)</AspNetCorePackageVersionFor80Templates>
|
||||
<!-- 7.0 Template versions -->
|
||||
<MicrosoftDotnetWinFormsProjectTemplates70PackageVersion>$(MicrosoftDotnetWinFormsProjectTemplatesPackageVersion)</MicrosoftDotnetWinFormsProjectTemplates70PackageVersion>
|
||||
<MicrosoftDotNetWpfProjectTemplates70PackageVersion>$(MicrosoftDotNetWpfProjectTemplatesPackageVersion)</MicrosoftDotNetWpfProjectTemplates70PackageVersion>
|
||||
<MicrosoftDotnetWinFormsProjectTemplates70PackageVersion>$(MicrosoftWinFormsProjectTemplates70PackageVersion)</MicrosoftDotnetWinFormsProjectTemplates70PackageVersion>
|
||||
<MicrosoftDotNetWpfProjectTemplates70PackageVersion>$(MicrosoftWPFProjectTemplates70PackageVersion)</MicrosoftDotNetWpfProjectTemplates70PackageVersion>
|
||||
<NUnit3Templates70PackageVersion>$(NUnit3DotNetNewTemplatePackageVersion)</NUnit3Templates70PackageVersion>
|
||||
<MicrosoftDotNetCommonItemTemplates70PackageVersion>$(MicrosoftDotNetCommonItemTemplatesPackageVersion)</MicrosoftDotNetCommonItemTemplates70PackageVersion>
|
||||
<MicrosoftDotNetCommonProjectTemplates70PackageVersion>$(MicrosoftDotNetCommonItemTemplatesPackageVersion)</MicrosoftDotNetCommonProjectTemplates70PackageVersion>
|
||||
<AspNetCorePackageVersionFor70Templates>$(MicrosoftAspNetCoreAppRuntimePackageVersion)</AspNetCorePackageVersionFor70Templates>
|
||||
<MicrosoftDotNetCommonItemTemplates70PackageVersion>$(MicrosoftDotNetCommonItemTemplates70PackageVersion)</MicrosoftDotNetCommonItemTemplates70PackageVersion>
|
||||
<MicrosoftDotNetCommonProjectTemplates70PackageVersion>$(MicrosoftDotNetCommonItemTemplates70PackageVersion)</MicrosoftDotNetCommonProjectTemplates70PackageVersion>
|
||||
<AspNetCorePackageVersionFor70Templates>7.0.$(AspNetCoreTemplateFeature70)</AspNetCorePackageVersionFor70Templates>
|
||||
<!-- 6.0 Template versions -->
|
||||
<MicrosoftDotnetWinFormsProjectTemplates60PackageVersion>$(MicrosoftWinFormsProjectTemplates60PackageVersion)</MicrosoftDotnetWinFormsProjectTemplates60PackageVersion>
|
||||
<MicrosoftDotNetWpfProjectTemplates60PackageVersion>$(MicrosoftWPFProjectTemplates60PackageVersion)</MicrosoftDotNetWpfProjectTemplates60PackageVersion>
|
||||
|
@ -177,7 +209,6 @@
|
|||
<NUnit3Templates31PackageVersion>1.7.2</NUnit3Templates31PackageVersion>
|
||||
<MicrosoftDotNetCommonItemTemplates31PackageVersion>3.1.27</MicrosoftDotNetCommonItemTemplates31PackageVersion>
|
||||
<MicrosoftDotNetCommonProjectTemplates31PackageVersion>$(MicrosoftDotNetCommonItemTemplates31PackageVersion)</MicrosoftDotNetCommonProjectTemplates31PackageVersion>
|
||||
<MicrosoftDotNetTestProjectTemplates31PackageVersion>$(MicrosoftDotNetTestProjectTemplates50PackageVersion)</MicrosoftDotNetTestProjectTemplates31PackageVersion>
|
||||
<AspNetCorePackageVersionFor31Templates>3.1.32</AspNetCorePackageVersionFor31Templates>
|
||||
<MicrosoftAspNetCoreComponentsWebAssemblyTemplatesPackageVersion>3.2.1</MicrosoftAspNetCoreComponentsWebAssemblyTemplatesPackageVersion>
|
||||
<!-- 3.0 Template versions -->
|
||||
|
@ -186,13 +217,11 @@
|
|||
<NUnit3Templates30PackageVersion>1.6.5</NUnit3Templates30PackageVersion>
|
||||
<MicrosoftDotNetCommonItemTemplates30PackageVersion>2.0.0-preview8.19373.1</MicrosoftDotNetCommonItemTemplates30PackageVersion>
|
||||
<MicrosoftDotNetCommonProjectTemplates30PackageVersion>$(MicrosoftDotNetCommonItemTemplates30PackageVersion)</MicrosoftDotNetCommonProjectTemplates30PackageVersion>
|
||||
<MicrosoftDotNetTestProjectTemplates30PackageVersion>$(MicrosoftDotNetTestProjectTemplates30PackageVersion)</MicrosoftDotNetTestProjectTemplates30PackageVersion>
|
||||
<AspNetCorePackageVersionFor30Templates>3.0.3</AspNetCorePackageVersionFor30Templates>
|
||||
<!-- 2.1 Template versions -->
|
||||
<NUnit3Templates21PackageVersion>1.5.3</NUnit3Templates21PackageVersion>
|
||||
<MicrosoftDotNetCommonItemTemplates21PackageVersion>1.0.2-beta3</MicrosoftDotNetCommonItemTemplates21PackageVersion>
|
||||
<MicrosoftDotNetCommonProjectTemplates21PackageVersion>$(MicrosoftDotNetCommonItemTemplates21PackageVersion)</MicrosoftDotNetCommonProjectTemplates21PackageVersion>
|
||||
<MicrosoftDotNetTestProjectTemplates21PackageVersion>$(MicrosoftDotNetTestProjectTemplates30PackageVersion)</MicrosoftDotNetTestProjectTemplates21PackageVersion>
|
||||
<AspNetCorePackageVersionFor21Templates>2.1.34</AspNetCorePackageVersionFor21Templates>
|
||||
</PropertyGroup>
|
||||
<!-- infrastructure and test only dependencies -->
|
||||
|
@ -200,53 +229,36 @@
|
|||
<VersionToolsVersion>2.2.0-beta.19072.10</VersionToolsVersion>
|
||||
<DotnetDebToolVersion>2.0.0</DotnetDebToolVersion>
|
||||
<MicrosoftNETTestSdkVersion>17.7.0-preview-23317-01</MicrosoftNETTestSdkVersion>
|
||||
</PropertyGroup>
|
||||
<!-- dependencies for source-build tarball -->
|
||||
<PropertyGroup>
|
||||
<!-- These two MicrosoftBuild versions are required to build tarball tasks
|
||||
These tasks will eventually move to Arcade and then these can be
|
||||
removed. See https://github.com/dotnet/source-build/issues/2295 -->
|
||||
<MicrosoftBuildFrameworkVersion>15.7.179</MicrosoftBuildFrameworkVersion>
|
||||
<MicrosoftBuildUtilitiesCoreVersion>15.7.179</MicrosoftBuildUtilitiesCoreVersion>
|
||||
<!--
|
||||
Building .NET from source depends on one or two tar.gz files depending on the branch's current
|
||||
source-buildability status.
|
||||
|
||||
PrivateSourceBuiltArtifactsPackageVersion is a tar.gz of .NET build outputs from a previous
|
||||
build needed to build the current version of .NET. This is always defined, because .NET needs
|
||||
to be bootstrappable at any point in time.
|
||||
|
||||
PrivateSourceBuiltPrebuiltsPackageVersion is a tar.gz of assets downloaded from the internet
|
||||
that are needed to build the current version of .NET. Early in the lifecycle of a .NET major
|
||||
or minor release, prebuilts may be needed. When the release is mature, prebuilts are not
|
||||
necessary, and this property is removed from the file.
|
||||
-->
|
||||
<PrivateSourceBuiltArtifactsPackageVersion>7.0.108</PrivateSourceBuiltArtifactsPackageVersion>
|
||||
<MicrosoftExtensionsLoggingConsoleVersion>8.0.0-alpha.1.22557.12</MicrosoftExtensionsLoggingConsoleVersion>
|
||||
</PropertyGroup>
|
||||
<!-- Workload manifest package versions -->
|
||||
<PropertyGroup>
|
||||
<MauiFeatureBand>7.0.100</MauiFeatureBand>
|
||||
<MauiWorkloadManifestVersion>7.0.49</MauiWorkloadManifestVersion>
|
||||
<XamarinAndroidWorkloadManifestVersion>33.0.4</XamarinAndroidWorkloadManifestVersion>
|
||||
<XamarinIOSWorkloadManifestVersion>16.0.1478</XamarinIOSWorkloadManifestVersion>
|
||||
<XamarinMacCatalystWorkloadManifestVersion>15.4.2372</XamarinMacCatalystWorkloadManifestVersion>
|
||||
<XamarinMacOSWorkloadManifestVersion>12.3.2372</XamarinMacOSWorkloadManifestVersion>
|
||||
<XamarinTvOSWorkloadManifestVersion>16.0.1478</XamarinTvOSWorkloadManifestVersion>
|
||||
<MauiFeatureBand>8.0.100-preview.3</MauiFeatureBand>
|
||||
<MauiWorkloadManifestVersion>8.0.0-preview.3.8149</MauiWorkloadManifestVersion>
|
||||
<XamarinAndroidWorkloadManifestVersion>34.0.0-preview.3.224</XamarinAndroidWorkloadManifestVersion>
|
||||
<XamarinIOSWorkloadManifestVersion>16.2.462-net8-p3</XamarinIOSWorkloadManifestVersion>
|
||||
<XamarinMacCatalystWorkloadManifestVersion>16.2.462-net8-p3</XamarinMacCatalystWorkloadManifestVersion>
|
||||
<XamarinMacOSWorkloadManifestVersion>13.1.462-net8-p3</XamarinMacOSWorkloadManifestVersion>
|
||||
<XamarinTvOSWorkloadManifestVersion>16.1.1250-net8-p3</XamarinTvOSWorkloadManifestVersion>
|
||||
<!-- Workloads from dotnet/emsdk -->
|
||||
<MicrosoftNETWorkloadEmscriptenCurrentManifest80100TransportPackageVersion>8.0.0-preview.7.23361.2</MicrosoftNETWorkloadEmscriptenCurrentManifest80100TransportPackageVersion>
|
||||
<EmscriptenWorkloadManifestVersion>$(MicrosoftNETWorkloadEmscriptenCurrentManifest80100TransportPackageVersion)</EmscriptenWorkloadManifestVersion>
|
||||
<!-- emsdk workload prerelease version band must match the emsdk feature band -->
|
||||
<EmscriptenWorkloadFeatureBand>8.0.100$([System.Text.RegularExpressions.Regex]::Match($(EmscriptenWorkloadManifestVersion), `-[A-z]*[\.]*\d*`))</EmscriptenWorkloadFeatureBand>
|
||||
<!-- Workloads from dotnet/runtime use MicrosoftNETCoreAppRefPackageVersion because it has a stable name that does not include the full feature band -->
|
||||
<MonoWorkloadManifestVersion>$(MicrosoftNETCoreAppRefPackageVersion)</MonoWorkloadManifestVersion>
|
||||
<MicrosoftNETWorkloadEmscriptennet6Manifest70100Version>7.0.9</MicrosoftNETWorkloadEmscriptennet6Manifest70100Version>
|
||||
<MicrosoftNETWorkloadEmscriptennet7Manifest70100Version>7.0.9</MicrosoftNETWorkloadEmscriptennet7Manifest70100Version>
|
||||
<EmscriptenWorkloadManifestVersion>$(MicrosoftNETWorkloadEmscriptennet7Manifest70100Version)</EmscriptenWorkloadManifestVersion>
|
||||
<!-- mono workload prerelease version band must match the runtime feature band -->
|
||||
<MonoWorkloadFeatureBand>8.0.100$([System.Text.RegularExpressions.Regex]::Match($(MonoWorkloadManifestVersion), `-[A-z]*[\.]*\d*`))</MonoWorkloadFeatureBand>
|
||||
</PropertyGroup>
|
||||
<!-- dependencies for VMR initialization -->
|
||||
<PropertyGroup>
|
||||
<!-- These two MicrosoftBuild versions are required to build VMR initialization tasks -->
|
||||
<MicrosoftBuildFrameworkVersion>15.7.179</MicrosoftBuildFrameworkVersion>
|
||||
<MicrosoftBuildUtilitiesCoreVersion>15.7.179</MicrosoftBuildUtilitiesCoreVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<!-- pinned dependency. This package is not being produced outside of the 2.0 branch of corefx and should not change. -->
|
||||
<CLI_NETStandardLibraryNETFrameworkVersion>2.0.1-servicing-26011-01</CLI_NETStandardLibraryNETFrameworkVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<!--
|
||||
pinned dependency. This package is not being produced outside of the 2.0 branch of corefx and should not change.
|
||||
If changed, the Microsoft.Deployment.DotNet.Releases dependency in Version.Details.xml must be updated to be kept in sync.
|
||||
-->
|
||||
<DotNetDeploymentReleasesPackageVersion>1.0.0-preview5.1.22263.1</DotNetDeploymentReleasesPackageVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(RepositoryEngineeringDir)ManualVersions.props" />
|
||||
</Project>
|
||||
|
|
229
eng/build.yml
229
eng/build.yml
|
@ -1,65 +1,165 @@
|
|||
parameters:
|
||||
# Agent OS identifier and used as job name
|
||||
agentOs: ''
|
||||
- name: agentOs
|
||||
type: string
|
||||
|
||||
# Agent pool
|
||||
pool: {}
|
||||
# Job name
|
||||
- name: jobName
|
||||
type: string
|
||||
|
||||
# Additional variables
|
||||
variables: {}
|
||||
|
||||
# Build strategy - matrix
|
||||
strategy: {}
|
||||
# Container to run the build in, if any
|
||||
- name: container
|
||||
type: string
|
||||
default: ''
|
||||
|
||||
# Job timeout
|
||||
timeoutInMinutes: 180
|
||||
- name: timeoutInMinutes
|
||||
type: number
|
||||
default: 180
|
||||
|
||||
# Publish using pipelines
|
||||
enablePublishUsingPipelines: true
|
||||
# Build configuration (Debug, Release)
|
||||
- name: buildConfiguration
|
||||
type: string
|
||||
values:
|
||||
- Debug
|
||||
- Release
|
||||
|
||||
phases:
|
||||
- template: /eng/common/templates/job/job.yml
|
||||
# Build architecture
|
||||
- name: buildArchitecture
|
||||
type: string
|
||||
values:
|
||||
- arm
|
||||
- arm64
|
||||
- x64
|
||||
- x86
|
||||
|
||||
# Linux portable. If true, passes portable switch to build
|
||||
- name: linuxPortable
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
# Runtime Identifier
|
||||
- name: runtimeIdentifier
|
||||
type: string
|
||||
default: ''
|
||||
|
||||
# UI lang
|
||||
- name: dotnetCLIUILanguage
|
||||
type: string
|
||||
default: ''
|
||||
|
||||
# Additional parameters
|
||||
- name: additionalBuildParameters
|
||||
type: string
|
||||
default: ''
|
||||
|
||||
# Run tests
|
||||
- name: runTests
|
||||
type: boolean
|
||||
default: true
|
||||
|
||||
# PGO instrumentation jobs
|
||||
- name: pgoInstrument
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
- name: isBuiltFromVmr
|
||||
displayName: True when build is running from dotnet/dotnet
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
jobs:
|
||||
- template: common/templates/job/job.yml
|
||||
parameters:
|
||||
# Set up the name of the job.
|
||||
${{ if parameters.pgoInstrument }}:
|
||||
name: PGO_${{ parameters.agentOs }}
|
||||
name: PGO_${{ parameters.agentOs }}_${{ parameters.jobName }}
|
||||
${{ if not(parameters.pgoInstrument) }}:
|
||||
name: ${{ parameters.agentOs }}
|
||||
timeoutInMinutes: ${{ parameters.timeoutInMinutes }}
|
||||
name: ${{ parameters.agentOs }}_${{ parameters.jobName }}
|
||||
|
||||
## Set up the pool/machine info to be used based on the Agent OS
|
||||
${{ if eq(parameters.agentOs, 'Windows_NT') }}:
|
||||
enableMicrobuild: true
|
||||
enablePublishBuildAssets: true
|
||||
# Don't use built-in arcade logic for publishing artifacts and test results, as we manually do this and give better names
|
||||
#enablePublishBuildArtifacts: true
|
||||
#enablePublishTestResults: true
|
||||
enablePublishUsingPipelines: ${{parameters.enablePublishUsingPipelines}}
|
||||
enableTelemetry: true
|
||||
pool:
|
||||
${{ if eq(variables['System.TeamProject'], 'public') }}:
|
||||
name: $(DncEngPublicBuildPool)
|
||||
demands: ImageOverride -equals windows.vs2019.amd64.open
|
||||
${{ if eq(variables['System.TeamProject'], 'internal') }}:
|
||||
name: $(DncEngInternalBuildPool)
|
||||
demands: ImageOverride -equals windows.vs2019.amd64
|
||||
${{ if eq(parameters.agentOs, 'Linux') }}:
|
||||
pool:
|
||||
${{ if eq(variables['System.TeamProject'], 'public') }}:
|
||||
name: $(DncEngPublicBuildPool)
|
||||
demands: ImageOverride -equals Build.Ubuntu.1804.Amd64.Open
|
||||
${{ if eq(variables['System.TeamProject'], 'internal') }}:
|
||||
name: $(DncEngInternalBuildPool)
|
||||
demands: ImageOverride -equals Build.Ubuntu.1804.Amd64
|
||||
container: ${{ parameters.container }}
|
||||
${{ if eq(parameters.agentOs, 'Darwin') }}:
|
||||
pool:
|
||||
vmImage: 'macOS-latest'
|
||||
|
||||
timeoutInMinutes: ${{ parameters.timeoutInMinutes }}
|
||||
${{ if parameters.isBuiltFromVmr }}:
|
||||
enableSbom: false
|
||||
${{ else }}:
|
||||
enablePublishBuildAssets: true
|
||||
enablePublishUsingPipelines: true
|
||||
enableTelemetry: true
|
||||
helixRepo: dotnet/installer
|
||||
pool: ${{ parameters.pool }}
|
||||
${{ if ne(parameters.strategy, '') }}:
|
||||
strategy: ${{ parameters.strategy }}
|
||||
workspace:
|
||||
clean: all
|
||||
|
||||
# Test parameters
|
||||
variables:
|
||||
- ${{ if eq(parameters.agentOs, 'Windows_NT') }}:
|
||||
- _PackArg: '-pack'
|
||||
- ${{ if parameters.runTests }}:
|
||||
- _TestArg: '-test'
|
||||
- ${{ else }}:
|
||||
- _TestArg: ''
|
||||
- ${{ if ne(parameters.agentOs, 'Windows_NT') }}:
|
||||
- _PackArg: '--pack'
|
||||
- ${{ if parameters.runTests }}:
|
||||
- _TestArg: '--test'
|
||||
- ${{ else }}:
|
||||
- _TestArg: ''
|
||||
|
||||
- ${{ if parameters.pgoInstrument }}:
|
||||
- _PgoInstrument: '/p:PgoInstrument=true'
|
||||
- _PackArg: ''
|
||||
- ${{ else }}:
|
||||
- _PgoInstrument: ''
|
||||
- ${{ if eq(parameters.agentOs, 'Windows_NT') }}:
|
||||
- _PackArg: '-pack'
|
||||
- ${{ if ne(parameters.agentOs, 'Windows_NT') }}:
|
||||
- _PackArg: '--pack'
|
||||
- ${{ if parameters.pgoInstrument }}:
|
||||
- _PgoInstrument: '/p:PgoInstrument=true'
|
||||
- _PackArg: ''
|
||||
|
||||
- _AgentOSName: ${{ parameters.agentOs }}
|
||||
- _TeamName: Roslyn-Project-System
|
||||
- ${{ if parameters.linuxPortable }}:
|
||||
- _LinuxPortable: '--linux-portable'
|
||||
- ${{ else }}:
|
||||
- _LinuxPortable: ''
|
||||
|
||||
- ${{ if ne(parameters.runtimeIdentifier, '') }}:
|
||||
- _RuntimeIdentifier: '--runtime-id ${{ parameters.runtimeIdentifier }}'
|
||||
- ${{ else }}:
|
||||
- _RuntimeIdentifier: ''
|
||||
|
||||
- _AgentOSName: ${{ parameters.agentOs }}
|
||||
- _TeamName: Roslyn-Project-System
|
||||
- _SignType: test
|
||||
- _BuildArgs: '/p:DotNetSignType=$(_SignType) $(_PgoInstrument)'
|
||||
|
||||
- ${{ if parameters.isBuiltFromVmr }}:
|
||||
- installerRoot: '$(Build.SourcesDirectory)/src/installer'
|
||||
- _SignType: test
|
||||
- _BuildArgs: '/p:DotNetSignType=$(_SignType) $(_PgoInstrument)'
|
||||
|
||||
- _PushToVSFeed: false
|
||||
- _BuildArgs: /p:OfficialBuildId=$(BUILD.BUILDNUMBER)
|
||||
/p:TeamName=$(_TeamName)
|
||||
/p:DotNetPublishUsingPipelines=true
|
||||
/p:PublishToSymbolServer=false
|
||||
$(_PgoInstrument)
|
||||
- ${{ else }}:
|
||||
- installerRoot: '$(Build.SourcesDirectory)'
|
||||
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
|
||||
- group: DotNet-Symbol-Server-PATs
|
||||
- group: DotNet-HelixApi-Access
|
||||
- group: DotNet-Blob-Feed
|
||||
- _DotNetPublishToBlobFeed: true
|
||||
- _PushToVSFeed: true
|
||||
- _SignType: real
|
||||
- _BuildArgs: /p:OfficialBuildId=$(BUILD.BUILDNUMBER)
|
||||
|
@ -68,64 +168,65 @@ phases:
|
|||
/p:DotNetPublishUsingPipelines=$(_PublishUsingPipelines)
|
||||
$(_PgoInstrument)
|
||||
|
||||
- template: /eng/common/templates/variables/pool-providers.yml
|
||||
|
||||
steps:
|
||||
- checkout: self
|
||||
clean: true
|
||||
- ${{ if eq(parameters.agentOs, 'Windows_NT') }}:
|
||||
- ${{ if ne(variables['System.TeamProject'], 'public') }}:
|
||||
- ${{ if and(not(parameters.isBuiltFromVmr), ne(variables['System.TeamProject'], 'public')) }}:
|
||||
- task: PowerShell@2
|
||||
displayName: Setup Private Feeds Credentials
|
||||
inputs:
|
||||
filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.ps1
|
||||
arguments: -ConfigFile $(Build.SourcesDirectory)/NuGet.config -Password $Env:Token
|
||||
filePath: $(installerRoot)/eng/common/SetupNugetSources.ps1
|
||||
arguments: -ConfigFile $(installerRoot)/NuGet.config -Password $Env:Token
|
||||
env:
|
||||
Token: $(dn-bot-dnceng-artifact-feeds-rw)
|
||||
- script: build.cmd
|
||||
- script: $(installerRoot)/build.cmd
|
||||
$(_TestArg) $(_PackArg)
|
||||
-publish -ci -sign
|
||||
-Configuration $(_BuildConfig)
|
||||
-Architecture $(_BuildArchitecture)
|
||||
-Configuration ${{ parameters.buildConfiguration }}
|
||||
-Architecture ${{ parameters.buildArchitecture }}
|
||||
$(_BuildArgs)
|
||||
$(_AdditionalBuildParameters)
|
||||
${{ parameters.additionalBuildParameters }}
|
||||
$(_InternalRuntimeDownloadArgs)
|
||||
displayName: Build
|
||||
env:
|
||||
DOTNET_CLI_UI_LANGUAGE: $(_DOTNET_CLI_UI_LANGUAGE)
|
||||
DOTNET_CLI_UI_LANGUAGE: ${{ parameters.dotnetCLIUILanguage }}
|
||||
|
||||
- ${{ if ne(parameters.agentOs, 'Windows_NT') }}:
|
||||
- ${{ if ne(variables['System.TeamProject'], 'public') }}:
|
||||
- ${{ if and(not(parameters.isBuiltFromVmr), ne(variables['System.TeamProject'], 'public')) }}:
|
||||
- task: Bash@3
|
||||
displayName: Setup Private Feeds Credentials
|
||||
inputs:
|
||||
filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.sh
|
||||
arguments: $(Build.SourcesDirectory)/NuGet.config $Token
|
||||
filePath: $(installerRoot)/eng/common/SetupNugetSources.sh
|
||||
arguments: $(installerRoot)/NuGet.config $Token
|
||||
env:
|
||||
Token: $(dn-bot-dnceng-artifact-feeds-rw)
|
||||
- ${{ if eq(parameters.agentOs, 'Linux') }}:
|
||||
- script: ./build.sh
|
||||
- script: $(installerRoot)/build.sh
|
||||
$(_TestArg) $(_PackArg)
|
||||
--publish --ci
|
||||
--noprettyprint
|
||||
--configuration $(_BuildConfig)
|
||||
$(_DockerParameter)
|
||||
--architecture $(_BuildArchitecture)
|
||||
--configuration ${{ parameters.buildConfiguration }}
|
||||
--architecture ${{ parameters.buildArchitecture }}
|
||||
$(_LinuxPortable)
|
||||
$(_RuntimeIdentifier)
|
||||
$(_BuildArgs)
|
||||
$(_AdditionalBuildParameters)
|
||||
${{ parameters.additionalBuildParameters }}
|
||||
$(_InternalRuntimeDownloadArgs)
|
||||
displayName: Build
|
||||
|
||||
- ${{ if or(eq(parameters.agentOs, 'Darwin'), eq(parameters.agentOs, 'FreeBSD')) }}:
|
||||
- script: ./build.sh
|
||||
- script: $(installerRoot)/build.sh
|
||||
$(_TestArg)
|
||||
--pack --publish --ci
|
||||
--noprettyprint
|
||||
--configuration $(_BuildConfig)
|
||||
--architecture $(_BuildArchitecture)
|
||||
--configuration ${{ parameters.buildConfiguration }}
|
||||
--architecture ${{ parameters.buildArchitecture }}
|
||||
$(_RuntimeIdentifier)
|
||||
$(_BuildArgs)
|
||||
$(_AdditionalBuildParameters)
|
||||
${{ parameters.additionalBuildParameters }}
|
||||
$(_InternalRuntimeDownloadArgs)
|
||||
displayName: Build
|
||||
|
||||
|
@ -133,19 +234,19 @@ phases:
|
|||
displayName: Publish Test Results
|
||||
inputs:
|
||||
testRunner: XUnit
|
||||
testResultsFiles: 'artifacts/TestResults/$(_BuildConfig)/*.xml'
|
||||
testResultsFiles: 'artifacts/TestResults/${{ parameters.buildConfiguration }}/*.xml'
|
||||
testRunTitle: '$(_AgentOSName)_$(Agent.JobName)'
|
||||
platform: '$(BuildPlatform)'
|
||||
configuration: '$(_BuildConfig)'
|
||||
configuration: '${{ parameters.buildConfiguration }}'
|
||||
condition: ne(variables['_TestArg'], '')
|
||||
|
||||
- task: CopyFiles@2
|
||||
displayName: Gather Logs
|
||||
inputs:
|
||||
SourceFolder: '$(Build.SourcesDirectory)/artifacts'
|
||||
SourceFolder: '$(installerRoot)/artifacts'
|
||||
Contents: |
|
||||
log/$(_BuildConfig)/**/*
|
||||
TestResults/$(_BuildConfig)/**/*
|
||||
log/${{ parameters.buildConfiguration }}/**/*
|
||||
TestResults/${{ parameters.buildConfiguration }}/**/*
|
||||
TargetFolder: '$(Build.ArtifactStagingDirectory)'
|
||||
continueOnError: true
|
||||
condition: always()
|
||||
|
|
4
eng/common/BuildConfiguration/build-configuration.json
Normal file
4
eng/common/BuildConfiguration/build-configuration.json
Normal file
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"RetryCountLimit": 1,
|
||||
"RetryByAnyError": false
|
||||
}
|
|
@ -67,8 +67,8 @@ function Print-Usage() {
|
|||
Write-Host " -prepareMachine Prepare machine for CI run, clean up processes after build"
|
||||
Write-Host " -warnAsError <value> Sets warnaserror msbuild parameter ('true' or 'false')"
|
||||
Write-Host " -msbuildEngine <value> Msbuild engine to use to run build ('dotnet', 'vs', or unspecified)."
|
||||
Write-Host " -nativeToolsOnMachine Sets the native tools on machine environment variable (indicating that the script should use native tools on machine)"
|
||||
Write-Host " -excludePrereleaseVS Set to exclude build engines in prerelease versions of Visual Studio"
|
||||
Write-Host " -nativeToolsOnMachine Sets the native tools on machine environment variable (indicating that the script should use native tools on machine)"
|
||||
Write-Host ""
|
||||
|
||||
Write-Host "Command line arguments not listed above are passed thru to msbuild."
|
||||
|
|
|
@ -8,4 +8,4 @@ deb http://ports.ubuntu.com/ubuntu-ports/ xenial-backports main restricted
|
|||
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-backports main restricted
|
||||
|
||||
deb http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted universe multiverse
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted universe multiverse
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted universe multiverse
|
||||
|
|
|
@ -1,35 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
__ARM_HARDFP_CrossDir=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
|
||||
__TIZEN_CROSSDIR="$__ARM_HARDFP_CrossDir/tizen"
|
||||
|
||||
if [[ -z "$ROOTFS_DIR" ]]; then
|
||||
echo "ROOTFS_DIR is not defined."
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
TIZEN_TMP_DIR=$ROOTFS_DIR/tizen_tmp
|
||||
mkdir -p $TIZEN_TMP_DIR
|
||||
|
||||
# Download files
|
||||
echo ">>Start downloading files"
|
||||
VERBOSE=1 $__ARM_HARDFP_CrossDir/tizen-fetch.sh $TIZEN_TMP_DIR
|
||||
echo "<<Finish downloading files"
|
||||
|
||||
echo ">>Start constructing Tizen rootfs"
|
||||
TIZEN_RPM_FILES=`ls $TIZEN_TMP_DIR/*.rpm`
|
||||
cd $ROOTFS_DIR
|
||||
for f in $TIZEN_RPM_FILES; do
|
||||
rpm2cpio $f | cpio -idm --quiet
|
||||
done
|
||||
echo "<<Finish constructing Tizen rootfs"
|
||||
|
||||
# Cleanup tmp
|
||||
rm -rf $TIZEN_TMP_DIR
|
||||
|
||||
# Configure Tizen rootfs
|
||||
echo ">>Start configuring Tizen rootfs"
|
||||
ln -sfn asm-arm ./usr/include/asm
|
||||
patch -p1 < $__TIZEN_CROSSDIR/tizen.patch
|
||||
echo "<<Finish configuring Tizen rootfs"
|
|
@ -1,170 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
if [[ -z "${VERBOSE// }" ]] || [ "$VERBOSE" -ne "$VERBOSE" ] 2>/dev/null; then
|
||||
VERBOSE=0
|
||||
fi
|
||||
|
||||
Log()
|
||||
{
|
||||
if [ $VERBOSE -ge $1 ]; then
|
||||
echo ${@:2}
|
||||
fi
|
||||
}
|
||||
|
||||
Inform()
|
||||
{
|
||||
Log 1 -e "\x1B[0;34m$@\x1B[m"
|
||||
}
|
||||
|
||||
Debug()
|
||||
{
|
||||
Log 2 -e "\x1B[0;32m$@\x1B[m"
|
||||
}
|
||||
|
||||
Error()
|
||||
{
|
||||
>&2 Log 0 -e "\x1B[0;31m$@\x1B[m"
|
||||
}
|
||||
|
||||
Fetch()
|
||||
{
|
||||
URL=$1
|
||||
FILE=$2
|
||||
PROGRESS=$3
|
||||
if [ $VERBOSE -ge 1 ] && [ $PROGRESS ]; then
|
||||
CURL_OPT="--progress-bar"
|
||||
else
|
||||
CURL_OPT="--silent"
|
||||
fi
|
||||
curl $CURL_OPT $URL > $FILE
|
||||
}
|
||||
|
||||
hash curl 2> /dev/null || { Error "Require 'curl' Aborting."; exit 1; }
|
||||
hash xmllint 2> /dev/null || { Error "Require 'xmllint' Aborting."; exit 1; }
|
||||
hash sha256sum 2> /dev/null || { Error "Require 'sha256sum' Aborting."; exit 1; }
|
||||
|
||||
TMPDIR=$1
|
||||
if [ ! -d $TMPDIR ]; then
|
||||
TMPDIR=./tizen_tmp
|
||||
Debug "Create temporary directory : $TMPDIR"
|
||||
mkdir -p $TMPDIR
|
||||
fi
|
||||
|
||||
TIZEN_URL=http://download.tizen.org/snapshots/tizen
|
||||
BUILD_XML=build.xml
|
||||
REPOMD_XML=repomd.xml
|
||||
PRIMARY_XML=primary.xml
|
||||
TARGET_URL="http://__not_initialized"
|
||||
|
||||
Xpath_get()
|
||||
{
|
||||
XPATH_RESULT=''
|
||||
XPATH=$1
|
||||
XML_FILE=$2
|
||||
RESULT=$(xmllint --xpath $XPATH $XML_FILE)
|
||||
if [[ -z ${RESULT// } ]]; then
|
||||
Error "Can not find target from $XML_FILE"
|
||||
Debug "Xpath = $XPATH"
|
||||
exit 1
|
||||
fi
|
||||
XPATH_RESULT=$RESULT
|
||||
}
|
||||
|
||||
fetch_tizen_pkgs_init()
|
||||
{
|
||||
TARGET=$1
|
||||
PROFILE=$2
|
||||
Debug "Initialize TARGET=$TARGET, PROFILE=$PROFILE"
|
||||
|
||||
TMP_PKG_DIR=$TMPDIR/tizen_${PROFILE}_pkgs
|
||||
if [ -d $TMP_PKG_DIR ]; then rm -rf $TMP_PKG_DIR; fi
|
||||
mkdir -p $TMP_PKG_DIR
|
||||
|
||||
PKG_URL=$TIZEN_URL/$PROFILE/latest
|
||||
|
||||
BUILD_XML_URL=$PKG_URL/$BUILD_XML
|
||||
TMP_BUILD=$TMP_PKG_DIR/$BUILD_XML
|
||||
TMP_REPOMD=$TMP_PKG_DIR/$REPOMD_XML
|
||||
TMP_PRIMARY=$TMP_PKG_DIR/$PRIMARY_XML
|
||||
TMP_PRIMARYGZ=${TMP_PRIMARY}.gz
|
||||
|
||||
Fetch $BUILD_XML_URL $TMP_BUILD
|
||||
|
||||
Debug "fetch $BUILD_XML_URL to $TMP_BUILD"
|
||||
|
||||
TARGET_XPATH="//build/buildtargets/buildtarget[@name=\"$TARGET\"]/repo[@type=\"binary\"]/text()"
|
||||
Xpath_get $TARGET_XPATH $TMP_BUILD
|
||||
TARGET_PATH=$XPATH_RESULT
|
||||
TARGET_URL=$PKG_URL/$TARGET_PATH
|
||||
|
||||
REPOMD_URL=$TARGET_URL/repodata/repomd.xml
|
||||
PRIMARY_XPATH='string(//*[local-name()="data"][@type="primary"]/*[local-name()="location"]/@href)'
|
||||
|
||||
Fetch $REPOMD_URL $TMP_REPOMD
|
||||
|
||||
Debug "fetch $REPOMD_URL to $TMP_REPOMD"
|
||||
|
||||
Xpath_get $PRIMARY_XPATH $TMP_REPOMD
|
||||
PRIMARY_XML_PATH=$XPATH_RESULT
|
||||
PRIMARY_URL=$TARGET_URL/$PRIMARY_XML_PATH
|
||||
|
||||
Fetch $PRIMARY_URL $TMP_PRIMARYGZ
|
||||
|
||||
Debug "fetch $PRIMARY_URL to $TMP_PRIMARYGZ"
|
||||
|
||||
gunzip $TMP_PRIMARYGZ
|
||||
|
||||
Debug "unzip $TMP_PRIMARYGZ to $TMP_PRIMARY"
|
||||
}
|
||||
|
||||
fetch_tizen_pkgs()
|
||||
{
|
||||
ARCH=$1
|
||||
PACKAGE_XPATH_TPL='string(//*[local-name()="metadata"]/*[local-name()="package"][*[local-name()="name"][text()="_PKG_"]][*[local-name()="arch"][text()="_ARCH_"]]/*[local-name()="location"]/@href)'
|
||||
|
||||
PACKAGE_CHECKSUM_XPATH_TPL='string(//*[local-name()="metadata"]/*[local-name()="package"][*[local-name()="name"][text()="_PKG_"]][*[local-name()="arch"][text()="_ARCH_"]]/*[local-name()="checksum"]/text())'
|
||||
|
||||
for pkg in ${@:2}
|
||||
do
|
||||
Inform "Fetching... $pkg"
|
||||
XPATH=${PACKAGE_XPATH_TPL/_PKG_/$pkg}
|
||||
XPATH=${XPATH/_ARCH_/$ARCH}
|
||||
Xpath_get $XPATH $TMP_PRIMARY
|
||||
PKG_PATH=$XPATH_RESULT
|
||||
|
||||
XPATH=${PACKAGE_CHECKSUM_XPATH_TPL/_PKG_/$pkg}
|
||||
XPATH=${XPATH/_ARCH_/$ARCH}
|
||||
Xpath_get $XPATH $TMP_PRIMARY
|
||||
CHECKSUM=$XPATH_RESULT
|
||||
|
||||
PKG_URL=$TARGET_URL/$PKG_PATH
|
||||
PKG_FILE=$(basename $PKG_PATH)
|
||||
PKG_PATH=$TMPDIR/$PKG_FILE
|
||||
|
||||
Debug "Download $PKG_URL to $PKG_PATH"
|
||||
Fetch $PKG_URL $PKG_PATH true
|
||||
|
||||
echo "$CHECKSUM $PKG_PATH" | sha256sum -c - > /dev/null
|
||||
if [ $? -ne 0 ]; then
|
||||
Error "Fail to fetch $PKG_URL to $PKG_PATH"
|
||||
Debug "Checksum = $CHECKSUM"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
Inform "Initialize arm base"
|
||||
fetch_tizen_pkgs_init standard base
|
||||
Inform "fetch common packages"
|
||||
fetch_tizen_pkgs armv7hl gcc gcc-devel-static glibc glibc-devel libicu libicu-devel libatomic linux-glibc-devel keyutils keyutils-devel libkeyutils
|
||||
Inform "fetch coreclr packages"
|
||||
fetch_tizen_pkgs armv7hl lldb lldb-devel libgcc libstdc++ libstdc++-devel libunwind libunwind-devel lttng-ust-devel lttng-ust userspace-rcu-devel userspace-rcu
|
||||
Inform "fetch corefx packages"
|
||||
fetch_tizen_pkgs armv7hl libcom_err libcom_err-devel zlib zlib-devel libopenssl11 libopenssl1.1-devel krb5 krb5-devel
|
||||
|
||||
Inform "Initialize standard unified"
|
||||
fetch_tizen_pkgs_init standard unified
|
||||
Inform "fetch corefx packages"
|
||||
fetch_tizen_pkgs armv7hl gssdp gssdp-devel tizen-release
|
||||
|
|
@ -8,4 +8,4 @@ deb http://ports.ubuntu.com/ubuntu-ports/ xenial-backports main restricted
|
|||
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-backports main restricted
|
||||
|
||||
deb http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted universe multiverse
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted universe multiverse
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted universe multiverse
|
||||
|
|
|
@ -1,170 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
if [[ -z "${VERBOSE// }" ]] || [ "$VERBOSE" -ne "$VERBOSE" ] 2>/dev/null; then
|
||||
VERBOSE=0
|
||||
fi
|
||||
|
||||
Log()
|
||||
{
|
||||
if [ $VERBOSE -ge $1 ]; then
|
||||
echo ${@:2}
|
||||
fi
|
||||
}
|
||||
|
||||
Inform()
|
||||
{
|
||||
Log 1 -e "\x1B[0;34m$@\x1B[m"
|
||||
}
|
||||
|
||||
Debug()
|
||||
{
|
||||
Log 2 -e "\x1B[0;32m$@\x1B[m"
|
||||
}
|
||||
|
||||
Error()
|
||||
{
|
||||
>&2 Log 0 -e "\x1B[0;31m$@\x1B[m"
|
||||
}
|
||||
|
||||
Fetch()
|
||||
{
|
||||
URL=$1
|
||||
FILE=$2
|
||||
PROGRESS=$3
|
||||
if [ $VERBOSE -ge 1 ] && [ $PROGRESS ]; then
|
||||
CURL_OPT="--progress-bar"
|
||||
else
|
||||
CURL_OPT="--silent"
|
||||
fi
|
||||
curl $CURL_OPT $URL > $FILE
|
||||
}
|
||||
|
||||
hash curl 2> /dev/null || { Error "Require 'curl' Aborting."; exit 1; }
|
||||
hash xmllint 2> /dev/null || { Error "Require 'xmllint' Aborting."; exit 1; }
|
||||
hash sha256sum 2> /dev/null || { Error "Require 'sha256sum' Aborting."; exit 1; }
|
||||
|
||||
TMPDIR=$1
|
||||
if [ ! -d $TMPDIR ]; then
|
||||
TMPDIR=./tizen_tmp
|
||||
Debug "Create temporary directory : $TMPDIR"
|
||||
mkdir -p $TMPDIR
|
||||
fi
|
||||
|
||||
TIZEN_URL=http://download.tizen.org/snapshots/tizen/
|
||||
BUILD_XML=build.xml
|
||||
REPOMD_XML=repomd.xml
|
||||
PRIMARY_XML=primary.xml
|
||||
TARGET_URL="http://__not_initialized"
|
||||
|
||||
Xpath_get()
|
||||
{
|
||||
XPATH_RESULT=''
|
||||
XPATH=$1
|
||||
XML_FILE=$2
|
||||
RESULT=$(xmllint --xpath $XPATH $XML_FILE)
|
||||
if [[ -z ${RESULT// } ]]; then
|
||||
Error "Can not find target from $XML_FILE"
|
||||
Debug "Xpath = $XPATH"
|
||||
exit 1
|
||||
fi
|
||||
XPATH_RESULT=$RESULT
|
||||
}
|
||||
|
||||
fetch_tizen_pkgs_init()
|
||||
{
|
||||
TARGET=$1
|
||||
PROFILE=$2
|
||||
Debug "Initialize TARGET=$TARGET, PROFILE=$PROFILE"
|
||||
|
||||
TMP_PKG_DIR=$TMPDIR/tizen_${PROFILE}_pkgs
|
||||
if [ -d $TMP_PKG_DIR ]; then rm -rf $TMP_PKG_DIR; fi
|
||||
mkdir -p $TMP_PKG_DIR
|
||||
|
||||
PKG_URL=$TIZEN_URL/$PROFILE/latest
|
||||
|
||||
BUILD_XML_URL=$PKG_URL/$BUILD_XML
|
||||
TMP_BUILD=$TMP_PKG_DIR/$BUILD_XML
|
||||
TMP_REPOMD=$TMP_PKG_DIR/$REPOMD_XML
|
||||
TMP_PRIMARY=$TMP_PKG_DIR/$PRIMARY_XML
|
||||
TMP_PRIMARYGZ=${TMP_PRIMARY}.gz
|
||||
|
||||
Fetch $BUILD_XML_URL $TMP_BUILD
|
||||
|
||||
Debug "fetch $BUILD_XML_URL to $TMP_BUILD"
|
||||
|
||||
TARGET_XPATH="//build/buildtargets/buildtarget[@name=\"$TARGET\"]/repo[@type=\"binary\"]/text()"
|
||||
Xpath_get $TARGET_XPATH $TMP_BUILD
|
||||
TARGET_PATH=$XPATH_RESULT
|
||||
TARGET_URL=$PKG_URL/$TARGET_PATH
|
||||
|
||||
REPOMD_URL=$TARGET_URL/repodata/repomd.xml
|
||||
PRIMARY_XPATH='string(//*[local-name()="data"][@type="primary"]/*[local-name()="location"]/@href)'
|
||||
|
||||
Fetch $REPOMD_URL $TMP_REPOMD
|
||||
|
||||
Debug "fetch $REPOMD_URL to $TMP_REPOMD"
|
||||
|
||||
Xpath_get $PRIMARY_XPATH $TMP_REPOMD
|
||||
PRIMARY_XML_PATH=$XPATH_RESULT
|
||||
PRIMARY_URL=$TARGET_URL/$PRIMARY_XML_PATH
|
||||
|
||||
Fetch $PRIMARY_URL $TMP_PRIMARYGZ
|
||||
|
||||
Debug "fetch $PRIMARY_URL to $TMP_PRIMARYGZ"
|
||||
|
||||
gunzip $TMP_PRIMARYGZ
|
||||
|
||||
Debug "unzip $TMP_PRIMARYGZ to $TMP_PRIMARY"
|
||||
}
|
||||
|
||||
fetch_tizen_pkgs()
|
||||
{
|
||||
ARCH=$1
|
||||
PACKAGE_XPATH_TPL='string(//*[local-name()="metadata"]/*[local-name()="package"][*[local-name()="name"][text()="_PKG_"]][*[local-name()="arch"][text()="_ARCH_"]]/*[local-name()="location"]/@href)'
|
||||
|
||||
PACKAGE_CHECKSUM_XPATH_TPL='string(//*[local-name()="metadata"]/*[local-name()="package"][*[local-name()="name"][text()="_PKG_"]][*[local-name()="arch"][text()="_ARCH_"]]/*[local-name()="checksum"]/text())'
|
||||
|
||||
for pkg in ${@:2}
|
||||
do
|
||||
Inform "Fetching... $pkg"
|
||||
XPATH=${PACKAGE_XPATH_TPL/_PKG_/$pkg}
|
||||
XPATH=${XPATH/_ARCH_/$ARCH}
|
||||
Xpath_get $XPATH $TMP_PRIMARY
|
||||
PKG_PATH=$XPATH_RESULT
|
||||
|
||||
XPATH=${PACKAGE_CHECKSUM_XPATH_TPL/_PKG_/$pkg}
|
||||
XPATH=${XPATH/_ARCH_/$ARCH}
|
||||
Xpath_get $XPATH $TMP_PRIMARY
|
||||
CHECKSUM=$XPATH_RESULT
|
||||
|
||||
PKG_URL=$TARGET_URL/$PKG_PATH
|
||||
PKG_FILE=$(basename $PKG_PATH)
|
||||
PKG_PATH=$TMPDIR/$PKG_FILE
|
||||
|
||||
Debug "Download $PKG_URL to $PKG_PATH"
|
||||
Fetch $PKG_URL $PKG_PATH true
|
||||
|
||||
echo "$CHECKSUM $PKG_PATH" | sha256sum -c - > /dev/null
|
||||
if [ $? -ne 0 ]; then
|
||||
Error "Fail to fetch $PKG_URL to $PKG_PATH"
|
||||
Debug "Checksum = $CHECKSUM"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
Inform "Initialize arm base"
|
||||
fetch_tizen_pkgs_init standard base
|
||||
Inform "fetch common packages"
|
||||
fetch_tizen_pkgs aarch64 gcc glibc glibc-devel libicu libicu-devel libatomic linux-glibc-devel keyutils keyutils-devel libkeyutils
|
||||
Inform "fetch coreclr packages"
|
||||
fetch_tizen_pkgs aarch64 lldb lldb-devel libgcc libstdc++ libstdc++-devel libunwind libunwind-devel lttng-ust-devel lttng-ust userspace-rcu-devel userspace-rcu
|
||||
Inform "fetch corefx packages"
|
||||
fetch_tizen_pkgs aarch64 libcom_err libcom_err-devel zlib zlib-devel libopenssl11 libopenssl1.1-devel krb5 krb5-devel
|
||||
|
||||
Inform "Initialize standard unified"
|
||||
fetch_tizen_pkgs_init standard unified
|
||||
Inform "fetch corefx packages"
|
||||
fetch_tizen_pkgs aarch64 gssdp gssdp-devel tizen-release
|
||||
|
|
@ -1,35 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
__ARM_SOFTFP_CrossDir=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
|
||||
__TIZEN_CROSSDIR="$__ARM_SOFTFP_CrossDir/tizen"
|
||||
|
||||
if [[ -z "$ROOTFS_DIR" ]]; then
|
||||
echo "ROOTFS_DIR is not defined."
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
TIZEN_TMP_DIR=$ROOTFS_DIR/tizen_tmp
|
||||
mkdir -p $TIZEN_TMP_DIR
|
||||
|
||||
# Download files
|
||||
echo ">>Start downloading files"
|
||||
VERBOSE=1 $__ARM_SOFTFP_CrossDir/tizen-fetch.sh $TIZEN_TMP_DIR
|
||||
echo "<<Finish downloading files"
|
||||
|
||||
echo ">>Start constructing Tizen rootfs"
|
||||
TIZEN_RPM_FILES=`ls $TIZEN_TMP_DIR/*.rpm`
|
||||
cd $ROOTFS_DIR
|
||||
for f in $TIZEN_RPM_FILES; do
|
||||
rpm2cpio $f | cpio -idm --quiet
|
||||
done
|
||||
echo "<<Finish constructing Tizen rootfs"
|
||||
|
||||
# Cleanup tmp
|
||||
rm -rf $TIZEN_TMP_DIR
|
||||
|
||||
# Configure Tizen rootfs
|
||||
echo ">>Start configuring Tizen rootfs"
|
||||
ln -sfn asm-arm ./usr/include/asm
|
||||
patch -p1 < $__TIZEN_CROSSDIR/tizen.patch
|
||||
echo "<<Finish configuring Tizen rootfs"
|
|
@ -1,170 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
if [[ -z "${VERBOSE// }" ]] || [ "$VERBOSE" -ne "$VERBOSE" ] 2>/dev/null; then
|
||||
VERBOSE=0
|
||||
fi
|
||||
|
||||
Log()
|
||||
{
|
||||
if [ $VERBOSE -ge $1 ]; then
|
||||
echo ${@:2}
|
||||
fi
|
||||
}
|
||||
|
||||
Inform()
|
||||
{
|
||||
Log 1 -e "\x1B[0;34m$@\x1B[m"
|
||||
}
|
||||
|
||||
Debug()
|
||||
{
|
||||
Log 2 -e "\x1B[0;32m$@\x1B[m"
|
||||
}
|
||||
|
||||
Error()
|
||||
{
|
||||
>&2 Log 0 -e "\x1B[0;31m$@\x1B[m"
|
||||
}
|
||||
|
||||
Fetch()
|
||||
{
|
||||
URL=$1
|
||||
FILE=$2
|
||||
PROGRESS=$3
|
||||
if [ $VERBOSE -ge 1 ] && [ $PROGRESS ]; then
|
||||
CURL_OPT="--progress-bar"
|
||||
else
|
||||
CURL_OPT="--silent"
|
||||
fi
|
||||
curl $CURL_OPT $URL > $FILE
|
||||
}
|
||||
|
||||
hash curl 2> /dev/null || { Error "Require 'curl' Aborting."; exit 1; }
|
||||
hash xmllint 2> /dev/null || { Error "Require 'xmllint' Aborting."; exit 1; }
|
||||
hash sha256sum 2> /dev/null || { Error "Require 'sha256sum' Aborting."; exit 1; }
|
||||
|
||||
TMPDIR=$1
|
||||
if [ ! -d $TMPDIR ]; then
|
||||
TMPDIR=./tizen_tmp
|
||||
Debug "Create temporary directory : $TMPDIR"
|
||||
mkdir -p $TMPDIR
|
||||
fi
|
||||
|
||||
TIZEN_URL=http://download.tizen.org/snapshots/tizen
|
||||
BUILD_XML=build.xml
|
||||
REPOMD_XML=repomd.xml
|
||||
PRIMARY_XML=primary.xml
|
||||
TARGET_URL="http://__not_initialized"
|
||||
|
||||
Xpath_get()
|
||||
{
|
||||
XPATH_RESULT=''
|
||||
XPATH=$1
|
||||
XML_FILE=$2
|
||||
RESULT=$(xmllint --xpath $XPATH $XML_FILE)
|
||||
if [[ -z ${RESULT// } ]]; then
|
||||
Error "Can not find target from $XML_FILE"
|
||||
Debug "Xpath = $XPATH"
|
||||
exit 1
|
||||
fi
|
||||
XPATH_RESULT=$RESULT
|
||||
}
|
||||
|
||||
fetch_tizen_pkgs_init()
|
||||
{
|
||||
TARGET=$1
|
||||
PROFILE=$2
|
||||
Debug "Initialize TARGET=$TARGET, PROFILE=$PROFILE"
|
||||
|
||||
TMP_PKG_DIR=$TMPDIR/tizen_${PROFILE}_pkgs
|
||||
if [ -d $TMP_PKG_DIR ]; then rm -rf $TMP_PKG_DIR; fi
|
||||
mkdir -p $TMP_PKG_DIR
|
||||
|
||||
PKG_URL=$TIZEN_URL/$PROFILE/latest
|
||||
|
||||
BUILD_XML_URL=$PKG_URL/$BUILD_XML
|
||||
TMP_BUILD=$TMP_PKG_DIR/$BUILD_XML
|
||||
TMP_REPOMD=$TMP_PKG_DIR/$REPOMD_XML
|
||||
TMP_PRIMARY=$TMP_PKG_DIR/$PRIMARY_XML
|
||||
TMP_PRIMARYGZ=${TMP_PRIMARY}.gz
|
||||
|
||||
Fetch $BUILD_XML_URL $TMP_BUILD
|
||||
|
||||
Debug "fetch $BUILD_XML_URL to $TMP_BUILD"
|
||||
|
||||
TARGET_XPATH="//build/buildtargets/buildtarget[@name=\"$TARGET\"]/repo[@type=\"binary\"]/text()"
|
||||
Xpath_get $TARGET_XPATH $TMP_BUILD
|
||||
TARGET_PATH=$XPATH_RESULT
|
||||
TARGET_URL=$PKG_URL/$TARGET_PATH
|
||||
|
||||
REPOMD_URL=$TARGET_URL/repodata/repomd.xml
|
||||
PRIMARY_XPATH='string(//*[local-name()="data"][@type="primary"]/*[local-name()="location"]/@href)'
|
||||
|
||||
Fetch $REPOMD_URL $TMP_REPOMD
|
||||
|
||||
Debug "fetch $REPOMD_URL to $TMP_REPOMD"
|
||||
|
||||
Xpath_get $PRIMARY_XPATH $TMP_REPOMD
|
||||
PRIMARY_XML_PATH=$XPATH_RESULT
|
||||
PRIMARY_URL=$TARGET_URL/$PRIMARY_XML_PATH
|
||||
|
||||
Fetch $PRIMARY_URL $TMP_PRIMARYGZ
|
||||
|
||||
Debug "fetch $PRIMARY_URL to $TMP_PRIMARYGZ"
|
||||
|
||||
gunzip $TMP_PRIMARYGZ
|
||||
|
||||
Debug "unzip $TMP_PRIMARYGZ to $TMP_PRIMARY"
|
||||
}
|
||||
|
||||
fetch_tizen_pkgs()
|
||||
{
|
||||
ARCH=$1
|
||||
PACKAGE_XPATH_TPL='string(//*[local-name()="metadata"]/*[local-name()="package"][*[local-name()="name"][text()="_PKG_"]][*[local-name()="arch"][text()="_ARCH_"]]/*[local-name()="location"]/@href)'
|
||||
|
||||
PACKAGE_CHECKSUM_XPATH_TPL='string(//*[local-name()="metadata"]/*[local-name()="package"][*[local-name()="name"][text()="_PKG_"]][*[local-name()="arch"][text()="_ARCH_"]]/*[local-name()="checksum"]/text())'
|
||||
|
||||
for pkg in ${@:2}
|
||||
do
|
||||
Inform "Fetching... $pkg"
|
||||
XPATH=${PACKAGE_XPATH_TPL/_PKG_/$pkg}
|
||||
XPATH=${XPATH/_ARCH_/$ARCH}
|
||||
Xpath_get $XPATH $TMP_PRIMARY
|
||||
PKG_PATH=$XPATH_RESULT
|
||||
|
||||
XPATH=${PACKAGE_CHECKSUM_XPATH_TPL/_PKG_/$pkg}
|
||||
XPATH=${XPATH/_ARCH_/$ARCH}
|
||||
Xpath_get $XPATH $TMP_PRIMARY
|
||||
CHECKSUM=$XPATH_RESULT
|
||||
|
||||
PKG_URL=$TARGET_URL/$PKG_PATH
|
||||
PKG_FILE=$(basename $PKG_PATH)
|
||||
PKG_PATH=$TMPDIR/$PKG_FILE
|
||||
|
||||
Debug "Download $PKG_URL to $PKG_PATH"
|
||||
Fetch $PKG_URL $PKG_PATH true
|
||||
|
||||
echo "$CHECKSUM $PKG_PATH" | sha256sum -c - > /dev/null
|
||||
if [ $? -ne 0 ]; then
|
||||
Error "Fail to fetch $PKG_URL to $PKG_PATH"
|
||||
Debug "Checksum = $CHECKSUM"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
Inform "Initialize arm base"
|
||||
fetch_tizen_pkgs_init standard base
|
||||
Inform "fetch common packages"
|
||||
fetch_tizen_pkgs armv7l gcc gcc-devel-static glibc glibc-devel libicu libicu-devel libatomic linux-glibc-devel keyutils keyutils-devel libkeyutils
|
||||
Inform "fetch coreclr packages"
|
||||
fetch_tizen_pkgs armv7l lldb lldb-devel libgcc libstdc++ libstdc++-devel libunwind libunwind-devel lttng-ust-devel lttng-ust userspace-rcu-devel userspace-rcu
|
||||
Inform "fetch corefx packages"
|
||||
fetch_tizen_pkgs armv7l libcom_err libcom_err-devel zlib zlib-devel libopenssl11 libopenssl1.1-devel krb5 krb5-devel
|
||||
|
||||
Inform "Initialize standard unified"
|
||||
fetch_tizen_pkgs_init standard unified
|
||||
Inform "fetch corefx packages"
|
||||
fetch_tizen_pkgs armv7l gssdp gssdp-devel tizen-release
|
||||
|
|
@ -1,50 +0,0 @@
|
|||
lang en_US.UTF-8
|
||||
keyboard us
|
||||
timezone --utc Asia/Seoul
|
||||
|
||||
part / --fstype="ext4" --size=3500 --ondisk=mmcblk0 --label rootfs --fsoptions=defaults,noatime
|
||||
|
||||
rootpw tizen
|
||||
desktop --autologinuser=root
|
||||
user --name root --groups audio,video --password 'tizen'
|
||||
|
||||
repo --name=standard --baseurl=http://download.tizen.org/releases/milestone/tizen/unified/latest/repos/standard/packages/ --ssl_verify=no
|
||||
repo --name=base --baseurl=http://download.tizen.org/releases/milestone/tizen/base/latest/repos/standard/packages/ --ssl_verify=no
|
||||
|
||||
%packages
|
||||
tar
|
||||
gzip
|
||||
|
||||
sed
|
||||
grep
|
||||
gawk
|
||||
perl
|
||||
|
||||
binutils
|
||||
findutils
|
||||
util-linux
|
||||
lttng-ust
|
||||
userspace-rcu
|
||||
procps-ng
|
||||
tzdata
|
||||
ca-certificates
|
||||
|
||||
|
||||
### Core FX
|
||||
libicu
|
||||
libunwind
|
||||
iputils
|
||||
zlib
|
||||
krb5
|
||||
libcurl
|
||||
libopenssl
|
||||
|
||||
%end
|
||||
|
||||
%post
|
||||
|
||||
### Update /tmp privilege
|
||||
chmod 777 /tmp
|
||||
####################################
|
||||
|
||||
%end
|
|
@ -107,12 +107,12 @@ __AndroidPackages+=" liblzma"
|
|||
__AndroidPackages+=" krb5"
|
||||
__AndroidPackages+=" openssl"
|
||||
|
||||
for path in $(wget -qO- http://termux.net/dists/stable/main/binary-$__AndroidArch/Packages |\
|
||||
for path in $(wget -qO- https://packages.termux.dev/termux-main-21/dists/stable/main/binary-$__AndroidArch/Packages |\
|
||||
grep -A15 "Package: \(${__AndroidPackages// /\\|}\)" | grep -v "static\|tool" | grep Filename); do
|
||||
|
||||
if [[ "$path" != "Filename:" ]]; then
|
||||
echo "Working on: $path"
|
||||
wget -qO- http://termux.net/$path | dpkg -x - "$__TmpDir"
|
||||
wget -qO- https://packages.termux.dev/termux-main-21/$path | dpkg -x - "$__TmpDir"
|
||||
fi
|
||||
done
|
||||
|
||||
|
|
|
@ -6,13 +6,15 @@ usage()
|
|||
{
|
||||
echo "Usage: $0 [BuildArch] [CodeName] [lldbx.y] [llvmx[.y]] [--skipunmount] --rootfsdir <directory>]"
|
||||
echo "BuildArch can be: arm(default), arm64, armel, armv6, ppc64le, riscv64, s390x, x64, x86"
|
||||
echo "CodeName - optional, Code name for Linux, can be: xenial(default), zesty, bionic, alpine, alpine3.13 or alpine3.14. If BuildArch is armel, LinuxCodeName is jessie(default) or tizen."
|
||||
echo " for FreeBSD can be: freebsd12, freebsd13"
|
||||
echo " for illumos can be: illumos"
|
||||
echo " for Haiku can be: haiku."
|
||||
echo "CodeName - optional, Code name for Linux, can be: xenial(default), zesty, bionic, alpine"
|
||||
echo " for alpine can be specified with version: alpineX.YY or alpineedge"
|
||||
echo " for FreeBSD can be: freebsd12, freebsd13"
|
||||
echo " for illumos can be: illumos"
|
||||
echo " for Haiku can be: haiku."
|
||||
echo "lldbx.y - optional, LLDB version, can be: lldb3.9(default), lldb4.0, lldb5.0, lldb6.0 no-lldb. Ignored for alpine and FreeBSD"
|
||||
echo "llvmx[.y] - optional, LLVM version for LLVM related packages."
|
||||
echo "--skipunmount - optional, will skip the unmount of rootfs folder."
|
||||
echo "--skipsigcheck - optional, will skip package signature checks (allowing untrusted packages)."
|
||||
echo "--use-mirror - optional, use mirror URL to fetch resources, when available."
|
||||
echo "--jobs N - optional, restrict to N jobs."
|
||||
exit 1
|
||||
|
@ -25,6 +27,7 @@ __AlpineArch=armv7
|
|||
__FreeBSDArch=arm
|
||||
__FreeBSDMachineArch=armv7
|
||||
__IllumosArch=arm7
|
||||
__HaikuArch=arm
|
||||
__QEMUArch=arm
|
||||
__UbuntuArch=armhf
|
||||
__UbuntuRepo="http://ports.ubuntu.com/"
|
||||
|
@ -48,12 +51,14 @@ __UbuntuPackages+=" symlinks"
|
|||
__UbuntuPackages+=" libicu-dev"
|
||||
__UbuntuPackages+=" liblttng-ust-dev"
|
||||
__UbuntuPackages+=" libunwind8-dev"
|
||||
__UbuntuPackages+=" libnuma-dev"
|
||||
|
||||
__AlpinePackages+=" gettext-dev"
|
||||
__AlpinePackages+=" icu-dev"
|
||||
__AlpinePackages+=" libunwind-dev"
|
||||
__AlpinePackages+=" lttng-ust-dev"
|
||||
__AlpinePackages+=" compiler-rt-static"
|
||||
__AlpinePackages+=" compiler-rt"
|
||||
__AlpinePackages+=" numactl-dev"
|
||||
|
||||
# runtime libraries' dependencies
|
||||
__UbuntuPackages+=" libcurl4-openssl-dev"
|
||||
|
@ -66,7 +71,7 @@ __AlpinePackages+=" krb5-dev"
|
|||
__AlpinePackages+=" openssl-dev"
|
||||
__AlpinePackages+=" zlib-dev"
|
||||
|
||||
__FreeBSDBase="12.3-RELEASE"
|
||||
__FreeBSDBase="12.4-RELEASE"
|
||||
__FreeBSDPkg="1.17.0"
|
||||
__FreeBSDABI="12"
|
||||
__FreeBSDPackages="libunwind"
|
||||
|
@ -81,8 +86,12 @@ __IllumosPackages+=" mit-krb5"
|
|||
__IllumosPackages+=" openssl"
|
||||
__IllumosPackages+=" zlib"
|
||||
|
||||
__HaikuPackages="gmp"
|
||||
__HaikuPackages="gcc_syslibs"
|
||||
__HaikuPackages+=" gcc_syslibs_devel"
|
||||
__HaikuPackages+=" gmp"
|
||||
__HaikuPackages+=" gmp_devel"
|
||||
__HaikuPackages+=" icu66"
|
||||
__HaikuPackages+=" icu66_devel"
|
||||
__HaikuPackages+=" krb5"
|
||||
__HaikuPackages+=" krb5_devel"
|
||||
__HaikuPackages+=" libiconv"
|
||||
|
@ -91,12 +100,36 @@ __HaikuPackages+=" llvm12_libunwind"
|
|||
__HaikuPackages+=" llvm12_libunwind_devel"
|
||||
__HaikuPackages+=" mpfr"
|
||||
__HaikuPackages+=" mpfr_devel"
|
||||
__HaikuPackages+=" openssl"
|
||||
__HaikuPackages+=" openssl_devel"
|
||||
__HaikuPackages+=" zlib"
|
||||
__HaikuPackages+=" zlib_devel"
|
||||
|
||||
# ML.NET dependencies
|
||||
__UbuntuPackages+=" libomp5"
|
||||
__UbuntuPackages+=" libomp-dev"
|
||||
|
||||
# Taken from https://github.com/alpinelinux/alpine-chroot-install/blob/6d08f12a8a70dd9b9dc7d997c88aa7789cc03c42/alpine-chroot-install#L85-L133
|
||||
__AlpineKeys='
|
||||
4a6a0840:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1yHJxQgsHQREclQu4Ohe\nqxTxd1tHcNnvnQTu/UrTky8wWvgXT+jpveroeWWnzmsYlDI93eLI2ORakxb3gA2O\nQ0Ry4ws8vhaxLQGC74uQR5+/yYrLuTKydFzuPaS1dK19qJPXB8GMdmFOijnXX4SA\njixuHLe1WW7kZVtjL7nufvpXkWBGjsfrvskdNA/5MfxAeBbqPgaq0QMEfxMAn6/R\nL5kNepi/Vr4S39Xvf2DzWkTLEK8pcnjNkt9/aafhWqFVW7m3HCAII6h/qlQNQKSo\nGuH34Q8GsFG30izUENV9avY7hSLq7nggsvknlNBZtFUcmGoQrtx3FmyYsIC8/R+B\nywIDAQAB
|
||||
5243ef4b:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvNijDxJ8kloskKQpJdx+\nmTMVFFUGDoDCbulnhZMJoKNkSuZOzBoFC94omYPtxnIcBdWBGnrm6ncbKRlR+6oy\nDO0W7c44uHKCFGFqBhDasdI4RCYP+fcIX/lyMh6MLbOxqS22TwSLhCVjTyJeeH7K\naA7vqk+QSsF4TGbYzQDDpg7+6aAcNzg6InNePaywA6hbT0JXbxnDWsB+2/LLSF2G\nmnhJlJrWB1WGjkz23ONIWk85W4S0XB/ewDefd4Ly/zyIciastA7Zqnh7p3Ody6Q0\nsS2MJzo7p3os1smGjUF158s6m/JbVh4DN6YIsxwl2OjDOz9R0OycfJSDaBVIGZzg\ncQIDAQAB
|
||||
524d27bb:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr8s1q88XpuJWLCZALdKj\nlN8wg2ePB2T9aIcaxryYE/Jkmtu+ZQ5zKq6BT3y/udt5jAsMrhHTwroOjIsF9DeG\ne8Y3vjz+Hh4L8a7hZDaw8jy3CPag47L7nsZFwQOIo2Cl1SnzUc6/owoyjRU7ab0p\niWG5HK8IfiybRbZxnEbNAfT4R53hyI6z5FhyXGS2Ld8zCoU/R4E1P0CUuXKEN4p0\n64dyeUoOLXEWHjgKiU1mElIQj3k/IF02W89gDj285YgwqA49deLUM7QOd53QLnx+\nxrIrPv3A+eyXMFgexNwCKQU9ZdmWa00MjjHlegSGK8Y2NPnRoXhzqSP9T9i2HiXL\nVQIDAQAB
|
||||
5261cecb:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwlzMkl7b5PBdfMzGdCT0\ncGloRr5xGgVmsdq5EtJvFkFAiN8Ac9MCFy/vAFmS8/7ZaGOXoCDWbYVLTLOO2qtX\nyHRl+7fJVh2N6qrDDFPmdgCi8NaE+3rITWXGrrQ1spJ0B6HIzTDNEjRKnD4xyg4j\ng01FMcJTU6E+V2JBY45CKN9dWr1JDM/nei/Pf0byBJlMp/mSSfjodykmz4Oe13xB\nCa1WTwgFykKYthoLGYrmo+LKIGpMoeEbY1kuUe04UiDe47l6Oggwnl+8XD1MeRWY\nsWgj8sF4dTcSfCMavK4zHRFFQbGp/YFJ/Ww6U9lA3Vq0wyEI6MCMQnoSMFwrbgZw\nwwIDAQAB
|
||||
58199dcc:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3v8/ye/V/t5xf4JiXLXa\nhWFRozsnmn3hobON20GdmkrzKzO/eUqPOKTpg2GtvBhK30fu5oY5uN2ORiv2Y2ht\neLiZ9HVz3XP8Fm9frha60B7KNu66FO5P2o3i+E+DWTPqqPcCG6t4Znk2BypILcit\nwiPKTsgbBQR2qo/cO01eLLdt6oOzAaF94NH0656kvRewdo6HG4urbO46tCAizvCR\nCA7KGFMyad8WdKkTjxh8YLDLoOCtoZmXmQAiwfRe9pKXRH/XXGop8SYptLqyVVQ+\ntegOD9wRs2tOlgcLx4F/uMzHN7uoho6okBPiifRX+Pf38Vx+ozXh056tjmdZkCaV\naQIDAQAB
|
||||
58cbb476:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoSPnuAGKtRIS5fEgYPXD\n8pSGvKAmIv3A08LBViDUe+YwhilSHbYXUEAcSH1KZvOo1WT1x2FNEPBEFEFU1Eyc\n+qGzbA03UFgBNvArurHQ5Z/GngGqE7IarSQFSoqewYRtFSfp+TL9CUNBvM0rT7vz\n2eMu3/wWG+CBmb92lkmyWwC1WSWFKO3x8w+Br2IFWvAZqHRt8oiG5QtYvcZL6jym\nY8T6sgdDlj+Y+wWaLHs9Fc+7vBuyK9C4O1ORdMPW15qVSl4Lc2Wu1QVwRiKnmA+c\nDsH/m7kDNRHM7TjWnuj+nrBOKAHzYquiu5iB3Qmx+0gwnrSVf27Arc3ozUmmJbLj\nzQIDAQAB
|
||||
58e4f17d:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvBxJN9ErBgdRcPr5g4hV\nqyUSGZEKuvQliq2Z9SRHLh2J43+EdB6A+yzVvLnzcHVpBJ+BZ9RV30EM9guck9sh\nr+bryZcRHyjG2wiIEoduxF2a8KeWeQH7QlpwGhuobo1+gA8L0AGImiA6UP3LOirl\nI0G2+iaKZowME8/tydww4jx5vG132JCOScMjTalRsYZYJcjFbebQQolpqRaGB4iG\nWqhytWQGWuKiB1A22wjmIYf3t96l1Mp+FmM2URPxD1gk/BIBnX7ew+2gWppXOK9j\n1BJpo0/HaX5XoZ/uMqISAAtgHZAqq+g3IUPouxTphgYQRTRYpz2COw3NF43VYQrR\nbQIDAQAB
|
||||
60ac2099:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwR4uJVtJOnOFGchnMW5Y\nj5/waBdG1u5BTMlH+iQMcV5+VgWhmpZHJCBz3ocD+0IGk2I68S5TDOHec/GSC0lv\n6R9o6F7h429GmgPgVKQsc8mPTPtbjJMuLLs4xKc+viCplXc0Nc0ZoHmCH4da6fCV\ntdpHQjVe6F9zjdquZ4RjV6R6JTiN9v924dGMAkbW/xXmamtz51FzondKC52Gh8Mo\n/oA0/T0KsCMCi7tb4QNQUYrf+Xcha9uus4ww1kWNZyfXJB87a2kORLiWMfs2IBBJ\nTmZ2Fnk0JnHDb8Oknxd9PvJPT0mvyT8DA+KIAPqNvOjUXP4bnjEHJcoCP9S5HkGC\nIQIDAQAB
|
||||
6165ee59:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAutQkua2CAig4VFSJ7v54\nALyu/J1WB3oni7qwCZD3veURw7HxpNAj9hR+S5N/pNeZgubQvJWyaPuQDm7PTs1+\ntFGiYNfAsiibX6Rv0wci3M+z2XEVAeR9Vzg6v4qoofDyoTbovn2LztaNEjTkB+oK\ntlvpNhg1zhou0jDVYFniEXvzjckxswHVb8cT0OMTKHALyLPrPOJzVtM9C1ew2Nnc\n3848xLiApMu3NBk0JqfcS3Bo5Y2b1FRVBvdt+2gFoKZix1MnZdAEZ8xQzL/a0YS5\nHd0wj5+EEKHfOd3A75uPa/WQmA+o0cBFfrzm69QDcSJSwGpzWrD1ScH3AK8nWvoj\nv7e9gukK/9yl1b4fQQ00vttwJPSgm9EnfPHLAtgXkRloI27H6/PuLoNvSAMQwuCD\nhQRlyGLPBETKkHeodfLoULjhDi1K2gKJTMhtbnUcAA7nEphkMhPWkBpgFdrH+5z4\nLxy+3ek0cqcI7K68EtrffU8jtUj9LFTUC8dERaIBs7NgQ/LfDbDfGh9g6qVj1hZl\nk9aaIPTm/xsi8v3u+0qaq7KzIBc9s59JOoA8TlpOaYdVgSQhHHLBaahOuAigH+VI\nisbC9vmqsThF2QdDtQt37keuqoda2E6sL7PUvIyVXDRfwX7uMDjlzTxHTymvq2Ck\nhtBqojBnThmjJQFgZXocHG8CAwEAAQ==
|
||||
61666e3f:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAlEyxkHggKCXC2Wf5Mzx4\nnZLFZvU2bgcA3exfNPO/g1YunKfQY+Jg4fr6tJUUTZ3XZUrhmLNWvpvSwDS19ZmC\nIXOu0+V94aNgnhMsk9rr59I8qcbsQGIBoHzuAl8NzZCgdbEXkiY90w1skUw8J57z\nqCsMBydAueMXuWqF5nGtYbi5vHwK42PffpiZ7G5Kjwn8nYMW5IZdL6ZnMEVJUWC9\nI4waeKg0yskczYDmZUEAtrn3laX9677ToCpiKrvmZYjlGl0BaGp3cxggP2xaDbUq\nqfFxWNgvUAb3pXD09JM6Mt6HSIJaFc9vQbrKB9KT515y763j5CC2KUsilszKi3mB\nHYe5PoebdjS7D1Oh+tRqfegU2IImzSwW3iwA7PJvefFuc/kNIijfS/gH/cAqAK6z\nbhdOtE/zc7TtqW2Wn5Y03jIZdtm12CxSxwgtCF1NPyEWyIxAQUX9ACb3M0FAZ61n\nfpPrvwTaIIxxZ01L3IzPLpbc44x/DhJIEU+iDt6IMTrHOphD9MCG4631eIdB0H1b\n6zbNX1CXTsafqHRFV9XmYYIeOMggmd90s3xIbEujA6HKNP/gwzO6CDJ+nHFDEqoF\nSkxRdTkEqjTjVKieURW7Swv7zpfu5PrsrrkyGnsRrBJJzXlm2FOOxnbI2iSL1B5F\nrO5kbUxFeZUIDq+7Yv4kLWcCAwEAAQ==
|
||||
616a9724:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAnC+bR4bHf/L6QdU4puhQ\ngl1MHePszRC38bzvVFDUJsmCaMCL2suCs2A2yxAgGb9pu9AJYLAmxQC4mM3jNqhg\n/E7yuaBbek3O02zN/ctvflJ250wZCy+z0ZGIp1ak6pu1j14IwHokl9j36zNfGtfv\nADVOcdpWITFFlPqwq1qt/H3UsKVmtiF3BNWWTeUEQwKvlU8ymxgS99yn0+4OPyNT\nL3EUeS+NQJtDS01unau0t7LnjUXn+XIneWny8bIYOQCuVR6s/gpIGuhBaUqwaJOw\n7jkJZYF2Ij7uPb4b5/R3vX2FfxxqEHqssFSg8FFUNTZz3qNZs0CRVyfA972g9WkJ\nhPfn31pQYil4QGRibCMIeU27YAEjXoqfJKEPh4UWMQsQLrEfdGfb8VgwrPbniGfU\nL3jKJR3VAafL9330iawzVQDlIlwGl6u77gEXMl9K0pfazunYhAp+BMP+9ot5ckK+\nosmrqj11qMESsAj083GeFdfV3pXEIwUytaB0AKEht9DbqUfiE/oeZ/LAXgySMtVC\nsbC4ESmgVeY2xSBIJdDyUap7FR49GGrw0W49NUv9gRgQtGGaNVQQO9oGL2PBC41P\niWF9GLoX30HIz1P8PF/cZvicSSPkQf2Z6TV+t0ebdGNS5DjapdnCrq8m9Z0pyKsQ\nuxAL2a7zX8l5i1CZh1ycUGsCAwEAAQ==
|
||||
616abc23:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0MfCDrhODRCIxR9Dep1s\neXafh5CE5BrF4WbCgCsevyPIdvTeyIaW4vmO3bbG4VzhogDZju+R3IQYFuhoXP5v\nY+zYJGnwrgz3r5wYAvPnLEs1+dtDKYOgJXQj+wLJBW1mzRDL8FoRXOe5iRmn1EFS\nwZ1DoUvyu7/J5r0itKicZp3QKED6YoilXed+1vnS4Sk0mzN4smuMR9eO1mMCqNp9\n9KTfRDHTbakIHwasECCXCp50uXdoW6ig/xUAFanpm9LtK6jctNDbXDhQmgvAaLXZ\nLvFqoaYJ/CvWkyYCgL6qxvMvVmPoRv7OPcyni4xR/WgWa0MSaEWjgPx3+yj9fiMA\n1S02pFWFDOr5OUF/O4YhFJvUCOtVsUPPfA/Lj6faL0h5QI9mQhy5Zb9TTaS9jB6p\nLw7u0dJlrjFedk8KTJdFCcaGYHP6kNPnOxMylcB/5WcztXZVQD5WpCicGNBxCGMm\nW64SgrV7M07gQfL/32QLsdqPUf0i8hoVD8wfQ3EpbQzv6Fk1Cn90bZqZafg8XWGY\nwddhkXk7egrr23Djv37V2okjzdqoyLBYBxMz63qQzFoAVv5VoY2NDTbXYUYytOvG\nGJ1afYDRVWrExCech1mX5ZVUB1br6WM+psFLJFoBFl6mDmiYt0vMYBddKISsvwLl\nIJQkzDwtXzT2cSjoj3T5QekCAwEAAQ==
|
||||
616ac3bc:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAvaaoSLab+IluixwKV5Od\n0gib2YurjPatGIbn5Ov2DLUFYiebj2oJINXJSwUOO+4WcuHFEqiL/1rya+k5hLZt\nhnPL1tn6QD4rESznvGSasRCQNT2vS/oyZbTYJRyAtFkEYLlq0t3S3xBxxHWuvIf0\nqVxVNYpQWyM3N9RIeYBR/euXKJXileSHk/uq1I5wTC0XBIHWcthczGN0m9wBEiWS\n0m3cnPk4q0Ea8mUJ91Rqob19qETz6VbSPYYpZk3qOycjKosuwcuzoMpwU8KRiMFd\n5LHtX0Hx85ghGsWDVtS0c0+aJa4lOMGvJCAOvDfqvODv7gKlCXUpgumGpLdTmaZ8\n1RwqspAe3IqBcdKTqRD4m2mSg23nVx2FAY3cjFvZQtfooT7q1ItRV5RgH6FhQSl7\n+6YIMJ1Bf8AAlLdRLpg+doOUGcEn+pkDiHFgI8ylH1LKyFKw+eXaAml/7DaWZk1d\ndqggwhXOhc/UUZFQuQQ8A8zpA13PcbC05XxN2hyP93tCEtyynMLVPtrRwDnHxFKa\nqKzs3rMDXPSXRn3ZZTdKH3069ApkEjQdpcwUh+EmJ1Ve/5cdtzT6kKWCjKBFZP/s\n91MlRrX2BTRdHaU5QJkUheUtakwxuHrdah2F94lRmsnQlpPr2YseJu6sIE+Dnx4M\nCfhdVbQL2w54R645nlnohu8CAwEAAQ==
|
||||
616adfeb:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAq0BFD1D4lIxQcsqEpQzU\npNCYM3aP1V/fxxVdT4DWvSI53JHTwHQamKdMWtEXetWVbP5zSROniYKFXd/xrD9X\n0jiGHey3lEtylXRIPxe5s+wXoCmNLcJVnvTcDtwx/ne2NLHxp76lyc25At+6RgE6\nADjLVuoD7M4IFDkAsd8UQ8zM0Dww9SylIk/wgV3ZkifecvgUQRagrNUdUjR56EBZ\nraQrev4hhzOgwelT0kXCu3snbUuNY/lU53CoTzfBJ5UfEJ5pMw1ij6X0r5S9IVsy\nKLWH1hiO0NzU2c8ViUYCly4Fe9xMTFc6u2dy/dxf6FwERfGzETQxqZvSfrRX+GLj\n/QZAXiPg5178hT/m0Y3z5IGenIC/80Z9NCi+byF1WuJlzKjDcF/TU72zk0+PNM/H\nKuppf3JT4DyjiVzNC5YoWJT2QRMS9KLP5iKCSThwVceEEg5HfhQBRT9M6KIcFLSs\nmFjx9kNEEmc1E8hl5IR3+3Ry8G5/bTIIruz14jgeY9u5jhL8Vyyvo41jgt9sLHR1\n/J1TxKfkgksYev7PoX6/ZzJ1ksWKZY5NFoDXTNYUgzFUTOoEaOg3BAQKadb3Qbbq\nXIrxmPBdgrn9QI7NCgfnAY3Tb4EEjs3ON/BNyEhUENcXOH6I1NbcuBQ7g9P73kE4\nVORdoc8MdJ5eoKBpO8Ww8HECAwEAAQ==
|
||||
616ae350:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAyduVzi1mWm+lYo2Tqt/0\nXkCIWrDNP1QBMVPrE0/ZlU2bCGSoo2Z9FHQKz/mTyMRlhNqTfhJ5qU3U9XlyGOPJ\npiM+b91g26pnpXJ2Q2kOypSgOMOPA4cQ42PkHBEqhuzssfj9t7x47ppS94bboh46\nxLSDRff/NAbtwTpvhStV3URYkxFG++cKGGa5MPXBrxIp+iZf9GnuxVdST5PGiVGP\nODL/b69sPJQNbJHVquqUTOh5Ry8uuD2WZuXfKf7/C0jC/ie9m2+0CttNu9tMciGM\nEyKG1/Xhk5iIWO43m4SrrT2WkFlcZ1z2JSf9Pjm4C2+HovYpihwwdM/OdP8Xmsnr\nDzVB4YvQiW+IHBjStHVuyiZWc+JsgEPJzisNY0Wyc/kNyNtqVKpX6dRhMLanLmy+\nf53cCSI05KPQAcGj6tdL+D60uKDkt+FsDa0BTAobZ31OsFVid0vCXtsbplNhW1IF\nHwsGXBTVcfXg44RLyL8Lk/2dQxDHNHzAUslJXzPxaHBLmt++2COa2EI1iWlvtznk\nOk9WP8SOAIj+xdqoiHcC4j72BOVVgiITIJNHrbppZCq6qPR+fgXmXa+sDcGh30m6\n9Wpbr28kLMSHiENCWTdsFij+NQTd5S47H7XTROHnalYDuF1RpS+DpQidT5tUimaT\nJZDr++FjKrnnijbyNF8b98UCAwEAAQ==
|
||||
616db30d:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAnpUpyWDWjlUk3smlWeA0\nlIMW+oJ38t92CRLHH3IqRhyECBRW0d0aRGtq7TY8PmxjjvBZrxTNDpJT6KUk4LRm\na6A6IuAI7QnNK8SJqM0DLzlpygd7GJf8ZL9SoHSH+gFsYF67Cpooz/YDqWrlN7Vw\ntO00s0B+eXy+PCXYU7VSfuWFGK8TGEv6HfGMALLjhqMManyvfp8hz3ubN1rK3c8C\nUS/ilRh1qckdbtPvoDPhSbTDmfU1g/EfRSIEXBrIMLg9ka/XB9PvWRrekrppnQzP\nhP9YE3x/wbFc5QqQWiRCYyQl/rgIMOXvIxhkfe8H5n1Et4VAorkpEAXdsfN8KSVv\nLSMazVlLp9GYq5SUpqYX3KnxdWBgN7BJoZ4sltsTpHQ/34SXWfu3UmyUveWj7wp0\nx9hwsPirVI00EEea9AbP7NM2rAyu6ukcm4m6ATd2DZJIViq2es6m60AE6SMCmrQF\nwmk4H/kdQgeAELVfGOm2VyJ3z69fQuywz7xu27S6zTKi05Qlnohxol4wVb6OB7qG\nLPRtK9ObgzRo/OPumyXqlzAi/Yvyd1ZQk8labZps3e16bQp8+pVPiumWioMFJDWV\nGZjCmyMSU8V6MB6njbgLHoyg2LCukCAeSjbPGGGYhnKLm1AKSoJh3IpZuqcKCk5C\n8CM1S15HxV78s9dFntEqIokCAwEAAQ==
|
||||
'
|
||||
__Keyring=
|
||||
__SkipSigCheck=0
|
||||
__UseMirror=0
|
||||
|
||||
__UnprocessedBuildArgs=
|
||||
|
@ -143,47 +176,56 @@ while :; do
|
|||
__Keyring="--keyring /usr/share/keyrings/raspbian-archive-keyring.gpg"
|
||||
fi
|
||||
;;
|
||||
ppc64le)
|
||||
__BuildArch=ppc64le
|
||||
__UbuntuArch=ppc64el
|
||||
__UbuntuRepo="http://ports.ubuntu.com/ubuntu-ports/"
|
||||
__UbuntuPackages=$(echo ${__UbuntuPackages} | sed 's/ libunwind8-dev//')
|
||||
__UbuntuPackages=$(echo ${__UbuntuPackages} | sed 's/ libomp-dev//')
|
||||
__UbuntuPackages=$(echo ${__UbuntuPackages} | sed 's/ libomp5//')
|
||||
unset __LLDB_Package
|
||||
;;
|
||||
riscv64)
|
||||
__BuildArch=riscv64
|
||||
__AlpineArch=riscv64
|
||||
__AlpinePackages="${__AlpinePackages// lldb-dev/}"
|
||||
__QEMUArch=riscv64
|
||||
__UbuntuArch=riscv64
|
||||
__UbuntuRepo="http://deb.debian.org/debian-ports"
|
||||
__CodeName=sid
|
||||
__UbuntuPackages=$(echo ${__UbuntuPackages} | sed 's/ libunwind8-dev//')
|
||||
__UbuntuPackages="${__UbuntuPackages// libunwind8-dev/}"
|
||||
unset __LLDB_Package
|
||||
|
||||
if [[ -e "/usr/share/keyrings/debian-ports-archive-keyring.gpg" ]]; then
|
||||
__Keyring="--keyring /usr/share/keyrings/debian-ports-archive-keyring.gpg --include=debian-ports-archive-keyring"
|
||||
fi
|
||||
;;
|
||||
ppc64le)
|
||||
__BuildArch=ppc64le
|
||||
__AlpineArch=ppc64le
|
||||
__QEMUArch=ppc64le
|
||||
__UbuntuArch=ppc64el
|
||||
__UbuntuRepo="http://ports.ubuntu.com/ubuntu-ports/"
|
||||
__UbuntuPackages="${__UbuntuPackages// libunwind8-dev/}"
|
||||
__UbuntuPackages="${__UbuntuPackages// libomp-dev/}"
|
||||
__UbuntuPackages="${__UbuntuPackages// libomp5/}"
|
||||
unset __LLDB_Package
|
||||
;;
|
||||
s390x)
|
||||
__BuildArch=s390x
|
||||
__AlpineArch=s390x
|
||||
__QEMUArch=s390x
|
||||
__UbuntuArch=s390x
|
||||
__UbuntuRepo="http://ports.ubuntu.com/ubuntu-ports/"
|
||||
__UbuntuPackages=$(echo ${__UbuntuPackages} | sed 's/ libunwind8-dev//')
|
||||
__UbuntuPackages=$(echo ${__UbuntuPackages} | sed 's/ libomp-dev//')
|
||||
__UbuntuPackages=$(echo ${__UbuntuPackages} | sed 's/ libomp5//')
|
||||
__UbuntuPackages="${__UbuntuPackages// libunwind8-dev/}"
|
||||
__UbuntuPackages="${__UbuntuPackages// libomp-dev/}"
|
||||
__UbuntuPackages="${__UbuntuPackages// libomp5/}"
|
||||
unset __LLDB_Package
|
||||
;;
|
||||
x64)
|
||||
__BuildArch=x64
|
||||
__AlpineArch=x86_64
|
||||
__UbuntuArch=amd64
|
||||
__FreeBSDArch=amd64
|
||||
__FreeBSDMachineArch=amd64
|
||||
__illumosArch=x86_64
|
||||
__UbuntuRepo=
|
||||
__HaikuArch=x86_64
|
||||
__UbuntuRepo="http://archive.ubuntu.com/ubuntu/"
|
||||
;;
|
||||
x86)
|
||||
__BuildArch=x86
|
||||
__UbuntuArch=i386
|
||||
__AlpineArch=x86
|
||||
__UbuntuRepo="http://archive.ubuntu.com/ubuntu/"
|
||||
;;
|
||||
lldb*)
|
||||
|
@ -238,34 +280,59 @@ while :; do
|
|||
;;
|
||||
jessie) # Debian 8
|
||||
__CodeName=jessie
|
||||
__UbuntuRepo="http://ftp.debian.org/debian/"
|
||||
|
||||
if [[ -z "$__UbuntuRepo" ]]; then
|
||||
__UbuntuRepo="http://ftp.debian.org/debian/"
|
||||
fi
|
||||
;;
|
||||
stretch) # Debian 9
|
||||
__CodeName=stretch
|
||||
__UbuntuRepo="http://ftp.debian.org/debian/"
|
||||
__LLDB_Package="liblldb-6.0-dev"
|
||||
|
||||
if [[ -z "$__UbuntuRepo" ]]; then
|
||||
__UbuntuRepo="http://ftp.debian.org/debian/"
|
||||
fi
|
||||
;;
|
||||
buster) # Debian 10
|
||||
__CodeName=buster
|
||||
__UbuntuRepo="http://ftp.debian.org/debian/"
|
||||
__LLDB_Package="liblldb-6.0-dev"
|
||||
|
||||
if [[ -z "$__UbuntuRepo" ]]; then
|
||||
__UbuntuRepo="http://ftp.debian.org/debian/"
|
||||
fi
|
||||
;;
|
||||
bullseye) # Debian 11
|
||||
__CodeName=bullseye
|
||||
|
||||
if [[ -z "$__UbuntuRepo" ]]; then
|
||||
__UbuntuRepo="http://ftp.debian.org/debian/"
|
||||
fi
|
||||
;;
|
||||
sid) # Debian sid
|
||||
__CodeName=sid
|
||||
|
||||
if [[ -z "$__UbuntuRepo" ]]; then
|
||||
__UbuntuRepo="http://ftp.debian.org/debian/"
|
||||
fi
|
||||
;;
|
||||
tizen)
|
||||
__CodeName=
|
||||
__UbuntuRepo=
|
||||
__Tizen=tizen
|
||||
;;
|
||||
alpine|alpine3.13)
|
||||
alpine*)
|
||||
__CodeName=alpine
|
||||
__UbuntuRepo=
|
||||
__AlpineVersion=3.13
|
||||
__AlpinePackages+=" llvm10-libs"
|
||||
;;
|
||||
alpine3.14)
|
||||
__CodeName=alpine
|
||||
__UbuntuRepo=
|
||||
__AlpineVersion=3.14
|
||||
__AlpinePackages+=" llvm11-libs"
|
||||
version="${lowerI/alpine/}"
|
||||
|
||||
if [[ "$version" == "edge" ]]; then
|
||||
__AlpineVersion=edge
|
||||
else
|
||||
parts=(${version//./ })
|
||||
__AlpineMajorVersion="${parts[0]}"
|
||||
__AlpineMinoVersion="${parts[1]}"
|
||||
__AlpineVersion="$__AlpineMajorVersion.$__AlpineMinoVersion"
|
||||
fi
|
||||
;;
|
||||
freebsd12)
|
||||
__CodeName=freebsd
|
||||
|
@ -273,7 +340,7 @@ while :; do
|
|||
;;
|
||||
freebsd13)
|
||||
__CodeName=freebsd
|
||||
__FreeBSDBase="13.0-RELEASE"
|
||||
__FreeBSDBase="13.2-RELEASE"
|
||||
__FreeBSDABI="13"
|
||||
__SkipUnmount=1
|
||||
;;
|
||||
|
@ -283,12 +350,14 @@ while :; do
|
|||
;;
|
||||
haiku)
|
||||
__CodeName=haiku
|
||||
__BuildArch=x64
|
||||
__SkipUnmount=1
|
||||
;;
|
||||
--skipunmount)
|
||||
__SkipUnmount=1
|
||||
;;
|
||||
--skipsigcheck)
|
||||
__SkipSigCheck=1
|
||||
;;
|
||||
--rootfsdir|-rootfsdir)
|
||||
shift
|
||||
__RootfsDir="$1"
|
||||
|
@ -308,10 +377,47 @@ while :; do
|
|||
shift
|
||||
done
|
||||
|
||||
case "$__AlpineVersion" in
|
||||
3.14) __AlpinePackages+=" llvm11-libs" ;;
|
||||
3.15) __AlpinePackages+=" llvm12-libs" ;;
|
||||
3.16) __AlpinePackages+=" llvm13-libs" ;;
|
||||
3.17) __AlpinePackages+=" llvm15-libs" ;;
|
||||
edge) __AlpineLlvmLibsLookup=1 ;;
|
||||
*)
|
||||
if [[ "$__AlpineArch" =~ s390x|ppc64le ]]; then
|
||||
__AlpineVersion=3.15 # minimum version that supports lldb-dev
|
||||
__AlpinePackages+=" llvm12-libs"
|
||||
elif [[ "$__AlpineArch" == "x86" ]]; then
|
||||
__AlpineVersion=3.17 # minimum version that supports lldb-dev
|
||||
__AlpinePackages+=" llvm15-libs"
|
||||
elif [[ "$__AlpineArch" == "riscv64" ]]; then
|
||||
__AlpineLlvmLibsLookup=1
|
||||
__AlpineVersion=edge # minimum version with APKINDEX.tar.gz (packages archive)
|
||||
else
|
||||
__AlpineVersion=3.13 # 3.13 to maximize compatibility
|
||||
__AlpinePackages+=" llvm10-libs"
|
||||
|
||||
if [[ "$__AlpineArch" == "armv7" ]]; then
|
||||
__AlpinePackages="${__AlpinePackages//numactl-dev/}"
|
||||
fi
|
||||
fi
|
||||
esac
|
||||
|
||||
if [[ "$__AlpineVersion" =~ 3\.1[345] ]]; then
|
||||
# compiler-rt--static was merged in compiler-rt package in alpine 3.16
|
||||
# for older versions, we need compiler-rt--static, so replace the name
|
||||
__AlpinePackages="${__AlpinePackages/compiler-rt/compiler-rt-static}"
|
||||
fi
|
||||
|
||||
if [[ "$__BuildArch" == "armel" ]]; then
|
||||
__LLDB_Package="lldb-3.5-dev"
|
||||
fi
|
||||
|
||||
if [[ "$__CodeName" == "xenial" && "$__UbuntuArch" == "armhf" ]]; then
|
||||
# libnuma-dev is not available on armhf for xenial
|
||||
__UbuntuPackages="${__UbuntuPackages//libnuma-dev/}"
|
||||
fi
|
||||
|
||||
__UbuntuPackages+=" ${__LLDB_Package:-}"
|
||||
|
||||
if [[ -n "$__LLVM_MajorVersion" ]]; then
|
||||
|
@ -337,18 +443,59 @@ mkdir -p "$__RootfsDir"
|
|||
__RootfsDir="$( cd "$__RootfsDir" && pwd )"
|
||||
|
||||
if [[ "$__CodeName" == "alpine" ]]; then
|
||||
__ApkToolsVersion=2.9.1
|
||||
__ApkToolsVersion=2.12.11
|
||||
__ApkToolsSHA512SUM=53e57b49230da07ef44ee0765b9592580308c407a8d4da7125550957bb72cb59638e04f8892a18b584451c8d841d1c7cb0f0ab680cc323a3015776affaa3be33
|
||||
__ApkToolsDir="$(mktemp -d)"
|
||||
wget "https://github.com/alpinelinux/apk-tools/releases/download/v$__ApkToolsVersion/apk-tools-$__ApkToolsVersion-x86_64-linux.tar.gz" -P "$__ApkToolsDir"
|
||||
tar -xf "$__ApkToolsDir/apk-tools-$__ApkToolsVersion-x86_64-linux.tar.gz" -C "$__ApkToolsDir"
|
||||
mkdir -p "$__RootfsDir"/usr/bin
|
||||
cp -v "/usr/bin/qemu-$__QEMUArch-static" "$__RootfsDir/usr/bin"
|
||||
__ApkKeysDir="$(mktemp -d)"
|
||||
|
||||
"$__ApkToolsDir/apk-tools-$__ApkToolsVersion/apk" \
|
||||
-X "http://dl-cdn.alpinelinux.org/alpine/v$__AlpineVersion/main" \
|
||||
-X "http://dl-cdn.alpinelinux.org/alpine/v$__AlpineVersion/community" \
|
||||
-U --allow-untrusted --root "$__RootfsDir" --arch "$__AlpineArch" --initdb \
|
||||
add $__AlpinePackages
|
||||
wget "https://gitlab.alpinelinux.org/api/v4/projects/5/packages/generic//v$__ApkToolsVersion/x86_64/apk.static" -P "$__ApkToolsDir"
|
||||
echo "$__ApkToolsSHA512SUM $__ApkToolsDir/apk.static" | sha512sum -c
|
||||
chmod +x "$__ApkToolsDir/apk.static"
|
||||
|
||||
if [[ -f "/usr/bin/qemu-$__QEMUArch-static" ]]; then
|
||||
mkdir -p "$__RootfsDir"/usr/bin
|
||||
cp -v "/usr/bin/qemu-$__QEMUArch-static" "$__RootfsDir/usr/bin"
|
||||
fi
|
||||
|
||||
if [[ "$__AlpineVersion" == "edge" ]]; then
|
||||
version=edge
|
||||
else
|
||||
version="v$__AlpineVersion"
|
||||
fi
|
||||
|
||||
for line in $__AlpineKeys; do
|
||||
id="${line%%:*}"
|
||||
content="${line#*:}"
|
||||
|
||||
echo -e "-----BEGIN PUBLIC KEY-----\n$content\n-----END PUBLIC KEY-----" > "$__ApkKeysDir/alpine-devel@lists.alpinelinux.org-$id.rsa.pub"
|
||||
done
|
||||
|
||||
if [[ "$__SkipSigCheck" == "1" ]]; then
|
||||
__ApkSignatureArg="--allow-untrusted"
|
||||
else
|
||||
__ApkSignatureArg="--keys-dir $__ApkKeysDir"
|
||||
fi
|
||||
|
||||
# initialize DB
|
||||
"$__ApkToolsDir/apk.static" \
|
||||
-X "http://dl-cdn.alpinelinux.org/alpine/$version/main" \
|
||||
-X "http://dl-cdn.alpinelinux.org/alpine/$version/community" \
|
||||
-U $__ApkSignatureArg --root "$__RootfsDir" --arch "$__AlpineArch" --initdb add
|
||||
|
||||
if [[ "$__AlpineLlvmLibsLookup" == 1 ]]; then
|
||||
__AlpinePackages+=" $("$__ApkToolsDir/apk.static" \
|
||||
-X "http://dl-cdn.alpinelinux.org/alpine/$version/main" \
|
||||
-X "http://dl-cdn.alpinelinux.org/alpine/$version/community" \
|
||||
-U $__ApkSignatureArg --root "$__RootfsDir" --arch "$__AlpineArch" \
|
||||
search 'llvm*-libs' | sort | tail -1 | sed 's/-[^-]*//2g')"
|
||||
fi
|
||||
|
||||
# install all packages in one go
|
||||
"$__ApkToolsDir/apk.static" \
|
||||
-X "http://dl-cdn.alpinelinux.org/alpine/$version/main" \
|
||||
-X "http://dl-cdn.alpinelinux.org/alpine/$version/community" \
|
||||
-U $__ApkSignatureArg --root "$__RootfsDir" --arch "$__AlpineArch" \
|
||||
add $__AlpinePackages
|
||||
|
||||
rm -r "$__ApkToolsDir"
|
||||
elif [[ "$__CodeName" == "freebsd" ]]; then
|
||||
|
@ -391,9 +538,9 @@ elif [[ "$__CodeName" == "illumos" ]]; then
|
|||
--with-gnu-ld --disable-nls --disable-libgomp --disable-libquadmath --disable-libssp --disable-libvtv --disable-libcilkrts --disable-libada --disable-libsanitizer \
|
||||
--disable-libquadmath-support --disable-shared --enable-tls
|
||||
make -j "$JOBS" && make install && cd ..
|
||||
BaseUrl=https://pkgsrc.joyent.com
|
||||
BaseUrl=https://pkgsrc.smartos.org
|
||||
if [[ "$__UseMirror" == 1 ]]; then
|
||||
BaseUrl=http://pkgsrc.smartos.skylime.net
|
||||
BaseUrl=https://pkgsrc.smartos.skylime.net
|
||||
fi
|
||||
BaseUrl="$BaseUrl/packages/SmartOS/trunk/${__illumosArch}/All"
|
||||
echo "Downloading manifest"
|
||||
|
@ -402,7 +549,8 @@ elif [[ "$__CodeName" == "illumos" ]]; then
|
|||
read -ra array <<<"$__IllumosPackages"
|
||||
for package in "${array[@]}"; do
|
||||
echo "Installing '$package'"
|
||||
package="$(grep ">$package-[0-9]" All | sed -En 's/.*href="(.*)\.tgz".*/\1/p')"
|
||||
# find last occurrence of package in listing and extract its name
|
||||
package="$(sed -En '/.*href="('"$package"'-[0-9].*).tgz".*/h;$!d;g;s//\1/p' All)"
|
||||
echo "Resolved name '$package'"
|
||||
wget "$BaseUrl"/"$package".tgz
|
||||
ar -x "$package".tgz
|
||||
|
@ -420,69 +568,61 @@ elif [[ "$__CodeName" == "illumos" ]]; then
|
|||
elif [[ "$__CodeName" == "haiku" ]]; then
|
||||
JOBS=${MAXJOBS:="$(getconf _NPROCESSORS_ONLN)"}
|
||||
|
||||
echo "Building Haiku sysroot for x86_64"
|
||||
echo "Building Haiku sysroot for $__HaikuArch"
|
||||
mkdir -p "$__RootfsDir/tmp"
|
||||
cd "$__RootfsDir/tmp"
|
||||
git clone -b hrev56235 https://review.haiku-os.org/haiku
|
||||
git clone -b btrev43195 https://review.haiku-os.org/buildtools
|
||||
cd "$__RootfsDir/tmp/buildtools" && git checkout 7487388f5110021d400b9f3b88e1a7f310dc066d
|
||||
pushd "$__RootfsDir/tmp"
|
||||
|
||||
# Fetch some unmerged patches
|
||||
cd "$__RootfsDir/tmp/haiku"
|
||||
## Add development build profile (slimmer than nightly)
|
||||
git fetch origin refs/changes/64/4164/1 && git -c commit.gpgsign=false cherry-pick FETCH_HEAD
|
||||
mkdir "$__RootfsDir/tmp/download"
|
||||
|
||||
# Build jam
|
||||
cd "$__RootfsDir/tmp/buildtools/jam"
|
||||
make
|
||||
echo "Downloading Haiku package tool"
|
||||
git clone https://github.com/haiku/haiku-toolchains-ubuntu --depth 1 $__RootfsDir/tmp/script
|
||||
wget -O "$__RootfsDir/tmp/download/hosttools.zip" $($__RootfsDir/tmp/script/fetch.sh --hosttools)
|
||||
unzip -o "$__RootfsDir/tmp/download/hosttools.zip" -d "$__RootfsDir/tmp/bin"
|
||||
|
||||
# Configure cross tools
|
||||
echo "Building cross-compiler"
|
||||
mkdir -p "$__RootfsDir/generated"
|
||||
cd "$__RootfsDir/generated"
|
||||
"$__RootfsDir/tmp/haiku/configure" -j"$JOBS" --sysroot "$__RootfsDir" --cross-tools-source "$__RootfsDir/tmp/buildtools" --build-cross-tools x86_64
|
||||
DepotBaseUrl="https://depot.haiku-os.org/__api/v2/pkg/get-pkg"
|
||||
HpkgBaseUrl="https://eu.hpkg.haiku-os.org/haiku/master/$__HaikuArch/current"
|
||||
|
||||
# Build Haiku packages
|
||||
echo "Building Haiku"
|
||||
echo 'HAIKU_BUILD_PROFILE = "development-raw" ;' > UserProfileConfig
|
||||
"$__RootfsDir/tmp/buildtools/jam/jam0" -j"$JOBS" -q '<build>package' '<repository>Haiku'
|
||||
|
||||
BaseUrl="https://depot.haiku-os.org/__api/v2/pkg/get-pkg"
|
||||
|
||||
# Download additional packages
|
||||
echo "Downloading additional required packages"
|
||||
# Download Haiku packages
|
||||
echo "Downloading Haiku packages"
|
||||
read -ra array <<<"$__HaikuPackages"
|
||||
for package in "${array[@]}"; do
|
||||
echo "Downloading $package..."
|
||||
# API documented here: https://github.com/haiku/haikudepotserver/blob/master/haikudepotserver-api2/src/main/resources/api2/pkg.yaml#L60
|
||||
# The schema here: https://github.com/haiku/haikudepotserver/blob/master/haikudepotserver-api2/src/main/resources/api2/pkg.yaml#L598
|
||||
hpkgDownloadUrl="$(wget -qO- --post-data='{"name":"'"$package"'","repositorySourceCode":"haikuports_x86_64","versionType":"LATEST","naturalLanguageCode":"en"}' \
|
||||
--header='Content-Type:application/json' "$BaseUrl" | jq -r '.result.versions[].hpkgDownloadURL')"
|
||||
wget -P "$__RootfsDir/generated/download" "$hpkgDownloadUrl"
|
||||
hpkgDownloadUrl="$(wget -qO- --post-data='{"name":"'"$package"'","repositorySourceCode":"haikuports_'$__HaikuArch'","versionType":"LATEST","naturalLanguageCode":"en"}' \
|
||||
--header='Content-Type:application/json' "$DepotBaseUrl" | jq -r '.result.versions[].hpkgDownloadURL')"
|
||||
wget -P "$__RootfsDir/tmp/download" "$hpkgDownloadUrl"
|
||||
done
|
||||
for package in haiku haiku_devel; do
|
||||
echo "Downloading $package..."
|
||||
hpkgVersion="$(wget -qO- $HpkgBaseUrl | sed -n 's/^.*version: "\([^"]*\)".*$/\1/p')"
|
||||
wget -P "$__RootfsDir/tmp/download" "$HpkgBaseUrl/packages/$package-$hpkgVersion-1-$__HaikuArch.hpkg"
|
||||
done
|
||||
|
||||
# Setup the sysroot
|
||||
echo "Setting up sysroot and extracting needed packages"
|
||||
# Set up the sysroot
|
||||
echo "Setting up sysroot and extracting required packages"
|
||||
mkdir -p "$__RootfsDir/boot/system"
|
||||
for file in "$__RootfsDir/generated/objects/haiku/x86_64/packaging/packages/"*.hpkg; do
|
||||
"$__RootfsDir/generated/objects/linux/x86_64/release/tools/package/package" extract -C "$__RootfsDir/boot/system" "$file"
|
||||
done
|
||||
for file in "$__RootfsDir/generated/download/"*.hpkg; do
|
||||
"$__RootfsDir/generated/objects/linux/x86_64/release/tools/package/package" extract -C "$__RootfsDir/boot/system" "$file"
|
||||
for file in "$__RootfsDir/tmp/download/"*.hpkg; do
|
||||
echo "Extracting $file..."
|
||||
LD_LIBRARY_PATH="$__RootfsDir/tmp/bin" "$__RootfsDir/tmp/bin/package" extract -C "$__RootfsDir/boot/system" "$file"
|
||||
done
|
||||
|
||||
# Download buildtools
|
||||
echo "Downloading Haiku buildtools"
|
||||
wget -O "$__RootfsDir/tmp/download/buildtools.zip" $($__RootfsDir/tmp/script/fetch.sh --buildtools --arch=$__HaikuArch)
|
||||
unzip -o "$__RootfsDir/tmp/download/buildtools.zip" -d "$__RootfsDir"
|
||||
|
||||
# Cleaning up temporary files
|
||||
echo "Cleaning up temporary files"
|
||||
popd
|
||||
rm -rf "$__RootfsDir/tmp"
|
||||
for name in "$__RootfsDir/generated/"*; do
|
||||
if [[ "$name" =~ "cross-tools-" ]]; then
|
||||
: # Keep the cross-compiler
|
||||
else
|
||||
rm -rf "$name"
|
||||
fi
|
||||
done
|
||||
elif [[ -n "$__CodeName" ]]; then
|
||||
qemu-debootstrap $__Keyring --arch "$__UbuntuArch" "$__CodeName" "$__RootfsDir" "$__UbuntuRepo"
|
||||
|
||||
if [[ "$__SkipSigCheck" == "0" ]]; then
|
||||
__Keyring="$__Keyring --force-check-gpg"
|
||||
fi
|
||||
|
||||
debootstrap "--variant=minbase" $__Keyring --arch "$__UbuntuArch" "$__CodeName" "$__RootfsDir" "$__UbuntuRepo"
|
||||
cp "$__CrossDir/$__BuildArch/sources.list.$__CodeName" "$__RootfsDir/etc/apt/sources.list"
|
||||
chroot "$__RootfsDir" apt-get update
|
||||
chroot "$__RootfsDir" apt-get -f -y install
|
||||
|
@ -500,7 +640,7 @@ elif [[ -n "$__CodeName" ]]; then
|
|||
popd
|
||||
fi
|
||||
elif [[ "$__Tizen" == "tizen" ]]; then
|
||||
ROOTFS_DIR="$__RootfsDir" "$__CrossDir/$__BuildArch/tizen-build-rootfs.sh"
|
||||
ROOTFS_DIR="$__RootfsDir" "$__CrossDir/tizen-build-rootfs.sh" "$__BuildArch"
|
||||
else
|
||||
echo "Unsupported target platform."
|
||||
usage;
|
||||
|
|
|
@ -1,8 +1,34 @@
|
|||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
ARCH=$1
|
||||
LINK_ARCH=$ARCH
|
||||
|
||||
case "$ARCH" in
|
||||
arm)
|
||||
TIZEN_ARCH="armv7hl"
|
||||
;;
|
||||
armel)
|
||||
TIZEN_ARCH="armv7l"
|
||||
LINK_ARCH="arm"
|
||||
;;
|
||||
arm64)
|
||||
TIZEN_ARCH="aarch64"
|
||||
;;
|
||||
x86)
|
||||
TIZEN_ARCH="i686"
|
||||
;;
|
||||
x64)
|
||||
TIZEN_ARCH="x86_64"
|
||||
LINK_ARCH="x86"
|
||||
;;
|
||||
*)
|
||||
echo "Unsupported architecture for tizen: $ARCH"
|
||||
exit 1
|
||||
esac
|
||||
|
||||
__CrossDir=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
|
||||
__TIZEN_CROSSDIR="$__CrossDir/tizen"
|
||||
__TIZEN_CROSSDIR="$__CrossDir/${ARCH}/tizen"
|
||||
|
||||
if [[ -z "$ROOTFS_DIR" ]]; then
|
||||
echo "ROOTFS_DIR is not defined."
|
||||
|
@ -14,7 +40,7 @@ mkdir -p $TIZEN_TMP_DIR
|
|||
|
||||
# Download files
|
||||
echo ">>Start downloading files"
|
||||
VERBOSE=1 $__CrossDir/tizen-fetch.sh $TIZEN_TMP_DIR
|
||||
VERBOSE=1 $__CrossDir/tizen-fetch.sh $TIZEN_TMP_DIR $TIZEN_ARCH
|
||||
echo "<<Finish downloading files"
|
||||
|
||||
echo ">>Start constructing Tizen rootfs"
|
||||
|
@ -30,6 +56,6 @@ rm -rf $TIZEN_TMP_DIR
|
|||
|
||||
# Configure Tizen rootfs
|
||||
echo ">>Start configuring Tizen rootfs"
|
||||
ln -sfn asm-arm64 ./usr/include/asm
|
||||
ln -sfn asm-${LINK_ARCH} ./usr/include/asm
|
||||
patch -p1 < $__TIZEN_CROSSDIR/tizen.patch
|
||||
echo "<<Finish configuring Tizen rootfs"
|
172
eng/common/cross/tizen-fetch.sh
Normal file
172
eng/common/cross/tizen-fetch.sh
Normal file
|
@ -0,0 +1,172 @@
|
|||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
if [[ -z "${VERBOSE// }" ]] || [ "$VERBOSE" -ne "$VERBOSE" ] 2>/dev/null; then
|
||||
VERBOSE=0
|
||||
fi
|
||||
|
||||
Log()
|
||||
{
|
||||
if [ $VERBOSE -ge $1 ]; then
|
||||
echo ${@:2}
|
||||
fi
|
||||
}
|
||||
|
||||
Inform()
|
||||
{
|
||||
Log 1 -e "\x1B[0;34m$@\x1B[m"
|
||||
}
|
||||
|
||||
Debug()
|
||||
{
|
||||
Log 2 -e "\x1B[0;32m$@\x1B[m"
|
||||
}
|
||||
|
||||
Error()
|
||||
{
|
||||
>&2 Log 0 -e "\x1B[0;31m$@\x1B[m"
|
||||
}
|
||||
|
||||
Fetch()
|
||||
{
|
||||
URL=$1
|
||||
FILE=$2
|
||||
PROGRESS=$3
|
||||
if [ $VERBOSE -ge 1 ] && [ $PROGRESS ]; then
|
||||
CURL_OPT="--progress-bar"
|
||||
else
|
||||
CURL_OPT="--silent"
|
||||
fi
|
||||
curl $CURL_OPT $URL > $FILE
|
||||
}
|
||||
|
||||
hash curl 2> /dev/null || { Error "Require 'curl' Aborting."; exit 1; }
|
||||
hash xmllint 2> /dev/null || { Error "Require 'xmllint' Aborting."; exit 1; }
|
||||
hash sha256sum 2> /dev/null || { Error "Require 'sha256sum' Aborting."; exit 1; }
|
||||
|
||||
TMPDIR=$1
|
||||
if [ ! -d $TMPDIR ]; then
|
||||
TMPDIR=./tizen_tmp
|
||||
Debug "Create temporary directory : $TMPDIR"
|
||||
mkdir -p $TMPDIR
|
||||
fi
|
||||
|
||||
TIZEN_ARCH=$2
|
||||
|
||||
TIZEN_URL=http://download.tizen.org/snapshots/TIZEN/Tizen
|
||||
BUILD_XML=build.xml
|
||||
REPOMD_XML=repomd.xml
|
||||
PRIMARY_XML=primary.xml
|
||||
TARGET_URL="http://__not_initialized"
|
||||
|
||||
Xpath_get()
|
||||
{
|
||||
XPATH_RESULT=''
|
||||
XPATH=$1
|
||||
XML_FILE=$2
|
||||
RESULT=$(xmllint --xpath $XPATH $XML_FILE)
|
||||
if [[ -z ${RESULT// } ]]; then
|
||||
Error "Can not find target from $XML_FILE"
|
||||
Debug "Xpath = $XPATH"
|
||||
exit 1
|
||||
fi
|
||||
XPATH_RESULT=$RESULT
|
||||
}
|
||||
|
||||
fetch_tizen_pkgs_init()
|
||||
{
|
||||
TARGET=$1
|
||||
PROFILE=$2
|
||||
Debug "Initialize TARGET=$TARGET, PROFILE=$PROFILE"
|
||||
|
||||
TMP_PKG_DIR=$TMPDIR/tizen_${PROFILE}_pkgs
|
||||
if [ -d $TMP_PKG_DIR ]; then rm -rf $TMP_PKG_DIR; fi
|
||||
mkdir -p $TMP_PKG_DIR
|
||||
|
||||
PKG_URL=$TIZEN_URL/$PROFILE/latest
|
||||
|
||||
BUILD_XML_URL=$PKG_URL/$BUILD_XML
|
||||
TMP_BUILD=$TMP_PKG_DIR/$BUILD_XML
|
||||
TMP_REPOMD=$TMP_PKG_DIR/$REPOMD_XML
|
||||
TMP_PRIMARY=$TMP_PKG_DIR/$PRIMARY_XML
|
||||
TMP_PRIMARYGZ=${TMP_PRIMARY}.gz
|
||||
|
||||
Fetch $BUILD_XML_URL $TMP_BUILD
|
||||
|
||||
Debug "fetch $BUILD_XML_URL to $TMP_BUILD"
|
||||
|
||||
TARGET_XPATH="//build/buildtargets/buildtarget[@name=\"$TARGET\"]/repo[@type=\"binary\"]/text()"
|
||||
Xpath_get $TARGET_XPATH $TMP_BUILD
|
||||
TARGET_PATH=$XPATH_RESULT
|
||||
TARGET_URL=$PKG_URL/$TARGET_PATH
|
||||
|
||||
REPOMD_URL=$TARGET_URL/repodata/repomd.xml
|
||||
PRIMARY_XPATH='string(//*[local-name()="data"][@type="primary"]/*[local-name()="location"]/@href)'
|
||||
|
||||
Fetch $REPOMD_URL $TMP_REPOMD
|
||||
|
||||
Debug "fetch $REPOMD_URL to $TMP_REPOMD"
|
||||
|
||||
Xpath_get $PRIMARY_XPATH $TMP_REPOMD
|
||||
PRIMARY_XML_PATH=$XPATH_RESULT
|
||||
PRIMARY_URL=$TARGET_URL/$PRIMARY_XML_PATH
|
||||
|
||||
Fetch $PRIMARY_URL $TMP_PRIMARYGZ
|
||||
|
||||
Debug "fetch $PRIMARY_URL to $TMP_PRIMARYGZ"
|
||||
|
||||
gunzip $TMP_PRIMARYGZ
|
||||
|
||||
Debug "unzip $TMP_PRIMARYGZ to $TMP_PRIMARY"
|
||||
}
|
||||
|
||||
fetch_tizen_pkgs()
|
||||
{
|
||||
ARCH=$1
|
||||
PACKAGE_XPATH_TPL='string(//*[local-name()="metadata"]/*[local-name()="package"][*[local-name()="name"][text()="_PKG_"]][*[local-name()="arch"][text()="_ARCH_"]]/*[local-name()="location"]/@href)'
|
||||
|
||||
PACKAGE_CHECKSUM_XPATH_TPL='string(//*[local-name()="metadata"]/*[local-name()="package"][*[local-name()="name"][text()="_PKG_"]][*[local-name()="arch"][text()="_ARCH_"]]/*[local-name()="checksum"]/text())'
|
||||
|
||||
for pkg in ${@:2}
|
||||
do
|
||||
Inform "Fetching... $pkg"
|
||||
XPATH=${PACKAGE_XPATH_TPL/_PKG_/$pkg}
|
||||
XPATH=${XPATH/_ARCH_/$ARCH}
|
||||
Xpath_get $XPATH $TMP_PRIMARY
|
||||
PKG_PATH=$XPATH_RESULT
|
||||
|
||||
XPATH=${PACKAGE_CHECKSUM_XPATH_TPL/_PKG_/$pkg}
|
||||
XPATH=${XPATH/_ARCH_/$ARCH}
|
||||
Xpath_get $XPATH $TMP_PRIMARY
|
||||
CHECKSUM=$XPATH_RESULT
|
||||
|
||||
PKG_URL=$TARGET_URL/$PKG_PATH
|
||||
PKG_FILE=$(basename $PKG_PATH)
|
||||
PKG_PATH=$TMPDIR/$PKG_FILE
|
||||
|
||||
Debug "Download $PKG_URL to $PKG_PATH"
|
||||
Fetch $PKG_URL $PKG_PATH true
|
||||
|
||||
echo "$CHECKSUM $PKG_PATH" | sha256sum -c - > /dev/null
|
||||
if [ $? -ne 0 ]; then
|
||||
Error "Fail to fetch $PKG_URL to $PKG_PATH"
|
||||
Debug "Checksum = $CHECKSUM"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
Inform "Initialize ${TIZEN_ARCH} base"
|
||||
fetch_tizen_pkgs_init standard Tizen-Base
|
||||
Inform "fetch common packages"
|
||||
fetch_tizen_pkgs ${TIZEN_ARCH} gcc gcc-devel-static glibc glibc-devel libicu libicu-devel libatomic linux-glibc-devel keyutils keyutils-devel libkeyutils
|
||||
Inform "fetch coreclr packages"
|
||||
fetch_tizen_pkgs ${TIZEN_ARCH} lldb lldb-devel libgcc libstdc++ libstdc++-devel libunwind libunwind-devel lttng-ust-devel lttng-ust userspace-rcu-devel userspace-rcu
|
||||
Inform "fetch corefx packages"
|
||||
fetch_tizen_pkgs ${TIZEN_ARCH} libcom_err libcom_err-devel zlib zlib-devel libopenssl11 libopenssl1.1-devel krb5 krb5-devel
|
||||
|
||||
Inform "Initialize standard unified"
|
||||
fetch_tizen_pkgs_init standard Tizen-Unified
|
||||
Inform "fetch corefx packages"
|
||||
fetch_tizen_pkgs ${TIZEN_ARCH} gssdp gssdp-devel tizen-release
|
||||
|
|
@ -6,6 +6,7 @@ unset(FREEBSD)
|
|||
unset(ILLUMOS)
|
||||
unset(ANDROID)
|
||||
unset(TIZEN)
|
||||
unset(HAIKU)
|
||||
|
||||
set(TARGET_ARCH_NAME $ENV{TARGET_BUILD_ARCH})
|
||||
if(EXISTS ${CROSS_ROOTFS}/bin/freebsd-version)
|
||||
|
@ -16,6 +17,7 @@ elseif(EXISTS ${CROSS_ROOTFS}/usr/platform/i86pc)
|
|||
set(ILLUMOS 1)
|
||||
elseif(EXISTS ${CROSS_ROOTFS}/boot/system/develop/headers/config/HaikuConfig.h)
|
||||
set(CMAKE_SYSTEM_NAME Haiku)
|
||||
set(HAIKU 1)
|
||||
else()
|
||||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(LINUX 1)
|
||||
|
@ -67,16 +69,30 @@ elseif(TARGET_ARCH_NAME STREQUAL "armv6")
|
|||
endif()
|
||||
elseif(TARGET_ARCH_NAME STREQUAL "ppc64le")
|
||||
set(CMAKE_SYSTEM_PROCESSOR ppc64le)
|
||||
set(TOOLCHAIN "powerpc64le-linux-gnu")
|
||||
if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/powerpc64le-alpine-linux-musl)
|
||||
set(TOOLCHAIN "powerpc64le-alpine-linux-musl")
|
||||
else()
|
||||
set(TOOLCHAIN "powerpc64le-linux-gnu")
|
||||
endif()
|
||||
elseif(TARGET_ARCH_NAME STREQUAL "riscv64")
|
||||
set(CMAKE_SYSTEM_PROCESSOR riscv64)
|
||||
set(TOOLCHAIN "riscv64-linux-gnu")
|
||||
if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/riscv64-alpine-linux-musl)
|
||||
set(TOOLCHAIN "riscv64-alpine-linux-musl")
|
||||
else()
|
||||
set(TOOLCHAIN "riscv64-linux-gnu")
|
||||
endif()
|
||||
elseif(TARGET_ARCH_NAME STREQUAL "s390x")
|
||||
set(CMAKE_SYSTEM_PROCESSOR s390x)
|
||||
set(TOOLCHAIN "s390x-linux-gnu")
|
||||
if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/s390x-alpine-linux-musl)
|
||||
set(TOOLCHAIN "s390x-alpine-linux-musl")
|
||||
else()
|
||||
set(TOOLCHAIN "s390x-linux-gnu")
|
||||
endif()
|
||||
elseif(TARGET_ARCH_NAME STREQUAL "x64")
|
||||
set(CMAKE_SYSTEM_PROCESSOR x86_64)
|
||||
if(LINUX)
|
||||
if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/x86_64-alpine-linux-musl)
|
||||
set(TOOLCHAIN "x86_64-alpine-linux-musl")
|
||||
elseif(LINUX)
|
||||
set(TOOLCHAIN "x86_64-linux-gnu")
|
||||
if(TIZEN)
|
||||
set(TIZEN_TOOLCHAIN "x86_64-tizen-linux-gnu/9.2.0")
|
||||
|
@ -86,11 +102,15 @@ elseif(TARGET_ARCH_NAME STREQUAL "x64")
|
|||
elseif(ILLUMOS)
|
||||
set(TOOLCHAIN "x86_64-illumos")
|
||||
elseif(HAIKU)
|
||||
set(TOOLCHAIN "x64_64-unknown-haiku")
|
||||
set(TOOLCHAIN "x86_64-unknown-haiku")
|
||||
endif()
|
||||
elseif(TARGET_ARCH_NAME STREQUAL "x86")
|
||||
set(CMAKE_SYSTEM_PROCESSOR i686)
|
||||
set(TOOLCHAIN "i686-linux-gnu")
|
||||
if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/i586-alpine-linux-musl)
|
||||
set(TOOLCHAIN "i586-alpine-linux-musl")
|
||||
else()
|
||||
set(TOOLCHAIN "i686-linux-gnu")
|
||||
endif()
|
||||
if(TIZEN)
|
||||
set(TIZEN_TOOLCHAIN "i586-tizen-linux-gnu/9.2.0")
|
||||
endif()
|
||||
|
@ -120,6 +140,10 @@ if(TIZEN)
|
|||
include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/)
|
||||
include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/i586-tizen-linux-gnu)
|
||||
endif()
|
||||
if(TARGET_ARCH_NAME STREQUAL "x64")
|
||||
include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}/include/c++/)
|
||||
include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}/include/c++/x86_64-tizen-linux-gnu)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(ANDROID)
|
||||
|
@ -192,10 +216,8 @@ elseif(HAIKU)
|
|||
return()
|
||||
endif()
|
||||
|
||||
set(SEARCH_PATH "${CROSS_ROOTFS}/generated/cross-tools-x86_64/bin")
|
||||
|
||||
find_program(EXEC_LOCATION_${exec}
|
||||
PATHS ${SEARCH_PATH}
|
||||
PATHS "${CROSS_ROOTFS}/cross-tools-x86_64/bin"
|
||||
NAMES
|
||||
"${TOOLSET_PREFIX}${exec}${CLR_CMAKE_COMPILER_FILE_NAME_VERSION}"
|
||||
"${TOOLSET_PREFIX}${exec}")
|
||||
|
@ -248,7 +270,7 @@ if(TARGET_ARCH_NAME MATCHES "^(arm|armel)$")
|
|||
add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib")
|
||||
add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}")
|
||||
endif()
|
||||
elseif(TARGET_ARCH_NAME STREQUAL "arm64")
|
||||
elseif(TARGET_ARCH_NAME MATCHES "^(arm64|x64)$")
|
||||
if(TIZEN)
|
||||
add_toolchain_linker_flag("-B${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}")
|
||||
add_toolchain_linker_flag("-L${CROSS_ROOTFS}/lib64")
|
||||
|
@ -260,8 +282,11 @@ elseif(TARGET_ARCH_NAME STREQUAL "arm64")
|
|||
add_toolchain_linker_flag("-Wl,--rpath-link=${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}")
|
||||
endif()
|
||||
elseif(TARGET_ARCH_NAME STREQUAL "x86")
|
||||
if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/i586-alpine-linux-musl)
|
||||
add_toolchain_linker_flag("--target=${TOOLCHAIN}")
|
||||
add_toolchain_linker_flag("-Wl,--rpath-link=${CROSS_ROOTFS}/usr/lib/gcc/${TOOLCHAIN}")
|
||||
endif()
|
||||
add_toolchain_linker_flag(-m32)
|
||||
|
||||
if(TIZEN)
|
||||
add_toolchain_linker_flag("-B${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}")
|
||||
add_toolchain_linker_flag("-L${CROSS_ROOTFS}/lib")
|
||||
|
@ -271,11 +296,14 @@ elseif(TARGET_ARCH_NAME STREQUAL "x86")
|
|||
elseif(ILLUMOS)
|
||||
add_toolchain_linker_flag("-L${CROSS_ROOTFS}/lib/amd64")
|
||||
add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/amd64/lib")
|
||||
elseif(HAIKU)
|
||||
add_toolchain_linker_flag("-lnetwork")
|
||||
add_toolchain_linker_flag("-lroot")
|
||||
endif()
|
||||
|
||||
# Specify compile options
|
||||
|
||||
if((TARGET_ARCH_NAME MATCHES "^(arm|arm64|armel|armv6|ppc64le|riscv64|s390x)$" AND NOT ANDROID AND NOT FREEBSD) OR ILLUMOS OR HAIKU)
|
||||
if((TARGET_ARCH_NAME MATCHES "^(arm|arm64|armel|armv6|ppc64le|riscv64|s390x|x64|x86)$" AND NOT ANDROID AND NOT FREEBSD) OR ILLUMOS OR HAIKU)
|
||||
set(CMAKE_C_COMPILER_TARGET ${TOOLCHAIN})
|
||||
set(CMAKE_CXX_COMPILER_TARGET ${TOOLCHAIN})
|
||||
set(CMAKE_ASM_COMPILER_TARGET ${TOOLCHAIN})
|
||||
|
@ -294,10 +322,16 @@ if(TARGET_ARCH_NAME MATCHES "^(arm|armel)$")
|
|||
|
||||
add_definitions (-DCLR_ARM_FPU_CAPABILITY=${CLR_ARM_FPU_CAPABILITY})
|
||||
|
||||
# persist variables across multiple try_compile passes
|
||||
list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES CLR_ARM_FPU_TYPE CLR_ARM_FPU_CAPABILITY)
|
||||
|
||||
if(TARGET_ARCH_NAME STREQUAL "armel")
|
||||
add_compile_options(-mfloat-abi=softfp)
|
||||
endif()
|
||||
elseif(TARGET_ARCH_NAME STREQUAL "x86")
|
||||
if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/i586-alpine-linux-musl)
|
||||
add_compile_options(--target=${TOOLCHAIN})
|
||||
endif()
|
||||
add_compile_options(-m32)
|
||||
add_compile_options(-Wno-error=unused-command-line-argument)
|
||||
endif()
|
||||
|
|
4
eng/common/dotnet-install.sh
vendored
4
eng/common/dotnet-install.sh
vendored
|
@ -54,6 +54,10 @@ cpuname=$(uname -m)
|
|||
case $cpuname in
|
||||
arm64|aarch64)
|
||||
buildarch=arm64
|
||||
if [ "$(getconf LONG_BIT)" -lt 64 ]; then
|
||||
# This is 32-bit OS running on 64-bit CPU (for example Raspberry Pi OS)
|
||||
buildarch=arm
|
||||
fi
|
||||
;;
|
||||
loongarch64)
|
||||
buildarch=loongarch64
|
||||
|
|
|
@ -45,7 +45,7 @@ if (-not $wxlFiles) {
|
|||
}
|
||||
}
|
||||
|
||||
$macosHtmlEnFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory" | Where-Object { $_.FullName -Match "en\.lproj\\.+\.html" } # add installer HTML files
|
||||
$macosHtmlEnFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory" | Where-Object { $_.FullName -Match "en\.lproj\\.+\.html$" } # add installer HTML files
|
||||
$macosHtmlFiles = @()
|
||||
if ($macosHtmlEnFiles) {
|
||||
$macosHtmlEnFiles | ForEach-Object {
|
||||
|
@ -148,12 +148,17 @@ $locJson = @{
|
|||
}
|
||||
}
|
||||
$sourceFile = ($_.FullName | Resolve-Path -Relative)
|
||||
$lciFile = $sourceFile + ".lci"
|
||||
if ($continue) {
|
||||
return @{
|
||||
$result = @{
|
||||
SourceFile = $sourceFile
|
||||
CopyOption = "LangIDOnPath"
|
||||
OutputPath = $outputPath
|
||||
}
|
||||
if (Test-Path $lciFile -PathType Leaf) {
|
||||
$result["LciFile"] = $lciFile
|
||||
}
|
||||
return $result
|
||||
}
|
||||
}
|
||||
)
|
||||
|
|
|
@ -83,7 +83,8 @@ try {
|
|||
Select-Object -Expand 'native-tools' -ErrorAction SilentlyContinue
|
||||
if ($NativeTools) {
|
||||
if ($PathPromotion -eq $True) {
|
||||
if ($env:SYSTEM_TEAMPROJECT) { # check to see if we're in an Azure pipelines build
|
||||
$ArcadeToolsDirectory = "$env:SYSTEMDRIVE\arcade-tools"
|
||||
if (Test-Path $ArcadeToolsDirectory) { # if this directory exists, we should use native tools on machine
|
||||
$NativeTools.PSObject.Properties | ForEach-Object {
|
||||
$ToolName = $_.Name
|
||||
$ToolVersion = $_.Value
|
||||
|
@ -93,11 +94,6 @@ try {
|
|||
if ($ToolVersion -eq "latest") {
|
||||
$ToolVersion = ""
|
||||
}
|
||||
$ArcadeToolsDirectory = "C:\arcade-tools"
|
||||
if (-not (Test-Path $ArcadeToolsDirectory)) {
|
||||
Write-Error "Arcade tools directory '$ArcadeToolsDirectory' was not found; artifacts were not properly installed."
|
||||
exit 1
|
||||
}
|
||||
$ToolDirectories = (Get-ChildItem -Path "$ArcadeToolsDirectory" -Filter "$ToolName-$ToolVersion*" | Sort-Object -Descending)
|
||||
if ($ToolDirectories -eq $null) {
|
||||
Write-Error "Unable to find directory for $ToolName $ToolVersion; please make sure the tool is installed on this image."
|
||||
|
@ -125,6 +121,7 @@ try {
|
|||
|
||||
if ((Get-Command "$ToolName" -ErrorAction SilentlyContinue) -eq $null) {
|
||||
Write-PipelineTelemetryError -Category 'NativeToolsBootstrap' -Message "$ToolName not found on path. Please install $ToolName $ToolVersion before proceeding."
|
||||
Write-PipelineTelemetryError -Category 'NativeToolsBootstrap' -Message "If this is running on a build machine, the arcade-tools directory was not found, which means there's an error with the image."
|
||||
}
|
||||
}
|
||||
exit 0
|
||||
|
|
|
@ -1,30 +1,25 @@
|
|||
#!/usr/bin/env bash
|
||||
#!/bin/sh
|
||||
#
|
||||
# This file detects the C/C++ compiler and exports it to the CC/CXX environment variables
|
||||
#
|
||||
# NOTE: some scripts source this file and rely on stdout being empty, make sure to not output anything here!
|
||||
|
||||
if [[ "$#" -lt 3 ]]; then
|
||||
if [ -z "$build_arch" ] || [ -z "$compiler" ]; then
|
||||
echo "Usage..."
|
||||
echo "init-compiler.sh <script directory> <Architecture> <compiler>"
|
||||
echo "Specify the script directory."
|
||||
echo "build_arch=<ARCH> compiler=<NAME> init-compiler.sh"
|
||||
echo "Specify the target architecture."
|
||||
echo "Specify the name of compiler (clang or gcc)."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
nativescriptroot="$1"
|
||||
build_arch="$2"
|
||||
compiler="$3"
|
||||
|
||||
case "$compiler" in
|
||||
clang*|-clang*|--clang*)
|
||||
# clangx.y or clang-x.y
|
||||
version="$(echo "$compiler" | tr -d '[:alpha:]-=')"
|
||||
parts=(${version//./ })
|
||||
majorVersion="${parts[0]}"
|
||||
minorVersion="${parts[1]}"
|
||||
if [[ -z "$minorVersion" && "$majorVersion" -le 6 ]]; then
|
||||
majorVersion="${version%%.*}"
|
||||
[ -z "${version##*.*}" ] && minorVersion="${version#*.}"
|
||||
|
||||
if [ -z "$minorVersion" ] && [ -n "$majorVersion" ] && [ "$majorVersion" -le 6 ]; then
|
||||
minorVersion=0;
|
||||
fi
|
||||
compiler=clang
|
||||
|
@ -33,23 +28,20 @@ case "$compiler" in
|
|||
gcc*|-gcc*|--gcc*)
|
||||
# gccx.y or gcc-x.y
|
||||
version="$(echo "$compiler" | tr -d '[:alpha:]-=')"
|
||||
parts=(${version//./ })
|
||||
majorVersion="${parts[0]}"
|
||||
minorVersion="${parts[1]}"
|
||||
majorVersion="${version%%.*}"
|
||||
[ -z "${version##*.*}" ] && minorVersion="${version#*.}"
|
||||
compiler=gcc
|
||||
;;
|
||||
esac
|
||||
|
||||
cxxCompiler="$compiler++"
|
||||
|
||||
. "$nativescriptroot"/../pipeline-logging-functions.sh
|
||||
|
||||
# clear the existing CC and CXX from environment
|
||||
CC=
|
||||
CXX=
|
||||
LDFLAGS=
|
||||
|
||||
if [[ "$compiler" == "gcc" ]]; then cxxCompiler="g++"; fi
|
||||
if [ "$compiler" = "gcc" ]; then cxxCompiler="g++"; fi
|
||||
|
||||
check_version_exists() {
|
||||
desired_version=-1
|
||||
|
@ -66,40 +58,41 @@ check_version_exists() {
|
|||
echo "$desired_version"
|
||||
}
|
||||
|
||||
if [[ -z "$CLR_CC" ]]; then
|
||||
if [ -z "$CLR_CC" ]; then
|
||||
|
||||
# Set default versions
|
||||
if [[ -z "$majorVersion" ]]; then
|
||||
if [ -z "$majorVersion" ]; then
|
||||
# note: gcc (all versions) and clang versions higher than 6 do not have minor version in file name, if it is zero.
|
||||
if [[ "$compiler" == "clang" ]]; then versions=( 16 15 14 13 12 11 10 9 8 7 6.0 5.0 4.0 3.9 3.8 3.7 3.6 3.5 )
|
||||
elif [[ "$compiler" == "gcc" ]]; then versions=( 12 11 10 9 8 7 6 5 4.9 ); fi
|
||||
if [ "$compiler" = "clang" ]; then versions="16 15 14 13 12 11 10 9 8 7 6.0 5.0 4.0 3.9 3.8 3.7 3.6 3.5"
|
||||
elif [ "$compiler" = "gcc" ]; then versions="13 12 11 10 9 8 7 6 5 4.9"; fi
|
||||
|
||||
for version in "${versions[@]}"; do
|
||||
parts=(${version//./ })
|
||||
desired_version="$(check_version_exists "${parts[0]}" "${parts[1]}")"
|
||||
if [[ "$desired_version" != "-1" ]]; then majorVersion="${parts[0]}"; break; fi
|
||||
for version in $versions; do
|
||||
_major="${version%%.*}"
|
||||
[ -z "${version##*.*}" ] && _minor="${version#*.}"
|
||||
desired_version="$(check_version_exists "$_major" "$_minor")"
|
||||
if [ "$desired_version" != "-1" ]; then majorVersion="$_major"; break; fi
|
||||
done
|
||||
|
||||
if [[ -z "$majorVersion" ]]; then
|
||||
if [ -z "$majorVersion" ]; then
|
||||
if command -v "$compiler" > /dev/null; then
|
||||
if [[ "$(uname)" != "Darwin" ]]; then
|
||||
Write-PipelineTelemetryError -category "Build" -type "warning" "Specific version of $compiler not found, falling back to use the one in PATH."
|
||||
if [ "$(uname)" != "Darwin" ]; then
|
||||
echo "Warning: Specific version of $compiler not found, falling back to use the one in PATH."
|
||||
fi
|
||||
CC="$(command -v "$compiler")"
|
||||
CXX="$(command -v "$cxxCompiler")"
|
||||
else
|
||||
Write-PipelineTelemetryError -category "Build" "No usable version of $compiler found."
|
||||
echo "No usable version of $compiler found."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
if [[ "$compiler" == "clang" && "$majorVersion" -lt 5 ]]; then
|
||||
if [[ "$build_arch" == "arm" || "$build_arch" == "armel" ]]; then
|
||||
if [ "$compiler" = "clang" ] && [ "$majorVersion" -lt 5 ]; then
|
||||
if [ "$build_arch" = "arm" ] || [ "$build_arch" = "armel" ]; then
|
||||
if command -v "$compiler" > /dev/null; then
|
||||
Write-PipelineTelemetryError -category "Build" -type "warning" "Found clang version $majorVersion which is not supported on arm/armel architectures, falling back to use clang from PATH."
|
||||
echo "Warning: Found clang version $majorVersion which is not supported on arm/armel architectures, falling back to use clang from PATH."
|
||||
CC="$(command -v "$compiler")"
|
||||
CXX="$(command -v "$cxxCompiler")"
|
||||
else
|
||||
Write-PipelineTelemetryError -category "Build" "Found clang version $majorVersion which is not supported on arm/armel architectures, and there is no clang in PATH."
|
||||
echo "Found clang version $majorVersion which is not supported on arm/armel architectures, and there is no clang in PATH."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
@ -107,33 +100,33 @@ if [[ -z "$CLR_CC" ]]; then
|
|||
fi
|
||||
else
|
||||
desired_version="$(check_version_exists "$majorVersion" "$minorVersion")"
|
||||
if [[ "$desired_version" == "-1" ]]; then
|
||||
Write-PipelineTelemetryError -category "Build" "Could not find specific version of $compiler: $majorVersion $minorVersion."
|
||||
if [ "$desired_version" = "-1" ]; then
|
||||
echo "Could not find specific version of $compiler: $majorVersion $minorVersion."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -z "$CC" ]]; then
|
||||
if [ -z "$CC" ]; then
|
||||
CC="$(command -v "$compiler$desired_version")"
|
||||
CXX="$(command -v "$cxxCompiler$desired_version")"
|
||||
if [[ -z "$CXX" ]]; then CXX="$(command -v "$cxxCompiler")"; fi
|
||||
if [ -z "$CXX" ]; then CXX="$(command -v "$cxxCompiler")"; fi
|
||||
fi
|
||||
else
|
||||
if [[ ! -f "$CLR_CC" ]]; then
|
||||
Write-PipelineTelemetryError -category "Build" "CLR_CC is set but path '$CLR_CC' does not exist"
|
||||
if [ ! -f "$CLR_CC" ]; then
|
||||
echo "CLR_CC is set but path '$CLR_CC' does not exist"
|
||||
exit 1
|
||||
fi
|
||||
CC="$CLR_CC"
|
||||
CXX="$CLR_CXX"
|
||||
fi
|
||||
|
||||
if [[ -z "$CC" ]]; then
|
||||
Write-PipelineTelemetryError -category "Build" "Unable to find $compiler."
|
||||
if [ -z "$CC" ]; then
|
||||
echo "Unable to find $compiler."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Only lld version >= 9 can be considered stable
|
||||
if [[ "$compiler" == "clang" && "$majorVersion" -ge 9 ]]; then
|
||||
# Only lld version >= 9 can be considered stable. lld doesn't support s390x.
|
||||
if [ "$compiler" = "clang" ] && [ -n "$majorVersion" ] && [ "$majorVersion" -ge 9 ] && [ "$build_arch" != "s390x" ]; then
|
||||
if "$CC" -fuse-ld=lld -Wl,--version >/dev/null 2>&1; then
|
||||
LDFLAGS="-fuse-ld=lld"
|
||||
fi
|
||||
|
|
|
@ -64,7 +64,7 @@ try {
|
|||
$GlobalJson.tools | Add-Member -Name "vs" -Value (ConvertFrom-Json "{ `"version`": `"16.5`" }") -MemberType NoteProperty
|
||||
}
|
||||
if( -not ($GlobalJson.tools.PSObject.Properties.Name -match "xcopy-msbuild" )) {
|
||||
$GlobalJson.tools | Add-Member -Name "xcopy-msbuild" -Value "17.4.1" -MemberType NoteProperty
|
||||
$GlobalJson.tools | Add-Member -Name "xcopy-msbuild" -Value "17.6.0-2" -MemberType NoteProperty
|
||||
}
|
||||
if ($GlobalJson.tools."xcopy-msbuild".Trim() -ine "none") {
|
||||
$xcopyMSBuildToolsFolder = InitializeXCopyMSBuild $GlobalJson.tools."xcopy-msbuild" -install $true
|
||||
|
|
|
@ -7,6 +7,11 @@
|
|||
<clear />
|
||||
<add key="guardian" value="https://securitytools.pkgs.visualstudio.com/_packaging/Guardian/nuget/v3/index.json" />
|
||||
</packageSources>
|
||||
<packageSourceMapping>
|
||||
<packageSource key="guardian">
|
||||
<package pattern="microsoft.guardian.cli" />
|
||||
</packageSource>
|
||||
</packageSourceMapping>
|
||||
<disabledPackageSources>
|
||||
<clear />
|
||||
</disabledPackageSources>
|
||||
|
|
|
@ -17,7 +17,9 @@ Param(
|
|||
# Optional: Additional params to add to any tool using PoliCheck.
|
||||
[string[]] $PoliCheckAdditionalRunConfigParams,
|
||||
# Optional: Additional params to add to any tool using CodeQL/Semmle.
|
||||
[string[]] $CodeQLAdditionalRunConfigParams
|
||||
[string[]] $CodeQLAdditionalRunConfigParams,
|
||||
# Optional: Additional params to add to any tool using Binskim.
|
||||
[string[]] $BinskimAdditionalRunConfigParams
|
||||
)
|
||||
|
||||
$ErrorActionPreference = 'Stop'
|
||||
|
@ -69,22 +71,32 @@ try {
|
|||
$gdnConfigFile = Join-Path $gdnConfigPath "$toolConfigName-configure.gdnconfig"
|
||||
|
||||
# For some tools, add default and automatic args.
|
||||
if ($tool.Name -eq 'credscan') {
|
||||
if ($targetDirectory) {
|
||||
$tool.Args += "`"TargetDirectory < $TargetDirectory`""
|
||||
switch -Exact ($tool.Name) {
|
||||
'credscan' {
|
||||
if ($targetDirectory) {
|
||||
$tool.Args += "`"TargetDirectory < $TargetDirectory`""
|
||||
}
|
||||
$tool.Args += "`"OutputType < pre`""
|
||||
$tool.Args += $CrScanAdditionalRunConfigParams
|
||||
}
|
||||
$tool.Args += "`"OutputType < pre`""
|
||||
$tool.Args += $CrScanAdditionalRunConfigParams
|
||||
} elseif ($tool.Name -eq 'policheck') {
|
||||
if ($targetDirectory) {
|
||||
$tool.Args += "`"Target < $TargetDirectory`""
|
||||
'policheck' {
|
||||
if ($targetDirectory) {
|
||||
$tool.Args += "`"Target < $TargetDirectory`""
|
||||
}
|
||||
$tool.Args += $PoliCheckAdditionalRunConfigParams
|
||||
}
|
||||
$tool.Args += $PoliCheckAdditionalRunConfigParams
|
||||
} elseif ($tool.Name -eq 'semmle' -or $tool.Name -eq 'codeql') {
|
||||
if ($targetDirectory) {
|
||||
$tool.Args += "`"SourceCodeDirectory < $TargetDirectory`""
|
||||
{$_ -in 'semmle', 'codeql'} {
|
||||
if ($targetDirectory) {
|
||||
$tool.Args += "`"SourceCodeDirectory < $TargetDirectory`""
|
||||
}
|
||||
$tool.Args += $CodeQLAdditionalRunConfigParams
|
||||
}
|
||||
'binskim' {
|
||||
if ($targetDirectory) {
|
||||
$tool.Args += "`"Target < $TargetDirectory`""
|
||||
}
|
||||
$tool.Args += $BinskimAdditionalRunConfigParams
|
||||
}
|
||||
$tool.Args += $CodeQLAdditionalRunConfigParams
|
||||
}
|
||||
|
||||
# Create variable pointing to the args array directly so we can use splat syntax later.
|
||||
|
|
|
@ -35,6 +35,7 @@ Param(
|
|||
[string[]] $CrScanAdditionalRunConfigParams, # Optional: Additional Params to custom build a CredScan run config in the format @("xyz:abc","sdf:1")
|
||||
[string[]] $PoliCheckAdditionalRunConfigParams, # Optional: Additional Params to custom build a Policheck run config in the format @("xyz:abc","sdf:1")
|
||||
[string[]] $CodeQLAdditionalRunConfigParams, # Optional: Additional Params to custom build a Semmle/CodeQL run config in the format @("xyz < abc","sdf < 1")
|
||||
[string[]] $BinskimAdditionalRunConfigParams, # Optional: Additional Params to custom build a Binskim run config in the format @("xyz < abc","sdf < 1")
|
||||
[bool] $BreakOnFailure=$False # Optional: Fail the build if there were errors during the run
|
||||
)
|
||||
|
||||
|
@ -107,7 +108,8 @@ try {
|
|||
-GuardianLoggerLevel $GuardianLoggerLevel `
|
||||
-CrScanAdditionalRunConfigParams $CrScanAdditionalRunConfigParams `
|
||||
-PoliCheckAdditionalRunConfigParams $PoliCheckAdditionalRunConfigParams `
|
||||
-CodeQLAdditionalRunConfigParams $CodeQLAdditionalRunConfigParams
|
||||
-CodeQLAdditionalRunConfigParams $CodeQLAdditionalRunConfigParams `
|
||||
-BinskimAdditionalRunConfigParams $BinskimAdditionalRunConfigParams
|
||||
if ($BreakOnFailure) {
|
||||
Exit-IfNZEC "Sdl"
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
|
||||
function Install-Gdn {
|
||||
param(
|
||||
[Parameter(Mandatory=$true)]
|
||||
[string]$Path,
|
||||
|
||||
# If omitted, install the latest version of Guardian, otherwise install that specific version.
|
||||
|
|
|
@ -34,7 +34,7 @@ jobs:
|
|||
- job: Run_SDL
|
||||
dependsOn: ${{ parameters.dependsOn }}
|
||||
displayName: Run SDL tool
|
||||
condition: eq( ${{ parameters.enable }}, 'true')
|
||||
condition: and(succeededOrFailed(), eq( ${{ parameters.enable }}, 'true'))
|
||||
variables:
|
||||
- group: DotNet-VSTS-Bot
|
||||
- name: AzDOProjectName
|
||||
|
@ -60,7 +60,9 @@ jobs:
|
|||
- checkout: self
|
||||
clean: true
|
||||
|
||||
- template: /eng/common/templates/post-build/setup-maestro-vars.yml
|
||||
# If the template caller didn't provide an AzDO parameter, set them all up as Maestro vars.
|
||||
- ${{ if not(and(parameters.AzDOProjectName, parameters.AzDOPipelineId, parameters.AzDOBuildId)) }}:
|
||||
- template: /eng/common/templates/post-build/setup-maestro-vars.yml
|
||||
|
||||
- ${{ if ne(parameters.downloadArtifacts, 'false')}}:
|
||||
- ${{ if ne(parameters.artifactNames, '') }}:
|
||||
|
|
|
@ -24,7 +24,9 @@ parameters:
|
|||
enablePublishBuildAssets: false
|
||||
enablePublishTestResults: false
|
||||
enablePublishUsingPipelines: false
|
||||
enableBuildRetry: false
|
||||
disableComponentGovernance: ''
|
||||
componentGovernanceIgnoreDirectories: ''
|
||||
mergeTestResults: false
|
||||
testRunTitle: ''
|
||||
testResultsFormat: ''
|
||||
|
@ -90,10 +92,20 @@ jobs:
|
|||
- ${{ if ne(variable.group, '') }}:
|
||||
- group: ${{ variable.group }}
|
||||
|
||||
# handle template variable syntax
|
||||
# example:
|
||||
# - template: path/to/template.yml
|
||||
# parameters:
|
||||
# [key]: [value]
|
||||
- ${{ if ne(variable.template, '') }}:
|
||||
- template: ${{ variable.template }}
|
||||
${{ if ne(variable.parameters, '') }}:
|
||||
parameters: ${{ variable.parameters }}
|
||||
|
||||
# handle key-value variable syntax.
|
||||
# example:
|
||||
# - [key]: [value]
|
||||
- ${{ if and(eq(variable.name, ''), eq(variable.group, '')) }}:
|
||||
- ${{ if and(eq(variable.name, ''), eq(variable.group, ''), eq(variable.template, '')) }}:
|
||||
- ${{ each pair in variable }}:
|
||||
- name: ${{ pair.key }}
|
||||
value: ${{ pair.value }}
|
||||
|
@ -126,7 +138,7 @@ jobs:
|
|||
- ${{ if and(eq(parameters.runAsPublic, 'false'), eq(variables['System.TeamProject'], 'internal')) }}:
|
||||
- task: NuGetAuthenticate@0
|
||||
|
||||
- ${{ if or(eq(parameters.artifacts.download, 'true'), ne(parameters.artifacts.download, '')) }}:
|
||||
- ${{ if and(ne(parameters.artifacts.download, 'false'), ne(parameters.artifacts.download, '')) }}:
|
||||
- task: DownloadPipelineArtifact@2
|
||||
inputs:
|
||||
buildType: current
|
||||
|
@ -144,6 +156,7 @@ jobs:
|
|||
languages: ${{ coalesce(parameters.richCodeNavigationLanguage, 'csharp') }}
|
||||
environment: ${{ coalesce(parameters.richCodeNavigationEnvironment, 'production') }}
|
||||
richNavLogOutputDirectory: $(Build.SourcesDirectory)/artifacts/bin
|
||||
uploadRichNavArtifacts: ${{ coalesce(parameters.richCodeNavigationUploadArtifacts, false) }}
|
||||
continueOnError: true
|
||||
|
||||
- template: /eng/common/templates/steps/component-governance.yml
|
||||
|
@ -155,6 +168,7 @@ jobs:
|
|||
disableComponentGovernance: true
|
||||
${{ else }}:
|
||||
disableComponentGovernance: ${{ parameters.disableComponentGovernance }}
|
||||
componentGovernanceIgnoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }}
|
||||
|
||||
- ${{ if eq(parameters.enableMicrobuild, 'true') }}:
|
||||
- ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
|
||||
|
@ -166,7 +180,7 @@ jobs:
|
|||
TeamName: $(_TeamName)
|
||||
|
||||
- ${{ if ne(parameters.artifacts.publish, '') }}:
|
||||
- ${{ if or(eq(parameters.artifacts.publish.artifacts, 'true'), ne(parameters.artifacts.publish.artifacts, '')) }}:
|
||||
- ${{ if and(ne(parameters.artifacts.publish.artifacts, 'false'), ne(parameters.artifacts.publish.artifacts, '')) }}:
|
||||
- task: CopyFiles@2
|
||||
displayName: Gather binaries for publish to artifacts
|
||||
inputs:
|
||||
|
@ -187,30 +201,12 @@ jobs:
|
|||
ArtifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }}
|
||||
continueOnError: true
|
||||
condition: always()
|
||||
- ${{ if or(eq(parameters.artifacts.publish.logs, 'true'), ne(parameters.artifacts.publish.logs, '')) }}:
|
||||
- ${{ if and(ne(parameters.artifacts.publish.logs, 'false'), ne(parameters.artifacts.publish.logs, '')) }}:
|
||||
- publish: artifacts/log
|
||||
artifact: ${{ coalesce(parameters.artifacts.publish.logs.name, 'Logs_Build_$(Agent.Os)_$(_BuildConfig)') }}
|
||||
displayName: Publish logs
|
||||
continueOnError: true
|
||||
condition: always()
|
||||
- ${{ if or(eq(parameters.artifacts.publish.manifests, 'true'), ne(parameters.artifacts.publish.manifests, '')) }}:
|
||||
- ${{ if and(ne(parameters.enablePublishUsingPipelines, 'true'), eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
|
||||
- task: CopyFiles@2
|
||||
displayName: Gather Asset Manifests
|
||||
inputs:
|
||||
SourceFolder: '$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)/AssetManifest'
|
||||
TargetFolder: '$(Build.ArtifactStagingDirectory)/AssetManifests'
|
||||
continueOnError: ${{ parameters.continueOnError }}
|
||||
condition: and(succeeded(), eq(variables['_DotNetPublishToBlobFeed'], 'true'))
|
||||
|
||||
- task: PublishBuildArtifacts@1
|
||||
displayName: Push Asset Manifests
|
||||
inputs:
|
||||
PathtoPublish: '$(Build.ArtifactStagingDirectory)/AssetManifests'
|
||||
PublishLocation: Container
|
||||
ArtifactName: AssetManifests
|
||||
continueOnError: ${{ parameters.continueOnError }}
|
||||
condition: and(succeeded(), eq(variables['_DotNetPublishToBlobFeed'], 'true'))
|
||||
|
||||
- ${{ if ne(parameters.enablePublishBuildArtifacts, 'false') }}:
|
||||
- task: PublishBuildArtifacts@1
|
||||
|
@ -244,28 +240,16 @@ jobs:
|
|||
mergeTestResults: ${{ parameters.mergeTestResults }}
|
||||
continueOnError: true
|
||||
condition: always()
|
||||
|
||||
- ${{ if and(eq(parameters.enablePublishBuildAssets, true), ne(parameters.enablePublishUsingPipelines, 'true'), eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
|
||||
- task: CopyFiles@2
|
||||
displayName: Gather Asset Manifests
|
||||
inputs:
|
||||
SourceFolder: '$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)/AssetManifest'
|
||||
TargetFolder: '$(Build.StagingDirectory)/AssetManifests'
|
||||
continueOnError: ${{ parameters.continueOnError }}
|
||||
condition: and(succeeded(), eq(variables['_DotNetPublishToBlobFeed'], 'true'))
|
||||
|
||||
- task: PublishBuildArtifacts@1
|
||||
displayName: Push Asset Manifests
|
||||
inputs:
|
||||
PathtoPublish: '$(Build.StagingDirectory)/AssetManifests'
|
||||
PublishLocation: Container
|
||||
ArtifactName: AssetManifests
|
||||
continueOnError: ${{ parameters.continueOnError }}
|
||||
condition: and(succeeded(), eq(variables['_DotNetPublishToBlobFeed'], 'true'))
|
||||
|
||||
- ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(parameters.enableSbom, 'true')) }}:
|
||||
- template: /eng/common/templates/steps/generate-sbom.yml
|
||||
parameters:
|
||||
PackageVersion: ${{ parameters.packageVersion}}
|
||||
BuildDropPath: ${{ parameters.buildDropPath }}
|
||||
IgnoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }}
|
||||
|
||||
- ${{ if eq(parameters.enableBuildRetry, 'true') }}:
|
||||
- publish: $(Build.SourcesDirectory)\eng\common\BuildConfiguration
|
||||
artifact: BuildConfiguration
|
||||
displayName: Publish build retry configuration
|
||||
continueOnError: true
|
||||
|
|
|
@ -74,12 +74,6 @@ jobs:
|
|||
|
||||
- task: NuGetAuthenticate@0
|
||||
|
||||
- task: PowerShell@2
|
||||
displayName: Enable cross-org NuGet feed authentication
|
||||
inputs:
|
||||
filePath: $(Build.SourcesDirectory)/eng/common/enable-cross-org-publishing.ps1
|
||||
arguments: -token $(dn-bot-all-orgs-artifact-feeds-rw)
|
||||
|
||||
- task: PowerShell@2
|
||||
displayName: Publish Build Assets
|
||||
inputs:
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
parameters:
|
||||
runAsPublic: false
|
||||
sourceIndexPackageVersion: 1.0.1-20220804.1
|
||||
sourceIndexPackageVersion: 1.0.1-20230228.2
|
||||
sourceIndexPackageSource: https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json
|
||||
sourceIndexBuildCommand: powershell -NoLogo -NoProfile -ExecutionPolicy Bypass -Command "eng/common/build.ps1 -restore -build -binarylog -ci"
|
||||
preSteps: []
|
||||
|
@ -40,10 +40,10 @@ jobs:
|
|||
- ${{ preStep }}
|
||||
|
||||
- task: UseDotNet@2
|
||||
displayName: Use .NET Core sdk 3.1
|
||||
displayName: Use .NET Core SDK 6
|
||||
inputs:
|
||||
packageType: sdk
|
||||
version: 3.1.x
|
||||
version: 6.0.x
|
||||
installationPath: $(Agent.TempDirectory)/dotnet
|
||||
workingDirectory: $(Agent.TempDirectory)
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ parameters:
|
|||
# This is the default platform provided by Arcade, intended for use by a managed-only repo.
|
||||
defaultManagedPlatform:
|
||||
name: 'Managed'
|
||||
container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream8-20220809204800-17a4aab'
|
||||
container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream8'
|
||||
|
||||
# Defines the platforms on which to run build jobs. One job is created for each platform, and the
|
||||
# object in this array is sent to the job template as 'platform'. If no platforms are specified,
|
||||
|
|
|
@ -1,8 +1,4 @@
|
|||
variables:
|
||||
- group: AzureDevOps-Artifact-Feeds-Pats
|
||||
- group: DotNet-Blob-Feed
|
||||
- group: DotNet-DotNetCli-Storage
|
||||
- group: DotNet-MSRC-Storage
|
||||
- group: Publish-Build-Assets
|
||||
|
||||
# Whether the build is internal or not
|
||||
|
|
|
@ -99,7 +99,7 @@ stages:
|
|||
jobs:
|
||||
- job:
|
||||
displayName: NuGet Validation
|
||||
condition: eq( ${{ parameters.enableNugetValidation }}, 'true')
|
||||
condition: and(succeededOrFailed(), eq( ${{ parameters.enableNugetValidation }}, 'true'))
|
||||
pool:
|
||||
# We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com)
|
||||
${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
|
||||
|
@ -172,12 +172,6 @@ stages:
|
|||
- task: NuGetAuthenticate@0
|
||||
displayName: 'Authenticate to AzDO Feeds'
|
||||
|
||||
- task: PowerShell@2
|
||||
displayName: Enable cross-org publishing
|
||||
inputs:
|
||||
filePath: eng\common\enable-cross-org-publishing.ps1
|
||||
arguments: -token $(dn-bot-dnceng-artifact-feeds-rw)
|
||||
|
||||
# Signing validation will optionally work with the buildmanifest file which is downloaded from
|
||||
# Azure DevOps above.
|
||||
- task: PowerShell@2
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
parameters:
|
||||
disableComponentGovernance: false
|
||||
componentGovernanceIgnoreDirectories: ''
|
||||
|
||||
steps:
|
||||
- ${{ if eq(parameters.disableComponentGovernance, 'true') }}:
|
||||
|
@ -7,4 +8,6 @@ steps:
|
|||
displayName: Set skipComponentGovernanceDetection variable
|
||||
- ${{ if ne(parameters.disableComponentGovernance, 'true') }}:
|
||||
- task: ComponentGovernanceComponentDetection@0
|
||||
continueOnError: true
|
||||
continueOnError: true
|
||||
inputs:
|
||||
ignoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }}
|
|
@ -17,21 +17,23 @@ steps:
|
|||
|
||||
- ${{ if ne(parameters.overrideGuardianVersion, '') }}:
|
||||
- pwsh: |
|
||||
. $(Build.SourcesDirectory)\eng\common\sdl\sdl.ps1
|
||||
Set-Location -Path $(Build.SourcesDirectory)\eng\common\sdl
|
||||
. .\sdl.ps1
|
||||
$guardianCliLocation = Install-Gdn -Path $(Build.SourcesDirectory)\.artifacts -Version ${{ parameters.overrideGuardianVersion }}
|
||||
Write-Host "##vso[task.setvariable variable=GuardianCliLocation]$guardianCliLocation"
|
||||
displayName: Install Guardian (Overridden)
|
||||
|
||||
- ${{ if eq(parameters.overrideGuardianVersion, '') }}:
|
||||
- pwsh: |
|
||||
. $(Build.SourcesDirectory)\eng\common\sdl\sdl.ps1
|
||||
Set-Location -Path $(Build.SourcesDirectory)\eng\common\sdl
|
||||
. .\sdl.ps1
|
||||
$guardianCliLocation = Install-Gdn -Path $(Build.SourcesDirectory)\.artifacts
|
||||
Write-Host "##vso[task.setvariable variable=GuardianCliLocation]$guardianCliLocation"
|
||||
displayName: Install Guardian
|
||||
|
||||
- ${{ if ne(parameters.overrideParameters, '') }}:
|
||||
- powershell: ${{ parameters.executeAllSdlToolsScript }} ${{ parameters.overrideParameters }}
|
||||
displayName: Execute SDL
|
||||
displayName: Execute SDL (Overridden)
|
||||
continueOnError: ${{ parameters.sdlContinueOnError }}
|
||||
condition: ${{ parameters.condition }}
|
||||
|
||||
|
|
|
@ -2,12 +2,14 @@
|
|||
# PackageName - The name of the package this SBOM represents.
|
||||
# PackageVersion - The version of the package this SBOM represents.
|
||||
# ManifestDirPath - The path of the directory where the generated manifest files will be placed
|
||||
# IgnoreDirectories - Directories to ignore for SBOM generation. This will be passed through to the CG component detector.
|
||||
|
||||
parameters:
|
||||
PackageVersion: 7.0.0
|
||||
BuildDropPath: '$(Build.SourcesDirectory)/artifacts'
|
||||
PackageName: '.NET'
|
||||
ManifestDirPath: $(Build.ArtifactStagingDirectory)/sbom
|
||||
IgnoreDirectories: ''
|
||||
sbomContinueOnError: true
|
||||
|
||||
steps:
|
||||
|
@ -34,6 +36,8 @@ steps:
|
|||
BuildDropPath: ${{ parameters.buildDropPath }}
|
||||
PackageVersion: ${{ parameters.packageVersion }}
|
||||
ManifestDirPath: ${{ parameters.manifestDirPath }}
|
||||
${{ if ne(parameters.IgnoreDirectories, '') }}:
|
||||
AdditionalComponentDetectorArgs: '--IgnoreDirectories ${{ parameters.IgnoreDirectories }}'
|
||||
|
||||
- task: PublishPipelineArtifact@1
|
||||
displayName: Publish SBOM manifest
|
||||
|
|
|
@ -68,11 +68,21 @@ steps:
|
|||
runtimeOsArgs='/p:RuntimeOS=${{ parameters.platform.runtimeOS }}'
|
||||
fi
|
||||
|
||||
baseOsArgs=
|
||||
if [ '${{ parameters.platform.baseOS }}' != '' ]; then
|
||||
baseOsArgs='/p:BaseOS=${{ parameters.platform.baseOS }}'
|
||||
fi
|
||||
|
||||
publishArgs=
|
||||
if [ '${{ parameters.platform.skipPublishValidation }}' != 'true' ]; then
|
||||
publishArgs='--publish'
|
||||
fi
|
||||
|
||||
assetManifestFileName=SourceBuild_RidSpecific.xml
|
||||
if [ '${{ parameters.platform.name }}' != '' ]; then
|
||||
assetManifestFileName=SourceBuild_${{ parameters.platform.name }}.xml
|
||||
fi
|
||||
|
||||
${{ coalesce(parameters.platform.buildScript, './build.sh') }} --ci \
|
||||
--configuration $buildConfig \
|
||||
--restore --build --pack $publishArgs -bl \
|
||||
|
@ -81,8 +91,10 @@ steps:
|
|||
$internalRestoreArgs \
|
||||
$targetRidArgs \
|
||||
$runtimeOsArgs \
|
||||
$baseOsArgs \
|
||||
/p:SourceBuildNonPortable=${{ parameters.platform.nonPortable }} \
|
||||
/p:ArcadeBuildFromSource=true
|
||||
/p:ArcadeBuildFromSource=true \
|
||||
/p:AssetManifestFileName=$assetManifestFileName
|
||||
displayName: Build
|
||||
|
||||
# Upload build logs for diagnosis.
|
||||
|
|
|
@ -1,17 +1,17 @@
|
|||
# Select a pool provider based off branch name. Anything with branch name containing 'release' must go into an -Svc pool,
|
||||
# Select a pool provider based off branch name. Anything with branch name containing 'release' must go into an -Svc pool,
|
||||
# otherwise it should go into the "normal" pools. This separates out the queueing and billing of released branches.
|
||||
|
||||
# Motivation:
|
||||
# Once a given branch of a repository's output has been officially "shipped" once, it is then considered to be COGS
|
||||
# (Cost of goods sold) and should be moved to a servicing pool provider. This allows both separation of queueing
|
||||
# (allowing release builds and main PR builds to not intefere with each other) and billing (required for COGS)
|
||||
# (allowing release builds and main PR builds to not intefere with each other) and billing (required for COGS.
|
||||
# Additionally, the pool provider name itself may be subject to change when the .NET Core Engineering Services
|
||||
# team needs to move resources around and create new and potentially differently-named pools. Using this template
|
||||
# file from an Arcade-ified repo helps guard against both having to update one's release/* branches and renaming.
|
||||
|
||||
# How to use:
|
||||
# This yaml assumes your shipped product branches use the naming convention "release/..." (which many do).
|
||||
# If we find alternate naming conventions in broad usage these can be added to the condition below.
|
||||
# If we find alternate naming conventions in broad usage it can be added to the condition below.
|
||||
#
|
||||
# First, import the template in an arcade-ified repo to pick up the variables, e.g.:
|
||||
#
|
||||
|
|
|
@ -287,6 +287,25 @@ function InstallDotNet([string] $dotnetRoot,
|
|||
[string] $runtimeSourceFeedKey = '',
|
||||
[switch] $noPath) {
|
||||
|
||||
$dotnetVersionLabel = "'sdk v$version'"
|
||||
|
||||
if ($runtime -ne '' -and $runtime -ne 'sdk') {
|
||||
$runtimePath = $dotnetRoot
|
||||
$runtimePath = $runtimePath + "\shared"
|
||||
if ($runtime -eq "dotnet") { $runtimePath = $runtimePath + "\Microsoft.NETCore.App" }
|
||||
if ($runtime -eq "aspnetcore") { $runtimePath = $runtimePath + "\Microsoft.AspNetCore.App" }
|
||||
if ($runtime -eq "windowsdesktop") { $runtimePath = $runtimePath + "\Microsoft.WindowsDesktop.App" }
|
||||
$runtimePath = $runtimePath + "\" + $version
|
||||
|
||||
$dotnetVersionLabel = "runtime toolset '$runtime/$architecture v$version'"
|
||||
|
||||
if (Test-Path $runtimePath) {
|
||||
Write-Host " Runtime toolset '$runtime/$architecture v$version' already installed."
|
||||
$installSuccess = $true
|
||||
Exit
|
||||
}
|
||||
}
|
||||
|
||||
$installScript = GetDotNetInstallScript $dotnetRoot
|
||||
$installParameters = @{
|
||||
Version = $version
|
||||
|
@ -323,18 +342,18 @@ function InstallDotNet([string] $dotnetRoot,
|
|||
} else {
|
||||
$location = "public location";
|
||||
}
|
||||
Write-Host "Attempting to install dotnet from $location."
|
||||
Write-Host " Attempting to install $dotnetVersionLabel from $location."
|
||||
try {
|
||||
& $installScript @variation
|
||||
$installSuccess = $true
|
||||
break
|
||||
}
|
||||
catch {
|
||||
Write-Host "Failed to install dotnet from $location."
|
||||
Write-Host " Failed to install $dotnetVersionLabel from $location."
|
||||
}
|
||||
}
|
||||
if (-not $installSuccess) {
|
||||
Write-PipelineTelemetryError -Category 'InitializeToolset' -Message "Failed to install dotnet from any of the specified locations."
|
||||
Write-PipelineTelemetryError -Category 'InitializeToolset' -Message "Failed to install $dotnetVersionLabel from any of the specified locations."
|
||||
ExitWithExitCode 1
|
||||
}
|
||||
}
|
||||
|
@ -360,13 +379,13 @@ function InitializeVisualStudioMSBuild([bool]$install, [object]$vsRequirements =
|
|||
}
|
||||
|
||||
# Minimum VS version to require.
|
||||
$vsMinVersionReqdStr = '16.8'
|
||||
$vsMinVersionReqdStr = '17.6'
|
||||
$vsMinVersionReqd = [Version]::new($vsMinVersionReqdStr)
|
||||
|
||||
# If the version of msbuild is going to be xcopied,
|
||||
# use this version. Version matches a package here:
|
||||
# https://dev.azure.com/dnceng/public/_packaging?_a=package&feed=dotnet-eng&package=RoslynTools.MSBuild&protocolType=NuGet&version=17.4.1&view=overview
|
||||
$defaultXCopyMSBuildVersion = '17.4.1'
|
||||
# https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet-eng/NuGet/RoslynTools.MSBuild/versions/17.6.0-2
|
||||
$defaultXCopyMSBuildVersion = '17.6.0-2'
|
||||
|
||||
if (!$vsRequirements) {
|
||||
if (Get-Member -InputObject $GlobalJson.tools -Name 'vs') {
|
||||
|
@ -399,7 +418,8 @@ function InitializeVisualStudioMSBuild([bool]$install, [object]$vsRequirements =
|
|||
# Locate Visual Studio installation or download x-copy msbuild.
|
||||
$vsInfo = LocateVisualStudio $vsRequirements
|
||||
if ($vsInfo -ne $null) {
|
||||
$vsInstallDir = $vsInfo.installationPath
|
||||
# Ensure vsInstallDir has a trailing slash
|
||||
$vsInstallDir = Join-Path $vsInfo.installationPath "\"
|
||||
$vsMajorVersion = $vsInfo.installationVersion.Split('.')[0]
|
||||
|
||||
InitializeVisualStudioEnvironmentVariables $vsInstallDir $vsMajorVersion
|
||||
|
@ -413,6 +433,7 @@ function InitializeVisualStudioMSBuild([bool]$install, [object]$vsRequirements =
|
|||
if($vsMinVersion -lt $vsMinVersionReqd){
|
||||
Write-Host "Using xcopy-msbuild version of $defaultXCopyMSBuildVersion since VS version $vsMinVersionStr provided in global.json is not compatible"
|
||||
$xcopyMSBuildVersion = $defaultXCopyMSBuildVersion
|
||||
$vsMajorVersion = $xcopyMSBuildVersion.Split('.')[0]
|
||||
}
|
||||
else{
|
||||
# If the VS version IS compatible, look for an xcopy msbuild package
|
||||
|
@ -580,7 +601,7 @@ function InitializeBuildTool() {
|
|||
ExitWithExitCode 1
|
||||
}
|
||||
$dotnetPath = Join-Path $dotnetRoot (GetExecutableFileName 'dotnet')
|
||||
$buildTool = @{ Path = $dotnetPath; Command = 'msbuild'; Tool = 'dotnet'; Framework = 'net7.0' }
|
||||
$buildTool = @{ Path = $dotnetPath; Command = 'msbuild'; Tool = 'dotnet'; Framework = 'net8.0' }
|
||||
} elseif ($msbuildEngine -eq "vs") {
|
||||
try {
|
||||
$msbuildPath = InitializeVisualStudioMSBuild -install:$restore
|
||||
|
@ -742,6 +763,8 @@ function MSBuild() {
|
|||
(Join-Path $basePath (Join-Path netcoreapp2.1 'Microsoft.DotNet.Arcade.Sdk.dll'))
|
||||
(Join-Path $basePath (Join-Path netcoreapp3.1 'Microsoft.DotNet.ArcadeLogging.dll')),
|
||||
(Join-Path $basePath (Join-Path netcoreapp3.1 'Microsoft.DotNet.Arcade.Sdk.dll'))
|
||||
(Join-Path $basePath (Join-Path net7.0 'Microsoft.DotNet.ArcadeLogging.dll')),
|
||||
(Join-Path $basePath (Join-Path net7.0 'Microsoft.DotNet.Arcade.Sdk.dll'))
|
||||
)
|
||||
$selectedPath = $null
|
||||
foreach ($path in $possiblePaths) {
|
||||
|
@ -814,7 +837,8 @@ function MSBuild-Core() {
|
|||
Write-Host "See log: $buildLog" -ForegroundColor DarkGray
|
||||
}
|
||||
|
||||
if ($ci) {
|
||||
# When running on Azure Pipelines, override the returned exit code to avoid double logging.
|
||||
if ($ci -and $env:SYSTEM_TEAMPROJECT -ne $null) {
|
||||
Write-PipelineSetResult -Result "Failed" -Message "msbuild execution failed."
|
||||
# Exiting with an exit code causes the azure pipelines task to log yet another "noise" error
|
||||
# The above Write-PipelineSetResult will cause the task to be marked as failure without adding yet another error
|
||||
|
@ -909,11 +933,13 @@ if (!$disableConfigureToolsetImport) {
|
|||
function Enable-Nuget-EnhancedRetry() {
|
||||
if ($ci) {
|
||||
Write-Host "Setting NUGET enhanced retry environment variables"
|
||||
$env:NUGET_ENABLE_EXPERIMENTAL_HTTP_RETRY = 'true'
|
||||
$env:NUGET_EXPERIMENTAL_MAX_NETWORK_TRY_COUNT = 6
|
||||
$env:NUGET_EXPERIMENTAL_NETWORK_RETRY_DELAY_MILLISECONDS = 1000
|
||||
Write-PipelineSetVariable -Name 'NUGET_ENABLE_EXPERIMENTAL_HTTP_RETRY' -Value 'true'
|
||||
Write-PipelineSetVariable -Name 'NUGET_EXPERIMENTAL_MAX_NETWORK_TRY_COUNT' -Value '6'
|
||||
Write-PipelineSetVariable -Name 'NUGET_EXPERIMENTAL_NETWORK_RETRY_DELAY_MILLISECONDS' -Value '1000'
|
||||
$env:NUGET_ENABLE_ENHANCED_HTTP_RETRY = 'true'
|
||||
$env:NUGET_ENHANCED_MAX_NETWORK_TRY_COUNT = 6
|
||||
$env:NUGET_ENHANCED_NETWORK_RETRY_DELAY_MILLISECONDS = 1000
|
||||
$env:NUGET_RETRY_HTTP_429 = 'true'
|
||||
Write-PipelineSetVariable -Name 'NUGET_ENABLE_ENHANCED_HTTP_RETRY' -Value 'true'
|
||||
Write-PipelineSetVariable -Name 'NUGET_ENHANCED_MAX_NETWORK_TRY_COUNT' -Value '6'
|
||||
Write-PipelineSetVariable -Name 'NUGET_ENHANCED_NETWORK_RETRY_DELAY_MILLISECONDS' -Value '1000'
|
||||
Write-PipelineSetVariable -Name 'NUGET_RETRY_HTTP_429' -Value 'true'
|
||||
}
|
||||
}
|
||||
|
|
|
@ -184,6 +184,35 @@ function InstallDotNetSdk {
|
|||
function InstallDotNet {
|
||||
local root=$1
|
||||
local version=$2
|
||||
local runtime=$4
|
||||
|
||||
local dotnetVersionLabel="'$runtime v$version'"
|
||||
if [[ -n "${4:-}" ]] && [ "$4" != 'sdk' ]; then
|
||||
runtimePath="$root"
|
||||
runtimePath="$runtimePath/shared"
|
||||
case "$runtime" in
|
||||
dotnet)
|
||||
runtimePath="$runtimePath/Microsoft.NETCore.App"
|
||||
;;
|
||||
aspnetcore)
|
||||
runtimePath="$runtimePath/Microsoft.AspNetCore.App"
|
||||
;;
|
||||
windowsdesktop)
|
||||
runtimePath="$runtimePath/Microsoft.WindowsDesktop.App"
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
runtimePath="$runtimePath/$version"
|
||||
|
||||
dotnetVersionLabel="runtime toolset '$runtime/$architecture v$version'"
|
||||
|
||||
if [ -d "$runtimePath" ]; then
|
||||
echo " Runtime toolset '$runtime/$architecture v$version' already installed."
|
||||
local installSuccess=1
|
||||
return
|
||||
fi
|
||||
fi
|
||||
|
||||
GetDotNetInstallScript "$root"
|
||||
local install_script=$_GetDotNetInstallScript
|
||||
|
@ -228,17 +257,17 @@ function InstallDotNet {
|
|||
for variationName in "${variations[@]}"; do
|
||||
local name="$variationName[@]"
|
||||
local variation=("${!name}")
|
||||
echo "Attempting to install dotnet from $variationName."
|
||||
echo " Attempting to install $dotnetVersionLabel from $variationName."
|
||||
bash "$install_script" "${variation[@]}" && installSuccess=1
|
||||
if [[ "$installSuccess" -eq 1 ]]; then
|
||||
break
|
||||
fi
|
||||
|
||||
echo "Failed to install dotnet from $variationName."
|
||||
echo " Failed to install $dotnetVersionLabel from $variationName."
|
||||
done
|
||||
|
||||
if [[ "$installSuccess" -eq 0 ]]; then
|
||||
Write-PipelineTelemetryError -category 'InitializeToolset' "Failed to install dotnet SDK from any of the specified locations."
|
||||
Write-PipelineTelemetryError -category 'InitializeToolset' "Failed to install $dotnetVersionLabel from any of the specified locations."
|
||||
ExitWithExitCode 1
|
||||
fi
|
||||
}
|
||||
|
@ -312,7 +341,7 @@ function InitializeBuildTool {
|
|||
# return values
|
||||
_InitializeBuildTool="$_InitializeDotNetCli/dotnet"
|
||||
_InitializeBuildToolCommand="msbuild"
|
||||
_InitializeBuildToolFramework="net7.0"
|
||||
_InitializeBuildToolFramework="net8.0"
|
||||
}
|
||||
|
||||
# Set RestoreNoCache as a workaround for https://github.com/NuGet/Home/issues/3116
|
||||
|
@ -416,13 +445,6 @@ function MSBuild {
|
|||
export NUGET_PLUGIN_REQUEST_TIMEOUT_IN_SECONDS=20
|
||||
Write-PipelineSetVariable -name "NUGET_PLUGIN_HANDSHAKE_TIMEOUT_IN_SECONDS" -value "20"
|
||||
Write-PipelineSetVariable -name "NUGET_PLUGIN_REQUEST_TIMEOUT_IN_SECONDS" -value "20"
|
||||
|
||||
export NUGET_ENABLE_EXPERIMENTAL_HTTP_RETRY=true
|
||||
export NUGET_EXPERIMENTAL_MAX_NETWORK_TRY_COUNT=6
|
||||
export NUGET_EXPERIMENTAL_NETWORK_RETRY_DELAY_MILLISECONDS=1000
|
||||
Write-PipelineSetVariable -name "NUGET_ENABLE_EXPERIMENTAL_HTTP_RETRY" -value "true"
|
||||
Write-PipelineSetVariable -name "NUGET_EXPERIMENTAL_MAX_NETWORK_TRY_COUNT" -value "6"
|
||||
Write-PipelineSetVariable -name "NUGET_EXPERIMENTAL_NETWORK_RETRY_DELAY_MILLISECONDS" -value "1000"
|
||||
fi
|
||||
|
||||
local toolset_dir="${_InitializeToolset%/*}"
|
||||
|
@ -435,6 +457,8 @@ function MSBuild {
|
|||
possiblePaths+=( "$toolset_dir/netcoreapp2.1/Microsoft.DotNet.Arcade.Sdk.dll" )
|
||||
possiblePaths+=( "$toolset_dir/netcoreapp3.1/Microsoft.DotNet.ArcadeLogging.dll" )
|
||||
possiblePaths+=( "$toolset_dir/netcoreapp3.1/Microsoft.DotNet.Arcade.Sdk.dll" )
|
||||
possiblePaths+=( "$toolset_dir/net7.0/Microsoft.DotNet.ArcadeLogging.dll" )
|
||||
possiblePaths+=( "$toolset_dir/net7.0/Microsoft.DotNet.Arcade.Sdk.dll" )
|
||||
for path in "${possiblePaths[@]}"; do
|
||||
if [[ -f $path ]]; then
|
||||
selectedPath=$path
|
||||
|
@ -479,7 +503,9 @@ function MSBuild-Core {
|
|||
# We should not Write-PipelineTaskError here because that message shows up in the build summary
|
||||
# The build already logged an error, that's the reason it failed. Producing an error here only adds noise.
|
||||
echo "Build failed with exit code $exit_code. Check errors above."
|
||||
if [[ "$ci" == "true" ]]; then
|
||||
|
||||
# When running on Azure Pipelines, override the returned exit code to avoid double logging.
|
||||
if [[ "$ci" == "true" && -n ${SYSTEM_TEAMPROJECT:-} ]]; then
|
||||
Write-PipelineSetResult -result "Failed" -message "msbuild execution failed."
|
||||
# Exiting with an exit code causes the azure pipelines task to log yet another "noise" error
|
||||
# The above Write-PipelineSetResult will cause the task to be marked as failure without adding yet another error
|
||||
|
@ -493,6 +519,17 @@ function MSBuild-Core {
|
|||
RunBuildTool "$_InitializeBuildToolCommand" /m /nologo /clp:Summary /v:$verbosity /nr:$node_reuse $warnaserror_switch /p:TreatWarningsAsErrors=$warn_as_error /p:ContinuousIntegrationBuild=$ci "$@"
|
||||
}
|
||||
|
||||
function GetDarc {
|
||||
darc_path="$temp_dir/darc"
|
||||
version="$1"
|
||||
|
||||
if [[ -n "$version" ]]; then
|
||||
version="--darcversion $version"
|
||||
fi
|
||||
|
||||
"$eng_root/common/darc-init.sh" --toolpath "$darc_path" $version
|
||||
}
|
||||
|
||||
ResolvePath "${BASH_SOURCE[0]}"
|
||||
_script_dir=`dirname "$_ResolvePath"`
|
||||
|
||||
|
|
|
@ -1,34 +0,0 @@
|
|||
#
|
||||
# Copyright (c) .NET Foundation and contributors. All rights reserved.
|
||||
# Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
#
|
||||
|
||||
# Dockerfile that creates a container suitable to build dotnet-cli
|
||||
FROM mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.15-20220610131707-f0ea7ba
|
||||
|
||||
RUN apk update && apk upgrade && apk add --no-cache curl ncurses
|
||||
|
||||
# This Dockerfile doesn't use the USER_ID, but the parameter needs to be declared to prevent docker
|
||||
# from issuing a warning
|
||||
ARG USER_ID=0
|
||||
RUN adduser code_executor -u ${USER_ID} -G root -D
|
||||
RUN echo 'code_executor ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
|
||||
|
||||
# With the User Change, we need to change permissions on these directories
|
||||
RUN chmod -R a+rwx /usr/local
|
||||
RUN chmod -R a+rwx /home
|
||||
|
||||
# Set working directory
|
||||
ARG WORK_DIR
|
||||
WORKDIR ${WORK_DIR}
|
||||
|
||||
# Set up Azure Artifacts credential provider
|
||||
# We download the installer and execute it using ${USER_ID} so that the installer
|
||||
# put the NuGet plugins in the correct $HOME/.nuget folder.
|
||||
RUN curl -O https://raw.githubusercontent.com/Microsoft/artifacts-credprovider/master/helpers/installcredprovider.sh
|
||||
RUN chmod +x ./installcredprovider.sh
|
||||
|
||||
# Set user to the one we just created
|
||||
USER ${USER_ID}
|
||||
|
||||
RUN ./installcredprovider.sh
|
|
@ -1,25 +0,0 @@
|
|||
#
|
||||
# Copyright (c) .NET Foundation and contributors. All rights reserved.
|
||||
# Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
#
|
||||
|
||||
# Dockerfile that creates a container suitable to build dotnet-cli
|
||||
# Via https://github.com/dotnet/versions/blob/main/build-info/docker/image-info.dotnet-dotnet-buildtools-prereqs-docker-main.json
|
||||
FROM mcr.microsoft.com/dotnet-buildtools/prereqs:centos-7-rpmpkg-19d155e-20200221152150
|
||||
|
||||
# Setup User to match Host User, and give superuser permissions
|
||||
ARG USER_ID=0
|
||||
RUN useradd -m code_executor -u ${USER_ID} -g root
|
||||
RUN echo 'code_executor ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
|
||||
|
||||
# With the User Change, we need to change permissions on these directories
|
||||
RUN chmod -R a+rwx /usr/local
|
||||
RUN chmod -R a+rwx /home
|
||||
RUN chmod -R 4755 /usr/bin/sudo
|
||||
|
||||
# Set user to the one we just created
|
||||
USER ${USER_ID}
|
||||
|
||||
# Set working directory
|
||||
ARG WORK_DIR
|
||||
WORKDIR ${WORK_DIR}
|
|
@ -1,52 +0,0 @@
|
|||
#
|
||||
# Copyright (c) .NET Foundation and contributors. All rights reserved.
|
||||
# Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
#
|
||||
|
||||
# Dockerfile that creates a container suitable to build dotnet-cli
|
||||
FROM mcr.microsoft.com/dotnet-buildtools/prereqs:debian-11-amd64
|
||||
|
||||
# Install the deb packaging toolchain we need to build debs
|
||||
RUN apt-get update \
|
||||
&& apt-get -y install \
|
||||
debhelper \
|
||||
build-essential \
|
||||
devscripts \
|
||||
locales \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# liblldb is needed so deb package build does not throw missing library info errors
|
||||
RUN apt-get update \
|
||||
&& apt-get -y install liblldb-9 \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Misc Dependencies for build
|
||||
RUN rm -rf /var/lib/apt/lists/* && \
|
||||
apt-get update && \
|
||||
apt-get -qqy install \
|
||||
sudo && \
|
||||
apt-get clean && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN apt-get update \
|
||||
&& apt-get -y install python-is-python2 \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN localedef -c -i en_US -f UTF-8 en_US.UTF-8
|
||||
|
||||
# Setup User to match Host User, and give superuser permissions
|
||||
ARG USER_ID=0
|
||||
RUN useradd -m code_executor -u ${USER_ID} -g sudo
|
||||
RUN echo 'code_executor ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
|
||||
|
||||
# With the User Change, we need to change permissions on these directories
|
||||
RUN chmod -R a+rwx /usr/local
|
||||
RUN chmod -R a+rwx /home
|
||||
RUN chmod -R 755 /usr/lib/sudo
|
||||
|
||||
# Set user to the one we just created
|
||||
USER ${USER_ID}
|
||||
|
||||
# Set working directory
|
||||
ARG WORK_DIR
|
||||
WORKDIR ${WORK_DIR}
|
|
@ -1,30 +0,0 @@
|
|||
#
|
||||
# Copyright (c) .NET Foundation and contributors. All rights reserved.
|
||||
# Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
#
|
||||
|
||||
# Dockerfile that creates a container suitable to build dotnet-cli
|
||||
FROM mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-36-20220716171953-531d246
|
||||
|
||||
RUN dnf install -y nss
|
||||
|
||||
RUN dnf clean all
|
||||
|
||||
# Override RID set by the dotnet-buildtools-prereqs docker image
|
||||
ENV __PUBLISH_RID=fedora.36-x64
|
||||
|
||||
# Setup User to match Host User, and give superuser permissions
|
||||
ARG USER_ID=0
|
||||
RUN useradd -m code_executor -u ${USER_ID} -g wheel
|
||||
RUN echo 'code_executor ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
|
||||
|
||||
# With the User Change, we need to change permissions on these directories
|
||||
RUN chmod -R a+rwx /usr/local
|
||||
RUN chmod -R a+rwx /home
|
||||
|
||||
# Set user to the one we just created
|
||||
USER ${USER_ID}
|
||||
|
||||
# Set working directory
|
||||
ARG WORK_DIR
|
||||
WORKDIR ${WORK_DIR}
|
|
@ -1,34 +0,0 @@
|
|||
#
|
||||
# Copyright (c) .NET Foundation and contributors. All rights reserved.
|
||||
# Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
#
|
||||
|
||||
# Dockerfile that creates a container suitable to build dotnet-cli
|
||||
FROM mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-18.04-f90bc20-20180320154721
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get -qqy install \
|
||||
curl \
|
||||
libcurl4 \
|
||||
devscripts \
|
||||
debhelper \
|
||||
sudo && \
|
||||
apt-get clean && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Setup User to match Host User, and give superuser permissions
|
||||
ARG USER_ID=0
|
||||
RUN useradd -m code_executor -u ${USER_ID} -g sudo
|
||||
RUN echo 'code_executor ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
|
||||
|
||||
# With the User Change, we need to change permissions on these directories
|
||||
RUN chmod -R a+rwx /usr/local
|
||||
RUN chmod -R a+rwx /home
|
||||
RUN chmod -R 755 /usr/lib/sudo
|
||||
|
||||
# Set user to the one we just created
|
||||
USER ${USER_ID}
|
||||
|
||||
# Set working directory
|
||||
ARG WORK_DIR
|
||||
WORKDIR ${WORK_DIR}
|
|
@ -1,60 +0,0 @@
|
|||
[CmdletBinding(PositionalBinding=$false)]
|
||||
Param(
|
||||
[bool] $noninteractive = $false,
|
||||
[string] $dockerImageName,
|
||||
[string] $dockerContainerTag = "dotnetcli-build",
|
||||
[string] $dockerContainerName = "dotnetcli-build-container",
|
||||
[Parameter(ValueFromRemainingArguments=$true)][String[]]$additionalArgs
|
||||
)
|
||||
|
||||
# sample command line: .\eng\dockerrun.ps1 -dockerImageName ubuntu.18.04 /p:DisableSourceLink=true --test --pack --publish
|
||||
|
||||
Write-Host "Docker image name: $dockerImageName"
|
||||
Write-Host "Additional args: $additionalArgs"
|
||||
|
||||
. $PSScriptRoot\common\tools.ps1
|
||||
|
||||
# docker build -f old\scripts\docker\rhel\Dockerfile --build-arg USER_ID=1000 -t redhat .
|
||||
# docker run -it -v c:\git\core-sdk-arcade:/opt/code redhat bash
|
||||
|
||||
$dockerFile = Resolve-Path (Join-Path $RepoRoot "eng\docker\$dockerImageName")
|
||||
|
||||
docker build --build-arg WORK_DIR=$RepoRoot --build-arg USER_ID=1000 -t "$dockerContainerTag" $dockerFile
|
||||
|
||||
$interactiveFlag = "-i"
|
||||
if ($noninteractive)
|
||||
{
|
||||
$interactiveFlag = ""
|
||||
}
|
||||
|
||||
` # -e DOTNET_INSTALL_DIR=/opt/code/artifacts/docker/$dockerImageName/.dotnet `
|
||||
|
||||
docker run $interactiveFlag -t --rm --sig-proxy=true `
|
||||
--name "$dockerContainerName" `
|
||||
-v "${RepoRoot}:${RepoRoot}" `
|
||||
-e DOTNET_CORESDK_IGNORE_TAR_EXIT_CODE=1 `
|
||||
-e CHANNEL `
|
||||
-e DOTNET_BUILD_SKIP_CROSSGEN `
|
||||
-e PUBLISH_TO_AZURE_BLOB `
|
||||
-e NUGET_FEED_URL `
|
||||
-e NUGET_API_KEY `
|
||||
-e ARTIFACT_STORAGE_ACCOUNT `
|
||||
-e ARTIFACT_STORAGE_CONTAINER `
|
||||
-e CHECKSUM_STORAGE_ACCOUNT `
|
||||
-e CHECKSUM_STORAGE_CONTAINER `
|
||||
-e BLOBFEED_STORAGE_CONTAINER `
|
||||
-e CLIBUILD_SKIP_TESTS `
|
||||
-e COMMITCOUNT `
|
||||
-e DROPSUFFIX `
|
||||
-e RELEASESUFFIX `
|
||||
-e COREFXAZURECONTAINER `
|
||||
-e AZUREACCOUNTNAME `
|
||||
-e RELEASETOOLSGITURL `
|
||||
-e CORESETUPBLOBROOTURL `
|
||||
-e PB_ASSETROOTURL `
|
||||
-e PB_PACKAGEVERSIONPROPSURL `
|
||||
-e PB_PUBLISHBLOBFEEDURL `
|
||||
-e EXTERNALRESTORESOURCES `
|
||||
-e ARCADE_PARTITION="${dockerImageName}" `
|
||||
$dockerContainerTag `
|
||||
${RepoRoot}/run-build.sh @additionalArgs
|
179
eng/dockerrun.sh
179
eng/dockerrun.sh
|
@ -1,179 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
#
|
||||
# Copyright (c) .NET Foundation and contributors. All rights reserved.
|
||||
# Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
#
|
||||
|
||||
set -e
|
||||
|
||||
SOURCE="${BASH_SOURCE[0]}"
|
||||
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
|
||||
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
|
||||
SOURCE="$(readlink "$SOURCE")"
|
||||
[[ "$SOURCE" != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
|
||||
done
|
||||
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
|
||||
|
||||
cd "$DIR/.."
|
||||
|
||||
INTERACTIVE="-i"
|
||||
|
||||
while [[ $# > 0 ]]; do
|
||||
key=$1
|
||||
|
||||
case $key in
|
||||
--non-interactive)
|
||||
INTERACTIVE=
|
||||
;;
|
||||
-i|--image)
|
||||
DOCKER_IMAGENAME=$2
|
||||
shift
|
||||
;;
|
||||
-d|--dockerfile)
|
||||
DOCKERFILE=$2
|
||||
shift
|
||||
;;
|
||||
-h|-?|--help)
|
||||
echo "Usage: $0 [-d|--dockerfile <Dockerfile>] [-i|--image <ImageName>] <Command>"
|
||||
echo ""
|
||||
echo "Options:"
|
||||
echo " <Dockerfile> The path to the Dockerfile to use to create the build container"
|
||||
echo " <ImageName> The name of an existing Dockerfile folder under eng/docker to use as the Dockerfile"
|
||||
echo " <Command> The command to run once inside the container (repo root is mapped to DOCKER_HOST_SHARE_DIR; defaults to nothing, which runs the default shell)"
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
break # the first non-switch we get ends parsing
|
||||
;;
|
||||
esac
|
||||
|
||||
shift
|
||||
done
|
||||
|
||||
if [ -z "$DOCKERFILE" ]; then
|
||||
if [ -z "$DOCKER_IMAGENAME" ]; then
|
||||
if [ "$(uname)" == "Darwin" ]; then
|
||||
echo "Defaulting to 'ubuntu' image for Darwin"
|
||||
export DOCKERFILE=eng/docker/ubuntu
|
||||
elif [ "$(cat /etc/*-release | grep -cim1 ubuntu)" -eq 1 ]; then
|
||||
echo "Detected current OS as Ubuntu, determining ubuntu version to use..."
|
||||
if [ "$(cat /etc/*-release | grep -cim1 16.04)" -eq 1 ]; then
|
||||
echo "using 'ubuntu.16.04' image"
|
||||
export DOCKERFILE=eng/docker/ubuntu.16.04
|
||||
else
|
||||
echo "using 'ubuntu' image"
|
||||
export DOCKERFILE=eng/docker/ubuntu
|
||||
fi
|
||||
elif [ "$(cat /etc/*-release | grep -cim1 centos)" -eq 1 ]; then
|
||||
echo "Detected current OS as CentOS, using 'centos' image"
|
||||
export DOCKERFILE=eng/docker/centos
|
||||
elif [ "$(cat /etc/*-release | grep -cim1 rhel)" -eq 1 ]; then
|
||||
echo "Detected current OS as rhel, using 'rhel' image"
|
||||
export DOCKERFILE=eng/docker/rhel
|
||||
elif [ "$(cat /etc/*-release | grep -cim1 debian)" -eq 1 ]; then
|
||||
echo "Detected current OS as Debian, using 'debian' image"
|
||||
export DOCKERFILE=eng/docker/debian
|
||||
elif [ "$(cat /etc/*-release | grep -cim1 fedora)" -eq 1 ]; then
|
||||
echo "Detected current OS as Fedora, determining fedora version to use..."
|
||||
if [ "$(cat /etc/*-release | grep -cim1 23)" -eq 1 ]; then
|
||||
echo "using 'fedora.23' image"
|
||||
export DOCKERFILE=eng/docker/fedora.23
|
||||
fi
|
||||
else
|
||||
echo "Unknown Linux Distro. Using 'ubuntu' image"
|
||||
export DOCKERFILE=eng/docker/ubuntu
|
||||
fi
|
||||
else
|
||||
echo "Using requested image: $DOCKER_IMAGENAME"
|
||||
export DOCKERFILE="eng/docker/$DOCKER_IMAGENAME"
|
||||
fi
|
||||
fi
|
||||
|
||||
[ -z "$DOTNET_BUILD_CONTAINER_TAG" ] && DOTNET_BUILD_CONTAINER_TAG="dotnetcli-build"
|
||||
[ -z "$DOTNET_BUILD_CONTAINER_NAME" ] && DOTNET_BUILD_CONTAINER_NAME="dotnetcli-build-container"
|
||||
[ -z "$DOCKER_HOST_SHARE_DIR" ] && DOCKER_HOST_SHARE_DIR=$(pwd)
|
||||
|
||||
# Make container names CI-specific if we're running in CI
|
||||
# Jenkins
|
||||
[ ! -z "$BUILD_TAG" ] && DOTNET_BUILD_CONTAINER_NAME="$BUILD_TAG"
|
||||
# VSO
|
||||
[ ! -z "$BUILD_BUILDID" ] && DOTNET_BUILD_CONTAINER_NAME="$BUILD_BUILDID"
|
||||
|
||||
function retry {
|
||||
local max_count=$1
|
||||
shift
|
||||
|
||||
local count=0
|
||||
until "$@"; do
|
||||
exit=$?
|
||||
wait=$((2 ** $count))
|
||||
count=$(($count + 1))
|
||||
if [[ ${count} -lt ${max_count} ]]; then
|
||||
echo "Retry $count/$max_count returned $exit, wait $wait seconds..."
|
||||
sleep ${wait}
|
||||
else
|
||||
echo "Retry $count/$max_count returned $exit."
|
||||
return ${exit}
|
||||
fi
|
||||
done
|
||||
return 0
|
||||
}
|
||||
|
||||
# Build the docker container (will be fast if it is already built)
|
||||
# with retry since docker pull has high failure rate
|
||||
echo "Building Docker Container using Dockerfile: $DOCKERFILE"
|
||||
retry 10 docker build --build-arg WORK_DIR=$DOCKER_HOST_SHARE_DIR --build-arg USER_ID=$(id -u) -t $DOTNET_BUILD_CONTAINER_TAG $DOCKERFILE 2>&1
|
||||
|
||||
# Run the build in the container
|
||||
echo "Launching build in Docker Container"
|
||||
echo "Running command: $BUILD_COMMAND"
|
||||
echo "Using code from: $DOCKER_HOST_SHARE_DIR"
|
||||
[ -z "$INTERACTIVE" ] || echo "Running Interactive"
|
||||
|
||||
# Note: passwords/keys should not be passed in the environment
|
||||
docker run $INTERACTIVE -t --rm --sig-proxy=true \
|
||||
--name $DOTNET_BUILD_CONTAINER_NAME \
|
||||
-v $DOCKER_HOST_SHARE_DIR:$DOCKER_HOST_SHARE_DIR \
|
||||
-e CHANNEL \
|
||||
-e DOTNET_BUILD_SKIP_CROSSGEN \
|
||||
-e PUBLISH_TO_AZURE_BLOB \
|
||||
-e NUGET_FEED_URL \
|
||||
-e NUGET_API_KEY \
|
||||
-e ARTIFACT_STORAGE_ACCOUNT \
|
||||
-e ARTIFACT_STORAGE_CONTAINER \
|
||||
-e CHECKSUM_STORAGE_ACCOUNT \
|
||||
-e CHECKSUM_STORAGE_CONTAINER \
|
||||
-e BLOBFEED_STORAGE_CONTAINER \
|
||||
-e CLIBUILD_SKIP_TESTS \
|
||||
-e COMMITCOUNT \
|
||||
-e DROPSUFFIX \
|
||||
-e RELEASESUFFIX \
|
||||
-e COREFXAZURECONTAINER \
|
||||
-e AZUREACCOUNTNAME \
|
||||
-e RELEASETOOLSGITURL \
|
||||
-e CORESETUPBLOBROOTURL \
|
||||
-e PB_ASSETROOTURL \
|
||||
-e PB_PACKAGEVERSIONPROPSURL \
|
||||
-e PB_PUBLISHBLOBFEEDURL \
|
||||
-e _PUBLISHBLOBFEEDURL \
|
||||
-e _ASSETROOTURL \
|
||||
-e _PACKAGEVERSIONPROPSURL \
|
||||
-e EXTERNALRESTORESOURCES \
|
||||
-e BUILD_REPOSITORY_URI \
|
||||
-e BUILD_REPOSITORY_NAME \
|
||||
-e BUILD_SOURCEBRANCH \
|
||||
-e BUILD_BUILDNUMBER \
|
||||
-e BUILD_BUILDID \
|
||||
-e BUILD_SOURCEVERSION \
|
||||
-e SYSTEM_TEAMPROJECT \
|
||||
-e POSTBUILDSIGN \
|
||||
-e SYSTEM_DEFINITIONID \
|
||||
-e SYSTEM_TEAMFOUNDATIONCOLLECTIONURI \
|
||||
-e AGENT_JOBNAME \
|
||||
-e AGENT_OS \
|
||||
-e VSS_NUGET_URI_PREFIXES \
|
||||
-e VSS_NUGET_ACCESSTOKEN \
|
||||
-e DOTNET_SYSTEM_NET_HTTP_USESOCKETSHTTPHANDLER=0 \
|
||||
-e NUGET_CREDENTIALPROVIDER_SESSIONTOKENCACHE_ENABLED=true \
|
||||
$DOTNET_BUILD_CONTAINER_TAG \
|
||||
$BUILD_COMMAND "$@"
|
42
eng/loc/wxl_loc.lss
Normal file
42
eng/loc/wxl_loc.lss
Normal file
|
@ -0,0 +1,42 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LS_SETTINGS_FILE xmlns="">
|
||||
<LS_SETTINGS_DESCRIPTION>
|
||||
<![CDATA[]]>
|
||||
</LS_SETTINGS_DESCRIPTION>
|
||||
<optionSet id="LSOptions">
|
||||
<optionSet id="Defaults" displayName="Option Defaults">
|
||||
<optionSet id="Espresso" displayName="Espresso" />
|
||||
<optionSet id="Parsers" displayName="Parsers" />
|
||||
</optionSet>
|
||||
<optionSet id="User" displayName="User Overrides">
|
||||
<optionSet id="Espresso" displayName="Espresso" />
|
||||
<optionSet id="Parsers" displayName="Parsers" />
|
||||
</optionSet>
|
||||
<optionSet id="Project" displayName="Project Overrides">
|
||||
<optionSet id="Espresso" displayName="Espresso">
|
||||
<optionSet id="TranslationPlatform" displayName="Translation Platform" helpText="Settings for the Translation Platform">
|
||||
<optionSet id="Pseudo Translation Settings" displayName="Pseudo Translation Settings" helpText="Use these settings to control the pseudo localization process.">
|
||||
<optionSet id="Delimiter and String Extension Settings" displayName="Delimiter and String Extension Settings" helpText="Use these settings to specify delimiters and extensions.">
|
||||
<option id="\PseudoTranslation\Delimiters and Extensions\Extension String" displayName="String to add to extend pseudo localized strings" helpText="Enter the string to use to extend the pseudo localized strings.">
|
||||
<string defaultValue=" !!!" currentValue=" 表昌良字" />
|
||||
</option>
|
||||
</optionSet>
|
||||
</optionSet>
|
||||
</optionSet>
|
||||
</optionSet>
|
||||
<optionSet id="Parsers" displayName="Parsers">
|
||||
<optionSet id="Parser 210" displayName="POMXML Parser options" helpText="View file locXML.xml for details.">
|
||||
<option id="IncTermNoResId" displayName="Include Terms that have no Resource Identifier" helpText="With this option turned off, only those terms with user defined resource id will be exposed.">
|
||||
<boolean defaultValue="1" currentValue="0" />
|
||||
</option>
|
||||
<option id="settingFile" displayName="Loc Setting File" helpText="With this option, users specify their own loc setting file.">
|
||||
<string defaultValue="locxml.xml" currentValue="locxml_wxl.xml" />
|
||||
</option>
|
||||
<option id="POMXMLUpdateLocCommentsOnly" displayName="Update Loc Instructions (_locComment) only" helpText="With this option turned ON and the Update Instructions option turned ON only Loc Instructions (_locComment) will be imported into the instruction field. If a localizable item does not have an explicit _locComment then the instruction field will be left blank.">
|
||||
<boolean defaultValue="0" currentValue="1" />
|
||||
</option>
|
||||
</optionSet>
|
||||
</optionSet>
|
||||
</optionSet>
|
||||
</optionSet>
|
||||
</LS_SETTINGS_FILE>
|
30
eng/localization.yml
Normal file
30
eng/localization.yml
Normal file
|
@ -0,0 +1,30 @@
|
|||
#
|
||||
# See https://learn.microsoft.com/en-us/azure/devops/pipelines/yaml-schema for details on this file.
|
||||
#
|
||||
|
||||
schedules:
|
||||
# Cron timezone is UTC.
|
||||
- cron: "0 18 * * *"
|
||||
displayName: Run tests daily at 6 PM UTC (11 AM PT)
|
||||
branches:
|
||||
include:
|
||||
- main
|
||||
always: true
|
||||
|
||||
# Do not run in PR builds nor support other triggers.
|
||||
pr: none
|
||||
trigger: none
|
||||
|
||||
variables:
|
||||
- name: _TeamName
|
||||
value: SDK
|
||||
|
||||
jobs:
|
||||
- ${{ if and(ne(variables['System.TeamProject'], 'public'), or(eq(variables['Build.SourceBranch'], 'refs/heads/main'), eq(variables['Build.Reason'], 'Manual'))) }}:
|
||||
- template: /eng/common/templates/job/onelocbuild.yml
|
||||
parameters:
|
||||
CreatePr: ${{ ne(variables['Build.Reason'], 'Manual') }}
|
||||
LclPackageId: 'LCL-JUNO-PROD-DOTNETINSTALLER'
|
||||
LclSource: lclFilesFromPackage
|
||||
MirrorBranch: main
|
||||
MirrorRepo: installer
|
56
eng/pipelines/source-build-sdk-diff-tests.yml
Normal file
56
eng/pipelines/source-build-sdk-diff-tests.yml
Normal file
|
@ -0,0 +1,56 @@
|
|||
schedules:
|
||||
- cron: "0 7 * * 1-5"
|
||||
displayName: Run on weekdays at 7am UTC
|
||||
branches:
|
||||
include:
|
||||
- main
|
||||
- release/*
|
||||
|
||||
pr: none
|
||||
trigger: none
|
||||
|
||||
pool:
|
||||
name: NetCore1ESPool-Svc-Internal
|
||||
demands: ImageOverride -equals 1es-ubuntu-2004
|
||||
|
||||
parameters:
|
||||
- name: dotnetDotnetRunId
|
||||
displayName: 'Specific dotnet-dotnet run ID number (e.g `2108850`)'
|
||||
type: string
|
||||
default: ' '
|
||||
|
||||
jobs:
|
||||
- template: templates/jobs/sdk-diff-tests.yml
|
||||
parameters:
|
||||
buildName: CentOSStream8_Offline_MsftSdk
|
||||
targetRid: centos.8-x64
|
||||
architecture: x64
|
||||
dotnetDotnetRunId: ${{ parameters.dotnetDotnetRunId }}
|
||||
|
||||
- template: templates/jobs/sdk-diff-tests.yml
|
||||
parameters:
|
||||
buildName: CentOSStream9_Offline_MsftSdk
|
||||
targetRid: centos.9-x64
|
||||
architecture: x64
|
||||
dotnetDotnetRunId: ${{ parameters.dotnetDotnetRunId }}
|
||||
|
||||
- template: templates/jobs/sdk-diff-tests.yml
|
||||
parameters:
|
||||
buildName: Fedora38_Offline_MsftSdk
|
||||
targetRid: fedora.38-x64
|
||||
architecture: x64
|
||||
dotnetDotnetRunId: ${{ parameters.dotnetDotnetRunId }}
|
||||
|
||||
- template: templates/jobs/sdk-diff-tests.yml
|
||||
parameters:
|
||||
buildName: Ubuntu2204_Offline_MsftSdk
|
||||
targetRid: ubuntu.22.04-x64
|
||||
architecture: x64
|
||||
dotnetDotnetRunId: ${{ parameters.dotnetDotnetRunId }}
|
||||
|
||||
- template: templates/jobs/sdk-diff-tests.yml
|
||||
parameters:
|
||||
buildName: Ubuntu2204Arm64_Offline_MsftSdk
|
||||
targetRid: ubuntu.22.04-arm64
|
||||
architecture: arm64
|
||||
dotnetDotnetRunId: ${{ parameters.dotnetDotnetRunId }}
|
159
eng/pipelines/templates/jobs/sdk-diff-tests.yml
Normal file
159
eng/pipelines/templates/jobs/sdk-diff-tests.yml
Normal file
|
@ -0,0 +1,159 @@
|
|||
parameters:
|
||||
- name: buildName
|
||||
type: string
|
||||
|
||||
- name: targetRid
|
||||
type: string
|
||||
|
||||
- name: architecture
|
||||
type: string
|
||||
|
||||
- name: dotnetDotnetRunId
|
||||
type: string
|
||||
|
||||
jobs:
|
||||
- job: ${{ parameters.buildName }}_${{ parameters.architecture }}
|
||||
timeoutInMinutes: 150
|
||||
pool:
|
||||
name: NetCore1ESPool-Svc-Internal
|
||||
demands: ImageOverride -equals 1es-ubuntu-2004
|
||||
variables:
|
||||
- template: ../variables/pipelines.yml
|
||||
steps:
|
||||
- script: |
|
||||
dotnet_dotnet_build='${{ replace(parameters.dotnetDotnetRunId, ' ', '') }}'
|
||||
|
||||
if [[ -z "$dotnet_dotnet_build" ]]; then
|
||||
dotnet_dotnet_build=$(az pipelines runs list --branch '$(Build.SourceBranch)' --organization '$(AZDO_ORG)' --project '$(AZDO_PROJECT)' --pipeline-ids '$(DOTNET_DOTNET_CI_PIPELINE_ID)' --status completed --top 1 --query "[].id" --output tsv)
|
||||
fi
|
||||
|
||||
if [[ -z "$dotnet_dotnet_build" ]]; then
|
||||
echo "Could not find a completed dotnet-dotnet build for branch '$(Build.SourceBranch)'"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Dotnet-dotnet build: https://dev.azure.com/dnceng/internal/_build/results?buildId=$dotnet_dotnet_build&view=results"
|
||||
|
||||
installer_sha=$(az pipelines build tag list --organization '$(AZDO_ORG)' --project '$(AZDO_PROJECT)' --build-id $dotnet_dotnet_build --output tsv | sed "s,installer-,,g")
|
||||
installer_build=$(az pipelines runs list --organization '$(AZDO_ORG)' --project '$(AZDO_PROJECT)' --pipeline-ids '$(INSTALLER_OFFICIAL_CI_PIPELINE_ID)' --query "[?sourceVersion == '$installer_sha'].id" --output tsv)
|
||||
if [[ -z "$installer_build" ]]; then
|
||||
echo "Could not find a build of installer for commit '$installer_sha'"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Installer build: https://dev.azure.com/dnceng/internal/_build/results?buildId=$installer_build&view=results"
|
||||
|
||||
echo "##vso[build.addbuildtag]installer-$installer_sha"
|
||||
echo "##vso[task.setvariable variable=InstallerBuildId]$installer_build"
|
||||
echo "##vso[task.setvariable variable=DotnetDotnetBuildId]$dotnet_dotnet_build"
|
||||
displayName: Find associated builds
|
||||
name: Get_Build_Ids
|
||||
env:
|
||||
AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)
|
||||
|
||||
- task: DownloadPipelineArtifact@2
|
||||
displayName: Download MSFT SDK
|
||||
inputs:
|
||||
buildType: specific
|
||||
buildVersionToDownload: specific
|
||||
project: internal
|
||||
pipeline: $(INSTALLER_OFFICIAL_CI_PIPELINE_ID)
|
||||
buildId: $(InstallerBuildId)
|
||||
artifact: BlobArtifacts
|
||||
patterns: '**/dotnet-sdk-+([0-9]).+([0-9]).+([0-9])?(-@(alpha|preview|rc|rtm)*)-linux-${{ parameters.architecture }}.tar.gz'
|
||||
allowPartiallySucceededBuilds: true
|
||||
allowFailedBuilds: true
|
||||
downloadPath: $(Pipeline.Workspace)/Artifacts
|
||||
checkDownloadedFiles: true
|
||||
|
||||
- task: DownloadPipelineArtifact@2
|
||||
displayName: Download Source Build SDK
|
||||
inputs:
|
||||
buildType: specific
|
||||
buildVersionToDownload: specific
|
||||
project: internal
|
||||
pipeline: $(DOTNET_DOTNET_CI_PIPELINE_ID)
|
||||
buildId: $(DotnetDotnetBuildId)
|
||||
artifact: ${{ parameters.buildName }}_${{ parameters.architecture }}_Artifacts
|
||||
patterns: '**/dotnet-sdk-+([0-9]).+([0-9]).+([0-9])?(-@(alpha|preview|rc|rtm)*)-${{ parameters.targetRid }}.tar.gz'
|
||||
allowPartiallySucceededBuilds: true
|
||||
allowFailedBuilds: true
|
||||
downloadPath: $(Pipeline.Workspace)/Artifacts
|
||||
checkDownloadedFiles: true
|
||||
|
||||
- script: |
|
||||
msft_sdk_tarball_name=$(find "$(Pipeline.Workspace)/Artifacts" -name "dotnet-sdk-*-linux-${{ parameters.architecture }}.tar.gz" -exec basename {} \;)
|
||||
|
||||
if [[ -z "$msft_sdk_tarball_name" ]]; then
|
||||
echo "Microsoft SDK tarball does not exist in '$(Pipeline.Workspace)/Artifacts'. The associated build https://dev.azure.com/dnceng/internal/_build/results?buildId=$(InstallerBuildId) might have failed."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
sdk_tarball_name=$(find "$(Pipeline.Workspace)/Artifacts" -name "dotnet-sdk-*-${{ parameters.targetRid }}.tar.gz" -exec basename {} \;)
|
||||
|
||||
if [[ -z "$sdk_tarball_name" ]]; then
|
||||
echo "Source-build SDK tarball does not exist in '$(Pipeline.Workspace)/Artifacts'. The associated build https://dev.azure.com/dnceng/internal/_build/results?buildId=$(DotnetDotnetBuildId) might have failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
eng/common/build.sh -bl --projects $(Build.SourcesDirectory)/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/Microsoft.DotNet.SourceBuild.SmokeTests.csproj --restore
|
||||
|
||||
echo "##vso[task.setvariable variable=MsftSdkTarballPath]$(Pipeline.Workspace)/Artifacts/$msft_sdk_tarball_name"
|
||||
echo "##vso[task.setvariable variable=SdkTarballPath]$(Pipeline.Workspace)/Artifacts/$sdk_tarball_name"
|
||||
displayName: Prepare Tests
|
||||
workingDirectory: $(Build.SourcesDirectory)
|
||||
|
||||
- script: >
|
||||
.dotnet/dotnet test
|
||||
$(Build.SourcesDirectory)/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/Microsoft.DotNet.SourceBuild.SmokeTests.csproj
|
||||
--filter "FullyQualifiedName=Microsoft.DotNet.SourceBuild.SmokeTests.SdkContentTests.CompareMsftToSb"
|
||||
--logger:'trx;LogFileName=$(Agent.JobName)_SDKDiffTests.trx'
|
||||
--logger:'console;verbosity=detailed'
|
||||
-c Release
|
||||
-bl:$(Build.SourcesDirectory)/artifacts/log/Debug/BuildTests_$(date +"%m%d%H%M%S").binlog
|
||||
-flp:LogFile=$(Build.SourcesDirectory)/artifacts/logs/BuildTests_$(date +"%m%d%H%M%S").log
|
||||
-clp:v=m
|
||||
-e SMOKE_TESTS_MSFT_SDK_TARBALL_PATH=$(MsftSdkTarballPath)
|
||||
-e SMOKE_TESTS_SDK_TARBALL_PATH=$(SdkTarballPath)
|
||||
-e SMOKE_TESTS_SOURCEBUILT_ARTIFACTS_PATH=
|
||||
-e SMOKE_TESTS_WARN_SDK_CONTENT_DIFFS=false
|
||||
-e SMOKE_TESTS_RUNNING_IN_CI=true
|
||||
-e SMOKE_TESTS_TARGET_RID=${{ parameters.targetRid }}
|
||||
-e SMOKE_TESTS_PORTABLE_RID=linux-${{ parameters.architecture }}
|
||||
-e SMOKE_TESTS_CUSTOM_PACKAGES_PATH=
|
||||
displayName: Run Tests
|
||||
workingDirectory: $(Build.SourcesDirectory)
|
||||
|
||||
- script: |
|
||||
set -x
|
||||
targetFolder=$(Build.StagingDirectory)/BuildLogs/
|
||||
mkdir -p ${targetFolder}
|
||||
cd "$(Build.SourcesDirectory)"
|
||||
find artifacts/ -type f -name "BuildTests*.binlog" -exec cp {} --parents -t ${targetFolder} \;
|
||||
find artifacts/ -type f -name "BuildTests*.log" -exec cp {} --parents -t ${targetFolder} \;
|
||||
find artifacts/ -type f -name "Build.binlog" -exec cp {} --parents -t ${targetFolder} \;
|
||||
cd "$(Build.SourcesDirectory)/src/SourceBuild/content"
|
||||
find test/ -type f -name "*.binlog" -exec cp {} --parents -t ${targetFolder} \;
|
||||
find test/ -type f -name "Updated*.diff" -exec cp {} --parents -t ${targetFolder} \;
|
||||
find test/ -type f -name "Updated*.txt" -exec cp {} --parents -t ${targetFolder} \;
|
||||
displayName: Prepare BuildLogs staging directory
|
||||
continueOnError: true
|
||||
condition: succeededOrFailed()
|
||||
|
||||
- publish: '$(Build.StagingDirectory)/BuildLogs'
|
||||
artifact: $(Agent.JobName)_BuildLogs_Attempt$(System.JobAttempt)
|
||||
displayName: Publish BuildLogs
|
||||
continueOnError: true
|
||||
condition: succeededOrFailed()
|
||||
|
||||
- task: PublishTestResults@2
|
||||
displayName: Publish Test Results
|
||||
condition: succeededOrFailed()
|
||||
continueOnError: true
|
||||
inputs:
|
||||
testRunner: vSTest
|
||||
testResultsFiles: '*.trx'
|
||||
searchFolder: $(Build.SourcesDirectory)/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/TestResults
|
||||
mergeTestResults: true
|
||||
publishRunAttachments: true
|
||||
testRunTitle: $(Agent.JobName)
|
268
eng/pipelines/templates/jobs/vmr-build.yml
Normal file
268
eng/pipelines/templates/jobs/vmr-build.yml
Normal file
|
@ -0,0 +1,268 @@
|
|||
### This job source-builds https://github.com/dotnet/dotnet with given parameters
|
||||
### If run in a PR, new changes are applied to a local copy of the VMR, then it is source-built and tested
|
||||
|
||||
parameters:
|
||||
- name: isBuiltFromVmr
|
||||
displayName: True when build is running from dotnet/dotnet directly
|
||||
type: boolean
|
||||
|
||||
- name: vmrPath
|
||||
type: string
|
||||
default: $(Agent.BuildDirectory)/vmr
|
||||
|
||||
- name: vmrBranch
|
||||
displayName: dotnet/dotnet branch to use
|
||||
type: string
|
||||
default: $(Build.SourceBranch)
|
||||
|
||||
- name: buildName
|
||||
type: string
|
||||
|
||||
- name: architecture
|
||||
type: string
|
||||
|
||||
- name: container
|
||||
type: string
|
||||
|
||||
- name: pool
|
||||
type: object
|
||||
|
||||
# Allow downloading artifacts from the internet during the build
|
||||
- name: runOnline
|
||||
type: boolean
|
||||
|
||||
# Name of a previous job (from the same template as this) whose output will be used to build this job
|
||||
# The SDK from its artifacts is copied to vmr/.dotnet
|
||||
- name: reuseBuildArtifactsFrom
|
||||
type: string
|
||||
default: ''
|
||||
|
||||
- name: excludeOmniSharpTests
|
||||
type: boolean
|
||||
|
||||
- name: enablePoison
|
||||
type: boolean
|
||||
|
||||
# Instead of building the VMR directly, exports the sources into a tarball and builds from that
|
||||
- name: buildFromArchive
|
||||
type: boolean
|
||||
|
||||
# Use the previous version's SDK to build the current one
|
||||
- name: withPreviousSDK
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
- name: useMonoRuntime
|
||||
displayName: True when build output uses the mono runtime
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
jobs:
|
||||
- job: ${{ parameters.buildName }}_${{ parameters.architecture }}
|
||||
timeoutInMinutes: 150
|
||||
pool: ${{ parameters.pool }}
|
||||
${{ if ne(parameters.reuseBuildArtifactsFrom, '') }}:
|
||||
# Always attempt to run the bootstrap leg (e.g. even when stage 1 tests fail) in order to get a complete accessment of the build status.
|
||||
# The build shortcuts when stage 1 build fails and doesn't produce the SDK.
|
||||
condition: succeededOrFailed()
|
||||
dependsOn: ${{ parameters.reuseBuildArtifactsFrom }}_${{ parameters.architecture }}
|
||||
variables:
|
||||
- template: /eng/common/templates/variables/pool-providers.yml
|
||||
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
|
||||
- group: AzureDevOps-Artifact-Feeds-Pats
|
||||
- ${{ if and(not(parameters.isBuiltFromVmr), eq(variables['System.TeamProject'], 'internal'), not(startswith(parameters.vmrBranch, 'internal/release/'))) }}:
|
||||
- group: DotNetBot-GitHub
|
||||
- ${{ else }}:
|
||||
- name: BotAccount-dotnet-bot-repo-PAT
|
||||
value: N/A
|
||||
- name: additionalBuildArgs
|
||||
value: ''
|
||||
|
||||
# Location of the VMR sources
|
||||
# We either build the repo directly, or we extract them outside (which is what partners do)
|
||||
- ${{ if parameters.buildFromArchive }}:
|
||||
- name: sourcesPath
|
||||
value: $(Build.StagingDirectory)/dotnet-sources/
|
||||
- ${{ else }}:
|
||||
- name: sourcesPath
|
||||
value: ${{ parameters.vmrPath }}
|
||||
|
||||
steps:
|
||||
- template: ../steps/vmr-prepare.yml
|
||||
parameters:
|
||||
vmrBranch: ${{ parameters.vmrBranch }}
|
||||
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
|
||||
skipComponentGovernanceDetection: true
|
||||
|
||||
# Synchronize new content in the VMR during PRs (we expect this to come
|
||||
- ${{ if and(not(parameters.isBuiltFromVmr), eq(variables['Build.Reason'], 'PullRequest')) }}:
|
||||
- template: ../steps/vmr-pull-updates.yml
|
||||
parameters:
|
||||
vmrPath: ${{ parameters.vmrPath }}
|
||||
vmrBranch: ${{ parameters.vmrBranch }}
|
||||
targetRef: $(Build.SourceVersion) # Synchronize the current installer commit
|
||||
|
||||
- ${{ if parameters.buildFromArchive }}:
|
||||
- script: |
|
||||
set -ex
|
||||
cp -r "${{ parameters.vmrPath }}" "$(sourcesPath)"
|
||||
rm -rf "$(sourcesPath)/.git"
|
||||
displayName: Export VMR sources
|
||||
workingDirectory: $(Build.StagingDirectory)
|
||||
|
||||
- ${{ if ne(variables['System.TeamProject'], 'public') }}:
|
||||
- script: cp "$(sourcesPath)/src/installer/NuGet.config" "$(sourcesPath)/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/online.NuGet.Config"
|
||||
displayName: Copy Test NuGet Config
|
||||
|
||||
- task: Bash@3
|
||||
displayName: Setup Private Feeds Credentials
|
||||
inputs:
|
||||
filePath: $(sourcesPath)/src/installer/eng/common/SetupNugetSources.sh
|
||||
arguments: $(sourcesPath)/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/online.NuGet.Config $Token
|
||||
env:
|
||||
Token: $(dn-bot-dnceng-artifact-feeds-rw)
|
||||
|
||||
- ${{ if ne(parameters.reuseBuildArtifactsFrom, '') }}:
|
||||
- download: current
|
||||
artifact: ${{ parameters.reuseBuildArtifactsFrom }}_${{ parameters.architecture }}_Artifacts
|
||||
patterns: |
|
||||
**/Private.SourceBuilt.Artifacts.*.tar.gz
|
||||
**/dotnet-sdk-*.tar.gz
|
||||
displayName: Download Previous Build
|
||||
|
||||
- task: CopyFiles@2
|
||||
displayName: Copy Previous Build
|
||||
inputs:
|
||||
SourceFolder: $(Pipeline.Workspace)/${{ parameters.reuseBuildArtifactsFrom }}_${{ parameters.architecture }}_Artifacts
|
||||
Contents: '*.tar.gz'
|
||||
TargetFolder: ${{ variables.sourcesPath }}/prereqs/packages/archive/
|
||||
|
||||
- ${{ if eq(parameters.withPreviousSDK, 'true') }}:
|
||||
- script: |
|
||||
set -euo pipefail
|
||||
|
||||
packageVersionsPath="${{ variables.sourcesPath }}/eng/Versions.props"
|
||||
notFoundMessage="No source-built SDK found to download..."
|
||||
|
||||
echo "Looking for source-built SDK to download..."
|
||||
archiveUrlLine=`grep -m 1 "<PrivateSourceBuiltSdkUrl_CentOS8Stream>" "$packageVersionsPath" || :`
|
||||
urlPattern="<PrivateSourceBuiltSdkUrl_CentOS8Stream>(.*)</PrivateSourceBuiltSdkUrl_CentOS8Stream>"
|
||||
|
||||
if [[ $archiveUrlLine =~ $urlPattern ]]; then
|
||||
archiveUrl="${BASH_REMATCH[1]}"
|
||||
downloadDir="$(sourcesPath)/prereqs/packages/archive/"
|
||||
(cd $downloadDir && curl --retry 5 -O $archiveUrl)
|
||||
else
|
||||
echo "$notFoundMessage"
|
||||
exit 1
|
||||
fi
|
||||
displayName: Setup Previously Source-Built SDK
|
||||
|
||||
- script: |
|
||||
set -x
|
||||
|
||||
customPrepArgs=""
|
||||
prepSdk=true
|
||||
if [[ '${{ parameters.withPreviousSDK }}' == 'True' ]]; then
|
||||
# Source-built artifacts are from CentOS 8 Stream. We want to download them without
|
||||
# downloading portable versions from the internet.
|
||||
customPrepArgs="${customPrepArgs} --no-sdk --no-bootstrap"
|
||||
prepSdk=false
|
||||
elif [[ -n '${{ parameters.reuseBuildArtifactsFrom }}' ]]; then
|
||||
customPrepArgs="${customPrepArgs} --no-sdk --no-artifacts"
|
||||
prepSdk=false
|
||||
fi
|
||||
|
||||
if [[ "$prepSdk" == "false" ]]; then
|
||||
mkdir $(sourcesPath)/.dotnet
|
||||
previousSdkPath="$(sourcesPath)/prereqs/packages/archive/dotnet-sdk-*.tar.gz"
|
||||
eval tar -ozxf "$previousSdkPath" -C "$(sourcesPath)/.dotnet"
|
||||
eval rm -f "$previousSdkPath"
|
||||
|
||||
echo "##vso[task.setvariable variable=additionalBuildArgs]--with-sdk /vmr/.dotnet"
|
||||
fi
|
||||
|
||||
docker run --rm -v "$(sourcesPath):/vmr" -w /vmr ${{ parameters.container }} ./prep.sh $customPrepArgs
|
||||
displayName: Prep the Build
|
||||
|
||||
- script: |
|
||||
set -x
|
||||
df -h
|
||||
|
||||
# Allows Arcade to have access to the commit for the build
|
||||
customRunArgs="-e BUILD_SOURCEVERSION"
|
||||
customBuildArgs=
|
||||
if [[ '${{ parameters.runOnline }}' == 'True' ]]; then
|
||||
customBuildArgs='--online'
|
||||
else
|
||||
customRunArgs="$customRunArgs --network none"
|
||||
fi
|
||||
|
||||
if [[ '${{ parameters.enablePoison }}' == 'True' ]]; then
|
||||
customBuildArgs="$customBuildArgs --poison"
|
||||
fi
|
||||
|
||||
if [[ '${{ parameters.buildFromArchive }}' == 'True' ]]; then
|
||||
customBuildArgs="$customBuildArgs --source-repository https://github.com/dotnet/dotnet"
|
||||
customBuildArgs="$customBuildArgs --source-version $(git -C "${{ parameters.vmrPath }}" rev-parse HEAD)"
|
||||
fi
|
||||
|
||||
if [[ '${{ parameters.useMonoRuntime }}' == 'True' ]]; then
|
||||
customBuildArgs="$customBuildArgs --use-mono-runtime"
|
||||
fi
|
||||
|
||||
docker run --rm -v "$(sourcesPath):/vmr" -w /vmr $customRunArgs ${{ parameters.container }} ./build.sh --clean-while-building $(additionalBuildArgs) $customBuildArgs
|
||||
displayName: Build
|
||||
|
||||
- script: |
|
||||
set -x
|
||||
|
||||
dockerVolumeArgs="-v $(sourcesPath):/vmr"
|
||||
dockerEnvArgs="-e SMOKE_TESTS_EXCLUDE_OMNISHARP=${{ parameters.excludeOmniSharpTests }} -e SMOKE_TESTS_WARN_SDK_CONTENT_DIFFS=true -e SMOKE_TESTS_RUNNING_IN_CI=true"
|
||||
|
||||
docker run --rm $dockerVolumeArgs -w /vmr $dockerEnvArgs ${{ parameters.container }} ./build.sh --run-smoke-test $(additionalBuildArgs) -- -p:SmokeTestConsoleVerbosity=detailed
|
||||
displayName: Run Tests
|
||||
|
||||
# Don't use CopyFiles@2 as it encounters permissions issues because it indexes all files in the source directory graph.
|
||||
- script: |
|
||||
set -x
|
||||
|
||||
targetFolder=$(Build.StagingDirectory)/BuildLogs/
|
||||
mkdir -p ${targetFolder}
|
||||
|
||||
cd "$(sourcesPath)"
|
||||
find artifacts/ -type f -name "*.binlog" -exec cp {} --parents -t ${targetFolder} \;
|
||||
find artifacts/ -type f -name "*.log" -exec cp {} --parents -t ${targetFolder} \;
|
||||
find artifacts/prebuilt-report/ -exec cp {} --parents -t ${targetFolder} \;
|
||||
find src/ -type f -name "*.binlog" -exec cp {} --parents -t ${targetFolder} \;
|
||||
find src/ -type f -name "*.log" -exec cp {} --parents -t ${targetFolder} \;
|
||||
find test/ -type f -name "*.binlog" -exec cp {} --parents -t ${targetFolder} \;
|
||||
find test/ -type f -name "Updated*.diff" -exec cp {} --parents -t ${targetFolder} \;
|
||||
find test/ -type f -name "Updated*.txt" -exec cp {} --parents -t ${targetFolder} \;
|
||||
displayName: Prepare BuildLogs staging directory
|
||||
continueOnError: true
|
||||
condition: succeededOrFailed()
|
||||
|
||||
- publish: '$(Build.StagingDirectory)/BuildLogs'
|
||||
artifact: $(Agent.JobName)_BuildLogs_Attempt$(System.JobAttempt)
|
||||
displayName: Publish BuildLogs
|
||||
continueOnError: true
|
||||
condition: succeededOrFailed()
|
||||
|
||||
- task: PublishTestResults@2
|
||||
displayName: Publish Test Results
|
||||
condition: succeededOrFailed()
|
||||
continueOnError: true
|
||||
inputs:
|
||||
testRunner: vSTest
|
||||
testResultsFiles: 'test/**/*.trx'
|
||||
searchFolder: ${{ variables.sourcesPath }}
|
||||
mergeTestResults: true
|
||||
publishRunAttachments: true
|
||||
testRunTitle: SourceBuild_SmokeTests_$(Agent.JobName)
|
||||
|
||||
- publish: '${{ variables.sourcesPath }}/artifacts/${{ parameters.architecture }}/Release/'
|
||||
artifact: $(Agent.JobName)_Artifacts
|
||||
displayName: Publish Artifacts
|
||||
condition: succeededOrFailed()
|
||||
continueOnError: true
|
85
eng/pipelines/templates/jobs/vmr-synchronization.yml
Normal file
85
eng/pipelines/templates/jobs/vmr-synchronization.yml
Normal file
|
@ -0,0 +1,85 @@
|
|||
### This job synchronizes code from product repositories into the VMR (https://github.com/dotnet/dotnet)
|
||||
### It synchronizes the content of the VMR to this new commit and pushes the changes
|
||||
|
||||
parameters:
|
||||
- name: targetRef
|
||||
displayName: Target revision of dotnet/installer to synchronize
|
||||
type: string
|
||||
default: $(Build.SourceVersion)
|
||||
|
||||
- name: vmrBranch
|
||||
displayName: dotnet/dotnet branch to use
|
||||
type: string
|
||||
default: $(Build.SourceBranch)
|
||||
|
||||
- name: noPush
|
||||
displayName: Don't push changes to dotnet/dotnet
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
jobs:
|
||||
- job: Synchronize_VMR
|
||||
displayName: Synchronize dotnet/dotnet
|
||||
timeoutInMinutes: 120
|
||||
variables:
|
||||
- template: /eng/common/templates/variables/pool-providers.yml
|
||||
- name: vmrPath
|
||||
value: $(Agent.BuildDirectory)/vmr
|
||||
- ${{ if not(parameters.noPush) }}:
|
||||
- ${{ if and( eq(variables['System.TeamProject'], 'internal'), or(startswith(variables['Build.SourceBranch'], 'refs/heads/release/'), eq(variables['Build.SourceBranch'], 'refs/heads/main'))) }}:
|
||||
- group: DotNetBot-GitHub
|
||||
- group: DotNetBot-GitHub-No-Scopes
|
||||
- name: vmrPublicUrl
|
||||
value: https://github.com/dotnet/dotnet
|
||||
- ${{ if and( eq(variables['System.TeamProject'], 'internal'), startswith(variables['Build.SourceBranch'], 'refs/heads/internal/release/')) }}:
|
||||
- group: DotNetBot-AzDO-PAT
|
||||
- name: vmrInternalUrl
|
||||
value: https://dnceng@dev.azure.com/dnceng/internal/_git/dotnet-dotnet
|
||||
|
||||
pool:
|
||||
${{ if eq(variables['System.TeamProject'], 'public') }}:
|
||||
name: $(DncEngPublicBuildPool)
|
||||
demands: ImageOverride -equals Build.Ubuntu.2004.Amd64.Open
|
||||
${{ if eq(variables['System.TeamProject'], 'internal') }}:
|
||||
name: $(DncEngInternalBuildPool)
|
||||
demands: ImageOverride -equals Build.Ubuntu.2004.Amd64
|
||||
|
||||
steps:
|
||||
- template: ../steps/vmr-prepare.yml
|
||||
parameters:
|
||||
vmrBranch: ${{ parameters.vmrBranch }}
|
||||
isBuiltFromVmr: false
|
||||
|
||||
- template: ../steps/vmr-pull-updates.yml
|
||||
parameters:
|
||||
vmrPath: $(vmrPath)
|
||||
vmrBranch: ${{ parameters.vmrBranch }}
|
||||
targetRef: ${{ parameters.targetRef }}
|
||||
|
||||
|
||||
- ${{ if and(not(parameters.noPush), not(in(variables['Build.Reason'], 'PullRequest')), eq(variables['System.TeamProject'], 'internal')) }}:
|
||||
# Push main and release branches to the public VMR
|
||||
- ${{ if or(eq(parameters.vmrBranch, 'main'), startsWith(parameters.vmrBranch, 'release/')) }}:
|
||||
- script: >
|
||||
./.dotnet/dotnet darc vmr push
|
||||
--vmr '$(vmrPath)'
|
||||
--commit-verification-pat '$(BotAccount-dotnet-maestro-bot-no-scopes-PAT)'
|
||||
--branch '${{ parameters.vmrBranch }}'
|
||||
--remote-url '$(vmrPublicUrl)'
|
||||
--github-pat '$(BotAccount-dotnet-bot-repo-PAT)'
|
||||
--verbose
|
||||
displayName: Push changes to dotnet/dotnet (public)
|
||||
workingDirectory: $(Agent.BuildDirectory)/installer
|
||||
|
||||
# Push internal/release branches to the internal VMR
|
||||
- ${{ if startsWith(parameters.vmrBranch, 'internal/release/') }}:
|
||||
- script: >
|
||||
./.dotnet/dotnet darc vmr push
|
||||
--vmr '$(vmrPath)'
|
||||
--skip-commit-verification
|
||||
--branch '${{ parameters.vmrBranch }}'
|
||||
--remote-url '$(vmrInternalUrl)'
|
||||
--azdev-pat '$(dn-bot-dnceng-build-rw-code-rw)'
|
||||
--verbose
|
||||
displayName: Push changes to dotnet-dotnet (internal)
|
||||
workingDirectory: $(Agent.BuildDirectory)/installer
|
276
eng/pipelines/templates/stages/vmr-build.yml
Normal file
276
eng/pipelines/templates/stages/vmr-build.yml
Normal file
|
@ -0,0 +1,276 @@
|
|||
### This stage source-builds https://github.com/dotnet/dotnet with varying parameters
|
||||
### If run in a PR, new changes are applied to a local copy of the VMR, then it is source-built and tested
|
||||
|
||||
parameters:
|
||||
dependsOn: []
|
||||
condition: always()
|
||||
|
||||
# Branch of the VMR to use (to push to for internal builds)
|
||||
vmrBranch: $(Build.SourceBranch)
|
||||
|
||||
# True when build is running from dotnet/dotnet directly
|
||||
isBuiltFromVmr:
|
||||
|
||||
# The following parameters aren't expected to be passed in rather they are used for encapsulation
|
||||
# -----------------------------------------------------------------------------------------------
|
||||
alpine317Container: mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.17
|
||||
centOSStream8Container: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream8
|
||||
centOSStream9Container: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream9
|
||||
fedora38Container: mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-38
|
||||
ubuntu2204Container: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-22.04
|
||||
ubuntu2204ArmContainer: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-22.04-arm64
|
||||
|
||||
# Internal builds
|
||||
poolInternalAmd64:
|
||||
name: NetCore1ESPool-Svc-Internal
|
||||
demands: ImageOverride -equals Build.Ubuntu.1804.Amd64
|
||||
poolInternalAmd64PR:
|
||||
name: NetCore1ESPool-Internal-XL
|
||||
demands: ImageOverride -equals Build.Ubuntu.1804.Amd64
|
||||
poolInternalArm64:
|
||||
name: Docker-Linux-Arm-Internal
|
||||
|
||||
# Public builds / PRs
|
||||
poolPublicAmd64:
|
||||
name: NetCore-Public-XL
|
||||
demands: ImageOverride -equals Build.Ubuntu.1804.Amd64.Open
|
||||
|
||||
stages:
|
||||
- stage: VMR_Source_Build
|
||||
displayName: VMR Source-Build
|
||||
dependsOn: ${{ parameters.dependsOn }}
|
||||
condition: ${{ parameters.condition }}
|
||||
variables:
|
||||
- ${{ if eq(variables['System.TeamProject'], 'public') }}:
|
||||
- name: defaultPoolName
|
||||
value: ${{ parameters.poolPublicAmd64.name }}
|
||||
- name: defaultPoolDemands
|
||||
value: ${{ parameters.poolPublicAmd64.demands }}
|
||||
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
|
||||
- ${{ if in(variables['Build.Reason'], 'PullRequest') }}:
|
||||
- name: defaultPoolName
|
||||
value: ${{ parameters.poolInternalAmd64PR.name }}
|
||||
- name: defaultPoolDemands
|
||||
value: ${{ parameters.poolInternalAmd64PR.demands }}
|
||||
- ${{ else }}:
|
||||
- name: defaultPoolName
|
||||
value: ${{ parameters.poolInternalAmd64.name }}
|
||||
- name: defaultPoolDemands
|
||||
value: ${{ parameters.poolInternalAmd64.demands }}
|
||||
|
||||
- ${{ if ne(parameters.vmrBranch, '') }}:
|
||||
- name: VmrBranch
|
||||
value: ${{ parameters.vmrBranch }}
|
||||
- ${{ else }}:
|
||||
- name: VmrBranch
|
||||
value: ${{ replace(replace(variables['Build.SourceBranch'], 'refs/heads/', ''), 'refs/pull/', '') }}
|
||||
|
||||
jobs:
|
||||
|
||||
# PR and CI legs ------------------------------------
|
||||
|
||||
- template: ../jobs/vmr-build.yml
|
||||
parameters:
|
||||
# Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline
|
||||
buildName: CentOSStream8_Online_MsftSdk
|
||||
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
|
||||
vmrBranch: ${{ variables.VmrBranch }}
|
||||
architecture: x64
|
||||
pool:
|
||||
name: ${{ variables.defaultPoolName }}
|
||||
demands: ${{ variables.defaultPoolDemands }}
|
||||
container: ${{ parameters.centOSStream8Container }}
|
||||
buildFromArchive: false # 🚫
|
||||
enablePoison: false # 🚫
|
||||
excludeOmniSharpTests: true # ✅
|
||||
runOnline: true # ✅
|
||||
useMonoRuntime: false # 🚫
|
||||
withPreviousSDK: false # 🚫
|
||||
|
||||
- template: ../jobs/vmr-build.yml
|
||||
parameters:
|
||||
# Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline
|
||||
buildName: CentOSStream8_Offline_MsftSdk
|
||||
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
|
||||
vmrBranch: ${{ variables.VmrBranch }}
|
||||
architecture: x64
|
||||
pool:
|
||||
name: ${{ variables.defaultPoolName }}
|
||||
demands: ${{ variables.defaultPoolDemands }}
|
||||
container: ${{ parameters.centOSStream8Container }}
|
||||
buildFromArchive: true # ✅
|
||||
enablePoison: false # 🚫
|
||||
excludeOmniSharpTests: true # ✅
|
||||
runOnline: false # 🚫
|
||||
useMonoRuntime: false # 🚫
|
||||
withPreviousSDK: false # 🚫
|
||||
|
||||
- ${{ if ne(variables['Build.Reason'], 'PullRequest') }}:
|
||||
|
||||
# CI - Stage 1 x64 legs ------------------------------------
|
||||
|
||||
- template: ../jobs/vmr-build.yml
|
||||
parameters:
|
||||
# Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline
|
||||
buildName: Alpine317_Offline_MsftSdk
|
||||
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
|
||||
vmrBranch: ${{ variables.VmrBranch }}
|
||||
architecture: x64
|
||||
pool:
|
||||
name: ${{ variables.defaultPoolName }}
|
||||
demands: ${{ variables.defaultPoolDemands }}
|
||||
container: ${{ parameters.alpine317Container }}
|
||||
buildFromArchive: false # ✅
|
||||
enablePoison: false # 🚫
|
||||
excludeOmniSharpTests: true # ✅
|
||||
runOnline: false # 🚫
|
||||
useMonoRuntime: false # 🚫
|
||||
withPreviousSDK: false # 🚫
|
||||
|
||||
- template: ../jobs/vmr-build.yml
|
||||
parameters:
|
||||
# Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline
|
||||
buildName: CentOSStream8_Online_PreviousSourceBuiltSdk
|
||||
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
|
||||
vmrBranch: ${{ variables.VmrBranch }}
|
||||
architecture: x64
|
||||
pool:
|
||||
name: ${{ variables.defaultPoolName }}
|
||||
demands: ${{ variables.defaultPoolDemands }}
|
||||
container: ${{ parameters.centOSStream8Container }}
|
||||
buildFromArchive: false # 🚫
|
||||
enablePoison: false # 🚫
|
||||
excludeOmniSharpTests: true # ✅
|
||||
runOnline: true # ✅
|
||||
useMonoRuntime: false # 🚫
|
||||
withPreviousSDK: true # ✅
|
||||
|
||||
- template: ../jobs/vmr-build.yml
|
||||
parameters:
|
||||
# Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline
|
||||
buildName: CentOSStream8_Mono_Offline_MsftSdk
|
||||
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
|
||||
vmrBranch: ${{ variables.VmrBranch }}
|
||||
architecture: x64
|
||||
pool:
|
||||
name: ${{ variables.defaultPoolName }}
|
||||
demands: ${{ variables.defaultPoolDemands }}
|
||||
container: ${{ parameters.centOSStream8Container }}
|
||||
buildFromArchive: true # ✅
|
||||
enablePoison: false # 🚫
|
||||
excludeOmniSharpTests: true # ✅
|
||||
runOnline: false # 🚫
|
||||
useMonoRuntime: true # ✅
|
||||
withPreviousSDK: false # 🚫
|
||||
|
||||
- template: ../jobs/vmr-build.yml
|
||||
parameters:
|
||||
# Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline
|
||||
buildName: CentOSStream9_Offline_MsftSdk
|
||||
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
|
||||
vmrBranch: ${{ variables.VmrBranch }}
|
||||
architecture: x64
|
||||
pool:
|
||||
name: ${{ variables.defaultPoolName }}
|
||||
demands: ${{ variables.defaultPoolDemands }}
|
||||
container: ${{ parameters.centOSStream9Container }}
|
||||
buildFromArchive: true # ✅
|
||||
enablePoison: false # 🚫
|
||||
excludeOmniSharpTests: false # 🚫
|
||||
runOnline: false # 🚫
|
||||
useMonoRuntime: false # 🚫
|
||||
withPreviousSDK: false # 🚫
|
||||
|
||||
- template: ../jobs/vmr-build.yml
|
||||
parameters:
|
||||
# Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline
|
||||
buildName: Fedora38_Offline_MsftSdk
|
||||
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
|
||||
vmrBranch: ${{ variables.VmrBranch }}
|
||||
architecture: x64
|
||||
pool:
|
||||
name: ${{ variables.defaultPoolName }}
|
||||
demands: ${{ variables.defaultPoolDemands }}
|
||||
container: ${{ parameters.fedora38Container }}
|
||||
buildFromArchive: true # ✅
|
||||
enablePoison: true # ✅
|
||||
excludeOmniSharpTests: false # 🚫
|
||||
runOnline: false # 🚫
|
||||
useMonoRuntime: false # 🚫
|
||||
withPreviousSDK: false # 🚫
|
||||
|
||||
- template: ../jobs/vmr-build.yml
|
||||
parameters:
|
||||
# Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline
|
||||
buildName: Ubuntu2204_Offline_MsftSdk
|
||||
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
|
||||
vmrBranch: ${{ variables.VmrBranch }}
|
||||
architecture: x64
|
||||
pool:
|
||||
name: ${{ variables.defaultPoolName }}
|
||||
demands: ${{ variables.defaultPoolDemands }}
|
||||
container: ${{ parameters.ubuntu2204Container }}
|
||||
buildFromArchive: false # 🚫
|
||||
enablePoison: false # 🚫
|
||||
excludeOmniSharpTests: false # 🚫
|
||||
runOnline: false # 🚫
|
||||
useMonoRuntime: false # 🚫
|
||||
withPreviousSDK: false # 🚫
|
||||
|
||||
# CI - Stage 1 arm64 Legs ------------------------------------
|
||||
|
||||
- template: ../jobs/vmr-build.yml
|
||||
parameters:
|
||||
# Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline
|
||||
buildName: Ubuntu2204Arm64_Offline_MsftSdk
|
||||
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
|
||||
vmrBranch: ${{ variables.VmrBranch }}
|
||||
architecture: arm64
|
||||
pool: ${{ parameters.poolInternalArm64 }}
|
||||
container: ${{ parameters.ubuntu2204ArmContainer }}
|
||||
buildFromArchive: false # 🚫
|
||||
enablePoison: false # 🚫
|
||||
excludeOmniSharpTests: false # 🚫
|
||||
runOnline: false # 🚫
|
||||
useMonoRuntime: false # 🚫
|
||||
withPreviousSDK: false # 🚫
|
||||
|
||||
# CI - Stage 2 x64 Legs ------------------------------------
|
||||
|
||||
- template: ../jobs/vmr-build.yml
|
||||
parameters:
|
||||
# Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline
|
||||
buildName: CentOSStream8_Online_CurrentSourceBuiltSdk
|
||||
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
|
||||
vmrBranch: ${{ variables.VmrBranch }}
|
||||
architecture: x64
|
||||
pool:
|
||||
name: ${{ variables.defaultPoolName }}
|
||||
demands: ${{ variables.defaultPoolDemands }}
|
||||
container: ${{ parameters.centOSStream8Container }}
|
||||
buildFromArchive: false # 🚫
|
||||
enablePoison: false # 🚫
|
||||
excludeOmniSharpTests: true # ✅
|
||||
runOnline: false # 🚫
|
||||
useMonoRuntime: false # 🚫
|
||||
withPreviousSDK: false # 🚫
|
||||
reuseBuildArtifactsFrom: CentOSStream8_Online_MsftSdk
|
||||
|
||||
- template: ../jobs/vmr-build.yml
|
||||
parameters:
|
||||
# Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline
|
||||
buildName: Fedora38_Offline_CurrentSourceBuiltSdk
|
||||
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
|
||||
vmrBranch: ${{ variables.VmrBranch }}
|
||||
architecture: x64
|
||||
pool:
|
||||
name: ${{ variables.defaultPoolName }}
|
||||
demands: ${{ variables.defaultPoolDemands }}
|
||||
container: ${{ parameters.fedora38Container }}
|
||||
buildFromArchive: false # 🚫
|
||||
enablePoison: false # 🚫
|
||||
excludeOmniSharpTests: false # 🚫
|
||||
runOnline: false # 🚫
|
||||
useMonoRuntime: false # 🚫
|
||||
withPreviousSDK: false # 🚫
|
||||
reuseBuildArtifactsFrom: Fedora38_Offline_MsftSdk
|
43
eng/pipelines/templates/steps/vmr-prepare.yml
Normal file
43
eng/pipelines/templates/steps/vmr-prepare.yml
Normal file
|
@ -0,0 +1,43 @@
|
|||
### These steps clone the VMR (https://github.com/dotnet/dotnet) into $(Agent.BuildDirectory)/vmr
|
||||
### Component Governance scan is also triggered over the VMR's non-repo sources
|
||||
|
||||
parameters:
|
||||
- name: isBuiltFromVmr
|
||||
displayName: True when build is running from dotnet/dotnet directly
|
||||
type: boolean
|
||||
|
||||
- name: vmrBranch
|
||||
displayName: dotnet/dotnet branch to use
|
||||
type: string
|
||||
default: $(Build.SourceBranch)
|
||||
|
||||
- name: skipComponentGovernanceDetection
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
steps:
|
||||
- ${{ if parameters.isBuiltFromVmr }}:
|
||||
- checkout: self
|
||||
displayName: Clone dotnet/dotnet
|
||||
path: vmr
|
||||
clean: true
|
||||
|
||||
- ${{ else }}:
|
||||
- checkout: vmr
|
||||
displayName: Clone dotnet/dotnet
|
||||
path: vmr
|
||||
clean: true
|
||||
|
||||
- ${{ if or(not(parameters.isBuiltFromVmr), eq(variables['System.TeamProject'], 'internal')) }}:
|
||||
- script: |
|
||||
git switch -c ${{ parameters.vmrBranch }}
|
||||
displayName: Checkout ${{ parameters.vmrBranch }}
|
||||
workingDirectory: $(Agent.BuildDirectory)/vmr
|
||||
|
||||
# TODO (https://github.com/dotnet/arcade/issues/11332): Allow full CG?
|
||||
# Currently, we ignore dirs of individual repos - they have been scanned before
|
||||
- ${{ if and(not(parameters.skipComponentGovernanceDetection), ne(variables['Build.Reason'], 'PullRequest'), eq(variables['System.TeamProject'], 'internal')) }}:
|
||||
- task: ComponentGovernanceComponentDetection@0
|
||||
inputs:
|
||||
sourceScanPath: $(Agent.BuildDirectory)/vmr
|
||||
ignoreDirectories: $(Agent.BuildDirectory)/vmr/src
|
43
eng/pipelines/templates/steps/vmr-pull-updates.yml
Normal file
43
eng/pipelines/templates/steps/vmr-pull-updates.yml
Normal file
|
@ -0,0 +1,43 @@
|
|||
### These steps synchronize new code from product repositories into the VMR (https://github.com/dotnet/dotnet).
|
||||
### They initialize the darc CLI and pull the new updates.
|
||||
### Changes are applied locally onto the already cloned VMR (located in $vmrPath).
|
||||
|
||||
parameters:
|
||||
- name: vmrBranch
|
||||
displayName: dotnet/dotnet branch to use
|
||||
type: string
|
||||
|
||||
- name: targetRef
|
||||
displayName: Target revision in dotnet/installer to synchronize
|
||||
type: string
|
||||
default: $(Build.SourceVersion)
|
||||
|
||||
- name: vmrPath
|
||||
displayName: Path where the dotnet/dotnet is checked out to
|
||||
type: string
|
||||
default: $(Agent.BuildDirectory)/vmr
|
||||
|
||||
steps:
|
||||
- checkout: self
|
||||
displayName: Clone dotnet/installer
|
||||
path: installer
|
||||
|
||||
- script: |
|
||||
git checkout -B ${{ parameters.vmrBranch }}
|
||||
echo "##vso[task.setvariable variable=vmrBranch]${{ parameters.vmrBranch }}"
|
||||
displayName: Prepare branch ${{ parameters.vmrBranch }}
|
||||
workingDirectory: ${{ parameters.vmrPath }}
|
||||
|
||||
- script: >
|
||||
./eng/vmr-sync.sh
|
||||
--vmr ${{ parameters.vmrPath }}
|
||||
--tmp $(Agent.TempDirectory)
|
||||
--branch ${{ parameters.vmrBranch }}
|
||||
--repository "installer:${{ parameters.targetRef }}"
|
||||
--recursive
|
||||
--remote "installer:$(pwd)"
|
||||
--readme-template $(Agent.BuildDirectory)/installer/src/VirtualMonoRepo/README.template.md
|
||||
--tpn-template $(Agent.BuildDirectory)/installer/src/VirtualMonoRepo/THIRD-PARTY-NOTICES.template.txt
|
||||
--debug
|
||||
displayName: Synchronize dotnet/dotnet
|
||||
workingDirectory: $(Agent.BuildDirectory)/installer
|
11
eng/pipelines/templates/variables/pipelines.yml
Normal file
11
eng/pipelines/templates/variables/pipelines.yml
Normal file
|
@ -0,0 +1,11 @@
|
|||
variables:
|
||||
- name: AZDO_PROJECT
|
||||
value: internal
|
||||
- name: AZDO_ORG
|
||||
value: https://dev.azure.com/dnceng/
|
||||
- name: INSTALLER_OFFICIAL_CI_PIPELINE_ID
|
||||
value: 286
|
||||
- name: INSTALLER_TARBALL_BUILD_CI_PIPELINE_ID
|
||||
value: 1011
|
||||
- name: DOTNET_DOTNET_CI_PIPELINE_ID
|
||||
value: 1219
|
53
eng/pipelines/vmr-build-internal.yml
Normal file
53
eng/pipelines/vmr-build-internal.yml
Normal file
|
@ -0,0 +1,53 @@
|
|||
trigger: none
|
||||
pr:
|
||||
branches:
|
||||
include:
|
||||
- main
|
||||
- release/*
|
||||
- internal/release/*
|
||||
|
||||
parameters:
|
||||
- name: vmrBranch
|
||||
displayName: dotnet/dotnet branch to use
|
||||
type: string
|
||||
default: ' '
|
||||
|
||||
- name: disableVmrBuild
|
||||
displayName: Skip source-building the VMR
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
variables:
|
||||
- ${{ if ne(parameters.vmrBranch, ' ') }}:
|
||||
- name: VmrBranch
|
||||
value: ${{ replace(parameters.vmrBranch, ' ', '') }}
|
||||
- ${{ else }}:
|
||||
- name: VmrBranch
|
||||
value: ${{ replace(replace(variables['System.PullRequest.TargetBranch'], 'refs/heads/', ''), 'refs/pull/', '') }}
|
||||
|
||||
resources:
|
||||
repositories:
|
||||
- repository: vmr
|
||||
type: git
|
||||
name: dotnet-dotnet
|
||||
ref: $(VmrBranch)
|
||||
|
||||
stages:
|
||||
# You can temporarily disable the VMR Build stage by changing the default of disableVmrBuild
|
||||
- ${{ if not(parameters.disableVmrBuild) }}:
|
||||
- template: templates/stages/vmr-build.yml
|
||||
parameters:
|
||||
vmrBranch: ${{ variables.VmrBranch }}
|
||||
isBuiltFromVmr: false
|
||||
|
||||
# In case the VMR Build stage is temporarily disabled, the VMR synchronization step is run to validate
|
||||
# that the PR can be merged and later synchronized into the VMR without problems.
|
||||
- ${{ else }}:
|
||||
- stage: Synchronize_VMR
|
||||
displayName: Synchronize VMR
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/jobs/vmr-synchronization.yml
|
||||
parameters:
|
||||
vmrBranch: ${{ variables.VmrBranch }}
|
||||
noPush: true
|
53
eng/pipelines/vmr-build.yml
Normal file
53
eng/pipelines/vmr-build.yml
Normal file
|
@ -0,0 +1,53 @@
|
|||
trigger: none
|
||||
pr:
|
||||
branches:
|
||||
include:
|
||||
- main
|
||||
- release/*
|
||||
|
||||
parameters:
|
||||
- name: vmrBranch
|
||||
displayName: dotnet/dotnet branch to push to
|
||||
type: string
|
||||
default: ' '
|
||||
|
||||
- name: disableVmrBuild
|
||||
displayName: Skip source-building the VMR
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
variables:
|
||||
- ${{ if ne(parameters.vmrBranch, ' ') }}:
|
||||
- name: VmrBranch
|
||||
value: ${{ replace(parameters.vmrBranch, ' ', '') }}
|
||||
- ${{ else }}:
|
||||
- name: VmrBranch
|
||||
value: ${{ replace(replace(variables['System.PullRequest.TargetBranch'], 'refs/heads/', ''), 'refs/pull/', '') }}
|
||||
|
||||
resources:
|
||||
repositories:
|
||||
- repository: vmr
|
||||
type: github
|
||||
name: dotnet/dotnet
|
||||
endpoint: dotnet
|
||||
ref: ${{ variables.VmrBranch }}
|
||||
|
||||
stages:
|
||||
# You can temporarily disable the VMR Build stage by setting the disableVmrBuild variable
|
||||
- ${{ if not(parameters.disableVmrBuild) }}:
|
||||
- template: templates/stages/vmr-build.yml
|
||||
parameters:
|
||||
vmrBranch: ${{ variables.VmrBranch }}
|
||||
isBuiltFromVmr: false
|
||||
|
||||
# In case the VMR Build stage is temporarily disabled, the VMR synchronization step is run to validate
|
||||
# that the PR can be merged and later synchronized into the VMR without problems.
|
||||
- ${{ else }}:
|
||||
- stage: Synchronize_VMR
|
||||
displayName: Synchronize VMR
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- template: templates/jobs/vmr-synchronization.yml
|
||||
parameters:
|
||||
vmrBranch: ${{ variables.VmrBranch }}
|
||||
noPush: true
|
33
eng/pipelines/vmr-sync-internal.yml
Normal file
33
eng/pipelines/vmr-sync-internal.yml
Normal file
|
@ -0,0 +1,33 @@
|
|||
pr: none
|
||||
|
||||
trigger:
|
||||
batch: true
|
||||
branches:
|
||||
include:
|
||||
- internal/release/*
|
||||
|
||||
resources:
|
||||
repositories:
|
||||
- repository: vmr
|
||||
type: git
|
||||
name: dotnet-dotnet
|
||||
ref: $(Build.SourceBranch)
|
||||
|
||||
parameters:
|
||||
- name: vmrBranch
|
||||
displayName: dotnet-dotnet branch to push to
|
||||
type: string
|
||||
default: ' '
|
||||
|
||||
variables:
|
||||
- ${{ if ne(parameters.vmrBranch, ' ') }}:
|
||||
- name: VmrBranch
|
||||
value: ${{ replace(parameters.vmrBranch, ' ', '') }}
|
||||
- ${{ else }}:
|
||||
- name: VmrBranch
|
||||
value: ${{ replace(replace(variables['Build.SourceBranch'], 'refs/heads/', ''), 'refs/pull/', '') }}
|
||||
|
||||
jobs:
|
||||
- template: templates/jobs/vmr-synchronization.yml
|
||||
parameters:
|
||||
vmrBranch: ${{ variables.VmrBranch }}
|
37
eng/pipelines/vmr-sync.yml
Normal file
37
eng/pipelines/vmr-sync.yml
Normal file
|
@ -0,0 +1,37 @@
|
|||
pr: none
|
||||
|
||||
trigger:
|
||||
batch: true
|
||||
branches:
|
||||
include:
|
||||
- main
|
||||
- release/*
|
||||
|
||||
resources:
|
||||
repositories:
|
||||
- repository: vmr
|
||||
type: github
|
||||
name: dotnet/dotnet
|
||||
endpoint: dotnet
|
||||
ref: $(Build.SourceBranch)
|
||||
|
||||
parameters:
|
||||
- name: vmrBranch
|
||||
displayName: dotnet/dotnet branch to push to
|
||||
type: string
|
||||
default: ' '
|
||||
|
||||
variables:
|
||||
- ${{ if ne(parameters.vmrBranch, ' ') }}:
|
||||
- name: VmrBranch
|
||||
value: ${{ replace(parameters.vmrBranch, ' ', '') }}
|
||||
- ${{ else }}:
|
||||
- name: VmrBranch
|
||||
value: ${{ replace(replace(variables['Build.SourceBranch'], 'refs/heads/', ''), 'refs/pull/', '') }}
|
||||
|
||||
jobs:
|
||||
- template: /eng/pipelines/templates/jobs/vmr-synchronization.yml
|
||||
parameters:
|
||||
vmrBranch: ${{ variables.VmrBranch }}
|
||||
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
trigger: none
|
||||
pr: none
|
||||
resources:
|
||||
pipelines:
|
||||
- pipeline: installer-build-resource
|
||||
source: dotnet-installer-official-ci
|
||||
trigger:
|
||||
branches:
|
||||
include:
|
||||
- main
|
||||
- release/*
|
||||
- internal/release/*
|
||||
exclude:
|
||||
- release/7.0.2xx
|
||||
- internal/release/7.0.2xx
|
||||
- release/7.0.3xx
|
||||
- internal/release/7.0.3xx
|
||||
- release/7.0.4xx
|
||||
- internal/release/7.0.4xx
|
||||
stages:
|
||||
- build
|
||||
|
||||
stages:
|
||||
- stage: build
|
||||
jobs:
|
||||
- template: /src/SourceBuild/Arcade/eng/common/templates/job/source-build-run-tarball-build.yml
|
||||
parameters:
|
||||
installerBuildResourceId: installer-build-resource
|
|
@ -1,14 +0,0 @@
|
|||
trigger: none
|
||||
pr: none
|
||||
resources:
|
||||
pipelines:
|
||||
- pipeline: installer-build-resource
|
||||
source: installer
|
||||
trigger: none
|
||||
|
||||
stages:
|
||||
- stage: build
|
||||
jobs:
|
||||
- template: /src/SourceBuild/Arcade/eng/common/templates/job/source-build-run-tarball-build.yml
|
||||
parameters:
|
||||
installerBuildResourceId: installer-build-resource
|
268
eng/vmr-sync.sh
Executable file
268
eng/vmr-sync.sh
Executable file
|
@ -0,0 +1,268 @@
|
|||
#!/bin/bash
|
||||
|
||||
### This script is used for synchronizing the dotnet/dotnet VMR locally. This means pulling new
|
||||
### code from various repositories into the 'dotnet/dotnet' repository.
|
||||
###
|
||||
### The script is used during CI to ingest new code based on dotnet/installer but it can also help
|
||||
### for reproducing potential failures during installer's PRs, namely to fix the Source-Build.
|
||||
### Another usecase is to try manually synchronizing a given commit of some repo into the VMR and
|
||||
### trying to Source-Build the VMR. This can help when fixing the Source-Build but using a commit
|
||||
### from a not-yet merged branch (or fork) to test the fix will help.
|
||||
###
|
||||
### The tooling that synchronizes the VMR will need to clone the various repositories into a temporary
|
||||
### folder. These clones can be re-used in future synchronizations so it is advised you dedicate a
|
||||
### folder to this to speed up your re-runs.
|
||||
###
|
||||
### USAGE:
|
||||
### Synchronize current installer and all dependencies into a local VMR:
|
||||
### ./vmr-sync.sh --vmr "$HOME/repos/dotnet" --tmp "$HOME/repos/tmp"
|
||||
###
|
||||
### Synchronize the VMR to a specific commit of dotnet/runtime using custom fork:
|
||||
### ./vmr-sync.sh \
|
||||
### --repository runtime:e7e71da303af8dc97df99b098f21f526398c3943 \
|
||||
### --remote runtime:https://github.com/yourfork/runtime \
|
||||
### --tmp "$HOME/repos/tmp"
|
||||
###
|
||||
### Options:
|
||||
### -t, --tmp, --tmp-dir PATH
|
||||
### Required. Path to the temporary folder where repositories will be cloned
|
||||
###
|
||||
### -b, --branch, --vmr-branch BRANCH_NAME
|
||||
### Optional. Branch of the 'dotnet/dotnet' repo to synchronize. The VMR will be checked out to this branch
|
||||
###
|
||||
### --debug
|
||||
### Optional. Turns on the most verbose logging for the VMR tooling
|
||||
###
|
||||
### --readme-template
|
||||
### Optional. Template for VMRs README.md used for regenerating the file to list the newest versions of
|
||||
### components.
|
||||
### Defaults to src/VirtualMonoRepo/README.template.md
|
||||
###
|
||||
### --recursive
|
||||
### Optional. Recursively synchronize all the source build dependencies (declared in Version.Details.xml)
|
||||
### This is used when performing the full synchronization during installer's CI and the final VMR sync.
|
||||
### Defaults to false unless no repository is supplied in which case a recursive sync of installer is performed.
|
||||
###
|
||||
### --remote name:URI
|
||||
### Optional. Additional remote to use during the synchronization
|
||||
### This can be used to synchronize to a commit from a fork of the repository
|
||||
### Example: 'runtime:https://github.com/yourfork/runtime'
|
||||
###
|
||||
### -r, --repository name:GIT_REF
|
||||
### Optional. Repository + git ref separated by colon to synchronize to.
|
||||
### This can be a specific commit, branch, tag.
|
||||
### If not supplied, the revision of the parent installer repository of this script will be used (recursively).
|
||||
### Example: 'runtime:my-branch-name'
|
||||
###
|
||||
### --tpn-template
|
||||
### Optional. Template for the header of VMRs THIRD-PARTY-NOTICES file.
|
||||
### Defaults to src/VirtualMonoRepo/THIRD-PARTY-NOTICES.template.txt
|
||||
###
|
||||
### -v, --vmr, --vmr-dir PATH
|
||||
### Optional. Path to the dotnet/dotnet repository. When null, gets cloned to the temporary folder
|
||||
|
||||
source="${BASH_SOURCE[0]}"
|
||||
|
||||
# resolve $source until the file is no longer a symlink
|
||||
while [[ -h "$source" ]]; do
|
||||
scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
|
||||
source="$(readlink "$source")"
|
||||
# if $source was a relative symlink, we need to resolve it relative to the path where the
|
||||
# symlink file was located
|
||||
[[ $source != /* ]] && source="$scriptroot/$source"
|
||||
done
|
||||
scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
|
||||
|
||||
function print_help () {
|
||||
sed -n '/^### /,/^$/p' "$source" | cut -b 5-
|
||||
}
|
||||
|
||||
COLOR_RED=$(tput setaf 1 2>/dev/null || true)
|
||||
COLOR_CYAN=$(tput setaf 6 2>/dev/null || true)
|
||||
COLOR_CLEAR=$(tput sgr0 2>/dev/null || true)
|
||||
COLOR_RESET=uniquesearchablestring
|
||||
FAILURE_PREFIX='> '
|
||||
|
||||
function fail () {
|
||||
echo "${COLOR_RED}$FAILURE_PREFIX${1//${COLOR_RESET}/${COLOR_RED}}${COLOR_CLEAR}" >&2
|
||||
}
|
||||
|
||||
function highlight () {
|
||||
echo "${COLOR_CYAN}$FAILURE_PREFIX${1//${COLOR_RESET}/${COLOR_CYAN}}${COLOR_CLEAR}"
|
||||
}
|
||||
|
||||
installer_dir=$(realpath "$scriptroot/../")
|
||||
|
||||
tmp_dir=''
|
||||
vmr_dir=''
|
||||
vmr_branch=''
|
||||
repository=''
|
||||
additional_remotes=''
|
||||
recursive=false
|
||||
verbosity=verbose
|
||||
readme_template="$installer_dir/src/VirtualMonoRepo/README.template.md"
|
||||
tpn_template="$installer_dir/src/VirtualMonoRepo/THIRD-PARTY-NOTICES.template.txt"
|
||||
|
||||
# If installer is a repo, we're in an installer and not in the dotnet/dotnet repo
|
||||
if [[ -d "$installer_dir/.git" ]]; then
|
||||
additional_remotes="installer:$installer_dir"
|
||||
fi
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
opt="$(echo "$1" | tr "[:upper:]" "[:lower:]")"
|
||||
case "$opt" in
|
||||
-t|--tmp|--tmp-dir)
|
||||
tmp_dir=$2
|
||||
shift
|
||||
;;
|
||||
-v|--vmr|--vmr-dir)
|
||||
vmr_dir=$2
|
||||
shift
|
||||
;;
|
||||
-b|--branch|--vmr-branch)
|
||||
vmr_branch=$2
|
||||
shift
|
||||
;;
|
||||
-r|--repository)
|
||||
repository=$2
|
||||
shift
|
||||
;;
|
||||
--recursive)
|
||||
recursive=true
|
||||
;;
|
||||
--remote)
|
||||
additional_remotes="$additional_remotes,$2"
|
||||
shift
|
||||
;;
|
||||
--readme-template)
|
||||
readme_template=$2
|
||||
shift
|
||||
;;
|
||||
--tpn-template)
|
||||
tpn_template=$2
|
||||
shift
|
||||
;;
|
||||
-d|--debug)
|
||||
verbosity=debug
|
||||
;;
|
||||
-h|--help)
|
||||
print_help
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
fail "Invalid argument: $1"
|
||||
print_help
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
shift
|
||||
done
|
||||
|
||||
# Validation
|
||||
|
||||
if [[ ! -d "$installer_dir" ]]; then
|
||||
fail "Directory '$installer_dir' does not exist. Please specify the path to the dotnet/installer repo"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -z "$tmp_dir" ]]; then
|
||||
fail "Missing --tmp-dir argument. Please specify the path to the temporary folder where the repositories will be cloned"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! -f "$readme_template" ]]; then
|
||||
fail "File '$readme_template' does not exist. Please specify a valid path to the README template"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! -f "$tpn_template" ]]; then
|
||||
fail "File '$tpn_template' does not exist. Please specify a valid path to the THIRD-PARTY-NOTICES template"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Sanitize the input
|
||||
|
||||
# Default when no repository is provided
|
||||
if [[ -z "$repository" ]]; then
|
||||
repository="installer:$(git -C "$installer_dir" rev-parse HEAD)"
|
||||
recursive=true
|
||||
fi
|
||||
|
||||
if [[ -z "$vmr_dir" ]]; then
|
||||
vmr_dir="$tmp_dir/dotnet"
|
||||
fi
|
||||
|
||||
if [[ ! -d "$tmp_dir" ]]; then
|
||||
mkdir -p "$tmp_dir"
|
||||
fi
|
||||
|
||||
if [[ "$verbosity" == "debug" ]]; then
|
||||
set -x
|
||||
fi
|
||||
|
||||
# Prepare the VMR
|
||||
|
||||
if [[ ! -d "$vmr_dir" ]]; then
|
||||
highlight "Cloning 'dotnet/dotnet' into $vmr_dir.."
|
||||
git clone https://github.com/dotnet/dotnet "$vmr_dir"
|
||||
|
||||
if [[ -n "$vmr_branch" ]]; then
|
||||
git -C "$vmr_dir" switch -c "$vmr_branch"
|
||||
fi
|
||||
else
|
||||
if ! git -C "$vmr_dir" diff --quiet; then
|
||||
fail "There are changes in the working tree of $vmr_dir. Please commit or stash your changes"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -n "$vmr_branch" ]]; then
|
||||
highlight "Preparing $vmr_dir"
|
||||
git -C "$vmr_dir" checkout "$vmr_branch"
|
||||
git -C "$vmr_dir" pull
|
||||
fi
|
||||
fi
|
||||
|
||||
set -e
|
||||
|
||||
# Prepare darc
|
||||
|
||||
highlight 'Installing .NET, preparing the tooling..'
|
||||
source "$scriptroot/common/tools.sh"
|
||||
InitializeDotNetCli true
|
||||
dotnet=$(realpath "$scriptroot/../.dotnet/dotnet")
|
||||
"$dotnet" tool restore
|
||||
|
||||
highlight "Starting the synchronization of '$repository'.."
|
||||
set +e
|
||||
|
||||
recursive_arg=''
|
||||
if [[ "$recursive" == "true" ]]; then
|
||||
recursive_arg="--recursive"
|
||||
fi
|
||||
|
||||
if [[ -n "$additional_remotes" ]]; then
|
||||
additional_remotes="--additional-remotes $additional_remotes"
|
||||
fi
|
||||
|
||||
# Synchronize the VMR
|
||||
|
||||
"$dotnet" darc vmr update \
|
||||
--vmr "$vmr_dir" \
|
||||
--tmp "$tmp_dir" \
|
||||
--$verbosity \
|
||||
$recursive_arg \
|
||||
--readme-template "$readme_template" \
|
||||
--tpn-template "$tpn_template" \
|
||||
$additional_remotes \
|
||||
"$repository"
|
||||
|
||||
if [[ $? == 0 ]]; then
|
||||
highlight "Synchronization succeeded"
|
||||
else
|
||||
fail "Synchronization of dotnet/dotnet to '$repository' failed!"
|
||||
fail "'$vmr_dir' is left in its last state (re-run of this script will reset it)."
|
||||
fail "Please inspect the logs which contain path to the failing patch file (use --debug to get all the details)."
|
||||
fail "Once you make changes to the conflicting VMR patch, commit it locally and re-run this script."
|
||||
exit 1
|
||||
fi
|
10
global.json
10
global.json
|
@ -1,17 +1,17 @@
|
|||
{
|
||||
"tools": {
|
||||
"dotnet": "7.0.109",
|
||||
"dotnet": "8.0.100-preview.5.23303.2",
|
||||
"runtimes": {
|
||||
"dotnet": [
|
||||
"$(VSRedistCommonNetCoreSharedFrameworkx6470PackageVersion)"
|
||||
"$(VSRedistCommonNetCoreSharedFrameworkx6480PackageVersion)"
|
||||
]
|
||||
}
|
||||
},
|
||||
"native-tools": {
|
||||
"cmake": "3.16.4"
|
||||
"cmake": "3.21.0"
|
||||
},
|
||||
"msbuild-sdks": {
|
||||
"Microsoft.DotNet.Arcade.Sdk": "7.0.0-beta.23361.2",
|
||||
"Microsoft.DotNet.CMake.Sdk": "7.0.0-beta.23361.2"
|
||||
"Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.23361.1",
|
||||
"Microsoft.DotNet.CMake.Sdk": "8.0.0-beta.23361.1"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
The source and targets in the `src/SourceBuild/Arcade` directory are intended to move into the Arcade repo at some point. They are added here for ease of development while developing the tarball generation process. See https://github.com/dotnet/source-build/issues/2295
|
|
@ -1,242 +0,0 @@
|
|||
# Builds a source-build tarball
|
||||
|
||||
parameters:
|
||||
# Architecture to build
|
||||
architecture:
|
||||
|
||||
# Custom condition to apply to the job
|
||||
condition:
|
||||
|
||||
# Dependent jobs that must be completed before this job will run
|
||||
dependsOn:
|
||||
|
||||
# Skip running the SDK content smoke-tests
|
||||
excludeSdkContentTests: false
|
||||
|
||||
# Resource id of the installer build to retrieve source/product tarball's from
|
||||
installerBuildResourceId:
|
||||
|
||||
# Matrix to run jobs over
|
||||
matrix:
|
||||
|
||||
# Job name
|
||||
name:
|
||||
|
||||
# Agent pool to use
|
||||
pool:
|
||||
|
||||
# Build using the previous source-build artifacts
|
||||
usePreviousArtifacts: false
|
||||
|
||||
jobs:
|
||||
- job: ${{ parameters.name }}
|
||||
condition: ${{ parameters.condition }}
|
||||
dependsOn: ${{ parameters.dependsOn }}
|
||||
pool: ${{ parameters.pool }}
|
||||
strategy:
|
||||
matrix: ${{ parameters.matrix }}
|
||||
timeoutInMinutes: 300
|
||||
variables:
|
||||
- ${{ if ne(variables['System.TeamProject'], 'public') }}:
|
||||
- group: AzureDevOps-Artifact-Feeds-Pats
|
||||
- ${{ if eq(parameters.usePreviousArtifacts, 'true') }}:
|
||||
- name: additionalBuildArgs
|
||||
value: --with-sdk /tarball/.dotnet
|
||||
- name: tarballDir
|
||||
${{ if eq(parameters.installerBuildResourceId, '') }}:
|
||||
value: $(Build.SourcesDirectory)
|
||||
${{ else }}:
|
||||
value: $(Build.StagingDirectory)/tarball
|
||||
- name: installerSrcDir
|
||||
${{ if eq(parameters.installerBuildResourceId, '') }}:
|
||||
value: $(Build.SourcesDirectory)/src/installer
|
||||
${{ else }}:
|
||||
value: $(Build.SourcesDirectory)
|
||||
workspace:
|
||||
clean: all
|
||||
|
||||
steps:
|
||||
- checkout: self
|
||||
clean: true
|
||||
|
||||
- ${{ if ne(parameters.installerBuildResourceId, '') }}:
|
||||
- download: ${{ parameters.installerBuildResourceId }}
|
||||
artifact: BlobArtifacts
|
||||
patterns: '**/dotnet-sdk-source*.tar.gz'
|
||||
displayName: Download Source Tarball
|
||||
|
||||
- script: |
|
||||
set -x
|
||||
|
||||
resourceIdPathSegment=
|
||||
if [[ '${{ parameters.installerBuildResourceId }}' != 'current' ]]; then
|
||||
resourceIdPathSegment='${{ parameters.installerBuildResourceId }}/'
|
||||
fi
|
||||
|
||||
mkdir -p "$(tarballDir)"
|
||||
tarballFilePath="$(PIPELINE.WORKSPACE)/${resourceIdPathSegment}BlobArtifacts/dotnet-sdk-source*.tar.gz"
|
||||
eval tar -ozxf "$tarballFilePath" -C "$(tarballDir)"
|
||||
eval rm -f "$tarballFilePath"
|
||||
displayName: Extract Tarball
|
||||
|
||||
- script: cp $(installerSrcDir)/NuGet.config $(tarballDir)/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/online.NuGet.Config
|
||||
displayName: Copy Test NuGet Config
|
||||
|
||||
- ${{ if ne(parameters.excludeSdkContentTests, 'true') }}:
|
||||
- download: ${{ parameters.installerBuildResourceId }}
|
||||
artifact: BlobArtifacts
|
||||
patterns: '**/dotnet-sdk-+([0-9]).+([0-9]).+([0-9])?(-@(preview|rc|rtm)*)-linux-${{ parameters.architecture }}.tar.gz'
|
||||
displayName: Download MSFT sdk Tarball
|
||||
|
||||
- ${{ if eq(parameters.usePreviousArtifacts, 'true') }}:
|
||||
- download: current
|
||||
artifact: $(_PreviousSourceBuildArtifact)
|
||||
patterns: '*.tar.gz'
|
||||
displayName: Download Previous Source Build Artifacts
|
||||
|
||||
- task: CopyFiles@2
|
||||
displayName: Copy Previous Source Build Artifacts
|
||||
inputs:
|
||||
SourceFolder: $(PIPELINE.WORKSPACE)/$(_PreviousSourceBuildArtifact)
|
||||
Contents: '*.tar.gz'
|
||||
TargetFolder: $(tarballDir)/packages/archive/
|
||||
|
||||
- script: |
|
||||
set -euo pipefail
|
||||
|
||||
sourceBuiltSDKUrl="https://dotnetcli.azureedge.net/source-built-artifacts/sdks/"
|
||||
packageVersionsPath="$(Build.SourcesDirectory)/eng/Versions.props"
|
||||
notFoundMessage="No source-built SDK found to download..."
|
||||
|
||||
echo "Looking for source-built SDK to download..."
|
||||
archiveVersionLine=`grep -m 1 "<PrivateSourceBuiltSDKVersion>" "$packageVersionsPath" || :`
|
||||
versionPattern="<PrivateSourceBuiltSDKVersion>(.*)</PrivateSourceBuiltSDKVersion>"
|
||||
|
||||
if [[ $archiveVersionLine =~ $versionPattern ]]; then
|
||||
filename="dotnet-sdk-${BASH_REMATCH[1]}-centos.8-x64.tar.gz"
|
||||
archiveUrl="${sourceBuiltSDKUrl}${filename}"
|
||||
downloadDir=$(mktemp -d)
|
||||
(cd $downloadDir && curl --retry 5 -O $archiveUrl)
|
||||
|
||||
mkdir $(tarballDir)/.dotnet
|
||||
tar -xzf $downloadDir/$filename -C $(tarballDir)/.dotnet
|
||||
rm -rf $downloadDir
|
||||
else
|
||||
echo "$notFoundMessage"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "##vso[task.setvariable variable=additionalBuildArgs]--with-sdk /tarball/.dotnet"
|
||||
displayName: Setup Previously Source-Built SDK
|
||||
condition: eq(variables._WithPreviousSDK, 'true')
|
||||
|
||||
- script: |
|
||||
set -x
|
||||
|
||||
if [[ '${{ parameters.usePreviousArtifacts }}' != 'true' ]]; then
|
||||
customPrepArgs=
|
||||
if [[ '$(_BootstrapPrep)' == 'true' ]]; then
|
||||
customPrepArgs='--bootstrap'
|
||||
fi
|
||||
|
||||
docker run --rm -v $(tarballDir):/tarball -w /tarball $(_Container) ./prep.sh ${customPrepArgs}
|
||||
else
|
||||
mkdir $(tarballDir)/.dotnet
|
||||
tarballFilePath="$(tarballDir)/packages/archive/dotnet-sdk-*.tar.gz"
|
||||
eval tar -ozxf "$tarballFilePath" -C "$(tarballDir)/.dotnet"
|
||||
eval rm -f "$tarballFilePath"
|
||||
fi
|
||||
displayName: Prep Tarball
|
||||
|
||||
- script: |
|
||||
set -x
|
||||
df -h
|
||||
|
||||
networkArgs=
|
||||
customBuildArgs=
|
||||
if [[ '$(_RunOnline)' == 'true' ]]; then
|
||||
customBuildArgs='--online'
|
||||
else
|
||||
networkArgs='--network none'
|
||||
fi
|
||||
|
||||
if [[ '$(_EnablePoison)' == 'true' ]]; then
|
||||
customBuildArgs="$customBuildArgs --poison"
|
||||
fi
|
||||
|
||||
docker run --rm -v $(tarballDir):/tarball -w /tarball ${networkArgs} $(_Container) ./build.sh --clean-while-building ${customBuildArgs} $(additionalBuildArgs)
|
||||
displayName: Build Tarball
|
||||
|
||||
- ${{ if ne(variables['System.TeamProject'], 'public') }}:
|
||||
- task: Bash@3
|
||||
displayName: Setup Private Feeds Credentials
|
||||
inputs:
|
||||
filePath: $(installerSrcDir)/eng/common/SetupNugetSources.sh
|
||||
arguments: $(tarballDir)/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/online.NuGet.Config $Token
|
||||
env:
|
||||
Token: $(dn-bot-dnceng-artifact-feeds-rw)
|
||||
|
||||
- script: |
|
||||
set -x
|
||||
|
||||
dockerVolumeArgs="-v $(tarballDir):/tarball"
|
||||
dockerEnvArgs="-e SMOKE_TESTS_EXCLUDE_OMNISHARP=$(_ExcludeOmniSharpTests) -e SMOKE_TESTS_WARN_SDK_CONTENT_DIFFS=true"
|
||||
poisonArg=''
|
||||
|
||||
if [[ '${{ parameters.excludeSdkContentTests}}' != 'true' ]]; then
|
||||
dockerVolumeArgs+=" -v $(PIPELINE.WORKSPACE)/${{ parameters.installerBuildResourceId }}/BlobArtifacts/:/BlobArtifacts"
|
||||
msftSdkTarballName=$(find "$(PIPELINE.WORKSPACE)/${{ parameters.installerBuildResourceId }}/BlobArtifacts/" -name "dotnet-sdk-*-linux-${{ parameters.architecture }}.tar.gz" -exec basename {} \;)
|
||||
dockerEnvArgs+=" -e SMOKE_TESTS_MSFT_SDK_TARBALL_PATH=/BlobArtifacts/$msftSdkTarballName"
|
||||
fi
|
||||
|
||||
if [[ '$(_EnablePoison)' == 'true' ]]; then
|
||||
poisonArg='--poison'
|
||||
dockerEnvArgs+=" -e SMOKE_TESTS_WARN_POISON_DIFFS=true"
|
||||
fi
|
||||
|
||||
docker run --rm $dockerVolumeArgs -w /tarball $dockerEnvArgs $(_Container) ./build.sh $poisonArg --run-smoke-test $(additionalBuildArgs) -- /p:SmokeTestConsoleVerbosity=detailed
|
||||
displayName: Run Tests
|
||||
|
||||
# Don't use CopyFiles@2 as it encounters permissions issues because it indexes all files in the source directory graph.
|
||||
- script: |
|
||||
set -x
|
||||
|
||||
targetFolder=$(Build.StagingDirectory)/BuildLogs/
|
||||
mkdir -p ${targetFolder}
|
||||
|
||||
cd "$(tarballDir)"
|
||||
find artifacts/ -type f -name "*.binlog" -exec cp {} --parents -t ${targetFolder} \;
|
||||
find artifacts/ -type f -name "*.log" -exec cp {} --parents -t ${targetFolder} \;
|
||||
find artifacts/prebuilt-report/ -exec cp {} --parents -t ${targetFolder} \;
|
||||
find src/ -type f -name "*.binlog" -exec cp {} --parents -t ${targetFolder} \;
|
||||
find src/ -type f -name "*.log" -exec cp {} --parents -t ${targetFolder} \;
|
||||
find test/ -type f -name "*.binlog" -exec cp {} --parents -t ${targetFolder} \;
|
||||
find test/ -type f -name "Updated*.diff" -exec cp {} --parents -t ${targetFolder} \;
|
||||
find test/ -type f -name "Updated*.txt" -exec cp {} --parents -t ${targetFolder} \;
|
||||
displayName: Prepare BuildLogs staging directory
|
||||
continueOnError: true
|
||||
condition: succeededOrFailed()
|
||||
|
||||
- publish: '$(Build.StagingDirectory)/BuildLogs'
|
||||
artifact: $(Agent.JobName)_BuildLogs_Attempt$(System.JobAttempt)
|
||||
displayName: Publish BuildLogs
|
||||
continueOnError: true
|
||||
condition: succeededOrFailed()
|
||||
|
||||
- task: PublishTestResults@2
|
||||
displayName: Publish Test Results
|
||||
condition: succeededOrFailed()
|
||||
continueOnError: true
|
||||
inputs:
|
||||
testRunner: vSTest
|
||||
testResultsFiles: 'test/**/*.trx'
|
||||
searchFolder: $(tarballDir)
|
||||
mergeTestResults: true
|
||||
publishRunAttachments: true
|
||||
testRunTitle: SourceBuild_SmokeTests_$(Agent.JobName)
|
||||
|
||||
- publish: '$(tarballDir)/artifacts/${{ parameters.architecture}}/Release/'
|
||||
artifact: $(Agent.JobName)_Artifacts
|
||||
displayName: Publish Artifacts
|
||||
condition: succeededOrFailed()
|
||||
continueOnError: true
|
|
@ -1,85 +0,0 @@
|
|||
# Creates a source-build tarball
|
||||
|
||||
jobs:
|
||||
- job: Source_Build_Create_Tarball
|
||||
container: mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-33-20210222183538-031e7d2
|
||||
displayName: Source-Build Create Tarball
|
||||
pool:
|
||||
${{ if eq(variables['System.TeamProject'], 'public') }}:
|
||||
${{ if in(variables['Build.Reason'], 'PullRequest') }}:
|
||||
name: NetCore-Public-XL
|
||||
demands: ImageOverride -equals Build.Ubuntu.1804.Amd64.Open
|
||||
${{ else }}:
|
||||
name: NetCore-Svc-Public
|
||||
demands: ImageOverride -equals Build.Ubuntu.1804.Amd64.Open
|
||||
${{ if eq(variables['System.TeamProject'], 'internal') }}:
|
||||
${{ if in(variables['Build.Reason'], 'PullRequest') }}:
|
||||
name: NetCore1ESPool-Internal-XL
|
||||
demands: ImageOverride -equals Build.Ubuntu.1804.Amd64
|
||||
${{ else }}:
|
||||
name: NetCore1ESPool-Svc-Internal
|
||||
demands: ImageOverride -equals Build.Ubuntu.1804.Amd64
|
||||
|
||||
variables:
|
||||
- name: _BuildConfig
|
||||
value: Release
|
||||
|
||||
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
|
||||
- group: DotNet-Source-Build-All-Orgs-Source-Access
|
||||
workspace:
|
||||
clean: all
|
||||
|
||||
steps:
|
||||
- ${{ if ne(variables['System.TeamProject'], 'public') }}:
|
||||
- task: Bash@3
|
||||
displayName: Setup Private Feeds Credentials
|
||||
inputs:
|
||||
filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.sh
|
||||
arguments: $(Build.SourcesDirectory)/NuGet.config $Token
|
||||
env:
|
||||
Token: $(dn-bot-dnceng-artifact-feeds-rw)
|
||||
- script: |
|
||||
set -x
|
||||
df -h
|
||||
|
||||
officialBuildArgs=
|
||||
if [ '${{ and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}' = 'True' ]; then
|
||||
officialBuildArgs='/p:OfficialBuildId=$(BUILD.BUILDNUMBER)'
|
||||
fi
|
||||
|
||||
# If building on the internal project, the internal storage variable may be available (usually only if needed)
|
||||
# In that case, add variables to allow the download of internal runtimes if the specified versions are not found
|
||||
# in the default public locations.
|
||||
internalRuntimeDownloadArgs=
|
||||
if [ '$(dotnetbuilds-internal-container-read-token-base64)' != '$''(dotnetbuilds-internal-container-read-token-base64)' ]; then
|
||||
internalRuntimeDownloadArgs='/p:DotNetRuntimeSourceFeed=https://dotnetbuilds.blob.core.windows.net/internal /p:DotNetRuntimeSourceFeedKey=$(dotnetbuilds-internal-container-read-token-base64) --runtimesourcefeed https://dotnetbuilds.blob.core.windows.net/internal --runtimesourcefeedkey $(dotnetbuilds-internal-container-read-token-base64)'
|
||||
fi
|
||||
|
||||
./build.sh \
|
||||
--ci \
|
||||
--configuration $(_BuildConfig) \
|
||||
--publish \
|
||||
-bl \
|
||||
$officialBuildArgs \
|
||||
$internalRuntimeDownloadArgs \
|
||||
/p:DotNetPublishUsingPipelines=true \
|
||||
/p:ArcadeBuildTarball=true \
|
||||
/p:AzDoPat=$(dn-bot-all-orgs-build-rw-code-rw)
|
||||
displayName: Create Tarball
|
||||
|
||||
- task: CopyFiles@2
|
||||
displayName: Prepare BuildLogs staging directory
|
||||
inputs:
|
||||
Contents: |
|
||||
**/*.log
|
||||
**/*.binlog
|
||||
TargetFolder: '$(Build.StagingDirectory)/BuildLogs'
|
||||
CleanTargetFolder: true
|
||||
continueOnError: true
|
||||
condition: succeededOrFailed()
|
||||
|
||||
- publish: '$(Build.StagingDirectory)/BuildLogs'
|
||||
artifact: $(Agent.JobName)_BuildLogs_Attempt$(System.JobAttempt)
|
||||
displayName: Publish BuildLogs
|
||||
continueOnError: true
|
||||
condition: succeededOrFailed()
|
|
@ -1,140 +0,0 @@
|
|||
# Builds a source-build tarball
|
||||
|
||||
parameters:
|
||||
# Dependent jobs that must be completed before this job will run
|
||||
dependsOn:
|
||||
|
||||
# Resource id of the installer build to retrieve source/product tarball's from
|
||||
installerBuildResourceId: current
|
||||
|
||||
# The following parameters aren't expected to be passed in rather they are used for encapsulation
|
||||
# -----------------------------------------------------------------------------------------------
|
||||
alpine317Container: mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.17-20230214152931-7f13c75
|
||||
centOSStream8Container: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream8-20220809204800-17a4aab
|
||||
centOSStream9Container: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream9-20220107135047-4cd394c
|
||||
debian11Arm64Container: mcr.microsoft.com/dotnet-buildtools/prereqs:debian-11-arm64v8-20220812185233-b286fae
|
||||
fedora36Container: mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-36-20220818134137-a09384f
|
||||
ubuntu2004Container: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-20.04-20220813234344-4c008dd
|
||||
poolInternalAmd64:
|
||||
name: NetCore1ESPool-Svc-Internal
|
||||
demands: ImageOverride -equals Build.Ubuntu.1804.Amd64
|
||||
poolInternalAmd64PR:
|
||||
name: NetCore1ESPool-Internal-XL
|
||||
demands: ImageOverride -equals Build.Ubuntu.1804.Amd64
|
||||
poolInternalArm64:
|
||||
name: Docker-Linux-Arm-Internal
|
||||
poolPublicAmd64:
|
||||
name: NetCore-Public-XL
|
||||
demands: ImageOverride -equals Build.Ubuntu.1804.Amd64.Open
|
||||
|
||||
jobs:
|
||||
- template: /src/SourceBuild/Arcade/eng/common/templates/job/source-build-build-tarball.yml
|
||||
parameters:
|
||||
architecture: x64
|
||||
dependsOn: ${{ parameters.dependsOn }}
|
||||
${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}:
|
||||
excludeSdkContentTests: true
|
||||
installerBuildResourceId: ${{ parameters.installerBuildResourceId }}
|
||||
matrix:
|
||||
CentOSStream8-Online:
|
||||
_BootstrapPrep: true
|
||||
_Container: ${{ parameters.centOSStream8Container }}
|
||||
_EnablePoison: false
|
||||
_ExcludeOmniSharpTests: true
|
||||
_RunOnline: true
|
||||
_WithPreviousSDK: false
|
||||
CentOSStream8-Offline:
|
||||
_BootstrapPrep: true
|
||||
_Container: ${{ parameters.centOSStream8Container }}
|
||||
_EnablePoison: false
|
||||
_ExcludeOmniSharpTests: true
|
||||
_RunOnline: false
|
||||
_WithPreviousSDK: false
|
||||
${{ if ne(variables['Build.Reason'], 'PullRequest') }}:
|
||||
Alpine317-Offline:
|
||||
_BootstrapPrep: true
|
||||
_Container: ${{ parameters.alpine317Container }}
|
||||
_EnablePoison: false
|
||||
_ExcludeOmniSharpTests: true
|
||||
_RunOnline: false
|
||||
_WithPreviousSDK: false
|
||||
CentOSStream8-WithPreviousSDK:
|
||||
_BootstrapPrep: false
|
||||
_Container: ${{ parameters.centOSStream8Container }}
|
||||
_EnablePoison: false
|
||||
_ExcludeOmniSharpTests: true
|
||||
_RunOnline: false
|
||||
_WithPreviousSDK: true
|
||||
CentOSStream9-Offline:
|
||||
_BootstrapPrep: true
|
||||
_Container: ${{ parameters.centOSStream9Container }}
|
||||
_EnablePoison: false
|
||||
_ExcludeOmniSharpTests: false
|
||||
_RunOnline: false
|
||||
_WithPreviousSDK: false
|
||||
Fedora36-Offline:
|
||||
_BootstrapPrep: true
|
||||
_Container: ${{ parameters.fedora36Container }}
|
||||
_EnablePoison: true
|
||||
_ExcludeOmniSharpTests: false
|
||||
_RunOnline: false
|
||||
_WithPreviousSDK: false
|
||||
Ubuntu2004-Offline:
|
||||
_BootstrapPrep: true
|
||||
_Container: ${{ parameters.ubuntu2004Container }}
|
||||
_EnablePoison: false
|
||||
_ExcludeOmniSharpTests: false
|
||||
_RunOnline: false
|
||||
_WithPreviousSDK: false
|
||||
name: Build_Tarball_x64
|
||||
pool:
|
||||
${{ if eq(variables['System.TeamProject'], 'public') }}:
|
||||
${{ parameters.poolPublicAmd64 }}
|
||||
${{ if eq(variables['System.TeamProject'], 'internal') }}:
|
||||
${{ if in(variables['Build.Reason'], 'PullRequest') }}:
|
||||
${{ parameters.poolInternalAmd64PR }}
|
||||
${{ else }}:
|
||||
${{ parameters.poolInternalAmd64 }}
|
||||
|
||||
- ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], 'PullRequest')) }}:
|
||||
- template: /src/SourceBuild/Arcade/eng/common/templates/job/source-build-build-tarball.yml
|
||||
parameters:
|
||||
architecture: arm64
|
||||
dependsOn: ${{ parameters.dependsOn }}
|
||||
installerBuildResourceId: ${{ parameters.installerBuildResourceId }}
|
||||
matrix:
|
||||
Debian11-Offline:
|
||||
_BootstrapPrep: true
|
||||
_Container: ${{ parameters.debian11Arm64Container }}
|
||||
_EnablePoison: false
|
||||
_ExcludeOmniSharpTests: false
|
||||
_RunOnline: false
|
||||
_WithPreviousSDK: false
|
||||
name: Build_Tarball_arm64
|
||||
pool: ${{ parameters.poolInternalArm64 }}
|
||||
|
||||
- ${{ if ne(variables['Build.Reason'], 'PullRequest') }}:
|
||||
- template: /src/SourceBuild/Arcade/eng/common/templates/job/source-build-build-tarball.yml
|
||||
parameters:
|
||||
architecture: x64
|
||||
# Always attempt to run the bootstrap leg (e.g. even when stage 1 tests fail) in order to get a complete accessment of the build status.
|
||||
# The bootstrap build will shortcut if the stage 1 build failed.
|
||||
condition: succeededOrFailed()
|
||||
dependsOn: Build_Tarball_x64
|
||||
excludeSdkContentTests: true
|
||||
installerBuildResourceId: ${{ parameters.installerBuildResourceId }}
|
||||
matrix:
|
||||
Fedora36-Offline:
|
||||
_PreviousSourceBuildArtifact: Build_Tarball_x64 Fedora36-Offline_Artifacts
|
||||
_Container: ${{ parameters.fedora36Container }}
|
||||
_EnablePoison: false
|
||||
_ExcludeOmniSharpTests: false
|
||||
_RunOnline: false
|
||||
_WithPreviousSDK: false
|
||||
name: Build_Tarball_x64_Using_Previous
|
||||
pool:
|
||||
${{ if eq(variables['System.TeamProject'], 'public') }}:
|
||||
${{ parameters.poolPublicAmd64 }}
|
||||
${{ if eq(variables['System.TeamProject'], 'internal') }}:
|
||||
${{ parameters.poolInternalAmd64 }}
|
||||
usePreviousArtifacts: true
|
|
@ -1,17 +0,0 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>net7.0</TargetFrameworks>
|
||||
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
|
||||
<RunAnalyzers>false</RunAnalyzers>
|
||||
<Nullable>disable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Include="*.cs" />
|
||||
|
||||
<PackageReference Include="Microsoft.Build.Framework" Version="$(MicrosoftBuildFrameworkVersion)" PrivateAssets="All" ExcludeAssets="Runtime" />
|
||||
<PackageReference Include="Microsoft.Build.Utilities.Core" Version="$(MicrosoftBuildUtilitiesCoreVersion)" Publish="false" ExcludeAssets="runtime" />
|
||||
<PackageReference Include="NuGet.Packaging" Version="5.8.0" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
|
@ -1,180 +0,0 @@
|
|||
// Licensed to the .NET Foundation under one or more agreements.
|
||||
// The .NET Foundation licenses this file to you under the MIT license.
|
||||
|
||||
using Microsoft.Build.Framework;
|
||||
using Microsoft.Build.Utilities;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace Microsoft.DotNet.SourceBuild.Tasks
|
||||
{
|
||||
/// <summary>
|
||||
/// Reads entries in a Version.Details.xml file to find intermediate nupkg dependencies. For
|
||||
/// each dependency with a "SourceBuild" element, adds an item to the "Dependencies" output.
|
||||
/// </summary>
|
||||
public class Tarball_ReadSourceBuildIntermediateNupkgDependencies : Task
|
||||
{
|
||||
[Required]
|
||||
public string VersionDetailsXmlFile { get; set; }
|
||||
|
||||
[Required]
|
||||
public string SourceBuildIntermediateNupkgPrefix { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Convert any internal repo references to the public GitHub repos.
|
||||
/// </summary>
|
||||
public bool ConvertInternalRepos { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The intermediate nupkg RID to use if any RID-specific intermediate nupkgs are required.
|
||||
/// If this parameter isn't specified, RID-specific intermediate nupkgs can't be used and
|
||||
/// this task fails.
|
||||
/// </summary>
|
||||
public string SourceBuildIntermediateNupkgRid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// %(Identity): NuGet package ID.
|
||||
/// %(Name): The Name of the dependency from Version.Details.xml.
|
||||
/// %(ExactVersion): NuGet package version. This can be used to look up the restored package
|
||||
/// contents in a package cache.
|
||||
/// %(Version): NuGet package version, wrapped in "[version]" syntax for exact match.
|
||||
/// %(Uri): The URI for the repo.
|
||||
/// %(Sha): The commit Sha for the dependency.
|
||||
/// %(SourceBuildRepoName): The repo name to use in source-build.
|
||||
/// </summary>
|
||||
[Output]
|
||||
public ITaskItem[] Dependencies { get; set; }
|
||||
|
||||
public override bool Execute()
|
||||
{
|
||||
XElement root = XElement.Load(VersionDetailsXmlFile, LoadOptions.PreserveWhitespace);
|
||||
|
||||
XName CreateQualifiedName(string plainName)
|
||||
{
|
||||
return root.GetDefaultNamespace().GetName(plainName);
|
||||
}
|
||||
|
||||
Dependencies = root
|
||||
.Elements()
|
||||
.Elements(CreateQualifiedName("Dependency"))
|
||||
.Select(d =>
|
||||
{
|
||||
XElement sourceBuildElement = d.Element(CreateQualifiedName("SourceBuild"));
|
||||
|
||||
if (sourceBuildElement == null)
|
||||
{
|
||||
// Workaround for https://github.com/dotnet/source-build/issues/2481
|
||||
sourceBuildElement = d.Element(CreateQualifiedName("SourceBuildTarball"));
|
||||
|
||||
if (sourceBuildElement == null)
|
||||
{
|
||||
// Ignore element: doesn't represent a source-build dependency.
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
string repoName = sourceBuildElement.Attribute("RepoName")?.Value;
|
||||
|
||||
if (string.IsNullOrEmpty(repoName))
|
||||
{
|
||||
Log.LogError($"Dependency SourceBuild RepoName null or empty in '{VersionDetailsXmlFile}' element {d}");
|
||||
return null;
|
||||
}
|
||||
|
||||
string dependencyName = d.Attribute("Name")?.Value ?? string.Empty;
|
||||
|
||||
if (string.IsNullOrEmpty(dependencyName))
|
||||
{
|
||||
// Log name missing as FYI, but this is not an error case for source-build.
|
||||
Log.LogMessage($"Dependency Name null or empty in '{VersionDetailsXmlFile}' element {d}");
|
||||
}
|
||||
|
||||
string dependencyVersion = d.Attribute("Version")?.Value;
|
||||
|
||||
string uri = d.Element(CreateQualifiedName("Uri"))?.Value;
|
||||
if (ConvertInternalRepos)
|
||||
{
|
||||
uri = ConvertInternalRepo(uri);
|
||||
}
|
||||
|
||||
string sha = d.Element(CreateQualifiedName("Sha"))?.Value;
|
||||
string sourceBuildRepoName = sourceBuildElement.Attribute("RepoName")?.Value;
|
||||
|
||||
if (string.IsNullOrEmpty(dependencyVersion))
|
||||
{
|
||||
// We need a version to bring down an intermediate nupkg. Fail.
|
||||
Log.LogError($"Dependency Version null or empty in '{VersionDetailsXmlFile}' element {d}");
|
||||
return null;
|
||||
}
|
||||
|
||||
string identity = SourceBuildIntermediateNupkgPrefix + repoName;
|
||||
|
||||
bool.TryParse(
|
||||
sourceBuildElement.Attribute("ManagedOnly")?.Value,
|
||||
out bool managedOnly);
|
||||
|
||||
// If RID-specific, add the RID to the end of the identity.
|
||||
if (!managedOnly)
|
||||
{
|
||||
if (string.IsNullOrEmpty(SourceBuildIntermediateNupkgRid))
|
||||
{
|
||||
Log.LogError(
|
||||
$"Parameter {nameof(SourceBuildIntermediateNupkgRid)} was " +
|
||||
"not specified, indicating this project depends only on managed " +
|
||||
"inputs. However, source-build element is not ManagedOnly: " +
|
||||
sourceBuildElement);
|
||||
return null;
|
||||
}
|
||||
|
||||
identity += "." + SourceBuildIntermediateNupkgRid;
|
||||
}
|
||||
|
||||
return new TaskItem(
|
||||
identity,
|
||||
new Dictionary<string, string>
|
||||
{
|
||||
["Name"] = dependencyName,
|
||||
["Version"] = $"[{dependencyVersion}]",
|
||||
["ExactVersion"] = dependencyVersion,
|
||||
["Uri"] = uri,
|
||||
["Sha"] = sha,
|
||||
["SourceBuildRepoName"] = sourceBuildRepoName
|
||||
});
|
||||
})
|
||||
.Where(d => d != null)
|
||||
.ToArray();
|
||||
|
||||
return !Log.HasLoggedErrors;
|
||||
}
|
||||
|
||||
private string ConvertInternalRepo(string uri)
|
||||
{
|
||||
if (uri.StartsWith("https://dev.azure.com", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
string[] repoParts = uri.Substring(uri.LastIndexOf('/')).Split('-', 2);
|
||||
|
||||
if (repoParts.Length != 2)
|
||||
{
|
||||
Log.LogError($"Repo '{uri}' does not end with the expected <GH organization>-<GH repo> format");
|
||||
return null;
|
||||
}
|
||||
|
||||
string org = repoParts[0];
|
||||
string repo = repoParts[1];
|
||||
|
||||
// The internal Nuget.Client repo has suffix which needs to be accounted for.
|
||||
const string trustedSuffix = "-Trusted";
|
||||
if (uri.EndsWith(trustedSuffix, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
repo = repo.Substring(0, repo.Length - trustedSuffix.Length);
|
||||
}
|
||||
|
||||
uri = $"https://github.com/{org}/{repo}";
|
||||
}
|
||||
|
||||
return uri;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,193 +0,0 @@
|
|||
// Licensed to the .NET Foundation under one or more agreements.
|
||||
// The .NET Foundation licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information.
|
||||
|
||||
using Microsoft.Build.Framework;
|
||||
using Microsoft.Build.Tasks;
|
||||
using Microsoft.Build.Utilities;
|
||||
using NuGet.Versioning;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace Microsoft.DotNet.SourceBuild.Tasks
|
||||
{
|
||||
/// <summary>
|
||||
/// Writes a props file to the given directory for each dependency specified
|
||||
/// plus adds or updates an existing props file with all dependencies. The
|
||||
/// intention is for the props file to be included by a source-build build
|
||||
/// to get metadata about each dependent repo.
|
||||
/// </summary>
|
||||
public class Tarball_WriteSourceRepoProperties : Task
|
||||
{
|
||||
/// <summary>
|
||||
/// The directory to write the props files to.
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string SourceBuildMetadataDir { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Dependencies to include in the props files.
|
||||
///
|
||||
/// %(Identity): NuGet package ID.
|
||||
/// %(Name): The Name of the dependency from Version.Details.xml.
|
||||
/// %(ExactVersion): NuGet package version. This can be used to look up the restored package
|
||||
/// contents in a package cache.
|
||||
/// %(Version): NuGet package version, wrapped in "[version]" syntax for exact match.
|
||||
/// %(Uri): The URI for the repo.
|
||||
/// %(Sha): The commit Sha for the dependency.
|
||||
/// %(SourceBuildRepoName): The repo name to use in source-build.
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
[Required]
|
||||
public ITaskItem[] Dependencies { get; set; }
|
||||
|
||||
public override bool Execute()
|
||||
{
|
||||
var allRepoProps = new Dictionary<string, string>();
|
||||
|
||||
foreach (var dependency in Dependencies.Select(dep =>
|
||||
new {
|
||||
Name = dep.GetMetadata("Name"),
|
||||
SourceBuildRepoName = dep.GetMetadata("SourceBuildRepoName"),
|
||||
Version = dep.GetMetadata("ExactVersion"),
|
||||
Sha = dep.GetMetadata("Sha"),
|
||||
Uri = dep.GetMetadata("Uri"),
|
||||
GitCommitCount = dep.GetMetadata("GitCommitCount")
|
||||
}))
|
||||
{
|
||||
string repoName = dependency.SourceBuildRepoName;
|
||||
string safeRepoName = repoName.Replace("-", "").Replace(".", "");
|
||||
string propsPath = Path.Combine(SourceBuildMetadataDir, $"{repoName.Replace(".", "-")}.props");
|
||||
DerivedVersion derivedVersion = GetVersionInfo(safeRepoName, dependency.Version, "0");
|
||||
var repoProps = new Dictionary<string, string>
|
||||
{
|
||||
["GitCommitHash"] = dependency.Sha,
|
||||
["OfficialBuildId"] = derivedVersion.OfficialBuildId,
|
||||
["OutputPackageVersion"] = dependency.Version,
|
||||
["PreReleaseVersionLabel"] = derivedVersion.PreReleaseVersionLabel,
|
||||
};
|
||||
if (!string.IsNullOrEmpty(dependency.GitCommitCount))
|
||||
{
|
||||
repoProps.Add("GitCommitCount", dependency.GitCommitCount);
|
||||
}
|
||||
WritePropsFile(propsPath, repoProps);
|
||||
allRepoProps[$"{safeRepoName}GitCommitHash"] = dependency.Sha;
|
||||
allRepoProps[$"{safeRepoName}OutputPackageVersion"] = dependency.Version;
|
||||
}
|
||||
string allRepoPropsPath = Path.Combine(SourceBuildMetadataDir, "AllRepoVersions.props");
|
||||
Log.LogMessage(MessageImportance.Normal, $"[{DateTimeOffset.Now}] Writing all repo versions to {allRepoPropsPath}");
|
||||
UpdatePropsFile(allRepoPropsPath, allRepoProps);
|
||||
|
||||
return !Log.HasLoggedErrors;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Reverse a version in the Arcade style (https://github.com/dotnet/arcade/blob/fb92b14d8cd07cf44f8f7eefa8ac58d7ffd05f3f/src/Microsoft.DotNet.Arcade.Sdk/tools/Version.BeforeCommonTargets.targets#L18)
|
||||
/// back to an OfficialBuildId + ReleaseLabel which we can then supply to get the same resulting version number.
|
||||
/// </summary>
|
||||
/// <param name="repoName">The source build name of the repo to get the version info for.</param>
|
||||
/// <param name="version">The complete version, e.g. 1.0.0-beta1-19720.5</param>
|
||||
/// <param name="commitCount">The current commit count of the repo. This is used for some repos that do not use the standard versioning scheme.</param>
|
||||
/// <returns></returns>
|
||||
private static DerivedVersion GetVersionInfo(string repoName, string version, string commitCount)
|
||||
{
|
||||
var nugetVersion = new NuGetVersion(version);
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(nugetVersion.Release))
|
||||
{
|
||||
var releaseParts = nugetVersion.Release.Split('-', '.');
|
||||
if (repoName.Contains("nuget"))
|
||||
{
|
||||
// NuGet does this - arbitrary build IDs
|
||||
return new DerivedVersion { OfficialBuildId = DateTime.Now.ToString("yyyyMMdd.1"), PreReleaseVersionLabel = releaseParts[0] };
|
||||
}
|
||||
else if (releaseParts.Length == 3)
|
||||
{
|
||||
// VSTest uses full dates for the first part of their preview build numbers
|
||||
if (repoName.Contains("vstest"))
|
||||
{
|
||||
return new DerivedVersion { OfficialBuildId = $"{releaseParts[1]}.{releaseParts[2]}", PreReleaseVersionLabel = releaseParts[0] };
|
||||
}
|
||||
else if (int.TryParse(releaseParts[1], out int datePart) && int.TryParse(releaseParts[2], out int buildPart))
|
||||
{
|
||||
if (datePart > 1 && datePart < 8 && buildPart > 1000 && buildPart < 10000)
|
||||
{
|
||||
return new DerivedVersion { OfficialBuildId = releaseParts[2], PreReleaseVersionLabel = $"{releaseParts[0]}.{releaseParts[1]}" };
|
||||
}
|
||||
else
|
||||
{
|
||||
return new DerivedVersion { OfficialBuildId = $"20{((datePart / 1000))}{((datePart % 1000) / 50):D2}{(datePart % 50):D2}.{buildPart}", PreReleaseVersionLabel = releaseParts[0] };
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (releaseParts.Length == 4)
|
||||
{
|
||||
// new preview version style, e.g. 5.0.0-preview.7.20365.12
|
||||
if (int.TryParse(releaseParts[2], out int datePart) && int.TryParse(releaseParts[3], out int buildPart))
|
||||
{
|
||||
return new DerivedVersion { OfficialBuildId = $"20{((datePart / 1000))}{((datePart % 1000) / 50):D2}{(datePart % 50):D2}.{buildPart}", PreReleaseVersionLabel = $"{releaseParts[0]}.{releaseParts[1]}" };
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// finalized version number (x.y.z) - probably not our code
|
||||
// Application Insights, Newtonsoft.Json do this
|
||||
return new DerivedVersion { OfficialBuildId = DateTime.Now.ToString("yyyyMMdd.1"), PreReleaseVersionLabel = string.Empty };
|
||||
}
|
||||
|
||||
throw new FormatException($"Can't derive a build ID from version {version} (commit count {commitCount}, release {string.Join(";", nugetVersion.Release.Split('-', '.'))})");
|
||||
}
|
||||
|
||||
private static void UpdatePropsFile(string filePath, Dictionary<string, string> properties)
|
||||
{
|
||||
if (!File.Exists(filePath))
|
||||
{
|
||||
WritePropsFile(filePath, properties);
|
||||
}
|
||||
else
|
||||
{
|
||||
var content = new StringBuilder();
|
||||
foreach (var line in File.ReadAllLines(filePath))
|
||||
{
|
||||
content.AppendLine(line);
|
||||
if (line.Contains("<PropertyGroup>"))
|
||||
{
|
||||
foreach (var propName in properties.Keys.OrderBy(k => k))
|
||||
{
|
||||
content.AppendLine($" <{propName}>{properties[propName]}</{propName}>");
|
||||
}
|
||||
}
|
||||
}
|
||||
File.WriteAllText(filePath, content.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
private static void WritePropsFile(string filePath, Dictionary<string, string> properties)
|
||||
{
|
||||
var content = new StringBuilder();
|
||||
content.AppendLine("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
|
||||
content.AppendLine("<Project>");
|
||||
content.AppendLine(" <PropertyGroup>");
|
||||
foreach (var propName in properties.Keys.OrderBy(k => k))
|
||||
{
|
||||
content.AppendLine($" <{propName}>{properties[propName]}</{propName}>");
|
||||
}
|
||||
content.AppendLine(" </PropertyGroup>");
|
||||
content.AppendLine("</Project>");
|
||||
File.WriteAllText(filePath, content.ToString());
|
||||
}
|
||||
|
||||
private class DerivedVersion
|
||||
{
|
||||
internal string OfficialBuildId { get; set; }
|
||||
internal string PreReleaseVersionLabel { get; set; }
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the MIT license. -->
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<SourceBuildTasksAssembly>$(RepoRoot)\artifacts\bin\SourceBuild.Tasks\$(Configuration)\net7.0\SourceBuild.Tasks.dll</SourceBuildTasksAssembly>
|
||||
</PropertyGroup>
|
||||
</Project>
|
|
@ -1,416 +0,0 @@
|
|||
<!-- Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the MIT license. -->
|
||||
<Project Sdk="Microsoft.DotNet.Arcade.Sdk">
|
||||
|
||||
<Import Project="./BuildTasks.props" />
|
||||
<Import Project="../tools/SourceBuild/SourceBuildArcadeTools.targets" Sdk="Microsoft.DotNet.Arcade.Sdk" />
|
||||
<Import Project="$(RepoRoot)/src/redist/targets/Versions.targets" />
|
||||
<Import Project="$(RepoRoot)/src/redist/targets/SetBuildDefaults.targets" />
|
||||
<Import Project="$(RepoRoot)/src/redist/targets/FileExtensions.targets" />
|
||||
<Import Project="$(RepoRoot)/src/redist/targets/GetRuntimeInformation.targets" />
|
||||
<Import Project="$(RepoRoot)/src/redist/targets/GenerateLayout.targets" />
|
||||
|
||||
<UsingTask TaskName="Microsoft.DotNet.SourceBuild.Tasks.Tarball_ReadSourceBuildIntermediateNupkgDependencies" AssemblyFile="$(SourceBuildTasksAssembly)" />
|
||||
<UsingTask TaskName="Microsoft.DotNet.SourceBuild.Tasks.Tarball_WriteSourceRepoProperties" AssemblyFile="$(SourceBuildTasksAssembly)" />
|
||||
|
||||
<PropertyGroup>
|
||||
<ArtifactsDir>$(RepoRoot)artifacts/</ArtifactsDir>
|
||||
<TarballDir>$(ArtifactsDir)tarball/</TarballDir>
|
||||
<TarballRootDir>$([MSBuild]::EnsureTrailingSlash('$(TarballDir)'))</TarballRootDir>
|
||||
<TarballSourceDir>$(TarballRootDir)src/</TarballSourceDir>
|
||||
<TarballGitInfoDir>$(TarballRootDir)git-info/</TarballGitInfoDir>
|
||||
<CloneVerbosity>quiet</CloneVerbosity> <!-- Support quiet and full -->
|
||||
<ConvertInternalRepos Condition="'$(ConvertInternalRepos)' == '' and '$(VSS_NUGET_EXTERNAL_FEED_ENDPOINTS)' == '' and '$(AzDoPat)' == ''">true</ConvertInternalRepos>
|
||||
</PropertyGroup>
|
||||
|
||||
<Target Name="CreateSourceTarball"
|
||||
DependsOnTargets="
|
||||
GenerateFullNuGetVersion;
|
||||
GenerateVersionFile;
|
||||
CreateTarballDir;
|
||||
SetupSelfGithubInfo;
|
||||
CloneRepoAndDependentsRecursive;
|
||||
CleanClonedSource;
|
||||
RestoreTextOnlyPackages;
|
||||
CopyTextOnlyPackages;
|
||||
CopyTarballContent;
|
||||
">
|
||||
|
||||
<PropertyGroup>
|
||||
<TarballFileDir>$([System.IO.Path]::GetDirectoryName('$(TarballFilePath)'))</TarballFileDir>
|
||||
</PropertyGroup>
|
||||
|
||||
<Error Text="TarballFilePath not specified." Condition=" '$(TarballFilePath)' == '' " />
|
||||
|
||||
<MakeDir Directories="$(TarballFileDir)" Condition=" '$(TarballFileDir)' != '' " />
|
||||
<Exec Command="tar --numeric-owner -zcf $(TarballFilePath) -C $(TarballDir) ." />
|
||||
|
||||
<Message Text="Tarball '$(TarballFilePath)' was successfully created from '$(TarballDir)'" Importance="High" />
|
||||
</Target>
|
||||
|
||||
<Target Name="CreateTarballDir" >
|
||||
<RemoveDir Directories='$(TarballRootDir)' Condition=" EXISTS('$(TarballRootDir)') " />
|
||||
<Error Text="Tarball directory not specified. Pass /p:TarballDir=[new dir name] to specify a tarball directory." Condition=" '$(TarballDir)' == '' " />
|
||||
<Error Text="Tarball directory already exists: $(TarballRootDir)" Condition=" '$(TarballRootDir)' != '' AND EXISTS('$(TarballRootDir)') " />
|
||||
|
||||
<MakeDir Directories="$(TarballRootDir)" Condition=" '$(TarballRootDir)' != '' " />
|
||||
<MakeDir Directories="$(TarballSourceDir)" Condition=" '$(TarballSourceDir)' != '' " />
|
||||
<MakeDir Directories="$(TarballGitInfoDir)" Condition=" '$(TarballGitInfoDir)' != '' " />
|
||||
</Target>
|
||||
|
||||
<Target Name="SetupSelfGithubInfo" Condition=" '$(IsRootRepo)' != 'true' ">
|
||||
|
||||
<Exec
|
||||
Command="cd $(RepoRoot);git config --get remote.origin.url"
|
||||
ConsoleToMSBuild="true"
|
||||
WorkingDirectory="$(RepoRoot)">
|
||||
<Output TaskParameter="ConsoleOutput" ItemName="RootRepoUri" />
|
||||
</Exec>
|
||||
|
||||
<Exec
|
||||
Command="cd $(RepoRoot);git rev-parse HEAD"
|
||||
ConsoleToMSBuild="true"
|
||||
WorkingDirectory="$(RepoRoot)">
|
||||
<Output TaskParameter="ConsoleOutput" ItemName="RootRepoCommitSha" />
|
||||
</Exec>
|
||||
|
||||
<!-- Get commit count for installer repo only -->
|
||||
<Exec
|
||||
Command="cd $(RepoRoot);git rev-list --count HEAD"
|
||||
ConsoleToMSBuild="true"
|
||||
WorkingDirectory="$(RepoRoot)">
|
||||
<Output TaskParameter="ConsoleOutput" ItemName="RootRepoCommitCount" />
|
||||
</Exec>
|
||||
|
||||
<!-- This is hardcoding version for the root repo (installer), since there
|
||||
isn't a Version.Details.xml file to read it from.
|
||||
See https://github.com/dotnet/source-build/issues/2250 -->
|
||||
<ItemGroup>
|
||||
<SourceBuildRepos Include="$(GitHubRepositoryName)">
|
||||
<Name>$(GitHubRepositoryName)</Name>
|
||||
<Version>$(VersionPrefix)</Version>
|
||||
<ExactVersion>$(VersionPrefix)</ExactVersion>
|
||||
<Sha>@(RootRepoCommitSha)</Sha>
|
||||
<Uri>@(RootRepoUri)</Uri>
|
||||
<GitCommitCount>@(RootRepoCommitCount)</GitCommitCount>
|
||||
<SourceBuildRepoName>$(GitHubRepositoryName)</SourceBuildRepoName>
|
||||
<IsRootRepo>true</IsRootRepo>
|
||||
</SourceBuildRepos>
|
||||
</ItemGroup>
|
||||
|
||||
<Tarball_WriteSourceRepoProperties
|
||||
SourceBuildMetadataDir="$(TarballGitInfoDir)"
|
||||
Dependencies="@(SourceBuildRepos)" />
|
||||
|
||||
<PropertyGroup>
|
||||
<SourceBuildRepoName>%(SourceBuildRepos.SourceBuildRepoName)</SourceBuildRepoName>
|
||||
<RepoUri>%(SourceBuildRepos.Uri)</RepoUri>
|
||||
<RepoSha>%(SourceBuildRepos.Sha)</RepoSha>
|
||||
<IsRootRepo>%(SourceBuildRepos.IsRootRepo)</IsRootRepo>
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- Remove root repo from SourceBuildRepos so it doesn't try to clone twice -->
|
||||
<ItemGroup>
|
||||
<SourceBuildRepos Remove="@(SourceBuildRepos)" />
|
||||
</ItemGroup>
|
||||
</Target>
|
||||
|
||||
<Target Name="CloneRepoAndDependentsRecursive"
|
||||
DependsOnTargets="GetSourceBuildIntermediateNupkgNameConvention">
|
||||
|
||||
<Message Text="--> Start Cloning Repo $(SourceBuildRepoName)" Importance="High" />
|
||||
<PropertyGroup>
|
||||
<SourceDir>$(SourceBuildRepoName)/</SourceDir>
|
||||
<TarballRepoSourceDir>$(TarballSourceDir)$(SourceDir)</TarballRepoSourceDir>
|
||||
<TarballRepoSourceEngDir>$(TarballSourceDir)$(SourceDir)eng/</TarballRepoSourceEngDir>
|
||||
<TarballVersionDetailsFile>$(TarballRepoSourceEngDir)Version.Details.xml</TarballVersionDetailsFile>
|
||||
<CloneParam Condition=" '$(CloneVerbosity)' == 'quiet' ">-q</CloneParam>
|
||||
<OriginalRepoUri>$(RepoUri)</OriginalRepoUri>
|
||||
<RepoUri Condition=" '$(AzDoPat)' != '' ">$(RepoUri.Replace('https://dev.azure.com', 'https://dn-bot:$(AzDoPat)@dev.azure.com'))</RepoUri>
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- Perform a local clone of the root repo, it's faster and doesn't require the RepoSha to be a tree. -->
|
||||
<Exec
|
||||
Command="git clone ./.git $(TarballRepoSourceDir)"
|
||||
WorkingDirectory="$(RepoRoot)"
|
||||
Condition="$(IsRootRepo) == 'true'" />
|
||||
|
||||
<!-- Because the root repo was locally cloned, the remote.origin.url needs to be updated from the local source to the real origin -->
|
||||
<Exec
|
||||
Command="git config --file $(TarballRepoSourceDir)/.git/config --unset remote.origin.url"
|
||||
WorkingDirectory="$(RepoRoot)"
|
||||
Condition="$(IsRootRepo) == 'true'" />
|
||||
|
||||
<Exec
|
||||
Command="git config --file $(TarballRepoSourceDir)/.git/config --add remote.origin.url `git config --get remote.origin.url`"
|
||||
WorkingDirectory="$(RepoRoot)"
|
||||
Condition="$(IsRootRepo) == 'true'" />
|
||||
|
||||
<!-- Needed in cases where source-build is pinned to a version of the root repo. -->
|
||||
<Exec
|
||||
Command="git reset --hard $(RepoSha)"
|
||||
WorkingDirectory="$(TarballRepoSourceDir)"
|
||||
Condition="$(IsRootRepo) == 'true'" />
|
||||
|
||||
<Exec
|
||||
Command="git init $(TarballRepoSourceDir)"
|
||||
WorkingDirectory="$(RepoRoot)"
|
||||
Condition="$(IsRootRepo) != 'true'" />
|
||||
|
||||
<Exec
|
||||
Command="git remote add origin $(RepoUri)"
|
||||
WorkingDirectory="$(TarballRepoSourceDir)"
|
||||
Condition="$(IsRootRepo) != 'true'" />
|
||||
|
||||
<!-- Fetching a sha requires git 2.5.0 or newer -->
|
||||
<Exec
|
||||
Command="git fetch --depth 1 origin $(RepoSha)"
|
||||
WorkingDirectory="$(TarballRepoSourceDir)"
|
||||
Condition="$(IsRootRepo) != 'true'" />
|
||||
|
||||
<Exec
|
||||
Command="git reset --hard FETCH_HEAD"
|
||||
WorkingDirectory="$(TarballRepoSourceDir)"
|
||||
Condition="$(IsRootRepo) != 'true'" />
|
||||
|
||||
<Exec
|
||||
Command="git submodule update --init --recursive --depth 1"
|
||||
WorkingDirectory="$(TarballRepoSourceDir)" />
|
||||
|
||||
<Exec
|
||||
Command="git submodule foreach 'rm -rf %24%28git rev-parse --git-dir%29/objects ||:'"
|
||||
WorkingDirectory="$(TarballRepoSourceDir)"
|
||||
Condition="$(PreserveTarballGitFolders) != 'true'" />
|
||||
|
||||
<Exec
|
||||
Command="git config --file $(TarballRepoSourceDir)/.git/config --unset remote.origin.url"
|
||||
WorkingDirectory="$(RepoRoot)"/>
|
||||
|
||||
<Exec
|
||||
Command="git config --file $(TarballRepoSourceDir)/.git/config --add remote.origin.url $(OriginalRepoUri)"
|
||||
WorkingDirectory="$(RepoRoot)"/>
|
||||
|
||||
<!-- Remove the git objects folder to free up tarball space -->
|
||||
<Exec
|
||||
Command="rm -rf objects"
|
||||
WorkingDirectory="$(TarballRepoSourceDir).git"
|
||||
Condition="$(PreserveTarballGitFolders) != 'true'" />
|
||||
|
||||
<Message Text="--> Done Cloning Repo $(SourceBuildRepoName)" Importance="High" />
|
||||
|
||||
<!-- Apply source-build patches -->
|
||||
<ItemGroup>
|
||||
<SourceBuildPatchFile Include="$(RepoRoot)src/SourceBuild/tarball/patches/$(SourceBuildRepoName)/*.patch" />
|
||||
</ItemGroup>
|
||||
|
||||
<Message
|
||||
Text="--> Applying $(SourceBuildRepoName) Patches"
|
||||
Importance="High"
|
||||
Condition="'@(SourceBuildPatchFile)' != ''" />
|
||||
<Exec
|
||||
Command="git --work-tree=$(TarballRepoSourceDir) apply --ignore-whitespace --whitespace=nowarn "%(SourceBuildPatchFile.FullPath)""
|
||||
WorkingDirectory="$(TarballRepoSourceDir)"
|
||||
Condition="'@(SourceBuildPatchFile)' != ''" />
|
||||
<Message
|
||||
Text="--> Done Applying $(SourceBuildRepoName) Patches"
|
||||
Importance="High"
|
||||
Condition="'@(SourceBuildPatchFile)' != ''" />
|
||||
|
||||
<Tarball_ReadSourceBuildIntermediateNupkgDependencies
|
||||
VersionDetailsXmlFile="$([MSBuild]::NormalizePath($(TarballVersionDetailsFile)))"
|
||||
SourceBuildIntermediateNupkgPrefix="$(SourceBuildIntermediateNupkgPrefix)"
|
||||
SourceBuildIntermediateNupkgRid="$(SourceBuildIntermediateNupkgRid)"
|
||||
ConvertInternalRepos="$(ConvertInternalRepos)">
|
||||
<Output TaskParameter="Dependencies" ItemName="SourceBuildRepos" />
|
||||
</Tarball_ReadSourceBuildIntermediateNupkgDependencies>
|
||||
|
||||
<!-- Remove repo if it has already be cloned at any sha. This results in
|
||||
The commit sha for the cloned repo in the tarball being the one that
|
||||
was first encountered. -->
|
||||
<ItemGroup>
|
||||
<SourceBuildRepos Remove="@(SourceBuildRepos)" Condition=" EXISTS('$(TarballGitInfoDir)%(SourceBuildRepoName).props')" />
|
||||
</ItemGroup>
|
||||
|
||||
<Tarball_WriteSourceRepoProperties
|
||||
SourceBuildMetadataDir="$(TarballGitInfoDir)"
|
||||
Dependencies="@(SourceBuildRepos)" />
|
||||
|
||||
<Message Text="--> Dependencies for $(TarballVersionDetailsFile):" Importance="High" />
|
||||
<Message Text="--> [@(SourceBuildRepos)]" Importance="High" />
|
||||
<MSBuild Projects="$(MSBuildProjectFile)"
|
||||
Condition=" '@(SourceBuildRepos)' != '' "
|
||||
Targets="CloneRepoAndDependentsRecursive"
|
||||
Properties="SourceBuildRepoName=%(SourceBuildRepos.SourceBuildRepoName);RepoSha=%(SourceBuildRepos.Sha);RepoUri=%(SourceBuildRepos.Uri)" />
|
||||
|
||||
</Target>
|
||||
|
||||
<Target Name="CleanClonedSource">
|
||||
<ItemGroup>
|
||||
<TarballSrcBinaryExtension Include="
|
||||
.dll;
|
||||
.Dll;
|
||||
.exe;
|
||||
.pdb;
|
||||
.mdb;
|
||||
.zip;
|
||||
.nupkg" />
|
||||
|
||||
<TarballSrcBinaryToRemove Include="$(TarballSourceDir)**\*%(TarballSrcBinaryExtension.Identity)" />
|
||||
|
||||
<!-- Runtime coreclr and installer parts have empty placeholder PDB files. Keep them. -->
|
||||
<TarballSrcBinaryToRemove Remove="
|
||||
$(TarballSourceDir)runtime*\src\coreclr\.nuget\**\*%(TarballSrcBinaryExtension.Identity);
|
||||
$(TarballSourceDir)runtime*\src\installer\pkg\**\*%(TarballSrcBinaryExtension.Identity)" />
|
||||
</ItemGroup>
|
||||
|
||||
<Message Importance="Normal" Text="Deleting checked in binary files: @(TarballSrcBinaryToRemove, ' ')" />
|
||||
<Delete Files="@(TarballSrcBinaryToRemove)" />
|
||||
</Target>
|
||||
|
||||
<Target Name="RestoreTextOnlyPackages">
|
||||
<PropertyGroup>
|
||||
<TextOnlyPackageRestoreDir>$(ArtifactsDir)text-only-packages/</TextOnlyPackageRestoreDir>
|
||||
<TextOnlyPackageTarballDir>$(TarballRootDir)packages/text-only/</TextOnlyPackageTarballDir>
|
||||
</PropertyGroup>
|
||||
|
||||
<Message Text="Restoring text only packages..." Importance="High" />
|
||||
|
||||
<MSBuild Projects="../Arcade/tools/TextOnlyPackages.csproj"
|
||||
Properties="TargetPackagesPath=$(TextOnlyPackageRestoreDir)"
|
||||
Targets="Restore" />
|
||||
</Target>
|
||||
|
||||
<Target Name="CopyTarballContent">
|
||||
<ItemGroup>
|
||||
<TarballContent Include="$(RepoRoot)src/SourceBuild/tarball/content/**/*" />
|
||||
<EngCommonContent Include="$(RepoRoot)eng/common/**/*" />
|
||||
</ItemGroup>
|
||||
|
||||
<Copy
|
||||
SourceFiles="@(TarballContent)"
|
||||
DestinationFiles="@(TarballContent->'$(TarballRootDir)%(RecursiveDir)%(Filename)%(Extension)')" />
|
||||
|
||||
<Copy
|
||||
SourceFiles="@(EngCommonContent)"
|
||||
DestinationFiles="@(EngCommonContent->'$(TarballRootDir)eng/common/%(RecursiveDir)%(Filename)%(Extension)')" />
|
||||
|
||||
<PropertyGroup>
|
||||
<ExternalTarballsDir>$(TarballRootDir)packages/archive/</ExternalTarballsDir>
|
||||
<SourceBuiltArtifactsTarballName>Private.SourceBuilt.Artifacts</SourceBuiltArtifactsTarballName>
|
||||
<SourceBuiltPrebuiltsTarballName>Private.SourceBuilt.Prebuilts</SourceBuiltPrebuiltsTarballName>
|
||||
<SourceBuiltArtifactsTarballUrl>https://dotnetcli.azureedge.net/source-built-artifacts/assets/</SourceBuiltArtifactsTarballUrl>
|
||||
<ArchiveArtifactsTextFileName>archiveArtifacts.txt</ArchiveArtifactsTextFileName>
|
||||
<ArchiveArtifactsTextFile>$(ExternalTarballsDir)$(ArchiveArtifactsTextFileName)</ArchiveArtifactsTextFile>
|
||||
</PropertyGroup>
|
||||
|
||||
<MakeDir Directories="$(ExternalTarballsDir)" />
|
||||
|
||||
<ItemGroup>
|
||||
<ArtifactUrls Include="$(SourceBuiltArtifactsTarballUrl)$(SourceBuiltArtifactsTarballName).$(PrivateSourceBuiltArtifactsPackageVersion).tar.gz" />
|
||||
<ArtifactUrls
|
||||
Include="$(SourceBuiltArtifactsTarballUrl)$(SourceBuiltPrebuiltsTarballName).$(PrivateSourceBuiltPrebuiltsPackageVersion).tar.gz"
|
||||
Condition="'$(PrivateSourceBuiltPrebuiltsPackageVersion)' != ''" />
|
||||
</ItemGroup>
|
||||
|
||||
<WriteLinesToFile
|
||||
File="$(ArchiveArtifactsTextFile)"
|
||||
Lines="@(ArtifactUrls)"
|
||||
Overwrite="true" />
|
||||
|
||||
<MakeDir Directories="$(TarballRootDir)packages/prebuilt" />
|
||||
<!-- make sure this directory is persisted through source control, NuGet depends on it existing -->
|
||||
<Exec Command="touch $(TarballRootDir)packages/prebuilt/_" />
|
||||
</Target>
|
||||
|
||||
<!--
|
||||
Read directories in which text-only packages have been downloaded and copy content to tarball.
|
||||
-->
|
||||
<Target Name="CopyTextOnlyPackages" DependsOnTargets="RestoreTextOnlyPackages" >
|
||||
|
||||
<ReadLinesFromFile File="$(TextOnlyPackageRestoreDir)/TextOnlyPackageDirectories.txt" Condition="Exists('$(TextOnlyPackageRestoreDir)/TextOnlyPackageDirectories.txt')">
|
||||
<Output TaskParameter="Lines" ItemName="TextOnlyPackageDirectories" />
|
||||
</ReadLinesFromFile>
|
||||
|
||||
<MSBuild Projects="$(MSBuildProjectFile)"
|
||||
Targets="CopySingleTextOnlyDirectory"
|
||||
Properties="TextOnlyDirectory=%(TextOnlyPackageDirectories.Identity);TextOnlyPackageTarballDir=$(TextOnlyPackageTarballDir)" />
|
||||
|
||||
</Target>
|
||||
|
||||
<Target Name="CopySingleTextOnlyDirectory">
|
||||
|
||||
<PropertyGroup>
|
||||
<DirectoryName>$([System.IO.Path]::GetFileName('$(TextOnlyDirectory)'))</DirectoryName>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<TextOnlyPackageContent
|
||||
Include="$(TextOnlyDirectory)/**/*"
|
||||
Exclude="
|
||||
$(TextOnlyDirectory)/**/.nupkg.metadata;
|
||||
$(TextOnlyDirectory)/**/.signature.p7s;
|
||||
$(TextOnlyDirectory)/**/*.nupkg;
|
||||
$(TextOnlyDirectory)/**/*.nupkg.sha512;
|
||||
" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<!-- ttf, woff, woff2, eot are permissible font related content -->
|
||||
<AllowedTextOnlyExtensions Include="
|
||||
.-;
|
||||
.bowerrc;
|
||||
.config;
|
||||
.cs;
|
||||
.cshtml;
|
||||
.csproj;
|
||||
.css;
|
||||
.db;
|
||||
.editorconfig;
|
||||
.env;
|
||||
.env.development;
|
||||
.eot;
|
||||
.fs;
|
||||
.fsproj;
|
||||
.gitignore;
|
||||
.gitkeep;
|
||||
.html;
|
||||
.ico;
|
||||
.js;
|
||||
.json;
|
||||
.map;
|
||||
.md;
|
||||
.nuspec;
|
||||
.otf;
|
||||
.png;
|
||||
.props;
|
||||
.proto;
|
||||
.razor;
|
||||
.sln;
|
||||
.svg;
|
||||
.targets;
|
||||
.ts;
|
||||
.ttf;
|
||||
.tsx;
|
||||
.txt;
|
||||
.vb;
|
||||
.vbproj;
|
||||
.woff;
|
||||
.woff2;
|
||||
browserslist;
|
||||
browserslistrc;
|
||||
LICENSE;" />
|
||||
|
||||
<UnsupportedTextOnlyPackageContent Include="@(TextOnlyPackageContent)" />
|
||||
<UnsupportedTextOnlyPackageContent Remove="$(TextOnlyDirectory)/**/*$([System.String]::Copy('%(AllowedTextOnlyExtensions.Identity)').ToLowerInvariant())" />
|
||||
<UnsupportedTextOnlyPackageContent Remove="$(TextOnlyDirectory)/**/*$([System.String]::Copy('%(AllowedTextOnlyExtensions.Identity)').ToUpperInvariant())" />
|
||||
</ItemGroup>
|
||||
|
||||
<Error Text="Unsupported content found in text-only packages: @(UnsupportedTextOnlyPackageContent)" Condition=" '@(UnsupportedTextOnlyPackageContent)' != '' " />
|
||||
|
||||
<Copy
|
||||
SourceFiles="@(TextOnlyPackageContent)"
|
||||
DestinationFiles="@(TextOnlyPackageContent->'$(TextOnlyPackageTarballDir)$(DirectoryName)/%(RecursiveDir)%(Filename)%(Extension)')" />
|
||||
|
||||
</Target>
|
||||
|
||||
</Project>
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>net7.0</TargetFrameworks>
|
||||
<RestorePackagesPath>$(TargetPackagesPath)</RestorePackagesPath>
|
||||
</PropertyGroup>
|
||||
|
||||
<!--
|
||||
The following text-only packages are ones that are consumed by the installer repo, whose
|
||||
versions are dynamic. These are maintained here so the dynamic version numbers can
|
||||
come from the source (eng/Versions.props). All other more static text-only packages
|
||||
should be added to source-build-reference-packages.
|
||||
-->
|
||||
<ItemGroup>
|
||||
<PackageDownload Include="Microsoft.NET.Sdk.Android.Manifest-$(MauiFeatureBand)" Version="[$(XamarinAndroidWorkloadManifestVersion)]" />
|
||||
<PackageDownload Include="Microsoft.NET.Sdk.iOS.Manifest-$(MauiFeatureBand)" Version="[$(XamarinIOSWorkloadManifestVersion)]" />
|
||||
<PackageDownload Include="Microsoft.NET.Sdk.MacCatalyst.Manifest-$(MauiFeatureBand)" Version="[$(XamarinMacCatalystWorkloadManifestVersion)]" />
|
||||
<PackageDownload Include="Microsoft.NET.Sdk.macOS.Manifest-$(MauiFeatureBand)" Version="[$(XamarinMacOSWorkloadManifestVersion)]" />
|
||||
<PackageDownload Include="Microsoft.NET.Sdk.Maui.Manifest-$(MauiFeatureBand)" Version="[$(MauiWorkloadManifestVersion)]" />
|
||||
<PackageDownload Include="Microsoft.NET.Sdk.tvOS.Manifest-$(MauiFeatureBand)" Version="[$(XamarinTvOSWorkloadManifestVersion)]" />
|
||||
<PackageDownload Include="Microsoft.NET.Workload.Emscripten.net6.Manifest-7.0.100" Version="[$(EmscriptenWorkloadManifestVersion)]" />
|
||||
<PackageDownload Include="Microsoft.NET.Workload.Emscripten.net7.Manifest-7.0.100" Version="[$(EmscriptenWorkloadManifestVersion)]" />
|
||||
<PackageDownload Include="Microsoft.NET.Workload.Mono.ToolChain.net6.Manifest-7.0.100" Version="[$(MonoWorkloadManifestVersion)]" />
|
||||
<PackageDownload Include="Microsoft.NET.Workload.Mono.ToolChain.net7.Manifest-7.0.100" Version="[$(MonoWorkloadManifestVersion)]" />
|
||||
</ItemGroup>
|
||||
|
||||
<!--
|
||||
Write out directories in which text-only packages are downloaded to be consumed by the "CopyTextOnlyPackages"
|
||||
target.
|
||||
-->
|
||||
<Target Name="WriteTextOnlyDirectoryFile" BeforeTargets="Restore">
|
||||
<ItemGroup>
|
||||
<TextOnlyPackagesDirectories Include="$(TargetPackagesPath)$([System.String]::copy('%(PackageDownload.Identity)').ToLower())" />
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<TextOnlyPackageDirectoriesContent>@(TextOnlyPackagesDirectories)</TextOnlyPackageDirectoriesContent>
|
||||
</PropertyGroup>
|
||||
|
||||
<WriteLinesToFile
|
||||
Lines="$(TextOnlyPackageDirectoriesContent)"
|
||||
File="$(TargetPackagesPath)/TextOnlyPackageDirectories.txt"
|
||||
Overwrite="true" />
|
||||
</Target>
|
||||
</Project>
|
|
@ -1,38 +1,22 @@
|
|||
# Source-Build
|
||||
|
||||
This directory contains files necessary to generate a tarball that can be used
|
||||
to build .NET from source.
|
||||
This directory contains the .NET source build infrastructure.
|
||||
|
||||
For more information, see
|
||||
[dotnet/source-build](https://github.com/dotnet/source-build).
|
||||
_content_ - source build infrastructure mirrored to [dotnet/dotnet](https://github.com/dotnet/dotnet)
|
||||
[VMR](https://github.com/dotnet/arcade/blob/main/Documentation/UnifiedBuild/VMR-Design-And-Operation.md).
|
||||
|
||||
_patches_ - repo patches needed for .NET source build. Typically these are ephemeral to workaround integration
|
||||
issues. Patches should always have a tracking issue/pr to backport the fix or address the underlying issue
|
||||
being worked around.
|
||||
|
||||
For more information, see [dotnet/source-build](https://github.com/dotnet/source-build).
|
||||
|
||||
## Local development workflow
|
||||
|
||||
These are the steps used by some members of the .NET source-build team to create
|
||||
a tarball and build it on a local machine as part of the development cycle:
|
||||
|
||||
1. Check out this repository and open a command line in the directory.
|
||||
1. `./build.sh /p:ArcadeBuildTarball=true /p:TarballDir=/repos/tarball1 /p:PreserveTarballGitFolders=true`
|
||||
* The `TarballDir` can be anywhere you want outside of the repository.
|
||||
1. `cd /repos/tarball1`
|
||||
1. `./prep.sh`
|
||||
1. `./build.sh --online`
|
||||
1. Examine results and make changes to the source code in the tarball. The
|
||||
`.git` folders are preserved, so you can commit changes and save them as
|
||||
patches.
|
||||
1. When a repo builds, source-build places a `.complete` file to prevent it from
|
||||
rebuilding again. This allows you to incrementally retry a build if there's a
|
||||
transient failure. But it also prevents you from rebuilding a repo after
|
||||
you've modified it.
|
||||
* To force a repo to rebuild with your new changes, run:
|
||||
`rm -f ./artifacts/obj/semaphores/<repo>/Build.complete`
|
||||
1. Run `./build.sh --online` again, and continue to repeat as necessary.
|
||||
|
||||
When developing a prebuilt removal change, examine the results of the build,
|
||||
specifically:
|
||||
|
||||
* Prebuilt report. For example:
|
||||
`./src/runtime.733a3089ec6945422caf06035c18ff700c9d51be/artifacts/source-build/self/prebuilt-report`
|
||||
When making changes to the source build infrastructure, devs would typically make and test the
|
||||
changes in a local clone of [dotnet/dotnet](https://github.com/dotnet/dotnet). Once complete
|
||||
you would copy the changed files here and make a PR. To validate the end to end experience, you
|
||||
can synchronize the VMR with any changes made here by running [eng/vmr-sync.sh](https://github.com/dotnet/installer/blob/main/eng/vmr-sync.sh).
|
||||
|
||||
## Creating a patch file
|
||||
|
||||
|
@ -44,7 +28,7 @@ git format-patch --zero-commit --no-signature -1
|
|||
```
|
||||
|
||||
Then, move the patch file into this repo, at
|
||||
`src/SourceBuild/tarball/patches/<repo>`.
|
||||
`src/SourceBuild/patches/<repo>`.
|
||||
|
||||
> If you define `PATCH_DIR` to point at the `patches` directory, you can use
|
||||
> `-o` to place the patch file directly in the right directory:
|
||||
|
@ -74,4 +58,5 @@ There is a method to create a series of patches based on a range of Git commits,
|
|||
but this is not usually useful for 6.0 main development. It is used in servicing
|
||||
to "freshen up" the sequence of patches (resolve conflicts) all at once.
|
||||
|
||||
Note: Tarballs have already applied patches to the source code.
|
||||
> Note: The VMR has all of the `src/SourceBuild/patches` applied. This is done as part of the
|
||||
[synchronization process](https://github.com/dotnet/arcade/blob/main/Documentation/UnifiedBuild/VMR-Design-And-Operation.md#source-build-patches).
|
||||
|
|
52
src/SourceBuild/content/.devcontainer/README.md
Normal file
52
src/SourceBuild/content/.devcontainer/README.md
Normal file
|
@ -0,0 +1,52 @@
|
|||
<!--
|
||||
######## ######## ### ######## ######## ## ## #### ######
|
||||
## ## ## ## ## ## ## ## ## ## ## ## ##
|
||||
## ## ## ## ## ## ## ## ## ## ## ##
|
||||
######## ###### ## ## ## ## ## ######### ## ######
|
||||
## ## ## ######### ## ## ## ## ## ## ##
|
||||
## ## ## ## ## ## ## ## ## ## ## ## ##
|
||||
## ## ######## ## ## ######## ## ## ## #### ######
|
||||
-->
|
||||
|
||||
This Codespace can help you debug the source build of .NET. This build takes about
|
||||
45 minutes and, after completion, produces an archived .NET SDK located in
|
||||
`/workspaces/dotnet/artifacts/x64/Release`. In case you selected the `prebuilt-sdk`
|
||||
Codespace, the SDK will already be there.
|
||||
|
||||
## Build the SDK
|
||||
|
||||
To build the VMR, run following:
|
||||
```bash
|
||||
./prep.sh && ./build.sh --online
|
||||
```
|
||||
|
||||
> Please note that, at this time, the build modifies some of the checked-in sources so it might
|
||||
be preferential to rebuild the Codespace between attempts (or reset the working tree changes).
|
||||
|
||||
For more details, see the instructions at https://github.com/dotnet/dotnet.
|
||||
|
||||
## Synchronize your changes in locally
|
||||
|
||||
When debugging the build, you have two options how to test your changes in this environment.
|
||||
|
||||
### Making changes to the VMR directly
|
||||
|
||||
You can make the changes directly to the local checkout of the VMR at `/workspaces/dotnet`. You
|
||||
can then try to build the VMR and see if the change works for you.
|
||||
|
||||
### Pull changes into the Codespace from your fork
|
||||
|
||||
You can also make a fix in the individual source repository (e.g. `dotnet/runtime`) and push the
|
||||
fix into a branch; can be in your fork too. Once you have the commit pushed, you can pull this
|
||||
version of the repository into the Codespace by running:
|
||||
|
||||
```
|
||||
/workspaces/synchronize-vmr.sh \
|
||||
--repository <repo>:<commit, tag or branch> \
|
||||
--remote <repo>:<fork URI>
|
||||
```
|
||||
|
||||
You can now proceed building the VMR in the Codespace using instructions above. You can repeat
|
||||
this process and sync a new commit from your fork. Only note that, at this time, Source-Build
|
||||
modifies some of the checked-in sources so you'll need to revert the working tree changes
|
||||
between attempts.
|
22
src/SourceBuild/content/.devcontainer/devcontainer.json
Normal file
22
src/SourceBuild/content/.devcontainer/devcontainer.json
Normal file
|
@ -0,0 +1,22 @@
|
|||
// Container contains checked-out source code only
|
||||
{
|
||||
"name": "Default",
|
||||
"image": "mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-36",
|
||||
"hostRequirements": {
|
||||
// A completely source built .NET is >64 GB with all the repos/artifacts
|
||||
"storage": "128gb"
|
||||
},
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"ms-dotnettools.csharp"
|
||||
]
|
||||
},
|
||||
"codespaces": {
|
||||
"openFiles": [
|
||||
".devcontainer/README.md"
|
||||
]
|
||||
}
|
||||
},
|
||||
"onCreateCommand": ".devcontainer/init.sh"
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue