diff --git a/.gitattributes b/.gitattributes
deleted file mode 100644
index 8dde15a167..0000000000
--- a/.gitattributes
+++ /dev/null
@@ -1,52 +0,0 @@
-*.doc diff=astextplain
-*.DOC diff=astextplain
-*.docx diff=astextplain
-*.DOCX diff=astextplain
-*.dot diff=astextplain
-*.DOT diff=astextplain
-*.pdf diff=astextplain
-*.PDF diff=astextplain
-*.rtf diff=astextplain
-*.RTF diff=astextplain
-
-*.jpg binary
-*.png binary
-*.gif binary
-
-*.sh eol=lf
-
-*.cs text=auto diff=csharp
-*.vb text=auto
-*.resx text=auto
-*.c text=auto
-*.cpp text=auto
-*.cxx text=auto
-*.h text=auto
-*.hxx text=auto
-*.py text=auto
-*.rb text=auto
-*.java text=auto
-*.html text=auto
-*.htm text=auto
-*.css text=auto
-*.scss text=auto
-*.sass text=auto
-*.less text=auto
-*.js text=auto
-*.lisp text=auto
-*.clj text=auto
-*.sql text=auto
-*.php text=auto
-*.lua text=auto
-*.m text=auto
-*.asm text=auto
-*.erl text=auto
-*.fs text=auto
-*.fsx text=auto
-*.hs text=auto
-
-*.csproj text=auto
-*.vbproj text=auto
-*.fsproj text=auto
-*.dbproj text=auto
-*.sln text=auto eol=crlf
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE b/.github/ISSUE_TEMPLATE
deleted file mode 100644
index 7469281453..0000000000
--- a/.github/ISSUE_TEMPLATE
+++ /dev/null
@@ -1,10 +0,0 @@
-## Steps to reproduce
-
-
-## Expected behavior
-
-
-## Actual behavior
-
-
-## Environment data
\ No newline at end of file
diff --git a/.github/PULL_REQUEST_TEMPLATE b/.github/PULL_REQUEST_TEMPLATE
deleted file mode 100644
index 8a5b8b1b81..0000000000
--- a/.github/PULL_REQUEST_TEMPLATE
+++ /dev/null
@@ -1,3 +0,0 @@
-- Please add a description for changes you are making.
-- If there is an issue related to this PR, please add a reference to it.
-- If this PR should not run tests please add say skip_ci_please in this description replacing the underscores with spaces.
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index a9f37f5aa3..0000000000
--- a/.gitignore
+++ /dev/null
@@ -1,274 +0,0 @@
-syntax: glob
-
-### VisualStudio ###
-
-# Tool Runtime Dir
-/[Tt]ools/
-
-# User-specific files
-*.suo
-*.user
-*.userosscache
-*.sln.docstates
-
-# Build results
-[Dd]ebug/
-[Dd]ebugPublic/
-[Rr]elease/
-[Rr]eleases/
-x64/
-x86/
-build/
-bld/
-[Bb]in/
-[Oo]bj/
-msbuild.log
-msbuild.err
-msbuild.wrn
-
-# Cross building rootfs
-cross/rootfs/
-cross/android-rootfs/
-# add x86 as it is ignored in 'Build results'
-!cross/x86
-
-# Visual Studio 2015
-.vs/
-
-# Visual Studio 2015 Pre-CTP6
-*.sln.ide
-*.ide/
-
-# MSTest test Results
-[Tt]est[Rr]esult*/
-[Bb]uild[Ll]og.*
-
-#NUNIT
-*.VisualState.xml
-TestResult.xml
-
-# Build Results of an ATL Project
-[Dd]ebugPS/
-[Rr]eleasePS/
-dlldata.c
-
-*_i.c
-*_p.c
-*_i.h
-*.ilk
-*.meta
-*.obj
-*.pch
-*.pdb
-*.pgc
-*.pgd
-*.rsp
-*.sbr
-*.tlb
-*.tli
-*.tlh
-*.tmp
-*.tmp_proj
-*.log
-*.vspscc
-*.vssscc
-.builds
-*.pidb
-*.svclog
-*.scc
-
-# Chutzpah Test files
-_Chutzpah*
-
-# Visual C++ cache files
-ipch/
-*.aps
-*.ncb
-*.opendb
-*.opensdf
-*.sdf
-*.cachefile
-*.VC.db
-
-# Visual Studio profiler
-*.psess
-*.vsp
-*.vspx
-
-# TFS 2012 Local Workspace
-$tf/
-
-# Guidance Automation Toolkit
-*.gpState
-
-# ReSharper is a .NET coding add-in
-_ReSharper*/
-*.[Rr]e[Ss]harper
-*.DotSettings.user
-
-# JustCode is a .NET coding addin-in
-.JustCode
-
-# TeamCity is a build add-in
-_TeamCity*
-
-# DotCover is a Code Coverage Tool
-*.dotCover
-
-# NCrunch
-_NCrunch_*
-.*crunch*.local.xml
-
-# MightyMoose
-*.mm.*
-AutoTest.Net/
-
-# Web workbench (sass)
-.sass-cache/
-
-# Installshield output folder
-[Ee]xpress/
-
-# DocProject is a documentation generator add-in
-DocProject/buildhelp/
-DocProject/Help/*.HxT
-DocProject/Help/*.HxC
-DocProject/Help/*.hhc
-DocProject/Help/*.hhk
-DocProject/Help/*.hhp
-DocProject/Help/Html2
-DocProject/Help/html
-
-# Publish Web Output
-*.[Pp]ublish.xml
-*.azurePubxml
-*.pubxml
-*.publishproj
-
-# NuGet Packages
-*.nuget.props
-*.nuget.targets
-*.nupkg
-**/packages/*
-
-# NuGet package restore lockfiles
-project.lock.json
-
-# Windows Azure Build Output
-csx/
-*.build.csdef
-
-# Windows Store app package directory
-AppPackages/
-
-# Others
-*.Cache
-ClientBin/
-[Ss]tyle[Cc]op.*
-~$*
-*.dbmdl
-*.dbproj.schemaview
-*.pfx
-*.publishsettings
-node_modules/
-*.metaproj
-*.metaproj.tmp
-bin.localpkg/
-
-# RIA/Silverlight projects
-Generated_Code/
-
-# Backup & report files from converting an old project file
-# to a newer Visual Studio version. Backup files are not needed,
-# because we have git ;-)
-_UpgradeReport_Files/
-Backup*/
-UpgradeLog*.XML
-UpgradeLog*.htm
-
-# SQL Server files
-*.mdf
-*.ldf
-
-# Business Intelligence projects
-*.rdl.data
-*.bim.layout
-*.bim_*.settings
-
-# Microsoft Fakes
-FakesAssemblies/
-
-### MonoDevelop ###
-
-*.pidb
-*.userprefs
-
-### Windows ###
-
-# Windows image file caches
-Thumbs.db
-ehthumbs.db
-
-# Folder config file
-Desktop.ini
-
-# Recycle Bin used on file shares
-$RECYCLE.BIN/
-
-# Windows Installer files
-*.cab
-*.msi
-*.msm
-*.msp
-
-# Windows shortcuts
-*.lnk
-
-### Linux ###
-
-*~
-
-# KDE directory preferences
-.directory
-
-### OSX ###
-
-.DS_Store
-.AppleDouble
-.LSOverride
-
-# Icon must end with two \r
-Icon
-
-# Thumbnails
-._*
-
-# Files that might appear on external disk
-.Spotlight-V100
-.Trashes
-
-# Directories potentially created on remote AFP share
-.AppleDB
-.AppleDesktop
-Network Trash Folder
-Temporary Items
-.apdisk
-
-# vim temporary files
-[._]*.s[a-w][a-z]
-[._]s[a-w][a-z]
-*.un~
-Session.vim
-.netrwhist
-*~
-
-# Visual Studio Code
-.vscode/
-
-# Private test configuration and binaries.
-config.ps1
-**/IISApplications
-
-# VS generated files
-launchSettings.json
-
diff --git a/BranchInfo.props b/BranchInfo.props
deleted file mode 100644
index a678cbccaa..0000000000
--- a/BranchInfo.props
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
- 2
- 1
- 18
-
- false
-
- $(PackageVersionStamp)
- servicing
- true
- true
-
- $(PreReleaseLabel)
- Release Candidate 1
- master
- master
- dotnet
- $(ContainerName)
- $(MajorVersion).$(MinorVersion)
- $(MajorVersion).$(MinorVersion)
-
-
diff --git a/BuildToolsVersion.txt b/BuildToolsVersion.txt
deleted file mode 100644
index efa1c0be80..0000000000
--- a/BuildToolsVersion.txt
+++ /dev/null
@@ -1 +0,0 @@
-2.1.0-rc1-04626-02
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 63bed2642c..f2f6a1064e 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,4 +1,4 @@
-Contributing
-============
-
-See [Contributing](https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/contributing.md) for information about coding styles, source structure, making pull requests, and more.
+THIS REPO IS ARCHIVED AND DOES NOT ACCEPT PULL REQUESTS.
+
+Active development has moved to https://github.com/dotnet/runtime. We welcome
+ you to visit us there. For details, please see [README.md].
\ No newline at end of file
diff --git a/Directory.Build.props b/Directory.Build.props
deleted file mode 100644
index c33640f328..0000000000
--- a/Directory.Build.props
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
-
- true
-
-
-
-
- AnyCPU
- true
- true
-
-
-
-
-
-
- $(IntermediateOutputPath)
-
-
-
\ No newline at end of file
diff --git a/Documentation/building/windows-instructions.md b/Documentation/building/windows-instructions.md
deleted file mode 100644
index 33561b841c..0000000000
--- a/Documentation/building/windows-instructions.md
+++ /dev/null
@@ -1,74 +0,0 @@
-Build Core-Setup on Windows
-========================
-
-These instructions will lead you through building Core-Setup.
-
-----------------
-# Environment
-
-You must install several components to build the Core-Setup repo. These instructions were tested on Windows 8+.
-
-## Visual Studio
-
-Visual Studio must be installed. Supported versions:
-- [Visual Studio 2015 Update 3](https://www.visualstudio.com/vs/older-downloads/) (Community, Professional, Enterprise). The community version is completely free.
-
-For Visual Studio 2015:
-* Required installer options that need to be manually enabled:
- * Universal Windows App Development Tools: Tools and Windows 10 SDK (10.0.14393) + Windows 10 SDK (10.0.10586)
- * Visual C++
-
-Visual Studio Express is not supported.
-
-## CMake
-
-The Core-Setup repo build has been validated using CMake 3.6.3
-
-- Install [CMake](http://www.cmake.org/download) for Windows.
-- Add its location (e.g. C:\Program Files (x86)\CMake\bin) to the PATH environment variable.
- The installation script has a check box to do this, but you can do it yourself after the fact
- following the instructions at [Adding to the Default PATH variable](#adding-to-the-default-path-variable)
-
-
-## Git
-
-For actual user operations, it is often more convinient to use the GIT features built into Visual Studio 2015.
-However the Core-Setup and the tests use the GIT command line utilities directly so you need to install them
-for these to work properly. You can get it from
-
-- Install [Git For Windows](https://git-for-windows.github.io/)
-- Add its location (e.g. C:\Program Files\Git\cmd) to the PATH environment variable.
- The installation script has a check box to do this, but you can do it yourself after the fact
- following the instructions at [Adding to the Default PATH variable](#adding-to-the-default-path-variable)
-
-## PowerShell
-PowerShell is used in the build system. Ensure that it is accessible via the PATH environment variable.
-Typically this is %SYSTEMROOT%\System32\WindowsPowerShell\v1.0\.
-
-Powershell version must be 3.0 or higher. This should be the case for Windows 8 and later builds.
-- Windows 7 SP1 can install Powershell version 4 [here](https://www.microsoft.com/en-us/download/details.aspx?id=40855).
-
-## DotNet Core SDK
-While not strictly needed to build or tests the .NET Core repository, having the .NET Core SDK installed lets
-you use the dotnet.exe command to run .NET Core applications in the 'normal' way. Visual Studio 2015 (update 3) should have
-installed the .NET Core SDK, but in case it did not you can get it from the [Installing the .Net Core SDK](https://www.microsoft.com/net/core) page.
-
-## Adding to the default PATH variable
-
-The commands above need to be on your command lookup path. Some installers will automatically add them to
-the path as part of installation, but if not here is how you can do it.
-
-You can of course add a directory to the PATH environment variable with the syntax
-```
- set PATH=%PATH%;DIRECTORY_TO_ADD_TO_PATH
-```
-However the change above will only last until the command windows closes. You can make your change to
-the PATH variable persistent by going to Control Panel -> System And Security -> System -> Advanced system settings -> Environment Variables,
-and select the 'Path' variable in the 'System variables' (if you want to change it for all users) or 'User variables' (if you only want
-to change it for the currnet user). Simply edit the PATH variable's value and add the directory (with a semicolon separator).
-
--------------------------------------
-# Building
-
-Once all the necessary tools are in place, building is trivial. Simply run build build.cmd script that lives at
-the base of the repository.
\ No newline at end of file
diff --git a/Documentation/design-docs/DotNetCore-SharedPackageStore.md b/Documentation/design-docs/DotNetCore-SharedPackageStore.md
deleted file mode 100644
index 2d8eda0f90..0000000000
--- a/Documentation/design-docs/DotNetCore-SharedPackageStore.md
+++ /dev/null
@@ -1,211 +0,0 @@
-# .NET Core - Shared Package Store
-
-## Introduction
-To enable sharing of assemblies among all machine-wide .NET Core applications, a centralized shared assembly store is needed. It enables applications to be trimmed of the shared assemblies and frees the apps from carrying them. This document will describe such an assembly store and its lookup that applications can take advantage of during development and their deployment. It also describes commands that will augment `dotnet` to compose shared package store entries and publishing mechanisms through which apps can filter assemblies to reduce disk usage.
-
-### Packages Store
-
-The package store can be either a global system-wide folder or a dotnet.exe relative folder:
-
-+ **Global**:
- - The `dotnet` root location -- on Windows, the folder is located in `C:\Program Files (x86)\`. See layout below.
- - In the `store/install` folder we expect packages to be installed ONLY through platform installers like MSI, pkg, deb, apt-get etc.
- - The package layout composed with the `dotnet store` command (details follow) are expected to be unzipped directly into the `store` folder. Note, that this unzip step is a manual action.
-
-```
- - dotnet.exe
- - shared
- - netcoreapp2.0
- + 2.0.0-preview2-00001
- - store
- - install
- + refs
- + netcoreapp2.0
- + netcoreapp2.1
- + refs
- + netcoreapp2.0
- + netcoreapp2.1
-```
-
-The layout within `netcoreapp*` folders is a NuGet cache layout.
-
-
-### Composing a runtime (non-ref) package store
-
-To compose the layout of the shared package store, we will use a dotnet command called `dotnet store`. We expect the *hosting providers* (ex: Antares) to use the command to prime their machines and framework authors who want to provide *pre-optimized package archives* create the compressed archive layouts.
-
-The layout is composed from a list of package names and versions specified as xml:
-
-**Roslyn Example**
-```xml
-
-
-
-
-
-
-
-```
-
-
-and issue a command like below:
-
-```
-dotnet store --manifest packages.xml --framework netcoreapp2.0 [--output C:\Foo] --runtime win7-x64 --framework-version 2.0.0-preview2-00001 [--no-optimize]
-
---framework Specifies the TFM that the package store is applicable to
---output The output directory to create the package store in (default: %USERPROFILE%\.dotnet or ~/.dotnet)
-
---skip-optimization Do not perform crossgen of the assemblies after "restore" (optimize is the default)
-
---runtime The runtime identifier of the target platform where these assemblies will be run
---framework-version The Microsoft.NETCore.App package version that will be used to run the assemblies
-
-```
-NOTE: It is a requirement that `packages.xml` is of msbuild format, because it forms the entry point from which the rest of the SDK's functionality can be accessed
-
-Hosting providers would create a `packages.xml` file corresponding to the packages that will be shared in their hosting environment and specify the file to `dotnet store`. The file can be on the file system or from an URL. The TFM argument is used in the shared package layout described above.
-
-If `--optimize` is specified, we would precompile all the managed assets to native code in a temp folder before copying to the output folder. If crossgen is used, it would be the one acquired in the closure of the `Microsoft.NETCore.App` specified by the `--framework-version` option. Also, if no `--output` folder is specified, then the default is `~/.dotnet` or `%USERPROFILE%\.dotnet\`. The output asset files will be present in the following layout: `$HOME/.dotnet/packages/{tfm}/{package-name}/{package-version}/{asset-path}`.
-
-The output folder will be consumed by the runtime by adding to the `DOTNET_SHARED_STORE` environment variable. See probe precedence below.
-
-# Building apps with shared packages
-
-The current mechanism to build applications that share assemblies is by not specifying a RID in the project file. Then, a portable app model is assumed and assemblies that are part of Microsoft.NETCore.App are found under the `dotnet` install root. With shared package store, applications have the ability to filter any set of packages from their publish output. Thus the decision of a portable or a standalone application is not made at the time of project authoring but is instead done at publish time.
-
-## Project Authoring
-We will by default treat `Microsoft.NETCore.App` as though `type: platform` is always specified, thus requiring no explicit RID specification by the user. It will be an `ERROR` to specify a RID in the csproj file using the `` tag.
-
-## dotnet restore
-
-Because RIDs are not available until publish time, the application is treated as though it is a present day portable app and a regular restore is performed.
-
-## dotnet build
-
-`dotnet build` should treat any project as though it is a portable app and produce `runtimeconfig.json` with the `Microsoft.NETCore.App` as the framework. In addition, the `runtimeconfig.json` file should also specify the TFM field as:
-
-```json
-"runtimeOptions": {
- "tfm": "netcoreapp2.0",
- "framework": {
- "version": "2.0.0",
- "name": "Microsoft.NETCore.App"
- }
-}
-```
-Note that this is different from current behavior of `dotnet run` for an application that specifies the `` tag in the csproj.
-**Current Behavior:** Picks `M.N.A` assemblies out of the NuGet cache without taking advantage of optimizations available from the shared `Microsoft.NETCore.App`.
-**New Behavior:** Picks `M.N.A` assemblies from the shared framework and the rest of them from the shared package store or the NuGet cache.
-
-`dotnet build` can take advantage of the `refs` folder available at the `store/install/` folder from the `dotnet` root directory enabling the offline-restore-build scenario. Although we are designing to augment `dotnet build` in the future regarding the reference assemblies, for the scope of this work we'll focus only on runtime assemblies.
-
-## Host probe precedence
-
-The host will probe in the following order of precedence for `dotnet run` and application activations post `dotnet publish`:
-
-+ `$CORE_SERVICING` on Unix or `%ProgramFiles(x86)%\coreservicing` on Windows.
-+ Application Bin and Shared FX directory
-+ `DOTNET_SHARED_STORE` in the chained order
-+ Store locations
- - The dotnet.exe relative shared package store
- - The global shared package store
- - ~~`DOTNET_HOSTING_OPTIMIZATION_CACHE` deprecated in favor of `DOTNET_SHARED_STORE`~~
-+ Additional Probing Paths
- - `--additionalprobingpaths` specified in the command line
- - `runtimeOptions.additionalProbingPaths` (includes NuGet cache probe specified by the CLI for `dotnet run`)
-
-**NOTE:** `--additionalprobingpaths` can be passed template paths like below and the host will interpret `|arch|/|tfm|` appropriately to look for assets:
- `%USERPROFILE%\user\cache\|arch|\|tfm|` or `$HOME/user/cache/|arch|/|tfm|`
-## dotnet publish
-
-Publish will be enhanced to support a filter profile file specified as xml. This file explicitly lists all asset packages that need to be trimmed out of the publish output. The following are examples of how various application types can be published.
-
-Publish a portable app:
-
-```dotnet publish```
-
-Publish a standalone app for the current RID:
-
-```dotnet publish --standalone```
-
-Publish a standalone app for win7-x64 filtering out the publish profile:
-
-```dotnet publish --runtime win7-x64 filter https://asp.net/core/dev/1.2.0/profile.xml```
-
-Publishing a portable app for win7-x64 filtering out the publish profile:
-
-```dotnet publish filter https://asp.net/core/dev/1.2.0/profile.xml```
-
-Publishing a Windows level portable application (a.k.a rid-specific portable app) i.e., filter all non-windows RIDs but split the bin directory on windows RIDs (win8, win7 and win10, for example):
-
-```dotnet publish filter https://asp.net/core/dev/1.2.0/win.profile.xml```
-
-To chain multiple profiles, specify `filter` multiple times.
-
-Note that the `profile.xml` specifies exact RID-specific or IL packages to filter out of `dotnet publish` output -- i.e., the physical files will be filtered out of the `dotnet publish` output. The `deps.json` (logical assets) file will still contain the entries specified in the `profile.xml` file.
-
-## Scenarios
-
-### ASP .NET
-+ If authoring shared package installers (eager cache):
- - Start from a clean directory and a list of packages in `packages.xml` file.
- - Use `dotnet store` to produce the layout in the directory.
- - Make MSI/pkg/deb and zips of this layout.
- - Publish the `profile.xml` file that users can use in sync with the installers.
- - Developer/Deployment-admin installs the MSIs/zips to the deployment machines.
-+ If letting app deployers cache shared packages (lazy cache):
- - Publish `packages.xml` file that can be used to perform `dotnet store`.
- - Publish `profile.xml` file that can perform publish filtering.
- - Deployment-admin issues `dotnet store` when running the app.
-+ Developer/Deployment-admin issues `dotnet publish filter profile.xml` to produce an ASP.NET app without containing shared components.
- - Or developer/Deployment-admin issues `dotnet run` after installing MSIs or zips.
-
-### Antares
-+ Antares produces the layout using a list of packages and `dotnet store` in a folder.
-+ This folder is then chained into environment variable: `DOTNET_SHARED_STORE`.
-+ When building app from source, issue `dotnet run` to pick up the shared packages.
-+ When publishing an app to run, issue `dotnet publish filter profile.xml` with Antares profile.
-
-### Roslyn
-+ Roslyn packages are part of the packages directory
-+ Apps that use Roslyn must explicitly take a dependency on Roslyn and not through M.N.A.
-+ Apps can choose to skip publishing these DLLs using the Roslyn profile file that we'd publish.
-+ Apps are deployed on another machine where the runtime is installed.
-+ Apps will run as Roslyn packages are part of the runtime installer.
-
-### Hosting Primers
-+ I host apps that are already published
- - Use `dotnet store` and produce layout or unzip an earlier layout.
- - Set `DOTNET_SHARED_STORE` to point to layout.
- - Nature of publish:
- + Using my hosting profile
- + App publish directory doesn't contain the filtered files picked from layout.
- + Without my hosting profile
- + Assemblies from app publish directory are overridden (*status quo*)
-
-+ I build user apps from source
- - dotnet store
- - Zip the layout
- - Deploy on hosting servers
- - Publish apps with filter
-
-## Work Items
-
-### Core-Setup
-
-+ Change name of `Microsoft.NETCore.App` to `netcoreapp2.0` in the dotnet root. Note that this has to maintain compat.
-+ Move the Roslyn assemblies out of the shared framework.
-+ Build installers on Windows, Ubuntu and OSX for the Roslyn (shared) packages.
-+ Implement host probing for the user and global package stores.
-+ Incorporate changes in host for the TFM changes.
-
-### CLI
-
-+ Make CLI consume Roslyn dependencies out of the shared packages root as these are not part of M.N.A anymore.
-+ Make `dotnet restore` restore as though project is `type: platform`.
-+ Make `dotnet build` treat projects as though they are `type: platform`.
-+ `dotnet publish filter` support.
-+ `dotnet store` full implementation.
-
-
diff --git a/Documentation/design-docs/additional-deps.md b/Documentation/design-docs/additional-deps.md
deleted file mode 100644
index cae2eac093..0000000000
--- a/Documentation/design-docs/additional-deps.md
+++ /dev/null
@@ -1,108 +0,0 @@
-# Additional-deps
-
-## Summary
-This document describes current (2.0) and proposed (2.1) behavior for "light-up" scenarios regarding additional-deps functionality.
-
-The `deps.json` file format specifies assets including managed assemblies, resource assemblies and native libraries to load.
-
-Every applicaton has its own `.deps.json` file which is automatically processed. If an application needs additional deps files, typically for "lightup" extensions, it can specify that by:
-- The `--additional-deps` command line option
-- If this is not set, the `DOTNET_ADDITIONAL_DEPS` environment variable is used
-
-The value can be a combination of:
-- A path to a deps.json file
-- A path to a folder which can contain several deps.json files
-separated by a path delimiter (e.g. `;` on Windows, `:` otherwise).
-
-When additional-deps specifies a folder:
-- The resulting folder can have more than one deps.json files; all will be processed
-- If there are several frameworks (e.g. Microsoft.AspNetCore.App, Microsoft.AspNetCore.All, Microsoft.NETCore.App) then each will be processed
-
-## 2.0 behavior
-When additional-deps specifies a folder, the subfolder must follow a naming convention of `shared//`
-
-The semantics of `requested_framework_version` is that it matches exactly the "version" specified by the `runtimeconfig.json` in its "framework" section:
-```
-{
- "runtimeOptions": {
- "framework": {
- "name": "Microsoft.NETCore.App",
- "version": "2.0.0"
- }
- }
-}
-```
-So even if a roll-forward on a framework occurred here to "2.0.1", the directory structure must match the "requested" version ("2.0.0" in this case).
-
-Note that the app and each framework has its own `runtimeconfig.json` setting, which can be different because each defines the framework "name" and "version" for the next lowest framework which don't have to have the same "version".
-
-### 2.0 issues
-The primary issue is the use of the `requested_framework_version` folder naming convention:
-- Since it does not take into account newer framework versions, any "lightup" extensions must co-release with new framework(s) releases which is especially an issue with frequent patch releases. However, this is somewhat mitigated because most applications in their `runtimeconfig.json` do not target an explicit patch version, and just target `major.minor.0`
-- Since it does not take into account older framework versions, a "lightup" extensions should install all previous versions of deps files. Note that since some previous versions may require different assets in the deps.json file, for example every minor release, this issue primarily applies to frequent patch versions.
-
-The proposal for this is to "roll-backwards" starting with the "found" version.
-
-A secondary issue with with the store's naming convention for framework. It contains a path such as:
- `\dotnet\store\x64\netcoreapp2.0\microsoft.applicationinsights\2.4.0`
-where 'netcoreapp2.0' is a "tfm" (target framework moniker). During roll-forward cases, the tfm is still the value specified in the app's runtimeconfig. The host only includes store folders that match that tfm, so it may not find packages from other deps files that were generated off a different tfm. In addition, with the advent of multiple frameworks, it makes it cumbersome to be forced to install to every tfm because multiple frameworks may use the same package, and because each package is still identified by an exact version.
-
-The proposal for this is to add an "any" tfm.
-
-Finally, a third issue is there is no way to turn off the global deps lightup (via `%DOTNET_ADDITIONAL_DEPS%`) for a single application if they run into issues with pulling in the additional deps. If the environment variable is set, and an application can't load because of the additional lightup deps, and the lightup isn't needed, there should be a way to turn it off so the app can load. One (poor) workaround would be to specify `--additional-deps` in the command-line to point to any empty file, but that would only work if the command line can be used in this way to launch the application.
-
-## 2.1 proposal (roll-backwards)
-In order to prevent having to co-release for roll-forward cases, and deploy all past versions, the followng rules are proposed:
-1) Instead of `requested_framework_version`, use `found_framework_version`
-
-Where "found" means the version that is being used at run time including roll-forward. For example, if an app requests `2.1.0` of `Microsoft.NETCore.App` in its runtimeconfig.json, but we actually found and are using `2.2.1` (because there were no "compatible" versions installed from 2.1.0 to 2.2.0), then look for the deps folder `shared/Microsoft.NETCore.App/2.1.1` first.
-
-2) If the `found_framework_version` folder does not exist, find the next closest by going "backwards" in versioning
-3) The next closest version only includes a lower minor or major if enabled by "roll-forward-by-no-candidate-fx"
-
-The "roll-forward-by-no-candidate-fx" option has values (0=off, 1=minor, 2=minor\major) and is specified by:
-- `%DOTNET_ROLL_FORWARD_ON_NO_CANDIDATE_FX%` environment variable
-- `rollForwardOnNoCandidateFx` in runtimeconfig.json
-- `--roll-forward-on-no-candidate-fx` command line option
-
-where 1 (minor) is the default.
-
-Similar to `applyPatches`, the app may or may not want to tighten or loosen the range of supported frameworks. The default of `minor` seems like a good fit for additional-deps.
-
-
-4) Similar to roll-forward, a release version will only "roll-backwards" to release versions, unless no release versions are found. Then it will attempt to find a compatible pre-release version.
-
-
-**Update** This requirement (4) is considered an optional feature and is not currently planned for 2.1.
-
-
-Note: some "roll-backwards" semantics are different than roll-forward semantics. The "apply patches" functionality that exists in roll-forward doesn't make sense here since we are going "backwards" and the nearest (most compatible) version already has patches applied and we don't want to take older patches. In addition, roll-forward will not go from pre-release to release (since breaking changes on new features may occur during pre-release-to-release versions), but again that doesn't make sense here since we are going backwards to pre-existing (compatible) versions.
-
-
-## 2.1 proposal (add an "any" tfm to store)
-For example,
- `\dotnet\store\x64\any\microsoft.applicationinsights\2.4.0`
-
-The `any` tfm would be used if the specified tfm (e.g. netcoreapp2.0) is not found:
- `\dotnet\store\x64\netcoreapp2.0\microsoft.applicationinsights\2.4.0`
-
-_Note: doesn't this make "uninstall" more difficult? Because multiple installs may write the same packages and try to remove packages that another installer created?_
-
-## 2.1 proposal (add runtimeconfig knob to to disable `%DOTNET_ADDITIONAL_DEPS%`)
-
-Add an `additionalDepsLookup` option to the runtimeconfig with these values:
-
- 0) The `%DOTNET_ADDITIONAL_DEPS%` is not used
- 1) `DOTNET_ADDITIONAL_DEPS` is used (the default)
-
-
-**Update** this is a nice-to-have feature and is no longer planned for 2.1.
-
-## Long-term thoughts
-A lightup "extension" could be considered an application, and have its own `runtimeconfig.json` and `deps.json` file next to its corresponding assembly(s). In this way, it would specify the target framework version and thus compatibility with the hosting application could be established. Having an app-to-app dependency in this way is not currently supported.
-
-It could be supported by entending the concept of "multi-layered frameworks" like we have with Microsoft.AspNetCore.App, Microsoft.AspNetCore.All, Microsoft.NETCore.App, where they each have their own runtimeconfig.json and deps.json files.
-
-Adding support for app-to-app dependencies would imply adding a "horizontal" hierarchy, and introducing a "graph reconcilation" phase that would need to be able to collapse several references to the same app or framework when they have different versions.
-
-Similar to additional-deps, the extension apps could "light up" by (for example) an "additional-apps" host option or environment variable.
diff --git a/Documentation/design-docs/assembly-conflict-resolution.md b/Documentation/design-docs/assembly-conflict-resolution.md
deleted file mode 100644
index 70560ab326..0000000000
--- a/Documentation/design-docs/assembly-conflict-resolution.md
+++ /dev/null
@@ -1,65 +0,0 @@
-
-# Assembly Conflict Resolution
-
-## Summary
-This document describes current and proposed behavior for dealing with references to assemblies that exist physically in more than one location including the "app" location and "framework" location(s). It proposes moving from "app wins" to "framework wins" during a [minor] or [major] roll-forward when the framework has a newer version of the given assembly.
-
-The corresponding issue is https://github.com/dotnet/core-setup/issues/3546.
-
-## Current behavior
-
-When a CoreCLR app is being launched, it builds a list of "probing" locations and then iterates through each <*layer*'s'>.app.deps.json file. For each assembly entry in that file, it uses the probing locations in order to determine the physical location of the assembly. Once all deps.json files are parsed, that information (which consists of a list of full paths to assemblies) is passed to the CLR which it uses to load each assembly when it is accessed.
-
-A *layer* consists of the app at the highest layer, then then a chain of one or more framework layers ending with Microsoft.NETCore.App as the lowest layer. For 2.0 and earlier, there were only the app and Microsoft.NETCore.App layers. For 2.1+, those two layers exist plus additional, optional frameworks in-between those two.
-
-Since each layer (and other probing locations) can contain the same assembly by name, the "host policy" determines the semantics for conflict cases where the same assembly exists more than once. The "host policy" logic lives in hostpolicy.dll located in the Microsoft.NETCore.App's folder.
-
-#### Probe Ordering
-The probing locations consists of:
-1. Serving Location
-1. Shared Store
-1. Framework directory(s) from higher to lower
-1. App directory
-1. Additional locations specified in runtimeconfig.dev.json file
-
-For example, here's the probing order on Windows when running a non-published folder (in order to get additional locations from the app.runtimeconfig.dev.json file)
-* `C:\\Program Files (x86)\\coreservicing\\x64`
-* `C:\\Program Files (x86)\\coreservicing\\pkgs`
-* `C:\\Program files\\dotnet\\shared\\Microsoft.NETCore.App\\2.0.0`
-* (app location)
-* `C:\\Users\\\\.nuget\\packages`
- `C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackagesFallback`
-* `C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder`
-
-Once a deps.json entry has been found in a probe location, no further probes are performed for that entry.
-
-#### Deps.json Ordering
-The order in which each layer's deps.json is processed is:
-* The application
-* Deps file specified by optional `--additional-deps` argument
-* The framework(s) from higher to lower
-
-#### Algorithm
-1. Determine the probing paths
-1. For each entry in the app's deps.json
-1. ->For each probing path
-1. -->If the probing path is a framework, then check its deps.json to see if it contains the exact package (by name and version). If so, then use the framework's location and end probing for this entry
-1. -->If the probing path is not a framework, then use that location and end probing for this entry
-1. Read the additional deps from `--additional-deps` and repeat steps 3-5
-1. Read each framework's deps.json (higher to lower) and repeat steps 3-5
-1. Pass the set of assemblies and their paths to the CLR
-
-Note that for an app, its probing path comes *after* the framework's, so intuitively it would appear that "framework wins" in collisions. However, because the app's deps.json is parsed *before* the framework's deps.json and because the app will likely reference an OOB package that the framework doesn't (because a framework, at least Microsoft.NETCore.App, has its own metapackage and does not reference OOB packages), the framework probing path never matches up in step 4 for the app's deps.json package\assembly entry, so it goes to the next probing path which is the app's and because the package matches the "app wins".
-
-## Proposed changes for 2.1
-Probe the app location before the framework's. This means flip (3) and (4) under **Probe Ordering** above and treat the app as the highest-level framework. The reason is that there may be frameworks that use OOB packages like apps, and we want to have "app wins" in non roll-forward cases.
-
-Replace step 3 under **Algorithm** above with:
-* For each probing path except frameworks that are higher-level
-
-The reason for this change is that a given framework should never have a dependency on a higher-level framework, and is expected to find deps assets in its layer or lower. This is also required so that the given framework can find its asset, and replace the higher-level asset (see next paragraph).
-
-Replace step 4 under **Algorithm** above with:
-* If the probing path is a framework, then check its deps.json to see if it contains the exact package (by name and version). If so check if a [minor] or [major] roll-forward occurred for this framework. If true (roll-forward), then check its deps.json to see if it contains a newer version of the assembly (by Assembly Version and then File Version if necessary) compared to a previously found deps entry and use that and end probing for this entry. If false (no roll-forward), then use that location and end probing for this entry.
-
-In order to compare Assembly Version and File Version, additional metadata will need to be written to each deps.json file. If this metadata is not present (as in the case of applications published prior to 2.1) then the assembly will be considered older and will not replace any locations that the assembly was previously found at.
diff --git a/Documentation/design-docs/corehost.md b/Documentation/design-docs/corehost.md
deleted file mode 100644
index f9d8bc88ee..0000000000
--- a/Documentation/design-docs/corehost.md
+++ /dev/null
@@ -1,101 +0,0 @@
-# corehost runtime/assembly resolution
-
-The shared host locates assemblies and native libraries using a combination of: Servicing Index, Files in the application folder (aka "app-local") and files from package caches.
-
-## Definitions and Formats
-
-### Terms/Notes
-
-* The term "Library" (Title Case) is used throughout this document to refer to a NuGet Package. We use this term because it is used in the code to represent multiple things: Packages, Projects and Framework Assemblies are all types of "Library".
-* All of the assembly resolution here refers to setting up the default assembly load context for the runtime. Further dynamic loads (plugins, etc.) can still have custom resolution logic provided by using an `AssemblyLoadContext` in the managed code. Essentially, we are setting up the necessary assemblies to launch the `Program.Main` (and all the assemblies that are statically-referenced by that).
-
-### Servicing Index
-
-The servicing index is loaded when the `CORE_SERVICING` environment variable is non-empty. When this variable is non-empty, it points to a directory that will be the **Servicing Root**. There may be platform-specific default locations, to be determined later.
-
-An index file is located at the path defined by `$CORE_SERVICING/servicing_index.txt`. In this file are a series of lines of one of the following formats:
-
-```
-# Lines starting with a '#' and blank lines are ignored.
-
-# Identifies an asset from a NuGet Package that has been serviced.
-package|[Package ID]|[Package Version]|[Original Asset Relative Path]=[New Asset Path, relative to Servicing Root]
-package|System.Threading.Thread|1.2.3.4|lib/dotnet5.4/System.Threading.Thread.dll=patches/abc123/System.Threading.Thread.dll
-
-# TBD: Host/Runtime servicing entries.
-```
-
-Paths in this file are **always** specified using `/`, even on Windows. They must be converted to platform-specific directory separators.
-
-This index is loaded when needed during the Resolution Process (see below).
-
-### Runtime Configuration File
-
-The runtime configuration file is used to determine settings to apply to the runtime during initialization and for building the TPA and Native Library Search Path lists. See the [spec for the runtime configuration file](runtime-configuration-file.md) for more information.
-
-### Files in the application folder
-
-Any file with the suffix `.dll` in the same folder as the managed application being loaded (the "Application Base") will be considered a viable assembly during the resolution process. The host **assumes** that the assembly's short name is the same as the file name with the `.dll` suffix removed (yes, this is not technically required by the CLR, but we assume it for use with this host).
-
-### Files from package caches
-
-Only assemblies listed in the dependencies file can be resolved from a package cache. To resolve those assemblies, two environment variables are used:
-
-* `DOTNET_PACKAGES` - The primary package cache. If not set, defaults to `$HOME/.nuget/packages` on Unix or `%LOCALAPPDATA%\NuGet\Packages` (TBD) on Windows. **NOTE**: Currently the host uses different folders as we are still coordinating with NuGet to get the directories right (there are compatability considerations). Currently we always use `$HOME/.dnx/packages`(Unix)/`%USERPROFILE%\.dnx\packages`(Win).
-* `DOTNET_PACKAGES_CACHE` - The secondary cache. This is used by shared hosts (such as Azure) to provide a cache of pre-downloaded common packages on a faster disk. If not set, it is not used.
-
-Given the Package ID, Package Version, Package Hash and Asset Relative Path provided in the runtime configuration file, **and the assembly is not serviced** (see the full resolution algorithm below) resolution proceeds as follows (Unix-style paths will be used for convenience but these variables and paths all apply to Windows as well):
-
-1. If `DOTNET_PACKAGES_CACHE` is non-empty, read the file `$DOTNET_PACKAGES_CACHE/[Package ID]/[Package Version]/[Package Id].[Package Version].nupkg.sha512` if present. If the file is present and the content matches the `[Package Hash]` value from the dependencies file. Use that location as the Package Root and go to 3
-2. Using `DOTNET_PACKAGES`, or it's default value, use `$DOTNET_PACKAGES/[Package ID]/[Package Version]` as the Package Root
-3. Concatenate the Package Root and the Asset Relative Path. This is the path to the asset (managed assembly or native library).
-
-## Assembly Resolution
-
-During host start-up, the host identifies if a runtime configuration file is present and loads it. It also scans the files located in the Application Base and determines the assembly name for each (using the file name). It builds a set of assembly names to be loaded by the union of the assembly names listed in runtime configuration file and the assemblies located in the Application Base.
-
-A runtime configuration file is **not** required to successfully launch an application, but without it, all the dependent assemblies must be located within the same folder as the application. Also, since servicing is performed on the basis of packages, an application without a runtime configuration file file cannot use the servicing index to override the location of assemblies.
-
-The host looks for the `.deps` file in the Application Base with the file name `[AssemblyName].deps`. The path to the deps file can be overridden by specifying `--depsfile:{path to deps file}` as the first parameter to the application.
-
-Given the set of assembly names, the host performs the following resolution. In some steps, the Package ID/Version/Relative Path data is required. This is only available if the assembly was listed in the deps file. If the assembly comes from the app-local folder, these resolution steps are skipped.
-
-1. If there is an entry in the servicing index for the Package ID/Version/Relative Path associated with the assembly, the Servicing Root is concatenated with the New Asset Path from the index and used as the Assembly Path. This occurs **even if the assembly is also located app-local**, as long as it is also in the runtime configuration file.
-2. If there is a file in the Application Base with the file name `[AssemblyName].dll`, `[AssemblyName].ni.dll`, `[AssemblyName].exe`, or `[AssemblyName].ni.exe` (in that order), it its full path is used as the Assembly Path
-3. The Assembly Path is resolved out of the Package Caches using the algorithm above (in 'Files from package caches').
-
-A similar process is used to produce a list of Native Library Paths. Native libraries are listed in the runtime configuration file (under the `native` asset section) and searched in the same way as managed assemblies (Servicing, then app-local, then package caches). The main exception is that the app-local file extensions vary by platform (`.dll` on Windows, `.so` on Linux, `.dylib` on Mac OS X)
-
-Once a the list of assemblies and native libraries is produced, the host will check for duplicates. If both an `.ni.dll`/`.ni.exe` image and a `.dll`/`.exe` assembly are found for an assembly, the native image will be preferred and the IL-only assembly will be removed. The presence of two different paths for the same assembly name will be considered an error. The managed assemblies are provided in the Trusted Platform Assemblies (TPA) list for the CoreCLR during startup. The folder paths for each native library are deduplicated and provided in the Native Search Paths list for the CoreCLR during startup.
-
-**NOTE**: The CLR may add support for providing a similar structure as the TPA list for native libraries (i.e. a flat list of full file paths).
-
-### Satellite Assemblies
-
-Satellite Assemblies (assemblies containing only embedded resources used in place of the resources provided by an assembly) are detected by path convention in the host. The convention will be to look at the last two segments of the path (the file name and the immediate parent directory name). If the parent directory matches an [IETF Language Tag](https://en.wikipedia.org/wiki/IETF_language_tag) (or more specifically, a value usable in the Culture field for a CLR Assembly Name), then the assembly is considered culture-specific (for the culture specified in that folder name). Upon determining this, the host will place the culture-neutral assemblies on the TPA list and provide the directories containing the assemblies as Platform Resource Roots to the CLR to allow it to locate the assemblies.
-
-## Runtime Resolution
-
-Runtime resolution is controlled by these environment variables:
-
-* `DOTNET_RUNTIME_SERVICING` -> Global override for runtime
-* `DOTNET_PACKAGES_CACHE` -> Secondary cache
-* `DOTNET_PACKAGES` -> Package restore location
-
-The runtime is located by searching the following paths in order, where `APP_BASE` refers to the directory containing the managed application assembly and `LIBCORECLR` refers to the platform-specific name for the CoreCLR library (`libcoreclr.so` on Unix, `libcoreclr.dylib` on Mac OS X, `coreclr.dll` on Windows). The first path that matches is used as the path to load the CoreCLR from.
-
-* `$DOTNET_RUNTIME_SERVICING/runtime/coreclr/LIBCORECLR`
-* `$DOTNET_PACKAGES_CACHE///runtimes//native/LICORECLR`
-* `APP_BASE/LIBCORECLR`
-* `$DOTNET_PACKAGES///runtimes//native/LIBCORECLR`
-* On Unix:
- * `/usr/local/share/dotnet/runtime/coreclr/LIBCORECLR` [1]
- * `/usr/share/dotnet/runtime/coreclr/LIBCORECLR`
-* On Windows:
- * `%LocalAppData%\dotnet\runtime\coreclr\LIBCORECLR`
- * `%ProgramFiles%\dotnet\runtime\coreclr\LIBCORECLR` [2]
-
-Notes:
-
-1. The Unix paths should be this way but are reversed in the actual code. Generally `/usr/local` is considered to have higher precedence than `/usr`
-2. Not yet implemented.
diff --git a/Documentation/design-docs/multilevel-sharedfx-lookup.md b/Documentation/design-docs/multilevel-sharedfx-lookup.md
deleted file mode 100644
index 105124e82a..0000000000
--- a/Documentation/design-docs/multilevel-sharedfx-lookup.md
+++ /dev/null
@@ -1,177 +0,0 @@
-# Multi-level SharedFX Lookup
-
-## Introduction
-
-There are two possible ways of running .NET Core Applications: through dotnet.exe or through a custom executable appname.exe. The first one is used when the user wants to run a portable app or a .NET Core command while the second one is used for standalone applications. Both executables share exactly the same source code.
-
-The executable is in charge of finding and loading the hostfxr.dll file. The hostfxr, in turn, must find and load the hostpolicy.dll file (it’s also responsible for searching for the SDK when running .NET commands). At last the coreclr.dll file must be found and loaded by the hostpolicy. Standalone apps are supposed to keep all its dependencies in the same location as the executable. Portable apps must have the runtime files inside predefined folders.
-
-## Semantic Versioning 1.0.0
-
-.NET Core uses the Semantic Versioning system to manage its version number. It’s important to understand how this system works because since it’s being proposed to search files from different locations, it’s necessary to establish the software behavior based on compatibility limitations.
-
-The version number must take the form X.Y.Z where X is the major version, Y is the minor version, and Z is the patch version. Bug fixes and modifications that do not affect the API itself must increment the patch version. Changes that affect the API but have backwards compatibility must increment the minor version and reset the patch version to zero. Finally changes that are backwards incompatible must increment the major version and reset both patch and minor versions to zero.
-
-It’s also possible to append a dash followed by a string after the version number to specify a pre-release. The string must be composed of only alphanumeric characters plus dash. Precedence is determined by lexicographic ASCII sort order.
-
-Versions that are not pre-releases are called productions.
-
- For instance, a valid Semantic Versioning number sort would be:
- 1.0.0 -> 1.0.1-alpha -> 1.0.1 -> 1.1.0-alpha -> 1.1.0-rc1 -> 1.1.0 -> 1.1.1 -> 2.0.0.
-
- ## Executable
-
-The executable’s only task is to find and load the hostfxr.dll file and pass on its arguments.
-
-Portable applications are supposed to have version folders for hostfxr inside host\fxr directory close to dotnet.exe itself. The most recent version folder is picked by following the Semantic Versioning system described above. The hostfxr.dll file is expected to be inside the chosen folder.
-
-If the file cannot be found, then the user is probably trying to run a standalone application. The running program then searches for the hostfxr.dll file in the executable directory.
-
-It’s important to notice that, at this point, the process still does not make a distinction between portable and standalone apps.
-
-## Hostfxr
-
-### Host mode
-
-The hostfxr’s first task is to determine the running host mode. It’s a muxer if invoked as dotnet.exe, a standalone if invoked as appname.exe, or a splitfx if other conditions apply. Since the following changes will not interfere in the way that standalone and splitfx modes are handled, then it’s safe to assume that we will be dealing with a muxer.
-
-### SDK Search
-
-There are two possibilities for a muxer: it can be a portable app or a .NET Core command.
-
-In the first case the app file path should have been specified as an argument to the dotnet.exe.
-
-In the second case the dotnet.dll from SDK must be invoked as a portable app. At first the running program searches for the global.json file which may have specified a CLI version. It starts from the current working directory and looks for it inside all parent folder hierarchy. After that, it searches for the dotnet.dll file inside the sdk\CLI_version subfolder in the executable directory. If the version defined in the global.json file or the specified version folder cannot be found, then it must choose the most appropriate one. The most appropriate version is defined as the latest version according to the Semantic Versioning system.
-
-### Framework search and rolling forward
-
-The hostfxr then searches for the configuration files appname.runtimeconfig.json and appname.runtimeconfig.dev.json in the same folder as the appname.dll file. The first one contains the specified framework name and version that are necessary to find its folder.
-
-The shared\fxname subfolder in the executable directory is expected to contain some framework version folders. If the required version was passed as an argument to appname.exe, then the framework folder path is already decided.
-
-If the desired version was not passed as an argument, then the one in appname.runtimeconfig.json must be used as a starting point to determine which will be chosen. There are two possible scenarios:
-
-- If the version specified in the configuration file is a production, then the default behavior is to pick the latest available production that differs only in patch.
-- If the version specified in the configuration file is a pre-release, then it will pick the exact specified version. If its version folder does not exist, then it will search for the smallest pre-release that is greater than the specified one.
-
-This process of choosing the most appropriate available version instead of the specified one is called “rolling forward”.
-
-Hostfxr must then locate the hostpolicy.dll file:
-
-- Portable apps are expected to have a file called fxname.deps.json inside the framework folder. This file contains information about the application’s dependencies and during most of the time it will be used by the hostpolicy. After locating the json file, the hostfxr must search inside it for what the specified hostpolicy version is.
-- The pkgs\hostpolicy_version subfolder below the default servicing directory is expected to contain the hostpolicy.dll.
-- If for any reason the file cannot be found, then the running program will search for the hostpolicy.dll file inside the framework folder independently of the version.
-- Finally, if the file still cannot be found, it will try looking inside the probing paths passed as arguments to the process.
-
-The hostpolicy is then loaded into memory and executed.
-
-### Proposed hostfxr changes for 2.1 (and 2.0.x long-term-servicing)
-There can only be one framework in 2.0. That framework is located in the app's runtimeconfig.json:
-```javascript
-{
- "runtimeOptions": {
- "tfm": "netcoreapp2.0",
- "framework": {
- "name": "Microsoft.NETCore.App",
- "version": "2.0.0"
- }
- }
-}
-```
-
-From the framework's `name` and `version` the appropriate framework location is found as explained earlier.
-
-In order for other frameworks (or platforms such as ASP.NET) to get the same benefits of roll-forward and self-containment for serviceability, 2.1 will support multiple frameworks.
-
-For 2.1, a given framework can only depend upon another single framework. An app can still only depend upon a single framework as well. Thus it repesents a "vertical" hierarchy. It is possible to allow additional frameworks in a "horizontal" manner, but that is out of scope for 2.1.
-
-Each framework has its own roll-forward semantics. This means ASP.NET can roll-forward independently of NETCore.App even though ASP.NET depends upon the NETCore.App framework.
-
-NETCore.App in 2.0 has its own deps.json file in its own folder that lists its assemblies. In 2.1, other frameworks will also have their own deps.jon. In addition, each framework has an optional runtimeconfig.json that describes its framework dependency as well as other settings that exist today (applyPatches, preReleaseRollForward, rollForwardOnNoCandidateFx). If the runtimeconfig.json file does not exist, or does not have a value for a setting, it uses the value from the higher-level runtimeconfig.json.
-
-For example, an MVC app's runtimeconfig.json would contain (actual framework names TBD):
-```javascript
-"framework": {
- "name": "Microsoft.AspNetCore.All",
- "version": "2.1.0"
- }
-```
-and Microsoft.AspNetCore.All's runtimeconfig.json would contain:
-```javascript
-"framework": {
- "name": "Microsoft.NETCore.App",
- "version": "2.1.0"
- }
-```
-and Microsoft.NETCore.App would not have a runtimeconfig.json because it doesn't have any framework dependency or need to change other settings.
-
-## Hostpolicy
-
-Hostpolicy is in charge of looking for all dependencies files required for the application. That includes the coreclr.dll file which is necessary to run it.
-
-It will look for the json files that specify the needed assemblies’ filenames:
-
-- If the appname.deps.json file path has not been specified as an argument, then it is expected to be inside the application directory.
-- Portable apps are supposed to have an fxname.deps.json file inside the framework folder.
-
-Both files carry the filenames for dependencies that must be found. They can be categorized as runtime, native or resources assemblies. The coreclr.dll file is expected to be found during the native assemblies search.
-
-At last, the coreclr is loaded into memory and called to run the application.
-
-### Proposed hostpolicy changes for 2.1 (and 2.0.x long-term-servicing)
-For 2.0, there are several probing paths that are used to find the dependencies. These paths follow a certain order and the first assembly found wins and that location will be passed to the coreclr. For example, the local app location has priority over the shared framework locations and if the same assembly exists in both locations, the coreclr will end up using the local app's copy of that assembly.
-
-These semantics will be unchanged for 2.1 except when a roll-forward is performed at a non-patch version (meaning a change to the major or minor version). For these cases, the highest assembly version wins. This is necessary in run-time scenarios to prevent assembly load exceptions which occur when an assembly is referencing a higher version of another assembly, but a lower version is actually found.
-
-There will be some checks added to hostpolicy to catch these conflicts during development scenarios, but since this conflict scenario should only occur during roll-forward, and on a version of the framework likely not even released yet during development, these checks will focus on correctness of the currently targeted framework. This ennsures that any duplicate versions higher up the framework stack have a newer assembly version than the copies of that assembly in the lower level frameworks.
-
-This situation of having assembly conflicts (or duplicates) is more likely to occur when there are multiple frameworks (as convered in hostfxr's proposed changes for 2.1), so it is important to address in the 2.1 timeframe.
-
-## Global locations
-
-In addition to searching the executable directory, the global .NET location is also searched. The global folders may vary depending on the running operational system. They are defined as follows:
-
-Global .NET location:
-
- Windows 32-bit: %SystemDrive%\Program Files\dotnet
- Windows 64-bit (32-bit application): %SystemDrive%\Program Files (x86)\dotnet
- Windows 64-bit (64-bit application): %SystemDrive%\Program Files\dotnet
- Unix: none
-
-### Framework search
-
-If the specified version is defined through the configuration json file, the search must be conducted as follows:
-
-- For productions:
-
- 1. In relation to the executable directory: search for the most appropriate version by rolling forward. If it cannot be found, proceed to the next step.
- 2. In relation to the global location: search for the most appropriate version by rolling forward. If it cannot be found, then we were not able to locate any compatible version.
-
-- For pre-releases:
-
- 1. In relation to the executable directory: search for the specified version. If it cannot be found, search for the most appropriate version by rolling forward. If no compatible version can be found, proceed to the next step.
- 2. In relation to the global location: search for the specified version. If it cannot be found, search for the most appropriate version by rolling forward. If no compatible version can be found, then we were not able to locate any compatible version.
-
-In the case that the desired version is defined through an argument, the multi-level lookup will happen as well but it will only consider the exact specified version (it will not roll forward).
-
-#### Tests
-
-To make sure that the changes are working correctly, the following behavior conditions will be verified through tests:
-
-- Folders must be verified in the correct order.
-- If production, then a roll forward must happen in a given folder before proceeding to the next one.
-- If pre-release, then a roll forward must happen in a given folder only if the specified version is not found. If there is no compatible version available, then it must proceed to the next location.
-- If the version is specified through an argument, then roll forwards are not allowed to happen.
-- If no compatible version folder is found, then an error message must be returned and the process must end.
-
-
-### SDK search
-
-Like the Framework search, the SDK is searched for a compatible version. Instead of looking for it only in relation to the executable directory, it is also searched in the folders specified above by following the same priority rank.
-
-The search is conducted as follows:
-
-1. In relation to the executable directory: search for the specified version. If it cannot be found, choose the most appropriate available version. If there’s no available version, proceed to the next step.
-2. In relation to the global location: search for the specified version. If it cannot be found, choose the most appropriate available version. If there’s no available version, then we were not able to find any version folder and an error message is returned.
-
-Unlike the Framework search, the SDK search does a roll-forward for pre-release versions when the patch version changes. For example, if you install v2.0.1-pre, it will be used over v2.0.0.
diff --git a/Documentation/design-docs/roll-forward-on-no-candidate-fx.md b/Documentation/design-docs/roll-forward-on-no-candidate-fx.md
deleted file mode 100644
index 79b1212dea..0000000000
--- a/Documentation/design-docs/roll-forward-on-no-candidate-fx.md
+++ /dev/null
@@ -1,131 +0,0 @@
-# Roll Forward On No Candidate Fx
-
-## Default Behavior
-
-The desired framework version is defined through a configuration json file (appname.runtimeconfig.json).
-
-If the version specified is a _production_ version, the default behavior is:
-1) Pick the nearest _production_ version based on [minor].[patch]
-2) If none available, pick the nearest _preview_ version based on [minor].[patch]
-3) Once the nearest compatible version is found, roll-forward to the latest version based on [patch]-[name]-[build]
-
-```
- For instance:
-
- Desired version: 1.0.1
- Available versions: 1.0.0, 1.0.1, 1.0.2, 1.0.3, 1.1.0, 1.1.1, 2.0.1
- Chosen version: 1.0.3
-
- Desired version: 1.0.1
- Available versions: 1.0.0, 1.1.0-preview1-x, 1.1.0-preview2-x, 1.2.0-preview1-x
- Chosen version: 1.1.0-preview2-x
-
- Desired version: 1.0.1
- Available versions: 1.0.0, 1.1.0-preview1-x, 1.2.0, 1.2.1-preview1-x
- Chosen version: 1.2.0
-
- Desired version: 1.0.1
- Available versions: 1.0.0, 2.0.0
- Chosen version: there is no compatible version available
-```
-
-If the version specified is a _preview_ version, the default behavior is:
-1) Pick the exact _preview_ version based on [major].[minor].[patch]-[name]-[build]
-2) If none available, pick the nearest _preview_ version based on [name]-[build]
-
-This means _preview_ is never rolled forward to _production_.
-
- For instance:
-
- Desired version: 1.0.1-preview2-x
- Available versions: 1.0.1-preview2-x, 1.0.1-preview3-x
- Chosen version: 1.0.1-preview2-x
-
- Desired version: 1.0.1-preview2-x
- Available versions: 1.0.1-preview3-x
- Chosen version: 1.0.1-preview3-x
-
- Desired version: 1.0.1-preview2-x
- Available versions: 1.0.1, 1.0.2-preview3-x
- Chosen version: there is no compatible version available
-
-## Settings to control behavior
-### applyPatches
-To disable the patch roll forward, specify the "applyPatches" property in the configuration file. If it is set to 'false' and the specified version is not found, then we fail.
-
- For instance:
-
- Patch roll forward: disabled
- Desired version: 1.0.1
- Available versions: 1.0.2, 1.0.3
- Chosen version: there is no compatible version available
-
-### --fx-version
-To specify the exact desired framework version, use the command line argument '--fx-version'. In this case, only the specified version will be accepted, even if patch roll forward is enabled. The expected behavior would be the same in the example above.
-
-### Roll Forward in Absence of Candidate Fx
-
-"Roll Forward On No Candidate Fx" only applies to _production_ versions and is enabled by default for [minor], and be changed through:
-- Command line argument ('--roll-forward-on-no-candidate-fx' argument)
-- Runtime configuration file ('rollForwardOnNoCandidateFx' property)
-- DOTNET_ROLL_FORWARD_ON_NO_CANDIDATE_FX environment variable
-
-The valid values:
-
-0) Off (_do not roll forward on [major] or [minor]_)
-1) Roll forward on [minor] (_this is the default value_)
-2) Roll forward on [major] and [minor]
-
-If this feature is enabled and no compatible framework version is found, we'll search for the nearest production version available. After locating it, a patch roll forward will be applied if enabled.
-```
- For instance:
-
- Patch roll forward: enabled
- Roll Forward On No Candidate Fx: 1 (minor)
- Desired Version: 1.0.0
- Available versions: 1.1.1, 1.1.3, 1.2.0, 2.0.0
- Chosen version: 1.1.3
-
- Patch roll forward: disabled
- Roll Forward On No Candidate Fx: 1 (minor)
- Desired Version: 1.0.0
- Available versions: 1.1.1, 1.1.3, 1.2.0
- Chosen version: 1.1.1
-
- Patch roll forward: enabled
- Roll Forward On No Candidate Fx: 0 (disabled)
- Desired Version: 1.0.0
- Available versions: 1.1.1
- Chosen version: there is no compatible version available
-```
-
-It's important to notice that, even if "Roll Forward On No Candidate Fx" is enabled, only the specified framework version will be accepted if the '--fx-version' argument is used.
-
-Since there are three ways to specify the values, conflicts will be resolved by the order listed above (command line has priority over config, which has priority over the environment variable).
-```
- For instance:
-
- 'rollForwardOnNoCandidateFx' property is set to '1'
- DOTNET_ROLL_FORWARD_ON_NO_CANDIDATE_FX env var is set to '0'
- The feature is ENABLED.
-
- '--roll-forward-on-no-candidate-fx' argument is set to '0'
- 'rollForwardOnNoCandidateFx' property is set to '1'
- DOTNET_ROLL_FORWARD_ON_NO_CANDIDATE_FX env var is set to '1'
- The feature is DISABLED.
-```
-
-A final detail applies to when there is more than one framwork: the selected value determines the behavior only when loading the framework (fx1) specified in the application's config. If that framework (fx1) has its own config and specifies another lower-level framework (fx2), then (fx2) will inherit the same setting used to load (fx1). However, if the config for (fx1) specifies 'rollForwardOnNoCandidateFx' then that value will be used instead when loading (fx2).
-
-## Multilevel SharedFx Lookup
-
-Finally, it's important to notice that, even with the feature enabled, the Multilevel SharedFx Lookup behavior is the same: if we are not able to find any compatible version in a folder, we search in the next one.
-```
- For instance:
-
- Roll Forward On No Candidate Fx: 1 (minor)
- Desired version: 1.0.1
- Available versions in the current working dir: 1.1.0,
- Available versions in the shared location dir: 1.0.0
- Chosen version: 1.1.0
-```
diff --git a/Documentation/dummy.txt b/Documentation/dummy.txt
deleted file mode 100644
index 0f64901f9c..0000000000
--- a/Documentation/dummy.txt
+++ /dev/null
@@ -1 +0,0 @@
-06/27/2017 06:00:00 PM
diff --git a/Documentation/manpages/host/dotnet.1 b/Documentation/manpages/host/dotnet.1
deleted file mode 100644
index cb0f71b318..0000000000
--- a/Documentation/manpages/host/dotnet.1
+++ /dev/null
@@ -1,152 +0,0 @@
-.\" Automatically generated by Pandoc 1.15.1
-.\"
-.hy
-.TH "dotnet-cli" "1" "January 2016" "" ""
-.SH NAME
-.PP
-dotnet \-\- general driver for running the command\-line commands
-.SH SYNOPSIS
-.PP
-dotnet [\-\-version] [\-\-help] [\-\-verbose] < command > [< args >]
-.SH DESCRIPTION
-.PP
-dotnet is a generic driver for the CLI toolchain.
-Invoked on its own, it will give out brief usage instructions.
-.PP
-Each specific feature is implemented as a command.
-In order to use the feature, it is specified after dotnet, i.e.
-\f[C]dotnet\ compile\f[].
-All of the arguments following the command are command\[aq]s own
-arguments.
-.SH OPTIONS
-.PP
-\f[C]\-v,\ \-\-verbose\f[]
-.IP
-.nf
-\f[C]
-Enable\ verbose\ output.
-\f[]
-.fi
-.PP
-\f[C]\-\-version\f[]
-.IP
-.nf
-\f[C]
-Print\ out\ the\ version\ of\ the\ CLI\ tooling
-\f[]
-.fi
-.PP
-\f[C]\-h,\ \-\-help\f[]
-.IP
-.nf
-\f[C]
-Print\ out\ a\ short\ help\ and\ a\ list\ of\ current\ commands.\
-\f[]
-.fi
-.SH DOTNET COMMANDS
-.PP
-The following commands exist for dotnet.
-.PP
-\f[C]dotnet\-compile(1)\f[]
-.IP
-.nf
-\f[C]
-Compile\ the\ application\ to\ either\ an\ intermidiate\ language\ (IL)\ or\ to\ a\ native\ binary.\
-\f[]
-.fi
-.PP
-\f[C]dotnet\-restore(1)\f[]
-.IP
-.nf
-\f[C]
-Restores\ the\ dependencies\ for\ a\ given\ application.\
-\f[]
-.fi
-.PP
-\f[C]dotnet\-run(1)\f[]
-.IP
-.nf
-\f[C]
-Runs\ the\ application\ from\ source.
-\f[]
-.fi
-.PP
-\f[C]dotnet\-publish(1)\f[]
-.IP
-.nf
-\f[C]
-Publishes\ a\ flat\ directory\ that\ contains\ the\ application\ and\ its\ dependencies,\ including\ the\ runtime\ binaries.\
-\f[]
-.fi
-.PP
-\f[C]dotnet\-test(1)\f[]
-.IP
-.nf
-\f[C]
-Runs\ tests\ using\ a\ test\ runner\ specified\ in\ project.json.
-\f[]
-.fi
-.PP
-\f[C]dotnet\-new(1)\f[]
-.IP
-.nf
-\f[C]
-Initializes\ a\ sample\ .NET\ Core\ console\ application.\
-\f[]
-.fi
-.SH EXAMPLES
-.PP
-\f[C]dotnew\ new\f[]
-.IP
-.nf
-\f[C]
-Initializes\ a\ sample\ .NET\ Core\ console\ application\ that\ can\ be\ compiled\ and\ ran.
-\f[]
-.fi
-.PP
-\f[C]dotnet\ restore\f[]
-.IP
-.nf
-\f[C]
-Restores\ dependencies\ for\ a\ given\ application.\
-\f[]
-.fi
-.PP
-\f[C]dotnet\ compile\f[]
-.IP
-.nf
-\f[C]
-Compiles\ the\ application\ in\ a\ given\ directory.\
-\f[]
-.fi
-.SH ENVIRONMENT
-.PP
-\f[C]DOTNET_PACKAGES\f[]
-.IP
-.nf
-\f[C]
-The\ primary\ package\ cache.\ If\ not\ set,\ defaults\ to\ $HOME/.nuget/packages\ on\ Unix\ or\ %LOCALAPPDATA%\\NuGet\\Packages\ (TBD)\ on\ Windows.
-\f[]
-.fi
-.PP
-\f[C]DOTNET_PACKAGES_CACHE\f[]
-.IP
-.nf
-\f[C]
-The\ secondary\ cache.\ This\ is\ used\ by\ shared\ hosters\ (such\ as\ Azure)\ to\ provide\ a\ cache\ of\ pre\-downloaded\ common\ packages\ on\ a\ faster\ disk.\ If\ not\ set\ it\ is\ not\ used.
-\f[]
-.fi
-.PP
-\f[C]DOTNET_SERVICING\f[]
-.IP
-.nf
-\f[C]
-Specifies\ the\ location\ of\ the\ servicing\ index\ to\ use\ by\ the\ shared\ host\ when\ loading\ the\ runtime.\
-\f[]
-.fi
-.SH SEE ALSO
-.PP
-dotnet\-compile(1), dotnet\-run(1), dotnet\-publish(1),
-dotnet\-restore(1)
-.SH AUTHORS
-Zlatko Knezevic zlakne\@microsoft.com.
diff --git a/Documentation/project-docs/issue-guide.md b/Documentation/project-docs/issue-guide.md
deleted file mode 100644
index 05ab48722e..0000000000
--- a/Documentation/project-docs/issue-guide.md
+++ /dev/null
@@ -1,16 +0,0 @@
-Issue Guide
-===========
-
-Core-setup uses the [CoreFx policies](https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/issue-guide.md), so use that for general information on how to create an issue, etc.
-
-### Areas
-Areas are tracked by labels area-* (e.g. area-Host).
-
-| Area | Owners / experts | Description |
-|-----------------------------------------------------------------------------------------------|------------------|-------------|
-| [area-DependencyModel](https://github.com/dotnet/core-setup/labels/area-DependencyModel) | [@eerhardt](https://github.com/eerhardt) | Microsoft.Extensions.DependencyModel |
-| [area-Host](https://github.com/dotnet/core-setup/labels/area-Host) | [@steveharter](https://github.com/steveharter) | Issues with dotnet.exe including bootstrapping, framework detection, hostfxr.dll and hostpolicy.dll |
-| [area-Infrastructure](https://github.com/dotnet/core-setup/labels/area-Infrastructure) | [@weshaggard](https://github.com/weshaggard) | Build and Publish |
-| [area-SDK](https://github.com/dotnet/core-setup/labels/area-SDK) | **[@livarcocc](https://github.com/livarcocc)**, [@nguerrera](https://github.com/nguerrera), [@leecow](https://githube.com/leecow) | General development issues and overlap with the SDK and CLI |
-| [area-Setup](https://github.com/dotnet/core-setup/labels/area-Setup) | [@rakeshsinghranchi](https://github.com/rakeshsinghranchi) | Distro-specific (Linux, Mac and Windows) setup packages and msi files |
-| [area-UWP](https://github.com/dotnet/core-setup/labels/area-UWP) | [@nattress](https://github.com/nattress) | UWP-specific issues including Microsoft.NETCore.UniversalWindowsPlatform and Microsoft.Net.UWPCoreRuntimeSdk |
diff --git a/DotnetCLIVersion.txt b/DotnetCLIVersion.txt
deleted file mode 100644
index 714f242fe0..0000000000
--- a/DotnetCLIVersion.txt
+++ /dev/null
@@ -1 +0,0 @@
-2.1.300
\ No newline at end of file
diff --git a/LICENSE.TXT b/LICENSE.TXT
deleted file mode 100644
index cd10d6977b..0000000000
--- a/LICENSE.TXT
+++ /dev/null
@@ -1,22 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015 .NET Foundation
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
diff --git a/Microsoft.DotNet.CoreSetup.sln b/Microsoft.DotNet.CoreSetup.sln
deleted file mode 100644
index 97d428ab39..0000000000
--- a/Microsoft.DotNet.CoreSetup.sln
+++ /dev/null
@@ -1,132 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.27527.1
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{5A29E8E3-A0FC-4C57-81DD-297B56D1A119}"
- ProjectSection(SolutionItems) = preProject
- global.json = global.json
- NuGet.Config = NuGet.Config
- EndProjectSection
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{5CE8410C-3100-4F41-8FA9-E6B4132D9703}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{FAA448DA-7D1C-4481-915D-5765BF906332}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.DotNet.PlatformAbstractions", "src\managed\Microsoft.DotNet.PlatformAbstractions\Microsoft.DotNet.PlatformAbstractions.csproj", "{04D84DC8-A509-43FE-B846-16B770D9E3AA}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.DependencyModel", "src\managed\Microsoft.Extensions.DependencyModel\Microsoft.Extensions.DependencyModel.csproj", "{566D86A6-D940-4270-867E-C9EA0EA01F6E}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HostActivationTests", "src\test\HostActivationTests\HostActivationTests.csproj", "{23F4AB97-D15C-4C51-A641-DF5C5D5EF70F}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.DependencyModel.Tests", "src\test\Microsoft.Extensions.DependencyModel.Tests\Microsoft.Extensions.DependencyModel.Tests.csproj", "{D86A859D-E6FA-4E73-A255-5776FC473A25}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestUtils", "src\test\TestUtils\TestUtils.csproj", "{D6676666-D14D-4DFA-88FB-76E3E823E2E1}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Debug|x64 = Debug|x64
- MinSizeRel|Any CPU = MinSizeRel|Any CPU
- MinSizeRel|x64 = MinSizeRel|x64
- Release|Any CPU = Release|Any CPU
- Release|x64 = Release|x64
- RelWithDebInfo|Any CPU = RelWithDebInfo|Any CPU
- RelWithDebInfo|x64 = RelWithDebInfo|x64
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {04D84DC8-A509-43FE-B846-16B770D9E3AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {04D84DC8-A509-43FE-B846-16B770D9E3AA}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {04D84DC8-A509-43FE-B846-16B770D9E3AA}.Debug|x64.ActiveCfg = Debug|Any CPU
- {04D84DC8-A509-43FE-B846-16B770D9E3AA}.Debug|x64.Build.0 = Debug|Any CPU
- {04D84DC8-A509-43FE-B846-16B770D9E3AA}.MinSizeRel|Any CPU.ActiveCfg = Release|Any CPU
- {04D84DC8-A509-43FE-B846-16B770D9E3AA}.MinSizeRel|Any CPU.Build.0 = Release|Any CPU
- {04D84DC8-A509-43FE-B846-16B770D9E3AA}.MinSizeRel|x64.ActiveCfg = Release|Any CPU
- {04D84DC8-A509-43FE-B846-16B770D9E3AA}.MinSizeRel|x64.Build.0 = Release|Any CPU
- {04D84DC8-A509-43FE-B846-16B770D9E3AA}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {04D84DC8-A509-43FE-B846-16B770D9E3AA}.Release|Any CPU.Build.0 = Release|Any CPU
- {04D84DC8-A509-43FE-B846-16B770D9E3AA}.Release|x64.ActiveCfg = Release|Any CPU
- {04D84DC8-A509-43FE-B846-16B770D9E3AA}.Release|x64.Build.0 = Release|Any CPU
- {04D84DC8-A509-43FE-B846-16B770D9E3AA}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {04D84DC8-A509-43FE-B846-16B770D9E3AA}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {04D84DC8-A509-43FE-B846-16B770D9E3AA}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {04D84DC8-A509-43FE-B846-16B770D9E3AA}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {566D86A6-D940-4270-867E-C9EA0EA01F6E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {566D86A6-D940-4270-867E-C9EA0EA01F6E}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {566D86A6-D940-4270-867E-C9EA0EA01F6E}.Debug|x64.ActiveCfg = Debug|Any CPU
- {566D86A6-D940-4270-867E-C9EA0EA01F6E}.Debug|x64.Build.0 = Debug|Any CPU
- {566D86A6-D940-4270-867E-C9EA0EA01F6E}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU
- {566D86A6-D940-4270-867E-C9EA0EA01F6E}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU
- {566D86A6-D940-4270-867E-C9EA0EA01F6E}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU
- {566D86A6-D940-4270-867E-C9EA0EA01F6E}.MinSizeRel|x64.Build.0 = Debug|Any CPU
- {566D86A6-D940-4270-867E-C9EA0EA01F6E}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {566D86A6-D940-4270-867E-C9EA0EA01F6E}.Release|Any CPU.Build.0 = Release|Any CPU
- {566D86A6-D940-4270-867E-C9EA0EA01F6E}.Release|x64.ActiveCfg = Release|Any CPU
- {566D86A6-D940-4270-867E-C9EA0EA01F6E}.Release|x64.Build.0 = Release|Any CPU
- {566D86A6-D940-4270-867E-C9EA0EA01F6E}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {566D86A6-D940-4270-867E-C9EA0EA01F6E}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {566D86A6-D940-4270-867E-C9EA0EA01F6E}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {566D86A6-D940-4270-867E-C9EA0EA01F6E}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {23F4AB97-D15C-4C51-A641-DF5C5D5EF70F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {23F4AB97-D15C-4C51-A641-DF5C5D5EF70F}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {23F4AB97-D15C-4C51-A641-DF5C5D5EF70F}.Debug|x64.ActiveCfg = Debug|Any CPU
- {23F4AB97-D15C-4C51-A641-DF5C5D5EF70F}.Debug|x64.Build.0 = Debug|Any CPU
- {23F4AB97-D15C-4C51-A641-DF5C5D5EF70F}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU
- {23F4AB97-D15C-4C51-A641-DF5C5D5EF70F}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU
- {23F4AB97-D15C-4C51-A641-DF5C5D5EF70F}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU
- {23F4AB97-D15C-4C51-A641-DF5C5D5EF70F}.MinSizeRel|x64.Build.0 = Debug|Any CPU
- {23F4AB97-D15C-4C51-A641-DF5C5D5EF70F}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {23F4AB97-D15C-4C51-A641-DF5C5D5EF70F}.Release|Any CPU.Build.0 = Release|Any CPU
- {23F4AB97-D15C-4C51-A641-DF5C5D5EF70F}.Release|x64.ActiveCfg = Release|Any CPU
- {23F4AB97-D15C-4C51-A641-DF5C5D5EF70F}.Release|x64.Build.0 = Release|Any CPU
- {23F4AB97-D15C-4C51-A641-DF5C5D5EF70F}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {23F4AB97-D15C-4C51-A641-DF5C5D5EF70F}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {23F4AB97-D15C-4C51-A641-DF5C5D5EF70F}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {23F4AB97-D15C-4C51-A641-DF5C5D5EF70F}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {D86A859D-E6FA-4E73-A255-5776FC473A25}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {D86A859D-E6FA-4E73-A255-5776FC473A25}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {D86A859D-E6FA-4E73-A255-5776FC473A25}.Debug|x64.ActiveCfg = Debug|Any CPU
- {D86A859D-E6FA-4E73-A255-5776FC473A25}.Debug|x64.Build.0 = Debug|Any CPU
- {D86A859D-E6FA-4E73-A255-5776FC473A25}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU
- {D86A859D-E6FA-4E73-A255-5776FC473A25}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU
- {D86A859D-E6FA-4E73-A255-5776FC473A25}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU
- {D86A859D-E6FA-4E73-A255-5776FC473A25}.MinSizeRel|x64.Build.0 = Debug|Any CPU
- {D86A859D-E6FA-4E73-A255-5776FC473A25}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {D86A859D-E6FA-4E73-A255-5776FC473A25}.Release|Any CPU.Build.0 = Release|Any CPU
- {D86A859D-E6FA-4E73-A255-5776FC473A25}.Release|x64.ActiveCfg = Release|Any CPU
- {D86A859D-E6FA-4E73-A255-5776FC473A25}.Release|x64.Build.0 = Release|Any CPU
- {D86A859D-E6FA-4E73-A255-5776FC473A25}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {D86A859D-E6FA-4E73-A255-5776FC473A25}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {D86A859D-E6FA-4E73-A255-5776FC473A25}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {D86A859D-E6FA-4E73-A255-5776FC473A25}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {D6676666-D14D-4DFA-88FB-76E3E823E2E1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {D6676666-D14D-4DFA-88FB-76E3E823E2E1}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {D6676666-D14D-4DFA-88FB-76E3E823E2E1}.Debug|x64.ActiveCfg = Debug|Any CPU
- {D6676666-D14D-4DFA-88FB-76E3E823E2E1}.Debug|x64.Build.0 = Debug|Any CPU
- {D6676666-D14D-4DFA-88FB-76E3E823E2E1}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU
- {D6676666-D14D-4DFA-88FB-76E3E823E2E1}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU
- {D6676666-D14D-4DFA-88FB-76E3E823E2E1}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU
- {D6676666-D14D-4DFA-88FB-76E3E823E2E1}.MinSizeRel|x64.Build.0 = Debug|Any CPU
- {D6676666-D14D-4DFA-88FB-76E3E823E2E1}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {D6676666-D14D-4DFA-88FB-76E3E823E2E1}.Release|Any CPU.Build.0 = Release|Any CPU
- {D6676666-D14D-4DFA-88FB-76E3E823E2E1}.Release|x64.ActiveCfg = Release|Any CPU
- {D6676666-D14D-4DFA-88FB-76E3E823E2E1}.Release|x64.Build.0 = Release|Any CPU
- {D6676666-D14D-4DFA-88FB-76E3E823E2E1}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {D6676666-D14D-4DFA-88FB-76E3E823E2E1}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {D6676666-D14D-4DFA-88FB-76E3E823E2E1}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {D6676666-D14D-4DFA-88FB-76E3E823E2E1}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(NestedProjects) = preSolution
- {04D84DC8-A509-43FE-B846-16B770D9E3AA} = {FAA448DA-7D1C-4481-915D-5765BF906332}
- {566D86A6-D940-4270-867E-C9EA0EA01F6E} = {FAA448DA-7D1C-4481-915D-5765BF906332}
- {23F4AB97-D15C-4C51-A641-DF5C5D5EF70F} = {5CE8410C-3100-4F41-8FA9-E6B4132D9703}
- {D86A859D-E6FA-4E73-A255-5776FC473A25} = {5CE8410C-3100-4F41-8FA9-E6B4132D9703}
- {D6676666-D14D-4DFA-88FB-76E3E823E2E1} = {5CE8410C-3100-4F41-8FA9-E6B4132D9703}
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {28B9726D-802B-478D-AF7A-B9243B9E180B}
- EndGlobalSection
-EndGlobal
diff --git a/NuGet.config b/NuGet.config
deleted file mode 100644
index 19fd55252b..0000000000
--- a/NuGet.config
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/README.md b/README.md
index edbd54e58d..0feefd193c 100644
--- a/README.md
+++ b/README.md
@@ -1,465 +1,6 @@
-.NET Core Runtime & Host Setup Repo
-===================================
-
-This repo contains the code to build the .NET Core runtime, libraries and shared host (`dotnet`) installers for
-all supported platforms. It **does not** contain the actual sources to .NET Core runtime; this source is split across
-the dotnet/coreclr repo (runtime) and dotnet/corefx repo (libraries).
-
-## Installation experience
-The all-up installation experience is described in the [installation scenarios](https://github.com/dotnet/cli/blob/rel/1.0.0/Documentation/cli-installation-scenarios.md)
-document in the dotnet/cli repo. That is the first step to get acquainted with the overall plan and experience we have
-thought up for installing .NET Core bits.
-
-## Filing issues
-This repo should contain issues that are tied to the installation of the "muxer" (the `dotnet` binary) and installation
-of the .NET Core runtime and libraries.
-
-For other issues, please use the following repos:
-
-- For overall .NET Core SDK issues, file on [dotnet/cli](https://github.com/dotnet/cli) repo
-- For class library and framework functioning issues, file on [dotnet/corefx](https://github.com/dotnet/corefx) repo
-- For runtime issues, file on [dotnet/coreclr](https://github.com/dotnet/coreclr) issues
-
-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).
-
-Officially Released Builds
---------------------------
-
-They can be downloaded from [here](https://www.microsoft.com/net/download#core).
-
-Daily Builds
-------------
-
-| Platform | Master
[![][build-badge-master]][build-master] | Release/2.0.X
[![][build-badge-2.0.X]][build-2.0.X] | Release/1.1.X
[![][build-badge-1.X.X]][build-1.X.X] | Release/1.0.X
[![][build-badge-1.0.X]][build-1.0.X] |
-|---------|:----------:|:----------:|:----------:|:----------:|
-| **Windows (x64)** | [![][win-x64-badge-master]][win-x64-version-master]
[Installer][win-x64-installer-master] ([Checksum][win-x64-installer-checksum-master])
[zip][win-x64-zip-master] ([Checksum][win-x64-zip-checksum-master])
[Symbols (zip)][win-x64-symbols-zip-master] | [![][win-x64-badge-2.0.X]][win-x64-version-2.0.X]
[Installer][win-x64-installer-2.0.X] ([Checksum][win-x64-installer-checksum-2.0.X])
[zip][win-x64-zip-2.0.X] ([Checksum][win-x64-zip-checksum-2.0.X])
[Symbols (zip)][win-x64-symbols-zip-2.0.X] | [![][win-x64-badge-1.1.X]][win-x64-version-1.1.X]
[Installer][win-x64-installer-1.1.X]
[zip][win-x64-zip-1.1.X] | [![][win-x64-badge-preview]][win-x64-version-preview]
[Installer][win-x64-installer-preview]
[zip][win-x64-zip-preview] |
-| **Windows (x86)** | [![][win-x86-badge-master]][win-x86-version-master]
[Installer][win-x86-installer-master] ([Checksum][win-x86-installer-checksum-master])
[zip][win-x86-zip-master] ([Checksum][win-x86-zip-checksum-master])
[Symbols (zip)][win-x86-symbols-zip-master] | [![][win-x86-badge-2.0.X]][win-x86-version-2.0.X]
[Installer][win-x86-installer-2.0.X] ([Checksum][win-x86-installer-checksum-2.0.X])
[zip][win-x86-zip-2.0.X] ([Checksum][win-x86-zip-checksum-2.0.X])
[Symbols (zip)][win-x86-symbols-zip-2.0.X] |[![][win-x86-badge-1.1.X]][win-x86-version-1.1.X]
[Installer][win-x86-installer-1.1.X]
[zip][win-x86-zip-1.1.X] | [![][win-x86-badge-preview]][win-x86-version-preview]
[Installer][win-x86-installer-preview]
[zip][win-x86-zip-preview] |
-| **Windows (arm32)** | [![][win-arm-badge-master]][win-arm-version-master]
[zip][win-arm-zip-master] ([Checksum][win-arm-zip-checksum-master])
[Symbols (zip)][win-arm-symbols-zip-master] | [![][win-arm-badge-2.0.X]][win-arm-version-2.0.X]
[zip][win-arm-zip-2.0.X] ([Checksum][win-arm-zip-checksum-2.0.X])
[Symbols (zip)][win-arm-symbols-zip-2.0.X] | N/A | N/A |
-| **Windows (arm64)** | [![][win-arm64-badge-master]][win-arm64-version-master]
[zip][win-arm64-zip-master] ([Checksum][win-arm64-zip-checksum-master])
[Symbols (zip)][win-arm64-symbols-zip-master] | [![][win-arm64-badge-2.0.X]][win-arm64-version-2.0.X]
[zip][win-arm64-zip-2.0.X] ([Checksum][win-arm64-zip-checksum-2.0.X])
[Symbols (zip)][win-arm64-symbols-zip-2.0.X] | N/A | N/A |
-| **Mac OS X (x64)** | [![][osx-badge-master]][osx-version-master]
[Installer][osx-installer-master] ([Checksum][osx-installer-checksum-master])
[tar.gz][osx-targz-master] ([Checksum][osx-targz-checksum-master])
[Symbols (tar.gz)][osx-symbols-targz-master] | [![][osx-badge-2.0.X]][osx-version-2.0.X]
[Installer][osx-installer-2.0.X] ([Checksum][osx-installer-checksum-2.0.X])
[tar.gz][osx-targz-2.0.X] ([Checksum][osx-targz-checksum-2.0.X])
[Symbols (tar.gz)][osx-symbols-targz-2.0.X] | [![][osx-badge-1.1.X]][osx-version-1.1.X]
[Installer][osx-installer-1.1.X]
[tar.gz][osx-targz-1.1.X] | [![][osx-badge-preview]][osx-version-preview]
[Installer][osx-installer-preview]
[tar.gz][osx-targz-preview] |
-| **Linux (x64)** (for glibc based OS) | [![][linux-x64-badge-master]][linux-x64-version-master]
[tar.gz][linux-x64-targz-master] ([Checksum][linux-x64-targz-checksum-master])
[Symbols (tar.gz)][linux-x64-symbols-targz-master] | [![][linux-x64-badge-2.0.X]][linux-x64-version-2.0.X]
[tar.gz][linux-x64-targz-2.0.X] ([Checksum][linux-x64-targz-checksum-2.0.X])
[Symbols (tar.gz)][linux-x64-symbols-targz-2.0.X] | N/A | N/A |
-| **Linux (armhf)** (for glibc based OS) | [![][linux-arm-badge-master]][linux-arm-version-master]
[tar.gz][linux-arm-targz-master] ([Checksum][linux-arm-targz-checksum-master])
[Symbols (tar.gz)][linux-arm-symbols-targz-master] | [![][linux-arm-badge-2.0.X]][linux-arm-version-2.0.X]
[tar.gz][linux-arm-targz-2.0.X] ([Checksum][linux-arm-targz-checksum-2.0.X])
[Symbols (tar.gz)][linux-arm-symbols-targz-2.0.X] | N/A | N/A |
-| **Linux (arm64)** (for glibc based OS) | [![][linux-arm64-badge-master]][linux-arm64-version-master]
[tar.gz][linux-arm64-targz-master] ([Checksum][linux-arm64-targz-checksum-master])
[Symbols (tar.gz)][linux-arm64-symbols-targz-master] | N/A | N/A | N/A |
-| **Ubuntu 14.04 (x64)** | [![][ubuntu-14.04-badge-master]][ubuntu-14.04-version-master]
[Runtime-Deps][ubuntu-14.04-runtime-deps-master] ([Checksum][ubuntu-14.04-runtime-deps-checksum-master])
[Host][ubuntu-14.04-host-master] ([Checksum][ubuntu-14.04-host-checksum-master])
[Host FX Resolver][ubuntu-14.04-hostfxr-master] ([Checksum][ubuntu-14.04-hostfxr-checksum-master])
[Shared Framework][ubuntu-14.04-sharedfx-master] ([Checksum][ubuntu-14.04-sharedfx-checksum-master])
| [![][ubuntu-14.04-badge-2.0.X]][ubuntu-14.04-version-2.0.X]
[Host][ubuntu-14.04-host-2.0.X] ([Checksum][ubuntu-14.04-host-checksum-2.0.X])
[Host FX Resolver][ubuntu-14.04-hostfxr-2.0.X] ([Checksum][ubuntu-14.04-hostfxr-checksum-2.0.X])
[Shared Framework][ubuntu-14.04-sharedfx-2.0.X] ([Checksum][ubuntu-14.04-sharedfx-checksum-2.0.X])
| [![][ubuntu-14.04-badge-1.1.X]][ubuntu-14.04-version-1.1.X]
[Host][ubuntu-14.04-host-1.1.X]
[Host FX Resolver][ubuntu-14.04-hostfxr-1.1.X]
[Shared Framework][ubuntu-14.04-sharedfx-1.1.X]
[tar.gz][ubuntu-14.04-targz-1.1.X] | [![][ubuntu-14.04-badge-preview]][ubuntu-14.04-version-preview]
[Host][ubuntu-14.04-host-preview]
[Host FX Resolver][ubuntu-14.04-hostfxr-preview]
[Shared Framework][ubuntu-14.04-sharedfx-preview]
[tar.gz][ubuntu-14.04-targz-preview] |
-| **Ubuntu 16.04 (x64)** | [![][ubuntu-16.04-badge-master]][ubuntu-16.04-version-master]
[Runtime-Deps][ubuntu-16.04-runtime-deps-master] ([Checksum][ubuntu-16.04-runtime-deps-checksum-master])
[Host][ubuntu-16.04-host-master] ([Checksum][ubuntu-16.04-host-checksum-master])
[Host FX Resolver][ubuntu-16.04-hostfxr-master] ([Checksum][ubuntu-16.04-hostfxr-checksum-master])
[Shared Framework][ubuntu-16.04-sharedfx-master] ([Checksum][ubuntu-16.04-sharedfx-checksum-master])
| [![][ubuntu-16.04-badge-2.0.X]][ubuntu-16.04-version-2.0.X]
[Host][ubuntu-16.04-host-2.0.X] ([Checksum][ubuntu-16.04-host-checksum-2.0.X])
[Host FX Resolver][ubuntu-16.04-hostfxr-2.0.X] ([Checksum][ubuntu-16.04-hostfxr-checksum-2.0.X])
[Shared Framework][ubuntu-16.04-sharedfx-2.0.X] ([Checksum][ubuntu-16.04-sharedfx-checksum-2.0.X])
| [![][ubuntu-16.04-badge-1.1.X]][ubuntu-16.04-version-1.1.X]
[Host][ubuntu-16.04-host-1.1.X]
[Host FX Resolver][ubuntu-16.04-hostfxr-1.1.X]
[Shared Framework][ubuntu-16.04-sharedfx-1.1.X]
[tar.gz][ubuntu-16.04-targz-1.1.X] | [![][ubuntu-16.04-badge-preview]][ubuntu-16.04-version-preview]
[Host][ubuntu-16.04-host-preview]
[Host FX Resolver][ubuntu-16.04-hostfxr-preview]
[Shared Framework][ubuntu-16.04-sharedfx-preview]
[tar.gz][ubuntu-16.04-targz-preview] |
-| **Ubuntu 17.10 (x64)** | [![][ubuntu-17.10-badge-master]][ubuntu-17.10-version-master]
[Runtime-Deps][ubuntu-17.10-runtime-deps-master] ([Checksum][ubuntu-17.10-runtime-deps-checksum-master])
[Host][ubuntu-17.10-host-master] ([Checksum][ubuntu-17.10-host-checksum-master])
[Host FX Resolver][ubuntu-17.10-hostfxr-master] ([Checksum][ubuntu-17.10-hostfxr-checksum-master])
[Shared Framework][ubuntu-17.10-sharedfx-master] ([Checksum][ubuntu-17.10-sharedfx-checksum-master])
|N/A | N/A | N/A |
-| **Ubuntu 18.04 (x64)** | [![][ubuntu-18.04-badge-master]][ubuntu-18.04-version-master]
[Runtime-Deps][ubuntu-18.04-runtime-deps-master] ([Checksum][ubuntu-18.04-runtime-deps-checksum-master])
[Host][ubuntu-18.04-host-master] ([Checksum][ubuntu-18.04-host-checksum-master])
[Host FX Resolver][ubuntu-18.04-hostfxr-master] ([Checksum][ubuntu-18.04-hostfxr-checksum-master])
[Shared Framework][ubuntu-18.04-sharedfx-master] ([Checksum][ubuntu-18.04-sharedfx-checksum-master])
||N/A | N/A | N/A |
-| **Debian 8.2 (x64)** | [![][debian-8.2-badge-master]][debian-8.2-version-master]
[Runtime-Deps][debian-8.2-runtime-deps-master] ([Checksum][debian-8.2-runtime-deps-checksum-master])
[Host][debian-8.2-host-master] ([Checksum][debian-8.2-host-checksum-master])
[Host FX Resolver][debian-8.2-hostfxr-master] ([Checksum][debian-8.2-hostfxr-checksum-master])
[Shared Framework][debian-8.2-sharedfx-master] ([Checksum][debian-8.2-sharedfx-checksum-master])
| [![][debian-8.2-badge-2.0.X]][debian-8.2-version-2.0.X]
[Host][debian-8.2-host-2.0.X] ([Checksum][debian-8.2-host-checksum-2.0.X])
[Host FX Resolver][debian-8.2-hostfxr-2.0.X] ([Checksum][debian-8.2-hostfxr-checksum-2.0.X])
[Shared Framework][debian-8.2-sharedfx-2.0.X] ([Checksum][debian-8.2-sharedfx-checksum-2.0.X])
| [![][debian-8.2-badge-1.1.X]][debian-8.2-version-1.1.X]
[Host][debian-8.2-host-1.1.X]
[Host FX Resolver][debian-8.2-hostfxr-1.1.X]
[Shared Framework][debian-8.2-sharedfx-1.1.X]
[tar.gz][debian-8.2-targz-1.1.X] | [![][debian-8.2-badge-preview]][debian-8.2-version-preview]
[Host][debian-8.2-host-preview]
[Host FX Resolver][debian-8.2-hostfxr-preview]
[Shared Framework][debian-8.2-sharedfx-preview]
[tar.gz][debian-8.2-targz-preview] |
-| **Debian 9 (x64)** | [![][debian-9-badge-master]][debian-9-version-master]
[Runtime-Deps][debian-9-runtime-deps-master] ([Checksum][debian-9-runtime-deps-checksum-master])
[Host][debian-9-host-master] ([Checksum][debian-9-host-checksum-master])
[Host FX Resolver][debian-9-hostfxr-master] ([Checksum][debian-9-hostfxr-checksum-master])
[Shared Framework][debian-9-sharedfx-master] ([Checksum][debian-9-sharedfx-checksum-master])
| N/A | N/A | N/A |
-| **CentOS 7 (x64)** | [![][centos-7-badge-master]][centos-7-version-master]
[Runtime-Deps][centos-7-runtime-deps-master] ([Checksum][centos-7-runtime-deps-checksum-master])
[Host][centos-7-host-master] ([Checksum][centos-7-host-checksum-master])
[Host FX Resolver][centos-7-hostfxr-master] ([Checksum][centos-7-hostfxr-checksum-master])
[Shared Framework][centos-7-sharedfx-master] ([Checksum][centos-7-sharedfx-checksum-master])
| N/A | [![][centos-badge-1.1.X]][centos-version-1.1.X]
[tar.gz][centos-targz-1.1.X] | [![][centos-badge-preview]][centos-version-preview]
[tar.gz][centos-targz-preview] |
-| **RHEL 6** | [![][rhel-6-badge-master]][rhel-6-version-master]
[tar.gz][rhel-6-targz-master] | [![][rhel-6-badge-2.0.X]][rhel-6-version-2.0.X]
[tar.gz][rhel-6-targz-2.0.X] | N/A | N/A |
-| **RHEL 7.2 (x64)** | [![][rhel7-badge-master]][rhel7-version-master]
[Host][rhel7-host-master] ([Checksum][rhel7-host-checksum-master])
[Host FX Resolver][rhel7-hostfxr-master] ([Checksum][rhel7-hostfxr-checksum-master])
[Shared Framework][rhel7-sharedfx-master] ([Checksum][rhel7-sharedfx-checksum-master])
| [![][rhel7-badge-2.0.X]][rhel7-version-2.0.X]
[Host][rhel7-host-2.0.X] ([Checksum][rhel7-host-checksum-2.0.X])
[Host FX Resolver][rhel7-hostfxr-2.0.X] ([Checksum][rhel7-hostfxr-checksum-2.0.X])
[Shared Framework][rhel7-sharedfx-2.0.X] ([Checksum][rhel7-sharedfx-checksum-2.0.X])
| [![][rhel-badge-1.1.X]][rhel-version-1.1.X]
[tar.gz][rhel-targz-1.1.X] | [![][rhel-badge-preview]][rhel-version-preview]
[tar.gz][rhel-targz-preview] |
-| **Fedora 23 (x64)** | N/A | N/A | [![][fedora-23-badge-1.1.X]][fedora-23-version-1.1.X]
[tar.gz][fedora-23-targz-1.1.X] | [![][fedora-23-badge-preview]][fedora-23-version-preview]
[tar.gz][fedora-23-targz-preview] |
-| **Fedora 24 (x64)** | N/A | N/A | [![][fedora-24-badge-1.1.X]][fedora-24-version-1.1.X]
[tar.gz][fedora-24-targz-1.1.X] | N/A |
-| **Fedora 27 (x64)** | [![][fedora-27-badge-master]][fedora-27-version-master]
[Runtime-Deps][fedora-27-runtime-deps-master] ([Checksum][fedora-27-runtime-deps-checksum-master])
[Host][fedora-27-host-master] ([Checksum][fedora-27-host-checksum-master])
[Host FX Resolver][fedora-27-hostfxr-master] ([Checksum][fedora-27-hostfxr-checksum-master])
[Shared Framework][fedora-27-sharedfx-master] ([Checksum][fedora-27-sharedfx-checksum-master])
| N/A | N/A | N/A | N/A |
-| **SLES 12 (x64)** | [![][sles-12-badge-master]][sles-12-version-master]
[Runtime-Deps][sles-12-runtime-deps-master] ([Checksum][sles-12-runtime-deps-checksum-master])
[Host][sles-12-host-master] ([Checksum][sles-12-host-checksum-master])
[Host FX Resolver][sles-12-hostfxr-master] ([Checksum][sles-12-hostfxr-checksum-master])
[Shared Framework][sles-12-sharedfx-master] ([Checksum][sles-12-sharedfx-checksum-master])
| N/A | N/A | N/A | N/A |
-| **OpenSUSE 42 (x64)** | [![][OpenSUSE-42-badge-master]][OpenSUSE-42-version-master]
[Runtime-Deps][OpenSUSE-42-runtime-deps-master] ([Checksum][OpenSUSE-42-runtime-deps-checksum-master])
[Host][OpenSUSE-42-host-master] ([Checksum][OpenSUSE-42-host-checksum-master])
[Host FX Resolver][OpenSUSE-42-hostfxr-master] ([Checksum][OpenSUSE-42-hostfxr-checksum-master])
[Shared Framework][OpenSUSE-42-sharedfx-master] ([Checksum][OpenSUSE-42-sharedfx-checksum-master])
| N/A | [![][opensuse-42.1-badge-1.1.X]][opensuse-42.1-version-1.1.X]
[tar.gz][opensuse-42.1-targz-1.1.X] | N/A |
-| **Linux-musl (x64)** | [![][linux-musl-x64-badge-master]][linux-musl-x64-version-master]
[tar.gz][linux-musl-x64-targz-master] ([Checksum][linux-musl-x64-targz-checksum-master])
[Symbols (tar.gz)][linux-musl-x64-symbols-targz-master] | N/A | N/A | N/A |
-
-*Note: Our Linux packages (.deb and .rpm) are put together slightly differently than the Windows and Mac specific installers. Instead of combining everything, we have separate component packages that depend on each other. If you're installing these directly from the installer files (via dpkg or similar), then you'll need to install them in the order presented above.*
-
-[build-badge-master]: https://devdiv.visualstudio.com/_apis/public/build/definitions/0bdbc590-a062-4c3f-b0f6-9383f67865ee/3160/badge
-[build-master]: https://devdiv.visualstudio.com/DevDiv/_build/index?definitionId=3160&_a=completed
-
-[build-badge-2.0.X]: https://devdiv.visualstudio.com/_apis/public/build/definitions/0bdbc590-a062-4c3f-b0f6-9383f67865ee/6161/badge
-[build-2.0.X]: https://devdiv.visualstudio.com/DevDiv/_build/index?definitionId=6161&_a=completed
-
-[build-badge-1.X.X]: https://devdiv.visualstudio.com/_apis/public/build/definitions/0bdbc590-a062-4c3f-b0f6-9383f67865ee/4188/badge
-[build-1.X.X]: https://devdiv.visualstudio.com/DevDiv/_build/index?definitionId=4188&_a=completed
-
-[build-badge-1.0.X]: https://devdiv.visualstudio.com/_apis/public/build/definitions/0bdbc590-a062-4c3f-b0f6-9383f67865ee/4187/badge
-[build-1.0.X]: https://devdiv.visualstudio.com/DevDiv/_build/index?definitionId=4187&_a=completed
-
-
-[win-x64-badge-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/sharedfx_win-x64_Release_version_badge.svg
-[win-x64-version-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/latest.sharedfx.win.x64.version
-[win-x64-installer-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-win-x64.exe
-[win-x64-installer-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-win-x64.exe.sha512
-[win-x64-zip-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-win-x64.zip
-[win-x64-zip-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-win-x64.zip.sha512
-[win-x64-symbols-zip-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-symbols-latest-win-x64.zip
-
-[win-x64-badge-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/sharedfx_win-x64_Release_version_badge.svg
-[win-x64-version-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/latest.sharedfx.win.x64.version
-[win-x64-installer-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-runtime-latest-win-x64.exe
-[win-x64-installer-checksum-2.0.X]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-runtime-latest-win-x64.exe.sha512
-[win-x64-zip-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-runtime-latest-win-x64.zip
-[win-x64-zip-checksum-2.0.X]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-runtime-latest-win-x64.zip.sha512
-[win-x64-symbols-zip-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-runtime-symbols-latest-win-x64.zip
-
-[win-x64-badge-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/Binaries/Latest/sharedfx_Windows_x64_Release_version_badge.svg
-[win-x64-version-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/dnvm/latest.sharedfx.win.x64.version
-[win-x64-installer-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/Installers/Latest/dotnet-win-x64.latest.exe
-[win-x64-zip-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/Binaries/Latest/dotnet-win-x64.latest.zip
-
-[win-x64-badge-preview]: https://dotnetcli.blob.core.windows.net/dotnet/preview/Binaries/Latest/sharedfx_Windows_x64_Release_version_badge.svg
-[win-x64-version-preview]: https://dotnetcli.blob.core.windows.net/dotnet/preview/dnvm/latest.sharedfx.win.x64.version
-[win-x64-installer-preview]: https://dotnetcli.blob.core.windows.net/dotnet/preview/Installers/Latest/dotnet-win-x64.latest.exe
-[win-x64-zip-preview]: https://dotnetcli.blob.core.windows.net/dotnet/preview/Binaries/Latest/dotnet-win-x64.latest.zip
-
-[win-x86-badge-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/sharedfx_win-x86_Release_version_badge.svg
-[win-x86-version-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/latest.sharedfx.win.x86.version
-[win-x86-installer-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-win-x86.exe
-[win-x86-installer-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-win-x86.exe.sha512
-[win-x86-zip-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-win-x86.zip
-[win-x86-zip-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-win-x86.zip.sha512
-[win-x86-symbols-zip-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-symbols-latest-win-x86.zip
-
-[win-x86-badge-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/sharedfx_win-x86_Release_version_badge.svg
-[win-x86-version-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/latest.sharedfx.win.x86.version
-[win-x86-installer-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-runtime-latest-win-x86.exe
-[win-x86-installer-checksum-2.0.X]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-runtime-latest-win-x86.exe.sha512
-[win-x86-zip-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-runtime-latest-win-x86.zip
-[win-x86-zip-checksum-2.0.X]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-runtime-latest-win-x86.zip.sha512
-[win-x86-symbols-zip-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-runtime-symbols-latest-win-x86.zip
-
-[win-x86-badge-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/Binaries/Latest/sharedfx_Windows_x86_Release_version_badge.svg
-[win-x86-version-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/dnvm/latest.sharedfx.win.x86.version
-[win-x86-installer-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/Installers/Latest/dotnet-win-x86.latest.exe
-[win-x86-zip-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/Binaries/Latest/dotnet-win-x86.latest.zip
-
-[win-x86-badge-preview]: https://dotnetcli.blob.core.windows.net/dotnet/preview/Binaries/Latest/sharedfx_Windows_x86_Release_version_badge.svg
-[win-x86-version-preview]: https://dotnetcli.blob.core.windows.net/dotnet/preview/dnvm/latest.sharedfx.win.x86.version
-[win-x86-installer-preview]: https://dotnetcli.blob.core.windows.net/dotnet/preview/Installers/Latest/dotnet-win-x86.latest.exe
-[win-x86-zip-preview]: https://dotnetcli.blob.core.windows.net/dotnet/preview/Binaries/Latest/dotnet-win-x86.latest.zip
-
-[win-arm-badge-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/sharedfx_win-arm_Release_version_badge.svg
-[win-arm-version-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/latest.sharedfx.win.arm.version
-[win-arm-zip-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-win-arm.zip
-[win-arm-zip-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-win-arm.zip.sha512
-[win-arm-symbols-zip-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-symbols-latest-win-arm.zip
-
-[win-arm-badge-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/sharedfx_win-arm_Release_version_badge.svg
-[win-arm-version-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/latest.sharedfx.win.arm.version
-[win-arm-zip-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-runtime-latest-win-arm.zip
-[win-arm-zip-checksum-2.0.X]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-runtime-latest-win-arm.zip.sha512
-[win-arm-symbols-zip-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-runtime-symbols-latest-win-arm.zip
-
-[win-arm64-badge-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/sharedfx_win-arm64_Release_version_badge.svg
-[win-arm64-version-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/latest.sharedfx.win.arm64.version
-[win-arm64-zip-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-win-arm64.zip
-[win-arm64-zip-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-win-arm64.zip.sha512
-[win-arm64-symbols-zip-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-symbols-latest-win-arm64.zip
-
-[win-arm64-badge-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/sharedfx_win-arm64_Release_version_badge.svg
-[win-arm64-version-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/latest.sharedfx.win.arm64.version
-[win-arm64-zip-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-runtime-latest-win-arm64.zip
-[win-arm64-zip-checksum-2.0.X]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-runtime-latest-win-arm64.zip.sha512
-[win-arm64-symbols-zip-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-runtime-symbols-latest-win-arm64.zip
-
-[osx-badge-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/sharedfx_osx-x64_Release_version_badge.svg
-[osx-version-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/latest.sharedfx.osx.x64.version
-[osx-installer-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-osx-x64.pkg
-[osx-installer-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-osx-x64.pkg.sha512
-[osx-targz-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-osx-x64.tar.gz
-[osx-targz-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-osx-x64.tar.gz.sha512
-[osx-symbols-targz-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-symbols-latest-osx-x64.tar.gz
-
-[osx-badge-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/sharedfx_osx-x64_Release_version_badge.svg
-[osx-version-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/latest.sharedfx.osx.x64.version
-[osx-installer-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-runtime-latest-osx-x64.pkg
-[osx-installer-checksum-2.0.X]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-runtime-latest-osx-x64.pkg.sha512
-[osx-targz-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-runtime-latest-osx-x64.tar.gz
-[osx-targz-checksum-2.0.X]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-runtime-latest-osx-x64.tar.gz.sha512
-[osx-symbols-targz-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-runtime-symbols-latest-osx-x64.tar.gz
-
-[osx-badge-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/Binaries/Latest/sharedfx_OSX_x64_Release_version_badge.svg
-[osx-version-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/dnvm/latest.sharedfx.osx.x64.version
-[osx-installer-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/Installers/Latest/dotnet-osx-x64.latest.pkg
-[osx-targz-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/Binaries/Latest/dotnet-osx-x64.latest.tar.gz
-
-[osx-badge-preview]: https://dotnetcli.blob.core.windows.net/dotnet/preview/Binaries/Latest/sharedfx_OSX_x64_Release_version_badge.svg
-[osx-version-preview]: https://dotnetcli.blob.core.windows.net/dotnet/preview/dnvm/latest.sharedfx.osx.x64.version
-[osx-installer-preview]: https://dotnetcli.blob.core.windows.net/dotnet/preview/Installers/Latest/dotnet-osx-x64.latest.pkg
-[osx-targz-preview]: https://dotnetcli.blob.core.windows.net/dotnet/preview/Binaries/Latest/dotnet-osx-x64.latest.tar.gz
-
-
-[linux-x64-badge-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/sharedfx_linux-x64_Release_version_badge.svg
-[linux-x64-version-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/latest.sharedfx.linux.x64.version
-[linux-x64-targz-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-linux-x64.tar.gz
-[linux-x64-targz-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-linux-x64.tar.gz.sha512
-[linux-x64-symbols-targz-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-symbols-latest-linux-x64.tar.gz
-
-[linux-musl-x64-badge-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/sharedfx_linux-musl-x64_Release_version_badge.svg
-[linux-musl-x64-version-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/latest.sharedfx.linux-musl.x64.version
-[linux-musl-x64-targz-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-linux-musl-x64.tar.gz
-[linux-musl-x64-targz-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-linux-musl-x64.tar.gz.sha512
-[linux-musl-x64-symbols-targz-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-symbols-latest-linux-musl-x64.tar.gz
-
-[linux-x64-badge-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/sharedfx_linux-x64_Release_version_badge.svg
-[linux-x64-version-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/latest.sharedfx.linux.x64.version
-[linux-x64-targz-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-runtime-latest-linux-x64.tar.gz
-[linux-x64-targz-checksum-2.0.X]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-runtime-latest-linux-x64.tar.gz.sha512
-[linux-x64-symbols-targz-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-runtime-symbols-latest-linux-x64.tar.gz
-
-[linux-arm-badge-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/sharedfx_linux-arm_Release_version_badge.svg
-[linux-arm-version-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/latest.sharedfx.linux.arm.version
-[linux-arm-targz-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-linux-arm.tar.gz
-[linux-arm-targz-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-linux-arm.tar.gz.sha512
-[linux-arm-symbols-targz-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-symbols-latest-linux-arm.tar.gz
-
-[linux-arm64-badge-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/sharedfx_linux-arm64_Release_version_badge.svg
-[linux-arm64-version-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/latest.sharedfx.linux.arm64.version
-[linux-arm64-targz-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-linux-arm64.tar.gz
-[linux-arm64-targz-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-linux-arm64.tar.gz.sha512
-[linux-arm64-symbols-targz-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-symbols-latest-linux-arm64.tar.gz
-
-[linux-arm-badge-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/sharedfx_linux-arm_Release_version_badge.svg
-[linux-arm-version-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/latest.sharedfx.linux.arm.version
-[linux-arm-targz-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-runtime-latest-linux-arm.tar.gz
-[linux-arm-targz-checksum-2.0.X]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-runtime-latest-linux-arm.tar.gz.sha512
-[linux-arm-symbols-targz-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-runtime-symbols-latest-linux-arm.tar.gz
-
-[ubuntu-14.04-badge-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/sharedfx_ubuntu.14.04-x64_Release_version_badge.svg
-[ubuntu-14.04-version-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/latest.sharedfx.ubuntu.x64.version
-[ubuntu-14.04-runtime-deps-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-deps-latest-ubuntu.14.04-x64.deb
-[ubuntu-14.04-runtime-deps-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-deps-latest-ubuntu.14.04-x64.deb.sha512
-[ubuntu-14.04-host-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-host-latest-x64.deb
-[ubuntu-14.04-host-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-host-latest-x64.deb.sha512
-[ubuntu-14.04-hostfxr-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-hostfxr-latest-x64.deb
-[ubuntu-14.04-hostfxr-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-hostfxr-latest-x64.deb.sha512
-[ubuntu-14.04-sharedfx-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-x64.deb
-[ubuntu-14.04-sharedfx-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-x64.deb.sha512
-
-[ubuntu-14.04-badge-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/sharedfx_ubuntu.14.04-x64_Release_version_badge.svg
-[ubuntu-14.04-version-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/latest.sharedfx.ubuntu.x64.version
-[ubuntu-14.04-host-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-host-latest-ubuntu.14.04-x64.deb
-[ubuntu-14.04-host-checksum-2.0.X]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-host-latest-ubuntu.14.04-x64.deb.sha512
-[ubuntu-14.04-hostfxr-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-hostfxr-latest-ubuntu.14.04-x64.deb
-[ubuntu-14.04-hostfxr-checksum-2.0.X]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-hostfxr-latest-ubuntu.14.04-x64.deb.sha512
-[ubuntu-14.04-sharedfx-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-runtime-latest-ubuntu.14.04-x64.deb
-[ubuntu-14.04-sharedfx-checksum-2.0.X]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-runtime-latest-ubuntu.14.04-x64.deb.sha512
-
-[ubuntu-14.04-badge-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/Binaries/Latest/sharedfx_Ubuntu_x64_Release_version_badge.svg
-[ubuntu-14.04-version-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/dnvm/latest.sharedfx.ubuntu.x64.version
-[ubuntu-14.04-host-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/Installers/Latest/dotnet-host-ubuntu-x64.latest.deb
-[ubuntu-14.04-hostfxr-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/Installers/Latest/dotnet-hostfxr-ubuntu-x64.latest.deb
-[ubuntu-14.04-sharedfx-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/Installers/Latest/dotnet-sharedframework-ubuntu-x64.latest.deb
-[ubuntu-14.04-targz-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/Binaries/Latest/dotnet-ubuntu-x64.latest.tar.gz
-
-[ubuntu-14.04-badge-preview]: https://dotnetcli.blob.core.windows.net/dotnet/preview/Binaries/Latest/sharedfx_Ubuntu_x64_Release_version_badge.svg
-[ubuntu-14.04-version-preview]: https://dotnetcli.blob.core.windows.net/dotnet/preview/dnvm/latest.sharedfx.ubuntu.x64.version
-[ubuntu-14.04-host-preview]: https://dotnetcli.blob.core.windows.net/dotnet/preview/Installers/Latest/dotnet-host-ubuntu-x64.latest.deb
-[ubuntu-14.04-hostfxr-preview]: https://dotnetcli.blob.core.windows.net/dotnet/preview/Installers/Latest/dotnet-hostfxr-ubuntu-x64.latest.deb
-[ubuntu-14.04-sharedfx-preview]: https://dotnetcli.blob.core.windows.net/dotnet/preview/Installers/Latest/dotnet-sharedframework-ubuntu-x64.latest.deb
-[ubuntu-14.04-targz-preview]: https://dotnetcli.blob.core.windows.net/dotnet/preview/Binaries/Latest/dotnet-ubuntu-x64.latest.tar.gz
-
-
-[ubuntu-16.04-badge-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/sharedfx_ubuntu.16.04-x64_Release_version_badge.svg
-[ubuntu-16.04-version-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/latest.sharedfx.ubuntu.16.04.x64.version
-[ubuntu-16.04-host-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-host-latest-x64.deb
-[ubuntu-16.04-runtime-deps-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-deps-latest-ubuntu.16.04-x64.deb
-[ubuntu-16.04-runtime-deps-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-deps-latest-ubuntu.16.04-x64.deb.sha512
-[ubuntu-16.04-host-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-host-latest-x64.deb.sha512
-[ubuntu-16.04-hostfxr-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-hostfxr-latest-x64.deb
-[ubuntu-16.04-hostfxr-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-hostfxr-latest-x64.deb.sha512
-[ubuntu-16.04-sharedfx-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-x64.deb
-[ubuntu-16.04-sharedfx-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-x64.deb.sha512
-
-[ubuntu-16.04-badge-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/sharedfx_ubuntu.16.04-x64_Release_version_badge.svg
-[ubuntu-16.04-version-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/latest.sharedfx.ubuntu.16.04.x64.version
-[ubuntu-16.04-host-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-host-latest-ubuntu.16.04-x64.deb
-[ubuntu-16.04-host-checksum-2.0.X]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-host-latest-ubuntu.16.04-x64.deb.sha512
-[ubuntu-16.04-hostfxr-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-hostfxr-latest-ubuntu.16.04-x64.deb
-[ubuntu-16.04-hostfxr-checksum-2.0.X]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-hostfxr-latest-ubuntu.16.04-x64.deb.sha512
-[ubuntu-16.04-sharedfx-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-runtime-latest-ubuntu.16.04-x64.deb
-[ubuntu-16.04-sharedfx-checksum-2.0.X]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-runtime-latest-ubuntu.16.04-x64.deb.sha512
-
-[ubuntu-16.04-badge-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/Binaries/Latest/sharedfx_Ubuntu_16_04_x64_Release_version_badge.svg
-[ubuntu-16.04-version-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/dnvm/latest.sharedfx.ubuntu.16.04.x64.version
-[ubuntu-16.04-host-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/Installers/Latest/dotnet-host-ubuntu.16.04-x64.latest.deb
-[ubuntu-16.04-hostfxr-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/Installers/Latest/dotnet-hostfxr-ubuntu.16.04-x64.latest.deb
-[ubuntu-16.04-sharedfx-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/Installers/Latest/dotnet-sharedframework-ubuntu.16.04-x64.latest.deb
-[ubuntu-16.04-targz-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/Binaries/Latest/dotnet-ubuntu.16.04-x64.latest.tar.gz
-
-[ubuntu-16.04-badge-preview]: https://dotnetcli.blob.core.windows.net/dotnet/preview/Binaries/Latest/sharedfx_Ubuntu_16_04_x64_Release_version_badge.svg
-[ubuntu-16.04-version-preview]: https://dotnetcli.blob.core.windows.net/dotnet/preview/dnvm/latest.sharedfx.ubuntu.16.04.x64.version
-[ubuntu-16.04-host-preview]: https://dotnetcli.blob.core.windows.net/dotnet/preview/Installers/Latest/dotnet-host-ubuntu.16.04-x64.latest.deb
-[ubuntu-16.04-hostfxr-preview]: https://dotnetcli.blob.core.windows.net/dotnet/preview/Installers/Latest/dotnet-hostfxr-ubuntu.16.04-x64.latest.deb
-[ubuntu-16.04-sharedfx-preview]: https://dotnetcli.blob.core.windows.net/dotnet/preview/Installers/Latest/dotnet-sharedframework-ubuntu.16.04-x64.latest.deb
-[ubuntu-16.04-targz-preview]: https://dotnetcli.blob.core.windows.net/dotnet/preview/Binaries/Latest/dotnet-ubuntu.16.04-x64.latest.tar.gz
-
-[ubuntu-17.10-badge-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/sharedfx_ubuntu.17.10-x64_Release_version_badge.svg
-[ubuntu-17.10-version-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/latest.sharedfx.ubuntu.17.10.x64.version
-[ubuntu-17.10-runtime-deps-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-deps-latest-ubuntu.17.10-x64.deb
-[ubuntu-17.10-runtime-deps-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-deps-latest-ubuntu.17.10-x64.deb.sha512
-[ubuntu-17.10-host-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-host-latest-x64.deb
-[ubuntu-17.10-host-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-host-latest-x64.deb.sha512
-[ubuntu-17.10-hostfxr-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-hostfxr-latest-x64.deb
-[ubuntu-17.10-hostfxr-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-hostfxr-latest-x64.deb.sha512
-[ubuntu-17.10-sharedfx-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-x64.deb
-[ubuntu-17.10-sharedfx-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-x64.deb.sha512
-
-[ubuntu-18.04-badge-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/sharedfx_ubuntu.18.04-x64_Release_version_badge.svg
-[ubuntu-18.04-version-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/latest.sharedfx.ubuntu.18.04.x64.version
-[ubuntu-18.04-host-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-host-latest-x64.deb
-[ubuntu-18.04-runtime-deps-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-deps-latest-ubuntu.18.04-x64.deb
-[ubuntu-18.04-runtime-deps-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-deps-latest-ubuntu.18.04-x64.deb.sha512
-[ubuntu-18.04-host-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-host-latest-x64.deb.sha512
-[ubuntu-18.04-hostfxr-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-hostfxr-latest-x64.deb
-[ubuntu-18.04-hostfxr-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-hostfxr-latest-x64.deb.sha512
-[ubuntu-18.04-sharedfx-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-x64.deb
-[ubuntu-18.04-sharedfx-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-x64.deb.sha512
-
-[ubuntu-16.10-badge-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/sharedfx_ubuntu.16.10-x64_Release_version_badge.svg
-[ubuntu-16.10-version-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/latest.sharedfx.ubuntu.16.10.x64.version
-[ubuntu-16.10-host-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-host-latest-ubuntu.16.10-x64.deb
-[ubuntu-16.10-host-checksum-2.0.X]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-host-latest-ubuntu.16.10-x64.deb.sha512
-[ubuntu-16.10-hostfxr-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-hostfxr-latest-ubuntu.16.10-x64.deb
-[ubuntu-16.10-hostfxr-checksum-2.0.X]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-hostfxr-latest-ubuntu.16.10-x64.deb.sha512
-[ubuntu-16.10-sharedfx-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-runtime-latest-ubuntu.16.10-x64.deb
-[ubuntu-16.10-sharedfx-checksum-2.0.X]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-runtime-latest-ubuntu.16.10-x64.deb.sha512
-
-[ubuntu-16.10-badge-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/Binaries/Latest/sharedfx_Ubuntu_16_10_x64_Release_version_badge.svg
-[ubuntu-16.10-version-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/dnvm/latest.sharedfx.ubuntu.16.10.x64.version
-[ubuntu-16.10-host-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/Installers/Latest/dotnet-host-ubuntu.16.10-x64.latest.deb
-[ubuntu-16.10-hostfxr-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/Installers/Latest/dotnet-hostfxr-ubuntu.16.10-x64.latest.deb
-[ubuntu-16.10-sharedfx-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/Installers/Latest/dotnet-sharedframework-ubuntu.16.10-x64.latest.deb
-[ubuntu-16.10-targz-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/Binaries/Latest/dotnet-ubuntu.16.10-x64.latest.tar.gz
-
-[debian-8.2-badge-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/sharedfx_debian.8-x64_Release_version_badge.svg
-[debian-8.2-version-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/latest.sharedfx.debian.8.x64.version
-[debian-8.2-runtime-deps-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-deps-latest-debian.8-x64.deb
-[debian-8.2-runtime-deps-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-deps-latest-debian.8-x64.deb.sha512
-[debian-8.2-host-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-host-latest-x64.deb
-[debian-8.2-host-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-host-latest-x64.deb.sha512
-[debian-8.2-hostfxr-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-hostfxr-latest-x64.deb
-[debian-8.2-hostfxr-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-hostfxr-latest-x64.deb.sha512
-[debian-8.2-sharedfx-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-x64.deb
-[debian-8.2-sharedfx-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-x64.deb.sha512
-
-[debian-9-badge-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/sharedfx_debian.9-x64_Release_version_badge.svg
-[debian-9-version-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/latest.sharedfx.debian.9.x64.version
-[debian-9-runtime-deps-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-deps-latest-debian.9-x64.deb
-[debian-9-runtime-deps-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-deps-latest-debian.9-x64.deb.sha512
-[debian-9-host-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-host-latest-x64.deb
-[debian-9-host-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-host-latest-x64.deb.sha512
-[debian-9-hostfxr-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-hostfxr-latest-x64.deb
-[debian-9-hostfxr-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-hostfxr-latest-x64.deb.sha512
-[debian-9-sharedfx-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-x64.deb
-[debian-9-sharedfx-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-x64.deb.sha512
-
-[debian-8.2-badge-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/sharedfx_debian.8-x64_Release_version_badge.svg
-[debian-8.2-version-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/latest.sharedfx.debian.8.x64.version
-[debian-8.2-host-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-host-latest-debian.8-x64.deb
-[debian-8.2-host-checksum-2.0.X]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-host-latest-debian.8-x64.deb.sha512
-[debian-8.2-hostfxr-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-hostfxr-latest-debian.8-x64.deb
-[debian-8.2-hostfxr-checksum-2.0.X]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-hostfxr-latest-debian.8-x64.deb.sha512
-[debian-8.2-sharedfx-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-runtime-latest-debian.8-x64.deb
-[debian-8.2-sharedfx-checksum-2.0.X]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-runtime-latest-debian.8-x64.deb.sha512
-
-[debian-8.2-badge-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/Binaries/Latest/sharedfx_Debian_x64_Release_version_badge.svg
-[debian-8.2-version-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/dnvm/latest.sharedfx.debian.x64.version
-[debian-8.2-host-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/Installers/Latest/dotnet-host-debian-x64.latest.deb
-[debian-8.2-hostfxr-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/Installers/Latest/dotnet-hostfxr-debian-x64.latest.deb
-[debian-8.2-sharedfx-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/Installers/Latest/dotnet-sharedframework-debian-x64.latest.deb
-[debian-8.2-targz-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/Binaries/Latest/dotnet-debian-x64.latest.tar.gz
-
-[debian-8.2-badge-preview]: https://dotnetcli.blob.core.windows.net/dotnet/preview/Binaries/Latest/sharedfx_Debian_x64_Release_version_badge.svg
-[debian-8.2-version-preview]: https://dotnetcli.blob.core.windows.net/dotnet/preview/dnvm/latest.sharedfx.debian.x64.version
-[debian-8.2-host-preview]: https://dotnetcli.blob.core.windows.net/dotnet/preview/Installers/Latest/dotnet-host-debian-x64.latest.deb
-[debian-8.2-hostfxr-preview]: https://dotnetcli.blob.core.windows.net/dotnet/preview/Installers/Latest/dotnet-hostfxr-debian-x64.latest.deb
-[debian-8.2-sharedfx-preview]: https://dotnetcli.blob.core.windows.net/dotnet/preview/Installers/Latest/dotnet-sharedframework-debian-x64.latest.deb
-[debian-8.2-targz-preview]: https://dotnetcli.blob.core.windows.net/dotnet/preview/Binaries/Latest/dotnet-debian-x64.latest.tar.gz
-
-[centos-badge-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/Binaries/Latest/sharedfx_CentOS_x64_Release_version_badge.svg
-[centos-version-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/dnvm/latest.sharedfx.centos.x64.version
-[centos-targz-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/Binaries/Latest/dotnet-centos-x64.latest.tar.gz
-
-[centos-badge-preview]: https://dotnetcli.blob.core.windows.net/dotnet/preview/Binaries/Latest/sharedfx_CentOS_x64_Release_version_badge.svg
-[centos-version-preview]: https://dotnetcli.blob.core.windows.net/dotnet/preview/dnvm/latest.sharedfx.centos.x64.version
-[centos-targz-preview]: https://dotnetcli.blob.core.windows.net/dotnet/preview/Binaries/Latest/dotnet-centos-x64.latest.tar.gz
-
-[centos-7-badge-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/sharedfx_centos.7-x64_Release_version_badge.svg
-[centos-7-version-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/latest.sharedfx.centos.7.x64.version
-[centos-7-host-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-host-latest-x64.rpm
-[centos-7-runtime-deps-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-deps-latest-centos.7-x64.rpm
-[centos-7-runtime-deps-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-deps-latest-centos.7-x64.rpm.sha512
-[centos-7-host-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-host-latest-x64.rpm.sha512
-[centos-7-hostfxr-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-hostfxr-latest-x64.rpm
-[centos-7-hostfxr-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-hostfxr-latest-x64.rpm.sha512
-[centos-7-sharedfx-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-x64.rpm
-[centos-7-sharedfx-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-x64.rpm.sha512
-
-[rhel7-badge-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/sharedfx_rhel.7-x64_Release_version_badge.svg
-[rhel7-version-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/latest.sharedfx.rhel.7.x64.version
-[rhel7-host-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-host-latest-rhel.7-x64.rpm
-[rhel7-host-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-host-latest-rhel.7-x64.rpm.sha512
-[rhel7-hostfxr-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-hostfxr-latest-rhel.7-x64.rpm
-[rhel7-hostfxr-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-hostfxr-latest-rhel.7-x64.rpm.sha512
-[rhel7-sharedfx-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-rhel.7-x64.rpm
-[rhel7-sharedfx-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-rhel.7-x64.rpm.sha512
-
-[rhel7-badge-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/sharedfx_rhel.7-x64_Release_version_badge.svg
-[rhel7-version-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/latest.sharedfx.rhel.7.x64.version
-[rhel7-host-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-host-latest-rhel.7-x64.rpm
-[rhel7-host-checksum-2.0.X]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-host-latest-rhel.7-x64.rpm.sha512
-[rhel7-hostfxr-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-hostfxr-latest-rhel.7-x64.rpm
-[rhel7-hostfxr-checksum-2.0.X]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-hostfxr-latest-rhel.7-x64.rpm.sha512
-[rhel7-sharedfx-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-runtime-latest-rhel.7-x64.rpm
-[rhel7-sharedfx-checksum-2.0.X]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-runtime-latest-rhel.7-x64.rpm.sha512
-
-[rhel-badge-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/Binaries/Latest/sharedfx_RHEL_x64_Release_version_badge.svg
-[rhel-version-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/dnvm/latest.sharedfx.rhel.x64.version
-[rhel-targz-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/Binaries/Latest/dotnet-rhel-x64.latest.tar.gz
-
-[rhel-badge-preview]: https://dotnetcli.blob.core.windows.net/dotnet/preview/Binaries/Latest/sharedfx_RHEL_x64_Release_version_badge.svg
-[rhel-version-preview]: https://dotnetcli.blob.core.windows.net/dotnet/preview/dnvm/latest.sharedfx.rhel.x64.version
-[rhel-targz-preview]: https://dotnetcli.blob.core.windows.net/dotnet/preview/Binaries/Latest/dotnet-rhel-x64.latest.tar.gz
-
-[fedora-23-badge-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/Binaries/Latest/sharedfx_Fedora_23_x64_Release_version_badge.svg
-[fedora-23-version-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/dnvm/latest.sharedfx.fedora.23.x64.version
-[fedora-23-targz-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/Binaries/Latest/dotnet-fedora.23-x64.latest.tar.gz
-
-[fedora-23-badge-preview]: https://dotnetcli.blob.core.windows.net/dotnet/preview/Binaries/Latest/sharedfx_Fedora_23_x64_Release_version_badge.svg
-[fedora-23-version-preview]: https://dotnetcli.blob.core.windows.net/dotnet/preview/dnvm/latest.sharedfx.fedora.23.x64.version
-[fedora-23-targz-preview]: https://dotnetcli.blob.core.windows.net/dotnet/preview/Binaries/Latest/dotnet-fedora.23-x64.latest.tar.gz
-
-[fedora-24-badge-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/Binaries/Latest/sharedfx_Fedora_24_x64_Release_version_badge.svg
-[fedora-24-version-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/dnvm/latest.sharedfx.fedora.24.x64.version
-[fedora-24-targz-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/Binaries/Latest/dotnet-fedora.24-x64.latest.tar.gz
-
-[fedora-27-badge-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/sharedfx_fedora.27-x64_Release_version_badge.svg
-[fedora-27-version-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/latest.sharedfx.fedora.27.x64.version
-[fedora-27-host-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-host-latest-x64.rpm
-[fedora-27-runtime-deps-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-deps-latest-fedora.27-x64.rpm
-[fedora-27-runtime-deps-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-deps-latest-fedora.27-x64.rpm.sha512
-[fedora-27-host-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-host-latest-x64.rpm.sha512
-[fedora-27-hostfxr-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-hostfxr-latest-x64.rpm
-[fedora-27-hostfxr-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-hostfxr-latest-x64.rpm.sha512
-[fedora-27-sharedfx-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-x64.rpm
-[fedora-27-sharedfx-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-x64.rpm.sha512
-
-[sles-12-badge-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/sharedfx_sles.12-x64_Release_version_badge.svg
-[sles-12-version-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/latest.sharedfx.sles.12.x64.version
-[sles-12-host-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-host-latest-x64.rpm
-[sles-12-runtime-deps-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-deps-latest-sles.12-x64.rpm
-[sles-12-runtime-deps-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-deps-latest-sles.12-x64.rpm.sha512
-[sles-12-host-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-host-latest-x64.rpm.sha512
-[sles-12-hostfxr-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-hostfxr-latest-x64.rpm
-[sles-12-hostfxr-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-hostfxr-latest-x64.rpm.sha512
-[sles-12-sharedfx-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-x64.rpm
-[sles-12-sharedfx-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-x64.rpm.sha512
-
-[OpenSUSE-42-badge-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/sharedfx_opensuse.42-x64_Release_version_badge.svg
-[OpenSUSE-42-version-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/latest.sharedfx.opensuse.42.x64.version
-[OpenSUSE-42-runtime-deps-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-deps-latest-opensuse.42-x64.rpm
-[OpenSUSE-42-runtime-deps-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-deps-latest-opensuse.42-x64.rpm.sha512
-[OpenSUSE-42-host-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-host-latest-opensuse.42-x64.rpm
-[OpenSUSE-42-host-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-host-latest-opensuse.42-x64.rpm.sha512
-[OpenSUSE-42-hostfxr-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-hostfxr-latest-opensuse.42-x64.rpm
-[OpenSUSE-42-hostfxr-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-hostfxr-latest-opensuse.42-x64.rpm.sha512
-[OpenSUSE-42-sharedfx-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-opensuse.42-x64.rpm
-[OpenSUSE-42-sharedfx-checksum-master]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-opensuse.42-x64.rpm.sha512
-
-[opensuse-42.1-badge-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/Binaries/Latest/sharedfx_openSUSE_42_1_x64_Release_version_badge.svg
-[opensuse-42.1-version-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/dnvm/latest.sharedfx.opensuse.42.1.x64.version
-[opensuse-42.1-targz-1.1.X]: https://dotnetcli.blob.core.windows.net/dotnet/release/1.1.0/Binaries/Latest/dotnet-opensuse.42.1-x64.latest.tar.gz
-
-[rhel-6-badge-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/sharedfx_rhel.6-x64_Release_version_badge.svg
-[rhel-6-version-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/latest.version
-[rhel-6-targz-master]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-rhel.6-x64.tar.gz
-
-[rhel-6-badge-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/sharedfx_rhel.6-x64_Release_version_badge.svg
-[rhel-6-version-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/latest.sharedfx.rhel.6.x64.version
-[rhel-6-targz-2.0.X]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-runtime-latest-rhel.6-x64.tar.gz
+Going forward, the .NET team is using https://github.com/dotnet/runtime to
+develop the code and issues formerly in this repository.
+
+Please see the following for more context:
+
+[dotnet/announcements#119 "Consolidating .NET GitHub repos"](https://github.com/dotnet/announcements/issues/119)
\ No newline at end of file
diff --git a/RepoDirectories.props b/RepoDirectories.props
deleted file mode 100644
index 212e525a3d..0000000000
--- a/RepoDirectories.props
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
- $(MSBuildThisFileDirectory)
-
- $(RepoRoot)
- $(RepoRoot)src/
-
-
- $(RepoRoot)Bin/
- $(BinDir)
- $(BinDir)obj/
- $(ObjDir)
-
-
- $(DotNetRestorePackagesPath)
- $(RepoRoot)packages/
- $(RepoRoot)Tools/
- $(ToolRuntimePath)local/
-
- $(ToolRuntimePath)
- $(RepoRoot)Tools/
- $(ToolsDir)
- $(ToolsDir)net46/
- $(BuildToolsTaskCoreDir)
- $(BuildToolsTaskDesktopDir)
- $(LocalToolRuntimePath)netstandard2.0/
- $(LocalToolRuntimePath)net46/
- $(BuildToolsTaskDir)
- $(ToolsDir)dotnetcli/
-
-
-
- $(BaseIntermediateOutputPath)HostMachineInfo.props
-
-
diff --git a/THIRD-PARTY-NOTICES.TXT b/THIRD-PARTY-NOTICES.TXT
deleted file mode 100644
index edf8b3a04a..0000000000
--- a/THIRD-PARTY-NOTICES.TXT
+++ /dev/null
@@ -1,562 +0,0 @@
-.NET Core uses third-party libraries or other resources that may be
-distributed under licenses different than the .NET Core software.
-
-Attributions and licence notices for test cases originally authored by
-third parties can be found in the respective test directories.
-
-In the event that we accidentally failed to list a required notice, please
-bring it to our attention. Post an issue or email us:
-
- dotnet@microsoft.com
-
-The attached notices are provided for information only.
-
-License notice for RFC 3492
----------------------------
-
-Copyright (C) The Internet Society (2003). All Rights Reserved.
-
-This document and translations of it may be copied and furnished to
-others, and derivative works that comment on or otherwise explain it
-or assist in its implementation may be prepared, copied, published
-and distributed, in whole or in part, without restriction of any
-kind, provided that the above copyright notice and this paragraph are
-included on all such copies and derivative works. However, this
-document itself may not be modified in any way, such as by removing
-the copyright notice or references to the Internet Society or other
-Internet organizations, except as needed for the purpose of
-developing Internet standards in which case the procedures for
-copyrights defined in the Internet Standards process must be
-followed, or as required to translate it into languages other than
-English.
-
-The limited permissions granted above are perpetual and will not be
-revoked by the Internet Society or its successors or assigns.
-
-This document and the information contained herein is provided on an
-"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
-TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
-BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
-HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
-MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
-
-License notice for The C++ REST SDK
------------------------------------
-
-C++ REST SDK
-
-The MIT License (MIT)
-
-Copyright (c) Microsoft Corporation
-
-All rights reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
-License notice for Algorithm from Internet Draft document "UUIDs and GUIDs"
----------------------------------------------------------------------------
-
-Copyright (c) 1990- 1993, 1996 Open Software Foundation, Inc.
-Copyright (c) 1989 by Hewlett-Packard Company, Palo Alto, Ca. &
-Digital Equipment Corporation, Maynard, Mass.
-To anyone who acknowledges that this file is provided "AS IS"
-without any express or implied warranty: permission to use, copy,
-modify, and distribute this file for any purpose is hereby
-granted without fee, provided that the above copyright notices and
-this notice appears in all source code copies, and that none of
-the names of Open Software Foundation, Inc., Hewlett-Packard
-Company, or Digital Equipment Corporation be used in advertising
-or publicity pertaining to distribution of the software without
-specific, written prior permission. Neither Open Software
-Foundation, Inc., Hewlett-Packard Company, Microsoft, nor Digital Equipment
-Corporation makes any representations about the suitability of
-this software for any purpose.
-
-Copyright(C) The Internet Society 1997. All Rights Reserved.
-
-This document and translations of it may be copied and furnished to others,
-and derivative works that comment on or otherwise explain it or assist in
-its implementation may be prepared, copied, published and distributed, in
-whole or in part, without restriction of any kind, provided that the above
-copyright notice and this paragraph are included on all such copies and
-derivative works.However, this document itself may not be modified in any
-way, such as by removing the copyright notice or references to the Internet
-Society or other Internet organizations, except as needed for the purpose of
-developing Internet standards in which case the procedures for copyrights
-defined in the Internet Standards process must be followed, or as required
-to translate it into languages other than English.
-
-The limited permissions granted above are perpetual and will not be revoked
-by the Internet Society or its successors or assigns.
-
-This document and the information contained herein is provided on an "AS IS"
-basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE
-DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
-ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY
-RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A
-PARTICULAR PURPOSE.
-
-License notice for Algorithm from RFC 4122 -
-A Universally Unique IDentifier (UUID) URN Namespace
-----------------------------------------------------
-
-Copyright (c) 1990- 1993, 1996 Open Software Foundation, Inc.
-Copyright (c) 1989 by Hewlett-Packard Company, Palo Alto, Ca. &
-Digital Equipment Corporation, Maynard, Mass.
-Copyright (c) 1998 Microsoft.
-To anyone who acknowledges that this file is provided "AS IS"
-without any express or implied warranty: permission to use, copy,
-modify, and distribute this file for any purpose is hereby
-granted without fee, provided that the above copyright notices and
-this notice appears in all source code copies, and that none of
-the names of Open Software Foundation, Inc., Hewlett-Packard
-Company, Microsoft, or Digital Equipment Corporation be used in
-advertising or publicity pertaining to distribution of the software
-without specific, written prior permission. Neither Open Software
-Foundation, Inc., Hewlett-Packard Company, Microsoft, nor Digital
-Equipment Corporation makes any representations about the
-suitability of this software for any purpose."
-
-License notice for The LLVM Compiler Infrastructure
----------------------------------------------------
-
-Developed by:
-
- LLVM Team
-
- University of Illinois at Urbana-Champaign
-
- http://llvm.org
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal with
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
-of the Software, and to permit persons to whom the Software is furnished to do
-so, subject to the following conditions:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimers.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimers in the
- documentation and/or other materials provided with the distribution.
-
- * Neither the names of the LLVM Team, University of Illinois at
- Urbana-Champaign, nor the names of its contributors may be used to
- endorse or promote products derived from this Software without specific
- prior written permission.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE
-SOFTWARE.
-
-License notice for Bit Twiddling Hacks
---------------------------------------
-
-Bit Twiddling Hacks
-
-By Sean Eron Anderson
-seander@cs.stanford.edu
-
-Individually, the code snippets here are in the public domain (unless otherwise
-noted) — feel free to use them however you please. The aggregate collection and
-descriptions are © 1997-2005 Sean Eron Anderson. The code and descriptions are
-distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY and
-without even the implied warranty of merchantability or fitness for a particular
-purpose.
-
-License notice for Bob Jenkins
-------------------------------
-
-By Bob Jenkins, 1996. bob_jenkins@burtleburtle.net. You may use this
-code any way you wish, private, educational, or commercial. It's free.
-
-License notice for Greg Parker
-------------------------------
-
-Greg Parker gparker@cs.stanford.edu December 2000
-This code is in the public domain and may be copied or modified without
-permission.
-
-License notice for libunwind8 based code
-----------------------------------------
-
-Copyright (c) 2003-2005 Hewlett-Packard Development Company, L.P.
- Contributed by David Mosberger-Tang
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-License notice for the Printing Floating-Point Numbers
-/******************************************************************************
- Copyright (c) 2014 Ryan Juckett
- http://www.ryanjuckett.com/
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
-
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
-
- 3. This notice may not be removed or altered from any source
- distribution.
-******************************************************************************/
-
-License notice for xxHash
--------------------------
-
-xxHash Library
-Copyright (c) 2012-2014, Yann Collet
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright notice, this
- list of conditions and the following disclaimer in the documentation and/or
- other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-License notice for Slicing-by-8
--------------------------------
-
-http://sourceforge.net/projects/slicing-by-8/
-
-Copyright (c) 2004-2006 Intel Corporation - All Rights Reserved
-
-
-This software program is licensed subject to the BSD License, available at
-http://www.opensource.org/licenses/bsd-license.html.
-
-
-License notice for Unicode data
--------------------------------
-
-http://www.unicode.org/copyright.html#License
-
-Copyright © 1991-2017 Unicode, Inc. All rights reserved.
-Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Unicode data files and any associated documentation
-(the "Data Files") or Unicode software and any associated documentation
-(the "Software") to deal in the Data Files or Software
-without restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, and/or sell copies of
-the Data Files or Software, and to permit persons to whom the Data Files
-or Software are furnished to do so, provided that either
-(a) this copyright and permission notice appear with all copies
-of the Data Files or Software, or
-(b) this copyright and permission notice appear in associated
-Documentation.
-
-THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
-NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
-DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THE DATA FILES OR SOFTWARE.
-
-Except as contained in this notice, the name of a copyright holder
-shall not be used in advertising or otherwise to promote the sale,
-use or other dealings in these Data Files or Software without prior
-written authorization of the copyright holder.
-
-License notice for Zlib
------------------------
-
-https://github.com/madler/zlib
-http://zlib.net/zlib_license.html
-
-/* zlib.h -- interface of the 'zlib' general purpose compression library
- version 1.2.11, January 15th, 2017
-
- Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-
- Jean-loup Gailly Mark Adler
- jloup@gzip.org madler@alumni.caltech.edu
-
-*/
-
-License notice for Mono
--------------------------------
-
-http://www.mono-project.com/docs/about-mono/
-
-Copyright (c) .NET Foundation Contributors
-
-MIT License
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the Software), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-License notice for International Organization for Standardization
------------------------------------------------------------------
-
-Portions (C) International Organization for Standardization 1986:
- Permission to copy in any form is granted for use with
- conforming SGML systems and applications as defined in
- ISO 8879, provided this notice is included in all copies.
-
-License notice for Intel
-------------------------
-
-"Copyright (c) 2004-2006 Intel Corporation - All Rights Reserved
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-1. Redistributions of source code must retain the above copyright notice, this
-list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright notice,
-this list of conditions and the following disclaimer in the documentation
-and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-License notice for Xamarin and Novell
--------------------------------------
-
-Copyright (c) 2015 Xamarin, Inc (http://www.xamarin.com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-Copyright (c) 2011 Novell, Inc (http://www.novell.com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-Third party notice for W3C
---------------------------
-
-"W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE
-Status: This license takes effect 13 May, 2015.
-This work is being provided by the copyright holders under the following license.
-License
-By obtaining and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions.
-Permission to copy, modify, and distribute this work, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the work or portions thereof, including modifications:
-The full text of this NOTICE in a location viewable to users of the redistributed or derivative work.
-Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the W3C Software and Document Short Notice should be included.
-Notice of any changes or modifications, through a copyright statement on the new code or document such as "This software or document includes material copied from or derived from [title and URI of the W3C document]. Copyright © [YEAR] W3C® (MIT, ERCIM, Keio, Beihang)."
-Disclaimers
-THIS WORK IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENT WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
-COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENT.
-The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the work without specific, written prior permission. Title to copyright in this work will at all times remain with copyright holders."
-
-License notice for Brotli
---------------------------------------
-
-Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-compress_fragment.c:
-Copyright (c) 2011, Google Inc.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
- * Neither the name of Google Inc. nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-""AS IS"" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-decode_fuzzer.c:
-Copyright (c) 2015 The Chromium Authors. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
- * Neither the name of Google Inc. nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-""AS IS"" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
\ No newline at end of file
diff --git a/TestProjects.props b/TestProjects.props
deleted file mode 100644
index 72f14516c2..0000000000
--- a/TestProjects.props
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
deleted file mode 100644
index 497ce2dbca..0000000000
--- a/azure-pipelines.yml
+++ /dev/null
@@ -1,289 +0,0 @@
-trigger:
-- release/2.1
-- release/2.1
-
-pr:
-- release/2.1
-- release/2.2
-
-resources:
- containers:
- - container: MuslContainer
- image: microsoft/dotnet-buildtools-prereqs:alpine-3.6-WithNode-f4d3fe3-20181213005010
-
-jobs:
-- job: debug_windows_nt_arm
- displayName: Windows_NT arm Debug Build
- pool:
- vmImage: vs2017-win2016
- steps:
- - checkout: self
- clean: true
- - script: .\build.cmd -ConfigurationGroup=Debug -TargetArchitecture=arm -SkipTests=true
- - task: CopyFiles@2
- inputs:
- contents: |
- 'Bin/*/packages/*.tar.gz'
- 'Bin/*/corehost/*.tar.gz'
- 'Bin/*/packages/*.zip'
- 'Bin/*/corehost/*.zip'
- 'Bin/*/packages/*.deb'
- 'Bin/*/corehost/*.deb'
- 'Bin/*/packages/*.msi'
- 'Bin/*/corehost/*.msi'
- 'Bin/*/packages/*.pkg'
- 'Bin/*/corehost/*.pkg'
- 'Bin/*/packages/*.exe'
- 'Bin/*/corehost/*.exe'
- 'Bin/*/packages/*.nupkg'
- 'Bin/*/corehost/*.nupkg'
- targetFolder: $(Build.ArtifactStagingDirectory)
- - task: PublishBuildArtifacts@1
- inputs:
- pathtoPublish: '$(Build.ArtifactStagingDirectory)'
- artifactName: debug_windows_nt_arm
-
-- job: debug_windows_nt_x86
- displayName: Windows_NT x86 Debug Build
- pool:
- vmImage: vs2017-win2016
- steps:
- - checkout: self
- clean: true
- - script: .\build.cmd -ConfigurationGroup=Debug -TargetArchitecture=x86
- - task: PublishTestResults@2
- inputs:
- testResultsFormat: VSTest
- testResultsFiles: '**/*-testResults.trx'
- condition: always()
- - task: CopyFiles@2
- inputs:
- contents: |
- 'Bin/*/packages/*.tar.gz'
- 'Bin/*/corehost/*.tar.gz'
- 'Bin/*/packages/*.zip'
- 'Bin/*/corehost/*.zip'
- 'Bin/*/packages/*.deb'
- 'Bin/*/corehost/*.deb'
- 'Bin/*/packages/*.msi'
- 'Bin/*/corehost/*.msi'
- 'Bin/*/packages/*.pkg'
- 'Bin/*/corehost/*.pkg'
- 'Bin/*/packages/*.exe'
- 'Bin/*/corehost/*.exe'
- 'Bin/*/packages/*.nupkg'
- 'Bin/*/corehost/*.nupkg'
- targetFolder: $(Build.ArtifactStagingDirectory)
- - task: PublishBuildArtifacts@1
- inputs:
- pathtoPublish: '$(Build.ArtifactStagingDirectory)'
- artifactName: debug_windows_nt_x86
-
-- job: release_linux_arm
- displayName: Linux arm Release Build
- pool:
- vmImage: ubuntu-16.04
- steps:
- - checkout: self
- clean: true
- - script: docker run -e ROOTFS_DIR=/crossrootfs/arm --name ubuntu-14.04-cross-e435274-20180323032140 --rm -v $(Build.SourcesDirectory):/src/core-setup -w=/src/core-setup microsoft/dotnet-buildtools-prereqs:ubuntu-14.04-cross-e435274-20180323032140 ./build.sh -ConfigurationGroup=Release -TargetArchitecture=arm -strip-symbols -SkipTests=true -CrossBuild=true
- - task: CopyFiles@2
- inputs:
- contents: |
- 'Bin/*/packages/*.tar.gz'
- 'Bin/*/corehost/*.tar.gz'
- 'Bin/*/packages/*.zip'
- 'Bin/*/corehost/*.zip'
- 'Bin/*/packages/*.deb'
- 'Bin/*/corehost/*.deb'
- 'Bin/*/packages/*.msi'
- 'Bin/*/corehost/*.msi'
- 'Bin/*/packages/*.pkg'
- 'Bin/*/corehost/*.pkg'
- 'Bin/*/packages/*.exe'
- 'Bin/*/corehost/*.exe'
- 'Bin/*/packages/*.nupkg'
- 'Bin/*/corehost/*.nupkg'
- targetFolder: $(Build.ArtifactStagingDirectory)
- - task: PublishBuildArtifacts@1
- inputs:
- pathtoPublish: '$(Build.ArtifactStagingDirectory)'
- artifactName: release_linux_arm
-
-- job: release_linux_arm64
- displayName: Linux arm64 Release Build
- pool:
- vmImage: ubuntu-16.04
- steps:
- - checkout: self
- clean: true
- - script: docker run -e ROOTFS_DIR=/crossrootfs/arm64 --name ubuntu-16.04-cross-arm64-a3ae44b-20180316023254 --rm -v $(Build.SourcesDirectory):/src/core-setup -w=/src/core-setup microsoft/dotnet-buildtools-prereqs:ubuntu-16.04-cross-arm64-a3ae44b-20180316023254 ./build.sh -ConfigurationGroup=Release -TargetArchitecture=arm64 -strip-symbols -SkipTests=true -CrossBuild=true
- - task: CopyFiles@2
- inputs:
- contents: |
- 'Bin/*/packages/*.tar.gz'
- 'Bin/*/corehost/*.tar.gz'
- 'Bin/*/packages/*.zip'
- 'Bin/*/corehost/*.zip'
- 'Bin/*/packages/*.deb'
- 'Bin/*/corehost/*.deb'
- 'Bin/*/packages/*.msi'
- 'Bin/*/corehost/*.msi'
- 'Bin/*/packages/*.pkg'
- 'Bin/*/corehost/*.pkg'
- 'Bin/*/packages/*.exe'
- 'Bin/*/corehost/*.exe'
- 'Bin/*/packages/*.nupkg'
- 'Bin/*/corehost/*.nupkg'
- targetFolder: $(Build.ArtifactStagingDirectory)
- - task: PublishBuildArtifacts@1
- inputs:
- pathtoPublish: '$(Build.ArtifactStagingDirectory)'
- artifactName: release_linux_arm64
-
-- job: release_linux_x64
- displayName: Linux x64 Release Build
- pool:
- vmImage: ubuntu-16.04
- steps:
- - checkout: self
- clean: true
- - script: ./build.sh -ConfigurationGroup=Release -TargetArchitecture=x64 -strip-symbols
- - task: PublishTestResults@2
- inputs:
- testResultsFormat: VSTest
- testResultsFiles: '**/*-testResults.trx'
- condition: always()
- - task: CopyFiles@2
- inputs:
- contents: |
- 'Bin/*/packages/*.tar.gz'
- 'Bin/*/corehost/*.tar.gz'
- 'Bin/*/packages/*.zip'
- 'Bin/*/corehost/*.zip'
- 'Bin/*/packages/*.deb'
- 'Bin/*/corehost/*.deb'
- 'Bin/*/packages/*.msi'
- 'Bin/*/corehost/*.msi'
- 'Bin/*/packages/*.pkg'
- 'Bin/*/corehost/*.pkg'
- 'Bin/*/packages/*.exe'
- 'Bin/*/corehost/*.exe'
- 'Bin/*/packages/*.nupkg'
- 'Bin/*/corehost/*.nupkg'
- targetFolder: $(Build.ArtifactStagingDirectory)
- - task: PublishBuildArtifacts@1
- inputs:
- pathtoPublish: '$(Build.ArtifactStagingDirectory)'
- artifactName: release_linux_x64
-
-- job: release_osx_x64
- displayName: OSX x64 Release Build
- pool:
- vmImage: macOS-10.13
- steps:
- - checkout: self
- clean: true
- - script: ./build.sh -ConfigurationGroup=Release -TargetArchitecture=x64 -strip-symbols
- - task: PublishTestResults@2
- inputs:
- testResultsFormat: VSTest
- testResultsFiles: '**/*-testResults.trx'
- condition: always()
- - task: CopyFiles@2
- inputs:
- contents: |
- 'Bin/*/packages/*.tar.gz'
- 'Bin/*/corehost/*.tar.gz'
- 'Bin/*/packages/*.zip'
- 'Bin/*/corehost/*.zip'
- 'Bin/*/packages/*.deb'
- 'Bin/*/corehost/*.deb'
- 'Bin/*/packages/*.msi'
- 'Bin/*/corehost/*.msi'
- 'Bin/*/packages/*.pkg'
- 'Bin/*/corehost/*.pkg'
- 'Bin/*/packages/*.exe'
- 'Bin/*/corehost/*.exe'
- 'Bin/*/packages/*.nupkg'
- 'Bin/*/corehost/*.nupkg'
- targetFolder: $(Build.ArtifactStagingDirectory)
- - task: PublishBuildArtifacts@1
- inputs:
- pathtoPublish: '$(Build.ArtifactStagingDirectory)'
- artifactName: release_osx_x64
-
-- job: release_windows_nt_x64
- displayName: Windows_NT x64 Release Build
- pool:
- vmImage: vs2017-win2016
- steps:
- - checkout: self
- clean: true
- - script: .\build.cmd -ConfigurationGroup=Release -TargetArchitecture=x64
- - task: PublishTestResults@2
- inputs:
- testResultsFormat: VSTest
- testResultsFiles: '**/*-testResults.trx'
- condition: always()
- - task: CopyFiles@2
- inputs:
- contents: |
- 'Bin/*/packages/*.tar.gz'
- 'Bin/*/corehost/*.tar.gz'
- 'Bin/*/packages/*.zip'
- 'Bin/*/corehost/*.zip'
- 'Bin/*/packages/*.deb'
- 'Bin/*/corehost/*.deb'
- 'Bin/*/packages/*.msi'
- 'Bin/*/corehost/*.msi'
- 'Bin/*/packages/*.pkg'
- 'Bin/*/corehost/*.pkg'
- 'Bin/*/packages/*.exe'
- 'Bin/*/corehost/*.exe'
- 'Bin/*/packages/*.nupkg'
- 'Bin/*/corehost/*.nupkg'
- targetFolder: $(Build.ArtifactStagingDirectory)
- - task: PublishBuildArtifacts@1
- inputs:
- pathtoPublish: '$(Build.ArtifactStagingDirectory)'
- artifactName: release_windows_nt_x64
-
-- job: linux_musl_x64
- displayName: Linux Musl x64
- container: MuslContainer
- strategy:
- matrix:
- Debug:
- _BuildConfig: Debug
- Release:
- _BuildConfig: Release
- pool:
- name: NetCorePublic-Pool
- queue: buildpool.ubuntu.1604.amd64.open
- steps:
- - checkout: self
- clean: true
- - script: ./build.sh -ConfigurationGroup=$(_BuildConfig) -TargetArchitecture=x64 -PortableBuild=false -strip-symbols -SkipTests=false -- /p:OutputRid=linux-musl-x64
- - task: CopyFiles@2
- inputs:
- contents: |
- 'Bin/*/packages/*.tar.gz'
- 'Bin/*/corehost/*.tar.gz'
- 'Bin/*/packages/*.zip'
- 'Bin/*/corehost/*.zip'
- 'Bin/*/packages/*.deb'
- 'Bin/*/corehost/*.deb'
- 'Bin/*/packages/*.msi'
- 'Bin/*/corehost/*.msi'
- 'Bin/*/packages/*.pkg'
- 'Bin/*/corehost/*.pkg'
- 'Bin/*/packages/*.exe'
- 'Bin/*/corehost/*.exe'
- 'Bin/*/packages/*.nupkg'
- 'Bin/*/corehost/*.nupkg'
- targetFolder: $(Build.ArtifactStagingDirectory)
- - task: PublishBuildArtifacts@1
- inputs:
- pathtoPublish: '$(Build.ArtifactStagingDirectory)'
- artifactName: linux_musl_x64
diff --git a/build.cmd b/build.cmd
deleted file mode 100644
index 02dbb009fc..0000000000
--- a/build.cmd
+++ /dev/null
@@ -1,2 +0,0 @@
-@call %~dp0run.cmd build %*
-@exit /b %ERRORLEVEL%
\ No newline at end of file
diff --git a/build.proj b/build.proj
deleted file mode 100644
index adab67cdda..0000000000
--- a/build.proj
+++ /dev/null
@@ -1,77 +0,0 @@
-
-
-
-
-
-
- true
-
-
-
-
- true
-
-
-
-
- CreateOrUpdateCurrentVersionFile;
- CreateVersionInfoFile;
- CreateHostMachineInfoFile;
- BatchRestorePackages;
- BuildCustomTasks;
-
-
- $(TraversalBuildDependencies);
- $(TraversalBuildDependsOn);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup>
- <HostMachineRid>$(HostMachineRid)</HostMachineRid>
- </PropertyGroup>
-</Project>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/build.sh b/build.sh
deleted file mode 100755
index 1f8e693d1a..0000000000
--- a/build.sh
+++ /dev/null
@@ -1,24 +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 )"
-
-# Some things depend on HOME and it may not be set. We should fix those things, but until then, we just patch a value in
-if [ -z "$HOME" ] || [ ! -d "$HOME" ]; then
- export HOME=$DIR/Bin/home
-
- [ ! -d "$HOME" ] || rm -Rf $HOME
- mkdir -p $HOME
-fi
-
-$DIR/run.sh build "$@"
diff --git a/buildpipeline/Core-Setup-Linux-Arm-BT.json b/buildpipeline/Core-Setup-Linux-Arm-BT.json
deleted file mode 100644
index d8f619efb8..0000000000
--- a/buildpipeline/Core-Setup-Linux-Arm-BT.json
+++ /dev/null
@@ -1,519 +0,0 @@
-{
- "build": [
- {
- "environment": {},
- "enabled": true,
- "continueOnError": true,
- "displayName": "run begin.sh",
- "timeoutInMinutes": 0,
- "alwaysRun": true,
- "task": {
- "id": "10f1f9a1-74b0-47ab-87bf-e3c9c68e8b0d",
- "versionSpec": "0.*",
- "definitionType": "task"
- },
- "inputs": {
- "type": "InlineScript",
- "scriptPath": "",
- "args": "",
- "cwd": "",
- "failOnStandardError": "false",
- "script": "if [ -f \"$AGENTTOOLSPATH/begin.sh\" ]; then echo \"$AGENTTOOLSPATH/begin.sh script found. Executing...\"; $AGENTTOOLSPATH/begin.sh ; else echo \"$AGENTTOOLSPATH/begin.sh script does not exist. Moving on.\" ; fi"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": true,
- "alwaysRun": false,
- "displayName": "Cleanup previous build",
- "timeoutInMinutes": 0,
- "refName": "Task1",
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "sudo",
- "arguments": "rm -dfr $(PB_SourcesDirectory)",
- "workingFolder": "",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Clone repo",
- "timeoutInMinutes": 0,
- "refName": "Task2",
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "git",
- "arguments": "clone $(PB_VsoRepoUrl) $(PB_SourcesDirectory)",
- "workingFolder": "",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "git checkout",
- "timeoutInMinutes": 0,
- "refName": "Task3",
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "git",
- "arguments": "checkout $(SourceVersion)",
- "workingFolder": "$(PB_SourcesDirectory)",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Create host machine tools sandbox",
- "timeoutInMinutes": 0,
- "refName": "Task4",
- "task": {
- "id": "5bfb729a-a7c8-4a78-a7c3-8d717bb7c13c",
- "versionSpec": "2.*",
- "definitionType": "task"
- },
- "inputs": {
- "SourceFolder": "$(PB_SourcesDirectory)",
- "Contents": "init-tools.sh\nBuildToolsVersion.txt\nDotnetCLIVersion.txt\ninit-tools.msbuild",
- "TargetFolder": "$(PB_DockerHost_Sandbox)",
- "CleanTargetFolder": "false",
- "OverWrite": "false",
- "flattenFolders": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Initialize tools in sandbox for host machine",
- "timeoutInMinutes": 0,
- "refName": "Task5",
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "$(PB_DockerHost_Sandbox)/init-tools.sh",
- "arguments": "",
- "workingFolder": "$(PB_DockerHost_Sandbox)",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Initialize docker",
- "timeoutInMinutes": 0,
- "refName": "Task6",
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "$(PB_DockerHost_ToolsDirectory)/scripts/docker/init-docker.sh",
- "arguments": "$(PB_DockerImageName)",
- "workingFolder": "$(PB_DockerHost_Sandbox)",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Build",
- "timeoutInMinutes": 0,
- "refName": "Task7",
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "docker",
- "arguments": "run --rm $(PB_CrossBuildArgs)$(DockerCommonRunArgs) $(PB_GitDirectory)/build.sh -OfficialBuildId=$(OfficialBuildId) $(PB_BuildArguments) -- $(PB_AdditionalMSBuildArguments)",
- "workingFolder": "$(PB_SourcesDirectory)",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Publish",
- "timeoutInMinutes": 0,
- "refName": "Task8",
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "docker",
- "arguments": "run --privileged --rm $(DockerCommonRunArgs) $(PB_GitDirectory)/Tools/msbuild.sh $(PB_GitDirectory)/publish/publish.proj /p:PublishType=$(PB_PublishType) /p:AzureAccountName=$(PB_AzureAccountName) /p:ContainerName=$(PB_ContainerName) /p:AzureAccessToken=$(PB_AzureAccessToken) /p:ChecksumAzureAccountName=$(PB_ChecksumAzureAccountName) /p:ChecksumContainerName=$(PB_ChecksumContainerName) /p:ChecksumAzureAccessToken=$(PB_ChecksumAzureAccessToken) /p:TargetArchitecture=$(PB_TargetArchitecture) /p:ConfigurationGroup=$(BuildConfiguration) /p:PortableBuild=$(PB_PortableBuild) /p:OSGroup=Linux /p:DebRepoUser=$(PB_DebRepoUser) /p:DebRepoServer=$(PB_DebRepoServer) /p:DebRepoPass=$(DEB_REPO_PASSWORD) /p:DebianId_ubuntu1404-x64=$(PB_DebianId_ubuntu1404-x64) /p:DebianId_debian8-x64=$(PB_DebianId_debian8-x64) /p:DebianId_ubuntu1604-x64=$(PB_DebianId_ubuntu1604-x64) /p:DebianId_ubuntu1610-x64=$(PB_DebianId_ubuntu1610-x64) $(PB_AdditionalMSBuildArguments)",
- "workingFolder": "$(PB_SourcesDirectory)",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": true,
- "alwaysRun": false,
- "displayName": "Cleanup Docker",
- "timeoutInMinutes": 0,
- "condition": "always()",
- "refName": "Task9",
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "perl",
- "arguments": "$(PB_DockerHost_ToolsDirectory)/scripts/docker/cleanup-docker.sh",
- "workingFolder": "",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": true,
- "alwaysRun": true,
- "displayName": "Copy Files to: $(Build.StagingDirectory)\\BuildLogs",
- "timeoutInMinutes": 0,
- "condition": "succeededOrFailed()",
- "refName": "CopyFiles1",
- "task": {
- "id": "5bfb729a-a7c8-4a78-a7c3-8d717bb7c13c",
- "versionSpec": "2.*",
- "definitionType": "task"
- },
- "inputs": {
- "SourceFolder": "",
- "Contents": "**/*.log",
- "TargetFolder": "$(Build.StagingDirectory)\\BuildLogs",
- "CleanTargetFolder": "false",
- "OverWrite": "false",
- "flattenFolders": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": true,
- "alwaysRun": true,
- "displayName": "Publish Artifact: BuildLogs",
- "timeoutInMinutes": 0,
- "condition": "succeededOrFailed()",
- "refName": "PublishBuildArtifacts2",
- "task": {
- "id": "2ff763a7-ce83-4e1f-bc89-0ae63477cebe",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "PathtoPublish": "$(Build.StagingDirectory)\\BuildLogs",
- "ArtifactName": "BuildLogs",
- "ArtifactType": "Container",
- "TargetPath": "\\\\my\\share\\$(Build.DefinitionName)\\$(Build.BuildNumber)",
- "Parallel": "false",
- "ParallelCount": "8"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": true,
- "displayName": "run end.sh",
- "timeoutInMinutes": 0,
- "condition": "always()",
- "alwaysRun": true,
- "task": {
- "id": "10f1f9a1-74b0-47ab-87bf-e3c9c68e8b0d",
- "versionSpec": "0.*",
- "definitionType": "task"
- },
- "inputs": {
- "type": "InlineScript",
- "scriptPath": "",
- "args": "",
- "cwd": "",
- "failOnStandardError": "false",
- "script": "if [ -f \"$AGENTTOOLSPATH/end.sh\" ]; then echo \"$AGENTTOOLSPATH/end.sh script found. Executing...\"; $AGENTTOOLSPATH/end.sh ; else echo \"$AGENTTOOLSPATH/end.sh script does not exist. Moving on.\" ; fi"
- }
- }
- ],
- "options": [
- {
- "enabled": false,
- "definition": {
- "id": "5d58cc01-7c75-450c-be18-a388ddb129ec"
- },
- "inputs": {
- "branchFilters": "[\"+refs/heads/*\"]",
- "additionalFields": "{}"
- }
- },
- {
- "enabled": false,
- "definition": {
- "id": "a9db38f9-9fdc-478c-b0f9-464221e58316"
- },
- "inputs": {
- "workItemType": "234347",
- "assignToRequestor": "true",
- "additionalFields": "{}"
- }
- },
- {
- "enabled": false,
- "definition": {
- "id": "57578776-4c22-4526-aeb0-86b6da17ee9c"
- },
- "inputs": {
- "additionalFields": "{}"
- }
- }
- ],
- "variables": {
- "BuildConfiguration": {
- "value": "Release",
- "allowOverride": true
- },
- "PB_BuildArguments": {
- "value": "-ConfigurationGroup=$(BuildConfiguration) $(PB_AdditionalBuildArguments)",
- "allowOverride": true
- },
- "DEB_REPO_PASSWORD": {
- "value": null,
- "isSecret": true
- },
- "PB_DebianId_ubuntu1404-x64": {
- "value": null,
- "isSecret": true
- },
- "PB_DebianId_debian8-x64": {
- "value": null,
- "isSecret": true
- },
- "PB_DebianId_ubuntu1604-x64": {
- "value": null,
- "isSecret": true
- },
- "PB_DebianId_ubuntu1610-x64": {
- "value": null,
- "isSecret": true
- },
- "DOTNET_BUILD_CONTAINER_TAG": {
- "value": "core-setup-$(PB_DockerOS)-$(Build.BuildId)"
- },
- "PB_DockerOS": {
- "value": "debian8",
- "allowOverride": true
- },
- "PB_CleanAgent": {
- "value": "true"
- },
- "PB_DockerHost_ToolsDirectory": {
- "value": "$(PB_DockerHost_Sandbox)/Tools"
- },
- "PB_DockerImageName": {
- "value": "$(PB_DockerRepository):$(PB_DockerTag)"
- },
- "PB_DockerRepository": {
- "value": "microsoft/dotnet-buildtools-prereqs"
- },
- "PB_DockerContainerName": {
- "value": "coresetup-$(Build.BuildId)"
- },
- "PB_DockerTag": {
- "value": "ubuntu1404_prereqs_v3"
- },
- "OfficialBuildId": {
- "value": "$(Build.BuildNumber)"
- },
- "PB_GitDirectory": {
- "value": "/root/coresetup"
- },
- "SourceVersion": {
- "value": "HEAD"
- },
- "ROOTFS_DIR": {
- "value": "/crossrootfs/$(PB_TargetArchitecture)"
- },
- "PB_CrossBuildArgs": {
- "value": "",
- "allowOverride": true
- },
- "DockerCommonRunArgs": {
- "value": "--name $(PB_DockerContainerName) -v \"$(PB_SourcesDirectory):$(PB_GitDirectory)\" -w=\"$(PB_GitDirectory)\" -e \"PACKAGEVERSIONPROPSURL=$(PB_PackageVersionPropsUrl)\" $(PB_DockerImageName)"
- },
- "PB_VsoRepoUrl": {
- "value": "--branch $(PB_Branch) https://$(PB_VsoAccountName):$(PB_VsoPassword)@devdiv.visualstudio.com/DevDiv/_git/DotNet-Core-Setup-Trusted"
- },
- "PB_VsoAccountName": {
- "value": "dn-bot"
- },
- "PB_VsoPassword": {
- "value": null,
- "isSecret": true
- },
- "PB_SourcesDirectory": {
- "value": "$(Build.SourcesDirectory)/core-setup"
- },
- "PB_Branch": {
- "value": "master"
- },
- "PB_DockerHost_Sandbox": {
- "value": "$(Build.StagingDirectory)/HostSandbox"
- },
- "PB_AzureAccountName": {
- "value": "sourcebuild"
- },
- "PB_ContainerName": {
- "value": "dotnet"
- },
- "PB_AzureAccessToken": {
- "value": null,
- "isSecret": true
- },
- "PB_TargetArchitecture": {
- "value": "arm"
- },
- "PB_AdditionalBuildArguments": {
- "value": ""
- },
- "PB_AdditionalMSBuildArguments": {
- "value": ""
- },
- "PB_PortableBuild": {
- "value": "false"
- },
- "PB_DebRepoUser": {
- "value": "dotnet"
- },
- "PB_DebRepoServer": {
- "value": "azure-apt-cat.cloudapp.net"
- },
- "PB_ChecksumAzureAccountName": {
- "value": "dotnetclichecksums"
- },
- "PB_ChecksumContainerName": {
- "value": "dotnet"
- },
- "PB_ChecksumAzureAccessToken": {
- "value": null,
- "isSecret": true
- },
- "PB_PackageVersionPropsUrl": {
- "value": "",
- "isSecret": true
- },
- "PB_RestoreSource": {
- "value": "",
- "isSecret": true
- },
- "PB_AssetRootUrl": {
- "value": "",
- "isSecret": true
- }
- },
- "demands": [
- "Agent.OS -equals linux"
- ],
- "retentionRules": [
- {
- "branches": [
- "+refs/heads/*"
- ],
- "artifacts": [],
- "artifactTypesToDelete": [
- "FilePath",
- "SymbolStore"
- ],
- "daysToKeep": 2,
- "minimumToKeep": 10,
- "deleteBuildRecord": true,
- "deleteTestResults": true
- }
- ],
- "buildNumberFormat": "$(date:yyyyMMdd)$(rev:-rr)",
- "jobAuthorizationScope": "projectCollection",
- "jobTimeoutInMinutes": 90,
- "jobCancelTimeoutInMinutes": 5,
- "badgeEnabled": true,
- "repository": {
- "properties": {
- "labelSources": "0",
- "reportBuildStatus": "true",
- "fetchDepth": "0",
- "gitLfsSupport": "false",
- "skipSyncSource": "true",
- "cleanOptions": "3",
- "checkoutNestedSubmodules": "false",
- "labelSourcesFormat": "$(build.buildNumber)"
- },
- "id": "c19ea379-feb7-4ca5-8f7f-5f2b5095ea62",
- "type": "TfsGit",
- "name": "DotNet-Core-Setup-Trusted",
- "url": "https://devdiv.visualstudio.com/DevDiv/_git/DotNet-Core-Setup-Trusted",
- "defaultBranch": "refs/heads/buildtools",
- "clean": "false",
- "checkoutSubmodules": false
- },
- "processParameters": {},
- "quality": "definition",
- "drafts": [],
- "queue": {
- "id": 36,
- "name": "DotNet-Build",
- "pool": {
- "id": 39,
- "name": "DotNet-Build"
- }
- },
- "id": 6057,
- "name": "Core-Setup-Linux-Arm-BT",
- "path": "\\",
- "type": "build",
- "queueStatus": "enabled",
- "project": {
- "id": "0bdbc590-a062-4c3f-b0f6-9383f67865ee",
- "name": "DevDiv",
- "description": "Visual Studio and DevDiv team project for git source code repositories. Work items will be added for Adams, Dev14 work items are tracked in vstfdevdiv. ",
- "url": "https://devdiv.visualstudio.com/DefaultCollection/_apis/projects/0bdbc590-a062-4c3f-b0f6-9383f67865ee",
- "state": "wellFormed",
- "revision": 418098432,
- "visibility": "organization"
- }
-}
\ No newline at end of file
diff --git a/buildpipeline/Core-Setup-Linux-BT.json b/buildpipeline/Core-Setup-Linux-BT.json
deleted file mode 100644
index 7fe0d56e5f..0000000000
--- a/buildpipeline/Core-Setup-Linux-BT.json
+++ /dev/null
@@ -1,963 +0,0 @@
-{
- "build": [
- {
- "environment": {},
- "enabled": true,
- "continueOnError": true,
- "displayName": "run begin.sh",
- "timeoutInMinutes": 0,
- "alwaysRun": true,
- "task": {
- "id": "10f1f9a1-74b0-47ab-87bf-e3c9c68e8b0d",
- "versionSpec": "0.*",
- "definitionType": "task"
- },
- "inputs": {
- "type": "InlineScript",
- "scriptPath": "",
- "args": "",
- "cwd": "",
- "failOnStandardError": "false",
- "script": "if [ -f \"$AGENTTOOLSPATH/begin.sh\" ]; then echo \"$AGENTTOOLSPATH/begin.sh script found. Executing...\"; $AGENTTOOLSPATH/begin.sh ; else echo \"$AGENTTOOLSPATH/begin.sh script does not exist. Moving on.\" ; fi"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": true,
- "alwaysRun": false,
- "displayName": "Cleanup previous build",
- "timeoutInMinutes": 0,
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "sudo",
- "arguments": "rm -dfr $(PB_SourcesDirectory)",
- "workingFolder": "",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Clone repo",
- "timeoutInMinutes": 0,
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "git",
- "arguments": "clone $(PB_VsoRepoUrl) $(PB_SourcesDirectory)",
- "workingFolder": "",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "git checkout",
- "timeoutInMinutes": 0,
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "git",
- "arguments": "checkout $(SourceVersion)",
- "workingFolder": "$(PB_SourcesDirectory)",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Create host machine tools sandbox",
- "timeoutInMinutes": 0,
- "task": {
- "id": "5bfb729a-a7c8-4a78-a7c3-8d717bb7c13c",
- "versionSpec": "2.*",
- "definitionType": "task"
- },
- "inputs": {
- "SourceFolder": "$(PB_SourcesDirectory)",
- "Contents": "init-tools.sh\nBuildToolsVersion.txt\nDotnetCLIVersion.txt\ninit-tools.msbuild",
- "TargetFolder": "$(PB_DockerHost_Sandbox)",
- "CleanTargetFolder": "false",
- "OverWrite": "false",
- "flattenFolders": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Initialize tools in sandbox for host machine",
- "timeoutInMinutes": 0,
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "$(PB_DockerHost_Sandbox)/init-tools.sh",
- "arguments": "",
- "workingFolder": "$(PB_DockerHost_Sandbox)",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Initialize docker",
- "timeoutInMinutes": 0,
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "$(PB_DockerHost_ToolsDirectory)/scripts/docker/init-docker.sh",
- "arguments": "$(PB_DockerImageName)",
- "workingFolder": "$(PB_DockerHost_Sandbox)",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Build",
- "timeoutInMinutes": 0,
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "docker",
- "arguments": "run --rm $(PB_CrossBuildArgs)$(DockerCommonRunArgs) $(PB_GitDirectory)/build.sh -OfficialBuildId=$(OfficialBuildId) $(PB_BuildArguments) -- $(PB_AdditionalMSBuildArguments)",
- "workingFolder": "$(PB_SourcesDirectory)",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Publish",
- "timeoutInMinutes": 0,
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "docker",
- "arguments": "run --privileged --rm $(DockerCommonRunArgs) $(PB_GitDirectory)/Tools/msbuild.sh $(PB_GitDirectory)/publish/publish.proj /p:PublishType=$(PB_PublishType) /p:AzureAccountName=$(PB_AzureAccountName) /p:ContainerName=$(PB_ContainerName) /p:AzureAccessToken=$(PB_AzureAccessToken) /p:ChecksumAzureAccountName=$(PB_ChecksumAzureAccountName) /p:ChecksumContainerName=$(PB_ChecksumContainerName) /p:ChecksumAzureAccessToken=$(PB_ChecksumAzureAccessToken) /p:TargetArchitecture=$(PB_TargetArchitecture) /p:ConfigurationGroup=$(BuildConfiguration) /p:PortableBuild=$(PB_PortableBuild) /p:OSGroup=Linux $(PB_AdditionalMSBuildArguments)",
- "workingFolder": "$(PB_SourcesDirectory)",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Copy built Portable binaries to staging directory",
- "timeoutInMinutes": 0,
- "task": {
- "id": "5bfb729a-a7c8-4a78-a7c3-8d717bb7c13c",
- "versionSpec": "2.*",
- "definitionType": "task"
- },
- "inputs": {
- "SourceFolder": "$(PB_SourcesDirectory)/Bin/obj/linux-x64.$(BuildConfiguration)/sharedFrameworkPublish",
- "Contents": "**",
- "TargetFolder": "$(Build.StagingDirectory)/sharedFrameworkPublish",
- "CleanTargetFolder": "false",
- "OverWrite": "false",
- "flattenFolders": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Initialize docker - Ubuntu14.04",
- "timeoutInMinutes": 0,
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "$(PB_DockerHost_ToolsDirectory)/scripts/docker/init-docker.sh",
- "arguments": "$(DockerImageName_Ubuntu1404)",
- "workingFolder": "$(PB_DockerHost_Sandbox)",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Clean - Ubuntu14.04",
- "timeoutInMinutes": 0,
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "docker",
- "arguments": "run --rm $(DockerCommonRunArgs_Ubuntu1404) /bin/bash $(DockerCommonCleanCommands)",
- "workingFolder": "",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Build traversal build dependencies - Ubuntu 14.04",
- "timeoutInMinutes": 0,
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "docker",
- "arguments": "run --rm $(DockerCommonRunArgs_Ubuntu1404) $(PB_GitDirectory)/Tools/msbuild.sh $(PB_GitDirectory)/build.proj /t:BuildTraversalBuildDependencies $(DistroSpecificMSBuildArguments) $(PB_AdditionalMSBuildArguments)",
- "workingFolder": "",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Package Runtime packages and Runtime Dep - Ubuntu 14.04",
- "timeoutInMinutes": 0,
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "docker",
- "arguments": "run --rm $(DockerCommonRunArgs_Ubuntu1404) $(PB_GitDirectory)/Tools/msbuild.sh $(PB_GitDirectory)/src/pkg/packaging/dir.proj $(AdditionalMSBuildPackagingArguments) $(DistroSpecificMSBuildArguments) $(PB_AdditionalMSBuildArguments)",
- "workingFolder": "",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Publish Runtime Dep - Ubuntu 14.04 ",
- "timeoutInMinutes": 0,
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "docker",
- "arguments": "run --rm $(DockerCommonRunArgs_Ubuntu1404) $(PB_GitDirectory)/Tools/msbuild.sh $(PB_GitDirectory)/publish/publish.proj /p:PublishType=$(PB_PublishType) $(DistroSpecificMSBuildArguments) $(DistroSpecificMSBuildPublishArgs) $(PB_AdditionalMSBuildArguments)",
- "workingFolder": "",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Initialize docker - Rhel7",
- "timeoutInMinutes": 0,
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "$(PB_DockerHost_ToolsDirectory)/scripts/docker/init-docker.sh",
- "arguments": "$(DockerImageName_Rhel7)",
- "workingFolder": "$(PB_DockerHost_Sandbox)",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Clean - Rhel7",
- "timeoutInMinutes": 0,
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "docker",
- "arguments": "run --rm $(DockerCommonRunArgs_Rhel7) /bin/bash $(DockerCommonCleanCommands)",
- "workingFolder": "",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Build traversal build dependencies - Rhel7",
- "timeoutInMinutes": 0,
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "docker",
- "arguments": "run --rm $(DockerCommonRunArgs_Rhel7) $(PB_GitDirectory)/Tools/msbuild.sh $(PB_GitDirectory)/build.proj /t:BuildTraversalBuildDependencies $(DistroSpecificMSBuildArguments) $(PB_AdditionalMSBuildArguments)",
- "workingFolder": "",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Package Runtime Dep - Rhel7",
- "timeoutInMinutes": 0,
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "docker",
- "arguments": "run --rm $(DockerCommonRunArgs_Rhel7) $(PB_GitDirectory)/Tools/msbuild.sh $(PB_GitDirectory)/src/pkg/packaging/dir.proj $(AdditionalMSBuildPackagingArguments) $(DistroSpecificMSBuildArguments) $(PB_AdditionalMSBuildArguments)",
- "workingFolder": "",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Publish Runtime Dep - Rhel7",
- "timeoutInMinutes": 0,
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "docker",
- "arguments": "$(CommonDockerCommandToPublishRuntimeDepRPMPackage) $(PB_AdditionalMSBuildArguments)",
- "workingFolder": "",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Package Runtime Dep - OpenSuse",
- "timeoutInMinutes": 0,
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "docker",
- "arguments": "$(CommonDockerCommandToBuildRuntimeDepRPMPackage) /p:OutputRid=opensuse.42-$(PB_TargetArchitecture) $(PB_AdditionalMSBuildArguments)",
- "workingFolder": "",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Publish Runtime Dep - OpenSuse",
- "timeoutInMinutes": 0,
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "docker",
- "arguments": "$(CommonDockerCommandToPublishRuntimeDepRPMPackage) /p:OutputRid=opensuse.42-$(PB_TargetArchitecture) $(PB_AdditionalMSBuildArguments)",
- "workingFolder": "",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Package Runtime Dep - Fedora 26",
- "timeoutInMinutes": 0,
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "docker",
- "arguments": "$(CommonDockerCommandToBuildRuntimeDepRPMPackage) /p:OutputRid=fedora.26-$(PB_TargetArchitecture) $(PB_AdditionalMSBuildArguments)",
- "workingFolder": "",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Publish Runtime Dep - Fedora 26",
- "timeoutInMinutes": 0,
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "docker",
- "arguments": "$(CommonDockerCommandToPublishRuntimeDepRPMPackage) /p:OutputRid=fedora.26-$(PB_TargetArchitecture) $(PB_AdditionalMSBuildArguments)",
- "workingFolder": "",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Package Runtime Dep - Fedora 27",
- "timeoutInMinutes": 0,
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "docker",
- "arguments": "$(CommonDockerCommandToBuildRuntimeDepRPMPackage) /p:OutputRid=fedora.27-$(PB_TargetArchitecture) $(PB_AdditionalMSBuildArguments)",
- "workingFolder": "",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Publish Runtime Dep - Fedora 27",
- "timeoutInMinutes": 0,
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "docker",
- "arguments": "$(CommonDockerCommandToPublishRuntimeDepRPMPackage) /p:OutputRid=fedora.27-$(PB_TargetArchitecture) $(PB_AdditionalMSBuildArguments)",
- "workingFolder": "",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Package Runtime Dep - Centos 7",
- "timeoutInMinutes": 0,
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "docker",
- "arguments": "$(CommonDockerCommandToBuildRuntimeDepRPMPackage) /p:OutputRid=centos.7-$(PB_TargetArchitecture) $(PB_AdditionalMSBuildArguments)",
- "workingFolder": "",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Publish Runtime Dep - Centos 7",
- "timeoutInMinutes": 0,
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "docker",
- "arguments": "$(CommonDockerCommandToPublishRuntimeDepRPMPackage) /p:OutputRid=centos.7-$(PB_TargetArchitecture) $(PB_AdditionalMSBuildArguments)",
- "workingFolder": "",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Package Runtime Dep - Oracle Linux 7",
- "timeoutInMinutes": 0,
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "docker",
- "arguments": "$(CommonDockerCommandToBuildRuntimeDepRPMPackage) /p:OutputRid=oraclelinux.7-$(PB_TargetArchitecture) $(PB_AdditionalMSBuildArguments)",
- "workingFolder": "",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Publish Runtime Dep - Oracle Linux 7",
- "timeoutInMinutes": 0,
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "docker",
- "arguments": "$(CommonDockerCommandToPublishRuntimeDepRPMPackage) /p:OutputRid=oraclelinux.7-$(PB_TargetArchitecture) $(PB_AdditionalMSBuildArguments)",
- "workingFolder": "",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Package Runtime Dep - SLES",
- "timeoutInMinutes": 0,
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "docker",
- "arguments": "$(CommonDockerCommandToBuildRuntimeDepRPMPackage) /p:OutputRid=sles.12-$(PB_TargetArchitecture) $(PB_AdditionalMSBuildArguments)",
- "workingFolder": "",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Publish Runtime Dep - SLES",
- "timeoutInMinutes": 0,
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "docker",
- "arguments": "$(CommonDockerCommandToPublishRuntimeDepRPMPackage) /p:OutputRid=sles.12-$(PB_TargetArchitecture) $(PB_AdditionalMSBuildArguments)",
- "workingFolder": "",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": true,
- "alwaysRun": false,
- "displayName": "Cleanup Docker",
- "timeoutInMinutes": 0,
- "condition": "always()",
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "perl",
- "arguments": "$(PB_DockerHost_ToolsDirectory)/scripts/docker/cleanup-docker.sh",
- "workingFolder": "",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": true,
- "alwaysRun": true,
- "displayName": "Copy Files to: $(Build.StagingDirectory)\\BuildLogs",
- "timeoutInMinutes": 0,
- "condition": "succeededOrFailed()",
- "task": {
- "id": "5bfb729a-a7c8-4a78-a7c3-8d717bb7c13c",
- "versionSpec": "2.*",
- "definitionType": "task"
- },
- "inputs": {
- "SourceFolder": "",
- "Contents": "**/*.log",
- "TargetFolder": "$(Build.StagingDirectory)\\BuildLogs",
- "CleanTargetFolder": "false",
- "OverWrite": "false",
- "flattenFolders": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": true,
- "alwaysRun": true,
- "displayName": "Publish Artifact: BuildLogs",
- "timeoutInMinutes": 0,
- "condition": "succeededOrFailed()",
- "task": {
- "id": "2ff763a7-ce83-4e1f-bc89-0ae63477cebe",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "PathtoPublish": "$(Build.StagingDirectory)\\BuildLogs",
- "ArtifactName": "BuildLogs",
- "ArtifactType": "Container",
- "TargetPath": "\\\\my\\share\\$(Build.DefinitionName)\\$(Build.BuildNumber)",
- "Parallel": "false",
- "ParallelCount": "8"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": true,
- "displayName": "run end.sh",
- "timeoutInMinutes": 0,
- "condition": "always()",
- "alwaysRun": true,
- "task": {
- "id": "10f1f9a1-74b0-47ab-87bf-e3c9c68e8b0d",
- "versionSpec": "0.*",
- "definitionType": "task"
- },
- "inputs": {
- "type": "InlineScript",
- "scriptPath": "",
- "args": "",
- "cwd": "",
- "failOnStandardError": "false",
- "script": "if [ -f \"$AGENTTOOLSPATH/end.sh\" ]; then echo \"$AGENTTOOLSPATH/end.sh script found. Executing...\"; $AGENTTOOLSPATH/end.sh ; else echo \"$AGENTTOOLSPATH/end.sh script does not exist. Moving on.\" ; fi"
- }
- }
- ],
- "options": [
- {
- "enabled": false,
- "definition": {
- "id": "5d58cc01-7c75-450c-be18-a388ddb129ec"
- },
- "inputs": {
- "branchFilters": "[\"+refs/heads/*\"]",
- "additionalFields": "{}"
- }
- },
- {
- "enabled": false,
- "definition": {
- "id": "a9db38f9-9fdc-478c-b0f9-464221e58316"
- },
- "inputs": {
- "workItemType": "234347",
- "assignToRequestor": "true",
- "additionalFields": "{}"
- }
- },
- {
- "enabled": false,
- "definition": {
- "id": "57578776-4c22-4526-aeb0-86b6da17ee9c"
- },
- "inputs": {
- "additionalFields": "{}"
- }
- }
- ],
- "variables": {
- "BuildConfiguration": {
- "value": "Release",
- "allowOverride": true
- },
- "PB_BuildArguments": {
- "value": "-ConfigurationGroup=$(BuildConfiguration) $(PB_AdditionalBuildArguments)",
- "allowOverride": true
- },
- "PB_ChecksumAzureAccountName": {
- "value": "dotnetclichecksums"
- },
- "PB_ChecksumContainerName": {
- "value": "dotnet"
- },
- "PB_ChecksumAzureAccessToken": {
- "value": null,
- "isSecret": true
- },
- "DOTNET_BUILD_CONTAINER_TAG": {
- "value": "core-setup-$(PB_DockerOS)-$(Build.BuildId)"
- },
- "PB_DockerOS": {
- "value": "debian8",
- "allowOverride": true
- },
- "PB_CleanAgent": {
- "value": "true"
- },
- "PB_DockerHost_ToolsDirectory": {
- "value": "$(PB_DockerHost_Sandbox)/Tools"
- },
- "PB_DockerImageName": {
- "value": "$(PB_DockerRepository):$(PB_DockerTag)"
- },
- "PB_DockerRepository": {
- "value": "microsoft/dotnet-buildtools-prereqs"
- },
- "PB_DockerContainerName": {
- "value": "coresetup-$(Build.BuildId)"
- },
- "PB_DockerTag": {
- "value": "ubuntu1404_prereqs_v3"
- },
- "OfficialBuildId": {
- "value": "$(Build.BuildNumber)"
- },
- "PB_GitDirectory": {
- "value": "/root/coresetup"
- },
- "SourceVersion": {
- "value": "HEAD"
- },
- "ROOTFS_DIR": {
- "value": "/crossrootfs/$(PB_TargetArchitecture)"
- },
- "PB_CrossBuildArgs": {
- "value": "",
- "allowOverride": true
- },
- "DockerCommonRunArgs": {
- "value": "--name $(PB_DockerContainerName) -v \"$(PB_SourcesDirectory):$(PB_GitDirectory)\" -w=\"$(PB_GitDirectory)\" -e \"PACKAGEVERSIONPROPSURL=$(PB_PackageVersionPropsUrl)\" $(PB_DockerImageName)"
- },
- "PB_VsoRepoUrl": {
- "value": "--branch $(PB_Branch) https://$(PB_VsoAccountName):$(PB_VsoPassword)@devdiv.visualstudio.com/DevDiv/_git/DotNet-Core-Setup-Trusted"
- },
- "PB_VsoAccountName": {
- "value": "dn-bot"
- },
- "PB_VsoPassword": {
- "value": null,
- "isSecret": true
- },
- "PB_SourcesDirectory": {
- "value": "$(Build.SourcesDirectory)/core-setup"
- },
- "PB_Branch": {
- "value": "master"
- },
- "PB_DockerHost_Sandbox": {
- "value": "$(Build.StagingDirectory)/HostSandbox"
- },
- "PB_AzureAccountName": {
- "value": "sourcebuild"
- },
- "PB_ContainerName": {
- "value": "dotnet"
- },
- "PB_AzureAccessToken": {
- "value": null,
- "isSecret": true
- },
- "PB_TargetArchitecture": {
- "value": "x64"
- },
- "PB_AdditionalBuildArguments": {
- "value": ""
- },
- "PB_PortableBuild": {
- "value": "false"
- },
- "AdditionalMSBuildPackagingArguments": {
- "value": "/p:UsePrebuiltPortableBinariesForInstallers=true /p:SharedFrameworkPublishDir=/root/sharedFrameworkPublish/"
- },
- "PB_AdditionalMSBuildArguments": {
- "value": ""
- },
- "DistroSpecificMSBuildArguments": {
- "value": "/flp:v=diag /clp:v=detailed /p:TargetArchitecture=$(PB_TargetArchitecture) /p:PortableBuild=false /p:ConfigurationGroup=$(BuildConfiguration) /p:OSGroup=Linux /p:OfficialBuildId=$(OfficialBuildId)"
- },
- "DistroSpecificMSBuildPublishArgs": {
- "value": "/p:AzureAccountName=$(PB_AzureAccountName) /p:ContainerName=$(PB_ContainerName) /p:AzureAccessToken=$(PB_AzureAccessToken) /p:ChecksumAzureAccountName=$(PB_ChecksumAzureAccountName) /p:ChecksumContainerName=$(PB_ChecksumContainerName) /p:ChecksumAzureAccessToken=$(PB_ChecksumAzureAccessToken)"
- },
- "DockerTag_Ubuntu1404": {
- "value": "ubuntu-14.04-debpkg-e5cf912-20175003025046"
- },
- "DockerImageName_Ubuntu1404": {
- "value": "$(PB_DockerRepository):$(DockerTag_Ubuntu1404)"
- },
- "DockerCommonRunArgs_Ubuntu1404": {
- "value": "--name $(PB_DockerContainerName)$(DockerTag_Ubuntu1404) -v \"$(PB_SourcesDirectory):$(PB_GitDirectory)\" -v $(Build.StagingDirectory)/sharedFrameworkPublish/:/root/sharedFrameworkPublish/ -w=\"$(PB_GitDirectory)\" $(DockerImageName_Ubuntu1404)"
- },
- "DockerTag_Rhel7": {
- "value": "rhel-7-rpmpkg-c982313-20174116044113"
- },
- "DockerImageName_Rhel7": {
- "value": "$(PB_DockerRepository):$(DockerTag_Rhel7)"
- },
- "DockerCommonRunArgs_Rhel7": {
- "value": "--name $(PB_DockerContainerName)$(DockerTag_Rhel7) -v \"$(PB_SourcesDirectory):$(PB_GitDirectory)\" -v $(Build.StagingDirectory)/sharedFrameworkPublish/:/root/sharedFrameworkPublish/ -w=\"$(PB_GitDirectory)\" $(DockerImageName_Rhel7)"
- },
- "PB_PackageVersionPropsUrl": {
- "value": "",
- "isSecret": true
- },
- "PB_RestoreSource": {
- "value": "",
- "isSecret": true
- },
- "PB_AssetRootUrl": {
- "value": "",
- "isSecret": true
- },
- "DockerCommonCleanCommands": {
- "value": "-c \"HOME=$(PB_GitDirectory); $(PB_GitDirectory)/clean.sh\""
- },
- "CommonDockerCommandToBuildRuntimeDepDebPackage": {
- "value": "run --rm $(DockerCommonRunArgs_Ubuntu1404) $(PB_GitDirectory)/Tools/msbuild.sh $(PB_GitDirectory)/src/pkg/packaging/dir.proj $(AdditionalMSBuildPackagingArguments) $(DistroSpecificMSBuildArguments) /p:BuildRuntimeDebs=false"
- },
- "CommonDockerCommandToPublishRuntimeDepDebPackage": {
- "value": "run --rm $(DockerCommonRunArgs_Ubuntu1404) $(PB_GitDirectory)/Tools/msbuild.sh $(PB_GitDirectory)/publish/publish.proj /p:PublishType=$(PB_PublishType) $(DistroSpecificMSBuildArguments) $(DistroSpecificMSBuildPublishArgs)"
- },
- "CommonDockerCommandToBuildRuntimeDepRPMPackage": {
- "value": "run --rm $(DockerCommonRunArgs_Rhel7) $(PB_GitDirectory)/Tools/msbuild.sh $(PB_GitDirectory)/src/pkg/packaging/dir.proj $(AdditionalMSBuildPackagingArguments) $(DistroSpecificMSBuildArguments) /p:BuildRuntimeRpms=false"
- },
- "CommonDockerCommandToPublishRuntimeDepRPMPackage": {
- "value": "run --rm $(DockerCommonRunArgs_Rhel7) $(PB_GitDirectory)/Tools/msbuild.sh $(PB_GitDirectory)/publish/publish.proj /p:PublishType=$(PB_PublishType) $(DistroSpecificMSBuildArguments) $(DistroSpecificMSBuildPublishArgs)"
- }
- },
- "demands": [
- "Agent.OS -equals linux"
- ],
- "retentionRules": [
- {
- "branches": [
- "+refs/heads/*"
- ],
- "artifacts": [],
- "artifactTypesToDelete": [
- "FilePath",
- "SymbolStore"
- ],
- "daysToKeep": 2,
- "minimumToKeep": 10,
- "deleteBuildRecord": true,
- "deleteTestResults": true
- }
- ],
- "buildNumberFormat": "$(date:yyyyMMdd)$(rev:-rr)",
- "jobAuthorizationScope": "projectCollection",
- "jobTimeoutInMinutes": 90,
- "jobCancelTimeoutInMinutes": 5,
- "badgeEnabled": true,
- "repository": {
- "properties": {
- "labelSources": "0",
- "reportBuildStatus": "true",
- "fetchDepth": "0",
- "gitLfsSupport": "false",
- "skipSyncSource": "true",
- "cleanOptions": "3",
- "checkoutNestedSubmodules": "false",
- "labelSourcesFormat": "$(build.buildNumber)"
- },
- "id": "c19ea379-feb7-4ca5-8f7f-5f2b5095ea62",
- "type": "TfsGit",
- "name": "DotNet-Core-Setup-Trusted",
- "url": "https://devdiv.visualstudio.com/DevDiv/_git/DotNet-Core-Setup-Trusted",
- "defaultBranch": "refs/heads/buildtools",
- "clean": "false",
- "checkoutSubmodules": false
- },
- "processParameters": {},
- "quality": "definition",
- "drafts": [],
- "queue": {
- "id": 36,
- "name": "DotNet-Build",
- "pool": {
- "id": 39,
- "name": "DotNet-Build"
- }
- },
- "id": 6057,
- "name": "Core-Setup-Linux-BT",
- "path": "\\",
- "type": "build",
- "queueStatus": "enabled",
- "project": {
- "id": "0bdbc590-a062-4c3f-b0f6-9383f67865ee",
- "name": "DevDiv",
- "description": "Visual Studio and DevDiv team project for git source code repositories. Work items will be added for Adams, Dev14 work items are tracked in vstfdevdiv. ",
- "url": "https://devdiv.visualstudio.com/DefaultCollection/_apis/projects/0bdbc590-a062-4c3f-b0f6-9383f67865ee",
- "state": "wellFormed",
- "revision": 418098432,
- "visibility": "organization"
- }
-}
\ No newline at end of file
diff --git a/buildpipeline/Core-Setup-OSX-BT.json b/buildpipeline/Core-Setup-OSX-BT.json
deleted file mode 100644
index 4fd8857d27..0000000000
--- a/buildpipeline/Core-Setup-OSX-BT.json
+++ /dev/null
@@ -1,329 +0,0 @@
-{
- "build": [
- {
- "environment": {},
- "enabled": true,
- "continueOnError": true,
- "displayName": "run begin.sh",
- "timeoutInMinutes": 0,
- "alwaysRun": true,
- "task": {
- "id": "10f1f9a1-74b0-47ab-87bf-e3c9c68e8b0d",
- "versionSpec": "0.*",
- "definitionType": "task"
- },
- "inputs": {
- "type": "InlineScript",
- "scriptPath": "",
- "args": "",
- "cwd": "",
- "failOnStandardError": "false",
- "script": "if [ -f \"$AGENTTOOLSPATH/begin.sh\" ]; then echo \"$AGENTTOOLSPATH/begin.sh script found. Executing...\"; $AGENTTOOLSPATH/begin.sh ; else echo \"$AGENTTOOLSPATH/begin.sh script does not exist. Moving on.\" ; fi"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": true,
- "alwaysRun": false,
- "displayName": "Cleanup previous build",
- "timeoutInMinutes": 0,
- "refName": "Task1",
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "rm",
- "arguments": "-dfr $(PB_SourcesDirectory)",
- "workingFolder": "",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Clone repo",
- "timeoutInMinutes": 0,
- "refName": "Task2",
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "git",
- "arguments": "clone $(PB_VsoRepoUrl) $(PB_SourcesDirectory)",
- "workingFolder": "",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "git checkout",
- "timeoutInMinutes": 0,
- "refName": "Task3",
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "git",
- "arguments": "checkout $(SourceVersion)",
- "workingFolder": "$(PB_SourcesDirectory)",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {
- "PACKAGEVERSIONPROPSURL":"$(PB_PackageVersionPropsUrl)"
- },
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Build",
- "timeoutInMinutes": 0,
- "refName": "Task4",
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "$(PB_SourcesDirectory)/build.sh",
- "arguments": "-OfficialBuildId=$(OfficialBuildId) $(PB_BuildArguments) -- $(PB_AdditionalMSBuildArguments)",
- "workingFolder": "$(PB_SourcesDirectory)",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Publish",
- "timeoutInMinutes": 0,
- "refName": "Task5",
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "$(PB_SourcesDirectory)/Tools/msbuild.sh",
- "arguments": "$(PB_SourcesDirectory)/publish/publish.proj /p:PublishType=$(PB_PublishType) /p:AzureAccountName=$(PB_AzureAccountName) /p:ContainerName=$(PB_ContainerName) /p:AzureAccessToken=$(PB_AzureAccessToken) /p:ChecksumAzureAccountName=$(PB_ChecksumAzureAccountName) /p:ChecksumContainerName=$(PB_ChecksumContainerName) /p:ChecksumAzureAccessToken=$(PB_ChecksumAzureAccessToken) /p:TargetArchitecture=$(PB_TargetArchitecture) /p:ConfigurationGroup=$(BuildConfiguration) /p:PortableBuild=$(PB_PortableBuild) /p:OSGroup=OSX $(PB_AdditionalMSBuildArguments)",
- "workingFolder": "$(PB_SourcesDirectory)",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": true,
- "displayName": "run end.sh",
- "timeoutInMinutes": 0,
- "condition": "always()",
- "alwaysRun": true,
- "task": {
- "id": "10f1f9a1-74b0-47ab-87bf-e3c9c68e8b0d",
- "versionSpec": "0.*",
- "definitionType": "task"
- },
- "inputs": {
- "type": "InlineScript",
- "scriptPath": "",
- "args": "",
- "cwd": "",
- "failOnStandardError": "false",
- "script": "if [ -f \"$AGENTTOOLSPATH/end.sh\" ]; then echo \"$AGENTTOOLSPATH/end.sh script found. Executing...\"; $AGENTTOOLSPATH/end.sh ; else echo \"$AGENTTOOLSPATH/end.sh script does not exist. Moving on.\" ; fi"
- }
- }
- ],
- "options": [
- {
- "enabled": false,
- "definition": {
- "id": "5d58cc01-7c75-450c-be18-a388ddb129ec"
- },
- "inputs": {
- "branchFilters": "[\"+refs/heads/*\"]",
- "additionalFields": "{}"
- }
- },
- {
- "enabled": false,
- "definition": {
- "id": "a9db38f9-9fdc-478c-b0f9-464221e58316"
- },
- "inputs": {
- "workItemType": "234347",
- "assignToRequestor": "true",
- "additionalFields": "{}"
- }
- },
- {
- "enabled": false,
- "definition": {
- "id": "57578776-4c22-4526-aeb0-86b6da17ee9c"
- },
- "inputs": {
- "additionalFields": "{}"
- }
- }
- ],
- "variables": {
- "BuildConfiguration": {
- "value": "Release",
- "allowOverride": true
- },
- "PB_BuildArguments": {
- "value": "-ConfigurationGroup=$(BuildConfiguration) $(PB_AdditionalBuildArguments)",
- "allowOverride": true
- },
- "GITHUB_PASSWORD": {
- "value": "PassedViaPipeBuild"
- },
- "PB_CleanAgent": {
- "value": "true"
- },
- "PB_SourcesDirectory": {
- "value": "$(Build.SourcesDirectory)/core-setup"
- },
- "PB_Branch": {
- "value": "master"
- },
- "PB_AzureAccountName": {
- "value": "sourcebuild"
- },
- "PB_ContainerName": {
- "value": "dotnet"
- },
- "PB_AzureAccessToken": {
- "value": null,
- "isSecret": true
- },
- "PB_ChecksumAzureAccountName": {
- "value": "dotnetclichecksums"
- },
- "PB_ChecksumContainerName": {
- "value": "dotnet"
- },
- "PB_ChecksumAzureAccessToken": {
- "value": null,
- "isSecret": true
- },
- "PB_VsoRepoUrl": {
- "value": "--branch $(PB_Branch) https://$(PB_VsoAccountName):$(PB_VsoPassword)@devdiv.visualstudio.com/DevDiv/_git/DotNet-Core-Setup-Trusted"
- },
- "PB_VsoAccountName": {
- "value": "dn-bot"
- },
- "PB_VsoPassword": {
- "value": null,
- "isSecret": true
- },
- "SourceVersion": {
- "value": "HEAD"
- },
- "OfficialBuildId": {
- "value": "$(Build.BuildNumber)"
- },
- "PB_TargetArchitecture": {
- "value": "x64"
- },
- "PB_AdditionalBuildArguments": {
- "value": ""
- },
- "PB_AdditionalMSBuildArguments": {
- "value": ""
- },
- "PB_PortableBuild": {
- "value": "true"
- },
- "PB_PackageVersionPropsUrl": {
- "value": "",
- "isSecret": true
- },
- "PB_RestoreSource": {
- "value": "",
- "isSecret": true
- },
- "PB_AssetRootUrl": {
- "value": "",
- "isSecret": true
- }
- },
- "demands": [],
- "retentionRules": [
- {
- "branches": [
- "+refs/heads/*"
- ],
- "artifacts": [],
- "artifactTypesToDelete": [
- "FilePath",
- "SymbolStore"
- ],
- "daysToKeep": 2,
- "minimumToKeep": 1,
- "deleteBuildRecord": true,
- "deleteTestResults": true
- }
- ],
- "buildNumberFormat": "$(date:yyyyMMdd)$(rev:-rr)",
- "jobAuthorizationScope": "projectCollection",
- "jobTimeoutInMinutes": 90,
- "jobCancelTimeoutInMinutes": 5,
- "badgeEnabled": true,
- "repository": {
- "properties": {
- "labelSources": "0",
- "reportBuildStatus": "true",
- "fetchDepth": "0",
- "gitLfsSupport": "false",
- "skipSyncSource": "true",
- "cleanOptions": "0",
- "checkoutNestedSubmodules": "false",
- "labelSourcesFormat": "$(build.buildNumber)"
- },
- "id": "c19ea379-feb7-4ca5-8f7f-5f2b5095ea62",
- "type": "TfsGit",
- "name": "DotNet-Core-Setup-Trusted",
- "url": "https://devdiv.visualstudio.com/DevDiv/_git/DotNet-Core-Setup-Trusted",
- "defaultBranch": "refs/heads/buildtools",
- "clean": "false",
- "checkoutSubmodules": false
- },
- "processParameters": {},
- "quality": "definition",
- "drafts": [],
- "queue": {
- "id": 681,
- "name": "VSEng-MicroBuildMacSierra",
- "pool": {
- "id": 120,
- "name": "VSEng-MicroBuildMacSierra"
- }
- },
- "id": 6192,
- "name": "Core-Setup-OSX-BT",
- "path": "\\",
- "type": "build",
- "queueStatus": "enabled",
- "project": {
- "id": "0bdbc590-a062-4c3f-b0f6-9383f67865ee",
- "name": "DevDiv",
- "description": "Visual Studio and DevDiv team project for git source code repositories. Work items will be added for Adams, Dev14 work items are tracked in vstfdevdiv. ",
- "url": "https://devdiv.visualstudio.com/DefaultCollection/_apis/projects/0bdbc590-a062-4c3f-b0f6-9383f67865ee",
- "state": "wellFormed",
- "revision": 418098432,
- "visibility": "organization"
- }
-}
\ No newline at end of file
diff --git a/buildpipeline/Core-Setup-Publish.json b/buildpipeline/Core-Setup-Publish.json
deleted file mode 100644
index 1bec779dad..0000000000
--- a/buildpipeline/Core-Setup-Publish.json
+++ /dev/null
@@ -1,575 +0,0 @@
-{
- "build": [
- {
- "environment": {},
- "enabled": true,
- "continueOnError": true,
- "displayName": "run begin.ps1",
- "timeoutInMinutes": 0,
- "alwaysRun": true,
- "task": {
- "id": "e213ff0f-5d5c-4791-802d-52ea3e7be1f1",
- "versionSpec": "2.*",
- "definitionType": "task"
- },
- "inputs": {
- "targetType": "inline",
- "filePath": "",
- "arguments": "",
- "script": "if (Test-Path \"$Env:AgentToolsPath\\begin.ps1\") {\n \"$Env:AgentToolsPath\\begin.ps1 script found. Executing...\"\n & $Env:AgentToolsPath\\begin.ps1\n} else {\n \"$Env:AgentToolsPath\\begin.ps1 script does not exist. Moving on...\"\n}",
- "errorActionPreference": "continue",
- "failOnStderr": "false",
- "ignoreLASTEXITCODE": "true",
- "workingDirectory": ""
- }
- },
- {
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Install Signing Plugin",
- "timeoutInMinutes": 0,
- "condition": "and(succeeded(), in(variables.PB_SignType, 'real', 'test'))",
- "task": {
- "id": "30666190-6959-11e5-9f96-f56098202fef",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "signType": "real",
- "zipSources": "true",
- "version": "",
- "feedSource": "https://devdiv.pkgs.visualstudio.com/DefaultCollection/_packaging/MicroBuildToolset/nuget/v3/index.json"
- }
- },
- {
- "enabled": true,
- "continueOnError": true,
- "alwaysRun": false,
- "displayName": "Cleanup previous build if present",
- "timeoutInMinutes": 0,
- "task": {
- "id": "e213ff0f-5d5c-4791-802d-52ea3e7be1f1",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "scriptType": "inlineScript",
- "scriptName": "",
- "arguments": "-path \"$(PB_SourcesDirectory)\"",
- "workingFolder": "",
- "inlineScript": "param($path)\n\nif (Test-Path $path){\n # this will print out an error each time a file can't be deleted.\n Remove-Item -Recurse -Force $path\n }\n\nif (Test-Path $path){\n # in case vbcs is still alive\n $p = Get-Process -Name \"VBCS\"\n Stop-Process -InputObject $p\n }",
- "failOnStandardError": "true"
- }
- },
- {
- "enabled": true,
- "continueOnError": true,
- "alwaysRun": false,
- "displayName": "Cleanup previous tools source if present",
- "timeoutInMinutes": 0,
- "task": {
- "id": "e213ff0f-5d5c-4791-802d-52ea3e7be1f1",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "scriptType": "inlineScript",
- "scriptName": "",
- "arguments": "-path \"$(PB_VsoToolsDir)\"",
- "workingFolder": "",
- "inlineScript": "param($path)\n\nif (Test-Path $path){\n # this will print out an error each time a file can't be deleted.\n Remove-Item -Recurse -Force $path\n }\n\nif (Test-Path $path){\n # in case vbcs is still alive\n $p = Get-Process -Name \"VBCS\"\n Stop-Process -InputObject $p\n }",
- "failOnStandardError": "true"
- }
- },
- {
- "enabled": true,
- "continueOnError": true,
- "alwaysRun": false,
- "displayName": "Cleanup previous tools if present",
- "timeoutInMinutes": 0,
- "task": {
- "id": "e213ff0f-5d5c-4791-802d-52ea3e7be1f1",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "scriptType": "inlineScript",
- "scriptName": "",
- "arguments": "-path \"$(PB_ToolsRoot)\"",
- "workingFolder": "",
- "inlineScript": "param($path)\n\nif (Test-Path $path){\n # this will print out an error each time a file can't be deleted.\n Remove-Item -Recurse -Force $path\n }\n\nif (Test-Path $path){\n # in case vbcs is still alive\n $p = Get-Process -Name \"VBCS\"\n Stop-Process -InputObject $p\n }",
- "failOnStandardError": "true"
- }
- },
- {
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Run script $(VS140COMNTOOLS)\\VsDevCmd.bat",
- "timeoutInMinutes": 0,
- "task": {
- "id": "bfc8bf76-e7ac-4a8c-9a55-a944a9f632fd",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "$(VS140COMNTOOLS)\\VsDevCmd.bat",
- "arguments": "",
- "modifyEnvironment": "true",
- "workingFolder": "",
- "failOnStandardError": "false"
- }
- },
- {
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Clone tools",
- "timeoutInMinutes": 0,
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "git",
- "arguments": "clone $(PB_VsoToolsRepo) $(PB_VsoToolsDir)",
- "workingFolder": "",
- "failOnStandardError": "false"
- }
- },
- {
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Clone repo",
- "timeoutInMinutes": 0,
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "git",
- "arguments": "clone $(PB_VsoRepoUrl) $(PB_SourcesDirectory)",
- "workingFolder": "",
- "failOnStandardError": "false"
- }
- },
- {
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "git checkout",
- "timeoutInMinutes": 0,
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "git",
- "arguments": "checkout $(SourceVersion)",
- "workingFolder": "$(PB_SourcesDirectory)",
- "failOnStandardError": "false"
- }
- },
- {
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Run init-tools.cmd",
- "timeoutInMinutes": 0,
- "task": {
- "id": "bfc8bf76-e7ac-4a8c-9a55-a944a9f632fd",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "$(PB_SourcesDirectory)\\init-tools.cmd",
- "arguments": "",
- "modifyEnvironment": "false",
- "workingFolder": "$(PB_SourcesDirectory)",
- "failOnStandardError": "false"
- }
- },
- {
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Initialize tooling",
- "timeoutInMinutes": 0,
- "task": {
- "id": "c6c4c611-aa2e-4a33-b606-5eaba2196824",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "solution": "$(PB_SourcesDirectory)\\build.proj",
- "platform": "$(PB_TargetArchitecture)",
- "configuration": "$(BuildConfiguration)",
- "msbuildArguments": "/t:BuildTraversalBuildDependencies",
- "clean": "false",
- "maximumCpuCount": "false",
- "restoreNugetPackages": "false",
- "logProjectEvents": "false",
- "createLogFile": "false",
- "msbuildLocationMethod": "version",
- "msbuildVersion": "Latest",
- "msbuildArchitecture": "x64",
- "msbuildLocation": ""
- }
- },
- {
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Publish (no PublishType)",
- "condition": "and(succeeded(), eq(variables.PB_PublishType, 'nopublishtype'))",
- "timeoutInMinutes": 0,
- "task": {
- "id": "c6c4c611-aa2e-4a33-b606-5eaba2196824",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "solution": "$(PB_SourcesDirectory)\\publish\\publish.proj",
- "platform": "$(PB_TargetArchitecture)",
- "configuration": "$(BuildConfiguration)",
- "msbuildArguments": "/p:Configuration=$(BuildConfiguration) $(PB_CommonMSBuildArgs) /p:PublishType=$(PB_PublishType) /p:SignType=$(PB_SignType) /p:NuGetFeedUrl=$(NUGET_FEED_URL) /p:NuGetSymbolsFeedUrl=$(NUGET_SYMBOLS_FEED_URL) /p:NuGetApiKey=$(NUGET_API_KEY) /p:AzureAccountName=$(PB_AzureAccountName) /p:ContainerName=$(PB_ContainerName) /p:AzureAccessToken=$(PB_AzureAccessToken) /p:ChecksumAzureAccountName=$(PB_ChecksumAzureAccountName) /p:ChecksumContainerName=$(PB_ChecksumContainerName) /p:ChecksumAzureAccessToken=$(PB_ChecksumAzureAccessToken) /p:PackagesUrl=$(PB_PackagesUrl) /p:SymbolPackagesUrl=$(PB_SymbolPackagesUrl) /p:TransportFeedAccessToken=$(PB_TransportFeedAccessToken) /p:OfficialPublish=true /p:GitHubUser=$(PB_GitHubUser) /p:GitHubEmail=$(PB_GitHubEmail) /p:GitHubAuthToken=$(GITHUB_PASSWORD) /p:VersionsRepoOwner=$(PB_VersionsRepoOwner) /p:VersionsRepo=$(PB_VersionsRepo) /p:VersionsRepoPath=build-info/dotnet/$(PB_RepoName)/$(SourceBranch) /p:Finalize=true /p:SymbolServerPath=$(PB_SymbolServerPath) /p:SymbolServerPAT=$(PB_SymbolServerPAT) /p:SymbolExpirationInDays=$(PB_SymbolExpirationInDays) /flp:v=detailed;LogFile=$(PB_SourcesDirectory)\\publish.log $(PB_AdditionalMSBuildArguments)",
- "clean": "false",
- "maximumCpuCount": "false",
- "restoreNugetPackages": "false",
- "logProjectEvents": "false",
- "createLogFile": "false",
- "msbuildLocationMethod": "version",
- "msbuildVersion": "Latest",
- "msbuildArchitecture": "x64",
- "msbuildLocation": ""
- }
- },
- {
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Publish via PublishType",
- "condition": "and(succeeded(), ne(variables.PB_PublishType, ''))",
- "timeoutInMinutes": 0,
- "task": {
- "id": "c6c4c611-aa2e-4a33-b606-5eaba2196824",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "solution": "$(PB_SourcesDirectory)\\publish\\publish-type.proj",
- "platform": "$(PB_TargetArchitecture)",
- "configuration": "$(BuildConfiguration)",
- "msbuildArguments": "/p:Configuration=$(BuildConfiguration) $(PB_CommonMSBuildArgs) $(PB_BuildOutputManifestArguments) /p:PublishType=$(PB_PublishType) /p:SignType=$(PB_SignType) /p:AzureAccountName=$(PB_AzureAccountName) /p:ContainerName=$(PB_ContainerName) /p:AzureAccessToken=$(PB_AzureAccessToken) /p:PublishBlobFeedUrl=$(PB_PublishBlobFeedUrl) /p:PublishBlobFeedKey=$(PB_PublishBlobFeedKey) /p:OfficialPublish=true /p:GitHubUser=$(PB_GitHubUser) /p:GitHubEmail=$(PB_GitHubEmail) /p:GitHubAuthToken=$(GITHUB_PASSWORD) /p:VersionsRepoOwner=$(PB_VersionsRepoOwner) /p:VersionsRepo=$(PB_VersionsRepo) /p:VersionsRepoPath=build-info/dotnet/$(PB_RepoName)/$(SourceBranch) /flp:v=detailed;LogFile=$(PB_SourcesDirectory)\\publish-blob.log $(PB_AdditionalMSBuildArguments)",
- "clean": "false",
- "maximumCpuCount": "false",
- "restoreNugetPackages": "false",
- "logProjectEvents": "false",
- "createLogFile": "false",
- "msbuildLocationMethod": "version",
- "msbuildVersion": "Latest",
- "msbuildArchitecture": "x64",
- "msbuildLocation": ""
- }
- },
- {
- "enabled": true,
- "continueOnError": true,
- "alwaysRun": false,
- "displayName": "Perform Cleanup Tasks",
- "timeoutInMinutes": 0,
- "task": {
- "id": "521a94ea-9e68-468a-8167-6dcf361ea776",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {}
- },
- {
- "enabled": false,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Publish Build Artifacts",
- "timeoutInMinutes": 0,
- "task": {
- "id": "bfc8bf76-e7ac-4a8c-9a55-a944a9f632fd",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "build.cmd",
- "arguments": "-Configuration $(BuildConfiguration) -Targets Prepare,Publish",
- "modifyEnvironment": "false",
- "workingFolder": "",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": true,
- "alwaysRun": true,
- "displayName": "run end.ps1",
- "timeoutInMinutes": 0,
- "condition": "always()",
- "task": {
- "id": "e213ff0f-5d5c-4791-802d-52ea3e7be1f1",
- "versionSpec": "2.*",
- "definitionType": "task"
- },
- "inputs": {
- "targetType": "inline",
- "filePath": "",
- "arguments": "",
- "script": "if (Test-Path \"$Env:AgentToolsPath\\end.ps1\") {\n \"$Env:AgentToolsPath\\end.ps1 script found. Executing...\"\n & $Env:AgentToolsPath\\end.ps1\n} else {\n \"$Env:AgentToolsPath\\end.ps1 script does not exist. Moving on...\"\n}",
- "errorActionPreference": "continue",
- "failOnStderr": "false",
- "ignoreLASTEXITCODE": "true",
- "workingDirectory": ""
- }
- }
- ],
- "options": [
- {
- "enabled": false,
- "definition": {
- "id": "5bc3cfb7-6b54-4a4b-b5d2-a3905949f8a6"
- },
- "inputs": {
- "additionalFields": "{}"
- }
- },
- {
- "enabled": false,
- "definition": {
- "id": "7c555368-ca64-4199-add6-9ebaf0b0137d"
- },
- "inputs": {
- "multipliers": "[]",
- "parallel": "false",
- "continueOnError": "true",
- "additionalFields": "{}"
- }
- },
- {
- "enabled": false,
- "definition": {
- "id": "a9db38f9-9fdc-478c-b0f9-464221e58316"
- },
- "inputs": {
- "workItemType": "4777",
- "assignToRequestor": "true",
- "additionalFields": "{}"
- }
- },
- {
- "enabled": false,
- "definition": {
- "id": "57578776-4c22-4526-aeb0-86b6da17ee9c"
- },
- "inputs": {
- "additionalFields": "{}"
- }
- }
- ],
- "variables": {
- "BuildConfiguration": {
- "value": "Release",
- "allowOverride": true
- },
- "NUGET_FEED_URL": {
- "value": "https:%2F%2Fdotnet.myget.org/F/dotnet-core/api/v2/package"
- },
- "NUGET_API_KEY": {
- "value": null,
- "isSecret": true
- },
- "GITHUB_PASSWORD": {
- "value": null,
- "isSecret": true
- },
- "NUGET_SYMBOLS_FEED_URL": {
- "value": "https:%2F%2Fdotnet.myget.org/F/dotnet-core/symbols/api/v2/package"
- },
- "PB_SourcesDirectory": {
- "value": "$(Build.SourcesDirectory)\\core-setup"
- },
- "PB_VsoRepoUrl": {
- "value": "--branch $(SourceBranch) https://$(PB_VsoAccountName):$(PB_VsoPassword)@devdiv.visualstudio.com/DevDiv/_git/DotNet-Core-Setup-Trusted"
- },
- "PB_AzureAccountName": {
- "value": "dotnetcli"
- },
- "PB_ContainerName": {
- "value": "dotnet"
- },
- "PB_AzureAccessToken": {
- "value": null,
- "isSecret": true
- },
- "PB_TransportFeedAccountName": {
- "value": "dotnetfeed"
- },
- "PB_TransportFeedContainerName": {
- "value": "dotnet-core"
- },
- "PB_TransportFeedAccessToken": {
- "value": null,
- "isSecret": true
- },
- "PB_PackagesUrl": {
- "value": "https://$(PB_TransportFeedAccountName).blob.core.windows.net/$(PB_TransportFeedContainerName)/index.json"
- },
- "PB_SymbolPackagesUrl": {
- "value": "https://$(PB_TransportFeedAccountName).blob.core.windows.net/$(PB_TransportFeedContainerName)/index.json"
- },
- "PB_ChecksumAzureAccountName": {
- "value": "dotnetclichecksums"
- },
- "PB_ChecksumContainerName": {
- "value": "dotnet"
- },
- "PB_ChecksumAzureAccessToken": {
- "value": null,
- "isSecret": true
- },
- "PB_VsoAccountName": {
- "value": "dn-bot"
- },
- "PB_VsoPassword": {
- "value": null,
- "isSecret": true
- },
- "SourceVersion": {
- "value": "HEAD"
- },
- "PB_CommonMSBuildArgs": {
- "value": "/p:ConfigurationGroup=$(BuildConfiguration) /p:TargetArchitecture=$(PB_TargetArchitecture)"
- },
- "OfficialBuildId": {
- "value": "$(Build.BuildNumber)"
- },
- "PB_TargetArchitecture": {
- "value": "x64",
- "allowOverride": true
- },
- "PB_GitHubUser": {
- "value": "dotnet-build-bot"
- },
- "PB_VersionsRepoOwner": {
- "value": "dotnet"
- },
- "PB_VersionsRepo": {
- "value": "versions"
- },
- "PB_RepoName": {
- "value": "core-setup"
- },
- "PB_GitHubEmail": {
- "value": "dotnet-build-bot@microsoft.com"
- },
- "PB_CleanAgent": {
- "value": "true"
- },
- "TeamName": {
- "value": "DotNetCore"
- },
- "PB_VsoToolsRepo": {
- "value": "https://$(PB_VsoAccountName):$(PB_VsoPassword)@devdiv.visualstudio.com/DevDiv/_git/DotNet-BuildPipeline"
- },
- "PB_VsoToolsDir": {
- "value": "$(Build.SourcesDirectory)\\toolsSource"
- },
- "PB_ToolsRoot": {
- "value": "$(Build.SourcesDirectory)\\tools"
- },
- "PB_SymbolServerPath": {
- "value": "https://microsoftpublicsymbols.artifacts.visualstudio.com/DefaultCollection"
- },
- "PB_SymbolServerPAT": {
- "value": null,
- "isSecret": true
- },
- "PB_SymbolExpirationInDays": {
- "value": "30"
- },
- "PB_BuildOutputManifestArguments": {
- "value": "/p:ManifestBuildId=$(OfficialBuildId) /p:ManifestBranch=$(SourceBranch) /p:ManifestCommit=$(SourceVersion)"
- },
- "PB_AdditionalMSBuildArguments": {
- "value": ""
- }
- },
- "demands": [
- "Agent.OS -equals Windows_NT",
- "WindowsKit",
- ],
- "retentionRules": [
- {
- "branches": [
- "+refs/heads/*"
- ],
- "artifacts": [],
- "artifactTypesToDelete": [
- "FilePath",
- "SymbolStore"
- ],
- "daysToKeep": 2,
- "minimumToKeep": 1,
- "deleteBuildRecord": true,
- "deleteTestResults": true
- }
- ],
- "buildNumberFormat": "$(date:yyyyMMdd)$(rev:-rr)",
- "jobAuthorizationScope": "projectCollection",
- "jobTimeoutInMinutes": 120,
- "jobCancelTimeoutInMinutes": 5,
- "badgeEnabled": true,
- "repository": {
- "properties": {
- "labelSources": "0",
- "reportBuildStatus": "true",
- "fetchDepth": "0",
- "gitLfsSupport": "false",
- "skipSyncSource": "true",
- "cleanOptions": "3",
- "labelSourcesFormat": "$(build.buildNumber)",
- "checkoutNestedSubmodules": "false"
- },
- "id": "c19ea379-feb7-4ca5-8f7f-5f2b5095ea62",
- "type": "TfsGit",
- "name": "DotNet-Core-Setup-Trusted",
- "url": "https://devdiv.visualstudio.com/DevDiv/_git/DotNet-Core-Setup-Trusted",
- "defaultBranch": "refs/heads/master",
- "clean": "false",
- "checkoutSubmodules": false
- },
- "processParameters": {},
- "quality": "definition",
- "queue": {
- "id": 36,
- "name": "DotNet-Build",
- "pool": {
- "id": 39,
- "name": "DotNet-Build"
- }
- },
- "id": 6301,
- "name": "Core-Setup-Publish",
- "url": "https://devdiv.visualstudio.com/DefaultCollection/0bdbc590-a062-4c3f-b0f6-9383f67865ee/_apis/build/Definitions/6301",
- "path": "\\",
- "type": "build",
- "project": {
- "id": "0bdbc590-a062-4c3f-b0f6-9383f67865ee",
- "name": "DevDiv",
- "description": "Visual Studio and DevDiv team project for git source code repositories. Work items will be added for Adams, Dev14 work items are tracked in vstfdevdiv. ",
- "url": "https://devdiv.visualstudio.com/DefaultCollection/_apis/projects/0bdbc590-a062-4c3f-b0f6-9383f67865ee",
- "state": "wellFormed",
- "revision": 418097676
- }
-}
diff --git a/buildpipeline/Core-Setup-Signing-Validation.json b/buildpipeline/Core-Setup-Signing-Validation.json
deleted file mode 100644
index d9f3242c93..0000000000
--- a/buildpipeline/Core-Setup-Signing-Validation.json
+++ /dev/null
@@ -1,344 +0,0 @@
-{
- "build": [
- {
- "environment": {},
- "enabled": true,
- "continueOnError": true,
- "displayName": "run begin.ps1",
- "timeoutInMinutes": 0,
- "alwaysRun": true,
- "task": {
- "id": "e213ff0f-5d5c-4791-802d-52ea3e7be1f1",
- "versionSpec": "2.*",
- "definitionType": "task"
- },
- "inputs": {
- "targetType": "inline",
- "filePath": "",
- "arguments": "",
- "script": "if (Test-Path \"$Env:AgentToolsPath\\begin.ps1\") {\n \"$Env:AgentToolsPath\\begin.ps1 script found. Executing...\"\n & $Env:AgentToolsPath\\begin.ps1\n} else {\n \"$Env:AgentToolsPath\\begin.ps1 script does not exist. Moving on...\"\n}",
- "errorActionPreference": "continue",
- "failOnStderr": "false",
- "ignoreLASTEXITCODE": "true",
- "workingDirectory": ""
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": true,
- "alwaysRun": false,
- "displayName": "Cleanup previous build if present",
- "timeoutInMinutes": 0,
- "refName": "Task1",
- "task": {
- "id": "e213ff0f-5d5c-4791-802d-52ea3e7be1f1",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "scriptType": "inlineScript",
- "scriptName": "",
- "arguments": "-path $(PB_SourcesDirectory) -rootPath $(Build.SourcesDirectory)",
- "workingFolder": "",
- "inlineScript": "param($path, $rootPath)\n\nif (Test-Path $path){\n Remove-Item -Recurse -Force $path\n\n if(Test-Path $path){\n $DeleteFolder = \"$rootPath\\deleteme\"\n if((Test-Path $DeleteFolder ) -eq 0) {\n New-Item -ItemType Directory -Force -Path $DeleteFolder\n }\n robocopy $DeleteFolder $path /purge\n Remove-Item -Recurse -Force $path\n }\n }",
- "failOnStandardError": "true"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Clone repo",
- "timeoutInMinutes": 0,
- "refName": "Task2",
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "git",
- "arguments": "clone $(PB_VsoRepoUrl) $(PB_SourcesDirectory)",
- "workingFolder": "",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "git checkout",
- "timeoutInMinutes": 0,
- "refName": "Task3",
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "git",
- "arguments": "checkout $(SourceVersion)",
- "workingFolder": "$(PB_SourcesDirectory)",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Signing validation",
- "timeoutInMinutes": 0,
- "refName": "Task4",
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "$(PB_SourcesDirectory)\\build.cmd",
- "arguments": "-signing-validation -- /p:AzureAccessToken=$(PB_AzureAccessToken) /p:AzureAccountName=$(PB_AzureAccountName) /p:ContainerName=$(PB_ContainerName) /p:OptionalToolSource=$(PB_OptionalToolSource) /p:OptionalToolSourceUser=$(PB_OptionalToolSourceUser) /p:OptionalToolSourcePassword=$(PB_OptionalToolSourcePassword) /p:OfficialBuildId=$(OfficialBuildId) /flp:v=detailed /p:SignType=$(PB_SignType) $(PB_AdditionalMSBuildArguments)",
- "workingFolder": "$(PB_SourcesDirectory)",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": true,
- "alwaysRun": true,
- "displayName": "Copy Files to: $(Build.StagingDirectory)\\BuildLogs",
- "timeoutInMinutes": 0,
- "condition": "succeededOrFailed()",
- "refName": "CopyFiles1",
- "task": {
- "id": "5bfb729a-a7c8-4a78-a7c3-8d717bb7c13c",
- "versionSpec": "2.*",
- "definitionType": "task"
- },
- "inputs": {
- "SourceFolder": "$(PB_SourcesDirectory)",
- "Contents": "*.log\nBin\\SigningValidation\\Logs\\**",
- "TargetFolder": "$(Build.StagingDirectory)\\BuildLogs",
- "CleanTargetFolder": "false",
- "OverWrite": "false",
- "flattenFolders": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": true,
- "alwaysRun": true,
- "displayName": "Publish Artifact: BuildLogs",
- "timeoutInMinutes": 0,
- "condition": "succeededOrFailed()",
- "refName": "PublishBuildArtifacts2",
- "task": {
- "id": "2ff763a7-ce83-4e1f-bc89-0ae63477cebe",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "PathtoPublish": "$(Build.StagingDirectory)\\BuildLogs",
- "ArtifactName": "BuildLogs",
- "ArtifactType": "Container",
- "TargetPath": "\\\\my\\share\\$(Build.DefinitionName)\\$(Build.BuildNumber)",
- "Parallel": "false",
- "ParallelCount": "8"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": true,
- "alwaysRun": true,
- "displayName": "run end.ps1",
- "timeoutInMinutes": 0,
- "condition": "always()",
- "task": {
- "id": "e213ff0f-5d5c-4791-802d-52ea3e7be1f1",
- "versionSpec": "2.*",
- "definitionType": "task"
- },
- "inputs": {
- "targetType": "inline",
- "filePath": "",
- "arguments": "",
- "script": "if (Test-Path \"$Env:AgentToolsPath\\end.ps1\") {\n \"$Env:AgentToolsPath\\end.ps1 script found. Executing...\"\n & $Env:AgentToolsPath\\end.ps1\n} else {\n \"$Env:AgentToolsPath\\end.ps1 script does not exist. Moving on...\"\n}",
- "errorActionPreference": "continue",
- "failOnStderr": "false",
- "ignoreLASTEXITCODE": "true",
- "workingDirectory": ""
- }
- }
- ],
- "options": [
- {
- "enabled": false,
- "definition": {
- "id": "5d58cc01-7c75-450c-be18-a388ddb129ec"
- },
- "inputs": {
- "branchFilters": "[\"+refs/heads/*\"]",
- "additionalFields": "{}"
- }
- },
- {
- "enabled": false,
- "definition": {
- "id": "a9db38f9-9fdc-478c-b0f9-464221e58316"
- },
- "inputs": {
- "workItemType": "234347",
- "assignToRequestor": "true",
- "additionalFields": "{}"
- }
- },
- {
- "enabled": false,
- "definition": {
- "id": "57578776-4c22-4526-aeb0-86b6da17ee9c"
- },
- "inputs": {
- "additionalFields": "{}"
- }
- }
- ],
- "variables": {
- "BuildConfiguration": {
- "value": "Release"
- },
- "system.debug": {
- "value": "false"
- },
- "ReleaseToolsGitUrl": {
- "value": "https://$(PB_VsoAccountName):$(PB_VsoPassword)@devdiv.visualstudio.com/DevDiv/_git/DotNet-Core-Release-Tools"
- },
- "PB_SourcesDirectory": {
- "value": "$(Build.SourcesDirectory)\\core-setup"
- },
- "PB_VsoRepoUrl": {
- "value": "--branch $(PB_Branch) https://$(PB_VsoAccountName):$(PB_VsoPassword)@devdiv.visualstudio.com/DevDiv/_git/DotNet-Core-Setup-Trusted"
- },
- "PB_Branch": {
- "value": "master",
- "allowOverride": true
- },
- "PB_VsoAccountName": {
- "value": "dn-bot"
- },
- "PB_VsoPassword": {
- "value": null,
- "isSecret": true
- },
- "OfficialBuildId": {
- "value": "xxxxx-xx",
- "allowOverride": true
- },
- "PB_AzureAccountName": {
- "value": "dotnetcli"
- },
- "PB_ContainerName": {
- "value": "dotnet"
- },
- "PB_AzureAccessToken": {
- "value": null,
- "isSecret": true
- },
- "SourceVersion": {
- "value": "HEAD",
- "allowOverride": true
- },
- "PB_ReleaseToolsDirectory": {
- "value": "$(Build.SourcesDirectory)\\releasetools"
- },
- "PB_CleanAgent": {
- "value": "true"
- },
- "PB_OptionalToolSource": {
- "value": "https://devdiv.pkgs.visualstudio.com/_packaging/dotnet-core-internal-tooling/nuget/v3/index.json "
- },
- "PB_OptionalToolSourceUser": {
- "value": "dn-bot"
- },
- "PB_OptionalToolSourcePassword": {
- "value": null,
- "isSecret": true
- },
- "PB_AdditionalMSBuildArguments": {
- "value": ""
- }
- },
- "demands": [
- "Agent.OS -equals Windows_NT"
- ],
- "retentionRules": [
- {
- "branches": [
- "+refs/heads/*"
- ],
- "artifacts": [],
- "artifactTypesToDelete": [
- "FilePath",
- "SymbolStore"
- ],
- "daysToKeep": 10,
- "minimumToKeep": 1,
- "deleteBuildRecord": true,
- "deleteTestResults": true
- }
- ],
- "buildNumberFormat": "$(Date:yyyMMdd)$(Rev:-rr)",
- "jobAuthorizationScope": "projectCollection",
- "jobTimeoutInMinutes": 120,
- "jobCancelTimeoutInMinutes": 5,
- "badgeEnabled": true,
- "repository": {
- "properties": {
- "labelSources": "0",
- "reportBuildStatus": "true",
- "fetchDepth": "0",
- "gitLfsSupport": "false",
- "skipSyncSource": "true",
- "cleanOptions": "0",
- "checkoutNestedSubmodules": "false",
- "labelSourcesFormat": "$(build.buildNumber)"
- },
- "id": "c19ea379-feb7-4ca5-8f7f-5f2b5095ea62",
- "type": "TfsGit",
- "name": "DotNet-Core-Setup-Trusted",
- "url": "https://devdiv.visualstudio.com/DevDiv/_git/DotNet-Core-Setup-Trusted",
- "defaultBranch": "refs/heads/release/1.1.0",
- "clean": "false",
- "checkoutSubmodules": false
- },
- "processParameters": {},
- "quality": "definition",
- "drafts": [],
- "queue": {
- "id": 36,
- "name": "DotNet-Build",
- "pool": {
- "id": 39,
- "name": "DotNet-Build"
- }
- },
- "id": 6475,
- "name": "Core-Setup-Signing-Validation",
- "path": "\\",
- "type": "build",
- "queueStatus": "enabled",
- "project": {
- "id": "0bdbc590-a062-4c3f-b0f6-9383f67865ee",
- "name": "DevDiv",
- "description": "Visual Studio and DevDiv team project for git source code repositories. Work items will be added for Adams, Dev14 work items are tracked in vstfdevdiv. ",
- "url": "https://devdiv.visualstudio.com/DefaultCollection/_apis/projects/0bdbc590-a062-4c3f-b0f6-9383f67865ee",
- "state": "wellFormed",
- "revision": 418098432,
- "visibility": "organization"
- }
-}
\ No newline at end of file
diff --git a/buildpipeline/Core-Setup-Windows-Arm-BT.json b/buildpipeline/Core-Setup-Windows-Arm-BT.json
deleted file mode 100644
index 8f6a2b466c..0000000000
--- a/buildpipeline/Core-Setup-Windows-Arm-BT.json
+++ /dev/null
@@ -1,601 +0,0 @@
-{
- "build": [
- {
- "environment": {},
- "enabled": true,
- "continueOnError": true,
- "displayName": "run begin.ps1",
- "timeoutInMinutes": 0,
- "alwaysRun": true,
- "task": {
- "id": "e213ff0f-5d5c-4791-802d-52ea3e7be1f1",
- "versionSpec": "2.*",
- "definitionType": "task"
- },
- "inputs": {
- "targetType": "inline",
- "filePath": "",
- "arguments": "",
- "script": "if (Test-Path \"$Env:AgentToolsPath\\begin.ps1\") {\n \"$Env:AgentToolsPath\\begin.ps1 script found. Executing...\"\n & $Env:AgentToolsPath\\begin.ps1\n} else {\n \"$Env:AgentToolsPath\\begin.ps1 script does not exist. Moving on...\"\n}",
- "errorActionPreference": "continue",
- "failOnStderr": "false",
- "ignoreLASTEXITCODE": "true",
- "workingDirectory": ""
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": true,
- "alwaysRun": false,
- "displayName": "Cleanup previous build if present",
- "timeoutInMinutes": 0,
- "refName": "Task1",
- "task": {
- "id": "e213ff0f-5d5c-4791-802d-52ea3e7be1f1",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "scriptType": "inlineScript",
- "scriptName": "",
- "arguments": "-path $(PB_SourcesDirectory) -rootPath $(Build.SourcesDirectory)",
- "workingFolder": "",
- "inlineScript": "param($path, $rootPath)\n\nif (Test-Path $path){\n Remove-Item -Recurse -Force $path\n\n if(Test-Path $path){\n $DeleteFolder = \"$rootPath\\deleteme\"\n if((Test-Path $DeleteFolder ) -eq 0) {\n New-Item -ItemType Directory -Force -Path $DeleteFolder\n }\n robocopy $DeleteFolder $path /purge\n Remove-Item -Recurse -Force $path\n }\n }",
- "failOnStandardError": "true"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Clone repo",
- "timeoutInMinutes": 0,
- "refName": "Task2",
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "git",
- "arguments": "clone $(PB_VsoRepoUrl) $(PB_SourcesDirectory)",
- "workingFolder": "",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "git checkout",
- "timeoutInMinutes": 0,
- "refName": "Task3",
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "git",
- "arguments": "checkout $(SourceVersion)",
- "workingFolder": "$(PB_SourcesDirectory)",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Install Signing Plugin",
- "timeoutInMinutes": 0,
- "condition": "and(succeeded(), in(variables.PB_SignType, 'real', 'test'))",
- "refName": "Task4",
- "task": {
- "id": "30666190-6959-11e5-9f96-f56098202fef",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "signType": "real",
- "zipSources": "false",
- "version": "",
- "feedSource": "https://devdiv.pkgs.visualstudio.com/DefaultCollection/_packaging/MicroBuildToolset/nuget/v3/index.json"
- }
- },
- {
- "environment": {
- "PACKAGEVERSIONPROPSURL":"$(PB_PackageVersionPropsUrl)"
- },
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Build traversal build dependencies",
- "timeoutInMinutes": 0,
- "refName": "Task5",
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "$(PB_SourcesDirectory)\\build.cmd",
- "arguments": "-- $(PB_CommonMSBuildArgs) /t:BuildTraversalBuildDependencies /flp:v=diag",
- "workingFolder": "$(PB_SourcesDirectory)",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Build binaries",
- "timeoutInMinutes": 0,
- "refName": "Task6",
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "$(PB_SourcesDirectory)\\build.cmd",
- "arguments": "-src-builds -- $(PB_CommonMSBuildArgs) /p:BuildAppx=false",
- "workingFolder": "$(PB_SourcesDirectory)",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Sign binaries",
- "timeoutInMinutes": 0,
- "refName": "Task7",
- "task": {
- "id": "c6c4c611-aa2e-4a33-b606-5eaba2196824",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "solution": "$(PB_SourcesDirectory)\\signing\\sign.proj",
- "msbuildLocationMethod": "version",
- "msbuildVersion": "latest",
- "msbuildArchitecture": "x64",
- "msbuildLocation": "",
- "platform": "$(PB_TargetArchitecture)",
- "configuration": "$(BuildConfiguration)",
- "msbuildArguments": "/t:SignBinaries $(MsbuildSigningArguments) $(PB_CommonMSBuildArgs)",
- "clean": "false",
- "maximumCpuCount": "false",
- "restoreNugetPackages": "false",
- "logProjectEvents": "false",
- "createLogFile": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Build nuget packages",
- "timeoutInMinutes": 0,
- "refName": "Task10",
- "task": {
- "id": "c6c4c611-aa2e-4a33-b606-5eaba2196824",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "solution": "$(PB_SourcesDirectory)\\src\\pkg\\dir.proj",
- "msbuildLocationMethod": "version",
- "msbuildVersion": "latest",
- "msbuildArchitecture": "x64",
- "msbuildLocation": "",
- "platform": "$(PB_TargetArchitecture)",
- "configuration": "$(BuildConfiguration)",
- "msbuildArguments": "$(PB_CommonMSBuildArgs) /p:BuildFullPlatformManifest=$(PB_BuildFullPlatformManifest) /flp:v=detailed;LogFile=$(PB_SourcesDirectory)\\packages.log",
- "clean": "false",
- "maximumCpuCount": "false",
- "restoreNugetPackages": "false",
- "logProjectEvents": "false",
- "createLogFile": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Build sharedframework layout",
- "timeoutInMinutes": 0,
- "refName": "Task11",
- "task": {
- "id": "c6c4c611-aa2e-4a33-b606-5eaba2196824",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "solution": "$(PB_SourcesDirectory)\\src\\sharedFramework\\sharedFramework.proj",
- "msbuildLocationMethod": "version",
- "msbuildVersion": "latest",
- "msbuildArchitecture": "x64",
- "msbuildLocation": "",
- "platform": "$(PB_TargetArchitecture)",
- "configuration": "$(BuildConfiguration)",
- "msbuildArguments": "$(PB_CommonMSBuildArgs) /flp:v=detailed;LogFile=$(PB_SourcesDirectory)\\sharedframework.log",
- "clean": "false",
- "maximumCpuCount": "false",
- "restoreNugetPackages": "false",
- "logProjectEvents": "false",
- "createLogFile": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Package",
- "timeoutInMinutes": 0,
- "refName": "Task12",
- "task": {
- "id": "c6c4c611-aa2e-4a33-b606-5eaba2196824",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "solution": "$(PB_SourcesDirectory)\\src\\pkg\\packaging\\dir.proj",
- "msbuildLocationMethod": "version",
- "msbuildVersion": "latest",
- "msbuildArchitecture": "x64",
- "msbuildLocation": "",
- "platform": "$(PB_TargetArchitecture)",
- "configuration": "$(BuildConfiguration)",
- "msbuildArguments": "$(PB_CommonMSBuildArgs) /flp:v=detailed;LogFile=$(PB_SourcesDirectory)\\packaging.log",
- "clean": "false",
- "maximumCpuCount": "false",
- "restoreNugetPackages": "false",
- "logProjectEvents": "false",
- "createLogFile": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Publish",
- "timeoutInMinutes": 0,
- "refName": "Task13",
- "task": {
- "id": "c6c4c611-aa2e-4a33-b606-5eaba2196824",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "solution": "$(PB_SourcesDirectory)\\publish\\publish.proj",
- "msbuildLocationMethod": "version",
- "msbuildVersion": "latest",
- "msbuildArchitecture": "x64",
- "msbuildLocation": "",
- "platform": "$(PB_TargetArchitecture)",
- "configuration": "$(BuildConfiguration)",
- "msbuildArguments": "$(PB_CommonMSBuildArgs) /p:PublishType=$(PB_PublishType) /p:AzureAccountName=$(PB_AzureAccountName) /p:ContainerName=$(PB_ContainerName) /p:AzureAccessToken=$(PB_AzureAccessToken) /p:ChecksumAzureAccountName=$(PB_ChecksumAzureAccountName) /p:ChecksumContainerName=$(PB_ChecksumContainerName) /p:ChecksumAzureAccessToken=$(PB_ChecksumAzureAccessToken)",
- "clean": "false",
- "maximumCpuCount": "false",
- "restoreNugetPackages": "false",
- "logProjectEvents": "false",
- "createLogFile": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Perform Cleanup Tasks",
- "timeoutInMinutes": 0,
- "condition": "always()",
- "refName": "Task15",
- "task": {
- "id": "521a94ea-9e68-468a-8167-6dcf361ea776",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {}
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": true,
- "alwaysRun": true,
- "displayName": "Copy Files to: $(Build.StagingDirectory)\\BuildLogs",
- "timeoutInMinutes": 0,
- "condition": "succeededOrFailed()",
- "refName": "CopyFiles1",
- "task": {
- "id": "5bfb729a-a7c8-4a78-a7c3-8d717bb7c13c",
- "versionSpec": "2.*",
- "definitionType": "task"
- },
- "inputs": {
- "SourceFolder": "",
- "Contents": "**\\*.log",
- "TargetFolder": "$(Build.StagingDirectory)\\BuildLogs",
- "CleanTargetFolder": "false",
- "OverWrite": "false",
- "flattenFolders": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": true,
- "alwaysRun": true,
- "displayName": "Publish Artifact: BuildLogs",
- "timeoutInMinutes": 0,
- "condition": "succeededOrFailed()",
- "refName": "PublishBuildArtifacts2",
- "task": {
- "id": "2ff763a7-ce83-4e1f-bc89-0ae63477cebe",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "PathtoPublish": "$(Build.StagingDirectory)\\BuildLogs",
- "ArtifactName": "BuildLogs",
- "ArtifactType": "Container",
- "TargetPath": "\\\\my\\share\\$(Build.DefinitionName)\\$(Build.BuildNumber)",
- "Parallel": "false",
- "ParallelCount": "8"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": true,
- "alwaysRun": true,
- "displayName": "run end.ps1",
- "timeoutInMinutes": 0,
- "condition": "always()",
- "task": {
- "id": "e213ff0f-5d5c-4791-802d-52ea3e7be1f1",
- "versionSpec": "2.*",
- "definitionType": "task"
- },
- "inputs": {
- "targetType": "inline",
- "filePath": "",
- "arguments": "",
- "script": "if (Test-Path \"$Env:AgentToolsPath\\end.ps1\") {\n \"$Env:AgentToolsPath\\end.ps1 script found. Executing...\"\n & $Env:AgentToolsPath\\end.ps1\n} else {\n \"$Env:AgentToolsPath\\end.ps1 script does not exist. Moving on...\"\n}",
- "errorActionPreference": "continue",
- "failOnStderr": "false",
- "ignoreLASTEXITCODE": "true",
- "workingDirectory": ""
- }
- }
- ],
- "options": [
- {
- "enabled": false,
- "definition": {
- "id": "5d58cc01-7c75-450c-be18-a388ddb129ec"
- },
- "inputs": {
- "branchFilters": "[\"+refs/heads/*\"]",
- "additionalFields": "{}"
- }
- },
- {
- "enabled": false,
- "definition": {
- "id": "a9db38f9-9fdc-478c-b0f9-464221e58316"
- },
- "inputs": {
- "workItemType": "234347",
- "assignToRequestor": "true",
- "additionalFields": "{}"
- }
- },
- {
- "enabled": false,
- "definition": {
- "id": "57578776-4c22-4526-aeb0-86b6da17ee9c"
- },
- "inputs": {
- "additionalFields": "{}"
- }
- }
- ],
- "variables": {
- "BuildConfiguration": {
- "value": "Release",
- "allowOverride": true
- },
- "COREHOST_TRACE": {
- "value": "0",
- "allowOverride": true
- },
- "STORAGE_ACCOUNT": {
- "value": "dotnetcli"
- },
- "STORAGE_CONTAINER": {
- "value": "dotnet"
- },
- "GITHUB_PASSWORD": {
- "value": "PassedViaPipeBuild"
- },
- "BUILD_FULL_PLATFORM_MANIFEST": {
- "value": "true"
- },
- "PUBLISH_RID_AGNOSTIC_PACKAGES": {
- "value": "true"
- },
- "CertificateId": {
- "value": "400"
- },
- "MsbuildSigningArguments": {
- "value": "/p:CertificateId=$(CertificateId) /v:detailed /p:SignType=$(PB_SignType)"
- },
- "TeamName": {
- "value": "DotNetCore"
- },
- "system.debug": {
- "value": "false"
- },
- "PB_PortableBuild": {
- "value": "true",
- "allowOverride": true
- },
- "PB_SourcesDirectory": {
- "value": "$(Build.SourcesDirectory)\\core-setup"
- },
- "PB_ChecksumAzureAccountName": {
- "value": "dotnetclichecksums"
- },
- "PB_ChecksumContainerName": {
- "value": "dotnet"
- },
- "PB_ChecksumAzureAccessToken": {
- "value": null,
- "isSecret": true
- },
- "PB_VsoRepoUrl": {
- "value": "--branch $(PB_Branch) https://$(PB_VsoAccountName):$(PB_VsoPassword)@devdiv.visualstudio.com/DevDiv/_git/DotNet-Core-Setup-Trusted"
- },
- "PB_AzureAccountName": {
- "value": "sourcebuild"
- },
- "PB_ContainerName": {
- "value": "dotnet"
- },
- "PB_AzureAccessToken": {
- "value": null,
- "isSecret": true
- },
- "PB_VsoAccountName": {
- "value": "dn-bot"
- },
- "PB_VsoPassword": {
- "value": null,
- "isSecret": true
- },
- "PB_Branch": {
- "value": "master",
- "allowOverride": true
- },
- "SourceVersion": {
- "value": "HEAD"
- },
- "PB_SignType": {
- "value": "real",
- "allowOverride": true
- },
- "PB_CommonMSBuildArgs": {
- "value": "/p:ConfigurationGroup=$(BuildConfiguration) /p:TargetArchitecture=$(PB_TargetArchitecture) /p:PortableBuild=$(PB_PortableBuild) /p:DisableCrossgen=true $(PB_AdditionalMSBuildArguments)"
- },
- "PB_AdditionalMSBuildArguments": {
- "value": ""
- },
- "OfficialBuildId": {
- "value": "$(Build.BuildNumber)"
- },
- "PB_TargetArchitecture": {
- "value": "arm",
- "allowOverride": true
- },
- "PB_CleanAgent": {
- "value": "true"
- },
- "PB_BuildFullPlatformManifest": {
- "value": "false"
- },
- "PB_PackageVersionPropsUrl": {
- "value": "",
- "isSecret": true
- },
- "PB_RestoreSource": {
- "value": "",
- "isSecret": true
- },
- "PB_AssetRootUrl": {
- "value": "",
- "isSecret": true
- }
- },
- "demands": [
- "Agent.OS -equals Windows_NT",
- "DotNetFramework",
- "Cmd"
- ],
- "retentionRules": [
- {
- "branches": [
- "+refs/heads/*"
- ],
- "artifacts": [],
- "artifactTypesToDelete": [
- "FilePath",
- "SymbolStore"
- ],
- "daysToKeep": 7,
- "minimumToKeep": 1,
- "deleteBuildRecord": true,
- "deleteTestResults": true
- }
- ],
- "buildNumberFormat": "$(date:yyyyMMdd)$(rev:-rr)",
- "jobAuthorizationScope": "projectCollection",
- "jobTimeoutInMinutes": 90,
- "jobCancelTimeoutInMinutes": 5,
- "badgeEnabled": true,
- "repository": {
- "properties": {
- "labelSources": "0",
- "reportBuildStatus": "true",
- "fetchDepth": "0",
- "gitLfsSupport": "false",
- "skipSyncSource": "true",
- "cleanOptions": "0",
- "checkoutNestedSubmodules": "false",
- "labelSourcesFormat": "$(build.buildNumber)"
- },
- "id": "c19ea379-feb7-4ca5-8f7f-5f2b5095ea62",
- "type": "TfsGit",
- "name": "DotNet-Core-Setup-Trusted",
- "url": "https://devdiv.visualstudio.com/DevDiv/_git/DotNet-Core-Setup-Trusted",
- "defaultBranch": "refs/heads/master",
- "clean": "false",
- "checkoutSubmodules": false
- },
- "processParameters": {},
- "quality": "definition",
- "drafts": [],
- "queue": {
- "id": 36,
- "name": "DotNet-Build",
- "pool": {
- "id": 39,
- "name": "DotNet-Build"
- }
- },
- "id": 4371,
- "name": "Core-Setup-Windows-Arm-BT",
- "path": "\\",
- "type": "build",
- "queueStatus": "enabled",
- "project": {
- "id": "0bdbc590-a062-4c3f-b0f6-9383f67865ee",
- "name": "DevDiv",
- "description": "Visual Studio and DevDiv team project for git source code repositories. Work items will be added for Adams, Dev14 work items are tracked in vstfdevdiv. ",
- "url": "https://devdiv.visualstudio.com/DefaultCollection/_apis/projects/0bdbc590-a062-4c3f-b0f6-9383f67865ee",
- "state": "wellFormed",
- "revision": 418098432,
- "visibility": "organization"
- }
-}
\ No newline at end of file
diff --git a/buildpipeline/Core-Setup-Windows-BT.json b/buildpipeline/Core-Setup-Windows-BT.json
deleted file mode 100644
index 991a1bfce7..0000000000
--- a/buildpipeline/Core-Setup-Windows-BT.json
+++ /dev/null
@@ -1,815 +0,0 @@
-{
- "build": [
- {
- "environment": {},
- "enabled": true,
- "continueOnError": true,
- "displayName": "run begin.ps1",
- "timeoutInMinutes": 0,
- "alwaysRun": true,
- "task": {
- "id": "e213ff0f-5d5c-4791-802d-52ea3e7be1f1",
- "versionSpec": "2.*",
- "definitionType": "task"
- },
- "inputs": {
- "targetType": "inline",
- "filePath": "",
- "arguments": "",
- "script": "if (Test-Path \"$Env:AgentToolsPath\\begin.ps1\") {\n \"$Env:AgentToolsPath\\begin.ps1 script found. Executing...\"\n & $Env:AgentToolsPath\\begin.ps1\n} else {\n \"$Env:AgentToolsPath\\begin.ps1 script does not exist. Moving on...\"\n}",
- "errorActionPreference": "continue",
- "failOnStderr": "false",
- "ignoreLASTEXITCODE": "true",
- "workingDirectory": ""
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": true,
- "alwaysRun": false,
- "displayName": "Cleanup previous build if present",
- "timeoutInMinutes": 0,
- "refName": "Task1",
- "task": {
- "id": "e213ff0f-5d5c-4791-802d-52ea3e7be1f1",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "scriptType": "inlineScript",
- "scriptName": "",
- "arguments": "-path $(PB_SourcesDirectory) -rootPath $(Build.SourcesDirectory)",
- "workingFolder": "",
- "inlineScript": "param($path, $rootPath)\n\nif (Test-Path $path){\n Remove-Item -Recurse -Force $path\n\n if(Test-Path $path){\n $DeleteFolder = \"$rootPath\\deleteme\"\n if((Test-Path $DeleteFolder ) -eq 0) {\n New-Item -ItemType Directory -Force -Path $DeleteFolder\n }\n robocopy $DeleteFolder $path /purge\n Remove-Item -Recurse -Force $path\n }\n }",
- "failOnStandardError": "true"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Clone repo",
- "timeoutInMinutes": 0,
- "refName": "Task2",
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "git",
- "arguments": "clone $(PB_VsoRepoUrl) $(PB_SourcesDirectory)",
- "workingFolder": "",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "git checkout",
- "timeoutInMinutes": 0,
- "refName": "Task3",
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "git",
- "arguments": "checkout $(SourceVersion)",
- "workingFolder": "$(PB_SourcesDirectory)",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Install Signing Plugin",
- "timeoutInMinutes": 0,
- "condition": "and(succeeded(), in(variables.PB_SignType, 'real', 'test'))",
- "refName": "Task4",
- "task": {
- "id": "30666190-6959-11e5-9f96-f56098202fef",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "signType": "real",
- "zipSources": "false",
- "version": "",
- "feedSource": "https://devdiv.pkgs.visualstudio.com/DefaultCollection/_packaging/MicroBuildToolset/nuget/v3/index.json"
- }
- },
- {
- "environment": {
- "PACKAGEVERSIONPROPSURL":"$(PB_PackageVersionPropsUrl)"
- },
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Build traversal build dependencies",
- "timeoutInMinutes": 0,
- "refName": "Task5",
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "$(PB_SourcesDirectory)\\build.cmd",
- "arguments": "-- $(PB_CommonMSBuildArgs) /t:BuildTraversalBuildDependencies /flp:v=diag",
- "workingFolder": "$(PB_SourcesDirectory)",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Build binaries",
- "timeoutInMinutes": 0,
- "refName": "Task6",
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "$(PB_SourcesDirectory)\\build.cmd",
- "arguments": "-src-builds -- $(PB_CommonMSBuildArgs) /p:BuildAppx=false",
- "workingFolder": "$(PB_SourcesDirectory)",
- "failOnStandardError": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Sign binaries",
- "timeoutInMinutes": 0,
- "refName": "Task7",
- "task": {
- "id": "c6c4c611-aa2e-4a33-b606-5eaba2196824",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "solution": "$(PB_SourcesDirectory)\\signing\\sign.proj",
- "msbuildLocationMethod": "version",
- "msbuildVersion": "latest",
- "msbuildArchitecture": "x64",
- "msbuildLocation": "",
- "platform": "$(PB_TargetArchitecture)",
- "configuration": "$(BuildConfiguration)",
- "msbuildArguments": "/t:SignBinaries $(MsbuildSigningArguments) $(PB_CommonMSBuildArgs)",
- "clean": "false",
- "maximumCpuCount": "false",
- "restoreNugetPackages": "false",
- "logProjectEvents": "false",
- "createLogFile": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Build nuget packages",
- "timeoutInMinutes": 0,
- "refName": "Task10",
- "task": {
- "id": "c6c4c611-aa2e-4a33-b606-5eaba2196824",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "solution": "$(PB_SourcesDirectory)\\src\\pkg\\dir.proj",
- "msbuildLocationMethod": "version",
- "msbuildVersion": "latest",
- "msbuildArchitecture": "x64",
- "msbuildLocation": "",
- "platform": "$(PB_TargetArchitecture)",
- "configuration": "$(BuildConfiguration)",
- "msbuildArguments": "$(PB_CommonMSBuildArgs) /p:BuildFullPlatformManifest=$(PB_BuildFullPlatformManifest) /flp:v=detailed;LogFile=$(PB_SourcesDirectory)\\packages.log",
- "clean": "false",
- "maximumCpuCount": "false",
- "restoreNugetPackages": "false",
- "logProjectEvents": "false",
- "createLogFile": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Build sharedframework layout",
- "timeoutInMinutes": 0,
- "refName": "Task11",
- "task": {
- "id": "c6c4c611-aa2e-4a33-b606-5eaba2196824",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "solution": "$(PB_SourcesDirectory)\\src\\sharedFramework\\sharedFramework.proj",
- "msbuildLocationMethod": "version",
- "msbuildVersion": "latest",
- "msbuildArchitecture": "x64",
- "msbuildLocation": "",
- "platform": "$(PB_TargetArchitecture)",
- "configuration": "$(BuildConfiguration)",
- "msbuildArguments": "$(PB_CommonMSBuildArgs) /flp:v=detailed;LogFile=$(PB_SourcesDirectory)\\sharedframework.log",
- "clean": "false",
- "maximumCpuCount": "false",
- "restoreNugetPackages": "false",
- "logProjectEvents": "false",
- "createLogFile": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Create installers",
- "timeoutInMinutes": 0,
- "refName": "Task12",
- "task": {
- "id": "c6c4c611-aa2e-4a33-b606-5eaba2196824",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "solution": "$(PB_SourcesDirectory)\\src\\pkg\\packaging\\dir.proj",
- "msbuildLocationMethod": "version",
- "msbuildVersion": "latest",
- "msbuildArchitecture": "x64",
- "msbuildLocation": "",
- "platform": "$(PB_TargetArchitecture)",
- "configuration": "$(BuildConfiguration)",
- "msbuildArguments": "/t:BuildInstallers $(PB_CommonMSBuildArgs) /flp:v=detailed;LogFile=$(PB_SourcesDirectory)\\packaging.log",
- "clean": "false",
- "maximumCpuCount": "false",
- "restoreNugetPackages": "false",
- "logProjectEvents": "false",
- "createLogFile": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Sign MSI and cab files",
- "timeoutInMinutes": 0,
- "refName": "Task13",
- "task": {
- "id": "c6c4c611-aa2e-4a33-b606-5eaba2196824",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "solution": "$(PB_SourcesDirectory)\\signing\\sign.proj",
- "msbuildLocationMethod": "version",
- "msbuildVersion": "latest",
- "msbuildArchitecture": "x64",
- "msbuildLocation": "",
- "platform": "$(PB_TargetArchitecture)",
- "configuration": "$(BuildConfiguration)",
- "msbuildArguments": "/t:SignMsiAndCab $(PB_CommonMSBuildArgs) $(MsbuildSigningArguments)",
- "clean": "false",
- "maximumCpuCount": "false",
- "restoreNugetPackages": "false",
- "logProjectEvents": "false",
- "createLogFile": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Create bundles",
- "timeoutInMinutes": 0,
- "refName": "Task14",
- "task": {
- "id": "c6c4c611-aa2e-4a33-b606-5eaba2196824",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "solution": "$(PB_SourcesDirectory)\\src\\pkg\\packaging\\dir.proj",
- "msbuildLocationMethod": "version",
- "msbuildVersion": "latest",
- "msbuildArchitecture": "x64",
- "msbuildLocation": "",
- "platform": "$(PB_TargetArchitecture)",
- "configuration": "$(BuildConfiguration)",
- "msbuildArguments": "/t:BuildCombinedInstallers $(PB_CommonMSBuildArgs) /flp:v=detailed;LogFile=$(PB_SourcesDirectory)\\createbundles.log",
- "clean": "false",
- "maximumCpuCount": "false",
- "restoreNugetPackages": "false",
- "logProjectEvents": "false",
- "createLogFile": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Extract engine from bundle",
- "timeoutInMinutes": 0,
- "refName": "Task15",
- "task": {
- "id": "c6c4c611-aa2e-4a33-b606-5eaba2196824",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "solution": "$(PB_SourcesDirectory)\\src\\pkg\\packaging\\dir.proj",
- "msbuildLocationMethod": "version",
- "msbuildVersion": "latest",
- "msbuildArchitecture": "x64",
- "msbuildLocation": "",
- "platform": "$(PB_TargetArchitecture)",
- "configuration": "$(BuildConfiguration)",
- "msbuildArguments": "/t:ExtractEngineBundle $(PB_CommonMSBuildArgs) /flp:v=detailed;LogFile=$(PB_SourcesDirectory)\\extractengine.log",
- "clean": "false",
- "maximumCpuCount": "false",
- "restoreNugetPackages": "false",
- "logProjectEvents": "false",
- "createLogFile": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Sign engine",
- "timeoutInMinutes": 0,
- "refName": "Task16",
- "task": {
- "id": "c6c4c611-aa2e-4a33-b606-5eaba2196824",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "solution": "$(PB_SourcesDirectory)\\signing\\sign.proj",
- "msbuildLocationMethod": "version",
- "msbuildVersion": "latest",
- "msbuildArchitecture": "x64",
- "msbuildLocation": "",
- "platform": "$(PB_TargetArchitecture)",
- "configuration": "$(BuildConfiguration)",
- "msbuildArguments": "/t:SignEngine $(MsbuildSigningArguments) $(PB_CommonMSBuildArgs) /flp:v=detailed;LogFile=$(PB_SourcesDirectory)\\signengine.log",
- "clean": "false",
- "maximumCpuCount": "false",
- "restoreNugetPackages": "false",
- "logProjectEvents": "false",
- "createLogFile": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Reattach engine to bundle",
- "timeoutInMinutes": 0,
- "refName": "Task17",
- "task": {
- "id": "c6c4c611-aa2e-4a33-b606-5eaba2196824",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "solution": "$(PB_SourcesDirectory)\\src\\pkg\\packaging\\dir.proj",
- "msbuildLocationMethod": "version",
- "msbuildVersion": "latest",
- "msbuildArchitecture": "x64",
- "msbuildLocation": "",
- "platform": "$(PB_TargetArchitecture)",
- "configuration": "$(BuildConfiguration)",
- "msbuildArguments": "/t:ReattachEngineToBundle $(PB_CommonMSBuildArgs) /flp:v=detailed;LogFile=$(PB_SourcesDirectory)\\reattachengine.log",
- "clean": "false",
- "maximumCpuCount": "false",
- "restoreNugetPackages": "false",
- "logProjectEvents": "false",
- "createLogFile": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Sign Bundle",
- "timeoutInMinutes": 0,
- "refName": "Task18",
- "task": {
- "id": "c6c4c611-aa2e-4a33-b606-5eaba2196824",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "solution": "$(PB_SourcesDirectory)\\signing\\sign.proj",
- "msbuildLocationMethod": "version",
- "msbuildVersion": "latest",
- "msbuildArchitecture": "x64",
- "msbuildLocation": "",
- "platform": "$(PB_TargetArchitecture)",
- "configuration": "$(BuildConfiguration)",
- "msbuildArguments": "/t:SignBundle $(MsbuildSigningArguments) $(PB_CommonMSBuildArgs) /flp:v=detailed;LogFile=$(PB_SourcesDirectory)\\signbundle.log",
- "clean": "false",
- "maximumCpuCount": "false",
- "restoreNugetPackages": "false",
- "logProjectEvents": "false",
- "createLogFile": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Build and run tests",
- "timeoutInMinutes": 0,
- "condition": "and(succeeded(), ne(variables.PB_SkipTests, 'true'))",
- "refName": "Task19",
- "task": {
- "id": "c6c4c611-aa2e-4a33-b606-5eaba2196824",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "solution": "$(PB_SourcesDirectory)\\src\\test\\dir.proj",
- "msbuildLocationMethod": "version",
- "msbuildVersion": "latest",
- "msbuildArchitecture": "x64",
- "msbuildLocation": "",
- "platform": "$(PB_TargetArchitecture)",
- "configuration": "$(BuildConfiguration)",
- "msbuildArguments": "$(PB_CommonMSBuildArgs) /flp:v=diag;LogFile=$(PB_SourcesDirectory)\\tests.log",
- "clean": "false",
- "maximumCpuCount": "false",
- "restoreNugetPackages": "false",
- "logProjectEvents": "false",
- "createLogFile": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Publish",
- "timeoutInMinutes": 0,
- "refName": "Task20",
- "task": {
- "id": "c6c4c611-aa2e-4a33-b606-5eaba2196824",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "solution": "$(PB_SourcesDirectory)\\publish\\publish.proj",
- "msbuildLocationMethod": "version",
- "msbuildVersion": "latest",
- "msbuildArchitecture": "x64",
- "msbuildLocation": "",
- "platform": "$(PB_TargetArchitecture)",
- "configuration": "$(BuildConfiguration)",
- "msbuildArguments": "$(PB_CommonMSBuildArgs) /p:PublishType=$(PB_PublishType) /p:AzureAccountName=$(PB_AzureAccountName) /p:ContainerName=$(PB_ContainerName) /p:AzureAccessToken=$(PB_AzureAccessToken) /p:PublishRidAgnosticPackages=$(PB_PublishRidAgnosticPackages) /p:BuildFullPlatformManifest=$(PB_BuildFullPlatformManifest) /p:ChecksumAzureAccountName=$(PB_ChecksumAzureAccountName) /p:ChecksumContainerName=$(PB_ChecksumContainerName) /p:ChecksumAzureAccessToken=$(PB_ChecksumAzureAccessToken) /flp:v=detailed;LogFile=$(PB_SourcesDirectory)\\publish.log",
- "clean": "false",
- "maximumCpuCount": "false",
- "restoreNugetPackages": "false",
- "logProjectEvents": "false",
- "createLogFile": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Perform Cleanup Tasks",
- "timeoutInMinutes": 0,
- "condition": "always()",
- "refName": "Task22",
- "task": {
- "id": "521a94ea-9e68-468a-8167-6dcf361ea776",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {}
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": true,
- "alwaysRun": true,
- "displayName": "Copy Files to: $(Build.StagingDirectory)\\BuildLogs",
- "timeoutInMinutes": 0,
- "condition": "succeededOrFailed()",
- "refName": "CopyFiles1",
- "task": {
- "id": "5bfb729a-a7c8-4a78-a7c3-8d717bb7c13c",
- "versionSpec": "2.*",
- "definitionType": "task"
- },
- "inputs": {
- "SourceFolder": "",
- "Contents": "**\\*.log",
- "TargetFolder": "$(Build.StagingDirectory)\\BuildLogs",
- "CleanTargetFolder": "false",
- "OverWrite": "false",
- "flattenFolders": "false"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": true,
- "alwaysRun": true,
- "displayName": "Publish Artifact: BuildLogs",
- "timeoutInMinutes": 0,
- "condition": "succeededOrFailed()",
- "refName": "PublishBuildArtifacts2",
- "task": {
- "id": "2ff763a7-ce83-4e1f-bc89-0ae63477cebe",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "PathtoPublish": "$(Build.StagingDirectory)\\BuildLogs",
- "ArtifactName": "BuildLogs",
- "ArtifactType": "Container",
- "TargetPath": "\\\\my\\share\\$(Build.DefinitionName)\\$(Build.BuildNumber)",
- "Parallel": "false",
- "ParallelCount": "8"
- }
- },
- {
- "environment": {},
- "enabled": true,
- "continueOnError": true,
- "alwaysRun": true,
- "displayName": "run end.ps1",
- "timeoutInMinutes": 0,
- "condition": "always()",
- "task": {
- "id": "e213ff0f-5d5c-4791-802d-52ea3e7be1f1",
- "versionSpec": "2.*",
- "definitionType": "task"
- },
- "inputs": {
- "targetType": "inline",
- "filePath": "",
- "arguments": "",
- "script": "if (Test-Path \"$Env:AgentToolsPath\\end.ps1\") {\n \"$Env:AgentToolsPath\\end.ps1 script found. Executing...\"\n & $Env:AgentToolsPath\\end.ps1\n} else {\n \"$Env:AgentToolsPath\\end.ps1 script does not exist. Moving on...\"\n}",
- "errorActionPreference": "continue",
- "failOnStderr": "false",
- "ignoreLASTEXITCODE": "true",
- "workingDirectory": ""
- }
- }
- ],
- "options": [
- {
- "enabled": false,
- "definition": {
- "id": "5d58cc01-7c75-450c-be18-a388ddb129ec"
- },
- "inputs": {
- "branchFilters": "[\"+refs/heads/*\"]",
- "additionalFields": "{}"
- }
- },
- {
- "enabled": false,
- "definition": {
- "id": "a9db38f9-9fdc-478c-b0f9-464221e58316"
- },
- "inputs": {
- "workItemType": "234347",
- "assignToRequestor": "true",
- "additionalFields": "{}"
- }
- },
- {
- "enabled": false,
- "definition": {
- "id": "57578776-4c22-4526-aeb0-86b6da17ee9c"
- },
- "inputs": {
- "additionalFields": "{}"
- }
- }
- ],
- "variables": {
- "BUILD_FULL_PLATFORM_MANIFEST": {
- "value": "true"
- },
- "BuildConfiguration": {
- "value": "Release",
- "allowOverride": true
- },
- "CertificateId": {
- "value": "400"
- },
- "COREHOST_TRACE": {
- "value": "0",
- "allowOverride": true
- },
- "GITHUB_PASSWORD": {
- "value": "PassedViaPipeBuild"
- },
- "MsbuildSigningArguments": {
- "value": "/p:CertificateId=$(CertificateId) /v:detailed /p:SignType=$(PB_SignType)"
- },
- "NUGET_API_KEY": {
- "value": "PassedViaPipeBuild"
- },
- "NUGET_FEED_URL": {
- "value": "https:%2F%2Fdotnet.myget.org/F/dotnet-core/api/v2/package"
- },
- "NUGET_SYMBOLS_FEED_URL": {
- "value": "https:%2F%2Fdotnet.myget.org/F/dotnet-core/symbols/api/v2/package"
- },
- "OfficialBuildId": {
- "value": "$(Build.BuildNumber)"
- },
- "PB_AzureAccessToken": {
- "value": null,
- "isSecret": true
- },
- "PB_AzureAccountName": {
- "value": "sourcebuild"
- },
- "PB_ContainerName": {
- "value": "dotnet"
- },
- "PB_Branch": {
- "value": "master",
- "allowOverride": true
- },
- "PB_BuildFullPlatformManifest": {
- "value": "false"
- },
- "PB_ChecksumAzureAccessToken": {
- "value": null,
- "isSecret": true
- },
- "PB_ChecksumAzureAccountName": {
- "value": "dotnetclichecksums"
- },
- "PB_ChecksumContainerName": {
- "value": "dotnet"
- },
- "PB_CleanAgent": {
- "value": "true"
- },
- "PB_CommonMSBuildArgs": {
- "value": "/p:ConfigurationGroup=$(BuildConfiguration) /p:TargetArchitecture=$(PB_TargetArchitecture) /p:PortableBuild=$(PB_PortableBuild) $(PB_AdditionalMSBuildArguments)"
- },
- "PB_AdditionalMSBuildArguments": {
- "value": ""
- },
- "PB_PortableBuild": {
- "value": "true",
- "allowOverride": true
- },
- "PB_PublishRidAgnosticPackages": {
- "value": "false"
- },
- "PB_SignType": {
- "value": "real",
- "allowOverride": true
- },
- "PB_SourcesDirectory": {
- "value": "$(Build.SourcesDirectory)\\core-setup"
- },
- "PB_TargetArchitecture": {
- "value": "x64",
- "allowOverride": true
- },
- "PB_VsoAccountName": {
- "value": "dn-bot"
- },
- "PB_VsoPassword": {
- "value": null,
- "isSecret": true
- },
- "PB_VsoRepoUrl": {
- "value": "--branch $(PB_Branch) https://$(PB_VsoAccountName):$(PB_VsoPassword)@devdiv.visualstudio.com/DevDiv/_git/DotNet-Core-Setup-Trusted"
- },
- "PUBLISH_RID_AGNOSTIC_PACKAGES": {
- "value": "true"
- },
- "SourceVersion": {
- "value": "HEAD"
- },
- "STORAGE_ACCOUNT": {
- "value": "dotnetcli"
- },
- "STORAGE_CONTAINER": {
- "value": "dotnet"
- },
- "system.debug": {
- "value": "false"
- },
- "TeamName": {
- "value": "DotNetCore"
- },
- "PB_PackageVersionPropsUrl": {
- "value": "",
- "isSecret": true
- },
- "PB_RestoreSource": {
- "value": "",
- "isSecret": true
- },
- "PB_AssetRootUrl": {
- "value": "",
- "isSecret": true
- }
- },
- "demands": [
- "Agent.OS -equals Windows_NT"
- ],
- "retentionRules": [
- {
- "branches": [
- "+refs/heads/*"
- ],
- "artifacts": [],
- "artifactTypesToDelete": [
- "FilePath",
- "SymbolStore"
- ],
- "daysToKeep": 2,
- "minimumToKeep": 1,
- "deleteBuildRecord": true,
- "deleteTestResults": true
- }
- ],
- "buildNumberFormat": "$(Date:yyyyMMdd)$(rev:-rr)",
- "jobAuthorizationScope": "projectCollection",
- "jobTimeoutInMinutes": 120,
- "jobCancelTimeoutInMinutes": 5,
- "badgeEnabled": true,
- "repository": {
- "properties": {
- "labelSources": "0",
- "reportBuildStatus": "true",
- "fetchDepth": "0",
- "gitLfsSupport": "false",
- "skipSyncSource": "true",
- "cleanOptions": "3",
- "checkoutNestedSubmodules": "false",
- "labelSourcesFormat": "$(build.buildNumber)"
- },
- "id": "c19ea379-feb7-4ca5-8f7f-5f2b5095ea62",
- "type": "TfsGit",
- "name": "DotNet-Core-Setup-Trusted",
- "url": "https://devdiv.visualstudio.com/DevDiv/_git/DotNet-Core-Setup-Trusted",
- "defaultBranch": "refs/heads/master",
- "clean": "false",
- "checkoutSubmodules": false
- },
- "processParameters": {},
- "quality": "definition",
- "drafts": [],
- "queue": {
- "id": 36,
- "name": "DotNet-Build",
- "pool": {
- "id": 39,
- "name": "DotNet-Build"
- }
- },
- "id": 6102,
- "name": "Core-Setup-Windows-BT",
- "path": "\\",
- "type": "build",
- "queueStatus": "enabled",
- "project": {
- "id": "0bdbc590-a062-4c3f-b0f6-9383f67865ee",
- "name": "DevDiv",
- "description": "Visual Studio and DevDiv team project for git source code repositories. Work items will be added for Adams, Dev14 work items are tracked in vstfdevdiv. ",
- "url": "https://devdiv.visualstudio.com/DefaultCollection/_apis/projects/0bdbc590-a062-4c3f-b0f6-9383f67865ee",
- "state": "wellFormed",
- "revision": 418098432,
- "visibility": "organization"
- }
-}
\ No newline at end of file
diff --git a/buildpipeline/linux-musl.groovy b/buildpipeline/linux-musl.groovy
deleted file mode 100644
index 2d51a6e9ee..0000000000
--- a/buildpipeline/linux-musl.groovy
+++ /dev/null
@@ -1,16 +0,0 @@
-@Library('dotnet-ci') _
-
-// Incoming parameters. Access with "params.".
-// Note that the parameters will be set as env variables so we cannot use names that conflict
-// with the engineering system parameter names.
-// CGroup - Build configuration.
-
-simpleDockerNode('microsoft/dotnet-buildtools-prereqs:alpine-3.6-3148f11-20171119021156') {
- stage ('Checkout source') {
- checkoutRepo()
- }
-
- stage ('Build Product') {
- sh "./build.sh -ConfigurationGroup=${params.CGroup} -TargetArchitecture=${params.AGroup} -PortableBuild=false -strip-symbols -SkipTests=false -- /p:OutputRid=linux-musl-${params.AGroup}"
- }
-}
diff --git a/buildpipeline/pipeline.json b/buildpipeline/pipeline.json
deleted file mode 100644
index fd619a4115..0000000000
--- a/buildpipeline/pipeline.json
+++ /dev/null
@@ -1,226 +0,0 @@
-{
- "Repository": "core-setup",
- "Definitions": {
- "Path": ".",
- "Type": "VSTS",
- "BaseUrl": "https://devdiv.visualstudio.com/DefaultCollection"
- },
- "Pipelines": [
- {
- "Name": "Trusted-All-Release",
- "Parameters": {
- "TreatWarningsAsErrors": "false"
- },
- "BuildParameters": {
- "BuildConfiguration": "Release"
- },
- "Definitions": [
- {
- "Name": "Core-Setup-Linux-BT",
- "Parameters": {
- "PB_DockerTag": "centos-7-d485f41-20173404063424",
- "PB_AdditionalBuildArguments":"-PortableBuild=true -strip-symbols -SkipTests=$(PB_SkipTests)",
- "PB_AdditionalMSBuildArguments":"/p:DotNetRestoreSources=$(PB_RestoreSource) /p:StabilizePackageVersion=$(PB_IsStable) /p:PackageVersionStamp=$(PB_VersionStamp)",
- "PB_PortableBuild": "true"
- },
- "ReportingParameters": {
- "SubType": "PortableBuild",
- "OperatingSystem": "RedHat 7",
- "Type": "build/product/",
- "Platform": "x64"
- }
- },
- {
- "Name": "Core-Setup-Linux-Arm-BT",
- "Parameters": {
- "PB_DockerTag": "centos-6-376e1a3-20174311014331",
- "PB_TargetArchitecture": "x64",
- "PB_AdditionalBuildArguments":"-TargetArchitecture=x64 -PortableBuild=false -strip-symbols -SkipTests=$(PB_SkipTests)",
- "PB_AdditionalMSBuildArguments":"/p:OutputRid=rhel.6-x64 /p:DotNetRestoreSources=$(PB_RestoreSource) /p:StabilizePackageVersion=$(PB_IsStable) /p:PackageVersionStamp=$(PB_VersionStamp)",
- "PB_PortableBuild": "false"
- },
- "ReportingParameters": {
- "OperatingSystem": "RedHat6",
- "Type": "build/product/",
- "Platform": "x64"
- }
- },
- {
- "Name": "Core-Setup-Linux-Arm-BT",
- "Parameters": {
- "PB_DockerTag": "alpine-3.6-3148f11-20171119021156",
- "PB_TargetArchitecture": "x64",
- "PB_AdditionalBuildArguments":"-TargetArchitecture=x64 -PortableBuild=false -strip-symbols -SkipTests=$(PB_SkipTests)",
- "PB_AdditionalMSBuildArguments":"/p:OutputRid=linux-musl-x64 /p:DotNetRestoreSources=$(PB_RestoreSource) /p:StabilizePackageVersion=$(PB_IsStable) /p:PackageVersionStamp=$(PB_VersionStamp)",
- "PB_PortableBuild": "false"
- },
- "ReportingParameters": {
- "OperatingSystem": "Linux-musl",
- "Type": "build/product/",
- "Platform": "x64"
- }
- },
- {
- "Name": "Core-Setup-Linux-Arm-BT",
- "Parameters": {
- "PB_DockerTag": "ubuntu-14.04-cross-e435274-20180323032140",
- "PB_TargetArchitecture": "arm",
- "PB_AdditionalBuildArguments":"-TargetArchitecture=arm -PortableBuild=true -SkipTests=true -CrossBuild=true -strip-symbols",
- "PB_AdditionalMSBuildArguments": "/p:DotNetRestoreSources=$(PB_RestoreSource) /p:StabilizePackageVersion=$(PB_IsStable) /p:PackageVersionStamp=$(PB_VersionStamp)",
- "PB_CrossBuildArgs": "-e ROOTFS_DIR ",
- "PB_PortableBuild": "true"
- },
- "ReportingParameters": {
- "SubType": "PortableBuild",
- "OperatingSystem": "Ubuntu 14.04",
- "Type": "build/product/",
- "Platform": "arm"
- }
- },
- {
- "Name": "Core-Setup-Linux-Arm-BT",
- "Parameters": {
- "PB_DockerTag": "ubuntu-16.04-cross-arm64-a3ae44b-20180316023254",
- "PB_TargetArchitecture": "arm64",
- "PB_AdditionalBuildArguments":"-TargetArchitecture=arm64 -PortableBuild=true -SkipTests=true -CrossBuild=true -strip-symbols",
- "PB_AdditionalMSBuildArguments": "/p:DotNetRestoreSources=$(PB_RestoreSource) /p:StabilizePackageVersion=$(PB_IsStable) /p:PackageVersionStamp=$(PB_VersionStamp)",
- "PB_CrossBuildArgs": "-e ROOTFS_DIR=$(ROOTFS_DIR) ",
- "PB_PortableBuild": "true"
- },
- "ReportingParameters": {
- "SubType": "PortableBuild",
- "OperatingSystem": "Ubuntu 16.04",
- "Type": "build/product/",
- "Platform": "arm64"
- }
- },
- {
- "Name": "Core-Setup-OSX-BT",
- "Parameters": {
- "PB_AdditionalBuildArguments": "-PortableBuild=true -strip-symbols -SkipTests=$(PB_SkipTests)",
- "PB_AdditionalMSBuildArguments": "/p:DotNetRestoreSources=$(PB_RestoreSource) /p:StabilizePackageVersion=$(PB_IsStable) /p:PackageVersionStamp=$(PB_VersionStamp)",
- "PB_PortableBuild": "true"
- },
- "ReportingParameters": {
- "SubType": "PortableBuild",
- "OperatingSystem": "OSX",
- "Type": "build/product/",
- "Platform": "x64"
- }
- },
- {
- "Name": "Core-Setup-Windows-Arm-BT",
- "Parameters": {
- "PB_AdditionalMSBuildArguments": "/p:SkipTests=true /p:DotNetRestoreSources=$(PB_RestoreSource) /p:StabilizePackageVersion=$(PB_IsStable) /p:PackageVersionStamp=$(PB_VersionStamp)",
- "PB_TargetArchitecture": "arm",
- "PB_PortableBuild": "true"
- },
- "ReportingParameters": {
- "SubType": "PortableBuild",
- "OperatingSystem": "Windows",
- "Type": "build/product/",
- "Platform": "arm"
- }
- },
- {
- "Name": "Core-Setup-Windows-Arm-BT",
- "Parameters": {
- "PB_AdditionalMSBuildArguments": "/p:SkipTests=true /p:NativeToolSetDir=C:\\tools\\clr /p:DotNetRestoreSources=$(PB_RestoreSource) /p:StabilizePackageVersion=$(PB_IsStable) /p:PackageVersionStamp=$(PB_VersionStamp)",
- "PB_TargetArchitecture": "arm64",
- "PB_PortableBuild": "true"
- },
- "ReportingParameters": {
- "SubType": "PortableBuild",
- "OperatingSystem": "Windows",
- "Type": "build/product/",
- "Platform": "arm64"
- }
- },
- {
- "Name": "Core-Setup-Windows-BT",
- "Parameters": {
- "PB_TargetArchitecture": "x64",
- "PB_PortableBuild": "true",
- "PB_AdditionalMSBuildArguments": "/p:SkipTests=$(PB_SkipTests) /p:DotNetRestoreSources=$(PB_RestoreSource) /p:StabilizePackageVersion=$(PB_IsStable) /p:PackageVersionStamp=$(PB_VersionStamp)",
- "PB_PublishRidAgnosticPackages": "true",
- "PB_BuildFullPlatformManifest": "true"
- },
- "ReportingParameters": {
- "OperatingSystem": "Windows",
- "SubType": "PortableBuild",
- "Type": "build/product/",
- "Platform": "x64"
- }
- },
- {
- "Name": "Core-Setup-Windows-BT",
- "Parameters": {
- "PB_TargetArchitecture": "x86",
- "PB_PortableBuild": "true",
- "PB_AdditionalMSBuildArguments": "/p:SkipTests=$(PB_SkipTests) /p:DotNetRestoreSources=$(PB_RestoreSource) /p:StabilizePackageVersion=$(PB_IsStable) /p:PackageVersionStamp=$(PB_VersionStamp)"
- },
- "ReportingParameters": {
- "OperatingSystem": "Windows",
- "SubType": "PortableBuild",
- "Type": "build/product/",
- "Platform": "x86"
- }
- }
- ]
- },
- {
- "Name": "Publish finalized build",
- "Parameters": {
- "TreatWarningsAsErrors": "false"
- },
- "BuildParameters": {
- "BuildConfiguration": "Release"
- },
- "Definitions": [
- {
- "Name": "Core-Setup-Publish",
- "Parameters": {
- "PB_TargetArchitecture": "x64",
- "PB_AdditionalMSBuildArguments": "/p:StabilizePackageVersion=$(PB_IsStable) /p:PackageVersionStamp=$(PB_VersionStamp)"
- },
- "ReportingParameters": {
- "OperatingSystem": "Windows",
- "SubType": "Publish",
- "Type": "build/product/",
- "Platform": "x64"
- }
- }
- ],
- "DependsOn": [
- "Trusted-All-Release"
- ]
- },
- {
- "Name": "Signing validation",
- "Parameters": {
- "TreatWarningsAsErrors": "false"
- },
- "BuildParameters": {
- "BuildConfiguration": "Release"
- },
- "Definitions": [
- {
- "Name": "Core-Setup-Signing-Validation",
- "Parameters": {
- "PB_TargetArchitecture": "x64",
- "PB_AdditionalMSBuildArguments": "/p:StabilizePackageVersion=$(PB_IsStable) /p:PackageVersionStamp=$(PB_VersionStamp)"
- },
- "ReportingParameters": {
- "OperatingSystem": "Windows",
- "SubType": "Validation",
- "Type": "build/product/",
- "Platform": "x64"
- }
- }
- ],
- "DependsOn": [
- "Trusted-All-Release"
- ]
- }
- ]
-}
diff --git a/buildpipeline/pipelinejobs.groovy b/buildpipeline/pipelinejobs.groovy
deleted file mode 100644
index bbd919dcac..0000000000
--- a/buildpipeline/pipelinejobs.groovy
+++ /dev/null
@@ -1,49 +0,0 @@
-// Import the utility functionality.
-
-import jobs.generation.JobReport;
-import jobs.generation.Utilities;
-import org.dotnet.ci.pipelines.Pipeline
-
-// The input project name (e.g. dotnet/core-setup)
-def project = GithubProject
-// The input branch name (e.g. master)
-def branch = GithubBranchName
-
-// **************************
-// Define innerloop testing. Any configuration in ForPR will run for every PR but all other configurations
-// will have a trigger that can be
-// **************************
-
-def linuxmuslPipeline = Pipeline.createPipelineForGithub(this, project, branch, 'buildpipeline/linux-musl.groovy')
-
-def configurations = [
- ['Pipeline':linuxmuslPipeline, 'Name':'Linux-musl' ,'ForPR':"Debug-x64", 'Arch':['x64']],
-]
-
-configurations.each { config ->
- ['Debug', 'Release'].each { configurationGroup ->
- (config.Arch ?: ['x64', 'x86']).each { archGroup ->
- def triggerName = "${config.Name} ${archGroup} ${configurationGroup} Build"
-
- def pipeline = config.Pipeline
- def params = ['CGroup':configurationGroup,
- 'AGroup':archGroup]
-
- // Add default PR triggers for particular configurations but manual triggers for all
- if (config.ForPR.contains("${configurationGroup}-${archGroup}")) {
- pipeline.triggerPipelineOnEveryGithubPR(triggerName, params)
- }
- else {
- pipeline.triggerPipelineOnGithubPRComment(triggerName, params)
- }
-
- // Add trigger for all configurations to run on merge
- pipeline.triggerPipelineOnGithubPush(params)
-}}}
-
-JobReport.Report.generateJobReport(out)
-
-// Make the call to generate the help job
-Utilities.createHelperJob(this, project, branch,
- "Welcome to the ${project} Repository", // This is prepended to the help message
- "Have a nice day!") // This is appended to the help message. You might put known issues here.
diff --git a/buildpipeline/security/DotNet-Core-Setup-Security-Windows.json b/buildpipeline/security/DotNet-Core-Setup-Security-Windows.json
deleted file mode 100644
index ccf8971ad7..0000000000
--- a/buildpipeline/security/DotNet-Core-Setup-Security-Windows.json
+++ /dev/null
@@ -1,587 +0,0 @@
-{
- "build": [
- {
- "enabled": true,
- "continueOnError": true,
- "alwaysRun": false,
- "displayName": "Run clean.cmd",
- "timeoutInMinutes": 0,
- "condition": "succeeded()",
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "clean.cmd",
- "arguments": "-all",
- "workingFolder": "$(Build.SourcesDirectory)",
- "failOnStandardError": "false"
- }
- },
- {
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Run init-tools.cmd",
- "timeoutInMinutes": 0,
- "condition": "succeeded()",
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "init-tools.cmd",
- "arguments": "",
- "workingFolder": "$(Build.SourcesDirectory)",
- "failOnStandardError": "false"
- }
- },
- {
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "Download Packages",
- "timeoutInMinutes": 0,
- "condition": "succeeded()",
- "task": {
- "id": "c6c4c611-aa2e-4a33-b606-5eaba2196824",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "solution": "$(Build.SourcesDirectory)\\buildpipeline\\security\\syncAzure.proj",
- "msbuildLocationMethod": "version",
- "msbuildVersion": "15.0",
- "msbuildArchitecture": "x64",
- "msbuildLocation": "",
- "platform": "x64",
- "configuration": "$(BuildConfiguration)",
- "msbuildArguments": "/p:AzureAccount=\"$(PB_CloudDropAccountName)\" /p:AzureToken=\"$(PB_CloudDropAccessToken)\" /p:BlobName=\"$(PB_BlobName)\" /verbosity:diag",
- "clean": "false",
- "maximumCpuCount": "false",
- "restoreNugetPackages": "false",
- "logProjectEvents": "false",
- "createLogFile": "false"
- }
- },
- {
- "enabled": true,
- "continueOnError": true,
- "alwaysRun": false,
- "displayName": "Extract downloaded nupkgs",
- "timeoutInMinutes": 0,
- "condition": "succeeded()",
- "task": {
- "id": "e213ff0f-5d5c-4791-802d-52ea3e7be1f1",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "scriptType": "inlineScript",
- "scriptName": "",
- "arguments": "$(Build.SourcesDirectory)",
- "workingFolder": "$(Build.SourcesDirectory)",
- "inlineScript": "param($SrcDir)\n$secDir = Join-Path \"$SrcDir\" \"security\"\n$pkgDir = \"$SrcDir\\packages\\AzureTransfer\"\ngci \"$pkgDir\\*.nupkg\" | rename-item -newname { [io.path]::ChangeExtension($_.name, \"zip\") }\ngci \"$pkgDir\\*.zip\" | % {\n$dstDir = Join-Path \"$secDir\" $($_.BaseName)\nExpand-Archive -Path $($_.FullName) -DestinationPath \"$dstDir\" -Force\n}\n",
- "failOnStandardError": "true"
- }
- },
- {
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "List all files",
- "timeoutInMinutes": 0,
- "condition": "succeeded()",
- "task": {
- "id": "e213ff0f-5d5c-4791-802d-52ea3e7be1f1",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "scriptType": "inlineScript",
- "scriptName": "",
- "arguments": "$(Build.SourcesDirectory)",
- "workingFolder": "$(Build.SourcesDirectory)",
- "inlineScript": "param($SrcDir)\n$fileCount = 0\ngci $SrcDir -recurse | % {\nWrite-Host $($_.FullName)\n$fileCount += 1\n}\nWrite-Host \"File Count: $fileCount\"\n",
- "failOnStandardError": "true"
- }
- },
- {
- "enabled": true,
- "continueOnError": true,
- "alwaysRun": false,
- "displayName": "Remove api-*, ucrtbase*, and files other than DLLs, PDBs and TXT",
- "timeoutInMinutes": 0,
- "condition": "succeeded()",
- "task": {
- "id": "e213ff0f-5d5c-4791-802d-52ea3e7be1f1",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "scriptType": "inlineScript",
- "scriptName": "",
- "arguments": "$(Build.SourcesDirectory)",
- "workingFolder": "$(Build.SourcesDirectory)",
- "inlineScript": "param($SrcDir)\n$secDir = Join-Path \"$SrcDir\" \"security\"\n$extList = \".dll\", \".pdb\", \".txt\"\ngci $secDir -Recurse | where { !$_.PSIsContainer } | % {\nif ($extList -inotcontains $_.Extension -or $_.BaseName -like \"api-*\" -or $_.BaseName -like \"ucrtbase*\")\n{\n rm $_.FullName -Force\n Write-Host \"Removed $($_.FullName)\"\n}\n}\n\n",
- "failOnStandardError": "true"
- }
- },
- {
- "enabled": true,
- "continueOnError": true,
- "alwaysRun": false,
- "displayName": "Workaround for long path - DELETE files with path length greater than or equal to 240 characters",
- "timeoutInMinutes": 0,
- "condition": "succeeded()",
- "task": {
- "id": "e213ff0f-5d5c-4791-802d-52ea3e7be1f1",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "scriptType": "inlineScript",
- "scriptName": "",
- "arguments": "$(Build.SourcesDirectory)",
- "workingFolder": "$(Build.SourcesDirectory)",
- "inlineScript": "param($SrcDir)\n$longPath = New-Object System.Collections.ArrayList\ngci \"$SrcDir\\*\" -recurse | where {!$_.PSIsContainer} | % {\nif ($($_.FullName.Length) -ge 240)\n{\n$longPath.Add($($_.Directory.FullName)) | Out-Null\n}\n}\n$longPath | % {\nStart-Process \"cmd\" -ArgumentList \"/c rd /S /Q $_\" -Wait\nWrite-Host \"DELETED $_\"\n}\n",
- "failOnStandardError": "true"
- }
- },
- {
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "List all files - post delete",
- "timeoutInMinutes": 0,
- "condition": "succeeded()",
- "task": {
- "id": "e213ff0f-5d5c-4791-802d-52ea3e7be1f1",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "scriptType": "inlineScript",
- "scriptName": "",
- "arguments": "$(Build.SourcesDirectory)",
- "workingFolder": "$(Build.SourcesDirectory)",
- "inlineScript": "param($SrcDir)\n$fileCount = 0\ngci $SrcDir -recurse | % {\nWrite-Host $($_.FullName)\n$fileCount += 1\n}\nWrite-Host \"File Count: $fileCount\"\n",
- "failOnStandardError": "true"
- }
- },
- {
- "enabled": true,
- "continueOnError": true,
- "alwaysRun": false,
- "displayName": "Run BinSkim ",
- "timeoutInMinutes": 0,
- "condition": "succeeded()",
- "task": {
- "id": "3056813a-40e9-4b2f-8f6b-612d1bc4e045",
- "versionSpec": "3.*",
- "definitionType": "task"
- },
- "inputs": {
- "InputType": "CommandLine",
- "arguments": "analyze security\\*.dll --recurse --sympath security\\*.pdb --verbose --statistics",
- "Function": "analyze",
- "AnalyzeTarget": "$(Build.ArtifactStagingDirectory)",
- "AnalyzeSymPath": "",
- "AnalyzeConfigPath": "default",
- "AnalyzePluginPath": "",
- "AnalyzeRecurse": "true",
- "AnalyzeVerbose": "true",
- "AnalyzeHashes": "true",
- "AnalyzeStatistics": "false",
- "AnalyzeEnvironment": "false",
- "ExportRulesOutputType": "SARIF",
- "DumpTarget": "$(Build.ArtifactStagingDirectory)",
- "DumpRecurse": "true",
- "DumpVerbose": "true",
- "toolVersion": "Latest"
- }
- },
- {
- "enabled": true,
- "continueOnError": true,
- "alwaysRun": false,
- "displayName": "Run APIScan",
- "timeoutInMinutes": 0,
- "condition": "succeeded()",
- "task": {
- "id": "9adea2b1-3752-438c-80c6-a6f0a812abdd",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "targetMode": "binarysym",
- "softwareFolder": "$(Build.SourcesDirectory)\\security",
- "mpdFolder": "",
- "softwareName": "Core-Setup",
- "softwareVersionNum": "$(PB_BuildNumber)",
- "softwareBuildNum": "$(PB_BuildNumber)",
- "modeType": "prerelease",
- "noCopySymbols": "false",
- "noCopyBinaries": "false",
- "noDecompress": "true",
- "exclusionList": "",
- "email": "",
- "symbolsFolder": "$(Build.SourcesDirectory)\\security",
- "preBbtBinariesFolder": "",
- "preBbtSymbolsFolder": "",
- "isLargeApp": "false",
- "analyzerTimeout": "00:00:00",
- "preserveTempFiles": "false",
- "toolVersion": "Latest"
- }
- },
- {
- "enabled": true,
- "continueOnError": false,
- "alwaysRun": false,
- "displayName": "git checkout",
- "timeoutInMinutes": 0,
- "condition": "succeeded()",
- "task": {
- "id": "e213ff0f-5d5c-4791-802d-52ea3e7be1f1",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "scriptType": "inlineScript",
- "scriptName": "",
- "arguments": "$(Build.SourcesDirectory) \"$(PB_Git)\"",
- "workingFolder": "$(Build.SourcesDirectory)",
- "inlineScript": "param($SrcDir, $git)\n$pkgExtPath= Join-Path \"$SrcDir\" \"security\"\ngci \"$pkgExtPath\\version.txt\" -Recurse | % { \n$sha = gc $_\nWrite-Host \"$sha\"\nif (-not [string]::IsNullOrWhiteSpace($sha))\n{\nStart-Process \"$git\" -ArgumentList \"checkout -- .\" -Wait -Verbose -ErrorAction Stop\nStart-Process \"$git\" -ArgumentList \"checkout $sha\" -Wait -Verbose -ErrorAction Stop\nWrite-Host \"Checked out at $sha\"\nbreak\n}\n}",
- "failOnStandardError": "true"
- }
- },
- {
- "enabled": true,
- "continueOnError": true,
- "alwaysRun": false,
- "displayName": "Run CredScan",
- "timeoutInMinutes": 0,
- "condition": "succeeded()",
- "task": {
- "id": "ea576cd4-c61f-48f8-97e7-a3cb07b90a6f",
- "versionSpec": "2.*",
- "definitionType": "task"
- },
- "inputs": {
- "outputFormat": "pre",
- "toolVersion": "Latest",
- "scanFolder": "$(Build.SourcesDirectory)",
- "searchersFileType": "Default",
- "searchersFile": "",
- "suppressionsFile": "",
- "suppressAsError": "false",
- "batchSize": ""
- }
- },
- {
- "enabled": true,
- "continueOnError": true,
- "alwaysRun": false,
- "displayName": "Run PoliCheck",
- "timeoutInMinutes": 0,
- "condition": "succeeded()",
- "task": {
- "id": "d785890c-0d0d-46bd-8167-8fa9d49990c7",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "inputType": "Basic",
- "cmdLineArgs": "/F:$(Build.SourcesDirectory) /T:9 /O:PoliCheck.xml",
- "targetType": "F",
- "targetArgument": "$(Build.SourcesDirectory)",
- "importEx": "0",
- "termTypeT": "0029a9",
- "termTypeTCustom": "9",
- "termTypeK": "",
- "termTypeL": "",
- "EXGT": "false",
- "result": "PoliCheck.xml",
- "optionsFC": "1",
- "optionsXS": "1",
- "optionsCTGLEN": "",
- "optionsSEV": "",
- "optionsPE": "",
- "optionsHMENABLE": "",
- "optionsHPATH": "",
- "optionsHVER": "",
- "optionsRulesDBPath": "",
- "optionsRule": "",
- "optionsXCLASS": "",
- "optionsTASKNAME": "",
- "optionsWORKINGDIRECTORY": "",
- "optionsFTPATH": "",
- "optionsD": "",
- "optionsB1": "",
- "optionsB2": "",
- "optionsB3": "",
- "optionsOCDB": "",
- "toolVersion": "Latest"
- }
- },
- {
- "enabled": true,
- "continueOnError": true,
- "alwaysRun": false,
- "displayName": "Post Analysis",
- "timeoutInMinutes": 0,
- "condition": "succeeded()",
- "task": {
- "id": "f5679091-e6da-4974-a8dc-0eec03a8ea63",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "APIScan": "true",
- "BinScope": "false",
- "BinSkim": "true",
- "BinSkimBreakOn": "Error",
- "CredScan": "true",
- "FortifySCA": "false",
- "FxCop": "false",
- "FxCopBreakOn": "ErrorAbove",
- "ModernCop": "false",
- "ModernCopBreakOn": "Error",
- "PoliCheck": "true",
- "PoliCheckBreakOn": "Severity1",
- "SDLNativeRules": "false"
- }
- },
- {
- "enabled": true,
- "continueOnError": true,
- "alwaysRun": false,
- "displayName": "Publish Security Analysis Logs",
- "timeoutInMinutes": 0,
- "condition": "succeeded()",
- "task": {
- "id": "4096c760-3a8a-435d-9689-88c0311bbc0e",
- "versionSpec": "2.*",
- "definitionType": "task"
- },
- "inputs": {
- "ArtifactName": "CodeAnalysisLogs",
- "ArtifactType": "Container",
- "TargetPath": "\\\\my\\share\\$(Build.DefinitionName)\\$(Build.BuildNumber)",
- "RvName": "",
- "ProductComponentName": "",
- "ProductVersionNumber": "",
- "PlatformName": "",
- "SDLToolName": "",
- "SDLToolResultFile": ""
- }
- },
- {
- "enabled": true,
- "continueOnError": true,
- "alwaysRun": false,
- "displayName": "TSA upload to Codebase: DotNet-Core-Setup-Trusted_$(CodeBase) Stamp: Azure",
- "timeoutInMinutes": 0,
- "condition": "succeeded()",
- "task": {
- "id": "3da26988-bb64-4a23-8f06-45531d297dae",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "codebase": "NewOrUpdate",
- "tsaStamp": "Azure",
- "tsaWebApiUrl": "$(TSAStamp)",
- "codeBaseName": "DotNet-Core-Setup-Trusted_$(CodeBase)",
- "notificationAlias": "$(NotificationAlias)",
- "codeBaseAdmins": "NORTHAMERICA\\raeda",
- "instanceUrlAzure": "MSAZURE",
- "instanceUrlDevDiv": "DEVDIV",
- "projectNameMSAZURE": "One",
- "projectNameIDENTITYDIVISION": "",
- "projectNameDEVDIV": "DevDiv",
- "areaPath": "One\\DevDiv\\DotNetCore",
- "iterationPath": "One",
- "uploadAPIScan": "true",
- "uploadBinScope": "false",
- "uploadBinSkim": "true",
- "uploadCredScan": "true",
- "uploadFortifySCA": "false",
- "uploadFxCop": "false",
- "uploadModernCop": "false",
- "uploadPoliCheck": "true",
- "uploadPREfast": "false",
- "validateToolOutput": "Warning",
- "validateCompatibility": "Error",
- "uploadAsync": "true"
- }
- },
- {
- "enabled": true,
- "continueOnError": true,
- "alwaysRun": false,
- "displayName": "Run clean.cmd",
- "timeoutInMinutes": 0,
- "condition": "succeeded()",
- "task": {
- "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
- "versionSpec": "1.*",
- "definitionType": "task"
- },
- "inputs": {
- "filename": "clean.cmd",
- "arguments": "-all",
- "workingFolder": "$(Build.SourcesDirectory)",
- "failOnStandardError": "false"
- }
- }
- ],
- "options": [
- {
- "enabled": false,
- "definition": {
- "id": "5bc3cfb7-6b54-4a4b-b5d2-a3905949f8a6"
- },
- "inputs": {}
- },
- {
- "enabled": false,
- "definition": {
- "id": "7c555368-ca64-4199-add6-9ebaf0b0137d"
- },
- "inputs": {
- "multipliers": "[]",
- "parallel": "false",
- "continueOnError": "true",
- "additionalFields": "{}"
- }
- },
- {
- "enabled": false,
- "definition": {
- "id": "a9db38f9-9fdc-478c-b0f9-464221e58316"
- },
- "inputs": {
- "workItemType": "234347",
- "assignToRequestor": "true",
- "additionalFields": "{}"
- }
- },
- {
- "enabled": false,
- "definition": {
- "id": "57578776-4c22-4526-aeb0-86b6da17ee9c"
- },
- "inputs": {}
- },
- {
- "enabled": false,
- "definition": {
- "id": "5d58cc01-7c75-450c-be18-a388ddb129ec"
- },
- "inputs": {
- "branchFilters": "[\"+refs/heads/*\"]",
- "additionalFields": "{}"
- }
- }
- ],
- "variables": {
- "system.debug": {
- "value": "false"
- }
- },
- "demands": [
- "Agent.OS -equals windows_nt",
- "msbuild"
- ],
- "retentionRules": [
- {
- "branches": [
- "+refs/heads/*"
- ],
- "artifacts": [
- "build.SourceLabel"
- ],
- "artifactTypesToDelete": [],
- "daysToKeep": 10,
- "minimumToKeep": 1,
- "deleteBuildRecord": true,
- "deleteTestResults": true
- }
- ],
- "_links": {
- "self": {
- "href": "https://devdiv.visualstudio.com/0bdbc590-a062-4c3f-b0f6-9383f67865ee/_apis/build/Definitions/6661"
- },
- "web": {
- "href": "https://devdiv.visualstudio.com/_permalink/_build/index?collectionId=011b8bdf-6d56-4f87-be0d-0092136884d9&projectId=0bdbc590-a062-4c3f-b0f6-9383f67865ee&definitionId=6661"
- },
- "editor": {
- "href": "https://devdiv.visualstudio.com/_permalink/_build/definitionEditor?collectionId=011b8bdf-6d56-4f87-be0d-0092136884d9&projectId=0bdbc590-a062-4c3f-b0f6-9383f67865ee&definitionId=6661"
- },
- "badge": {
- "href": "https://devdiv.visualstudio.com/_apis/public/build/definitions/0bdbc590-a062-4c3f-b0f6-9383f67865ee/6661/badge"
- }
- },
- "buildNumberFormat": "$(date:yyyyMMdd)$(rev:-rr)",
- "jobAuthorizationScope": 1,
- "jobTimeoutInMinutes": 600,
- "jobCancelTimeoutInMinutes": 5,
- "badgeEnabled": true,
- "repository": {
- "properties": {
- "cleanOptions": "3",
- "labelSources": "0",
- "labelSourcesFormat": "$(build.buildNumber)",
- "reportBuildStatus": "true",
- "gitLfsSupport": "false",
- "skipSyncSource": "false",
- "checkoutNestedSubmodules": "false",
- "fetchDepth": "0"
- },
- "id": "c19ea379-feb7-4ca5-8f7f-5f2b5095ea62",
- "type": "TfsGit",
- "name": "DotNet-Core-Setup-Trusted",
- "url": "https://devdiv.visualstudio.com/DevDiv/_git/DotNet-Core-Setup-Trusted",
- "defaultBranch": "refs/heads/master",
- "clean": "true",
- "checkoutSubmodules": false
- },
- "processParameters": {},
- "quality": "definition",
- "authoredBy": {
- "id": "9d5fdf9f-36b6-4d0c-a12e-2737a673af94",
- "displayName": "Ravi Eda",
- "uniqueName": "raeda@microsoft.com",
- "url": "https://app.vssps.visualstudio.com/Aa44b2c06-f247-425c-8464-4a0676af910a/_apis/Identities/9d5fdf9f-36b6-4d0c-a12e-2737a673af94",
- "imageUrl": "https://devdiv.visualstudio.com/_api/_common/identityImage?id=9d5fdf9f-36b6-4d0c-a12e-2737a673af94"
- },
- "queue": {
- "id": 36,
- "name": "DotNet-Build",
- "pool": {
- "id": 39,
- "name": "DotNet-Build"
- }
- },
- "id": 6661,
- "name": "DotNet-Core-Setup-Security-Windows",
- "url": "https://devdiv.visualstudio.com/0bdbc590-a062-4c3f-b0f6-9383f67865ee/_apis/build/Definitions/6661",
- "uri": "vstfs:///Build/Definition/6661",
- "path": "\\",
- "type": 2,
- "revision": 2,
- "createdDate": "2017-06-21T21:58:12.397Z",
- "project": {
- "id": "0bdbc590-a062-4c3f-b0f6-9383f67865ee",
- "name": "DevDiv",
- "description": "Visual Studio and DevDiv team project for git source code repositories. Work items will be added for Adams, Dev14 work items are tracked in vstfdevdiv. ",
- "url": "https://devdiv.visualstudio.com/_apis/projects/0bdbc590-a062-4c3f-b0f6-9383f67865ee",
- "state": "wellFormed",
- "revision": 418097676,
- "visibility": 0
- }
-}
diff --git a/buildpipeline/security/dir.props b/buildpipeline/security/dir.props
deleted file mode 100644
index 28bd945d4a..0000000000
--- a/buildpipeline/security/dir.props
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/buildpipeline/security/pipeline.json b/buildpipeline/security/pipeline.json
deleted file mode 100644
index 6f88927589..0000000000
--- a/buildpipeline/security/pipeline.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "Repository": "core-setup",
- "Definitions": {
- "Path": ".",
- "Type": "VSTS",
- "BaseUrl": "https://devdiv.visualstudio.com/DefaultCollection",
- "SkipBranchAndVersionOverrides": "false"
- },
- "Pipelines": [
- {
- "Name": "Security Build for Windows",
- "Parameters": {
- "TreatWarningsAsErrors": "false"
- },
- "Definitions": [
- {
- "Name": "DotNet-Core-Setup-Security-Windows"
- }
- ]
- }
- ]
-}
diff --git a/buildpipeline/security/syncAzure.proj b/buildpipeline/security/syncAzure.proj
deleted file mode 100644
index 7eaa6ed490..0000000000
--- a/buildpipeline/security/syncAzure.proj
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
-
- dotnet
- $(PackagesDir)AzureTransfer
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/buildpipeline/security/syncAzure.targets b/buildpipeline/security/syncAzure.targets
deleted file mode 100644
index a170c33b6b..0000000000
--- a/buildpipeline/security/syncAzure.targets
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
-
- $(PackagesDir)/AzureTransfer
-
-
-
-
-
-
-
-
- <_CoreHostPackages Include="%(_BlobList.Identity)" Condition="'%(_BlobList.Extension)' == '.nupkg'" />
-
-
-
-
-
diff --git a/clean.cmd b/clean.cmd
deleted file mode 100644
index 338f505abf..0000000000
--- a/clean.cmd
+++ /dev/null
@@ -1,46 +0,0 @@
-@if not defined _echo @echo off
-setlocal EnableDelayedExpansion
-
-set NO_DASHES_ARG=%1
-if not defined NO_DASHES_ARG goto no_help
-if /I [%NO_DASHES_ARG:-=%] == [?] goto Usage
-if /I [%NO_DASHES_ARG:-=%] == [h] goto Usage
-
-:no_help
-
-:: Check if VBCSCompiler.exe is running
-tasklist /fi "imagename eq VBCSCompiler.exe" |find ":" > nul
-:: Compiler is running if errorlevel == 1
-if errorlevel 1 (
- echo Stop VBCSCompiler.exe execution.
- for /f "tokens=2 delims=," %%F in ('tasklist /nh /fi "imagename eq VBCSCompiler.exe" /fo csv') do taskkill /f /PID %%~F
-)
-
-:: Strip all dashes off the argument and use invariant
-:: compare to match as many versions of "all" that we can
-:: All other argument validation happens inside Run.exe
-set NO_DASHES_ARG=%1
-if not defined NO_DASHES_ARG goto no_args
-if /I [%NO_DASHES_ARG:-=%] == [all] (
- echo Cleaning entire working directory ...
- call git clean -xdf
- exit /b !ERRORLEVEL!
-)
-:no_args
-if [%1]==[] set __args=-b
-call %~dp0run.cmd clean %__args% %*
-exit /b %ERRORLEVEL%
-
-:Usage
-echo.
-echo Repository cleaning script.
-echo.
-echo Options:
-echo -b - Deletes the binary output directory.
-echo -p - Deletes the repo-local nuget package directory.
-echo -c - Deletes the user-local nuget package cache.
-echo -all - Combines all of the above.
-echo.
-echo If no option is specified then clean.cmd -b is implied.
-
-exit /b 1
\ No newline at end of file
diff --git a/clean.sh b/clean.sh
deleted file mode 100755
index 179ba57362..0000000000
--- a/clean.sh
+++ /dev/null
@@ -1,40 +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
-
-usage()
-{
- echo "Usage: clean [options]"
- echo "Cleans the local dev environment."
- echo
- echo " -b Delete the binary output directory."
- echo " -p Delete the repo-local NuGet package directory."
- echo " -c Delete the user-local NuGet package caches."
- echo " -all Cleans the root directory."
- echo
- echo "If no option is specified, then \"clean.sh -b\" is implied."
- exit 1
-}
-
-if [ "$1" == "-?" ] || [ "$1" == "-h" ]; then
- usage
-fi
-
-__working_tree_root="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-
-if [ "$*" == "-all" ]
-then
- echo "Removing all untracked files in the working tree"
- git clean -xdf $__working_tree_root
- exit $?
-fi
-
-if [ $# == 0 ]; then
- __args=-b
-fi
-
-$__working_tree_root/run.sh clean $__args $*
-exit $?
\ No newline at end of file
diff --git a/config.json b/config.json
deleted file mode 100644
index f20b4d5946..0000000000
--- a/config.json
+++ /dev/null
@@ -1,370 +0,0 @@
-{
- "settings": {
- "OSGroup": {
- "description": "OS Group for result binaries.",
- "valueType": "property",
- "values": ["Windows_NT", "Linux", "OSX", "FreeBSD", "NetBSD"],
- "defaultValue": "${OSName}"
- },
- "RestoreDuringBuild": {
- "description": "Enables/Disables the restoration of packages.",
- "valueType": "property",
- "values": ["True", "False"],
- "defaultValue": true
- },
- "Platform": {
- "description": "Sets the value of the platform.",
- "valueType": "property",
- "values": ["x86", "arm", "x64", "amd64"],
- "defaultValue": "x64"
- },
- "PortableBuild": {
- "description": "Indicates if this is a portable build.",
- "valueType": "property",
- "values": [ "True", "False"],
- "defaultValue": "False"
- },
- "CrossBuild": {
- "description": "Indicates if this is a linux cross build.",
- "valueType": "property",
- "values": [ "True", "False"],
- "defaultValue": "False"
- },
- "TargetArchitecture":{
- "description": "Build for the specified architecture (x64, x86 (supported only on Windows), arm, or arm64, default: x64)",
- "valueType": "property",
- "values": ["x64", "x86", "arm", "arm64", "armel"],
- "defaultValue": "x64"
- },
- "Framework":{
- "description": "Build the specified framework (netcoreapp1.0, netcoreapp1.1, netcoreapp2.0, or netcoreapp2.1 default: netcoreapp2.1)",
- "valueType": "property",
- "values": ["netcoreapp1.0", "netcoreapp1.1", "netcoreapp2.0", "netcoreapp2.1"],
- "defaultValue": "netcoreapp2.1"
- },
- "ConfigurationGroup": {
- "description": "Sets the configuration group as Release or Debug.",
- "valueType": "property",
- "values": ["Release", "Debug"],
- "defaultValue": "Debug"
- },
- "OfficialBuildId": {
- "description": "Specifies the SeedDate and the revision of the build to generate the version of the libraries.",
- "valueType": "property",
- "values": [],
- "defaultValue": ""
- },
- "MsBuildLogging": {
- "description": "MsBuild logging options.",
- "valueType": "passThrough",
- "values": [],
- "defaultValue": "/flp:v=normal"
- },
- "StripSymbols": {
- "description": "Pass additional argument to native build to configure symbol stripping.",
- "valueType": "property",
- "values": ["true", "false"],
- "defaultValue": false
- },
- "Project": {
- "description": "Project where the commands are going to be applied.",
- "valueType": "passThrough",
- "values": [],
- "defaultValue": ""
- },
- "ExtraParameters": {
- "description": "Extra parameters will be passed to the selected command.",
- "valueType": "passThrough",
- "values": [],
- "defaultValue": ""
- },
- "BatchRestorePackages": {
- "description": "MsBuild target that restores the packages.",
- "valueType": "target",
- "values": [],
- "defaultValue": ""
- },
- "CleanAllProjects": {
- "description": "MsBuild target that deletes the binary output directory.",
- "valueType": "target",
- "values": [],
- "defaultValue": ""
- },
- "CleanPackages": {
- "description": "MsBuild target that deletes the repo-local nuget package directory.",
- "valueType": "target",
- "values": [],
- "defaultValue": ""
- },
- "CleanPackagesCache": {
- "description": "MsBuild target that deletes the user-local nuget package cache.",
- "valueType": "target",
- "values": [],
- "defaultValue": ""
- },
- "GenerateNativeVersionInfo": {
- "description": "Enables generation of the native version header.",
- "valueType": "property",
- "values": ["True", "False"],
- "defaultValue": true
- },
- "GenerateVersionHeader": {
- "description": "MsBuild target that generates the version header.",
- "valueType": "target",
- "values": [],
- "defaultValue": ""
- },
- "CmakeBuildType": {
- "description": "Sets the value of the build configuration.",
- "valueType": "passThrough",
- "values": [],
- "defaultValue": "Debug"
- },
- "HostOs": {
- "description": "OS for result binaries.",
- "valueType": "passThrough",
- "values": ["AnyOS", "Windows_NT", "Linux", "OSX", "FreeBSD", "NetBSD"],
- "defaultValue": "${OSName}"
- },
- "ProcessorCount": {
- "description": "Sets the value of the number of processors available.",
- "valueType": "passThrough",
- "values": ["Numeric values"],
- "defaultValue": "--numproc ${ProcessorCount}"
- },
- "AdditionalArgs": {
- "description": "Pass additional arguments to the native_build script",
- "valueType": "passThrough",
- "values": [],
- "defaultValue": ""
- },
- "SkipTests": {
- "description": "Skip running tests",
- "valueType": "property",
- "values": ["true", "false"],
- "defaultValue":false
- },
- "DisableCrossgen": {
- "description": "Disable crossgen during the build",
- "valueType": "property",
- "values": ["true", "false"],
- "defaultValue":false
- }
- },
- "commands": {
- "sync":{
- "alias":{
- "p":{
- "description": "Restores all NuGet packages for repository.",
- "settings":{
- "RestoreDuringBuild": true,
- "BatchRestorePackages": "default"
- }
- },
- "verbose":{
- "description": "Passes /flp:v=diag to the msbuild command or the value passed by the user.",
- "settings":{
- "MsBuildLogging": "/flp:v=diag;LogFile=sync.log"
- }
- }
- },
- "defaultValues":{
- "toolName": "msbuild",
- "settings": {
- "MsBuildLogging":"/flp:v=normal;LogFile=sync.log",
- "Project":"build.proj"
- }
- }
- },
- "build":{
- "alias": {
- "binaries": {
- "description": "Only builds binaries. It doesn't restore packages.",
- "settings": {
- "RestoreDuringBuild": false
- }
- },
- "src-builds": {
- "description": "Only build src\\src.builds project",
- "settings": {
- "Project": "src\\src.builds"
- }
- },
- "signing-validation": {
- "description": "Build signing validation project.",
- "settings": {
- "Project": "signing\\signingvalidation.proj"
- }
- },
- "GenerateVersion": {
- "description": "Generates the version header for native binaries.",
- "settings": {
- "GenerateNativeVersionInfo": true,
- "GenerateVersionHeader": "default"
- }
- },
- "debug": {
- "description": "Sets ConfigurationGroup=Debug or the value passed by the user.",
- "settings": {
- "ConfigurationGroup": "Debug"
- }
- },
- "release": {
- "description": "Sets ConfigurationGroup=Release or the value passed by the user.",
- "settings": {
- "ConfigurationGroup": "Release"
- }
- },
- "verbose": {
- "description": "Passes /flp:v=diag to the msbuild command or the value passed by the user.",
- "settings": {
- "MsBuildLogging": "/flp:v=diag"
- }
- },
- "cmakelog": {
- "description": "Writes msbuild log to cmake.log",
- "settings": {
- "MsBuildLogging": "/flp:v=diag;LogFile=msbuild-cmake.log"
- }
- },
- "os": {
- "description": "Sets OSGroup=AnyOS or the value passed by the user.",
- "settings": {
- "OSGroup": "default"
- }
- },
- "portable": {
- "description": "Make the build-native script generate binaries that are portable for the platform.",
- "settings": {
- "PortableBuild": "true"
- }
- },
- "skipTests": {
- "description": "Skips running tests",
- "settings": {
- "SkipTests": "true"
- }
- },
- "disableCrossgen": {
- "description": "Disable crossgen during the build",
- "settings": {
- "DisableCrossgen": "true"
- }
- },
- "strip-symbols": {
- "description": "Strip native symbols.",
- "settings": {
- "StripSymbols": true
- }
- }
- },
- "defaultValues":{
- "toolName": "msbuild",
- "settings": {
- "TargetArchitecture": "default",
- "OSGroup": "default",
- "MsBuildLogging":"default",
- "Project":"build.proj"
- }
- }
- },
- "build-native":{
- "alias":{
- "verbose":{
- "description": "Passes /flp:v=diag to the msbuild command or the value passed by the user.",
- "settings":{
- "MsBuildLogging": "/flp:v=diag;LogFile=msbuild-cmake.log"
- }
- },
- "portable":{
- "description": "Make the build-native script generate binaries that are portable for the platform.",
- "settings": {
- "PortableBuild":"true"
- }
- }
- },
- "defaultValues":{
- "toolName": "msbuild",
- "settings": {
- "TargetArchitecture": "default",
- "Framework": "default",
- "OSGroup": "default",
- "MsBuildLogging":"/flp:v=n;LogFile=msbuild-cmake.log"
- }
- }
- },
- "build-custom":{
- "alias":{
- "verbose":{
- "description": "Passes /flp:v=diag to the msbuild command or the value passed by the user.",
- "settings":{
- "MsBuildLogging": "/flp:v=diag;LogFile=msbuild.log"
- }
- }
- },
- "defaultValues":{
- "toolName": "msbuild",
- "settings": {
- "Architecture": "default",
- "TargetArchitecture": "default",
- "Framework": "default",
- "OSGroup": "default",
- "MsBuildLogging":"/flp:v=n;LogFile=msbuild.log"
- }
- }
- },
- "clean":{
- "alias":{
- "b":{
- "description": "Deletes the binary output directory.",
- "settings":{
- "CleanAllProjects": "default"
- }
- },
- "p":{
- "description": "Deletes the repo-local nuget package directory.",
- "settings":{
- "CleanPackages": "default"
- }
- }
- },
- "defaultValues":{
- "toolName": "msbuild",
- "settings": {
- "MsBuildLogging":"/flp:v=normal;LogFile=clean.log",
- "Project":"build.proj"
- }
- }
- }
- },
- "tools": {
- "msbuild": {
- "osSpecific":{
- "windows": {
- "defaultParameters": "/nologo /verbosity:minimal /clp:Summary /maxcpucount /nodeReuse:false",
- "path": "Tools/msbuild.cmd"
- },
- "unix":{
- "defaultParameters": "/nologo /verbosity:minimal /clp:Summary /maxcpucount /l:BinClashLogger,Tools/Microsoft.DotNet.Build.Tasks.dll;LogFile=binclash.log",
- "path": "Tools/msbuild.sh"
- }
- },
- "valueTypes": {
- "property": "/p:{name}={value}",
- "target": "/t:{name}",
- "internal": "/{name}"
- }
- },
- "terminal": {
- "osSpecific":{
- "windows": {
- "filesExtension": "cmd"
- },
- "unix":{
- "filesExtension": "sh"
- }
- },
- "valueTypes": {}
- }
- }
-}
diff --git a/cross/arm/sources.list.jessie b/cross/arm/sources.list.jessie
deleted file mode 100644
index 4d142ac9b1..0000000000
--- a/cross/arm/sources.list.jessie
+++ /dev/null
@@ -1,3 +0,0 @@
-# Debian (sid) # UNSTABLE
-deb http://ftp.debian.org/debian/ sid main contrib non-free
-deb-src http://ftp.debian.org/debian/ sid main contrib non-free
diff --git a/cross/arm/sources.list.trusty b/cross/arm/sources.list.trusty
deleted file mode 100644
index 07d8f88d82..0000000000
--- a/cross/arm/sources.list.trusty
+++ /dev/null
@@ -1,11 +0,0 @@
-deb http://ports.ubuntu.com/ubuntu-ports/ trusty main restricted universe
-deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty main restricted universe
-
-deb http://ports.ubuntu.com/ubuntu-ports/ trusty-updates main restricted universe
-deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty-updates main restricted universe
-
-deb http://ports.ubuntu.com/ubuntu-ports/ trusty-backports main restricted
-deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty-backports main restricted
-
-deb http://ports.ubuntu.com/ubuntu-ports/ trusty-security main restricted universe multiverse
-deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty-security main restricted universe multiverse
\ No newline at end of file
diff --git a/cross/arm/sources.list.vivid b/cross/arm/sources.list.vivid
deleted file mode 100644
index 0b1215e475..0000000000
--- a/cross/arm/sources.list.vivid
+++ /dev/null
@@ -1,11 +0,0 @@
-deb http://ports.ubuntu.com/ubuntu-ports/ vivid main restricted universe
-deb-src http://ports.ubuntu.com/ubuntu-ports/ vivid main restricted universe
-
-deb http://ports.ubuntu.com/ubuntu-ports/ vivid-updates main restricted universe
-deb-src http://ports.ubuntu.com/ubuntu-ports/ vivid-updates main restricted universe
-
-deb http://ports.ubuntu.com/ubuntu-ports/ vivid-backports main restricted
-deb-src http://ports.ubuntu.com/ubuntu-ports/ vivid-backports main restricted
-
-deb http://ports.ubuntu.com/ubuntu-ports/ vivid-security main restricted universe multiverse
-deb-src http://ports.ubuntu.com/ubuntu-ports/ vivid-security main restricted universe multiverse
\ No newline at end of file
diff --git a/cross/arm/sources.list.wily b/cross/arm/sources.list.wily
deleted file mode 100644
index e23d1e02a0..0000000000
--- a/cross/arm/sources.list.wily
+++ /dev/null
@@ -1,11 +0,0 @@
-deb http://ports.ubuntu.com/ubuntu-ports/ wily main restricted universe
-deb-src http://ports.ubuntu.com/ubuntu-ports/ wily main restricted universe
-
-deb http://ports.ubuntu.com/ubuntu-ports/ wily-updates main restricted universe
-deb-src http://ports.ubuntu.com/ubuntu-ports/ wily-updates main restricted universe
-
-deb http://ports.ubuntu.com/ubuntu-ports/ wily-backports main restricted
-deb-src http://ports.ubuntu.com/ubuntu-ports/ wily-backports main restricted
-
-deb http://ports.ubuntu.com/ubuntu-ports/ wily-security main restricted universe multiverse
-deb-src http://ports.ubuntu.com/ubuntu-ports/ wily-security main restricted universe multiverse
\ No newline at end of file
diff --git a/cross/arm/sources.list.xenial b/cross/arm/sources.list.xenial
deleted file mode 100644
index eacd86b7df..0000000000
--- a/cross/arm/sources.list.xenial
+++ /dev/null
@@ -1,11 +0,0 @@
-deb http://ports.ubuntu.com/ubuntu-ports/ xenial main restricted universe
-deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial main restricted universe
-
-deb http://ports.ubuntu.com/ubuntu-ports/ xenial-updates main restricted universe
-deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-updates main restricted universe
-
-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
\ No newline at end of file
diff --git a/cross/arm/toolchain.cmake b/cross/arm/toolchain.cmake
deleted file mode 100644
index fe08a7ad71..0000000000
--- a/cross/arm/toolchain.cmake
+++ /dev/null
@@ -1,28 +0,0 @@
-set(CROSS_ROOTFS $ENV{ROOTFS_DIR})
-
-set(CMAKE_SYSTEM_NAME Linux)
-set(CMAKE_SYSTEM_VERSION 1)
-set(CMAKE_SYSTEM_PROCESSOR armv7l)
-
-## Specify the toolchain
-set(TOOLCHAIN "arm-linux-gnueabihf")
-
-add_compile_options(-target armv7-linux-gnueabihf)
-add_compile_options(-mthumb)
-add_compile_options(-mfpu=vfpv3)
-add_compile_options(--sysroot=${CROSS_ROOTFS})
-
-set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -target ${TOOLCHAIN}")
-set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -B ${CROSS_ROOTFS}/usr/lib/gcc/${TOOLCHAIN}")
-set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -L${CROSS_ROOTFS}/lib/${TOOLCHAIN}")
-set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} --sysroot=${CROSS_ROOTFS}")
-
-set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE)
-set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE)
-set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE)
-
-set(CMAKE_FIND_ROOT_PATH "${CROSS_ROOTFS}")
-set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
-set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
-set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
-set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
diff --git a/cross/arm/trusty.patch b/cross/arm/trusty.patch
deleted file mode 100644
index 2f2972f8eb..0000000000
--- a/cross/arm/trusty.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-diff -u -r a/usr/include/urcu/uatomic/generic.h b/usr/include/urcu/uatomic/generic.h
---- a/usr/include/urcu/uatomic/generic.h 2014-03-28 06:04:42.000000000 +0900
-+++ b/usr/include/urcu/uatomic/generic.h 2017-02-13 10:35:21.189927116 +0900
-@@ -65,17 +65,17 @@
- switch (len) {
- #ifdef UATOMIC_HAS_ATOMIC_BYTE
- case 1:
-- return __sync_val_compare_and_swap_1(addr, old, _new);
-+ return __sync_val_compare_and_swap_1((uint8_t *) addr, old, _new);
- #endif
- #ifdef UATOMIC_HAS_ATOMIC_SHORT
- case 2:
-- return __sync_val_compare_and_swap_2(addr, old, _new);
-+ return __sync_val_compare_and_swap_2((uint16_t *) addr, old, _new);
- #endif
- case 4:
-- return __sync_val_compare_and_swap_4(addr, old, _new);
-+ return __sync_val_compare_and_swap_4((uint32_t *) addr, old, _new);
- #if (CAA_BITS_PER_LONG == 64)
- case 8:
-- return __sync_val_compare_and_swap_8(addr, old, _new);
-+ return __sync_val_compare_and_swap_8((uint64_t *) addr, old, _new);
- #endif
- }
- _uatomic_link_error();
-@@ -100,20 +100,20 @@
- switch (len) {
- #ifdef UATOMIC_HAS_ATOMIC_BYTE
- case 1:
-- __sync_and_and_fetch_1(addr, val);
-+ __sync_and_and_fetch_1((uint8_t *) addr, val);
- return;
- #endif
- #ifdef UATOMIC_HAS_ATOMIC_SHORT
- case 2:
-- __sync_and_and_fetch_2(addr, val);
-+ __sync_and_and_fetch_2((uint16_t *) addr, val);
- return;
- #endif
- case 4:
-- __sync_and_and_fetch_4(addr, val);
-+ __sync_and_and_fetch_4((uint32_t *) addr, val);
- return;
- #if (CAA_BITS_PER_LONG == 64)
- case 8:
-- __sync_and_and_fetch_8(addr, val);
-+ __sync_and_and_fetch_8((uint64_t *) addr, val);
- return;
- #endif
- }
-@@ -139,20 +139,20 @@
- switch (len) {
- #ifdef UATOMIC_HAS_ATOMIC_BYTE
- case 1:
-- __sync_or_and_fetch_1(addr, val);
-+ __sync_or_and_fetch_1((uint8_t *) addr, val);
- return;
- #endif
- #ifdef UATOMIC_HAS_ATOMIC_SHORT
- case 2:
-- __sync_or_and_fetch_2(addr, val);
-+ __sync_or_and_fetch_2((uint16_t *) addr, val);
- return;
- #endif
- case 4:
-- __sync_or_and_fetch_4(addr, val);
-+ __sync_or_and_fetch_4((uint32_t *) addr, val);
- return;
- #if (CAA_BITS_PER_LONG == 64)
- case 8:
-- __sync_or_and_fetch_8(addr, val);
-+ __sync_or_and_fetch_8((uint64_t *) addr, val);
- return;
- #endif
- }
-@@ -180,17 +180,17 @@
- switch (len) {
- #ifdef UATOMIC_HAS_ATOMIC_BYTE
- case 1:
-- return __sync_add_and_fetch_1(addr, val);
-+ return __sync_add_and_fetch_1((uint8_t *) addr, val);
- #endif
- #ifdef UATOMIC_HAS_ATOMIC_SHORT
- case 2:
-- return __sync_add_and_fetch_2(addr, val);
-+ return __sync_add_and_fetch_2((uint16_t *) addr, val);
- #endif
- case 4:
-- return __sync_add_and_fetch_4(addr, val);
-+ return __sync_add_and_fetch_4((uint32_t *) addr, val);
- #if (CAA_BITS_PER_LONG == 64)
- case 8:
-- return __sync_add_and_fetch_8(addr, val);
-+ return __sync_add_and_fetch_8((uint64_t *) addr, val);
- #endif
- }
- _uatomic_link_error();
diff --git a/cross/arm64/sources.list.trusty b/cross/arm64/sources.list.trusty
deleted file mode 100644
index 07d8f88d82..0000000000
--- a/cross/arm64/sources.list.trusty
+++ /dev/null
@@ -1,11 +0,0 @@
-deb http://ports.ubuntu.com/ubuntu-ports/ trusty main restricted universe
-deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty main restricted universe
-
-deb http://ports.ubuntu.com/ubuntu-ports/ trusty-updates main restricted universe
-deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty-updates main restricted universe
-
-deb http://ports.ubuntu.com/ubuntu-ports/ trusty-backports main restricted
-deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty-backports main restricted
-
-deb http://ports.ubuntu.com/ubuntu-ports/ trusty-security main restricted universe multiverse
-deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty-security main restricted universe multiverse
\ No newline at end of file
diff --git a/cross/arm64/sources.list.vivid b/cross/arm64/sources.list.vivid
deleted file mode 100644
index 0b1215e475..0000000000
--- a/cross/arm64/sources.list.vivid
+++ /dev/null
@@ -1,11 +0,0 @@
-deb http://ports.ubuntu.com/ubuntu-ports/ vivid main restricted universe
-deb-src http://ports.ubuntu.com/ubuntu-ports/ vivid main restricted universe
-
-deb http://ports.ubuntu.com/ubuntu-ports/ vivid-updates main restricted universe
-deb-src http://ports.ubuntu.com/ubuntu-ports/ vivid-updates main restricted universe
-
-deb http://ports.ubuntu.com/ubuntu-ports/ vivid-backports main restricted
-deb-src http://ports.ubuntu.com/ubuntu-ports/ vivid-backports main restricted
-
-deb http://ports.ubuntu.com/ubuntu-ports/ vivid-security main restricted universe multiverse
-deb-src http://ports.ubuntu.com/ubuntu-ports/ vivid-security main restricted universe multiverse
\ No newline at end of file
diff --git a/cross/arm64/sources.list.wily b/cross/arm64/sources.list.wily
deleted file mode 100644
index e23d1e02a0..0000000000
--- a/cross/arm64/sources.list.wily
+++ /dev/null
@@ -1,11 +0,0 @@
-deb http://ports.ubuntu.com/ubuntu-ports/ wily main restricted universe
-deb-src http://ports.ubuntu.com/ubuntu-ports/ wily main restricted universe
-
-deb http://ports.ubuntu.com/ubuntu-ports/ wily-updates main restricted universe
-deb-src http://ports.ubuntu.com/ubuntu-ports/ wily-updates main restricted universe
-
-deb http://ports.ubuntu.com/ubuntu-ports/ wily-backports main restricted
-deb-src http://ports.ubuntu.com/ubuntu-ports/ wily-backports main restricted
-
-deb http://ports.ubuntu.com/ubuntu-ports/ wily-security main restricted universe multiverse
-deb-src http://ports.ubuntu.com/ubuntu-ports/ wily-security main restricted universe multiverse
\ No newline at end of file
diff --git a/cross/arm64/sources.list.xenial b/cross/arm64/sources.list.xenial
deleted file mode 100644
index eacd86b7df..0000000000
--- a/cross/arm64/sources.list.xenial
+++ /dev/null
@@ -1,11 +0,0 @@
-deb http://ports.ubuntu.com/ubuntu-ports/ xenial main restricted universe
-deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial main restricted universe
-
-deb http://ports.ubuntu.com/ubuntu-ports/ xenial-updates main restricted universe
-deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-updates main restricted universe
-
-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
\ No newline at end of file
diff --git a/cross/arm64/toolchain.cmake b/cross/arm64/toolchain.cmake
deleted file mode 100644
index 42805492bd..0000000000
--- a/cross/arm64/toolchain.cmake
+++ /dev/null
@@ -1,25 +0,0 @@
-set(CROSS_ROOTFS $ENV{ROOTFS_DIR})
-
-set(CMAKE_SYSTEM_NAME Linux)
-set(CMAKE_SYSTEM_VERSION 1)
-set(CMAKE_SYSTEM_PROCESSOR aarch64)
-
-set(TOOLCHAIN "aarch64-linux-gnu")
-
-add_compile_options(-target ${TOOLCHAIN})
-add_compile_options(--sysroot=${CROSS_ROOTFS})
-
-set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -target ${TOOLCHAIN}")
-set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -B ${CROSS_ROOTFS}/usr/lib/gcc/${TOOLCHAIN}")
-set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -L${CROSS_ROOTFS}/lib/${TOOLCHAIN}")
-set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} --sysroot=${CROSS_ROOTFS}")
-
-set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE)
-set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE)
-set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE)
-
-set(CMAKE_FIND_ROOT_PATH "${CROSS_ROOTFS}")
-set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
-set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
-set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
-set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
\ No newline at end of file
diff --git a/cross/armel/sources.list.jessie b/cross/armel/sources.list.jessie
deleted file mode 100644
index 3d9c3059d8..0000000000
--- a/cross/armel/sources.list.jessie
+++ /dev/null
@@ -1,3 +0,0 @@
-# Debian (jessie) # Stable
-deb http://ftp.debian.org/debian/ jessie main contrib non-free
-deb-src http://ftp.debian.org/debian/ jessie main contrib non-free
diff --git a/cross/armel/tizen-build-rootfs.sh b/cross/armel/tizen-build-rootfs.sh
deleted file mode 100755
index 87c48e78fb..0000000000
--- a/cross/armel/tizen-build-rootfs.sh
+++ /dev/null
@@ -1,44 +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
-
-# Clean-up (TODO-Cleanup: We may already delete $ROOTFS_DIR at ./cross/build-rootfs.sh.)
-# hk0110
-if [ -d "$ROOTFS_DIR" ]; then
- umount $ROOTFS_DIR/*
- rm -rf $ROOTFS_DIR
-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 "<>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 "<>Start configuring Tizen rootfs"
-rm ./usr/lib/libunwind.so
-ln -s libunwind.so.8 ./usr/lib/libunwind.so
-ln -sfn asm-arm ./usr/include/asm
-patch -p1 < $__TIZEN_CROSSDIR/tizen.patch
-echo "</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/releases/milestone/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 base"
-fetch_tizen_pkgs_init standard base
-Inform "fetch common packages"
-fetch_tizen_pkgs armv7l gcc glibc glibc-devel libicu libicu-devel
-fetch_tizen_pkgs noarch linux-glibc-devel
-Inform "fetch coreclr packages"
-fetch_tizen_pkgs armv7l lldb lldb-devel libuuid libuuid-devel libgcc libstdc++ libstdc++-devel libunwind libunwind-devel tizen-release
-Inform "fetch corefx packages"
-fetch_tizen_pkgs armv7l libcom_err libcom_err-devel zlib zlib-devel libopenssl libopenssl-devel krb5 krb5-devel libcurl libcurl-devel
-
-Inform "Initialize unified"
-fetch_tizen_pkgs_init standard unified
-Inform "fetch corefx packages"
-fetch_tizen_pkgs armv7l gssdp gssdp-devel
-
diff --git a/cross/armel/tizen/tizen.patch b/cross/armel/tizen/tizen.patch
deleted file mode 100644
index d223427c97..0000000000
--- a/cross/armel/tizen/tizen.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-diff -u -r a/usr/lib/libc.so b/usr/lib/libc.so
---- a/usr/lib/libc.so 2016-12-30 23:00:08.284951863 +0900
-+++ b/usr/lib/libc.so 2016-12-30 23:00:32.140951815 +0900
-@@ -2,4 +2,4 @@
- Use the shared library, but some functions are only in
- the static library, so try that secondarily. */
- OUTPUT_FORMAT(elf32-littlearm)
--GROUP ( /lib/libc.so.6 /usr/lib/libc_nonshared.a AS_NEEDED ( /lib/ld-linux.so.3 ) )
-+GROUP ( libc.so.6 libc_nonshared.a AS_NEEDED ( ld-linux.so.3 ) )
-diff -u -r a/usr/lib/libpthread.so b/usr/lib/libpthread.so
---- a/usr/lib/libpthread.so 2016-12-30 23:00:19.408951841 +0900
-+++ b/usr/lib/libpthread.so 2016-12-30 23:00:39.068951801 +0900
-@@ -2,4 +2,4 @@
- Use the shared library, but some functions are only in
- the static library, so try that secondarily. */
- OUTPUT_FORMAT(elf32-littlearm)
--GROUP ( /lib/libpthread.so.0 /usr/lib/libpthread_nonshared.a )
-+GROUP ( libpthread.so.0 libpthread_nonshared.a )
diff --git a/cross/armel/toolchain.cmake b/cross/armel/toolchain.cmake
deleted file mode 100644
index 8efb6f32d6..0000000000
--- a/cross/armel/toolchain.cmake
+++ /dev/null
@@ -1,40 +0,0 @@
-set(CROSS_ROOTFS $ENV{ROOTFS_DIR})
-
-set(CMAKE_SYSTEM_NAME Linux)
-set(CMAKE_SYSTEM_VERSION 1)
-set(CMAKE_SYSTEM_PROCESSOR armv7l)
-
-## Specify the toolchain
-set(TOOLCHAIN "arm-linux-gnueabi")
-set(TOOLCHAIN_PREFIX ${TOOLCHAIN}-)
-
-add_compile_options(-target armv7-linux-gnueabi)
-add_compile_options(-mthumb)
-add_compile_options(-mfpu=vfpv3)
-add_compile_options(--sysroot=${CROSS_ROOTFS})
-
-set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -target ${TOOLCHAIN}")
-set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} --sysroot=${CROSS_ROOTFS}")
-
-if("$ENV{__CrossToolChainTargetRID}" MATCHES "tizen.*")
- set(TIZEN_TOOLCHAIN "armv7l-tizen-linux-gnueabi/6.2.1")
- include_directories(${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/)
- include_directories(${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/armv7l-tizen-linux-gnueabi)
- add_compile_options(-Wno-deprecated-declarations) # compile-time option
- add_compile_options(-D__extern_always_inline=inline)
- set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -B${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}")
- set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -L${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}")
-else()
- set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -B${CROSS_ROOTFS}/usr/lib/gcc/${TOOLCHAIN}")
- set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -L${CROSS_ROOTFS}/usr/lib/gcc/${TOOLCHAIN}")
-endif()
-
-set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE)
-set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE)
-set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE)
-
-set(CMAKE_FIND_ROOT_PATH "${CROSS_ROOTFS}")
-set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
-set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
-set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
-set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
diff --git a/cross/build-rootfs.sh b/cross/build-rootfs.sh
deleted file mode 100755
index 16b775ca08..0000000000
--- a/cross/build-rootfs.sh
+++ /dev/null
@@ -1,186 +0,0 @@
-#!/usr/bin/env bash
-
-usage()
-{
- echo "Usage: $0 [BuildArch] [LinuxCodeName] [lldbx.y] [--skipunmount]"
- echo "BuildArch can be: arm(default), armel, arm64, x86"
- echo "LinuxCodeName - optional, Code name for Linux, can be: trusty(default), vivid, wily, xenial. If BuildArch is armel, LinuxCodeName is jessie(default) or tizen."
- echo "lldbx.y - optional, LLDB version, can be: lldb3.6(default), lldb3.8, lldb3.9, no-lldb"
- echo "--skipunmount - optional, will skip the unmount of rootfs folder."
- exit 1
-}
-
-install_Failed()
-{
- echo "Failed to install/symlink packages."
- exit 1
-}
-
-__LinuxCodeName=trusty
-__CrossDir=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
-__InitialDir=$PWD
-__BuildArch=arm
-__UbuntuArch=armhf
-__UbuntuRepo="http://ports.ubuntu.com/"
-__LLDB_Package="lldb-3.6-dev"
-__SkipUnmount=0
-
-# base development support
-__UbuntuPackages="build-essential"
-
-# symlinks fixer
-__UbuntuPackages+=" symlinks"
-
-# CoreCLR and CoreFX dependencies
-__UbuntuPackages+=" gettext"
-__UbuntuPackages+=" libunwind8-dev"
-__UbuntuPackages+=" liblttng-ust-dev"
-__UbuntuPackages+=" libicu-dev"
-
-# CoreFX dependencies
-__UbuntuPackages+=" libcurl4-openssl-dev"
-__UbuntuPackages+=" libkrb5-dev"
-__UbuntuPackages+=" libssl-dev"
-__UbuntuPackages+=" zlib1g-dev"
-
-__UnprocessedBuildArgs=
-for i in "$@" ; do
- lowerI="$(echo $i | awk '{print tolower($0)}')"
- case $lowerI in
- -?|-h|--help)
- usage
- exit 1
- ;;
- arm)
- __BuildArch=arm
- __UbuntuArch=armhf
- ;;
- arm64)
- __BuildArch=arm64
- __UbuntuArch=arm64
- ;;
- armel)
- __BuildArch=armel
- __UbuntuArch=armel
- __UbuntuRepo="http://ftp.debian.org/debian/"
- __LinuxCodeName=jessie
- ;;
- x86)
- __BuildArch=x86
- __UbuntuArch=i386
- __UbuntuRepo="http://archive.ubuntu.com/ubuntu/"
- ;;
- lldb3.6)
- __LLDB_Package="lldb-3.6-dev"
- ;;
- lldb3.8)
- __LLDB_Package="lldb-3.8-dev"
- ;;
- lldb3.9)
- __LLDB_Package="liblldb-3.9-dev"
- ;;
- no-lldb)
- unset __LLDB_Package
- ;;
- vivid)
- if [ "$__LinuxCodeName" != "jessie" ]; then
- __LinuxCodeName=vivid
- fi
- ;;
- wily)
- if [ "$__LinuxCodeName" != "jessie" ]; then
- __LinuxCodeName=wily
- fi
- ;;
- xenial)
- if [ "$__LinuxCodeName" != "jessie" ]; then
- __LinuxCodeName=xenial
- fi
- ;;
- jessie)
- __LinuxCodeName=jessie
- __UbuntuRepo="http://ftp.debian.org/debian/"
- ;;
- tizen)
- if [ "$__BuildArch" != "armel" ]; then
- echo "Tizen is available only for armel."
- usage;
- exit 1;
- fi
- __LinuxCodeName=
- __UbuntuRepo=
- __Tizen=tizen
- ;;
- --skipunmount)
- __SkipUnmount=1
- ;;
- *)
- __UnprocessedBuildArgs="$__UnprocessedBuildArgs $i"
- ;;
- esac
-done
-
-if [ "$__BuildArch" == "armel" ]; then
- __LLDB_Package="lldb-3.5-dev"
-fi
-__UbuntuPackages+=" ${__LLDB_Package:-}"
-
-__RootfsDir="$__CrossDir/rootfs/$__BuildArch"
-
-if [[ -n "$ROOTFS_DIR" ]]; then
- __RootfsDir=$ROOTFS_DIR
-fi
-
-if [ -d "$__RootfsDir" ]; then
- if [ $__SkipUnmount == 0 ]; then
- umount $__RootfsDir/*
- fi
- rm -rf $__RootfsDir
-fi
-
-if [[ -n $__LinuxCodeName ]]; then
- qemu-debootstrap --arch $__UbuntuArch $__LinuxCodeName $__RootfsDir $__UbuntuRepo
- if [ $? -ne 0 ]; then
- install_Failed
- fi
- cp $__CrossDir/$__BuildArch/sources.list.$__LinuxCodeName $__RootfsDir/etc/apt/sources.list
- if [ $? -ne 0 ]; then
- install_Failed
- fi
- chroot $__RootfsDir apt-get update
- if [ $? -ne 0 ]; then
- install_Failed
- fi
- chroot $__RootfsDir apt-get -f -y install
- if [ $? -ne 0 ]; then
- install_Failed
- fi
- chroot $__RootfsDir apt-get -y install $__UbuntuPackages
- if [ $? -ne 0 ]; then
- install_Failed
- fi
- chroot $__RootfsDir symlinks -cr /usr
- if [ $? -ne 0 ]; then
- install_Failed
- fi
-
- if [ $__SkipUnmount == 0 ]; then
- umount $__RootfsDir/*
- if [ $? -ne 0 ]; then
- echo "Failed to unmount RootfsDir."
- exit 1
- fi
- fi
-
- if [[ "$__BuildArch" == "arm" && "$__LinuxCodeName" == "trusty" ]]; then
- pushd $__RootfsDir
- patch -p1 < $__CrossDir/$__BuildArch/trusty.patch
- popd
- fi
-elif [ "$__Tizen" == "tizen" ]; then
- ROOTFS_DIR=$__RootfsDir $__CrossDir/$__BuildArch/tizen-build-rootfs.sh
-else
- echo "Unsupported target platform."
- usage;
- exit 1
-fi
diff --git a/cross/x86/sources.list.trusty b/cross/x86/sources.list.trusty
deleted file mode 100644
index 9b3085436e..0000000000
--- a/cross/x86/sources.list.trusty
+++ /dev/null
@@ -1,11 +0,0 @@
-deb http://archive.ubuntu.com/ubuntu/ trusty main restricted universe
-deb-src http://archive.ubuntu.com/ubuntu/ trusty main restricted universe
-
-deb http://archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe
-deb-src http://archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe
-
-deb http://archive.ubuntu.com/ubuntu/ trusty-backports main restricted
-deb-src http://archive.ubuntu.com/ubuntu/ trusty-backports main restricted
-
-deb http://archive.ubuntu.com/ubuntu/ trusty-security main restricted universe multiverse
-deb-src http://archive.ubuntu.com/ubuntu/ trusty-security main restricted universe multiverse
diff --git a/cross/x86/sources.list.vivid b/cross/x86/sources.list.vivid
deleted file mode 100644
index 26d37b20fc..0000000000
--- a/cross/x86/sources.list.vivid
+++ /dev/null
@@ -1,11 +0,0 @@
-deb http://archive.ubuntu.com/ubuntu/ vivid main restricted universe
-deb-src http://archive.ubuntu.com/ubuntu/ vivid main restricted universe
-
-deb http://archive.ubuntu.com/ubuntu/ vivid-updates main restricted universe
-deb-src http://archive.ubuntu.com/ubuntu/ vivid-updates main restricted universe
-
-deb http://archive.ubuntu.com/ubuntu/ vivid-backports main restricted
-deb-src http://archive.ubuntu.com/ubuntu/ vivid-backports main restricted
-
-deb http://archive.ubuntu.com/ubuntu/ vivid-security main restricted universe multiverse
-deb-src http://archive.ubuntu.com/ubuntu/ vivid-security main restricted universe multiverse
diff --git a/cross/x86/sources.list.wily b/cross/x86/sources.list.wily
deleted file mode 100644
index c4b0b442ab..0000000000
--- a/cross/x86/sources.list.wily
+++ /dev/null
@@ -1,11 +0,0 @@
-deb http://archive.ubuntu.com/ubuntu/ wily main restricted universe
-deb-src http://archive.ubuntu.com/ubuntu/ wily main restricted universe
-
-deb http://archive.ubuntu.com/ubuntu/ wily-updates main restricted universe
-deb-src http://archive.ubuntu.com/ubuntu/ wily-updates main restricted universe
-
-deb http://archive.ubuntu.com/ubuntu/ wily-backports main restricted
-deb-src http://archive.ubuntu.com/ubuntu/ wily-backports main restricted
-
-deb http://archive.ubuntu.com/ubuntu/ wily-security main restricted universe multiverse
-deb-src http://archive.ubuntu.com/ubuntu/ wily-security main restricted universe multiverse
diff --git a/cross/x86/sources.list.xenial b/cross/x86/sources.list.xenial
deleted file mode 100644
index ad9c5a0144..0000000000
--- a/cross/x86/sources.list.xenial
+++ /dev/null
@@ -1,11 +0,0 @@
-deb http://archive.ubuntu.com/ubuntu/ xenial main restricted universe
-deb-src http://archive.ubuntu.com/ubuntu/ xenial main restricted universe
-
-deb http://archive.ubuntu.com/ubuntu/ xenial-updates main restricted universe
-deb-src http://archive.ubuntu.com/ubuntu/ xenial-updates main restricted universe
-
-deb http://archive.ubuntu.com/ubuntu/ xenial-backports main restricted
-deb-src http://archive.ubuntu.com/ubuntu/ xenial-backports main restricted
-
-deb http://archive.ubuntu.com/ubuntu/ xenial-security main restricted universe multiverse
-deb-src http://archive.ubuntu.com/ubuntu/ xenial-security main restricted universe multiverse
diff --git a/dependencies.props b/dependencies.props
deleted file mode 100644
index d4343a5666..0000000000
--- a/dependencies.props
+++ /dev/null
@@ -1,122 +0,0 @@
-
-
-
-
-
- bdc9476e343d89127d7f8ac4b939b5d9c5316245
- bdc9476e343d89127d7f8ac4b939b5d9c5316245
- eff554f39ee29c9f2b470bf7755b83ceaaf2b1a1
- a8fef6ead215b05fac155f9db8e09f1c07ca302c
-
-
-
- 2.1.9
- 2.0.0
- 4.5.0-servicing-28619-01
- 2.1.17-servicing-28619-01
- 2.0.3
- 1.7.0
-
-
-
-
- build-info/dotnet/
- release/2.1
- $(MSBuildThisFileFullPath)
-
-
-
-
- 4.3.0-preview2-4095
- 15.7.0-preview-000143
- $(MicrosoftBuildPackageVersion)
- $(MicrosoftBuildPackageVersion)
- $(MicrosoftBuildPackageVersion)
- 1.1.1
-
-
-
-
- Microsoft.DotNet.Build.Tasks.Feed
- 2.1.0-rc1-04626-02
-
-
-
-
- Microsoft.SymbolUploader.Build.Task
- 1.0.0-beta-62806-01
-
-
-
-
- $(BaseDotNetBuildInfo)corefx/$(DependencyBranch)
- $(CoreFxCurrentRef)
-
-
- $(BaseDotNetBuildInfo)coreclr/$(DependencyBranch)
- $(CoreClrCurrentRef)
-
-
- $(BaseDotNetBuildInfo)standard/release/2.0.0
- $(StandardCurrentRef)
-
-
- $(BaseDotNetBuildInfo)buildtools/$(DependencyBranch)
- $(BuildToolsCurrentRef)
-
-
-
- https://raw.githubusercontent.com/dotnet/versions
-
-
-
- $(MSBuildThisFileFullPath)
- MicrosoftPrivateCoreFxNETCoreAppPackageVersion
- Microsoft.Private.CoreFx.NETCoreApp
-
-
- $(MSBuildThisFileFullPath)
- MicrosoftNETCorePlatformsPackageVersion
- Microsoft.NETCore.Platforms
-
-
- $(MSBuildThisFileFullPath)
- MicrosoftNETCoreRuntimeCoreCLRPackageVersion
- Microsoft.NETCore.Runtime.CoreCLR
-
-
- $(MSBuildThisFileFullPath)
- NETStandardLibraryPackageVersion
- NETStandard.Library
-
-
- $(MSBuildThisFileFullPath)
- FeedTasksPackageVersion
- $(FeedTasksPackage)
-
-
- File
- $(RepoRoot)BuildToolsVersion.txt
- Microsoft.DotNet.BuildTools
-
-
-
-
-
-
-
-
-
- $(MicrosoftNETCorePlatformsPackageVersion)
-
-
diff --git a/dir.props b/dir.props
deleted file mode 100644
index 33b43eb782..0000000000
--- a/dir.props
+++ /dev/null
@@ -1,500 +0,0 @@
-
-
-
-
-
-
- false
-
-
-
-
- 10.0.16300
- UAP,Version=v$(UAPvNextVersion)
- uap$(UAPvNextVersion)
-
-
-
-
-
-
- core-setup
-
-
-
-
- true
-
-
-
-
-
- Microsoft.NETCore.App
-
-
-
-
-
- Unix
- $(OS)
-
-
-
-
-
-
-
-
-
-
- $(OverridePackageSource);
- https://dotnetfeed.blob.core.windows.net/dotnet-core/index.json;
- https://dotnet.myget.org/F/dotnet-core/api/v3/index.json;
- https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json;
- https://www.myget.org/F/nugetbuild/api/v3/index.json;
- https://api.nuget.org/v3/index.json;
- https://dotnet.myget.org/F/dotnet-corefxlab/api/v3/index.json;
- $(RestoreSources);
-
-
-
-
-
-
- $(PreReleaseLabel)
- $(VersionSuffix)-$(BuildNumberMajor)-$(BuildNumberMinor)
-
- -$(VersionSuffix)
- $(MajorVersion).$(MinorVersion).$(PatchVersion)$(ProductVersionSuffix)
- $(MajorVersion).$(MinorVersion).$(PatchVersion)
-
- $(ProductVersion)
-
- $(ProductVersion)
- $(ProductVersion)
-
- $(SharedFrameworkNugetVersion)
-
-
-
-
- false
- $(ProductVersion)
- 2.0.0
-
- false
- $(ProductVersion)
- 2.0.0
-
-
- false
- $(ProductVersion)
- 2.0.0
-
-
- false
- $(ProductVersion)
- 2.0.0
-
- Runtime/$(SharedFrameworkNugetVersion)/
- Runtime/$(SharedFrameworkNugetVersion)/
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
- $(DotnetRestorePrefix)$(DotnetRestoreCommand)
-
- $(DotnetRestorePrefix)"$(DotnetToolCommand)" restore $(DotnetRestoreSource)
-
-
-
-
- false
-
-
-
- x64
- $(TargetArchitecture)
-
-
-
-
-
- $(OsEnvironment)
-
-
-
- Debug
- $(ConfigurationGroup)
- $(OSGroup)_$(Configuration)
-
-
-
-
- Debug
- Release
- Debug
-
- Windows_NT
- Unix
- Linux
- OSX
- FreeBSD
- NetBSD
- AnyOS
-
-
-
- Portable
- true
-
-
-
-
-
-
- true
- false
- $(DefineConstants),DEBUG,TRACE
-
-
-
-
- true
- true
- $(DefineConstants),TRACE
-
-
-
-
- $(ConfigurationErrorMsg);Unknown ConfigurationGroup [$(ConfigurationGroup)] specificed in your project.
-
-
-
-
-
- .exe
-
-
-
- netcoreapp2.1
-
-
-
-
-
- $(HostMachineRid.Remove($(HostMachineRid.LastIndexOf('-'))))-$(TargetArchitecture)
-
-
-
-
- win-$(TargetArchitecture)
- osx-$(TargetArchitecture)
- linux-$(TargetArchitecture)
-
-
-
- $(OutputRid)
-
-
-
-
- $(DotNetOutputBlobFeedDir)assets/
-
-
-
-
- $(OutputRid).$(ConfigurationGroup)
-
- $(BinDir)
- $(BaseOutputPath)$(OSPlatformConfig)\
- $(BaseOutputRootPath)\crossgen
- $(BaseOutputPath)$(OSPlatformConfig)\$(MSBuildProjectName)\
-
- $(BaseIntermediateOutputPath)$(OSPlatformConfig)\
- $(IntermediateOutputRootPath)$(MSBuildProjectName)\
-
- $(BaseOutputRootPath)corehost\
-
- $(BinDir)$(OSPlatformConfig)/
- $(PackagesBasePath)packages/
- $(PackageOutputPath)
- $(PackageOutputPath)
- $(PackagesBasePath)symbols/
-
- $(IntermediateOutputRootPath)sharedFrameworkPublish\
- $(IntermediateOutputRootPath)sharedFrameworkPublish.symbols\
-
-
-
- false
- $(BaseOutputRootPath)sharedfx_$(OutputRid)_$(ConfigurationGroup)_version_badge.svg
-
-
-
- dotnet-host-
- dotnet-hostfxr-
- dotnet-runtime-
- dotnet-runtime-deps-
- $(AssetOutputPath)$(DotnetRuntimeString)
- $(AssetOutputPath)$(DotnetHostString)
- $(AssetOutputPath)$(DotnetHostFxrString)
- $(AssetOutputPath)$(DotnetRuntimeString)
- $(AssetOutputPath)$(DotnetRuntimeDependenciesPackageString)
-
-
- internal
- $(SharedHostInstallerStart)$(InstallerStartSuffix)-
- $(HostFxrInstallerStart)$(InstallerStartSuffix)-
- $(SharedFrameworkInstallerStart)$(InstallerStartSuffix)-
-
-
-
-
-
- 4
- true
-
-
-
- false
- false
- false
- false
- false
- false
- false
- false
- false
- false
- false
- false
- false
-
-
-
-
- true
-
-
-
-
- true
- true
-
-
-
-
- true
- true
- true
-
-
-
-
- true
- true
- true
-
-
-
-
- true
- true
- true
-
-
-
-
- true
- true
- true
-
-
-
-
- true
- true
- true
-
-
-
-
- true
- true
- true
-
-
-
-
- true
- true
- true
-
-
-
-
- true
- true
- true
-
-
-
-
- true
- true
- true
-
-
-
-
- true
- true
-
-
-
-
-
- .zip
- .tar.gz
- .msi
- .pkg
- .deb
- .rpm
- .exe
- $(InstallerExtension)
-
-
-
-
- $(OutputRid)
- osx.10.10-x64
- rhel.7-x64
- $(SharedFrameworkNugetVersion)-$(PackageTargetRid)
- $(HostResolverVersion)-$(PackageTargetRid)
-
-
-
- $(CombinedInstallerStart)$(ProductMoniker)$(CombinedInstallerExtension)
- $(CombinedInstallerStart)$(ProductMoniker)-engine.exe
- $(SharedHostInstallerStart)$(ProductMoniker)$(InstallerExtension)
- $(HostFxrInstallerStart)$(HostResolverVersionMoniker)$(InstallerExtension)
- $(SharedFrameworkInstallerStart)$(ProductMoniker)$(InstallerExtension)
-
- $(SharedHostInstallerStart)$(SharedFrameworkNugetVersion)-$(TargetArchitecture)$(InstallerExtension)
- $(HostFxrInstallerStart)$(HostResolverVersion)-$(TargetArchitecture)$(InstallerExtension)
- $(SharedFrameworkInstallerStart)$(SharedFrameworkNugetVersion)-$(TargetArchitecture)$(InstallerExtension)
-
- $(DotnetRuntimeDependenciesPackageInstallerStart)$(ProductMoniker)$(InstallerExtension)
-
-
-
- $(HostVersion)
- 1
- $(HostResolverVersion)
- 1
- $(SharedFrameworkNugetVersion)
- 1
- $(RuntimeDepsDebVersion)
- 1
- $(RuntimeDepsRpmVersion)
- 1
-
-
-
-
- $(MajorVersion).$(MinorVersion)
-
- $(SharedHostInstallerStart)$(SharedFrameworkNugetVersion)-$(TargetArchitecture)$(InstallerExtension)
- $(HostFxrInstallerStart)$(HostResolverVersion)-$(TargetArchitecture)$(InstallerExtension)
- $(SharedFrameworkInstallerStart)$(SharedFrameworkNugetVersion)-$(TargetArchitecture)$(InstallerExtension)
- $(DotnetRuntimeDependenciesPackageInstallerStart)$(ProductMoniker)$(InstallerExtension)
-
-
-
-
-
- true
- true
- false
- false
-
-
- <_TargetFrameworkDirectories>$(MSBuildThisFileDirectory)documentation
- <_FullFrameworkReferenceAssemblyPaths>$(MSBuildThisFileDirectory)documentation
-
-
-
- true
-
-
-
-
- true
-
-
-
-
- /p:OSGroup=$(OSGroup) /p:PortableBuild=$(PortableBuild) /p:TargetArchitecture=$(TargetArchitecture) /p:ConfigurationGroup=$(ConfigurationGroup) /p:VersionSuffix=$(VersionSuffix)
- $(MSBuildPassThroughPropertyList) /p:OutputRid=$(OutputRid)
-
-
-
-
-
-
diff --git a/dir.targets b/dir.targets
deleted file mode 100644
index 8d34872c66..0000000000
--- a/dir.targets
+++ /dev/null
@@ -1,105 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- N/A
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(MajorVersion).$(MinorVersion).$(PatchVersion).$(BuildNumberMajor)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/dir.traversal.targets b/dir.traversal.targets
deleted file mode 100644
index 6f30848480..0000000000
--- a/dir.traversal.targets
+++ /dev/null
@@ -1,102 +0,0 @@
-
-
-
-
-
- $(MSBuildProjectDefaultTargets)
-
-
-
-
-
-
-
-
-
-
-
-
-
- Clean
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- RestorePackages
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(TraversalBuildDependsOn);
- BuildAllProjects;
-
-
-
- $(TraversalCleanDependsOn);
- CleanAllProjects;
-
-
-
- $(TraversalRestorePackagesDependsOn)
- RestoreAllProjectPackages;
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/init-tools.cmd b/init-tools.cmd
deleted file mode 100644
index 0c3ca90a70..0000000000
--- a/init-tools.cmd
+++ /dev/null
@@ -1,85 +0,0 @@
-@if not defined _echo @echo off
-setlocal
-
-set INIT_TOOLS_LOG=%~dp0init-tools.log
-if [%PACKAGES_DIR%]==[] set PACKAGES_DIR=%~dp0packages\
-if [%TOOLRUNTIME_DIR%]==[] set TOOLRUNTIME_DIR=%~dp0Tools
-set DOTNET_PATH=%TOOLRUNTIME_DIR%\dotnetcli\
-if [%DOTNET_CMD%]==[] set DOTNET_CMD=%DOTNET_PATH%dotnet.exe
-if [%BUILDTOOLS_SOURCE%]==[] set BUILDTOOLS_SOURCE=https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json
-set /P BUILDTOOLS_VERSION=< "%~dp0BuildToolsVersion.txt"
-set BUILD_TOOLS_PATH=%PACKAGES_DIR%Microsoft.DotNet.BuildTools\%BUILDTOOLS_VERSION%\lib\
-set INIT_TOOLS_RESTORE_PROJECT=%~dp0init-tools.msbuild
-set BUILD_TOOLS_SEMAPHORE=%TOOLRUNTIME_DIR%\%BUILDTOOLS_VERSION%\init-tools.completed
-
-:: if force option is specified then clean the tool runtime and build tools package directory to force it to get recreated
-if [%1]==[force] (
- if exist "%TOOLRUNTIME_DIR%" rmdir /S /Q "%TOOLRUNTIME_DIR%"
- if exist "%PACKAGES_DIR%Microsoft.DotNet.BuildTools" rmdir /S /Q "%PACKAGES_DIR%Microsoft.DotNet.BuildTools"
-)
-
-:: If sempahore exists do nothing
-if exist "%BUILD_TOOLS_SEMAPHORE%" (
- echo Tools are already initialized.
- goto :EOF
-)
-
-if exist "%TOOLRUNTIME_DIR%" rmdir /S /Q "%TOOLRUNTIME_DIR%"
-
-if exist "%DotNetBuildToolsDir%" (
- echo Using tools from '%DotNetBuildToolsDir%'.
- mklink /j "%TOOLRUNTIME_DIR%" "%DotNetBuildToolsDir%"
-
- if not exist "%DOTNET_CMD%" (
- echo ERROR: Ensure that '%DotNetBuildToolsDir%' contains the .NET Core SDK at '%DOTNET_PATH%'
- exit /b 1
- )
-
- echo Done initializing tools.
- echo Using tools from '%DotNetBuildToolsDir%'. > "%BUILD_TOOLS_SEMAPHORE%"
- exit /b 0
-)
-
-echo Running %0 > "%INIT_TOOLS_LOG%"
-
-set /p DOTNET_VERSION=< "%~dp0DotnetCLIVersion.txt"
-if exist "%DOTNET_CMD%" goto :afterdotnetrestore
-
-echo Installing dotnet cli...
-if NOT exist "%DOTNET_PATH%" mkdir "%DOTNET_PATH%"
-set DOTNET_ZIP_NAME=dotnet-sdk-%DOTNET_VERSION%-win-x64.zip
-set DOTNET_REMOTE_PATH=https://dotnetcli.azureedge.net/dotnet/Sdk/%DOTNET_VERSION%/%DOTNET_ZIP_NAME%
-set DOTNET_LOCAL_PATH=%DOTNET_PATH%%DOTNET_ZIP_NAME%
-echo Installing '%DOTNET_REMOTE_PATH%' to '%DOTNET_LOCAL_PATH%' >> "%INIT_TOOLS_LOG%"
-powershell -NoProfile -ExecutionPolicy unrestricted -Command "$retryCount = 0; $success = $false; do { try { (New-Object Net.WebClient).DownloadFile('%DOTNET_REMOTE_PATH%', '%DOTNET_LOCAL_PATH%'); $success = $true; } catch { if ($retryCount -ge 6) { throw; } else { $retryCount++; Start-Sleep -Seconds (5 * $retryCount); } } } while ($success -eq $false); Add-Type -Assembly 'System.IO.Compression.FileSystem' -ErrorVariable AddTypeErrors; if ($AddTypeErrors.Count -eq 0) { [System.IO.Compression.ZipFile]::ExtractToDirectory('%DOTNET_LOCAL_PATH%', '%DOTNET_PATH%') } else { (New-Object -com shell.application).namespace('%DOTNET_PATH%').CopyHere((new-object -com shell.application).namespace('%DOTNET_LOCAL_PATH%').Items(),16) }" >> "%INIT_TOOLS_LOG%"
-if NOT exist "%DOTNET_LOCAL_PATH%" (
- echo ERROR: Could not install dotnet cli correctly. See '%INIT_TOOLS_LOG%' for more details. 1>&2
- exit /b 1
-)
-
-:afterdotnetrestore
-
-if exist "%BUILD_TOOLS_PATH%" goto :afterbuildtoolsrestore
-echo Restoring BuildTools version %BUILDTOOLS_VERSION%...
-echo Running: "%DOTNET_CMD%" restore "%INIT_TOOLS_RESTORE_PROJECT%" --no-cache --packages %PACKAGES_DIR% --source "%BUILDTOOLS_SOURCE%" /p:BuildToolsPackageVersion=%BUILDTOOLS_VERSION% >> "%INIT_TOOLS_LOG%"
-call "%DOTNET_CMD%" restore "%INIT_TOOLS_RESTORE_PROJECT%" --no-cache --packages %PACKAGES_DIR% --source "%BUILDTOOLS_SOURCE%" /p:BuildToolsPackageVersion=%BUILDTOOLS_VERSION% >> "%INIT_TOOLS_LOG%"
-if NOT exist "%BUILD_TOOLS_PATH%init-tools.cmd" (
- echo ERROR: Could not restore build tools correctly. See '%INIT_TOOLS_LOG%' for more details. 1>&2
- exit /b 1
-)
-
-:afterbuildtoolsrestore
-
-echo Initializing BuildTools...
-echo Running: "%BUILD_TOOLS_PATH%init-tools.cmd" "%~dp0" "%DOTNET_CMD%" "%TOOLRUNTIME_DIR%" >> "%INIT_TOOLS_LOG%"
-call "%BUILD_TOOLS_PATH%init-tools.cmd" "%~dp0" "%DOTNET_CMD%" "%TOOLRUNTIME_DIR%" >> "%INIT_TOOLS_LOG%"
-set INIT_TOOLS_ERRORLEVEL=%ERRORLEVEL%
-if not [%INIT_TOOLS_ERRORLEVEL%]==[0] (
- echo ERROR: An error occured when trying to initialize the tools. Please check '%INIT_TOOLS_LOG%' for more details. 1>&2
- exit /b %INIT_TOOLS_ERRORLEVEL%
-)
-
-:: Create sempahore file
-echo Done initializing tools.
-echo Init-Tools.cmd completed for BuildTools Version: %BUILDTOOLS_VERSION% > "%BUILD_TOOLS_SEMAPHORE%"
-exit /b 0
diff --git a/init-tools.msbuild b/init-tools.msbuild
deleted file mode 100644
index a15afad13f..0000000000
--- a/init-tools.msbuild
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
- netcoreapp1.0
- false
- true
- $(ToolsDir)/$(BuildToolsPackageVersion)
-
-
-
-
-
-
-
diff --git a/init-tools.sh b/init-tools.sh
deleted file mode 100755
index 55a24e70c6..0000000000
--- a/init-tools.sh
+++ /dev/null
@@ -1,174 +0,0 @@
-#!/usr/bin/env bash
-
-__scriptpath=$(cd "$(dirname "$0")"; pwd -P)
-__init_tools_log=$__scriptpath/init-tools.log
-__PACKAGES_DIR=$__scriptpath/packages
-__TOOLRUNTIME_DIR=$__scriptpath/Tools
-__DOTNET_PATH=$__TOOLRUNTIME_DIR/dotnetcli
-__DOTNET_CMD=$__DOTNET_PATH/dotnet
-if [ -z "$__BUILDTOOLS_SOURCE" ]; then __BUILDTOOLS_SOURCE=https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json; fi
-export __BUILDTOOLS_USE_CSPROJ=true
-__BUILD_TOOLS_PACKAGE_VERSION=$(cat $__scriptpath/BuildToolsVersion.txt)
-__DOTNET_TOOLS_VERSION=$(cat $__scriptpath/DotnetCLIVersion.txt)
-__BUILD_TOOLS_PATH=$__PACKAGES_DIR/microsoft.dotnet.buildtools/$__BUILD_TOOLS_PACKAGE_VERSION/lib
-__INIT_TOOLS_RESTORE_PROJECT=$__scriptpath/init-tools.msbuild
-__BUILD_TOOLS_SEMAPHORE=$__TOOLRUNTIME_DIR/$__BUILD_TOOLS_PACKAGE_VERSION/init-tools.complete
-
-if [ -e $__BUILD_TOOLS_SEMAPHORE ]; then
- echo "Tools are already initialized"
- return #return instead of exit because this script is inlined in other scripts which we don't want to exit
-fi
-
-if [ -e $__TOOLRUNTIME_DIR ]; then rm -rf -- $__TOOLRUNTIME_DIR; fi
-
-if [ -d "$DotNetBuildToolsDir" ]; then
- echo "Using tools from '$DotNetBuildToolsDir'."
- ln -s "$DotNetBuildToolsDir" "$__TOOLRUNTIME_DIR"
-
- if [ ! -e "$__DOTNET_CMD" ]; then
- echo "ERROR: Ensure that $DotNetBuildToolsDir contains the .NET Core SDK at $__DOTNET_PATH"
- exit 1
- fi
-
- echo "Done initializing tools."
- mkdir -p "$(dirname "$__BUILD_TOOLS_SEMAPHORE")" && touch $__BUILD_TOOLS_SEMAPHORE
- return #return instead of exit because this script is inlined in other scripts which we don't want to exit
-fi
-
-echo "Running: $__scriptpath/init-tools.sh" > $__init_tools_log
-
-display_error_message()
-{
- echo "Please check the detailed log that follows." 1>&2
- cat "$__init_tools_log" 1>&2
-}
-
-# Executes a command and retries if it fails.
-execute_with_retry() {
- local count=0
- local retries=${retries:-5}
- local waitFactor=${waitFactor:-6}
- until "$@"; do
- local exit=$?
- count=$(( $count + 1 ))
- if [ $count -lt $retries ]; then
- local wait=$(( waitFactor ** (( count - 1 )) ))
- echo "Retry $count/$retries exited $exit, retrying in $wait seconds..."
- sleep $wait
- else
- say_err "Retry $count/$retries exited $exit, no more retries left."
- return $exit
- fi
- done
-
- return 0
-}
-
-if [ ! -e $__DOTNET_PATH ]; then
- if [ -z "$__DOTNET_PKG" ]; then
- if [ "$(uname -m | grep "i[3456]86")" = "i686" ]; then
- echo "Warning: build not supported on 32 bit Unix"
- fi
-
- __PKG_ARCH=x64
-
- OSName=$(uname -s)
- case $OSName in
- Darwin)
- OS=OSX
- __PKG_RID=osx
- ulimit -n 2048
- # Format x.y.z as single integer with three digits for each part
- VERSION=`sw_vers -productVersion| sed -e 's/\./ /g' | xargs printf "%03d%03d%03d"`
- if [ "$VERSION" -lt 010012000 ]; then
- echo error: macOS version `sw_vers -productVersion` is too old. 10.12 is needed as minimum.
- exit 1
- fi
- ;;
-
- Linux)
- __PKG_RID=linux
- OS=Linux
-
- if [ -e /etc/os-release ]; then
- source /etc/os-release
- if [[ $ID == "alpine" ]]; then
- __PKG_RID=linux-musl
- fi
- elif [ -e /etc/redhat-release ]; then
- redhatRelease=$( /dev/null; then
- curl --retry 10 -sSL --create-dirs -o $__DOTNET_PATH/dotnet.tar ${__DOTNET_LOCATION}
- else
- wget -q -O $__DOTNET_PATH/dotnet.tar ${__DOTNET_LOCATION}
- fi
- else
- echo "Copying '$DotNetBootstrapCliTarPath' to '$__DOTNET_PATH/dotnet.tar'"
- cp $DotNetBootstrapCliTarPath $__DOTNET_PATH/dotnet.tar
- fi
- cd $__DOTNET_PATH
- tar -xf $__DOTNET_PATH/dotnet.tar
- }
- execute_with_retry install_dotnet_cli >> "$__init_tools_log" 2>&1
-
- cd $__scriptpath
-fi
-
-if [ ! -e $__BUILD_TOOLS_PATH ]; then
- echo "Restoring BuildTools version $__BUILD_TOOLS_PACKAGE_VERSION..."
- echo "Running: $__DOTNET_CMD restore \"$__INIT_TOOLS_RESTORE_PROJECT\" --no-cache --packages $__PACKAGES_DIR --source $__BUILDTOOLS_SOURCE /p:BuildToolsPackageVersion=$__BUILD_TOOLS_PACKAGE_VERSION" >> $__init_tools_log
- $__DOTNET_CMD restore "$__INIT_TOOLS_RESTORE_PROJECT" --no-cache --packages $__PACKAGES_DIR --source $__BUILDTOOLS_SOURCE /p:BuildToolsPackageVersion=$__BUILD_TOOLS_PACKAGE_VERSION >> $__init_tools_log
- if [ ! -e "$__BUILD_TOOLS_PATH/init-tools.sh" ]; then
- echo "ERROR: Could not restore build tools correctly." 1>&2
- display_error_message
- fi
-fi
-
-echo "Initializing BuildTools..."
-echo "Running: $__BUILD_TOOLS_PATH/init-tools.sh $__scriptpath $__DOTNET_CMD $__TOOLRUNTIME_DIR $__PACKAGES_DIR" >> $__init_tools_log
-
-# Executables restored with .NET Core 2.0 do not have executable permission flags. https://github.com/NuGet/Home/issues/4424
-chmod +x $__BUILD_TOOLS_PATH/init-tools.sh
-$__BUILD_TOOLS_PATH/init-tools.sh $__scriptpath $__DOTNET_CMD $__TOOLRUNTIME_DIR $__PACKAGES_DIR >> $__init_tools_log
-if [ "$?" != "0" ]; then
- echo "ERROR: An error occurred when trying to initialize the tools." 1>&2
- display_error_message
- exit 1
-fi
-
-echo "Making all .sh files executable under Tools."
-# Executables restored with .NET Core 2.0 do not have executable permission flags. https://github.com/NuGet/Home/issues/4424
-ls $__scriptpath/Tools/*.sh | xargs chmod +x
-ls $__scriptpath/Tools/scripts/docker/*.sh | xargs chmod +x
-
-Tools/crossgen.sh $__scriptpath/Tools
-
-mkdir -p "$(dirname "$__BUILD_TOOLS_SEMAPHORE")" && touch $__BUILD_TOOLS_SEMAPHORE
-
-echo "Done initializing tools."
-
diff --git a/netci.groovy b/netci.groovy
deleted file mode 100644
index 9eb4023c3d..0000000000
--- a/netci.groovy
+++ /dev/null
@@ -1,165 +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.
-
-// Import the utility functionality.
-
-import jobs.generation.Utilities;
-import jobs.generation.ArchivalSettings;
-
-def project = GithubProject
-def branch = GithubBranchName
-def isPR = true
-
-def platformList = ['Linux:x64:Release', 'Linux:arm:Release', 'Linux:arm64:Release', 'OSX:x64:Release', 'Windows_NT:x64:Release', 'Windows_NT:x86:Debug', 'Windows_NT:arm:Debug', 'Tizen:armel:Release']
-
-def static getBuildJobName(def configuration, def os, def architecture) {
- return configuration.toLowerCase() + '_' + os.toLowerCase() + '_' + architecture.toLowerCase()
-}
-
-platformList.each { platform ->
- // Calculate names
- def (os, architecture, configuration) = platform.tokenize(':')
-
- // Calculate the job name
- def jobName = getBuildJobName(configuration, os, architecture)
- def buildCommand = '';
- def osForGHTrigger = os
- def version = "latest-or-auto"
- def dockerRepository = "microsoft/dotnet-buildtools-prereqs"
- def dockerContainer = ''
- def dockerWorkingDirectory = "/src/core-setup"
- def dockerCommand = ''
- def crossbuildargs = ''
- def buildArgs = "-ConfigurationGroup=${configuration} -TargetArchitecture=${architecture}"
-
- if (os != 'Windows_NT' && configuration == 'Release') {
- buildArgs += " -strip-symbols"
- }
-
- // Calculate build command
- if (os == 'Windows_NT') {
- buildCommand = ".\\build.cmd ${buildArgs}"
- if ((architecture == 'arm' || architecture == 'arm64')) {
- buildCommand += " -SkipTests=true"
- }
- }
- else if (os == 'Tizen') {
- dockerRepository = "tizendotnet/dotnet-buildtools-prereqs"
- dockerContainer = "ubuntu-16.04-cross-e435274-20180426002255-tizen-rootfs-5.0m1"
-
- dockerCommand = "docker run -e ROOTFS_DIR=/crossrootfs/${architecture}.tizen.build --name ${dockerContainer} --rm -v \${WORKSPACE}:${dockerWorkingDirectory} -w=${dockerWorkingDirectory} ${dockerRepository}:${dockerContainer}"
- buildArgs += " -SkipTests=true -DisableCrossgen=true -PortableBuild=false -CrossBuild=true -- /p:OverridePackageSource=https:%2F%2Ftizen.myget.org/F/dotnet-core/api/v3/index.json /p:OutputRid=tizen.5.0.0-${architecture}"
- buildCommand = "${dockerCommand} ./build.sh ${buildArgs}"
- }
- else if (os == "Linux") {
-
- // Prep for Portable Linux builds take place on Ubuntu 14.04
- if (architecture == 'arm' || architecture == 'armel' || architecture == 'arm64') {
- if (architecture == 'arm64') {
- dockerContainer = "ubuntu-16.04-cross-arm64-a3ae44b-20180316023254"
- }
- else {
- dockerContainer = "ubuntu-14.04-cross-e435274-20180323032140"
- }
- dockerCommand = "docker run -e ROOTFS_DIR=/crossrootfs/${architecture} --name ${dockerContainer} --rm -v \${WORKSPACE}:${dockerWorkingDirectory} -w=${dockerWorkingDirectory} ${dockerRepository}:${dockerContainer}"
- buildArgs += " -SkipTests=true -CrossBuild=true"
-
- if (architecture == 'armel') {
- buildArgs += " -DisableCrossgen=true"
- }
-
- buildCommand = "${dockerCommand} ./build.sh ${buildArgs}"
-
- osForGHTrigger = "Linux"
- os = "Ubuntu"
- }
- else {
- // Jenkins non-Ubuntu CI machines don't have docker
- buildCommand = "./build.sh ${buildArgs}"
-
- // Trigger a portable Linux build that runs on RHEL7.2
- osForGHTrigger = "Linux"
- os = "RHEL7.2"
- }
- }
- else {
- // Jenkins non-Ubuntu CI machines don't have docker
- buildCommand = "./build.sh ${buildArgs}"
- os = "OSX10.12"
- }
-
- def newJob = job(Utilities.getFullJobName(project, jobName, isPR)) {
- // Set the label.
- steps {
- if (os == 'Windows_NT' || os == 'Windows_2016') {
- // Batch
- batchFile(buildCommand)
- }
- else {
- // Shell
- shell(buildCommand)
- }
- }
- }
-
- Utilities.setMachineAffinity(newJob, os, version)
- Utilities.standardJobSetup(newJob, project, isPR, "*/${branch}")
-
- if (!(architecture == 'arm' || architecture == 'armel' || architecture == 'arm64')) {
- Utilities.addMSTestResults(newJob, '**/*-testResults.trx')
- }
-
- Utilities.addGithubPRTriggerForBranch(newJob, branch, "${osForGHTrigger} ${architecture} ${configuration} Build")
-
- ArchivalSettings settings = new ArchivalSettings();
- def archiveString = ["tar.gz", "zip", "deb", "msi", "pkg", "exe", "nupkg"].collect { "Bin/*/packages/*.${it},Bin/*/corehost/*.${it}" }.join(",")
- settings.addFiles(archiveString)
- settings.setArchiveOnSuccess()
- settings.setFailIfNothingArchived()
-
- Utilities.addArchival(newJob, settings)
-}
-
-// **************************
-// Define ARM64 building.
-// **************************
-//['Windows_NT'].each { os ->
-// ['Release'].each { configurationGroup ->
-// def newJobName = "${configurationGroup.toLowerCase()}_${os.toLowerCase()}_arm64"
-// def arm64Users = ['ianhays', 'kyulee1', 'gkhanna79', 'weshaggard', 'stephentoub', 'rahku', 'ramarag']
-// def newJob = job(Utilities.getFullJobName(project, newJobName, /* isPR */ false)) {
-// steps {
-// // build the world, but don't run the tests
-// batchFile("build.cmd -ConfigurationGroup ${configurationGroup} -Architecure x64 -TargetArch arm64 -ToolsetDir C:\\ats2 -Framework netcoreapp1.1")
-// }
-// label("arm64")
-//
-// // Kick off the test run
-// publishers {
-// archiveArtifacts {
-// pattern("artifacts/win10-arm64/packages/*.zip")
-// pattern("artifacts/win10-arm64/corehost/*.nupkg")
-// onlyIfSuccessful(true)
-// allowEmpty(false)
-// }
-// }
-// }
-//
-// // Set up standard options.
-// Utilities.standardJobSetup(newJob, project, /* isPR */ false, "*/${branch}")
-//
-// // Set a daily trigger
-// Utilities.addPeriodicTrigger(newJob, '@daily')
-//
-// // Set up a PR trigger that is only triggerable by certain members
-// Utilities.addPrivateGithubPRTriggerForBranch(newJob, branch, "Windows_NT ARM64 ${configurationGroup} Build", "(?i).*test\\W+ARM64\\W+${os}\\W+${configurationGroup}", null, arm64Users)
-//
-// // Set up a per-push trigger
-// Utilities.addGithubPushTrigger(newJob)
-// }
-//}
-
-// Make the call to generate the help job
-Utilities.createHelperJob(this, project, branch,
- "Welcome to the ${project} Repository", // This is prepended to the help message
- "Have a nice day!") // This is appended to the help message. You might put known issues here.
diff --git a/omnisharp.json b/omnisharp.json
deleted file mode 100644
index e50fae9331..0000000000
--- a/omnisharp.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "dotnet": {
- "projects": "src/*/project.json;src/test/*/project.json;scripts/*/project.json",
- "enablePackageRestore": false
- }
-}
diff --git a/publish/dir.props b/publish/dir.props
deleted file mode 100644
index a3f6a9df78..0000000000
--- a/publish/dir.props
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
-
-
- https://dotnetcli.blob.core.windows.net/
- 3600
-
- Runtime/$(ProductVersion)
- .sha512
-
- ProductVersion=$(ProductVersion)
-
-
-
-
-
- Pushing took too long
-
-
-
-
-
- $(BinariesRelativePath)
-
-
- $(BinariesRelativePath)
-
-
- $(BinariesRelativePath)
-
-
- $(InstallersRelativePath)
-
-
- $(InstallersRelativePath)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/publish/dir.targets b/publish/dir.targets
deleted file mode 100644
index 8883cc335d..0000000000
--- a/publish/dir.targets
+++ /dev/null
@@ -1,118 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- UploadToAzure
- %(Project.AdditionalProperties);ItemsToPublish=@(PublishFile);$(OutputVersionBadge);RelativeBlobPath=$(BinariesRelativePath)
-
-
-
-
-
-
-
- UploadToAzure
- %(Project.AdditionalProperties);ItemsToPublish=@(InstallerFile);RelativeBlobPath=$(InstallersRelativePath)
-
-
-
-
-
-
-
-
- UploadChecksumsToAzure
- %(Project.AdditionalProperties);ItemsToPublish=@(ChecksumItems);RelativeBlobPath=$(ChecksumsRelativePath)
-
-
-
-
-
-
-
-
-
- %(ItemsToChecksum.FullPath)$(ChecksumExtension)
-
-
-
-
-
-
-
-
-
- $(DebianId_debian8-x64)
-
-
- $(DebianId_debian9-x64)
-
-
- $(DebianId_ubuntu1404-x64)
-
-
- $(DebianId_ubuntu1604-x64)
-
-
- $(DebianId_ubuntu1704-x64)
-
-
- $(DebianId_ubuntu1710-x64)
-
-
-
- $([System.String]::Copy($(OutputRid)).Replace('.', ''))
- %(RepoIds.Key)
-
-
-
-
-
- $(SharedHostDebPkgName)
-
-
- $(HostFxrDebPkgName)
-
-
- $(SharedFxDebPkgName)
-
-
-
- $(AssetOutputPath)%(PackageName)_package_upload.json
-
-
-
-
-
-
-
-
-
-
-
- <_FoundBlobNames Include="%(_BlobNames.FileName)%(_BlobNames.Extension)" Condition="'%(_BlobNames.Extension)' == '.svg'" />
- <_MissingBlobNames Include="@(PublishRid->'sharedfx_%(Identity)_$(ConfigurationGroup)_version_badge.svg')"
- Exclude="@(_FoundBlobNames)" />
-
-
-
-
-
-
\ No newline at end of file
diff --git a/publish/publish-type.proj b/publish/publish-type.proj
deleted file mode 100644
index d26582da5b..0000000000
--- a/publish/publish-type.proj
+++ /dev/null
@@ -1,107 +0,0 @@
-
-
-
-
-
-
-
-
-
- ValidateProperties;
- DownloadFilesFromContainer;
- SignPackages
-
-
-
- $(BuildDependsOn);
- ValidateBlobFeedProperties;
- PublishPackagesToBlobFeed;
- PublishFilesToBlobFeed;
-
-
-
- $(BuildDependsOn);
- UpdateVersionsRepo
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(PublishBlobFeedUrl)
- $(PublishBlobFeedKey)
-
-
-
-
-
-
- $(BinDir)PackageDownload/
-
- $(DownloadDirectory)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- assets/$(BinariesRelativePath)$([System.String]::Copy('%(RecursiveDir)%(Filename)%(Extension)').Replace('\' ,'/'))
- ShipInstaller=dotnetcli
-
-
-
-
-
-
-
- NuGet
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/publish/publish.proj b/publish/publish.proj
deleted file mode 100644
index 39c31fddba..0000000000
--- a/publish/publish.proj
+++ /dev/null
@@ -1,290 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PublishToAzure;
-
-
-
-
- $(BuildDependsOn);
- PublishDebFilesToDebianRepo;
- PublishFinalOutput;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- @(ItemsToPublish->Count())
- @(DedupItems->Count())
- <_HasDups Condition="'$(CountOld)' != '$(CountNew)'">true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(RelativeBlobPath)%(Filename)%(Extension)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(RelativeBlobPath)/%(Filename)%(Extension)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_CoreHostPackages Include="%(_BlobList.Identity)" Condition="'%(_BlobList.Extension)' == '.nupkg'" />
-
-
- $(BinDir)PackageDownload/
-
-
-
-
- <_DownloadedPackages Include="@(_CoreHostPackages->'$(DownloadDirectory)%(Filename)%(Extension)')" />
- <_DownloadedSymbolsPackages Include="%(_DownloadedPackages.Identity)"
- Condition="$([System.String]::new('%(_DownloadedPackages.Identity)').EndsWith('.symbols.nupkg'))" />
- <_DownloadedStandardPackages Include="@(_DownloadedPackages)"
- Exclude="@(_DownloadedSymbolsPackages)" />
-
-
-
-
-
- 1
- true
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(DotnetToolCommand) nuget push --source $(NuGetFeedUrl) --api-key $(NuGetApiKey) --timeout $(NuGetPushTimeoutSeconds)
- $(DotnetToolCommand) nuget push --source $(NuGetSymbolsFeedUrl) --api-key $(NuGetApiKey) --timeout $(NuGetPushTimeoutSeconds)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(PackagesUrl)
-
-
-
-
-
-
-
-
-
-
-
-
- $(SymbolPackagesUrl)
-
-
-
-
-
-
-
-
-
-
-
diff --git a/resources/LICENSE-MSFT.txt b/resources/LICENSE-MSFT.txt
deleted file mode 100644
index 8302ac2a58..0000000000
--- a/resources/LICENSE-MSFT.txt
+++ /dev/null
@@ -1,64 +0,0 @@
-MICROSOFT SOFTWARE LICENSE TERMS
-MICROSOFT .NET LIBRARY
-These license terms are an agreement between Microsoft Corporation (or based on where you live, one of its affiliates) and you. Please read them. They apply to the software named above, which includes the media on which you received it, if any. The terms also apply to any Microsoft
- * updates,
- * supplements,
- * Internet-based services, and
- * support services
-for this software, unless other terms accompany those items. If so, those terms apply.
-BY USING THE SOFTWARE, YOU ACCEPT THESE TERMS. IF YOU DO NOT ACCEPT THEM, DO NOT USE THE SOFTWARE.
-IF YOU COMPLY WITH THESE LICENSE TERMS, YOU HAVE THE PERPETUAL RIGHTS BELOW.
-1. INSTALLATION AND USE RIGHTS.
- a. Installation and Use. You may install and use any number of copies of the software to design, develop and test your programs.
- b. Third Party Programs. The software may include third party programs that Microsoft, not the third party, licenses to you under this agreement. Notices, if any, for the third party program are included for your information only.
-2. DATA. The software may collect information about you and your use of the software, and send that to Microsoft. Microsoft may use this information to improve our products and services. You can learn more about data collection and use in the help documentation and the privacy statement at http://go.microsoft.com/fwlink/?LinkId=528096.Your use of the software operates as your consent to these practices.
-3. ADDITIONAL LICENSING REQUIREMENTS AND/OR USE RIGHTS.
- a. DISTRIBUTABLE CODE. The software is comprised of Distributable Code. "Distributable Code" is code that you are permitted to distribute in programs you develop if you comply with the terms below.
- i. Right to Use and Distribute.
- * You may copy and distribute the object code form of the software.
- * Third Party Distribution. You may permit distributors of your programs to copy and distribute the Distributable Code as part of those programs.
- ii. Distribution Requirements. For any Distributable Code you distribute, you must
- * add significant primary functionality to it in your programs;
- * require distributors and external end users to agree to terms that protect it at least as much as this agreement;
- * display your valid copyright notice on your programs; and
- * indemnify, defend, and hold harmless Microsoft from any claims, including attorneys' fees, related to the distribution or use of your programs.
- iii. Distribution Restrictions. You may not
- * alter any copyright, trademark or patent notice in the Distributable Code;
- * use Microsoft's trademarks in your programs' names or in a way that suggests your programs come from or are endorsed by Microsoft;
- * include Distributable Code in malicious, deceptive or unlawful programs; or
- * modify or distribute the source code of any Distributable Code so that any part of it becomes subject to an Excluded License. An Excluded License is one that requires, as a condition of use, modification or distribution, that
- * the code be disclosed or distributed in source code form; or
- * others have the right to modify it.
-4. SCOPE OF LICENSE. The software is licensed, not sold. This agreement only gives you some rights to use the software. Microsoft reserves all other rights. Unless applicable law gives you more rights despite this limitation, you may use the software only as expressly permitted in this agreement. In doing so, you must comply with any technical limitations in the software that only allow you to use it in certain ways. You may not
- * work around any technical limitations in the software;
- * reverse engineer, decompile or disassemble the software, except and only to the extent that applicable law expressly permits, despite this limitation;
- * publish the software for others to copy;
- * rent, lease or lend the software;
- * transfer the software or this agreement to any third party; or
- * use the software for commercial software hosting services.
-5. BACKUP COPY. You may make one backup copy of the software. You may use it only to reinstall the software.
-6. DOCUMENTATION. Any person that has valid access to your computer or internal network may copy and use the documentation for your internal, reference purposes.
-7. EXPORT RESTRICTIONS. The software is subject to United States export laws and regulations. You must comply with all domestic and international export laws and regulations that apply to the software. These laws include restrictions on destinations, end users and end use. For additional information, see www.microsoft.com/exporting.
-8. SUPPORT SERVICES. Because this software is "as is," we may not provide support services for it.
-9. ENTIRE AGREEMENT. This agreement, and the terms for supplements, updates, Internet-based services and support services that you use, are the entire agreement for the software and support services.
-10. APPLICABLE LAW.
- a. United States. If you acquired the software in the United States, Washington state law governs the interpretation of this agreement and applies to claims for breach of it, regardless of conflict of laws principles. The laws of the state where you live govern all other claims, including claims under state consumer protection laws, unfair competition laws, and in tort.
- b. Outside the United States. If you acquired the software in any other country, the laws of that country apply.
-11. LEGAL EFFECT. This agreement describes certain legal rights. You may have other rights under the laws of your country. You may also have rights with respect to the party from whom you acquired the software. This agreement does not change your rights under the laws of your country if the laws of your country do not permit it to do so.
-12. DISCLAIMER OF WARRANTY. THE SOFTWARE IS LICENSED "AS-IS." YOU BEAR THE RISK OF USING IT. MICROSOFT GIVES NO EXPRESS WARRANTIES, GUARANTEES OR CONDITIONS. YOU MAY HAVE ADDITIONAL CONSUMER RIGHTS OR STATUTORY GUARANTEES UNDER YOUR LOCAL LAWS WHICH THIS AGREEMENT CANNOT CHANGE. TO THE EXTENT PERMITTED UNDER YOUR LOCAL LAWS, MICROSOFT EXCLUDES THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-FOR AUSTRALIA - YOU HAVE STATUTORY GUARANTEES UNDER THE AUSTRALIAN CONSUMER LAW AND NOTHING IN THESE TERMS IS INTENDED TO AFFECT THOSE RIGHTS.
-13. LIMITATION ON AND EXCLUSION OF REMEDIES AND DAMAGES. YOU CAN RECOVER FROM MICROSOFT AND ITS SUPPLIERS ONLY DIRECT DAMAGES UP TO U.S. $5.00. YOU CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, SPECIAL, INDIRECT OR INCIDENTAL DAMAGES.
-This limitation applies to
- * anything related to the software, services, content (including code) on third party Internet sites, or third party programs; and
- * claims for breach of contract, breach of warranty, guarantee or condition, strict liability, negligence, or other tort to the extent permitted by applicable law.
-It also applies even if Microsoft knew or should have known about the possibility of the damages. The above limitation or exclusion may not apply to you because your country may not allow the exclusion or limitation of incidental, consequential or other damages.
-Please note: As this software is distributed in Quebec, Canada, some of the clauses in this agreement are provided below in French.
-Remarque : Ce logiciel tant distribu au Qubec, Canada, certaines des clauses dans ce contrat sont fournies ci-dessous en franais.
-EXONRATION DE GARANTIE. Le logiciel vis par une licence est offert tel quel . Toute utilisation de ce logiciel est votre seule risque et pril. Microsoft n'accorde aucune autre garantie expresse. Vous pouvez bnficier de droits additionnels en vertu du droit local sur la protection des consommateurs, que ce contrat ne peut modifier. La ou elles sont permises par le droit locale, les garanties implicites de qualit marchande, d'adquation un usage particulier et d'absence de contrefaon sont exclues.
-LIMITATION DES DOMMAGES-INTRTS ET EXCLUSION DE RESPONSABILIT POUR LES DOMMAGES. Vous pouvez obtenir de Microsoft et de ses fournisseurs une indemnisation en cas de dommages directs uniquement hauteur de 5,00 $ US. Vous ne pouvez prtendre aucune indemnisation pour les autres dommages, y compris les dommages spciaux, indirects ou accessoires et pertes de bnfices.
-Cette limitation concerne :
- * tout ce qui est reli au logiciel, aux services ou au contenu (y compris le code) figurant sur des sites Internet tiers ou dans des programmes tiers ; et
- * les rclamations au titre de violation de contrat ou de garantie, ou au titre de responsabilit stricte, de ngligence ou d'une autre faute dans la limite autorise par la loi en vigueur.
-Elle s'applique galement, mme si Microsoft connaissait ou devrait connatre l'ventualit d'un tel dommage. Si votre pays n'autorise pas l'exclusion ou la limitation de responsabilit pour les dommages indirects, accessoires ou de quelque nature que ce soit, il se peut que la limitation ou l'exclusion ci-dessus ne s'appliquera pas votre gard.
-EFFET JURIDIQUE. Le prsent contrat dcrit certains droits juridiques. Vous pourriez avoir d'autres droits prvus par les lois de votre pays. Le prsent contrat ne modifie pas les droits que vous confrent les lois de votre pays si celles-ci ne le permettent pas.
-
diff --git a/resources/images/version_badge.svg b/resources/images/version_badge.svg
deleted file mode 100644
index 956523b78d..0000000000
--- a/resources/images/version_badge.svg
+++ /dev/null
@@ -1,16 +0,0 @@
-
diff --git a/run.cmd b/run.cmd
deleted file mode 100644
index b12a0f7b1e..0000000000
--- a/run.cmd
+++ /dev/null
@@ -1,22 +0,0 @@
-@if "%_echo%" neq "on" echo off
-setlocal
-
-if defined VisualStudioVersion goto :Run
-
-set _VSWHERE="%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe"
-if exist %_VSWHERE% (
- for /f "usebackq tokens=*" %%i in (`%_VSWHERE% -latest -prerelease -property installationPath`) do set _VSCOMNTOOLS=%%i\Common7\Tools
-)
-if not exist "%_VSCOMNTOOLS%" set _VSCOMNTOOLS=%VS140COMNTOOLS%
-if not exist "%_VSCOMNTOOLS%" (
- echo Error: Visual Studio 2015 or 2017 required.
- echo Please see https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/developer-guide.md for build instructions.
- exit /b 1
-)
-
-set VSCMD_START_DIR="%~dp0"
-call "%_VSCOMNTOOLS%\VsDevCmd.bat"
-
-:Run
-powershell -NoProfile -ExecutionPolicy unrestricted -Command "%~dp0run.ps1 -- %*"
-exit /b %ERRORLEVEL%
\ No newline at end of file
diff --git a/run.ps1 b/run.ps1
deleted file mode 100644
index 1a26083040..0000000000
--- a/run.ps1
+++ /dev/null
@@ -1,16 +0,0 @@
-# set the base tools directory
-$toolsLocalPath = Join-Path $PSScriptRoot "Tools"
-$restorePackagesPath = Join-Path $PSScriptRoot "packages"
-
-# We do not want to run the first-time experience.
-$env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE = 1
-
-$initTools = Join-Path $PSScriptRoot "init-tools.cmd"
-& $initTools
-
-# execute the tool using the dotnet.exe host
-$dotNetExe = Join-Path $toolsLocalPath "dotnetcli\dotnet.exe"
-$runExe = Join-Path $toolsLocalPath "run.exe"
-$runConfig = Join-Path $PSScriptRoot "config.json"
-& $dotNetExe $runExe $runConfig $args
-exit $LastExitCode
\ No newline at end of file
diff --git a/run.sh b/run.sh
deleted file mode 100755
index f4bf53b038..0000000000
--- a/run.sh
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/usr/bin/env bash
-
-__scriptpath=$(cd "$(dirname "$0")"; pwd -P)
-
-# We do not want to run the first-time experience.
-export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
-
-# Source the init-tools.sh script rather than execute in order to preserve ulimit values in child-processes. https://github.com/dotnet/corefx/issues/19152
-. $__scriptpath/init-tools.sh
-
-__toolRuntime=$__scriptpath/Tools
-__dotnet=$__toolRuntime/dotnetcli/dotnet
-
-cd $__scriptpath
-$__dotnet $__toolRuntime/run.exe $__scriptpath/config.json $*
-exit $?
diff --git a/signing/baseline.props b/signing/baseline.props
deleted file mode 100644
index c7203506fe..0000000000
--- a/signing/baseline.props
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/signing/dir.props b/signing/dir.props
deleted file mode 100644
index 133d6c2fa9..0000000000
--- a/signing/dir.props
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
- $(BinDir)SigningValidation\
- $(SigningValidationRoot)artifacts
- $(SigningValidationRoot)logs\
-
- $(PackagesDir)microsoft.dotnet.bininspector\1.0.0-alpha-00001\lib\BinInspect.exe
- $(LogDirectory)SignResults.xml
-
-
\ No newline at end of file
diff --git a/signing/sign.proj b/signing/sign.proj
deleted file mode 100644
index fecb4a804f..0000000000
--- a/signing/sign.proj
+++ /dev/null
@@ -1,99 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(BaseOutputRootPath)/
- $(IntermediateOutputRootPath)
-
-
-
-
-
-
-
-
-
-
-
- $(CertificateId)
-
-
- $(CertificateId)
-
-
- $(CertificateId)
-
-
-
-
-
- $(CertificateId)
-
-
-
-
-
- $(CertificateId)
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(CertificateId)
-
-
- $(CertificateId)
-
-
-
-
-
-
-
-
-
-
-
-
- $(CertificateId)
-
-
-
-
-
-
-
-
-
-
-
-
- $(CertificateId)
-
-
-
-
-
-
diff --git a/signing/signingvalidation.proj b/signing/signingvalidation.proj
deleted file mode 100644
index 16cecb48d1..0000000000
--- a/signing/signingvalidation.proj
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/signing/validation.targets b/signing/validation.targets
deleted file mode 100644
index ef010a2851..0000000000
--- a/signing/validation.targets
+++ /dev/null
@@ -1,97 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- %(_BlobList.Identity)
- %(_BlobList.Extension)
- %(_BlobList.Filename)%(_BlobList.Extension)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(BinInspectCommand) /c /o $(LogDirectory) /msu /a /v /x $(DownloadDirectory)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/corehost/CMakeLists.txt b/src/corehost/CMakeLists.txt
deleted file mode 100644
index fd2dd12537..0000000000
--- a/src/corehost/CMakeLists.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-cmake_minimum_required (VERSION 2.6)
-
-include(../settings.cmake)
-add_subdirectory(cli)
diff --git a/src/corehost/Windows/gen-buildsys-win.bat b/src/corehost/Windows/gen-buildsys-win.bat
deleted file mode 100644
index 8d70f2601c..0000000000
--- a/src/corehost/Windows/gen-buildsys-win.bat
+++ /dev/null
@@ -1,59 +0,0 @@
-@if "%_echo%" neq "on" echo off
-rem
-rem This file invokes cmake and generates the build system for windows.
-
-set argC=0
-for %%x in (%*) do Set /A argC+=1
-
-if NOT %argC%==9 GOTO :USAGE
-if %1=="/?" GOTO :USAGE
-
-setlocal
-set __sourceDir=%~dp0..
-set __VSString=%2
- :: Remove quotes
-set __VSString=%__VSString:"=%
-
-:: Set the target architecture to a format cmake understands. ANYCPU defaults to x64
-set __RIDArch=%3
-if /i "%3" == "x86" (set cm_BaseRid=win7&&set cm_Arch=I386&&set __VSString=%__VSString%)
-if /i "%3" == "x64" (set cm_BaseRid=win7&&set cm_Arch=AMD64&&set __VSString=%__VSString% Win64)
-if /i "%3" == "arm" (set cm_BaseRid=win8&&set cm_Arch=ARM&&set __VSString=%__VSString% ARM)
-if /i "%3" == "arm64" (set cm_BaseRid=win10&&set cm_Arch=ARM64&&set __VSString=%__VSString% Win64)
-
-set __LatestCommit=%4
-set __HostVersion=%5
-set __AppHostVersion=%6
-set __HostResolverVersion=%7
-set __HostPolicyVersion=%8
-
-:: Form the base RID to be used if we are doing a portable build
-if /i "%9" == "1" (set cm_BaseRid=win)
-set cm_BaseRid=%cm_BaseRid%-%__RIDArch%
-echo "Computed RID for native build is %cm_BaseRid%"
-
-if defined CMakePath goto DoGen
-
-:: Eval the output from probe-win1.ps1
-pushd "%__sourceDir%"
-for /f "delims=" %%a in ('powershell -NoProfile -ExecutionPolicy ByPass "& .\Windows\probe-win.ps1"') do %%a
-popd
-
-:DoGen
-echo "%CMakePath%" %__sourceDir% %__SDKVersion% "-DCLI_CMAKE_RUNTIME_ID:STRING=%cm_BaseRid%" "-DCLI_CMAKE_HOST_VER:STRING=%__HostVersion%" "-DCLI_CMAKE_APPHOST_VER:STRING=%__AppHostVersion%" "-DCLI_CMAKE_HOST_FXR_VER:STRING=%__HostResolverVersion%" "-DCLI_CMAKE_HOST_POLICY_VER:STRING=%__HostPolicyVersion%" "-DCLI_CMAKE_PKG_RID:STRING=%cm_BaseRid%" "-DCLI_CMAKE_COMMIT_HASH:STRING=%__LatestCommit%" "-DCLI_CMAKE_PLATFORM_ARCH_%cm_Arch%=1" "-DCMAKE_INSTALL_PREFIX=%__CMakeBinDir%" "-DCLI_CMAKE_RESOURCE_DIR:STRING=%__ResourcesDir%" -G "Visual Studio %__VSString%"
-"%CMakePath%" %__sourceDir% %__SDKVersion% "-DCLI_CMAKE_RUNTIME_ID:STRING=%cm_BaseRid%" "-DCLI_CMAKE_HOST_VER:STRING=%__HostVersion%" "-DCLI_CMAKE_APPHOST_VER:STRING=%__AppHostVersion%" "-DCLI_CMAKE_HOST_FXR_VER:STRING=%__HostResolverVersion%" "-DCLI_CMAKE_HOST_POLICY_VER:STRING=%__HostPolicyVersion%" "-DCLI_CMAKE_PKG_RID:STRING=%cm_BaseRid%" "-DCLI_CMAKE_COMMIT_HASH:STRING=%__LatestCommit%" "-DCLI_CMAKE_PLATFORM_ARCH_%cm_Arch%=1" "-DCMAKE_INSTALL_PREFIX=%__CMakeBinDir%" "-DCLI_CMAKE_RESOURCE_DIR:STRING=%__ResourcesDir%" -G "Visual Studio %__VSString%"
-endlocal
-GOTO :DONE
-
-:USAGE
- echo "Usage..."
- echo "gen-buildsys-win.bat "
- echo "Specify the path to the top level CMake file - /src/NDP"
- echo "Specify the VSVersion to be used - VS2013 or VS2015"
- echo "Specify the Target Architecture - x86, AnyCPU, ARM, or x64."
- echo "Specify latest commit hash"
- echo "Specify the host version, apphost version, hostresolver version, hostpolicy version"
- EXIT /B 1
-
-:DONE
- EXIT /B 0
\ No newline at end of file
diff --git a/src/corehost/Windows/probe-win.ps1 b/src/corehost/Windows/probe-win.ps1
deleted file mode 100644
index d1ae1fd5b5..0000000000
--- a/src/corehost/Windows/probe-win.ps1
+++ /dev/null
@@ -1,65 +0,0 @@
-# This file probes for the prerequisites for the build system, and outputs commands for eval'ing
-# from the cmd scripts to set variables (and exit on error)
-
-function GetCMakeVersions
-{
- $items = @()
- $items += @(Get-ChildItem hklm:\SOFTWARE\Wow6432Node\Kitware -ErrorAction SilentlyContinue)
- $items += @(Get-ChildItem hklm:\SOFTWARE\Kitware -ErrorAction SilentlyContinue)
- return $items | Where-Object { $_.PSChildName.StartsWith("CMake ") }
-}
-
-function GetCMakeInfo($regKey)
-{
- # This no longer works for versions 3.5+
- try {
- $version = [System.Version] $regKey.PSChildName.Split(' ')[1]
- }
- catch {
- return $null
- }
- $cmakeDir = (Get-ItemProperty $regKey.PSPath).'(default)'
- $cmakePath = [System.IO.Path]::Combine($cmakeDir, "bin\cmake.exe")
- if (![System.IO.File]::Exists($cmakePath)) {
- return $null
- }
- return @{'version' = $version; 'path' = $cmakePath}
-}
-
-function LocateCMake
-{
- $errorMsg = "CMake is a pre-requisite to build this repository but it was not found on the path. Please install CMake from http://www.cmake.org/download/ and ensure it is on your path."
- $inPathPath = (get-command cmake.exe -ErrorAction SilentlyContinue).Path
- if ($inPathPath -ne $null) {
- return $inPathPath
- }
- # Check the default installation directory
- $inDefaultDir = [System.IO.Path]::Combine(${Env:ProgramFiles(x86)}, "CMake\bin\cmake.exe")
- if ([System.IO.File]::Exists($inDefaultDir)) {
- return $inDefaultDir
- }
- # Let us hope that CMake keep using their current version scheme
- $validVersions = @()
- foreach ($regKey in GetCMakeVersions) {
- $info = GetCMakeInfo($regKey)
- if ($info -ne $null) {
- $validVersions += @($info)
- }
- }
- $newestCMakePath = ($validVersions |
- Sort-Object -property @{Expression={$_.version}; Ascending=$false} |
- Select-Object -first 1).path
- if ($newestCMakePath -eq $null) {
- Throw $errorMsg
- }
- return $newestCMakePath
-}
-
-try {
- $cmakePath = LocateCMake
- [System.Console]::WriteLine("set CMakePath=" + $cmakePath)
-}
-catch {
- [System.Console]::Error.WriteLine($_.Exception.Message)
- [System.Console]::WriteLine("exit /b 1")
-}
diff --git a/src/corehost/build.cmd b/src/corehost/build.cmd
deleted file mode 100644
index baeb53e7a6..0000000000
--- a/src/corehost/build.cmd
+++ /dev/null
@@ -1,183 +0,0 @@
-@if not defined _echo @echo off
-setlocal
-
-:SetupArgs
-:: Initialize the args that will be passed to cmake
-set __nativeWindowsDir=%~dp0Windows
-set __binDir=%~dp0..\..\Bin
-set __rootDir=%~dp0..\..
-set __CMakeBinDir=""
-set __IntermediatesDir=""
-set __BuildArch=x64
-set __appContainer=""
-set __VCBuildArch=x86_amd64
-set CMAKE_BUILD_TYPE=Debug
-set "__LinkArgs= "
-set "__LinkLibraries= "
-set __PortableBuild=0
-
-:Arg_Loop
-if [%1] == [] goto :ToolsVersion
-if /i [%1] == [Release] ( set CMAKE_BUILD_TYPE=Release&&shift&goto Arg_Loop)
-if /i [%1] == [Debug] ( set CMAKE_BUILD_TYPE=Debug&&shift&goto Arg_Loop)
-
-if /i [%1] == [AnyCPU] ( set __BuildArch=x64&&set __VCBuildArch=x86_amd64&&shift&goto Arg_Loop)
-if /i [%1] == [x86] ( set __BuildArch=x86&&set __VCBuildArch=x86&&shift&goto Arg_Loop)
-if /i [%1] == [arm] ( set __BuildArch=arm&&set __VCBuildArch=x86_arm&&set __SDKVersion="-DCMAKE_SYSTEM_VERSION=10.0"&&shift&goto Arg_Loop)
-if /i [%1] == [x64] ( set __BuildArch=x64&&set __VCBuildArch=x86_amd64&&shift&goto Arg_Loop)
-if /i [%1] == [amd64] ( set __BuildArch=x64&&set __VCBuildArch=x86_amd64&&shift&goto Arg_Loop)
-if /i [%1] == [arm64] ( set __BuildArch=arm64&&set __VCBuildArch=arm64&&shift&goto Arg_Loop)
-
-if /i [%1] == [portable] ( set __PortableBuild=1&&shift&goto Arg_Loop)
-if /i [%1] == [rid] ( set __TargetRid=%2&&shift&&shift&goto Arg_Loop)
-if /i [%1] == [toolsetDir] ( set "__ToolsetDir=%2"&&shift&&shift&goto Arg_Loop)
-if /i [%1] == [hostver] (set __HostVersion=%2&&shift&&shift&goto Arg_Loop)
-if /i [%1] == [apphostver] (set __AppHostVersion=%2&&shift&&shift&goto Arg_Loop)
-if /i [%1] == [fxrver] (set __HostResolverVersion=%2&&shift&&shift&goto Arg_Loop)
-if /i [%1] == [policyver] (set __HostPolicyVersion=%2&&shift&&shift&goto Arg_Loop)
-if /i [%1] == [commit] (set __CommitSha=%2&&shift&&shift&goto Arg_Loop)
-
-shift
-goto :Arg_Loop
-
-:ToolsVersion
-
-if defined VisualStudioVersion goto :RunVCVars
-
-set _VSWHERE="%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe"
-if exist %_VSWHERE% (
- for /f "usebackq tokens=*" %%i in (`%_VSWHERE% -latest -property installationPath`) do set _VSCOMNTOOLS=%%i\Common7\Tools
-)
-if not exist "%_VSCOMNTOOLS%" set _VSCOMNTOOLS=%VS140COMNTOOLS%
-if not exist "%_VSCOMNTOOLS%" goto :MissingVersion
-
-set VSCMD_START_DIR="%~dp0"
-call "%_VSCOMNTOOLS%\VsDevCmd.bat"
-
-:RunVCVars
-if "%VisualStudioVersion%"=="15.0" (
- goto :VS2017
-) else if "%VisualStudioVersion%"=="14.0" (
- goto :VS2015
-)
-
-:MissingVersion
-:: Can't find VS 2015 or 2017
-echo Error: Visual Studio 2015 or 2017 required
-echo Please see https://github.com/dotnet/corefx/tree/master/Documentation for build instructions.
-exit /b 1
-
-:VS2017
-:: Setup vars for VS2017
-set __PlatformToolset=v141
-set __VSVersion=15 2017
-if NOT "%__BuildArch%" == "arm64" (
- :: Set the environment for the native build
- call "%VS150COMNTOOLS%..\..\VC\Auxiliary\Build\vcvarsall.bat" %__VCBuildArch%
-)
-goto :SetupDirs
-
-:VS2015
-:: Setup vars for VS2015build
-set __PlatformToolset=v140
-set __VSVersion=14 2015
-if NOT "%__BuildArch%" == "arm64" (
- :: Set the environment for the native build
- call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" %__VCBuildArch%
-)
-
-:SetupDirs
-:: Setup to cmake the native components
-echo Commencing build of corehost
-echo.
-
-if %__CMakeBinDir% == "" (
- set "__CMakeBinDir=%__binDir%\%__TargetRid%.%CMAKE_BUILD_TYPE%\corehost"
-)
-if %__IntermediatesDir% == "" (
- set "__IntermediatesDir=%__binDir%\obj\%__TargetRid%.%CMAKE_BUILD_TYPE%\corehost"
-)
-set "__ResourcesDir=%__binDir%\obj\%__TargetRid%.%CMAKE_BUILD_TYPE%\hostResourceFiles"
-set "__CMakeBinDir=%__CMakeBinDir:\=/%"
-set "__IntermediatesDir=%__IntermediatesDir:\=/%"
-
-
-:: Check that the intermediate directory exists so we can place our cmake build tree there
-if exist "%__IntermediatesDir%" rd /s /q "%__IntermediatesDir%"
-if not exist "%__IntermediatesDir%" md "%__IntermediatesDir%"
-
-if exist "%VSINSTALLDIR%DIA SDK" goto GenVSSolution
-echo Error: DIA SDK is missing at "%VSINSTALLDIR%DIA SDK". ^
-This is due to a bug in the Visual Studio installer. It does not install DIA SDK at "%VSINSTALLDIR%" but rather ^
-at VS install location of previous version. Workaround is to copy DIA SDK folder from VS install location ^
-of previous version to "%VSINSTALLDIR%" and then resume build.
-:: DIA SDK not included in Express editions
-echo Visual Studio 2013 Express does not include the DIA SDK. ^
-You need Visual Studio 2013+ (Community is free).
-echo See: https://github.com/dotnet/coreclr/blob/master/Documentation/project-docs/developer-guide.md#prerequisites
-exit /b 1
-
-:GenVSSolution
-:: Regenerate the VS solution
-
-if /i "%__BuildArch%" == "arm64" (
- REM arm64 builds currently use private toolset which has not been released yet
- REM TODO, remove once the toolset is open.
- call :PrivateToolSet
-)
-
-echo Calling "%__nativeWindowsDir%\gen-buildsys-win.bat %~dp0 "%__VSVersion%" %__BuildArch% %__CommitSha% %__HostVersion% %__AppHostVersion% %__HostResolverVersion% %__HostPolicyVersion%"
-pushd "%__IntermediatesDir%"
-call "%__nativeWindowsDir%\gen-buildsys-win.bat" %~dp0 "%__VSVersion%" %__BuildArch% %__CommitSha% %__HostVersion% %__AppHostVersion% %__HostResolverVersion% %__HostPolicyVersion% %__PortableBuild%
-popd
-
-:CheckForProj
-:: Check that the project created by Cmake exists
-if exist "%__IntermediatesDir%\ALL_BUILD.vcxproj" goto BuildNativeProj
-goto :Failure
-
-:BuildNativeProj
-:: Build the project created by Cmake
-if "%__BuildArch%" == "arm64" (
- set __msbuildArgs=/p:UseEnv=true
-) else (
- set __msbuildArgs=/p:Platform=%__BuildArch% /p:PlatformToolset="%__PlatformToolset%"
-)
-
-cd %__rootDir%
-
-echo %__rootDir%\run.cmd build-native -- "%__IntermediatesDir%\ALL_BUILD.vcxproj" /t:rebuild /p:Configuration=%CMAKE_BUILD_TYPE% %__msbuildArgs%
-call %__rootDir%\run.cmd build-native -- "%__IntermediatesDir%\ALL_BUILD.vcxproj" /t:rebuild /p:Configuration=%CMAKE_BUILD_TYPE% %__msbuildArgs%
-IF ERRORLEVEL 1 (
- goto :Failure
-)
-echo Done building Native components
-exit /B 0
-
-:Failure
-:: Build failed
-echo Failed to generate native component build project!
-exit /b 1
-
-:PrivateToolSet
-echo %__MsgPrefix% Setting Up the usage of __ToolsetDir:%__ToolsetDir%
-
-if /i "%__ToolsetDir%" == "" (
- echo %__MsgPrefix%Error: A toolset directory is required for the Arm64 Windows build. Use the toolsetDir argument.
- exit /b 1
-)
-
-set PATH=%__ToolsetDir%\VC_sdk\bin;%PATH%
-set LIB=%__ToolsetDir%\VC_sdk\lib\arm64;%__ToolsetDir%\sdpublic\sdk\lib\arm64
-set INCLUDE=^
-%__ToolsetDir%\VC_sdk\inc;^
-%__ToolsetDir%\sdpublic\sdk\inc;^
-%__ToolsetDir%\sdpublic\shared\inc;^
-%__ToolsetDir%\sdpublic\shared\inc\minwin;^
-%__ToolsetDir%\sdpublic\sdk\inc\ucrt;^
-%__ToolsetDir%\sdpublic\sdk\inc\minwin;^
-%__ToolsetDir%\sdpublic\sdk\inc\mincore;^
-%__ToolsetDir%\sdpublic\sdk\inc\abi;^
-%__ToolsetDir%\sdpublic\sdk\inc\clientcore;^
-%__ToolsetDir%\diasdk\include
-exit /b 0
\ No newline at end of file
diff --git a/src/corehost/build.proj b/src/corehost/build.proj
deleted file mode 100644
index 4ac16fb8a6..0000000000
--- a/src/corehost/build.proj
+++ /dev/null
@@ -1,96 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- true
- $(BaseIntermediateOutputPath)version.cpp
-
-
-
-
- $(IntermediateOutputRootPath)corehost\cmake\
- $(CMakeBuildDir)cli\fxr\$(DotnetHostFxrBaseName)
- $(CMakeBuildDir)cli\dll\$(HostPolicyBaseName)
-
- --arch $(TargetArchitecture) --apphostver $(AppHostVersion) --hostver $(HostVersion) --fxrver $(HostResolverVersion) --policyver $(HostPolicyVersion) --commithash $(LatestCommit)
- $(BuildArgs) -portable
- $(BuildArgs) --cross
- $(BuildArgs) --stripsymbols
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- .NET Core Host
-
-
- .NET Core Host Resolver - $(HostResolverVersion)
-
-
- .NET Core Host Policy - $(HostPolicyVersion)
-
-
-
-
-
- $(ConfigurationGroup) $(TargetArchitecture) apphostver $(AppHostVersion) hostver $(HostVersion) fxrver $(HostResolverVersion) policyver $(HostPolicyVersion) commit $(LatestCommit) rid $(OutputRid)
- $(BuildArgs) portable
- toolsetdir $(NativeToolsetDir)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/corehost/build.sh b/src/corehost/build.sh
deleted file mode 100755
index 95ef76dc09..0000000000
--- a/src/corehost/build.sh
+++ /dev/null
@@ -1,244 +0,0 @@
-#!/usr/bin/env bash
-
-init_rid_plat()
-{
- # Detect Distro
- if [ $__CrossBuild == 1 ]; then
- if [ -z $ROOTFS_DIR ]; then
- echo "ROOTFS_DIR is not defined."
- exit -1
- else
- if [ -e $ROOTFS_DIR/etc/os-release ]; then
- source $ROOTFS_DIR/etc/os-release
- __rid_plat="$ID.$VERSION_ID"
- fi
- echo "__rid_plat is $__rid_plat"
- fi
- else
- __rid_plat=""
- if [ -e /etc/os-release ]; then
- source /etc/os-release
- if [[ "$ID" == "centos" ]]; then
- ID="rhel"
- fi
- if [[ "$ID" == "rhel" ]]; then
- # remove the last version number
- VERSION_ID=${VERSION_ID%.*}
- fi
- __rid_plat="$ID.$VERSION_ID"
- if [[ "$ID" == "alpine" ]]; then
- __rid_plat="linux-musl"
- fi
- elif [ -e /etc/redhat-release ]; then
- local redhatRelease=$( --hostver --apphostver --fxrver --policyver --commithash [--xcompiler ]"
- echo ""
- echo "Options:"
- echo " --arch Target Architecture (x64, x86, arm, arm64, armel)"
- echo " --hostver Version of the dotnet executable"
- echo " --apphostver Version of the apphost executable"
- echo " --fxrver Version of the hostfxr library"
- echo " --policyver Version of the hostpolicy library"
- echo " --commithash Current commit hash of the repo at build time"
- echo " -portable Optional argument to build portable platform packages."
- echo " --cross Optional argument to signify cross compilation,"
- echo " and use ROOTFS_DIR environment variable to find rootfs."
- echo " --stripsymbols Optional argument to strip native symbols during the build"
-
- exit 1
-}
-
-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 )"
-RootRepo="$DIR/../.."
-
-__build_arch=
-__host_ver=
-__apphost_ver=
-__policy_ver=
-__fxr_ver=
-__CrossBuild=0
-__commit_hash=
-__portableBuildArgs=
-__configuration=Debug
-__linkPortable=0
-__cmake_defines="-DCMAKE_BUILD_TYPE=${__configuration} ${__portableBuildArgs}"
-__baseIntermediateOutputPath="$RootRepo/Bin/obj"
-__versionSourceFile="$__baseIntermediateOutputPath/version.cpp"
-
-while [ "$1" != "" ]; do
- lowerI="$(echo $1 | awk '{print tolower($0)}')"
- case $lowerI in
- -h|--help)
- usage
- exit 1
- ;;
- --arch)
- shift
- __build_arch=$1
- ;;
- --configuration)
- shift
- __configuration=$1
- ;;
- --hostver)
- shift
- __host_ver=$1
- ;;
- --apphostver)
- shift
- __apphost_ver=$1
- ;;
- --fxrver)
- shift
- __fxr_ver=$1
- ;;
- --policyver)
- shift
- __policy_ver=$1
- ;;
- --commithash)
- shift
- __commit_hash=$1
- ;;
- -portable)
- __portableBuildArgs="-DCLI_CMAKE_PORTABLE_BUILD=1"
- __linkPortable=1
- ;;
- --cross)
- __CrossBuild=1
- ;;
- --stripsymbols)
- __cmake_defines="${__cmake_defines} -DSTRIP_SYMBOLS=true"
- ;;
- *)
- echo "Unknown argument to build.sh $1"; usage; exit 1
- esac
- shift
-done
-
-mkdir -p "$__baseIntermediateOutputPath"
-
-case $__build_arch in
- amd64|x64)
- __arch_define=-DCLI_CMAKE_PLATFORM_ARCH_AMD64=1
- ;;
- x86)
- __arch_define=-DCLI_CMAKE_PLATFORM_ARCH_I386=1
- ;;
- arm|armel)
- __arch_define=-DCLI_CMAKE_PLATFORM_ARCH_ARM=1
- ;;
- arm64)
- __arch_define=-DCLI_CMAKE_PLATFORM_ARCH_ARM64=1
- ;;
- *)
- echo "Unknown architecture $__build_arch"; usage; exit 1
- ;;
-esac
-__cmake_defines="${__cmake_defines} ${__arch_define}"
-
-# Configure environment if we are doing a cross compile.
-if [ "$__CrossBuild" == 1 ]; then
- if ! [[ -n $ROOTFS_DIR ]]; then
- export ROOTFS_DIR="$RootRepo/cross/rootfs/$__build_arch"
- fi
-fi
-
-# __rid_plat is the base RID that corehost is shipped for, effectively, the name of the folder in "runtimes/{__rid_plat}/native/" inside the nupkgs.
-__rid_plat=
-init_rid_plat
-
-if [ -z $__rid_plat ]; then
- echo "Unknown base rid (eg.: osx.10.12, ubuntu.14.04) being targeted"
- exit -1
-fi
-
-if [ -z $__commit_hash ]; then
- echo "Commit hash was not specified"
- exit -1
-fi
-
-__build_arch_lowcase=$(echo "$__build_arch" | tr '[:upper:]' '[:lower:]')
-__base_rid=$__rid_plat-$__build_arch_lowcase
-echo "Computed RID for native build is $__base_rid"
-export __CrossToolChainTargetRID=$__base_rid
-
-# Set up the environment to be used for building with clang.
-if command -v "clang-3.5" > /dev/null 2>&1; then
- export CC="$(command -v clang-3.5)"
- export CXX="$(command -v clang++-3.5)"
-elif command -v "clang-3.6" > /dev/null 2>&1; then
- export CC="$(command -v clang-3.6)"
- export CXX="$(command -v clang++-3.6)"
-elif command -v "clang-3.9" > /dev/null 2>&1; then
- export CC="$(command -v clang-3.9)"
- export CXX="$(command -v clang++-3.9)"
-elif command -v clang > /dev/null 2>&1; then
- export CC="$(command -v clang)"
- export CXX="$(command -v clang++)"
-else
- echo "Unable to find Clang Compiler"
- echo "Install clang-3.5 or clang3.6 or clang3.9"
- exit 1
-fi
-
-if [ ! -f $__versionSourceFile ]; then
- __versionSourceLine="static char sccsid[] __attribute__((used)) = \"@(#)No version information produced\";"
- echo $__versionSourceLine > $__versionSourceFile
-fi
-
-__cmake_defines="${__cmake_defines} -DVERSION_FILE_PATH:STRING=${__versionSourceFile}"
-
-echo "Building Corehost from $DIR to $(pwd)"
-set -x # turn on trace
-if [ $__CrossBuild == 1 ]; then
- # clang-3.9 is default compiler for cross compilation
- if command -v "clang-3.9" > /dev/null 2>&1; then
- export CC="$(command -v clang-3.9)"
- export CXX="$(command -v clang++-3.9)"
- else
- echo "Unable to find Clang 3.9 Compiler"
- echo "Install clang-3.9 for cross compilation"
- exit 1
- fi
- cmake "$DIR" -G "Unix Makefiles" $__cmake_defines -DCLI_CMAKE_HOST_VER:STRING=$__host_ver -DCLI_CMAKE_APPHOST_VER:STRING=$__apphost_ver -DCLI_CMAKE_HOST_FXR_VER:STRING=$__fxr_ver -DCLI_CMAKE_HOST_POLICY_VER:STRING=$__policy_ver -DCLI_CMAKE_PKG_RID:STRING=$__base_rid -DCLI_CMAKE_COMMIT_HASH:STRING=$__commit_hash -DCMAKE_TOOLCHAIN_FILE=$DIR/../../cross/$__build_arch_lowcase/toolchain.cmake
-else
- cmake "$DIR" -G "Unix Makefiles" $__cmake_defines -DCLI_CMAKE_HOST_VER:STRING=$__host_ver -DCLI_CMAKE_APPHOST_VER:STRING=$__apphost_ver -DCLI_CMAKE_HOST_FXR_VER:STRING=$__fxr_ver -DCLI_CMAKE_HOST_POLICY_VER:STRING=$__policy_ver -DCLI_CMAKE_PKG_RID:STRING=$__base_rid -DCLI_CMAKE_COMMIT_HASH:STRING=$__commit_hash
-fi
-set +x # turn off trace
-make
diff --git a/src/corehost/cli/CMakeLists.txt b/src/corehost/cli/CMakeLists.txt
deleted file mode 100644
index f6ae63f935..0000000000
--- a/src/corehost/cli/CMakeLists.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-add_subdirectory(exe)
-add_subdirectory(fxr)
-add_subdirectory(dll)
diff --git a/src/corehost/cli/args.cpp b/src/corehost/cli/args.cpp
deleted file mode 100644
index 66365be623..0000000000
--- a/src/corehost/cli/args.cpp
+++ /dev/null
@@ -1,130 +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.
-
-#include "args.h"
-#include "utils.h"
-#include "coreclr.h"
-#include "libhost.h"
-
-arguments_t::arguments_t() :
- managed_application(_X("")),
- host_path(_X("")),
- app_root(_X("")),
- app_argc(0),
- app_argv(nullptr),
- core_servicing(_X("")),
- deps_path(_X(""))
-{
-}
-
-/**
- *
- * Setup the shared store directories.
- *
- * o %DOTNET_SHARED_STORE% -- multiple delimited paths
- * o $HOME/.dotnet/{x86|x64}/store/arch/tfm or %USERPROFILE%\.dotnet\{x86|x64}\store\\
- * o dotnet.exe relative shared store\\
- * o Global location
- * Windows: C:\Program Files (x86) or
- * Unix: directory of dotnet on the path.\\
- */
-void setup_shared_store_paths(const hostpolicy_init_t& init, const pal::string_t& own_dir, arguments_t* args)
-{
- if (init.tfm.empty())
- {
- // Old (MNA < 1.1.*) "runtimeconfig.json" files do not contain TFM property.
- return;
- }
-
- // Environment variable DOTNET_SHARED_STORE
- (void) get_env_shared_store_dirs(&args->env_shared_store, get_arch(), init.tfm);
-
- // "dotnet.exe" relative shared store folder
- if (init.host_mode == host_mode_t::muxer)
- {
- args->dotnet_shared_store = own_dir;
- append_path(&args->dotnet_shared_store, RUNTIME_STORE_DIRECTORY_NAME);
- append_path(&args->dotnet_shared_store, get_arch());
- append_path(&args->dotnet_shared_store, init.tfm.c_str());
- }
-
- // Global shared store dir
- bool multilevel_lookup = multilevel_lookup_enabled();
- if (multilevel_lookup)
- {
- get_global_shared_store_dirs(&args->global_shared_stores, get_arch(), init.tfm);
- }
-}
-
-bool parse_arguments(
- const hostpolicy_init_t& init,
- const int argc, const pal::char_t* argv[], arguments_t* arg_out)
-{
- arguments_t& args = *arg_out;
-
- args.host_path = init.host_info.host_path;
-
- if (init.host_mode != host_mode_t::apphost)
- {
- // First argument is managed app
- if (argc < 2)
- {
- return false;
- }
- args.managed_application = pal::string_t(argv[1]);
- if (!pal::realpath(&args.managed_application))
- {
- trace::error(_X("Failed to locate managed application [%s]"), args.managed_application.c_str());
- return false;
- }
- args.app_root = get_directory(args.managed_application);
- args.app_argc = argc - 2;
- args.app_argv = &argv[2];
- }
- else
- {
- // Find the managed app in the same directory
- args.managed_application = init.host_info.app_path;
- if (!pal::realpath(&args.managed_application))
- {
- trace::error(_X("Failed to locate managed application [%s]"), args.managed_application.c_str());
- return false;
- }
- args.app_root = get_directory(init.host_info.app_path);
- args.app_argv = &argv[1];
- args.app_argc = argc - 1;
- }
-
- if (!init.deps_file.empty())
- {
- args.deps_path = init.deps_file;
- args.app_root = get_directory(args.deps_path);
- }
-
- for (const auto& probe : init.probe_paths)
- {
- args.probe_paths.push_back(probe);
- }
-
- if (args.deps_path.empty())
- {
- const auto& app_base = args.app_root;
- auto app_name = get_filename(args.managed_application);
-
- args.deps_path.reserve(app_base.length() + 1 + app_name.length() + 5);
- args.deps_path.append(app_base);
-
- if (!app_base.empty() && app_base.back() != DIR_SEPARATOR)
- {
- args.deps_path.push_back(DIR_SEPARATOR);
- }
- args.deps_path.append(app_name, 0, app_name.find_last_of(_X(".")));
- args.deps_path.append(_X(".deps.json"));
- }
-
- pal::get_default_servicing_directory(&args.core_servicing);
-
- setup_shared_store_paths(init, get_directory(args.host_path), &args);
-
- return true;
-}
diff --git a/src/corehost/cli/args.h b/src/corehost/cli/args.h
deleted file mode 100644
index e9208d13b2..0000000000
--- a/src/corehost/cli/args.h
+++ /dev/null
@@ -1,134 +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.
-
-#ifndef ARGS_H
-#define ARGS_H
-
-#include "utils.h"
-#include "pal.h"
-#include "trace.h"
-#include "deps_format.h"
-#include "libhost.h"
-
-struct probe_config_t
-{
- pal::string_t probe_dir;
- bool patch_roll_fwd;
- const deps_json_t* probe_deps_json;
- int fx_level;
-
- bool only_runtime_assets;
- bool only_serviceable_assets;
-
- bool probe_publish_dir;
-
- void print() const
- {
- trace::verbose(_X("probe_config_t: probe=[%s] deps-dir-probe=[%d]"),
- probe_dir.c_str(), probe_publish_dir);
- }
-
- probe_config_t(
- const pal::string_t& probe_dir,
- const deps_json_t* probe_deps_json,
- int fx_level,
- bool only_serviceable_assets,
- bool only_runtime_assets,
- bool probe_publish_dir)
- : probe_dir(probe_dir)
- , probe_deps_json(probe_deps_json)
- , fx_level(fx_level)
- , only_serviceable_assets(only_serviceable_assets)
- , only_runtime_assets(only_runtime_assets)
- , probe_publish_dir(probe_publish_dir)
- {
- }
-
- bool is_lookup() const
- {
- return (probe_deps_json == nullptr) &&
- !only_runtime_assets &&
- !only_serviceable_assets &&
- !probe_publish_dir;
- }
-
- bool is_fx() const
- {
- return (probe_deps_json != nullptr);
- }
-
- bool is_app() const
- {
- return probe_publish_dir;
- }
-
- static probe_config_t svc_ni(const pal::string_t& dir)
- {
- return probe_config_t(dir, nullptr, -1, true, true, false);
- }
-
- static probe_config_t svc(const pal::string_t& dir)
- {
- return probe_config_t(dir, nullptr, -1, true, false, false);
- }
-
- static probe_config_t fx(const pal::string_t& dir, const deps_json_t* deps, int fx_level)
- {
- return probe_config_t(dir, deps, fx_level, false, false, false);
- }
-
- static probe_config_t lookup(const pal::string_t& dir)
- {
- return probe_config_t(dir, nullptr, -1, false, false, false);
- }
-
- static probe_config_t published_deps_dir()
- {
- return probe_config_t(_X(""), nullptr, 0, false, false, true);
- }
-};
-
-struct arguments_t
-{
- pal::string_t host_path;
- pal::string_t app_root;
- pal::string_t deps_path;
- pal::string_t core_servicing;
- std::vector probe_paths;
- pal::string_t managed_application;
- std::vector global_shared_stores;
- pal::string_t dotnet_shared_store;
- std::vector env_shared_store;
- int app_argc;
- const pal::char_t** app_argv;
-
- arguments_t();
-
- inline void print()
- {
- if (trace::is_enabled())
- {
- trace::verbose(_X("-- arguments_t: host_path='%s' app_root='%s' deps='%s' core_svc='%s' mgd_app='%s'"),
- host_path.c_str(), app_root.c_str(), deps_path.c_str(), core_servicing.c_str(), managed_application.c_str());
- for (const auto& probe : probe_paths)
- {
- trace::verbose(_X("-- arguments_t: probe dir: '%s'"), probe.c_str());
- }
- for (const auto& shared : env_shared_store)
- {
- trace::verbose(_X("-- arguments_t: env shared store: '%s'"), shared.c_str());
- }
- trace::verbose(_X("-- arguments_t: dotnet shared store: '%s'"), dotnet_shared_store.c_str());
- for (const auto& global_shared : global_shared_stores)
- {
- trace::verbose(_X("-- arguments_t: global shared store: '%s'"), global_shared.c_str());
- }
- }
- }
-};
-
-bool parse_arguments(
- const hostpolicy_init_t& init,
- const int argc, const pal::char_t* argv[], arguments_t* arg_out);
-
-#endif // ARGS_H
diff --git a/src/corehost/cli/breadcrumbs.cpp b/src/corehost/cli/breadcrumbs.cpp
deleted file mode 100644
index 1482d4fa2c..0000000000
--- a/src/corehost/cli/breadcrumbs.cpp
+++ /dev/null
@@ -1,91 +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.
-
-#include
-#include "pal.h"
-#include "utils.h"
-#include "trace.h"
-#include "breadcrumbs.h"
-
-breadcrumb_writer_t::breadcrumb_writer_t(const std::unordered_set* files)
- : m_status(false)
- , m_files(files)
-{
- if (!pal::get_default_breadcrumb_store(&m_breadcrumb_store))
- {
- m_breadcrumb_store.clear();
- }
-}
-
-// Begin breadcrumb writing: write synchronously or launch a
-// thread to write breadcrumbs.
-void breadcrumb_writer_t::begin_write()
-{
- trace::verbose(_X("--- Begin breadcrumb write"));
- if (m_breadcrumb_store.empty())
- {
- trace::verbose(_X("Breadcrumb store was not obtained... skipping write."));
- m_status = false;
- return;
- }
-
- trace::verbose(_X("Number of breadcrumb files to write is %d"), m_files->size());
- if (m_files->empty())
- {
- m_status = true;
- return;
- }
- m_thread = std::thread(write_worker_callback, this);
- trace::verbose(_X("Breadcrumbs will be written using a background thread"));
-}
-
-// Write the breadcrumbs. This method should be called
-// only from the background thread.
-void breadcrumb_writer_t::write_callback()
-{
- bool successful = true;
- for (const auto& file : *m_files)
- {
- pal::string_t file_path = m_breadcrumb_store;
- pal::string_t file_name = _X("netcore,") + file;
- append_path(&file_path, file_name.c_str());
- if (!pal::file_exists(file_path))
- {
- if (!pal::touch_file(file_path))
- {
- successful = false;
- }
- }
- }
- // m_status should not be modified by anyone else.
- m_status = successful;
-}
-
-// ThreadProc for the background writer.
-void breadcrumb_writer_t::write_worker_callback(breadcrumb_writer_t* p_this)
-{
- try
- {
- trace::verbose(_X("Breadcrumb thread write callback..."));
- p_this->write_callback();
- }
- catch (...)
- {
- trace::warning(_X("An unexpected exception was thrown while leaving breadcrumbs"));
- }
-}
-
-// Wait for completion of the background tasks, if any.
-bool breadcrumb_writer_t::end_write()
-{
- if (m_thread.joinable())
- {
- trace::verbose(_X("Waiting for breadcrumb thread to exit..."));
-
- // Block on the thread to exit.
- m_thread.join();
- }
- trace::verbose(_X("--- End breadcrumb write %d"), m_status);
- return m_status;
-}
-
diff --git a/src/corehost/cli/breadcrumbs.h b/src/corehost/cli/breadcrumbs.h
deleted file mode 100644
index cae0ff788c..0000000000
--- a/src/corehost/cli/breadcrumbs.h
+++ /dev/null
@@ -1,27 +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.
-
-#ifndef __BREADCRUMBS_H__
-#define __BREADCRUMBS_H__
-
-#include
-
-class breadcrumb_writer_t
-{
-public:
- breadcrumb_writer_t(const std::unordered_set* files);
-
- void begin_write();
- bool end_write();
-
-private:
- void write_callback();
- static void write_worker_callback(breadcrumb_writer_t* p_this);
-
- pal::string_t m_breadcrumb_store;
- std::thread m_thread;
- const std::unordered_set* m_files;
- volatile bool m_status;
-};
-
-#endif // __BREADCRUMBS_H__
diff --git a/src/corehost/cli/coreclr.cpp b/src/corehost/cli/coreclr.cpp
deleted file mode 100644
index 21f99b6570..0000000000
--- a/src/corehost/cli/coreclr.cpp
+++ /dev/null
@@ -1,111 +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.
-
-#include
-
-#include "coreclr.h"
-#include "utils.h"
-
-static pal::dll_t g_coreclr = nullptr;
-
-// Prototype of the coreclr_initialize function from coreclr.dll
-typedef pal::hresult_t(STDMETHODCALLTYPE *coreclr_initialize_fn)(
- const char* exePath,
- const char* appDomainFriendlyName,
- int propertyCount,
- const char** propertyKeys,
- const char** propertyValues,
- coreclr::host_handle_t* hostHandle,
- unsigned int* domainId);
-
-// Prototype of the coreclr_shutdown function from coreclr.dll
-typedef pal::hresult_t(STDMETHODCALLTYPE *coreclr_shutdown_fn)(
- coreclr::host_handle_t hostHandle,
- unsigned int domainId,
- int* latchedExitCode);
-
-// Prototype of the coreclr_execute_assembly function from coreclr.dll
-typedef pal::hresult_t(STDMETHODCALLTYPE *coreclr_execute_assembly_fn)(
- coreclr::host_handle_t hostHandle,
- unsigned int domainId,
- int argc,
- const char** argv,
- const char* managedAssemblyPath,
- unsigned int* exitCode);
-
-static coreclr_shutdown_fn coreclr_shutdown = nullptr;
-static coreclr_initialize_fn coreclr_initialize = nullptr;
-static coreclr_execute_assembly_fn coreclr_execute_assembly = nullptr;
-
-bool coreclr::bind(const pal::string_t& libcoreclr_path)
-{
- assert(g_coreclr == nullptr);
-
- pal::string_t coreclr_dll_path(libcoreclr_path);
- append_path(&coreclr_dll_path, LIBCORECLR_NAME);
-
- if (!pal::load_library(&coreclr_dll_path, &g_coreclr))
- {
- return false;
- }
-
- coreclr_initialize = (coreclr_initialize_fn)pal::get_symbol(g_coreclr, "coreclr_initialize");
- coreclr_shutdown = (coreclr_shutdown_fn)pal::get_symbol(g_coreclr, "coreclr_shutdown_2");
- coreclr_execute_assembly = (coreclr_execute_assembly_fn)pal::get_symbol(g_coreclr, "coreclr_execute_assembly");
-
- return true;
-}
-
-void coreclr::unload()
-{
- assert(g_coreclr != nullptr && coreclr_initialize != nullptr);
-
- pal::unload_library(g_coreclr);
-}
-
-pal::hresult_t coreclr::initialize(
- const char* exe_path,
- const char* app_domain_friendly_name,
- const char** property_keys,
- const char** property_values,
- int property_count,
- host_handle_t* host_handle,
- domain_id_t* domain_id)
-{
- assert(g_coreclr != nullptr && coreclr_initialize != nullptr);
-
- return coreclr_initialize(
- exe_path,
- app_domain_friendly_name,
- property_count,
- property_keys,
- property_values,
- host_handle,
- domain_id);
-}
-
-pal::hresult_t coreclr::shutdown(host_handle_t host_handle, domain_id_t domain_id, int* latchedExitCode)
-{
- assert(g_coreclr != nullptr && coreclr_shutdown != nullptr);
-
- return coreclr_shutdown(host_handle, domain_id, latchedExitCode);
-}
-
-pal::hresult_t coreclr::execute_assembly(
- host_handle_t host_handle,
- domain_id_t domain_id,
- int argc,
- const char** argv,
- const char* managed_assembly_path,
- unsigned int* exit_code)
-{
- assert(g_coreclr != nullptr && coreclr_execute_assembly != nullptr);
-
- return coreclr_execute_assembly(
- host_handle,
- domain_id,
- argc,
- argv,
- managed_assembly_path,
- exit_code);
-}
diff --git a/src/corehost/cli/coreclr.h b/src/corehost/cli/coreclr.h
deleted file mode 100644
index 5f21260f21..0000000000
--- a/src/corehost/cli/coreclr.h
+++ /dev/null
@@ -1,39 +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.
-
-#ifndef CLR_H
-#define CLR_H
-
-#include "pal.h"
-#include "trace.h"
-
-namespace coreclr
-{
- typedef void* host_handle_t;
- typedef unsigned int domain_id_t;
-
- bool bind(const pal::string_t& libcoreclr_path);
-
- void unload();
-
- pal::hresult_t initialize(
- const char* exe_path,
- const char* app_domain_friendly_name,
- const char** property_keys,
- const char** property_values,
- int property_count,
- host_handle_t* host_handle,
- domain_id_t* domain_id);
-
- pal::hresult_t shutdown(host_handle_t host_handle, domain_id_t domain_id, int* latchedExitCode);
-
- pal::hresult_t execute_assembly(
- host_handle_t host_handle,
- domain_id_t domain_id,
- int argc,
- const char** argv,
- const char* managed_assembly_path,
- unsigned int* exit_code);
-};
-
-#endif
diff --git a/src/corehost/cli/deps_entry.cpp b/src/corehost/cli/deps_entry.cpp
deleted file mode 100644
index 576e2973b7..0000000000
--- a/src/corehost/cli/deps_entry.cpp
+++ /dev/null
@@ -1,143 +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.
-
-#include "pal.h"
-#include "utils.h"
-#include "deps_entry.h"
-#include "trace.h"
-
-
-bool deps_entry_t::to_path(const pal::string_t& base, bool look_in_base, pal::string_t* str) const
-{
- pal::string_t& candidate = *str;
-
- candidate.clear();
-
- // Base directory must be present to obtain full path
- if (base.empty())
- {
- return false;
- }
-
- // Entry relative path contains '/' separator, sanitize it to use
- // platform separator. Perf: avoid extra copy if it matters.
- pal::string_t pal_relative_path = asset.relative_path;
- if (_X('/') != DIR_SEPARATOR)
- {
- replace_char(&pal_relative_path, _X('/'), DIR_SEPARATOR);
- }
-
- // Reserve space for the path below
- candidate.reserve(base.length() +
- pal_relative_path.length() + 3);
-
- candidate.assign(base);
- pal::string_t sub_path = look_in_base ? get_filename(pal_relative_path) : pal_relative_path;
- append_path(&candidate, sub_path.c_str());
-
- bool exists = pal::file_exists(candidate);
- const pal::char_t* query_type = look_in_base ? _X("Local") : _X("Relative");
- if (!exists)
- {
- trace::verbose(_X(" %s path query did not exist %s"), query_type, candidate.c_str());
- candidate.clear();
- }
- else
- {
- trace::verbose(_X(" %s path query exists %s"), query_type, candidate.c_str());
- }
- return exists;
-}
-
-// -----------------------------------------------------------------------------
-// Given a "base" directory, yield the local path of this file
-//
-// Parameters:
-// base - The base directory to look for the relative path of this entry
-// str - If the method returns true, contains the file path for this deps
-// entry relative to the "base" directory
-//
-// Returns:
-// If the file exists in the path relative to the "base" directory.
-//
-bool deps_entry_t::to_dir_path(const pal::string_t& base, pal::string_t* str) const
-{
- if (asset_type == asset_types::resources)
- {
- pal::string_t pal_relative_path = asset.relative_path;
- if (_X('/') != DIR_SEPARATOR)
- {
- replace_char(&pal_relative_path, _X('/'), DIR_SEPARATOR);
- }
-
- // Resources are represented as "lib///" in the deps.json.
- // The is the "directory" in the pal_relative_path below, so extract it.
- pal::string_t ietf_dir = get_directory(pal_relative_path);
- pal::string_t ietf = ietf_dir;
-
- // get_directory returns with DIR_SEPARATOR appended that we need to remove.
- remove_trailing_dir_seperator(&ietf);
-
- // Extract IETF code from "lib//"
- ietf = get_filename(ietf);
-
- pal::string_t base_ietf_dir = base;
- append_path(&base_ietf_dir, ietf.c_str());
- trace::verbose(_X("Detected a resource asset, will query dir/ietf-tag/resource base: %s asset: %s"), base_ietf_dir.c_str(), asset.name.c_str());
- return to_path(base_ietf_dir, true, str);
- }
- return to_path(base, true, str);
-}
-// -----------------------------------------------------------------------------
-// Given a "base" directory, yield the relative path of this file in the package
-// layout.
-//
-// Parameters:
-// base - The base directory to look for the relative path of this entry
-// str - If the method returns true, contains the file path for this deps
-// entry relative to the "base" directory
-//
-// Returns:
-// If the file exists in the path relative to the "base" directory.
-//
-bool deps_entry_t::to_rel_path(const pal::string_t& base, pal::string_t* str) const
-{
- return to_path(base, false, str);
-}
-
-// -----------------------------------------------------------------------------
-// Given a "base" directory, yield the relative path of this file in the package
-// layout.
-//
-// Parameters:
-// base - The base directory to look for the relative path of this entry
-// str - If the method returns true, contains the file path for this deps
-// entry relative to the "base" directory
-//
-// Returns:
-// If the file exists in the path relative to the "base" directory.
-//
-bool deps_entry_t::to_full_path(const pal::string_t& base, pal::string_t* str) const
-{
- str->clear();
-
- // Base directory must be present to obtain full path
- if (base.empty())
- {
- return false;
- }
-
- pal::string_t new_base = base;
-
- if (library_path.empty())
- {
- append_path(&new_base, library_name.c_str());
- append_path(&new_base, library_version.c_str());
- }
- else
- {
- append_path(&new_base, library_path.c_str());
- }
-
- return to_rel_path(new_base, str);
-}
\ No newline at end of file
diff --git a/src/corehost/cli/deps_entry.h b/src/corehost/cli/deps_entry.h
deleted file mode 100644
index 012092db4d..0000000000
--- a/src/corehost/cli/deps_entry.h
+++ /dev/null
@@ -1,67 +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.
-
-#ifndef __DEPS_ENTRY_H_
-#define __DEPS_ENTRY_H_
-
-#include
-#include
-#include
-#include "pal.h"
-#include "version.h"
-
-struct deps_asset_t
-{
- deps_asset_t() : deps_asset_t(_X(""), _X(""), version_t(), version_t()) { }
-
- deps_asset_t(const pal::string_t& name, const pal::string_t& relative_path, const version_t& assembly_version, const version_t& file_version)
- : name(name)
- , relative_path(get_replaced_char(relative_path, _X('\\'), _X('/'))) // Deps file does not follow spec. It uses '\\', should use '/'
- , assembly_version(assembly_version)
- , file_version(file_version) { }
-
- pal::string_t name;
- pal::string_t relative_path;
- version_t assembly_version;
- version_t file_version;
-};
-
-struct deps_entry_t
-{
- enum asset_types
- {
- runtime = 0,
- resources,
- native,
- count
- };
-
- static const std::array s_known_asset_types;
-
- pal::string_t deps_file;
- pal::string_t library_type;
- pal::string_t library_name;
- pal::string_t library_version;
- pal::string_t library_hash;
- pal::string_t library_path;
- pal::string_t library_hash_path;
- pal::string_t runtime_store_manifest_list;
- asset_types asset_type;
- deps_asset_t asset;
- bool is_serviceable;
- bool is_rid_specific;
-
- // Given a "base" dir, yield the filepath within this directory or relative to this directory based on "look_in_base"
- bool to_path(const pal::string_t& base, bool look_in_base, pal::string_t* str) const;
-
- // Given a "base" dir, yield the file path within this directory.
- bool to_dir_path(const pal::string_t& base, pal::string_t* str) const;
-
- // Given a "base" dir, yield the relative path in the package layout.
- bool to_rel_path(const pal::string_t& base, pal::string_t* str) const;
-
- // Given a "base" dir, yield the relative path with package name, version in the package layout.
- bool to_full_path(const pal::string_t& root, pal::string_t* str) const;
-};
-
-#endif // __DEPS_ENTRY_H_
diff --git a/src/corehost/cli/deps_format.cpp b/src/corehost/cli/deps_format.cpp
deleted file mode 100644
index c7523035b0..0000000000
--- a/src/corehost/cli/deps_format.cpp
+++ /dev/null
@@ -1,487 +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.
-
-#include "deps_entry.h"
-#include "deps_format.h"
-#include "utils.h"
-#include "trace.h"
-#include
-#include
-#include
-#include
-#include
-
-const std::array deps_entry_t::s_known_asset_types = {
- _X("runtime"), _X("resources"), _X("native")
-};
-
-const deps_entry_t& deps_json_t::try_ni(const deps_entry_t& entry) const
-{
- if (m_ni_entries.count(entry.asset.name))
- {
- int index = m_ni_entries.at(entry.asset.name);
- return m_deps_entries[deps_entry_t::asset_types::runtime][index];
- }
- return entry;
-}
-
-pal::string_t deps_json_t::get_optional_property(
- const json_object& properties,
- const pal::string_t& key) const
-{
- pal::string_t value;
-
- const auto& iter = properties.find(key);
-
- if (iter != properties.end())
- {
- value = iter->second.as_string();
- }
-
- return value;
-}
-
-pal::string_t deps_json_t::get_optional_path(
- const json_object& properties,
- const pal::string_t& key) const
-{
- pal::string_t path = get_optional_property(properties, key);
-
- if (path.length() > 0 && _X('/') != DIR_SEPARATOR)
- {
- replace_char(&path, _X('/'), DIR_SEPARATOR);
- }
-
- return path;
-}
-
-void deps_json_t::reconcile_libraries_with_targets(
- const pal::string_t& deps_path,
- const json_value& json,
- const std::function& library_exists_fn,
- const std::function& get_assets_fn)
-{
- pal::string_t deps_file = get_filename(deps_path);
-
- const auto& libraries = json.at(_X("libraries")).as_object();
- for (const auto& library : libraries)
- {
- trace::info(_X("Reconciling library %s"), library.first.c_str());
-
- if (!library_exists_fn(library.first))
- {
- trace::info(_X("Library %s does not exist"), library.first.c_str());
- continue;
- }
-
- const auto& properties = library.second.as_object();
-
- const pal::string_t& hash = properties.at(_X("sha512")).as_string();
- bool serviceable = properties.at(_X("serviceable")).as_bool();
-
- pal::string_t library_path = get_optional_path(properties, _X("path"));
- pal::string_t library_hash_path = get_optional_path(properties, _X("hashPath"));
- pal::string_t runtime_store_manifest_list = get_optional_path(properties, _X("runtimeStoreManifestName"));
-
- for (int i = 0; i < deps_entry_t::s_known_asset_types.size(); ++i)
- {
- bool rid_specific = false;
- for (const auto& asset : get_assets_fn(library.first, i, &rid_specific))
- {
- bool ni_dll = false;
- auto asset_name = asset.name;
- if (ends_with(asset_name, _X(".ni"), false))
- {
- ni_dll = true;
- asset_name = strip_file_ext(asset_name);
- }
-
- deps_entry_t entry;
- size_t pos = library.first.find(_X("/"));
- entry.library_name = library.first.substr(0, pos);
- entry.library_version = library.first.substr(pos + 1);
- entry.library_type = pal::to_lower(properties.at(_X("type")).as_string());
- entry.library_hash = hash;
- entry.library_path = library_path;
- entry.library_hash_path = library_hash_path;
- entry.runtime_store_manifest_list = runtime_store_manifest_list;
- entry.asset_type = (deps_entry_t::asset_types) i;
- entry.is_serviceable = serviceable;
- entry.is_rid_specific = rid_specific;
- entry.deps_file = deps_file;
- entry.asset = asset;
- entry.asset.name = asset_name;
-
- m_deps_entries[i].push_back(entry);
-
- if (ni_dll)
- {
- m_ni_entries[entry.asset.name] = m_deps_entries
- [deps_entry_t::asset_types::runtime].size() - 1;
- }
-
- trace::info(_X("Parsed %s deps entry %d for asset name: %s from %s: %s, library version: %s, relpath: %s, assemblyVersion %s, fileVersion %s"),
- deps_entry_t::s_known_asset_types[i],
- m_deps_entries[i].size() - 1,
- entry.asset.name.c_str(),
- entry.library_type.c_str(),
- entry.library_name.c_str(),
- entry.library_version.c_str(),
- entry.asset.relative_path.c_str(),
- entry.asset.assembly_version.as_str().c_str(),
- entry.asset.file_version.as_str().c_str());
- }
- }
- }
-}
-
-// Returns the RID determined (computed or fallback) for the platform the host is running on.
-pal::string_t deps_json_t::get_current_rid(const rid_fallback_graph_t& rid_fallback_graph)
-{
-
- pal::string_t currentRid;
- if (!pal::getenv(_X("DOTNET_RUNTIME_ID"), ¤tRid))
- {
- currentRid = pal::get_current_os_rid_platform();
- if (!currentRid.empty())
- {
- currentRid = currentRid + pal::string_t(_X("-")) + get_arch();
- }
- }
-
- trace::info(_X("HostRID is %s"), currentRid.empty()? _X("not available"): currentRid.c_str());
-
- // If the current RID is not present in the RID fallback graph, then the platform
- // is unknown to us. At this point, we will fallback to using the base RIDs and attempt
- // asset lookup using them.
- //
- // We do the same even when the RID is empty.
- if (currentRid.empty() || (rid_fallback_graph.count(currentRid) == 0))
- {
- currentRid = pal::get_current_os_fallback_rid() + pal::string_t(_X("-")) + get_arch();
-
- trace::info(_X("Falling back to base HostRID: %s"), currentRid.c_str());
- }
-
- return currentRid;
-}
-
-bool deps_json_t::perform_rid_fallback(rid_specific_assets_t* portable_assets, const rid_fallback_graph_t& rid_fallback_graph)
-{
- pal::string_t host_rid = get_current_rid(rid_fallback_graph);
-
- for (auto& package : portable_assets->libs)
- {
- pal::string_t matched_rid = package.second.rid_assets.count(host_rid) ? host_rid : _X("");
- if (matched_rid.empty())
- {
- if (rid_fallback_graph.count(host_rid) == 0)
- {
- trace::warning(_X("The targeted framework does not support the runtime '%s'. Some native libraries from [%s] may fail to load on this platform."), host_rid.c_str(), package.first.c_str());
- }
- else
- {
- const auto& fallback_rids = rid_fallback_graph.find(host_rid)->second;
- auto iter = std::find_if(fallback_rids.begin(), fallback_rids.end(), [&package](const pal::string_t& rid) {
- return package.second.rid_assets.count(rid);
- });
- if (iter != fallback_rids.end())
- {
- matched_rid = *iter;
- }
- }
- }
-
- if (matched_rid.empty())
- {
- package.second.rid_assets.clear();
- }
-
- for (auto iter = package.second.rid_assets.begin(); iter != package.second.rid_assets.end(); /* */)
- {
- if (iter->first != matched_rid)
- {
- trace::verbose(_X("Chose %s, so removing rid (%s) specific assets for package %s"), matched_rid.c_str(), iter->first.c_str(), package.first.c_str());
- iter = package.second.rid_assets.erase(iter);
- }
- else
- {
- ++iter;
- }
- }
- }
- return true;
-}
-
-
-bool deps_json_t::process_runtime_targets(const json_value& json, const pal::string_t& target_name, const rid_fallback_graph_t& rid_fallback_graph, rid_specific_assets_t* p_assets)
-{
- rid_specific_assets_t& assets = *p_assets;
- for (const auto& package : json.at(_X("targets")).at(target_name).as_object())
- {
- const auto& targets = package.second.as_object();
- auto iter = targets.find(_X("runtimeTargets"));
- if (iter == targets.end())
- {
- continue;
- }
-
- const auto& files = iter->second.as_object();
- for (const auto& file : files)
- {
- const auto& type = file.second.at(_X("assetType")).as_string();
- for (int i = 0; i < deps_entry_t::s_known_asset_types.size(); ++i)
- {
- if (pal::strcasecmp(type.c_str(), deps_entry_t::s_known_asset_types[i]) == 0)
- {
- const auto& rid = file.second.at(_X("rid")).as_string();
-
- version_t assembly_version, file_version;
- const auto& properties = file.second.as_object();
-
- pal::string_t assembly_version_str = get_optional_property(properties, _X("assemblyVersion"));
- if (assembly_version_str.length() > 0)
- {
- version_t::parse(assembly_version_str, &assembly_version);
- }
-
- pal::string_t file_version_str = get_optional_property(properties, _X("fileVersion"));
- if (file_version_str.length() > 0)
- {
- version_t::parse(file_version_str, &file_version);
- }
-
- deps_asset_t asset(get_filename_without_ext(file.first), file.first, assembly_version, file_version);
-
- trace::info(_X("Adding runtimeTargets %s asset %s rid=%s assemblyVersion=%s fileVersion=%s from %s"),
- deps_entry_t::s_known_asset_types[i],
- asset.relative_path.c_str(),
- rid.c_str(),
- asset.assembly_version.as_str().c_str(),
- asset.file_version.as_str().c_str(),
- package.first.c_str());
-
- assets.libs[package.first].rid_assets[rid][i].push_back(asset);
- }
- }
- }
- }
-
- if (!perform_rid_fallback(&assets, rid_fallback_graph))
- {
- return false;
- }
-
- return true;
-}
-
-bool deps_json_t::process_targets(const json_value& json, const pal::string_t& target_name, deps_assets_t* p_assets)
-{
- deps_assets_t& assets = *p_assets;
- for (const auto& package : json.at(_X("targets")).at(target_name).as_object())
- {
- const auto& asset_types = package.second.as_object();
- for (int i = 0; i < deps_entry_t::s_known_asset_types.size(); ++i)
- {
- auto iter = asset_types.find(deps_entry_t::s_known_asset_types[i]);
- if (iter != asset_types.end())
- {
- for (const auto& file : iter->second.as_object())
- {
- const auto& properties = file.second.as_object();
- version_t assembly_version, file_version;
-
- pal::string_t assembly_version_str = get_optional_property(properties, _X("assemblyVersion"));
- if (assembly_version_str.length() > 0)
- {
- version_t::parse(assembly_version_str, &assembly_version);
- }
-
- pal::string_t file_version_str = get_optional_property(properties, _X("fileVersion"));
- if (file_version_str.length() > 0)
- {
- version_t::parse(file_version_str, &file_version);
- }
-
- deps_asset_t asset(get_filename_without_ext(file.first), file.first, assembly_version, file_version);
-
- trace::info(_X("Adding %s asset %s assemblyVersion=%s fileVersion=%s from %s"),
- deps_entry_t::s_known_asset_types[i],
- asset.relative_path.c_str(),
- asset.assembly_version.as_str().c_str(),
- asset.file_version.as_str().c_str(),
- package.first.c_str());
-
- assets.libs[package.first][i].push_back(asset);
- }
- }
- }
- }
- return true;
-}
-
-bool deps_json_t::load_framework_dependent(const pal::string_t& deps_path, const json_value& json, const pal::string_t& target_name, const rid_fallback_graph_t& rid_fallback_graph)
-{
- if (!process_runtime_targets(json, target_name, rid_fallback_graph, &m_rid_assets))
- {
- return false;
- }
-
- if (!process_targets(json, target_name, &m_assets))
- {
- return false;
- }
-
- auto package_exists = [&](const pal::string_t& package) -> bool {
- return m_rid_assets.libs.count(package) || m_assets.libs.count(package);
- };
-
- const vec_asset_t empty;
- auto get_relpaths = [&](const pal::string_t& package, int type_index, bool* rid_specific) -> const vec_asset_t& {
-
- *rid_specific = false;
-
- // Is there any rid specific assets for this type ("native" or "runtime" or "resources")
- if (m_rid_assets.libs.count(package) && !m_rid_assets.libs[package].rid_assets.empty())
- {
- const auto& assets_by_type = m_rid_assets.libs[package].rid_assets.begin()->second[type_index];
- if (!assets_by_type.empty())
- {
- *rid_specific = true;
- return assets_by_type;
- }
-
- trace::verbose(_X("There were no rid specific %s asset for %s"), deps_entry_t::s_known_asset_types[type_index], package.c_str());
- }
-
- if (m_assets.libs.count(package))
- {
- return m_assets.libs[package][type_index];
- }
-
- return empty;
- };
-
- reconcile_libraries_with_targets(deps_path, json, package_exists, get_relpaths);
-
- return true;
-}
-
-bool deps_json_t::load_self_contained(const pal::string_t& deps_path, const json_value& json, const pal::string_t& target_name)
-{
- if (!process_targets(json, target_name, &m_assets))
- {
- return false;
- }
-
- auto package_exists = [&](const pal::string_t& package) -> bool {
- return m_assets.libs.count(package);
- };
-
- auto get_relpaths = [&](const pal::string_t& package, int type_index, bool* rid_specific) -> const vec_asset_t& {
- *rid_specific = false;
- return m_assets.libs[package][type_index];
- };
-
- reconcile_libraries_with_targets(deps_path, json, package_exists, get_relpaths);
-
- const auto& json_object = json.as_object();
- const auto iter = json_object.find(_X("runtimes"));
- if (iter != json_object.end())
- {
- for (const auto& rid : iter->second.as_object())
- {
- auto& vec = m_rid_fallback_graph[rid.first];
- for (const auto& fallback : rid.second.as_array())
- {
- vec.push_back(fallback.as_string());
- }
- }
- }
-
- if (trace::is_enabled())
- {
- trace::verbose(_X("The rid fallback graph is: {"));
- for (const auto& rid : m_rid_fallback_graph)
- {
- trace::verbose(_X("%s => ["), rid.first.c_str());
- for (const auto& fallback : rid.second)
- {
- trace::verbose(_X("%s, "), fallback.c_str());
- }
- trace::verbose(_X("]"));
- }
- trace::verbose(_X("}"));
- }
- return true;
-}
-
-bool deps_json_t::has_package(const pal::string_t& name, const pal::string_t& ver) const
-{
- pal::string_t pv = name;
- pv.push_back(_X('/'));
- pv.append(ver);
-
- auto iter = m_rid_assets.libs.find(pv);
- if (iter != m_rid_assets.libs.end())
- {
- if (!iter->second.rid_assets.empty())
- {
- return true;
- }
- }
-
- return m_assets.libs.count(pv);
-}
-
-// -----------------------------------------------------------------------------
-// Load the deps file and parse its "entry" lines which contain the "fields" of
-// the entry. Populate an array of these entries.
-//
-bool deps_json_t::load(bool is_framework_dependent, const pal::string_t& deps_path, const rid_fallback_graph_t& rid_fallback_graph)
-{
- m_deps_file = deps_path;
- m_file_exists = pal::file_exists(deps_path);
-
- // If file doesn't exist, then assume parsed.
- if (!m_file_exists)
- {
- trace::verbose(_X("Could not locate the dependencies manifest file [%s]. Some libraries may fail to resolve."), deps_path.c_str());
- return true;
- }
-
- // Somehow the file stream could not be opened. This is an error.
- pal::ifstream_t file(deps_path);
- if (!file.good())
- {
- trace::error(_X("Could not open dependencies manifest file [%s]"), deps_path.c_str());
- return false;
- }
-
- if (skip_utf8_bom(&file))
- {
- trace::verbose(_X("UTF-8 BOM skipped while reading [%s]"), deps_path.c_str());
- }
-
- try
- {
- const auto json = json_value::parse(file);
-
- const auto& runtime_target = json.at(_X("runtimeTarget"));
-
- const pal::string_t& name = runtime_target.is_string()?
- runtime_target.as_string():
- runtime_target.at(_X("name")).as_string();
-
- trace::verbose(_X("Loading deps file... %s as framework dependent=[%d]"), deps_path.c_str(), is_framework_dependent);
-
- return (is_framework_dependent) ? load_framework_dependent(deps_path, json, name, rid_fallback_graph) : load_self_contained(deps_path, json, name);
- }
- catch (const std::exception& je)
- {
- pal::string_t jes;
- (void) pal::utf8_palstring(je.what(), &jes);
- trace::error(_X("A JSON parsing exception occurred in [%s]: %s"), deps_path.c_str(), jes.c_str());
- return false;
- }
-}
diff --git a/src/corehost/cli/deps_format.h b/src/corehost/cli/deps_format.h
deleted file mode 100644
index 4e349a7b5f..0000000000
--- a/src/corehost/cli/deps_format.h
+++ /dev/null
@@ -1,119 +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.
-
-#ifndef __DEPS_FORMAT_H_
-#define __DEPS_FORMAT_H_
-
-#include
-#include
-#include
-#include
-#include "pal.h"
-#include "deps_entry.h"
-#include "cpprest/json.h"
-
-class deps_json_t
-{
- typedef web::json::value json_value;
- typedef web::json::object json_object;
- typedef std::vector vec_asset_t;
- typedef std::array assets_t;
- struct deps_assets_t { std::unordered_map libs; };
- struct rid_assets_t { std::unordered_map rid_assets; };
- struct rid_specific_assets_t { std::unordered_map libs; };
-
- typedef std::unordered_map> str_to_vector_map_t;
-
-public:
- typedef str_to_vector_map_t rid_fallback_graph_t;
-
- deps_json_t()
- : m_valid(false)
- , m_file_exists(false)
- {
- }
-
- deps_json_t(bool is_framework_dependent, const pal::string_t& deps_path)
- : deps_json_t(is_framework_dependent, deps_path, m_rid_fallback_graph /* dummy */)
- {
- }
-
- deps_json_t(bool is_framework_dependent, const pal::string_t& deps_path, const rid_fallback_graph_t& graph)
- : deps_json_t()
- {
- m_valid = load(is_framework_dependent, deps_path, graph);
- }
-
- void parse(bool is_framework_dependent, const pal::string_t& deps_path)
- {
- m_valid = load(is_framework_dependent, deps_path, m_rid_fallback_graph /* dummy */);
- }
-
- void parse(bool is_framework_dependent, const pal::string_t& deps_path, const rid_fallback_graph_t& graph)
- {
- m_valid = load(is_framework_dependent, deps_path, graph);
- }
-
- const std::vector& get_entries(deps_entry_t::asset_types type) const
- {
- assert(type < deps_entry_t::asset_types::count);
- return m_deps_entries[type];
- }
-
- bool has_package(const pal::string_t& name, const pal::string_t& ver) const;
-
- bool exists() const
- {
- return m_file_exists;
- }
-
- bool is_valid() const
- {
- return m_valid;
- }
-
- const rid_fallback_graph_t& get_rid_fallback_graph() const
- {
- return m_rid_fallback_graph;
- }
-
- const deps_entry_t& try_ni(const deps_entry_t& entry) const;
-
- pal::string_t get_deps_file() const
- {
- return m_deps_file;
- }
-
-private:
- bool load_self_contained(const pal::string_t& deps_path, const json_value& json, const pal::string_t& target_name);
- bool load_framework_dependent(const pal::string_t& deps_path, const json_value& json, const pal::string_t& target_name, const rid_fallback_graph_t& rid_fallback_graph);
- bool load(bool is_framework_dependent, const pal::string_t& deps_path, const rid_fallback_graph_t& rid_fallback_graph);
- bool process_runtime_targets(const json_value& json, const pal::string_t& target_name, const rid_fallback_graph_t& rid_fallback_graph, rid_specific_assets_t* p_assets);
- bool process_targets(const json_value& json, const pal::string_t& target_name, deps_assets_t* p_assets);
-
- void reconcile_libraries_with_targets(
- const pal::string_t& deps_path,
- const json_value& json,
- const std::function& library_exists_fn,
- const std::function& get_assets_fn);
-
- pal::string_t get_optional_property(const json_object& properties, const pal::string_t& key) const;
- pal::string_t get_optional_path(const json_object& properties, const pal::string_t& key) const;
-
- pal::string_t get_current_rid(const rid_fallback_graph_t& rid_fallback_graph);
- bool perform_rid_fallback(rid_specific_assets_t* portable_assets, const rid_fallback_graph_t& rid_fallback_graph);
-
- std::vector m_deps_entries[deps_entry_t::asset_types::count];
-
- deps_assets_t m_assets;
- rid_specific_assets_t m_rid_assets;
-
- std::unordered_map m_ni_entries;
- rid_fallback_graph_t m_rid_fallback_graph;
- bool m_file_exists;
- bool m_valid;
-
- pal::string_t m_deps_file;
-};
-
-#endif // __DEPS_FORMAT_H_
diff --git a/src/corehost/cli/deps_resolver.cpp b/src/corehost/cli/deps_resolver.cpp
deleted file mode 100644
index 0658045c9c..0000000000
--- a/src/corehost/cli/deps_resolver.cpp
+++ /dev/null
@@ -1,858 +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.
-
-#include
-#include
-#include
-
-#include "trace.h"
-#include "deps_entry.h"
-#include "deps_format.h"
-#include "deps_resolver.h"
-#include "utils.h"
-#include "fx_ver.h"
-#include "libhost.h"
-
-const pal::string_t MissingAssemblyMessage = _X(
- "%s:\n"
- " An assembly specified in the application dependencies manifest (%s) was not found:\n"
- " package: '%s', version: '%s'\n"
- " path: '%s'");
-
-const pal::string_t ManifestListMessage = _X(
- " This assembly was expected to be in the local runtime store as the application was published using the following target manifest files:\n"
- " %s");
-
-namespace
-{
-// -----------------------------------------------------------------------------
-// A uniqifying append helper that doesn't let two "paths" to be identical in
-// the "output" string.
-//
-void add_unique_path(
- deps_entry_t::asset_types asset_type,
- const pal::string_t& path,
- std::unordered_set* existing,
- pal::string_t* serviced,
- pal::string_t* non_serviced,
- const pal::string_t& svc_dir)
-{
- // Resolve sym links.
- pal::string_t real = path;
- pal::realpath(&real);
-
- if (existing->count(real))
- {
- return;
- }
-
- trace::verbose(_X("Adding to %s path: %s"), deps_entry_t::s_known_asset_types[asset_type], real.c_str());
-
- if (starts_with(real, svc_dir, false))
- {
- serviced->append(real);
- serviced->push_back(PATH_SEPARATOR);
- }
- else
- {
- non_serviced->append(real);
- non_serviced->push_back(PATH_SEPARATOR);
- }
-
- existing->insert(real);
-}
-
-// Return the filename from deps path; a deps path always uses a '/' for the separator.
-pal::string_t get_deps_filename(const pal::string_t& path)
-{
- if (path.empty())
- {
- return path;
- }
-
- auto name_pos = path.find_last_of('/');
- if (name_pos == pal::string_t::npos)
- {
- return path;
- }
-
- return path.substr(name_pos + 1);
-}
-
-} // end of anonymous namespace
-
- // -----------------------------------------------------------------------------
- // A uniqifying append helper that doesn't let two entries with the same
- // "asset_name" be part of the "items" paths.
- //
-void deps_resolver_t::add_tpa_asset(
- const deps_resolved_asset_t& resolved_asset,
- name_to_resolved_asset_map_t* items)
-{
- name_to_resolved_asset_map_t::iterator existing = items->find(resolved_asset.asset.name);
- if (existing == items->end())
- {
- trace::verbose(_X("Adding tpa entry: %s, AssemblyVersion: %s, FileVersion: %s"),
- resolved_asset.resolved_path.c_str(),
- resolved_asset.asset.assembly_version.as_str().c_str(),
- resolved_asset.asset.file_version.as_str().c_str());
-
- items->emplace(resolved_asset.asset.name, resolved_asset);
- }
-}
-
-// -----------------------------------------------------------------------------
-// Load local assemblies by priority order of their file extensions and
-// unique-fied by their simple name.
-//
-void deps_resolver_t::get_dir_assemblies(
- const pal::string_t& dir,
- const pal::string_t& dir_name,
- name_to_resolved_asset_map_t* items)
-{
- version_t empty;
- trace::verbose(_X("Adding files from %s dir %s"), dir_name.c_str(), dir.c_str());
-
- // Managed extensions in priority order, pick DLL over EXE and NI over IL.
- const pal::string_t managed_ext[] = { _X(".ni.dll"), _X(".dll"), _X(".ni.exe"), _X(".exe") };
-
- // List of files in the dir
- std::vector files;
- pal::readdir(dir, &files);
-
- for (const auto& ext : managed_ext)
- {
- for (const auto& file : files)
- {
- // Nothing to do if file length is smaller than expected ext.
- if (file.length() <= ext.length())
- {
- continue;
- }
-
- auto file_name = file.substr(0, file.length() - ext.length());
- auto file_ext = file.substr(file_name.length());
-
- // Ext did not match expected ext, skip this file.
- if (pal::strcasecmp(file_ext.c_str(), ext.c_str()))
- {
- continue;
- }
-
- // Already added entry for this asset, by priority order skip this ext
- if (items->count(file_name))
- {
- trace::verbose(_X("Skipping %s because the %s already exists in %s assemblies"),
- file.c_str(),
- items->find(file_name)->second.asset.relative_path.c_str(),
- dir_name.c_str());
-
- continue;
- }
-
- // Add entry for this asset
- pal::string_t file_path = dir;
- if (!file_path.empty() && file_path.back() != DIR_SEPARATOR)
- {
- file_path.push_back(DIR_SEPARATOR);
- }
- file_path.append(file);
-
- trace::verbose(_X("Adding %s to %s assembly set from %s"),
- file_name.c_str(),
- dir_name.c_str(),
- file_path.c_str());
-
- deps_asset_t asset(file_name, file, empty, empty);
- deps_resolved_asset_t resolved_asset(asset, file_path);
- add_tpa_asset(resolved_asset, items);
- }
- }
-}
-
-void deps_resolver_t::setup_shared_store_probes(
- const hostpolicy_init_t& init,
- const arguments_t& args)
-{
- for (const auto& shared : args.env_shared_store)
- {
- if (pal::directory_exists(shared))
- {
- // Shared Store probe: DOTNET_SHARED_STORE
- m_probes.push_back(probe_config_t::lookup(shared));
- }
- }
-
- if (pal::directory_exists(args.dotnet_shared_store))
- {
- m_probes.push_back(probe_config_t::lookup(args.dotnet_shared_store));
- }
-
- for (const auto& global_shared : args.global_shared_stores)
- {
- if (global_shared != args.dotnet_shared_store && pal::directory_exists(global_shared))
- {
- // Shared Store probe: DOTNET_SHARED_STORE
- m_probes.push_back(probe_config_t::lookup(global_shared));
- }
- }
-}
-
-pal::string_t deps_resolver_t::get_lookup_probe_directories()
-{
- pal::string_t directories;
- for (const auto& pc : m_probes)
- {
- if (pc.is_lookup())
- {
- directories.append(pc.probe_dir);
- directories.push_back(PATH_SEPARATOR);
- }
- }
-
- return directories;
-}
-
-void deps_resolver_t::setup_probe_config(
- const hostpolicy_init_t& init,
- const arguments_t& args)
-{
- if (pal::directory_exists(args.core_servicing))
- {
- pal::string_t ext_ni = args.core_servicing;
- append_path(&ext_ni, get_arch());
- if (pal::directory_exists(ext_ni))
- {
- // Servicing NI probe.
- m_probes.push_back(probe_config_t::svc_ni(ext_ni));
- }
-
- // Servicing normal probe.
- pal::string_t ext_pkgs = args.core_servicing;
- append_path(&ext_pkgs, _X("pkgs"));
- m_probes.push_back(probe_config_t::svc(ext_pkgs));
- }
-
- // The published deps directory to be probed: either app or FX directory.
- // The probe directory will be available at probe time.
- m_probes.push_back(probe_config_t::published_deps_dir());
-
- // The framework locations, starting with highest level framework.
- for (int i = 1; i < init.fx_definitions.size(); ++i)
- {
- if (pal::directory_exists(init.fx_definitions[i]->get_dir()))
- {
- m_probes.push_back(probe_config_t::fx(init.fx_definitions[i]->get_dir(), &init.fx_definitions[i]->get_deps(), i));
- }
- }
-
- setup_shared_store_probes(init, args);
-
- for (const auto& probe : m_additional_probes)
- {
- // Additional paths
- m_probes.push_back(probe_config_t::lookup(probe));
- }
-
- if (trace::is_enabled())
- {
- trace::verbose(_X("-- Listing probe configurations..."));
- for (const auto& pc : m_probes)
- {
- pc.print();
- }
- }
-}
-
-void deps_resolver_t::setup_additional_probes(const std::vector& probe_paths)
-{
- m_additional_probes.assign(probe_paths.begin(), probe_paths.end());
-}
-
-/**
- * Given a deps entry, do a probe (lookup) for the file, based on the probe config.
- * -- When crossgen-ed folders are looked up, look up only "runtime" (managed) assets.
- * -- When servicing directories are looked up, look up only if the deps file marks the entry as serviceable.
- * -- When a deps json based probe is performed, the deps entry's package name and version must match.
- * -- When looking into a published dir, for rid specific assets lookup rid split folders; for non-rid assets lookup the layout dir.
- */
-bool deps_resolver_t::probe_deps_entry(const deps_entry_t& entry, const pal::string_t& deps_dir, int fx_level, pal::string_t* candidate)
-{
- candidate->clear();
-
- for (const auto& config : m_probes)
- {
- trace::verbose(_X(" Considering entry [%s/%s/%s], probe dir [%s], probe fx level:%d, entry fx level:%d"),
- entry.library_name.c_str(), entry.library_version.c_str(), entry.asset.relative_path.c_str(), config.probe_dir.c_str(), config.fx_level, fx_level);
-
- if (config.only_serviceable_assets && !entry.is_serviceable)
- {
- trace::verbose(_X(" Skipping... not serviceable asset"));
- continue;
- }
- if (config.only_runtime_assets && entry.asset_type != deps_entry_t::asset_types::runtime)
- {
- trace::verbose(_X(" Skipping... not runtime asset"));
- continue;
- }
- pal::string_t probe_dir = config.probe_dir;
-
- if (config.is_fx())
- {
- assert(config.fx_level > 0);
-
- // Only probe frameworks that are the same level or lower than the current entry because
- // a lower-level fx should not have a dependency on a higher-level fx and because starting
- // with fx_level allows it to override a higher-level fx location if the entry is newer.
- // Note that fx_level 0 is the highest level (the app)
- if (fx_level <= config.fx_level)
- {
- // If the deps json has the package name and version, then someone has already done rid selection and
- // put the right asset in the dir. So checking just package name and version would suffice.
- // No need to check further for the exact asset relative sub path.
- if (config.probe_deps_json->has_package(entry.library_name, entry.library_version) && entry.to_dir_path(probe_dir, candidate))
- {
- trace::verbose(_X(" Probed deps json and matched '%s'"), candidate->c_str());
- return true;
- }
- }
-
- trace::verbose(_X(" Skipping... not found in deps json."));
- }
- else if (config.is_app())
- {
- // This is a published dir probe, so look up rid specific assets in the rid folders.
- assert(config.fx_level == 0);
-
- if (fx_level <= config.fx_level)
- {
- if (entry.is_rid_specific)
- {
- if (entry.to_rel_path(deps_dir, candidate))
- {
- trace::verbose(_X(" Probed deps dir and matched '%s'"), candidate->c_str());
- return true;
- }
- }
- else
- {
- // Non-rid assets, lookup in the published dir.
- if (entry.to_dir_path(deps_dir, candidate))
- {
- trace::verbose(_X(" Probed deps dir and matched '%s'"), candidate->c_str());
- return true;
- }
- }
- }
-
- trace::verbose(_X(" Skipping... not found in deps dir '%s'"), deps_dir.c_str());
- }
- else if (entry.to_full_path(probe_dir, candidate))
- {
- trace::verbose(_X(" Probed package dir and matched '%s'"), candidate->c_str());
- return true;
- }
-
- trace::verbose(_X(" Skipping... not found in probe dir '%s'"), probe_dir.c_str());
- // continue to try next probe config
- }
- return false;
-}
-
-bool report_missing_assembly_in_manifest(const deps_entry_t& entry, bool continueResolving = false)
-{
- bool showManifestListMessage = !entry.runtime_store_manifest_list.empty();
-
- if (entry.asset_type == deps_entry_t::asset_types::resources)
- {
- // Treat missing resource assemblies as informational.
- continueResolving = true;
-
- trace::info(MissingAssemblyMessage.c_str(), _X("Info"),
- entry.deps_file.c_str(), entry.library_name.c_str(), entry.library_version.c_str(), entry.asset.relative_path.c_str());
-
- if (showManifestListMessage)
- {
- trace::info(ManifestListMessage.c_str(), entry.runtime_store_manifest_list.c_str());
- }
- }
- else if (continueResolving)
- {
- trace::warning(MissingAssemblyMessage.c_str(), _X("Warning"),
- entry.deps_file.c_str(), entry.library_name.c_str(), entry.library_version.c_str(), entry.asset.relative_path.c_str());
-
- if (showManifestListMessage)
- {
- trace::warning(ManifestListMessage.c_str(), entry.runtime_store_manifest_list.c_str());
- }
- }
- else
- {
- trace::error(MissingAssemblyMessage.c_str(), _X("Error"),
- entry.deps_file.c_str(), entry.library_name.c_str(), entry.library_version.c_str(), entry.asset.relative_path.c_str());
-
- if (showManifestListMessage)
- {
- trace::error(ManifestListMessage.c_str(), entry.runtime_store_manifest_list.c_str());
- }
- }
-
- return continueResolving;
-}
-
-/**
- * Resolve the TPA assembly locations
- */
-bool deps_resolver_t::resolve_tpa_list(
- pal::string_t* output,
- std::unordered_set* breadcrumb)
-{
- const std::vector empty(0);
- name_to_resolved_asset_map_t items;
-
- auto process_entry = [&](const pal::string_t& deps_dir, const deps_entry_t& entry, int fx_level) -> bool
- {
- if (breadcrumb != nullptr && entry.is_serviceable)
- {
- breadcrumb->insert(entry.library_name + _X(",") + entry.library_version);
- breadcrumb->insert(entry.library_name);
- }
-
- // Ignore placeholders
- if (ends_with(entry.asset.relative_path, _X("/_._"), false))
- {
- return true;
- }
-
- trace::info(_X("Processing TPA for deps entry [%s, %s, %s]"), entry.library_name.c_str(), entry.library_version.c_str(), entry.asset.relative_path.c_str());
-
- pal::string_t resolved_path;
-
- name_to_resolved_asset_map_t::iterator existing = items.find(entry.asset.name);
- if (existing == items.end())
- {
- if (probe_deps_entry(entry, deps_dir, fx_level, &resolved_path))
- {
- deps_resolved_asset_t resolved_asset(entry.asset, resolved_path);
- add_tpa_asset(resolved_asset, &items);
- return true;
- }
-
- return report_missing_assembly_in_manifest(entry);
- }
- else
- {
- // Verify the extension is the same as the previous verified entry
- if (get_deps_filename(entry.asset.relative_path) != get_filename(existing->second.resolved_path))
- {
- trace::error(_X(
- "Error:\n"
- " An assembly specified in the application dependencies manifest (%s) has already been found but with a different file extension:\n"
- " package: '%s', version: '%s'\n"
- " path: '%s'\n"
- " previously found assembly: '%s'"),
- entry.deps_file.c_str(),
- entry.library_name.c_str(),
- entry.library_version.c_str(),
- entry.asset.relative_path.c_str(),
- existing->second.resolved_path.c_str());
-
- return false;
- }
-
- deps_resolved_asset_t* existing_entry = &existing->second;
-
- // If deps entry is same or newer than existing, then see if it should be replaced
- if (entry.asset.assembly_version > existing_entry->asset.assembly_version ||
- (entry.asset.assembly_version == existing_entry->asset.assembly_version && entry.asset.file_version >= existing_entry->asset.file_version))
- {
- if (probe_deps_entry(entry, deps_dir, fx_level, &resolved_path))
- {
- // If the path is the same, then no need to replace
- if (resolved_path != existing_entry->resolved_path)
- {
- trace::verbose(_X("Replacing deps entry [%s, AssemblyVersion:%s, FileVersion:%s] with [%s, AssemblyVersion:%s, FileVersion:%s]"),
- existing_entry->resolved_path.c_str(), existing_entry->asset.assembly_version.as_str().c_str(), existing_entry->asset.file_version.as_str().c_str(),
- resolved_path.c_str(), entry.asset.assembly_version.as_str().c_str(), entry.asset.file_version.as_str().c_str());
-
- existing_entry = nullptr;
- items.erase(existing);
-
- deps_asset_t asset(entry.asset.name, entry.asset.relative_path, entry.asset.assembly_version, entry.asset.file_version);
- deps_resolved_asset_t resolved_asset(asset, resolved_path);
- add_tpa_asset(resolved_asset, &items);
- }
- }
- else if (fx_level != 0)
- {
- // The framework is missing a newer package, so this is an error.
- // For compat, it is not an error for the app; this can occur for the main application assembly when using --depsfile
- // and the app assembly does not exist with the deps file.
- return report_missing_assembly_in_manifest(entry);
- }
- }
-
- return true;
- }
- };
-
- // First add managed assembly to the TPA.
- // TODO: Remove: the deps should contain the managed DLL.
- // Workaround for: csc.deps.json doesn't have the csc.dll
- deps_asset_t asset(get_filename_without_ext(m_managed_app), get_filename(m_managed_app), version_t(), version_t());
- deps_resolved_asset_t resolved_asset(asset, m_managed_app);
- add_tpa_asset(resolved_asset, &items);
-
- // Add the app's entries
- const auto& deps_entries = get_deps().get_entries(deps_entry_t::asset_types::runtime);
- for (const auto& entry : deps_entries)
- {
- if (!process_entry(m_app_dir, entry, 0))
- {
- return false;
- }
- }
-
- // If the deps file wasn't present or has missing entries, then
- // add the app local assemblies to the TPA.
- if (!get_deps().exists())
- {
- // Obtain the local assemblies in the app dir.
- get_dir_assemblies(m_app_dir, _X("local"), &items);
- }
-
- // If additional deps files were specified that need to be treated as part of the
- // application, then add them to the mix as well.
- for (const auto& additional_deps : m_additional_deps)
- {
- auto additional_deps_entries = additional_deps->get_entries(deps_entry_t::asset_types::runtime);
- for (auto entry : additional_deps_entries)
- {
- if (!process_entry(m_app_dir, entry, 0))
- {
- return false;
- }
- }
- }
-
- // Probe FX deps entries after app assemblies are added.
- for (int i = 1; i < m_fx_definitions.size(); ++i)
- {
- const auto& deps_entries = m_is_framework_dependent ? m_fx_definitions[i]->get_deps().get_entries(deps_entry_t::asset_types::runtime) : empty;
- for (const auto& entry : deps_entries)
- {
- if (!process_entry(m_fx_definitions[i]->get_dir(), entry, i))
- {
- return false;
- }
- }
- }
-
- // Convert the paths into a string and return it
- for (const auto& item : items)
- {
- // Workaround for CoreFX not being able to resolve sym links.
- pal::string_t real_asset_path = item.second.resolved_path;
- pal::realpath(&real_asset_path);
- output->append(real_asset_path);
- output->push_back(PATH_SEPARATOR);
- }
-
- return true;
-}
-
-/**
- * Initialize resolved paths to known entries like coreclr, jit.
- */
-void deps_resolver_t::init_known_entry_path(const deps_entry_t& entry, const pal::string_t& path)
-{
- if (entry.asset_type != deps_entry_t::asset_types::native)
- {
- return;
- }
- if (m_coreclr_path.empty() && ends_with(entry.asset.relative_path, _X("/") + pal::string_t(LIBCORECLR_NAME), false))
- {
- m_coreclr_path = path;
- return;
- }
- if (m_clrjit_path.empty() && ends_with(entry.asset.relative_path, _X("/") + pal::string_t(LIBCLRJIT_NAME), false))
- {
- m_clrjit_path = path;
- return;
- }
-}
-
-void deps_resolver_t::resolve_additional_deps(const hostpolicy_init_t& init)
-{
- if (!m_is_framework_dependent)
- {
- // Additional deps.json support is only available for framework-dependent apps due to the following constraints:
- //
- // 1) Unlike framework-dependent Apps, self-contained apps do not have details of the SharedFX and Version they target.
- // 2) Unlike framework-dependent Apps, self-contained apps do not have RID fallback graph that is required for looking up
- // the correct native assets from nuget packages.
-
- return;
- }
-
- pal::string_t additional_deps_serialized = init.additional_deps_serialized;
-
- if (additional_deps_serialized.empty())
- {
- return;
- }
-
- pal::string_t additional_deps_path;
- pal::stringstream_t ss(additional_deps_serialized);
-
- // Process the delimiter separated custom deps files.
- while (std::getline(ss, additional_deps_path, PATH_SEPARATOR))
- {
- // If it's a single deps file, insert it in 'm_additional_deps_files'
- if (ends_with(additional_deps_path, _X(".deps.json"), false))
- {
- if (pal::file_exists(additional_deps_path))
- {
- trace::verbose(_X("Using specified additional deps.json: '%s'"),
- additional_deps_path.c_str());
-
- m_additional_deps_files.push_back(additional_deps_path);
- }
- else
- {
- trace::warning(_X("Warning: Specified additional deps.json does not exist: '%s'"),
- additional_deps_path.c_str());
- }
- }
- else
- {
- for (int i = 1; i < m_fx_definitions.size(); ++i)
- {
- fx_ver_t most_compatible_deps_folder_version(-1, -1, -1);
- fx_ver_t framework_found_version(-1, -1, -1);
- fx_ver_t::parse(m_fx_definitions[i]->get_found_version(), &framework_found_version);
-
- // We'll search deps directories in 'base_dir'/shared/fx_name/ for closest compatible patch version
- pal::string_t additional_deps_path_fx = additional_deps_path;
- append_path(&additional_deps_path_fx, _X("shared"));
- append_path(&additional_deps_path_fx, m_fx_definitions[i]->get_name().c_str());
- trace::verbose(_X("Searching for most compatible deps directory in [%s]"), additional_deps_path_fx.c_str());
- std::vector deps_dirs;
- pal::readdir_onlydirectories(additional_deps_path_fx, &deps_dirs);
-
- for (pal::string_t dir : deps_dirs)
- {
- fx_ver_t ver(-1, -1, -1);
- if (fx_ver_t::parse(dir, &ver))
- {
- if (ver > most_compatible_deps_folder_version &&
- ver <= framework_found_version &&
- ver.get_major() == framework_found_version.get_major() &&
- ver.get_minor() == framework_found_version.get_minor())
- {
- most_compatible_deps_folder_version = ver;
- }
- }
- }
-
- if (most_compatible_deps_folder_version == fx_ver_t(-1, -1, -1))
- {
- trace::verbose(_X("No additional deps directory less than or equal to [%s] found with same major and minor version."), framework_found_version.as_str().c_str());
- }
- else
- {
- trace::verbose(_X("Found additional deps directory [%s]"), most_compatible_deps_folder_version.as_str().c_str());
-
- append_path(&additional_deps_path_fx, most_compatible_deps_folder_version.as_str().c_str());
-
- // The resulting list will be empty if 'additional_deps_path_fx' is not a valid directory path
- std::vector list;
- pal::readdir(additional_deps_path_fx, _X("*.deps.json"), &list);
- for (pal::string_t json_file : list)
- {
- pal::string_t json_full_path = additional_deps_path_fx;
- append_path(&json_full_path, json_file.c_str());
- m_additional_deps_files.push_back(json_full_path);
-
- trace::verbose(_X("Using specified additional deps.json: '%s'"),
- json_full_path.c_str());
- }
- }
- }
- }
- }
-
- auto rids = get_root_framework(m_fx_definitions).get_deps().get_rid_fallback_graph();
- for (pal::string_t json_file : m_additional_deps_files)
- {
- m_additional_deps.push_back(std::unique_ptr(
- new deps_json_t(true, json_file, rids)));
- }
-}
-
-/**
- * Resolve native and culture assembly directories based on "asset_type" parameter.
- */
-bool deps_resolver_t::resolve_probe_dirs(
- deps_entry_t::asset_types asset_type,
- pal::string_t* output,
- std::unordered_set* breadcrumb)
-{
- bool is_resources = asset_type == deps_entry_t::asset_types::resources;
- assert(is_resources || asset_type == deps_entry_t::asset_types::native);
-
- // For resources assemblies, we need to provide the base directory of the resources path.
- // For example: .../Foo/en-US/Bar.dll, then, the resolved path is .../Foo
- std::function resources = [] (const pal::string_t& str) {
- return get_directory(get_directory(str));
- };
- // For native assemblies, obtain the directory path from the file path
- std::function native = [] (const pal::string_t& str) {
- return get_directory(str);
- };
- // Action for post processing the resolved path
- std::function& action = is_resources ? resources : native;
-
- // Set for de-duplication
- std::unordered_set items;
-
- pal::string_t core_servicing = m_core_servicing;
- pal::realpath(&core_servicing, true);
-
- // Filter out non-serviced assets so the paths can be added after servicing paths.
- pal::string_t non_serviced;
-
- std::vector empty(0);
-
- pal::string_t candidate;
-
- auto add_package_cache_entry = [&](const deps_entry_t& entry, const pal::string_t& deps_dir, int fx_level) -> bool
- {
- if (breadcrumb != nullptr && entry.is_serviceable)
- {
- breadcrumb->insert(entry.library_name + _X(",") + entry.library_version);
- breadcrumb->insert(entry.library_name);
- }
-
- if (items.count(entry.asset.name))
- {
- return true;
- }
-
- // Ignore placeholders
- if (ends_with(entry.asset.relative_path, _X("/_._"), false))
- {
- return true;
- }
-
- trace::verbose(_X("Processing native/culture for deps entry [%s, %s, %s]"),
- entry.library_name.c_str(), entry.library_version.c_str(), entry.asset.relative_path.c_str());
-
- if (probe_deps_entry(entry, deps_dir, fx_level, &candidate))
- {
- init_known_entry_path(entry, candidate);
- add_unique_path(asset_type, action(candidate), &items, output, &non_serviced, core_servicing);
- }
- else
- {
- // For self-contained apps do not use the full package name
- // because of rid-fallback could happen (ex: CentOS falling back to RHEL)
- if ((entry.asset.name == _X("apphost")) && ends_with(entry.library_name, _X(".Microsoft.NETCore.DotNetAppHost"), false))
- {
- return report_missing_assembly_in_manifest(entry, true);
- }
-
- return report_missing_assembly_in_manifest(entry);
- }
-
- return true;
- };
-
- // Add app entries
- const auto& entries = get_deps().get_entries(asset_type);
- for (const auto& entry : entries)
- {
- if (!add_package_cache_entry(entry, m_app_dir, 0))
- {
- return false;
- }
- }
-
- // If the deps file is missing add known locations.
- if (!get_deps().exists())
- {
- // App local path
- add_unique_path(asset_type, m_app_dir, &items, output, &non_serviced, core_servicing);
-
- (void) library_exists_in_dir(m_app_dir, LIBCORECLR_NAME, &m_coreclr_path);
- (void) library_exists_in_dir(m_app_dir, LIBCLRJIT_NAME, &m_clrjit_path);
- }
-
- // Handle any additional deps.json that were specified.
- for (const auto& additional_deps : m_additional_deps)
- {
- const auto additional_deps_entries = additional_deps->get_entries(asset_type);
- for (const auto entry : additional_deps_entries)
- {
- if (!add_package_cache_entry(entry, m_app_dir, 0))
- {
- return false;
- }
- }
- }
-
- // Add fx package locations to fx_dir
- for (int i = 1; i < m_fx_definitions.size(); ++i)
- {
- const auto& fx_entries = m_fx_definitions[i]->get_deps().get_entries(asset_type);
-
- for (const auto& entry : fx_entries)
- {
- if (!add_package_cache_entry(entry, m_fx_definitions[i]->get_dir(), i))
- {
- return false;
- }
- }
- }
-
- output->append(non_serviced);
-
- return true;
-}
-
-
-// -----------------------------------------------------------------------------
-// Entrypoint to resolve TPA, native and resources path ordering to pass to CoreCLR.
-//
-// Parameters:
-// app_root - The application local directory
-// package_dir - The directory path to where packages are restored
-// package_cache_dir - The directory path to secondary cache for packages
-// clr_dir - The directory where the host loads the CLR
-// probe_paths - Pointer to struct containing fields that will contain
-// resolved path ordering.
-//
-//
-bool deps_resolver_t::resolve_probe_paths(probe_paths_t* probe_paths, std::unordered_set* breadcrumb)
-{
- if (!resolve_tpa_list(&probe_paths->tpa, breadcrumb))
- {
- return false;
- }
-
- if (!resolve_probe_dirs(deps_entry_t::asset_types::native, &probe_paths->native, breadcrumb))
- {
- return false;
- }
-
- if (!resolve_probe_dirs(deps_entry_t::asset_types::resources, &probe_paths->resources, breadcrumb))
- {
- return false;
- }
-
- // If we found coreclr and the jit during native path probe, set the paths now.
- probe_paths->coreclr = m_coreclr_path;
- probe_paths->clrjit = m_clrjit_path;
-
- return true;
-}
diff --git a/src/corehost/cli/deps_resolver.h b/src/corehost/cli/deps_resolver.h
deleted file mode 100644
index 6738b8711d..0000000000
--- a/src/corehost/cli/deps_resolver.h
+++ /dev/null
@@ -1,225 +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.
-
-#ifndef DEPS_RESOLVER_H
-#define DEPS_RESOLVER_H
-
-#include
-
-#include "pal.h"
-#include "args.h"
-#include "trace.h"
-#include "fx_definition.h"
-#include "deps_format.h"
-#include "deps_entry.h"
-#include "runtime_config.h"
-
-// Probe paths to be resolved for ordering
-struct probe_paths_t
-{
- pal::string_t tpa;
- pal::string_t native;
- pal::string_t resources;
- pal::string_t coreclr;
- pal::string_t clrjit;
-};
-
-struct deps_resolved_asset_t
-{
- deps_resolved_asset_t(const deps_asset_t& asset, const pal::string_t& resolved_path)
- : asset(asset)
- , resolved_path(resolved_path) { }
-
- deps_asset_t asset;
- pal::string_t resolved_path;
-};
-
-typedef std::unordered_map name_to_resolved_asset_map_t;
-
-class deps_resolver_t
-{
-public:
- deps_resolver_t(hostpolicy_init_t& init, const arguments_t& args)
- : m_fx_definitions(init.fx_definitions)
- , m_app_dir(args.app_root)
- , m_managed_app(args.managed_application)
- , m_is_framework_dependent(init.is_framework_dependent)
- , m_core_servicing(args.core_servicing)
- {
- int root_framework = m_fx_definitions.size() - 1;
-
- for (int i = root_framework; i >= 0; --i)
- {
- if (i == 0)
- {
- m_fx_definitions[i]->set_deps_file(args.deps_path);
- trace::verbose(_X("Using %s deps file"), m_fx_definitions[i]->get_deps_file().c_str());
- }
- else
- {
- pal::string_t fx_deps_file = get_fx_deps(m_fx_definitions[i]->get_dir(), m_fx_definitions[i]->get_name());
- m_fx_definitions[i]->set_deps_file(fx_deps_file);
- trace::verbose(_X("Using Fx %s deps file"), fx_deps_file.c_str());
- }
-
- if (i == root_framework)
- {
- m_fx_definitions[i]->parse_deps();
- }
- else
- {
- // The rid graph is obtained from the root framework
- m_fx_definitions[i]->parse_deps(m_fx_definitions[root_framework]->get_deps().get_rid_fallback_graph());
- }
- }
-
- resolve_additional_deps(init);
-
- setup_additional_probes(args.probe_paths);
- setup_probe_config(init, args);
- }
-
- bool valid(pal::string_t* errors)
- {
- for (int i = 0; i < m_fx_definitions.size(); ++i)
- {
- // Verify the deps file exists. The app deps file does not need to exist
- if (i != 0)
- {
- if (!m_fx_definitions[i]->get_deps().exists())
- {
- errors->assign(_X("A fatal error was encountered, missing dependencies manifest at: ") + m_fx_definitions[i]->get_deps_file());
- return false;
- }
- }
-
- if (!m_fx_definitions[i]->get_deps().is_valid())
- {
- errors->assign(_X("An error occurred while parsing: ") + m_fx_definitions[i]->get_deps_file());
- return false;
- }
- }
-
- for (const auto& additional_deps : m_additional_deps)
- {
- if (!additional_deps->is_valid())
- {
- errors->assign(_X("An error occurred while parsing: ") + additional_deps->get_deps_file());
- return false;
- }
- }
-
- errors->clear();
- return true;
- }
-
- void setup_shared_store_probes(
- const hostpolicy_init_t& init,
- const arguments_t& args);
-
- pal::string_t get_lookup_probe_directories();
-
- void setup_probe_config(
- const hostpolicy_init_t& init,
- const arguments_t& args);
-
- void setup_additional_probes(
- const std::vector& probe_paths);
-
- bool resolve_probe_paths(
- probe_paths_t* probe_paths,
- std::unordered_set* breadcrumb);
-
- void init_known_entry_path(
- const deps_entry_t& entry,
- const pal::string_t& path);
-
- void resolve_additional_deps(
- const hostpolicy_init_t& init);
-
- const deps_json_t& get_deps() const
- {
- return get_app(m_fx_definitions).get_deps();
- }
-
- const pal::string_t& get_deps_file() const
- {
- return get_app(m_fx_definitions).get_deps_file();
- }
-
- const fx_definition_vector_t& get_fx_definitions() const
- {
- return m_fx_definitions;
- }
-
-private:
-
- static pal::string_t get_fx_deps(const pal::string_t& fx_dir, const pal::string_t& fx_name)
- {
- pal::string_t fx_deps = fx_dir;
- pal::string_t fx_deps_name = fx_name + _X(".deps.json");
- append_path(&fx_deps, fx_deps_name.c_str());
- return fx_deps;
- }
-
- // Resolve order for TPA lookup.
- bool resolve_tpa_list(
- pal::string_t* output,
- std::unordered_set* breadcrumb);
-
- // Resolve order for culture and native DLL lookup.
- bool resolve_probe_dirs(
- deps_entry_t::asset_types asset_type,
- pal::string_t* output,
- std::unordered_set* breadcrumb);
-
- // Populate assemblies from the directory.
- void get_dir_assemblies(
- const pal::string_t& dir,
- const pal::string_t& dir_name,
- name_to_resolved_asset_map_t* items);
-
- // Probe entry in probe configurations and deps dir.
- bool probe_deps_entry(
- const deps_entry_t& entry,
- const pal::string_t& deps_dir,
- int fx_level,
- pal::string_t* candidate);
-
- fx_definition_vector_t& m_fx_definitions;
-
- pal::string_t m_app_dir;
-
- void add_tpa_asset(
- const deps_resolved_asset_t& asset,
- name_to_resolved_asset_map_t* items);
-
- // The managed application the dependencies are being resolved for.
- pal::string_t m_managed_app;
-
- // Servicing root, could be empty on platforms that don't support or when errors occur.
- pal::string_t m_core_servicing;
-
- // Special entry for coreclr path
- pal::string_t m_coreclr_path;
-
- // Special entry for JIT path
- pal::string_t m_clrjit_path;
-
- // The filepaths for the app custom deps
- std::vector m_additional_deps_files;
-
- // Custom deps files for the app
- std::vector< std::unique_ptr > m_additional_deps;
-
- // Various probe configurations.
- std::vector m_probes;
-
- // Fallback probe dir
- std::vector m_additional_probes;
-
- // Is the deps file for an app using shared frameworks?
- bool m_is_framework_dependent;
-};
-
-#endif // DEPS_RESOLVER_H
diff --git a/src/corehost/cli/dll/CMakeLists.txt b/src/corehost/cli/dll/CMakeLists.txt
deleted file mode 100644
index 95e33c08e7..0000000000
--- a/src/corehost/cli/dll/CMakeLists.txt
+++ /dev/null
@@ -1,79 +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.
-
-cmake_minimum_required (VERSION 2.6)
-project(hostpolicy)
-
-if(WIN32)
- add_compile_options($<$:/MT>)
- add_compile_options($<$:/MT>)
- add_compile_options($<$:/MTd>)
-else()
- add_compile_options(-fPIC)
-endif()
-
-add_compile_options(-fvisibility=hidden)
-
-include(../setup.cmake)
-
-# Include directories
-if(WIN32)
- include_directories("${CLI_CMAKE_RESOURCE_DIR}/hostpolicy")
-endif()
-include_directories(../)
-include_directories(../../)
-include_directories(../../common)
-include_directories(../fxr)
-include_directories(../json/casablanca/include)
-
-# CMake does not recommend using globbing since it messes with the freshness checks
-set(SOURCES
- ../../common/trace.cpp
- ../../common/utils.cpp
- ../libhost.cpp
- ../runtime_config.cpp
- ../json/casablanca/src/json/json.cpp
- ../json/casablanca/src/json/json_parsing.cpp
- ../json/casablanca/src/json/json_serialization.cpp
- ../json/casablanca/src/utilities/asyncrt_utils.cpp
- ../fxr/fx_ver.cpp
- ../breadcrumbs.cpp
- ../args.cpp
- ../hostpolicy.cpp
- ../host_startup_info.cpp
- ../coreclr.cpp
- ../deps_resolver.cpp
- ../deps_format.cpp
- ../deps_entry.cpp
- ../fx_definition.cpp
- ../version.cpp
-)
-
-
-if(WIN32)
- list(APPEND SOURCES
- ../../common/pal.windows.cpp
- ../../common/longfile.windows.cpp)
-else()
- list(APPEND SOURCES
- ../../common/pal.unix.cpp
- ${VERSION_FILE_PATH})
-endif()
-
-add_definitions(-D_NO_ASYNCRTIMP)
-add_definitions(-D_NO_PPLXIMP)
-add_definitions(-DCOREHOST_MAKE_DLL=1)
-
-set(RESOURCES)
-if(WIN32)
- list(APPEND RESOURCES ../native.rc)
-endif()
-add_library(hostpolicy SHARED ${SOURCES} ${RESOURCES})
-set_target_properties(hostpolicy PROPERTIES MACOSX_RPATH TRUE)
-
-# Specify the import library to link against for Arm32 build since the default set is minimal
-if (WIN32 AND CLI_CMAKE_PLATFORM_ARCH_ARM)
- target_link_libraries(hostpolicy shell32.lib)
-endif()
-
-install_library_and_symbols (hostpolicy)
diff --git a/src/corehost/cli/exe/CMakeLists.txt b/src/corehost/cli/exe/CMakeLists.txt
deleted file mode 100644
index 4facc1ffac..0000000000
--- a/src/corehost/cli/exe/CMakeLists.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-cmake_minimum_required (VERSION 2.6)
-add_subdirectory(dotnet)
-add_subdirectory(apphost)
diff --git a/src/corehost/cli/exe/apphost/CMakeLists.txt b/src/corehost/cli/exe/apphost/CMakeLists.txt
deleted file mode 100644
index fb0666f743..0000000000
--- a/src/corehost/cli/exe/apphost/CMakeLists.txt
+++ /dev/null
@@ -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.
-
-cmake_minimum_required (VERSION 2.6)
-project(apphost)
-set(DOTNET_HOST_EXE_NAME "apphost")
-
-add_compile_options(-fvisibility=hidden)
-
-# Add RPATH to the apphost binary that allows using local copies of shared libraries
-# dotnet core depends on for special scenarios when system wide installation of such
-# dependencies is not possible for some reason.
-# This cannot be enabled for MacOS (Darwin) since its RPATH works in a different way,
-# doesn't apply to libraries loaded via dlopen and most importantly, it is not transitive.
-if (NOT CMAKE_SYSTEM_NAME STREQUAL Darwin)
- set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
- set(CMAKE_INSTALL_RPATH "\$ORIGIN/netcoredeps")
-endif()
-
-set(SKIP_VERSIONING 1)
-
-set(SOURCES
- ../../fxr/fx_ver.cpp
-)
-
-include(../exe.cmake)
-
-add_definitions(-DFEATURE_APPHOST=1)
-
-install_library_and_symbols (apphost)
diff --git a/src/corehost/cli/exe/dotnet/CMakeLists.txt b/src/corehost/cli/exe/dotnet/CMakeLists.txt
deleted file mode 100644
index a0de6e12ec..0000000000
--- a/src/corehost/cli/exe/dotnet/CMakeLists.txt
+++ /dev/null
@@ -1,12 +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.
-
-cmake_minimum_required (VERSION 2.6)
-project(dotnet)
-set(DOTNET_HOST_EXE_NAME "dotnet")
-add_compile_options(-fvisibility=hidden)
-set(SOURCES
- ../../fxr/fx_ver.cpp)
-include(../exe.cmake)
-
-install_library_and_symbols (dotnet)
diff --git a/src/corehost/cli/exe/exe.cmake b/src/corehost/cli/exe/exe.cmake
deleted file mode 100644
index 37289d1d05..0000000000
--- a/src/corehost/cli/exe/exe.cmake
+++ /dev/null
@@ -1,62 +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.
-project (${DOTNET_HOST_EXE_NAME})
-
-if(WIN32)
- add_compile_options($<$:/MT>)
- add_compile_options($<$:/MT>)
- add_compile_options($<$:/MTd>)
-else()
- add_compile_options(-fPIE)
-endif()
-
-include(../../setup.cmake)
-
-# Include directories
-if(WIN32)
- include_directories("${CLI_CMAKE_RESOURCE_DIR}/${DOTNET_HOST_EXE_NAME}")
-endif()
-include_directories(../../../)
-include_directories(../../../common)
-include_directories(../../)
-include_directories(../../fxr)
-
-# CMake does not recommend using globbing since it messes with the freshness checks
-list(APPEND SOURCES
- ../../../corehost.cpp
- ../../../common/trace.cpp
- ../../../common/utils.cpp)
-
-if(WIN32)
- list(APPEND SOURCES
- ../../../common/pal.windows.cpp
- ../../../common/longfile.windows.cpp)
-else()
- list(APPEND SOURCES
- ../../../common/pal.unix.cpp
- ${VERSION_FILE_PATH})
-endif()
-
-set(RESOURCES)
-if(WIN32 AND NOT SKIP_VERSIONING)
- list(APPEND RESOURCES ../../native.rc)
-endif()
-
-add_executable(${DOTNET_HOST_EXE_NAME} ${SOURCES} ${RESOURCES})
-
-if(NOT WIN32)
- disable_pax_mprotect(${DOTNET_HOST_EXE_NAME})
-endif()
-
-install(TARGETS ${DOTNET_HOST_EXE_NAME} DESTINATION bin)
-
-# Specify the import library to link against for Arm32 build since the default set is minimal
-if (WIN32 AND CLI_CMAKE_PLATFORM_ARCH_ARM)
- target_link_libraries(${DOTNET_HOST_EXE_NAME} shell32.lib)
-endif()
-
-if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
- target_link_libraries (${DOTNET_HOST_EXE_NAME} "dl" "pthread")
-endif()
-
-
diff --git a/src/corehost/cli/fx_definition.cpp b/src/corehost/cli/fx_definition.cpp
deleted file mode 100644
index 64e1487037..0000000000
--- a/src/corehost/cli/fx_definition.cpp
+++ /dev/null
@@ -1,44 +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.
-
-#include "deps_format.h"
-#include "fx_definition.h"
-#include "fx_ver.h"
-#include "pal.h"
-#include "runtime_config.h"
-
-fx_definition_t::fx_definition_t()
-{
-}
-
-fx_definition_t::fx_definition_t(
- const pal::string_t& name,
- const pal::string_t& dir,
- const pal::string_t& requested_version,
- const pal::string_t& found_version)
- : m_name(name)
- , m_dir(dir)
- , m_requested_version(requested_version)
- , m_found_version(found_version)
-{
-}
-
-void fx_definition_t::parse_runtime_config(
- const pal::string_t& path,
- const pal::string_t& dev_path,
- const runtime_config_t* higher_layer_config,
- const runtime_config_t* app_config
-)
-{
- m_runtime_config.parse(path, dev_path, higher_layer_config, app_config);
-}
-
-void fx_definition_t::parse_deps()
-{
- m_deps.parse(false, m_deps_file);
-}
-
-void fx_definition_t::parse_deps(const deps_json_t::rid_fallback_graph_t& graph)
-{
- m_deps.parse(true, m_deps_file, graph);
-}
diff --git a/src/corehost/cli/fx_definition.h b/src/corehost/cli/fx_definition.h
deleted file mode 100644
index c4d38accac..0000000000
--- a/src/corehost/cli/fx_definition.h
+++ /dev/null
@@ -1,57 +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.
-
-#ifndef __FX_DEFINITION_H__
-#define __FX_DEFINITION_H__
-
-#include "pal.h"
-#include "deps_format.h"
-#include "runtime_config.h"
-
-class fx_definition_t
-{
-public:
- fx_definition_t();
-
- fx_definition_t(
- const pal::string_t& name,
- const pal::string_t& dir,
- const pal::string_t& requested_version,
- const pal::string_t& found_version);
-
- const pal::string_t& get_name() const { return m_name; }
- const pal::string_t& get_requested_version() const { return m_requested_version; }
- const pal::string_t& get_found_version() const { return m_found_version; }
- const pal::string_t& get_dir() const { return m_dir; }
- const runtime_config_t& get_runtime_config() const { return m_runtime_config; }
- void parse_runtime_config(const pal::string_t& path, const pal::string_t& dev_path, const runtime_config_t* higher_layer_config, const runtime_config_t* app_config);
-
- const pal::string_t& get_deps_file() const { return m_deps_file; }
- void set_deps_file(const pal::string_t value) { m_deps_file = value; }
- const deps_json_t& get_deps() const { return m_deps; }
- void parse_deps();
- void parse_deps(const deps_json_t::rid_fallback_graph_t& graph);
-
-private:
- pal::string_t m_name;
- pal::string_t m_dir;
- pal::string_t m_requested_version;
- pal::string_t m_found_version;
- runtime_config_t m_runtime_config;
- pal::string_t m_deps_file;
- deps_json_t m_deps;
-};
-
-typedef std::vector> fx_definition_vector_t;
-
-static const fx_definition_t& get_root_framework(const fx_definition_vector_t& fx_definitions)
-{
- return *fx_definitions[fx_definitions.size() - 1];
-}
-
-static const fx_definition_t& get_app(const fx_definition_vector_t& fx_definitions)
-{
- return *fx_definitions[0];
-}
-
-#endif // __FX_DEFINITION_H__
diff --git a/src/corehost/cli/fxr/CMakeLists.txt b/src/corehost/cli/fxr/CMakeLists.txt
deleted file mode 100644
index bd56dffa93..0000000000
--- a/src/corehost/cli/fxr/CMakeLists.txt
+++ /dev/null
@@ -1,78 +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.
-
-cmake_minimum_required (VERSION 2.6)
-project(hostfxr)
-
-if(WIN32)
- add_compile_options($<$:/MT>)
- add_compile_options($<$:/MT>)
- add_compile_options($<$:/MTd>)
-else()
- add_compile_options(-fPIC)
-endif()
-
-add_compile_options(-fvisibility=hidden)
-
-include(../setup.cmake)
-
-# Include directories
-if(WIN32)
- include_directories("${CLI_CMAKE_RESOURCE_DIR}/hostfxr")
-endif()
-include_directories(./)
-include_directories(../)
-include_directories(../../)
-include_directories(../../common)
-include_directories(../json/casablanca/include)
-
-# CMake does not recommend using globbing since it messes with the freshness checks
-set(SOURCES
- ../../common/trace.cpp
- ../../common/utils.cpp
- ../libhost.cpp
- ../deps_format.cpp
- ../deps_entry.cpp
- ../host_startup_info.cpp
- ../runtime_config.cpp
- ../json/casablanca/src/json/json.cpp
- ../json/casablanca/src/json/json_parsing.cpp
- ../json/casablanca/src/json/json_serialization.cpp
- ../json/casablanca/src/utilities/asyncrt_utils.cpp
- ../fx_definition.cpp
- ../version.cpp
- ./hostfxr.cpp
- ./fx_ver.cpp
- ./fx_muxer.cpp
- ./framework_info.cpp
- ./sdk_info.cpp
- ./sdk_resolver.cpp
-)
-
-if(WIN32)
- list(APPEND SOURCES
- ../../common/pal.windows.cpp
- ../../common/longfile.windows.cpp)
-else()
- list(APPEND SOURCES
- ../../common/pal.unix.cpp
- ${VERSION_FILE_PATH})
-endif()
-
-add_definitions(-D_NO_ASYNCRTIMP)
-add_definitions(-D_NO_PPLXIMP)
-add_definitions(-DCOREHOST_MAKE_DLL=1)
-
-set(RESOURCES)
-if(WIN32)
- list(APPEND RESOURCES ../native.rc)
-endif()
-add_library(hostfxr SHARED ${SOURCES} ${RESOURCES})
-set_target_properties(hostfxr PROPERTIES MACOSX_RPATH TRUE)
-
-# Specify the import library to link against for Arm32 build since the default set is minimal
-if (WIN32 AND CLI_CMAKE_PLATFORM_ARCH_ARM)
- target_link_libraries(hostfxr shell32.lib)
-endif()
-
-install_library_and_symbols (hostfxr)
diff --git a/src/corehost/cli/fxr/framework_info.cpp b/src/corehost/cli/fxr/framework_info.cpp
deleted file mode 100644
index c6d5cf9b83..0000000000
--- a/src/corehost/cli/fxr/framework_info.cpp
+++ /dev/null
@@ -1,119 +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.
-
-#include
-#include "framework_info.h"
-#include "pal.h"
-#include "trace.h"
-#include "utils.h"
-
-bool compare_by_name_and_version(const framework_info &a, const framework_info &b)
-{
- if (a.name < b.name)
- {
- return true;
- }
-
- if (a.name > b.name)
- {
- return false;
- }
-
- return a.version < b.version;
-}
-
-/*static*/ void framework_info::get_all_framework_infos(
- host_mode_t mode,
- const pal::string_t& own_dir,
- const pal::string_t& fx_name,
- std::vector* framework_infos)
-{
- // No FX resolution for mixed apps
- if (mode == host_mode_t::split_fx)
- {
- trace::verbose(_X("Split/FX mode detected. Not gathering shared FX locations"));
- return;
- }
-
- std::vector global_dirs;
- bool multilevel_lookup = multilevel_lookup_enabled();
-
- // own_dir contains DIR_SEPARATOR appended that we need to remove.
- pal::string_t own_dir_temp = own_dir;
- remove_trailing_dir_seperator(&own_dir_temp);
-
- std::vector hive_dir;
- hive_dir.push_back(own_dir_temp);
-
- if (multilevel_lookup && pal::get_global_dotnet_dirs(&global_dirs))
- {
- for (pal::string_t dir : global_dirs)
- {
- if (dir != own_dir_temp)
- {
- hive_dir.push_back(dir);
- }
- }
- }
-
- for (pal::string_t dir : hive_dir)
- {
- auto fx_shared_dir = dir;
- append_path(&fx_shared_dir, _X("shared"));
-
- if (pal::directory_exists(fx_shared_dir))
- {
- std::vector fx_names;
- if (fx_name.length())
- {
- // Use the provided framework name
- fx_names.push_back(fx_name);
- }
- else
- {
- // Read all frameworks, including "Microsoft.NETCore.App"
- pal::readdir_onlydirectories(fx_shared_dir, &fx_names);
- }
-
- for (pal::string_t fx_name : fx_names)
- {
- auto fx_dir = fx_shared_dir;
- append_path(&fx_dir, fx_name.c_str());
-
- if (pal::directory_exists(fx_dir))
- {
- trace::verbose(_X("Gathering FX locations in [%s]"), fx_dir.c_str());
-
- std::vector versions;
- pal::readdir_onlydirectories(fx_dir, &versions);
- for (const auto& ver : versions)
- {
- // Make sure we filter out any non-version folders.
- fx_ver_t parsed(-1, -1, -1);
- if (fx_ver_t::parse(ver, &parsed, false))
- {
- trace::verbose(_X("Found FX version [%s]"), ver.c_str());
-
- framework_info info(fx_name, fx_dir, parsed);
- framework_infos->push_back(info);
- }
- }
- }
- }
- }
- }
-
- std::sort(framework_infos->begin(), framework_infos->end(), compare_by_name_and_version);
-}
-
-/*static*/ bool framework_info::print_all_frameworks(const pal::string_t& own_dir, const pal::string_t& leading_whitespace)
-{
- std::vector framework_infos;
- get_all_framework_infos(host_mode_t::muxer, own_dir, _X(""), &framework_infos);
- for (framework_info info : framework_infos)
- {
- trace::println(_X("%s%s %s [%s]"), leading_whitespace.c_str(), info.name.c_str(), info.version.as_str().c_str(), info.path.c_str());
- }
-
- return framework_infos.size() > 0;
-}
diff --git a/src/corehost/cli/fxr/framework_info.h b/src/corehost/cli/fxr/framework_info.h
deleted file mode 100644
index 9aaea39d01..0000000000
--- a/src/corehost/cli/fxr/framework_info.h
+++ /dev/null
@@ -1,29 +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.
-
-#ifndef __FRAMEWORK_INFO_H_
-#define __FRAMEWORK_INFO_H_
-
-#include "libhost.h"
-
-struct framework_info
-{
- framework_info(pal::string_t name, pal::string_t path, fx_ver_t version)
- : name(name)
- , path(path)
- , version(version) { }
-
- static void get_all_framework_infos(
- host_mode_t mode,
- const pal::string_t& own_dir,
- const pal::string_t& fx_name,
- std::vector* framework_infos);
-
- static bool print_all_frameworks(const pal::string_t& own_dir, const pal::string_t& leading_whitespace);
-
- pal::string_t name;
- pal::string_t path;
- fx_ver_t version;
-};
-
-#endif // __FRAMEWORK_INFO_H_
diff --git a/src/corehost/cli/fxr/fx_muxer.cpp b/src/corehost/cli/fxr/fx_muxer.cpp
deleted file mode 100644
index 2821691c53..0000000000
--- a/src/corehost/cli/fxr/fx_muxer.cpp
+++ /dev/null
@@ -1,1238 +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.
-
-#include
-#include "args.h"
-#include "cpprest/json.h"
-#include "deps_format.h"
-#include "error_codes.h"
-#include "framework_info.h"
-#include "fx_definition.h"
-#include "fx_muxer.h"
-#include "fx_ver.h"
-#include "host_startup_info.h"
-#include "libhost.h"
-#include "pal.h"
-#include "runtime_config.h"
-#include "sdk_info.h"
-#include "sdk_resolver.h"
-#include "trace.h"
-#include "utils.h"
-
-/**
-* When the framework is not found, display detailed error message
-* about available frameworks and installation of new framework.
-*/
-void handle_missing_framework_error(
- host_mode_t mode,
- const pal::string_t& fx_name,
- const pal::string_t& fx_version,
- const pal::string_t& fx_dir,
- const pal::string_t& dotnet_root)
-{
- std::vector framework_infos;
- pal::string_t fx_ver_dirs;
- if (fx_dir.length())
- {
- fx_ver_dirs = fx_dir;
- framework_info::get_all_framework_infos(mode, get_directory(fx_dir), fx_name, &framework_infos);
- }
- else
- {
- fx_ver_dirs = dotnet_root;
- }
-
- framework_info::get_all_framework_infos(mode, dotnet_root, fx_name, &framework_infos);
-
- // Display the error message about missing FX.
- if (fx_version.length())
- {
- trace::error(_X("The specified framework '%s', version '%s' was not found."), fx_name.c_str(), fx_version.c_str());
- }
- else
- {
- trace::error(_X("No frameworks were found."));
- }
-
- trace::error(_X(" - Check application dependencies and target a framework version installed at:"));
- trace::error(_X(" %s"), fx_ver_dirs.c_str());
- trace::error(_X(" - Installing .NET Core prerequisites might help resolve this problem:"));
- trace::error(_X(" %s"), DOTNET_CORE_GETTING_STARTED_URL);
- trace::error(_X(" - The .NET Core framework and SDK can be installed from:"));
- trace::error(_X(" %s"), DOTNET_CORE_DOWNLOAD_URL);
-
- // Gather the list of versions installed at the shared FX location.
- bool is_print_header = true;
-
- for (framework_info info : framework_infos)
- {
- // Print banner only once before printing the versions
- if (is_print_header)
- {
- trace::error(_X(" - The following versions are installed:"));
- is_print_header = false;
- }
-
- trace::error(_X(" %s at [%s]"), info.version.as_str().c_str(), info.path.c_str());
- }
-}
-
-/**
-* Resolve the hostpolicy version from deps.
-* - Scan the deps file's libraries section and find the hostpolicy version in the file.
-*/
-pal::string_t resolve_hostpolicy_version_from_deps(const pal::string_t& deps_json)
-{
- trace::verbose(_X("--- Resolving %s version from deps json [%s]"), LIBHOSTPOLICY_NAME, deps_json.c_str());
-
- pal::string_t retval;
- if (!pal::file_exists(deps_json))
- {
- trace::verbose(_X("Dependency manifest [%s] does not exist"), deps_json.c_str());
- return retval;
- }
-
- pal::ifstream_t file(deps_json);
- if (!file.good())
- {
- trace::verbose(_X("Dependency manifest [%s] could not be opened"), deps_json.c_str());
- return retval;
- }
-
- if (skip_utf8_bom(&file))
- {
- trace::verbose(_X("UTF-8 BOM skipped while reading [%s]"), deps_json.c_str());
- }
-
- try
- {
- const auto root = json_value::parse(file);
- const auto& json = root.as_object();
- const auto& libraries = json.at(_X("libraries")).as_object();
-
- // Look up the root package instead of the "runtime" package because we can't do a full rid resolution.
- // i.e., look for "Microsoft.NETCore.DotNetHostPolicy/" followed by version.
- pal::string_t prefix = _X("Microsoft.NETCore.DotNetHostPolicy/");
- for (const auto& library : libraries)
- {
- if (starts_with(library.first, prefix, false))
- {
- // Extract the version information that occurs after '/'
- retval = library.first.substr(prefix.size());
- break;
- }
- }
- }
- catch (const std::exception& je)
- {
- pal::string_t jes;
- (void)pal::utf8_palstring(je.what(), &jes);
- trace::error(_X("A JSON parsing exception occurred in [%s]: %s"), deps_json.c_str(), jes.c_str());
- }
- trace::verbose(_X("Resolved version %s from dependency manifest file [%s]"), retval.c_str(), deps_json.c_str());
- return retval;
-}
-
-/**
-* Given a directory and a version, find if the package relative
-* dir under the given directory contains hostpolicy.dll
-*/
-bool to_hostpolicy_package_dir(const pal::string_t& dir, const pal::string_t& version, pal::string_t* candidate)
-{
- assert(!version.empty());
-
- candidate->clear();
-
- // Ensure the relative dir contains platform directory separators.
- pal::string_t rel_dir = _STRINGIFY(HOST_POLICY_PKG_REL_DIR);
- if (DIR_SEPARATOR != '/')
- {
- replace_char(&rel_dir, '/', DIR_SEPARATOR);
- }
-
- // Construct the path to directory containing hostpolicy.
- pal::string_t path = dir;
- append_path(&path, _STRINGIFY(HOST_POLICY_PKG_NAME)); // package name
- append_path(&path, version.c_str()); // package version
- append_path(&path, rel_dir.c_str()); // relative dir containing hostpolicy library
-
- // Check if "path" contains the required library.
- if (!library_exists_in_dir(path, LIBHOSTPOLICY_NAME, nullptr))
- {
- trace::verbose(_X("Did not find %s in directory %s"), LIBHOSTPOLICY_NAME, path.c_str());
- return false;
- }
-
- // "path" contains the directory containing hostpolicy library.
- *candidate = path;
-
- trace::verbose(_X("Found %s in directory %s"), LIBHOSTPOLICY_NAME, path.c_str());
- return true;
-}
-
-/**
-* Given a nuget version, detect if a serviced hostpolicy is available at
-* platform servicing location.
-*/
-bool hostpolicy_exists_in_svc(const pal::string_t& version, pal::string_t* resolved_dir)
-{
- if (version.empty())
- {
- return false;
- }
-
- pal::string_t svc_dir;
- pal::get_default_servicing_directory(&svc_dir);
- append_path(&svc_dir, _X("pkgs"));
- return to_hostpolicy_package_dir(svc_dir, version, resolved_dir);
-}
-
-/**
-* Given path to app binary, say app.dll or app.exe, retrieve the app.deps.json.
-*/
-pal::string_t get_deps_from_app_binary(const pal::string_t& app)
-{
- assert(app.find(DIR_SEPARATOR) != pal::string_t::npos);
- assert(ends_with(app, _X(".dll"), false) || ends_with(app, _X(".exe"), false));
-
- // First append directory.
- pal::string_t deps_file;
- deps_file.assign(get_directory(app));
-
- // Then the app name and the file extension
- pal::string_t app_name = get_filename(app);
- deps_file.append(app_name, 0, app_name.find_last_of(_X(".")));
- deps_file.append(_X(".deps.json"));
- return deps_file;
-}
-
-/**
-* Given a version and probing paths, find if package layout
-* directory containing hostpolicy exists.
-*/
-bool resolve_hostpolicy_dir_from_probe_paths(const pal::string_t& version, const std::vector& probe_realpaths, pal::string_t* candidate)
-{
- if (probe_realpaths.empty() || version.empty())
- {
- return false;
- }
-
- // Check if the package relative directory containing hostpolicy exists.
- for (const auto& probe_path : probe_realpaths)
- {
- trace::verbose(_X("Considering %s to probe for %s"), probe_path.c_str(), LIBHOSTPOLICY_NAME);
- if (to_hostpolicy_package_dir(probe_path, version, candidate))
- {
- return true;
- }
- }
-
- // Print detailed message about the file not found in the probe paths.
- trace::error(_X("Could not find required library %s in %d probing paths:"),
- LIBHOSTPOLICY_NAME, probe_realpaths.size());
- for (const auto& path : probe_realpaths)
- {
- trace::error(_X(" %s"), path.c_str());
- }
- return false;
-}
-
-/**
-* Return name of deps file for app.
-*/
-pal::string_t get_deps_file(
- bool is_framework_dependent,
- const pal::string_t& app_candidate,
- const pal::string_t& specified_deps_file,
- const fx_definition_vector_t& fx_definitions
-)
-{
- if (is_framework_dependent)
- {
- // The hostpolicy is resolved from the root framework's name and location.
- pal::string_t deps_file = get_root_framework(fx_definitions).get_dir();
- if (!deps_file.empty() && deps_file.back() != DIR_SEPARATOR)
- {
- deps_file.push_back(DIR_SEPARATOR);
- }
-
- return deps_file + get_root_framework(fx_definitions).get_name() + _X(".deps.json");
- }
- else
- {
- // Self-contained app's hostpolicy is from specified deps or from app deps.
- return !specified_deps_file.empty() ? specified_deps_file : get_deps_from_app_binary(app_candidate);
- }
-}
-
-/**
-* Return location that is expected to contain hostpolicy
-*/
-bool fx_muxer_t::resolve_hostpolicy_dir(
- host_mode_t mode,
- const pal::string_t& dotnet_root,
- const fx_definition_vector_t& fx_definitions,
- const pal::string_t& app_candidate,
- const pal::string_t& specified_deps_file,
- const pal::string_t& specified_fx_version,
- const std::vector& probe_realpaths,
- pal::string_t* impl_dir)
-{
- bool is_framework_dependent = get_app(fx_definitions).get_runtime_config().get_is_framework_dependent();
-
- // Obtain deps file for the given configuration.
- pal::string_t resolved_deps = get_deps_file(is_framework_dependent, app_candidate, specified_deps_file, fx_definitions);
-
- // Resolve hostpolicy version out of the deps file.
- pal::string_t version = resolve_hostpolicy_version_from_deps(resolved_deps);
- if (trace::is_enabled() && version.empty() && pal::file_exists(resolved_deps))
- {
- trace::warning(_X("Dependency manifest %s does not contain an entry for %s"),
- resolved_deps.c_str(), _STRINGIFY(HOST_POLICY_PKG_NAME));
- }
-
- // Check if the given version of the hostpolicy exists in servicing.
- if (hostpolicy_exists_in_svc(version, impl_dir))
- {
- return true;
- }
-
- // Get the expected directory that would contain hostpolicy.
- pal::string_t expected;
- if (is_framework_dependent)
- {
- // The hostpolicy is required to be in the root framework's location
- expected.assign(get_root_framework(fx_definitions).get_dir());
- assert(pal::directory_exists(expected));
- }
- else
- {
- // Native apps can be activated by muxer, native exe host or "corehost"
- // 1. When activated with dotnet.exe or corehost.exe, check for hostpolicy in the deps dir or
- // app dir.
- // 2. When activated with native exe, the standalone host, check own directory.
- assert(mode != host_mode_t::invalid);
- expected = (mode == host_mode_t::apphost)
- ? dotnet_root
- : get_directory(specified_deps_file.empty() ? app_candidate : specified_deps_file);
- }
-
- // Check if hostpolicy exists in "expected" directory.
- trace::verbose(_X("The expected %s directory is [%s]"), LIBHOSTPOLICY_NAME, expected.c_str());
- if (library_exists_in_dir(expected, LIBHOSTPOLICY_NAME, nullptr))
- {
- impl_dir->assign(expected);
- return true;
- }
-
- trace::verbose(_X("The %s was not found in [%s]"), LIBHOSTPOLICY_NAME, expected.c_str());
-
- // Start probing for hostpolicy in the specified probe paths.
- pal::string_t candidate;
- if (resolve_hostpolicy_dir_from_probe_paths(version, probe_realpaths, &candidate))
- {
- impl_dir->assign(candidate);
- return true;
- }
-
- // If it still couldn't be found, somebody upstack messed up. Flag an error for the "expected" location.
- trace::error(_X("A fatal error was encountered. The library '%s' required to execute the application was not found in '%s'."),
- LIBHOSTPOLICY_NAME, expected.c_str());
- if (mode == host_mode_t::muxer && !is_framework_dependent)
- {
- if (!pal::file_exists(get_app(fx_definitions).get_runtime_config().get_path()))
- {
- trace::error(_X("Failed to run as a self-contained app. If this should be a framework-dependent app, add the %s file specifying the appropriate framework."),
- get_app(fx_definitions).get_runtime_config().get_path().c_str());
- }
- else if (get_app(fx_definitions).get_runtime_config().get_fx_name().empty())
- {
- trace::error(_X("Failed to run as a self-contained app. If this should be a framework-dependent app, specify the appropriate framework in %s."),
- get_app(fx_definitions).get_runtime_config().get_path().c_str());
- }
- }
- return false;
-}
-
-fx_ver_t fx_muxer_t::resolve_framework_version(const std::vector& version_list,
- const pal::string_t& fx_ver,
- const fx_ver_t& specified,
- bool patch_roll_fwd,
- roll_fwd_on_no_candidate_fx_option roll_fwd_on_no_candidate_fx)
-{
- trace::verbose(_X("Attempting FX roll forward starting from [%s]"), fx_ver.c_str());
-
- fx_ver_t most_compatible = specified;
- if (!specified.is_prerelease())
- {
- if (roll_fwd_on_no_candidate_fx != roll_fwd_on_no_candidate_fx_option::disabled)
- {
- fx_ver_t next_lowest(-1, -1, -1);
-
- // Look for the least production version
- trace::verbose(_X("'Roll forward on no candidate fx' enabled with value [%d]. Looking for the least production greater than or equal to [%s]"),
- roll_fwd_on_no_candidate_fx, fx_ver.c_str());
-
- for (const auto& ver : version_list)
- {
- if (!ver.is_prerelease() && ver >= specified)
- {
- if (roll_fwd_on_no_candidate_fx == roll_fwd_on_no_candidate_fx_option::minor)
- {
- // We only want to roll forward on minor
- if (ver.get_major() != specified.get_major())
- {
- continue;
- }
- }
- next_lowest = (next_lowest == fx_ver_t(-1, -1, -1)) ? ver : std::min(next_lowest, ver);
- }
- }
-
- if (next_lowest == fx_ver_t(-1, -1, -1))
- {
- // Look for the least preview version
- trace::verbose(_X("No production greater than or equal to [%s] found. Looking for the least preview greater than [%s]"),
- fx_ver.c_str(), fx_ver.c_str());
-
- for (const auto& ver : version_list)
- {
- if (ver.is_prerelease() && ver >= specified)
- {
- if (roll_fwd_on_no_candidate_fx == roll_fwd_on_no_candidate_fx_option::minor)
- {
- // We only want to roll forward on minor
- if (ver.get_major() != specified.get_major())
- {
- continue;
- }
- }
- next_lowest = (next_lowest == fx_ver_t(-1, -1, -1)) ? ver : std::min(next_lowest, ver);
- }
- }
- }
-
- if (next_lowest == fx_ver_t(-1, -1, -1))
- {
- trace::verbose(_X("No preview greater than or equal to [%s] found."), fx_ver.c_str());
- }
- else
- {
- trace::verbose(_X("Found version [%s]"), next_lowest.as_str().c_str());
- most_compatible = next_lowest;
- }
- }
-
- if (patch_roll_fwd)
- {
- trace::verbose(_X("Applying patch roll forward from [%s]"), most_compatible.as_str().c_str());
- for (const auto& ver : version_list)
- {
- trace::verbose(_X("Inspecting version... [%s]"), ver.as_str().c_str());
-
- if (most_compatible.is_prerelease() == ver.is_prerelease() && // prevent production from rolling forward to preview on patch
- ver.get_major() == most_compatible.get_major() &&
- ver.get_minor() == most_compatible.get_minor())
- {
- // Pick the greatest that differs only in patch.
- most_compatible = std::max(ver, most_compatible);
- }
- }
- }
- }
- else
- {
- for (const auto& ver : version_list)
- {
- trace::verbose(_X("Inspecting version... [%s]"), ver.as_str().c_str());
-
- //both production and prerelease.
- if (ver.is_prerelease() && // prevent roll forward to production.
- ver.get_major() == specified.get_major() &&
- ver.get_minor() == specified.get_minor() &&
- ver.get_patch() == specified.get_patch() &&
- ver > specified)
- {
- // Pick the smallest prerelease that is greater than specified.
- most_compatible = (most_compatible == specified) ? ver : std::min(ver, most_compatible);
- }
- }
- }
-
- return most_compatible;
-}
-
-fx_definition_t* fx_muxer_t::resolve_fx(
- host_mode_t mode,
- const runtime_config_t& config,
- const pal::string_t& dotnet_dir,
- const pal::string_t& specified_fx_version
-)
-{
- // If invoking using FX dotnet.exe, use own directory.
- if (mode == host_mode_t::split_fx)
- {
- return new fx_definition_t(config.get_fx_name(), dotnet_dir, pal::string_t(), pal::string_t());
- }
-
- assert(!config.get_fx_name().empty());
- assert(!config.get_fx_version().empty());
-
- trace::verbose(_X("--- Resolving FX directory, name '%s' version '%s'"),
- config.get_fx_name().c_str(), config.get_fx_version().c_str());
-
- const auto fx_ver = specified_fx_version.empty() ? config.get_fx_version() : specified_fx_version;
- fx_ver_t specified(-1, -1, -1);
- if (!fx_ver_t::parse(fx_ver, &specified, false))
- {
- trace::error(_X("The specified framework version '%s' could not be parsed"), fx_ver.c_str());
- return nullptr;
- }
-
- // Multi-level SharedFX lookup will look for the most appropriate version in several locations
- // by following the priority rank below:
- // .exe directory
- // Global .NET directory
- // If it is not activated, then only .exe directory will be considered
-
- std::vector hive_dir;
- std::vector global_dirs;
- bool multilevel_lookup = multilevel_lookup_enabled();
-
- // dotnet_dir contains DIR_SEPARATOR appended that we need to remove.
- pal::string_t dotnet_dir_temp = dotnet_dir;
- remove_trailing_dir_seperator(&dotnet_dir_temp);
-
- hive_dir.push_back(dotnet_dir_temp);
- if (multilevel_lookup && pal::get_global_dotnet_dirs(&global_dirs))
- {
- for (pal::string_t dir : global_dirs)
- {
- // Avoid duplicate of dotnet_dir_temp
- if (dir != dotnet_dir_temp)
- {
- hive_dir.push_back(dir);
- }
- }
- }
-
- pal::string_t selected_fx_dir;
- pal::string_t selected_fx_version;
- fx_ver_t selected_ver(-1, -1, -1);
-
- for (pal::string_t dir : hive_dir)
- {
- auto fx_dir = dir;
- trace::verbose(_X("Searching FX directory in [%s]"), fx_dir.c_str());
-
- append_path(&fx_dir, _X("shared"));
- append_path(&fx_dir, config.get_fx_name().c_str());
-
- bool do_roll_forward = false;
- if (specified_fx_version.empty())
- {
- if (!specified.is_prerelease())
- {
- // If production and no roll forward use given version.
- do_roll_forward = (config.get_patch_roll_fwd()) || (config.get_roll_fwd_on_no_candidate_fx() != roll_fwd_on_no_candidate_fx_option::disabled);
- }
- else
- {
- // Prerelease, but roll forward only if version doesn't exist.
- pal::string_t ver_dir = fx_dir;
- append_path(&ver_dir, fx_ver.c_str());
- do_roll_forward = !pal::directory_exists(ver_dir);
- }
- }
-
- if (!do_roll_forward)
- {
- trace::verbose(_X("Did not roll forward because specified version='%s', patch_roll_fwd=%d, roll_fwd_on_no_candidate_fx=%d, chose [%s]"),
- specified_fx_version.c_str(), config.get_patch_roll_fwd(), config.get_roll_fwd_on_no_candidate_fx(), fx_ver.c_str());
-
- append_path(&fx_dir, fx_ver.c_str());
- if (pal::directory_exists(fx_dir))
- {
- selected_fx_dir = fx_dir;
- selected_fx_version = fx_ver;
- break;
- }
- }
- else
- {
- std::vector list;
- std::vector version_list;
- pal::readdir_onlydirectories(fx_dir, &list);
-
- for (const auto& version : list)
- {
- fx_ver_t ver(-1, -1, -1);
- if (fx_ver_t::parse(version, &ver, false))
- {
- version_list.push_back(ver);
- }
- }
-
- fx_ver_t resolved_ver = resolve_framework_version(version_list, fx_ver, specified, config.get_patch_roll_fwd(), config.get_roll_fwd_on_no_candidate_fx());
-
- pal::string_t resolved_ver_str = resolved_ver.as_str();
- append_path(&fx_dir, resolved_ver_str.c_str());
-
- if (pal::directory_exists(fx_dir))
- {
- if (selected_ver != fx_ver_t(-1, -1, -1))
- {
- // Compare the previous hive_dir selection with the current hive_dir to see which one is the better match
- std::vector version_list;
- version_list.push_back(resolved_ver);
- version_list.push_back(selected_ver);
- resolved_ver = resolve_framework_version(version_list, fx_ver, specified, config.get_patch_roll_fwd(), config.get_roll_fwd_on_no_candidate_fx());
- }
-
- if (resolved_ver != selected_ver)
- {
- trace::verbose(_X("Changing Selected FX version from [%s] to [%s]"), selected_fx_dir.c_str(), fx_dir.c_str());
- selected_ver = resolved_ver;
- selected_fx_dir = fx_dir;
- selected_fx_version = resolved_ver_str;
- }
- }
- }
- }
-
- if (selected_fx_dir.empty())
- {
- trace::error(_X("It was not possible to find any compatible framework version"));
- return nullptr;
- }
-
- trace::verbose(_X("Chose FX version [%s]"), selected_fx_dir.c_str());
-
- return new fx_definition_t(config.get_fx_name(), selected_fx_dir, fx_ver, selected_fx_version);
-}
-
-bool is_sdk_dir_present(const pal::string_t& dotnet_root)
-{
- pal::string_t sdk_path = dotnet_root;
- append_path(&sdk_path, _X("sdk"));
- return pal::directory_exists(sdk_path);
-}
-
-void muxer_info(pal::string_t dotnet_root)
-{
- trace::println();
- trace::println(_X("Host (useful for support):"));
- trace::println(_X(" Version: %s"), _STRINGIFY(HOST_FXR_PKG_VER));
-
- pal::string_t commit = _STRINGIFY(REPO_COMMIT_HASH);
- trace::println(_X(" Commit: %s"), commit.substr(0, 10).c_str());
-
- trace::println();
- trace::println(_X(".NET Core SDKs installed:"));
- if (!sdk_info::print_all_sdks(dotnet_root, _X(" ")))
- {
- trace::println(_X(" No SDKs were found."));
- }
-
- trace::println();
- trace::println(_X(".NET Core runtimes installed:"));
- if (!framework_info::print_all_frameworks(dotnet_root, _X(" ")))
- {
- trace::println(_X(" No runtimes were found."));
- }
-
- trace::println();
- trace::println(_X("To install additional .NET Core runtimes or SDKs:"));
- trace::println(_X(" %s"), DOTNET_CORE_DOWNLOAD_URL);
-}
-
-void fx_muxer_t::muxer_usage(bool is_sdk_present)
-{
- std::vector known_opts = fx_muxer_t::get_known_opts(true, host_mode_t::invalid, true);
-
- if (!is_sdk_present)
- {
- trace::println();
- trace::println(_X("Usage: dotnet [host-options] [path-to-application]"));
- trace::println();
- trace::println(_X("path-to-application:"));
- trace::println(_X(" The path to an application .dll file to execute."));
- }
- trace::println();
- trace::println(_X("host-options:"));
-
- for (const auto& arg : known_opts)
- {
- trace::println(_X(" %-34s %s"), (arg.option + _X(" ") + arg.argument).c_str(), arg.description.c_str());
- }
- trace::println(_X(" --list-runtimes Display the installed runtimes"));
- trace::println(_X(" --list-sdks Display the installed SDKs"));
-
- if (!is_sdk_present)
- {
- trace::println();
- trace::println(_X("Common Options:"));
- trace::println(_X(" -h|--help Displays this help."));
- trace::println(_X(" --info Display .NET Core information."));
- }
-}
-
-// Convert "path" to realpath (merging working dir if needed) and append to "realpaths" out param.
-void append_probe_realpath(const pal::string_t& path, std::vector* realpaths, const pal::string_t& tfm)
-{
- pal::string_t probe_path = path;
-
- if (pal::realpath(&probe_path))
- {
- realpaths->push_back(probe_path);
- }
- else
- {
- // Check if we can extrapolate |arch||tfm| for probing stores
- // Check for for both forward and back slashes
- pal::string_t placeholder = _X("|arch|\\|tfm|");
- auto pos_placeholder = probe_path.find(placeholder);
- if (pos_placeholder == pal::string_t::npos)
- {
- placeholder = _X("|arch|/|tfm|");
- pos_placeholder = probe_path.find(placeholder);
- }
-
- if (pos_placeholder != pal::string_t::npos)
- {
- pal::string_t segment = get_arch();
- segment.push_back(DIR_SEPARATOR);
- segment.append(tfm);
- probe_path.replace(pos_placeholder, placeholder.length(), segment);
-
- if (pal::realpath(&probe_path))
- {
- realpaths->push_back(probe_path);
- }
- else
- {
- trace::verbose(_X("Ignoring host interpreted additional probing path %s as it does not exist."), probe_path.c_str());
- }
- }
- else
- {
- trace::verbose(_X("Ignoring additional probing path %s as it does not exist."), probe_path.c_str());
- }
- }
-}
-
-std::vector fx_muxer_t::get_known_opts(bool exec_mode, host_mode_t mode, bool get_all_options)
-{
- std::vector known_opts = { { _X("--additionalprobingpath"), _X(""), _X("Path containing probing policy and assemblies to probe for") } };
- if (get_all_options || exec_mode || mode == host_mode_t::split_fx || mode == host_mode_t::apphost)
- {
- known_opts.push_back({ _X("--depsfile"), _X(""), _X("Path to .deps.json file")});
- known_opts.push_back({ _X("--runtimeconfig"), _X(""), _X("Path to .runtimeconfig.json file")});
- }
-
- if (get_all_options || mode == host_mode_t::muxer || mode == host_mode_t::apphost)
- {
- // If mode=host_mode_t::apphost, these are only used when the app is framework-dependent.
- known_opts.push_back({ _X("--fx-version"), _X(""), _X("Version of the installed Shared Framework to use to run the application.")});
- known_opts.push_back({ _X("--roll-forward-on-no-candidate-fx"), _X(""), _X("Roll forward on no candidate shared framework is enabled")});
- known_opts.push_back({ _X("--additional-deps"), _X(""), _X("Path to additonal deps.json file")});
- }
-
- return known_opts;
-}
-
-// Returns '0' on success, 'AppArgNotRunnable' if should be routed to CLI, otherwise error code.
-int fx_muxer_t::parse_args(
- const host_startup_info_t& host_info,
- int argoff,
- int argc,
- const pal::char_t* argv[],
- bool exec_mode,
- host_mode_t mode,
- int* new_argoff,
- pal::string_t& app_candidate,
- opt_map_t& opts)
-{
- std::vector known_opts = get_known_opts(exec_mode, mode);
-
- // Parse the known arguments if any.
- int num_parsed = 0;
- if (!parse_known_args(argc - argoff, &argv[argoff], known_opts, &opts, &num_parsed))
- {
- trace::error(_X("Failed to parse supported options or their values:"));
- for (const auto& arg : known_opts)
- {
- trace::error(_X(" %s"), (arg.option + _X(" ") + arg.argument).c_str());
- }
- return InvalidArgFailure;
- }
-
- app_candidate = host_info.app_path;
- *new_argoff = argoff + num_parsed;
- bool doesAppExist = false;
- if (mode == host_mode_t::apphost)
- {
- doesAppExist = pal::realpath(&app_candidate);
- }
- else
- {
- trace::verbose(_X("Using the provided arguments to determine the application to execute."));
- if (*new_argoff >= argc)
- {
- muxer_usage(!is_sdk_dir_present(host_info.dotnet_root));
- return StatusCode::InvalidArgFailure;
- }
-
- app_candidate = argv[*new_argoff];
-
- bool is_app_managed = ends_with(app_candidate, _X(".dll"), false) || ends_with(app_candidate, _X(".exe"), false);
- if (!is_app_managed)
- {
- trace::verbose(_X("Application '%s' is not a managed executable."), app_candidate.c_str());
- if (!exec_mode)
- {
- // Route to CLI.
- return AppArgNotRunnable;
- }
- }
-
- doesAppExist = pal::realpath(&app_candidate);
- if (!doesAppExist)
- {
- trace::verbose(_X("Application '%s' does not exist."), app_candidate.c_str());
- if (!exec_mode)
- {
- // Route to CLI.
- return AppArgNotRunnable;
- }
- }
-
- if (!is_app_managed && doesAppExist)
- {
- assert(exec_mode == true);
- trace::error(_X("dotnet exec needs a managed .dll or .exe extension. The application specified was '%s'"), app_candidate.c_str());
- return InvalidArgFailure;
- }
- }
-
- // App is managed executable.
- if (!doesAppExist)
- {
- trace::error(_X("The application to execute does not exist: '%s'"), app_candidate.c_str());
- return InvalidArgFailure;
- }
-
- return 0;
-}
-
-int read_config(
- fx_definition_t& app,
- const pal::string_t& app_candidate,
- pal::string_t& runtime_config
-)
-{
- if (!runtime_config.empty() && !pal::realpath(&runtime_config))
- {
- trace::error(_X("The specified runtimeconfig.json [%s] does not exist"), runtime_config.c_str());
- return StatusCode::InvalidConfigFile;
- }
-
- pal::string_t config_file, dev_config_file;
-
- if (runtime_config.empty())
- {
- trace::verbose(_X("App runtimeconfig.json from [%s]"), app_candidate.c_str());
- get_runtime_config_paths_from_app(app_candidate, &config_file, &dev_config_file);
- }
- else
- {
- trace::verbose(_X("Specified runtimeconfig.json from [%s]"), runtime_config.c_str());
- get_runtime_config_paths_from_arg(runtime_config, &config_file, &dev_config_file);
- }
-
- app.parse_runtime_config(config_file, dev_config_file, nullptr, nullptr);
- if (!app.get_runtime_config().is_valid())
- {
- trace::error(_X("Invalid runtimeconfig.json [%s] [%s]"), app.get_runtime_config().get_path().c_str(), app.get_runtime_config().get_dev_path().c_str());
- return StatusCode::InvalidConfigFile;
- }
-
- return 0;
-}
-
-int fx_muxer_t::read_config_and_execute(
- const pal::string_t& host_command,
- const host_startup_info_t& host_info,
- const pal::string_t& app_candidate,
- const opt_map_t& opts,
- int new_argc,
- const pal::char_t** new_argv,
- host_mode_t mode,
- pal::char_t out_buffer[],
- int32_t buffer_size,
- int32_t* required_buffer_size)
-{
- pal::string_t opts_fx_version = _X("--fx-version");
- pal::string_t opts_roll_fwd_on_no_candidate_fx = _X("--roll-forward-on-no-candidate-fx");
- pal::string_t opts_deps_file = _X("--depsfile");
- pal::string_t opts_probe_path = _X("--additionalprobingpath");
- pal::string_t opts_additional_deps = _X("--additional-deps");
- pal::string_t opts_runtime_config = _X("--runtimeconfig");
-
- pal::string_t fx_version_specified;
- pal::string_t roll_fwd_on_no_candidate_fx;
- pal::string_t deps_file = get_last_known_arg(opts, opts_deps_file, _X(""));
- pal::string_t additional_deps;
- pal::string_t runtime_config = get_last_known_arg(opts, opts_runtime_config, _X(""));
- std::vector spec_probe_paths = opts.count(opts_probe_path) ? opts.find(opts_probe_path)->second : std::vector();
-
- if (!deps_file.empty() && !pal::realpath(&deps_file))
- {
- trace::error(_X("The specified deps.json [%s] does not exist"), deps_file.c_str());
- return StatusCode::InvalidArgFailure;
- }
-
- // Read config
- fx_definition_vector_t fx_definitions;
- auto app = new fx_definition_t();
- fx_definitions.push_back(std::unique_ptr(app));
-
- int rc = read_config(*app, app_candidate, runtime_config);
- if (rc)
- {
- return rc;
- }
-
- auto app_config = app->get_runtime_config();
- bool is_framework_dependent = app_config.get_is_framework_dependent();
-
- // These settings are only valid for framework-dependent apps
- if (is_framework_dependent)
- {
- fx_version_specified = get_last_known_arg(opts, opts_fx_version, _X(""));
- roll_fwd_on_no_candidate_fx = get_last_known_arg(opts, opts_roll_fwd_on_no_candidate_fx, _X(""));
- additional_deps = get_last_known_arg(opts, opts_additional_deps, _X(""));
- }
-
- // 'Roll forward on no candidate fx' is set to 1 (roll_fwd_on_no_candidate_fx_option::minor) by default. It can be changed through:
- // 1. Command line argument (--roll-forward-on-no-candidate-fx).
- // 2. Runtimeconfig json file ('rollForwardOnNoCandidateFx' property in "framework" section:).
- // 3. Runtimeconfig json file ('rollForwardOnNoCandidateFx' property), which is used as a default for lower level frameworks if they don't specify a value.
- // 4. DOTNET_ROLL_FORWARD_ON_NO_CANDIDATE_FX env var. Only defaults the app's config.
- // The conflicts will be resolved by following the priority rank described above (from 1 to 4).
- // The env var condition is verified in the config file processing
- if (!roll_fwd_on_no_candidate_fx.empty())
- {
- app_config.force_roll_fwd_on_no_candidate_fx(static_cast(pal::xtoi(roll_fwd_on_no_candidate_fx.c_str())));
- }
-
- auto config = app_config;
-
- pal::string_t additional_deps_serialized;
- if (is_framework_dependent)
- {
- // Determine additional deps
- additional_deps_serialized = additional_deps;
- if (additional_deps_serialized.empty())
- {
- // additional_deps_serialized stays empty if DOTNET_ADDITIONAL_DEPS env var is not defined
- pal::getenv(_X("DOTNET_ADDITIONAL_DEPS"), &additional_deps_serialized);
- }
-
- // Obtain frameworks\platforms
- auto version = fx_version_specified;
- while (!config.get_fx_name().empty() && !config.get_fx_version().empty())
- {
- fx_definition_t* fx = resolve_fx(mode, config, host_info.dotnet_root, version);
- if (fx == nullptr)
- {
- pal::string_t searched_version = fx_version_specified.empty() ? config.get_fx_version() : fx_version_specified;
- handle_missing_framework_error(mode, config.get_fx_name(), searched_version, pal::string_t(), host_info.dotnet_root);
- return FrameworkMissingFailure;
- }
-
- fx_definitions.push_back(std::unique_ptr(fx));
-
- pal::string_t config_file;
- pal::string_t dev_config_file;
- get_runtime_config_paths(fx->get_dir(), config.get_fx_name(), &config_file, &dev_config_file);
- fx->parse_runtime_config(config_file, dev_config_file, &config, &app_config);
-
- config = fx->get_runtime_config();
- if (!config.is_valid())
- {
- trace::error(_X("Invalid framework config.json [%s]"), config.get_path().c_str());
- return StatusCode::InvalidConfigFile;
- }
-
- // Only the first framework can have a specified version (through --fx-version)
- version.clear();
- }
- }
-
- // Append specified probe paths first and then config file probe paths into realpaths.
- std::vector probe_realpaths;
-
- // The tfm is taken from the app.
- pal::string_t tfm = get_app(fx_definitions).get_runtime_config().get_tfm();
-
- for (const auto& path : spec_probe_paths)
- {
- append_probe_realpath(path, &probe_realpaths, tfm);
- }
-
- // Each framework can add probe paths
- for (const auto& fx : fx_definitions)
- {
- for (const auto& path : fx->get_runtime_config().get_probe_paths())
- {
- append_probe_realpath(path, &probe_realpaths, tfm);
- }
- }
-
- trace::verbose(_X("Executing as a %s app as per config file [%s]"),
- (is_framework_dependent ? _X("framework-dependent") : _X("self-contained")), config.get_path().c_str());
-
- pal::string_t impl_dir;
- if (!resolve_hostpolicy_dir(mode, host_info.dotnet_root, fx_definitions, app_candidate, deps_file, fx_version_specified, probe_realpaths, &impl_dir))
- {
- return CoreHostLibMissingFailure;
- }
-
- corehost_init_t init(host_command, host_info, deps_file, additional_deps_serialized, probe_realpaths, mode, fx_definitions);
-
- if (host_command.size() == 0)
- {
- rc = execute_app(impl_dir, &init, new_argc, new_argv);
- }
- else
- {
- rc = execute_host_command(impl_dir, &init, new_argc, new_argv, out_buffer, buffer_size, required_buffer_size);
- }
-
- return rc;
-}
-
-/**
-* Main entrypoint to detect operating mode and perform corehost, muxer,
-* standalone application activation and the SDK activation.
-*/
-int fx_muxer_t::execute(
- const pal::string_t host_command,
- const int argc,
- const pal::char_t* argv[],
- const host_startup_info_t& host_info,
- pal::char_t result_buffer[],
- int32_t buffer_size,
- int32_t* required_buffer_size)
-{
- // Detect invocation mode
- host_mode_t mode = detect_operating_mode(host_info);
-
- int new_argoff;
- pal::string_t app_candidate;
- opt_map_t opts;
- int result;
-
- if (mode == host_mode_t::split_fx)
- {
- // Invoked as corehost
- trace::verbose(_X("--- Executing in split/FX mode..."));
- result = parse_args(host_info, 1, argc, argv, false, mode, &new_argoff, app_candidate, opts);
- }
- else if (mode == host_mode_t::apphost)
- {
- // Invoked from the application base.
- trace::verbose(_X("--- Executing in a native executable mode..."));
- result = parse_args(host_info, 1, argc, argv, false, mode, &new_argoff, app_candidate, opts);
- }
- else
- {
- // Invoked as the dotnet.exe muxer.
- assert(mode == host_mode_t::muxer);
- trace::verbose(_X("--- Executing in muxer mode..."));
-
- if (argc <= 1)
- {
- muxer_usage(!is_sdk_dir_present(host_info.dotnet_root));
- return StatusCode::InvalidArgFailure;
- }
-
- if (pal::strcasecmp(_X("exec"), argv[1]) == 0)
- {
- result = parse_args(host_info, 2, argc, argv, true, mode, &new_argoff, app_candidate, opts); // arg offset 2 for dotnet, exec
- }
- else
- {
- result = parse_args(host_info, 1, argc, argv, false, mode, &new_argoff, app_candidate, opts); // arg offset 1 for dotnet
-
- if (result == AppArgNotRunnable)
- {
- return handle_cli(host_info, argc, argv);
- }
- }
- }
-
- if (!result)
- {
- // Transform dotnet [exec] [--additionalprobingpath path] [--depsfile file] [dll] [args] -> dotnet [dll] [args]
- result = handle_exec_host_command(
- host_command,
- host_info,
- app_candidate,
- opts,
- argc,
- argv,
- new_argoff,
- mode,
- result_buffer,
- buffer_size,
- required_buffer_size);
- }
-
- return result;
-}
-
-int fx_muxer_t::handle_exec(
- const host_startup_info_t& host_info,
- const pal::string_t& app_candidate,
- const opt_map_t& opts,
- int argc,
- const pal::char_t* argv[],
- int argoff,
- host_mode_t mode)
-{
- return handle_exec_host_command(
- pal::string_t(),
- host_info,
- app_candidate,
- opts,
- argc,
- argv,
- argoff,
- mode,
- nullptr,
- 0,
- nullptr);
-}
-
-int fx_muxer_t::handle_exec_host_command(
- const pal::string_t& host_command,
- const host_startup_info_t& host_info,
- const pal::string_t& app_candidate,
- const opt_map_t& opts,
- int argc,
- const pal::char_t* argv[],
- int argoff,
- host_mode_t mode,
- pal::char_t result_buffer[],
- int32_t buffer_size,
- int32_t* required_buffer_size)
-{
- const pal::char_t** new_argv = argv;
- int new_argc = argc;
- std::vector vec_argv;
-
- if (argoff != 1)
- {
- vec_argv.reserve(argc - argoff + 1); // +1 for dotnet
- vec_argv.push_back(argv[0]);
- vec_argv.insert(vec_argv.end(), argv + argoff, argv + argc);
- new_argv = vec_argv.data();
- new_argc = vec_argv.size();
- }
-
- trace::info(_X("Using dotnet root path [%s]"), host_info.dotnet_root.c_str());
-
- // Transform dotnet [exec] [--additionalprobingpath path] [--depsfile file] [dll] [args] -> dotnet [dll] [args]
- return read_config_and_execute(
- host_command,
- host_info,
- app_candidate,
- opts,
- new_argc,
- new_argv,
- mode,
- result_buffer,
- buffer_size,
- required_buffer_size);
-}
-
-int fx_muxer_t::handle_cli(
- const host_startup_info_t& host_info,
- int argc,
- const pal::char_t* argv[])
-{
- // Check for commands that don't depend on the CLI SDK to be loaded
- if (pal::strcasecmp(_X("--list-sdks"), argv[1]) == 0)
- {
- sdk_info::print_all_sdks(host_info.dotnet_root, _X(""));
- return StatusCode::Success;
- }
- else if (pal::strcasecmp(_X("--list-runtimes"), argv[1]) == 0)
- {
- framework_info::print_all_frameworks(host_info.dotnet_root, _X(""));
- return StatusCode::Success;
- }
-
- //
- // Did not exececute the app or run other commands, so try the CLI SDK dotnet.dll
- //
-
- pal::string_t sdk_dotnet;
- if (!sdk_resolver_t::resolve_sdk_dotnet_path(host_info.dotnet_root, &sdk_dotnet))
- {
- assert(argc > 1);
- if (pal::strcasecmp(_X("-h"), argv[1]) == 0 ||
- pal::strcasecmp(_X("--help"), argv[1]) == 0)
- {
- muxer_usage(false);
- return StatusCode::InvalidArgFailure;
- }
- else if (pal::strcasecmp(_X("--info"), argv[1]) == 0)
- {
- muxer_info(host_info.dotnet_root);
- return StatusCode::Success;
- }
-
- trace::error(_X("Did you mean to run dotnet SDK commands? Please install dotnet SDK from:"));
- trace::error(_X(" %s"), DOTNET_CORE_GETTING_STARTED_URL);
- return StatusCode::LibHostSdkFindFailure;
- }
-
- append_path(&sdk_dotnet, _X("dotnet.dll"));
-
- if (!pal::file_exists(sdk_dotnet))
- {
- trace::error(_X("Found dotnet SDK, but did not find dotnet.dll at [%s]"), sdk_dotnet.c_str());
- return StatusCode::LibHostSdkFindFailure;
- }
-
- // Transform dotnet [command] [args] -> dotnet dotnet.dll [command] [args]
-
- std::vector new_argv;
- new_argv.reserve(argc + 1);
- new_argv.push_back(argv[0]);
- new_argv.push_back(sdk_dotnet.c_str());
- new_argv.insert(new_argv.end(), argv + 1, argv + argc);
-
- trace::verbose(_X("Using dotnet SDK dll=[%s]"), sdk_dotnet.c_str());
-
- int new_argoff;
- pal::string_t app_candidate;
- opt_map_t opts;
-
- int result = parse_args(host_info, 1, new_argv.size(), new_argv.data(), false, host_mode_t::muxer, &new_argoff, app_candidate, opts); // arg offset 1 for dotnet
- if (!result)
- {
- // Transform dotnet [exec] [--additionalprobingpath path] [--depsfile file] [dll] [args] -> dotnet [dll] [args]
- result = handle_exec(host_info, app_candidate, opts, new_argv.size(), new_argv.data(), new_argoff, host_mode_t::muxer);
- }
-
- if (pal::strcasecmp(_X("--info"), argv[1]) == 0)
- {
- muxer_info(host_info.dotnet_root);
- }
-
- return result;
-}
diff --git a/src/corehost/cli/fxr/fx_muxer.h b/src/corehost/cli/fxr/fx_muxer.h
deleted file mode 100644
index 3ad5c77cdd..0000000000
--- a/src/corehost/cli/fxr/fx_muxer.h
+++ /dev/null
@@ -1,110 +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.
-
-class corehost_init_t;
-class runtime_config_t;
-class fx_definition_t;
-struct fx_ver_t;
-struct host_startup_info_t;
-
-#include "libhost.h"
-
-int execute_app(
- const pal::string_t& impl_dll_dir,
- corehost_init_t* init,
- const int argc,
- const pal::char_t* argv[]);
-
-int execute_host_command(
- const pal::string_t& impl_dll_dir,
- corehost_init_t* init,
- const int argc,
- const pal::char_t* argv[],
- pal::char_t result_buffer[],
- int32_t buffer_size,
- int32_t* required_buffer_size);
-
-class fx_muxer_t
-{
-public:
- static int execute(
- const pal::string_t host_command,
- const int argc,
- const pal::char_t* argv[],
- const host_startup_info_t& host_info,
- pal::char_t result_buffer[],
- int32_t buffer_size,
- int32_t* required_buffer_size);
- static bool resolve_sdk_dotnet_path(const pal::string_t& dotnet_root, const pal::string_t& cwd, pal::string_t* cli_sdk);
-private:
- static int parse_args(
- const host_startup_info_t& host_info,
- int argoff,
- int argc,
- const pal::char_t* argv[],
- bool exec_mode,
- host_mode_t mode,
- int* new_argoff,
- pal::string_t& app_candidate,
- opt_map_t& opts);
- static int handle_exec(
- const host_startup_info_t& host_info,
- const pal::string_t& app_candidate,
- const opt_map_t& opts,
- int argc,
- const pal::char_t* argv[],
- int argoff,
- host_mode_t mode);
- static int handle_exec_host_command(
- const pal::string_t& host_command,
- const host_startup_info_t& host_info,
- const pal::string_t& app_candidate,
- const opt_map_t& opts,
- int argc,
- const pal::char_t* argv[],
- int argoff,
- host_mode_t mode,
- pal::char_t result_buffer[],
- int32_t buffer_size,
- int32_t* required_buffer_size);
- static int handle_cli(
- const host_startup_info_t& host_info,
- int argc,
- const pal::char_t* argv[]);
- static std::vector get_known_opts(
- bool exec_mode,
- host_mode_t mode,
- bool get_all_options = false);
- static int read_config_and_execute(
- const pal::string_t& host_command,
- const host_startup_info_t& host_info,
- const pal::string_t& app_candidate,
- const opt_map_t& opts,
- int new_argc,
- const pal::char_t** new_argv,
- host_mode_t mode,
- pal::char_t out_buffer[],
- int32_t buffer_size,
- int32_t* required_buffer_size);
- static bool resolve_hostpolicy_dir(
- host_mode_t mode,
- const pal::string_t& dotnet_root,
- const fx_definition_vector_t& fx_definitions,
- const pal::string_t& app_candidate,
- const pal::string_t& specified_deps_file,
- const pal::string_t& specified_fx_version,
- const std::vector& probe_realpaths,
- pal::string_t* impl_dir);
- static fx_ver_t resolve_framework_version(
- const std::vector& version_list,
- const pal::string_t& fx_ver,
- const fx_ver_t& specified,
- bool patch_roll_fwd,
- roll_fwd_on_no_candidate_fx_option roll_fwd_on_no_candidate_fx);
- static fx_definition_t* resolve_fx(
- host_mode_t mode,
- const runtime_config_t& config,
- const pal::string_t& dotnet_dir,
- const pal::string_t& specified_fx_version);
- static void muxer_usage(bool is_sdk_present);
-};
diff --git a/src/corehost/cli/fxr/fx_ver.cpp b/src/corehost/cli/fxr/fx_ver.cpp
deleted file mode 100644
index 8d9f19a07e..0000000000
--- a/src/corehost/cli/fxr/fx_ver.cpp
+++ /dev/null
@@ -1,195 +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.
-
-#include
-#include "pal.h"
-#include "utils.h"
-#include "fx_ver.h"
-
-fx_ver_t::fx_ver_t(int major, int minor, int patch, const pal::string_t& pre, const pal::string_t& build)
- : m_major(major)
- , m_minor(minor)
- , m_patch(patch)
- , m_pre(pre)
- , m_build(build)
-{
-}
-
-fx_ver_t::fx_ver_t(int major, int minor, int patch, const pal::string_t& pre)
- : fx_ver_t(major, minor, patch, pre, _X(""))
-{
-}
-
-fx_ver_t::fx_ver_t(int major, int minor, int patch)
- : fx_ver_t(major, minor, patch, _X(""), _X(""))
-{
-}
-
-bool fx_ver_t::operator ==(const fx_ver_t& b) const
-{
- return compare(*this, b) == 0;
-}
-
-bool fx_ver_t::operator !=(const fx_ver_t& b) const
-{
- return !operator ==(b);
-}
-
-bool fx_ver_t::operator <(const fx_ver_t& b) const
-{
- return compare(*this, b) < 0;
-}
-
-bool fx_ver_t::operator >(const fx_ver_t& b) const
-{
- return compare(*this, b) > 0;
-}
-
-bool fx_ver_t::operator <=(const fx_ver_t& b) const
-{
- return compare(*this, b) <= 0;
-}
-
-bool fx_ver_t::operator >=(const fx_ver_t& b) const
-{
- return compare(*this, b) >= 0;
-}
-
-pal::string_t fx_ver_t::as_str() const
-{
- pal::stringstream_t stream;
- stream << m_major << _X(".") << m_minor << _X(".") << m_patch;
- if (!m_pre.empty())
- {
- stream << m_pre;
- }
- if (!m_build.empty())
- {
- stream << _X("+") << m_build;
- }
- return stream.str();
-}
-
-pal::string_t fx_ver_t::prerelease_glob() const
-{
- pal::stringstream_t stream;
- stream << m_major << _X(".") << m_minor << _X(".") << m_patch << _X("-*");
- return stream.str();
-}
-
-pal::string_t fx_ver_t::patch_glob() const
-{
- pal::stringstream_t stream;
- stream << m_major << _X(".") << m_minor << _X(".*");
- return stream.str();
-}
-
-/* static */
-int fx_ver_t::compare(const fx_ver_t&a, const fx_ver_t& b)
-{
- // compare(u.v.w-p+b, x.y.z-q+c)
- if (a.m_major != b.m_major)
- {
- return (a.m_major > b.m_major) ? 1 : -1;
- }
-
- if (a.m_minor != b.m_minor)
- {
- return (a.m_minor > b.m_minor) ? 1 : -1;
- }
-
- if (a.m_patch != b.m_patch)
- {
- return (a.m_patch > b.m_patch) ? 1 : -1;
- }
-
- if (a.m_pre.empty() != b.m_pre.empty())
- {
- // Either a is empty or b is empty
- return a.m_pre.empty() ? 1 : -1;
- }
-
- // Either both are empty or both are non-empty (may be equal)
- int pre_cmp = a.m_pre.compare(b.m_pre);
- if (pre_cmp != 0)
- {
- return pre_cmp;
- }
-
- return a.m_build.compare(b.m_build);
-}
-
-bool parse_internal(const pal::string_t& ver, fx_ver_t* fx_ver, bool parse_only_production)
-{
- size_t maj_start = 0;
- size_t maj_sep = ver.find(_X('.'));
- if (maj_sep == pal::string_t::npos)
- {
- return false;
- }
- unsigned major = 0;
- if (!try_stou(ver.substr(maj_start, maj_sep), &major))
- {
- return false;
- }
-
- size_t min_start = maj_sep + 1;
- size_t min_sep = ver.find(_X('.'), min_start);
- if (min_sep == pal::string_t::npos)
- {
- return false;
- }
-
- unsigned minor = 0;
- if (!try_stou(ver.substr(min_start, min_sep - min_start), &minor))
- {
- return false;
- }
-
- unsigned patch = 0;
- size_t pat_start = min_sep + 1;
- size_t pat_sep = index_of_non_numeric(ver, pat_start);
- if (pat_sep == pal::string_t::npos)
- {
- if (!try_stou(ver.substr(pat_start), &patch))
- {
- return false;
- }
-
- *fx_ver = fx_ver_t(major, minor, patch);
- return true;
- }
-
- if (parse_only_production)
- {
- // This is a prerelease or has build suffix.
- return false;
- }
-
- if (!try_stou(ver.substr(pat_start, pat_sep - pat_start), &patch))
- {
- return false;
- }
-
- size_t pre_start = pat_sep;
- size_t pre_sep = ver.find(_X('+'), pre_start);
- if (pre_sep == pal::string_t::npos)
- {
- *fx_ver = fx_ver_t(major, minor, patch, ver.substr(pre_start));
- return true;
- }
- else
- {
- size_t build_start = pre_sep + 1;
- *fx_ver = fx_ver_t(major, minor, patch, ver.substr(pre_start, pre_sep - pre_start), ver.substr(build_start));
- return true;
- }
-}
-
-/* static */
-bool fx_ver_t::parse(const pal::string_t& ver, fx_ver_t* fx_ver, bool parse_only_production)
-{
- bool valid = parse_internal(ver, fx_ver, parse_only_production);
- assert(!valid || fx_ver->as_str() == ver);
- return valid;
-}
diff --git a/src/corehost/cli/fxr/fx_ver.h b/src/corehost/cli/fxr/fx_ver.h
deleted file mode 100644
index b59b325ce9..0000000000
--- a/src/corehost/cli/fxr/fx_ver.h
+++ /dev/null
@@ -1,50 +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.
-
-#ifndef __FX_VER_H__
-#define __FX_VER_H__
-
-#include "pal.h"
-
-// Note: This is not SemVer (esp., in comparing pre-release part, fx_ver_t does not
-// compare multiple dot separated identifiers individually.) ex: 1.0.0-beta.2 vs. 1.0.0-beta.11
-struct fx_ver_t
-{
- fx_ver_t(int major, int minor, int patch);
- fx_ver_t(int major, int minor, int patch, const pal::string_t& pre);
- fx_ver_t(int major, int minor, int patch, const pal::string_t& pre, const pal::string_t& build);
-
- int get_major() const { return m_major; }
- int get_minor() const { return m_minor; }
- int get_patch() const { return m_patch; }
-
- void set_major(int m) { m_major = m; }
- void set_minor(int m) { m_minor = m; }
- void set_patch(int p) { m_patch = p; }
-
- bool is_prerelease() const { return !m_pre.empty(); }
-
- pal::string_t as_str() const;
- pal::string_t prerelease_glob() const;
- pal::string_t patch_glob() const;
-
- bool operator ==(const fx_ver_t& b) const;
- bool operator !=(const fx_ver_t& b) const;
- bool operator <(const fx_ver_t& b) const;
- bool operator >(const fx_ver_t& b) const;
- bool operator <=(const fx_ver_t& b) const;
- bool operator >=(const fx_ver_t& b) const;
-
- static bool parse(const pal::string_t& ver, fx_ver_t* fx_ver, bool parse_only_production = false);
-
-private:
- int m_major;
- int m_minor;
- int m_patch;
- pal::string_t m_pre;
- pal::string_t m_build;
-
- static int compare(const fx_ver_t&a, const fx_ver_t& b);
-};
-
-#endif // __FX_VER_H__
\ No newline at end of file
diff --git a/src/corehost/cli/fxr/hostfxr.cpp b/src/corehost/cli/fxr/hostfxr.cpp
deleted file mode 100644
index 10a8dbae48..0000000000
--- a/src/corehost/cli/fxr/hostfxr.cpp
+++ /dev/null
@@ -1,516 +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.
-
-#include
-#include "trace.h"
-#include "pal.h"
-#include "utils.h"
-#include "fx_ver.h"
-#include "fx_muxer.h"
-#include "error_codes.h"
-#include "libhost.h"
-#include "runtime_config.h"
-#include "sdk_info.h"
-#include "sdk_resolver.h"
-
-typedef int(*corehost_load_fn) (const host_interface_t* init);
-typedef int(*corehost_main_fn) (const int argc, const pal::char_t* argv[]);
-typedef int(*corehost_main_with_output_buffer_fn) (const int argc, const pal::char_t* argv[], pal::char_t buffer[], int32_t buffer_size, int32_t* required_buffer_size);
-typedef int(*corehost_unload_fn) ();
-
-int load_host_library_common(
- const pal::string_t& lib_dir,
- pal::string_t& host_path,
- pal::dll_t* h_host,
- corehost_load_fn* load_fn,
- corehost_unload_fn* unload_fn)
-{
- if (!library_exists_in_dir(lib_dir, LIBHOSTPOLICY_NAME, &host_path))
- {
- return StatusCode::CoreHostLibMissingFailure;
- }
-
- // Load library
- if (!pal::load_library(&host_path, h_host))
- {
- trace::info(_X("Load library of %s failed"), host_path.c_str());
- return StatusCode::CoreHostLibLoadFailure;
- }
-
- // Obtain entrypoint symbols
- *load_fn = (corehost_load_fn)pal::get_symbol(*h_host, "corehost_load");
- *unload_fn = (corehost_unload_fn)pal::get_symbol(*h_host, "corehost_unload");
-
- return (*load_fn != nullptr) && (*unload_fn != nullptr)
- ? StatusCode::Success
- : StatusCode::CoreHostEntryPointFailure;
-}
-
-int load_host_library(
- const pal::string_t& lib_dir,
- pal::dll_t* h_host,
- corehost_load_fn* load_fn,
- corehost_main_fn* main_fn,
- corehost_unload_fn* unload_fn)
-{
- pal::string_t host_path;
- int rc = load_host_library_common(lib_dir, host_path, h_host, load_fn, unload_fn);
- if (rc != StatusCode::Success)
- {
- return rc;
- }
-
- // Obtain entrypoint symbol
- *main_fn = (corehost_main_fn)pal::get_symbol(*h_host, "corehost_main");
-
- return (*main_fn != nullptr)
- ? StatusCode::Success
- : StatusCode::CoreHostEntryPointFailure;
-}
-
-int load_host_library_with_return(
- const pal::string_t& lib_dir,
- pal::dll_t* h_host,
- corehost_load_fn* load_fn,
- corehost_main_with_output_buffer_fn* main_fn,
- corehost_unload_fn* unload_fn)
-{
- pal::string_t host_path;
- int rc = load_host_library_common(lib_dir, host_path, h_host, load_fn, unload_fn);
- if (rc != StatusCode::Success)
- {
- return rc;
- }
-
- // Obtain entrypoint symbol
- *main_fn = (corehost_main_with_output_buffer_fn)pal::get_symbol(*h_host, "corehost_main_with_output_buffer");
-
- return (*main_fn != nullptr)
- ? StatusCode::Success
- : StatusCode::CoreHostEntryPointFailure;
-}
-
-int execute_app(
- const pal::string_t& impl_dll_dir,
- corehost_init_t* init,
- const int argc,
- const pal::char_t* argv[])
-{
- pal::dll_t corehost;
- corehost_main_fn host_main = nullptr;
- corehost_load_fn host_load = nullptr;
- corehost_unload_fn host_unload = nullptr;
-
- int code = load_host_library(impl_dll_dir, &corehost, &host_load, &host_main, &host_unload);
- if (code != StatusCode::Success)
- {
- trace::error(_X("An error occurred while loading required library %s from [%s]"), LIBHOSTPOLICY_NAME, impl_dll_dir.c_str());
- return code;
- }
-
- // Previous hostfxr trace messages must be printed before calling trace::setup in hostpolicy
- trace::flush();
-
- const host_interface_t& intf = init->get_host_init_data();
- if ((code = host_load(&intf)) == 0)
- {
- code = host_main(argc, argv);
- (void)host_unload();
- }
-
- pal::unload_library(corehost);
-
- return code;
-}
-
-int execute_host_command(
- const pal::string_t& impl_dll_dir,
- corehost_init_t* init,
- const int argc,
- const pal::char_t* argv[],
- pal::char_t result_buffer[],
- int32_t buffer_size,
- int32_t* required_buffer_size)
-{
- pal::dll_t corehost;
- corehost_main_with_output_buffer_fn host_main = nullptr;
- corehost_load_fn host_load = nullptr;
- corehost_unload_fn host_unload = nullptr;
-
- int code = load_host_library_with_return(impl_dll_dir, &corehost, &host_load, &host_main, &host_unload);
-
- if (code != StatusCode::Success)
- {
- trace::error(_X("An error occurred while loading required library %s from [%s] for a host command"), LIBHOSTPOLICY_NAME, impl_dll_dir.c_str());
- return code;
- }
-
- // Previous hostfxr trace messages must be printed before calling trace::setup in hostpolicy
- trace::flush();
-
- const host_interface_t& intf = init->get_host_init_data();
- if ((code = host_load(&intf)) == 0)
- {
- code = host_main(argc, argv, result_buffer, buffer_size, required_buffer_size);
- (void)host_unload();
- }
-
- pal::unload_library(corehost);
-
- return code;
-}
-
-SHARED_API int hostfxr_main_startupinfo(const int argc, const pal::char_t* argv[], const pal::char_t* host_path, const pal::char_t* dotnet_root, const pal::char_t* app_path)
-{
- trace::setup();
-
- trace::info(_X("--- Invoked hostfxr v2 [commit hash: %s] main"), _STRINGIFY(REPO_COMMIT_HASH));
-
- host_startup_info_t startup_info(host_path, dotnet_root, app_path);
-
- fx_muxer_t muxer;
- return muxer.execute(pal::string_t(), argc, argv, startup_info, nullptr, 0, nullptr);
-}
-
-SHARED_API int hostfxr_main(const int argc, const pal::char_t* argv[])
-{
- trace::setup();
-
- trace::info(_X("--- Invoked hostfxr [commit hash: %s] main"), _STRINGIFY(REPO_COMMIT_HASH));
-
- host_startup_info_t startup_info;
- startup_info.parse(argc, argv);
-
- fx_muxer_t muxer;
- return muxer.execute(pal::string_t(), argc, argv, startup_info, nullptr, 0, nullptr);
-}
-
-// [OBSOLETE] Replaced by hostfxr_resolve_sdk2
-//
-// Determines the directory location of the SDK accounting for
-// global.json and multi-level lookup policy.
-//
-// Invoked via MSBuild SDK resolver to locate SDK props and targets
-// from an msbuild other than the one bundled by the CLI.
-//
-// Parameters:
-// exe_dir
-// The main directory where SDKs are located in sdk\[version]
-// sub-folders. Pass the directory of a dotnet executable to
-// mimic how that executable would search in its own directory.
-// It is also valid to pass nullptr or empty, in which case
-// multi-level lookup can still search other locations if
-// it has not been disabled by the user's environment.
-//
-// working_dir
-// The directory where the search for global.json (which can
-// control the resolved SDK version) starts and proceeds
-// upwards.
-//
-// buffer
-// The buffer where the resolved SDK path will be written.
-//
-// buffer_size
-// The size of the buffer argument in pal::char_t units.
-//
-// Return value:
-// <0 - Invalid argument
-// 0 - SDK could not be found.
-// >0 - The number of characters (including null terminator)
-// required to store the located SDK.
-//
-// If resolution succeeds and the positive return value is less than
-// or equal to buffer_size (i.e. the the buffer is large enough),
-// then the resolved SDK path is copied to the buffer and null
-// terminated. Otherwise, no data is written to the buffer.
-//
-// String encoding:
-// Windows - UTF-16 (pal::char_t is 2 byte wchar_t)
-// Unix - UTF-8 (pal::char_t is 1 byte char)
-//
-SHARED_API int32_t hostfxr_resolve_sdk(
- const pal::char_t* exe_dir,
- const pal::char_t* working_dir,
- pal::char_t buffer[],
- int32_t buffer_size)
-{
- trace::setup();
-
- trace::info(_X("--- Invoked hostfxr [commit hash: %s] hostfxr_resolve_sdk"), _STRINGIFY(REPO_COMMIT_HASH));
-
- if (buffer_size < 0 || (buffer_size > 0 && buffer == nullptr))
- {
- trace::error(_X("hostfxr_resolve_sdk received an invalid argument."));
- return -1;
- }
-
- if (exe_dir == nullptr)
- {
- exe_dir = _X("");
- }
-
- if (working_dir == nullptr)
- {
- working_dir = _X("");
- }
-
- pal::string_t cli_sdk;
- if (!sdk_resolver_t::resolve_sdk_dotnet_path(exe_dir, working_dir, &cli_sdk))
- {
- // sdk_resolver_t::resolve_sdk_dotnet_path handles tracing for this error case.
- return 0;
- }
-
- if (cli_sdk.size() < buffer_size)
- {
- size_t length = cli_sdk.copy(buffer, buffer_size - 1);
- assert(length == cli_sdk.size());
- assert(length < buffer_size);
- buffer[length] = 0;
- }
- else
- {
- trace::info(_X("hostfxr_resolve_sdk received a buffer that is too small to hold the located SDK path."));
- }
-
- return cli_sdk.size() + 1;
-}
-
-enum hostfxr_resolve_sdk2_flags_t : int32_t
-{
- disallow_prerelease = 0x1,
-};
-
-enum class hostfxr_resolve_sdk2_result_key_t : int32_t
-{
- resolved_sdk_dir = 0,
- global_json_path = 1,
-};
-
-typedef void (*hostfxr_resolve_sdk2_result_fn)(
- hostfxr_resolve_sdk2_result_key_t key,
- const pal::char_t* value);
-
-//
-// Determines the directory location of the SDK accounting for
-// global.json and multi-level lookup policy.
-//
-// Invoked via MSBuild SDK resolver to locate SDK props and targets
-// from an msbuild other than the one bundled by the CLI.
-//
-// Parameters:
-// exe_dir
-// The main directory where SDKs are located in sdk\[version]
-// sub-folders. Pass the directory of a dotnet executable to
-// mimic how that executable would search in its own directory.
-// It is also valid to pass nullptr or empty, in which case
-// multi-level lookup can still search other locations if
-// it has not been disabled by the user's environment.
-//
-// working_dir
-// The directory where the search for global.json (which can
-// control the resolved SDK version) starts and proceeds
-// upwards.
-//
-// flags
-// Bitwise flags that influence resolution.
-// disallow_prerelease (0x1)
-// do not allow resolution to return a prerelease SDK version
-// unless prerelease version was specified via global.json.
-//
-// result
-// Callback invoked to return values. It can be invoked more
-// than once. String values passed are valid only for the
-// duration of a call.
-//
-// If resolution succeeds, result will be invoked with
-// resolved_sdk_dir key and the value will hold the
-// path to the resolved SDK director, otherwise it will
-// be null.
-//
-// If global.json is used then result will be invoked with
-// global_json_path key and the value will hold the path
-// to global.json. If there was no global.json found,
-// or the contents of global.json did not impact resolution
-// (e.g. no version specified), then result will not be
-// invoked with global_json_path key.
-//
-// Return value:
-// 0 on success, otherwise failure
-// 0x8000809b - SDK could not be resolved (SdkResolverResolveFailure)
-//
-// String encoding:
-// Windows - UTF-16 (pal::char_t is 2 byte wchar_t)
-// Unix - UTF-8 (pal::char_t is 1 byte char)
-//
-SHARED_API int32_t hostfxr_resolve_sdk2(
- const pal::char_t* exe_dir,
- const pal::char_t* working_dir,
- int32_t flags,
- hostfxr_resolve_sdk2_result_fn result)
-{
- trace::setup();
-
- trace::info(_X("--- Invoked hostfxr [commit hash: %s] hostfxr_resolve_sdk2"), _STRINGIFY(REPO_COMMIT_HASH));
-
- if (exe_dir == nullptr)
- {
- exe_dir = _X("");
- }
-
- if (working_dir == nullptr)
- {
- working_dir = _X("");
- }
-
- pal::string_t resolved_sdk_dir;
- pal::string_t global_json_path;
-
- bool success = sdk_resolver_t::resolve_sdk_dotnet_path(
- exe_dir,
- working_dir,
- &resolved_sdk_dir,
- (flags & hostfxr_resolve_sdk2_flags_t::disallow_prerelease) != 0,
- &global_json_path);
-
- if (success)
- {
- result(
- hostfxr_resolve_sdk2_result_key_t::resolved_sdk_dir,
- resolved_sdk_dir.c_str());
- }
-
- if (!global_json_path.empty())
- {
- result(
- hostfxr_resolve_sdk2_result_key_t::global_json_path,
- global_json_path.c_str());
- }
-
- return success
- ? StatusCode::Success
- : StatusCode::SdkResolverResolveFailure;
-}
-
-
-typedef void (*hostfxr_get_available_sdks_result_fn)(
- int32_t sdk_count,
- const pal::char_t *sdk_dirs[]);
-
-//
-// Returns the list of all available SDKs ordered by ascending version.
-//
-// Invoked by MSBuild resolver when the latest SDK used without global.json
-// present is incompatible with the current MSBuild version. It will select
-// the compatible SDK that is closest to the end of this list.
-//
-// Parameters:
-// exe_dir
-// The path to the dotnet executable.
-//
-// result
-// Callback invoke to return the list of SDKs by their directory paths.
-// String array and its elements are valid for the duration of the call.
-//
-// Return value:
-// 0 on success, otherwise failure
-//
-// String encoding:
-// Windows - UTF-16 (pal::char_t is 2 byte wchar_t)
-// Unix - UTF-8 (pal::char_t is 1 byte char)
-//
-SHARED_API int32_t hostfxr_get_available_sdks(
- const pal::char_t* exe_dir,
- hostfxr_get_available_sdks_result_fn result)
-{
- trace::setup();
-
- trace::info(_X("--- Invoked hostfxr [commit hash: %s] hostfxr_get_available_sdks"), _STRINGIFY(REPO_COMMIT_HASH));
-
- if (exe_dir == nullptr)
- {
- exe_dir = _X("");
- }
-
- std::vector sdk_infos;
- sdk_info::get_all_sdk_infos(exe_dir, &sdk_infos);
-
- if (sdk_infos.empty())
- {
- result(0, nullptr);
- }
- else
- {
- std::vector sdk_dirs;
- sdk_dirs.reserve(sdk_infos.size());
-
- for (const auto& sdk_info : sdk_infos)
- {
- sdk_dirs.push_back(sdk_info.full_path.c_str());
- }
-
- result(sdk_dirs.size(), &sdk_dirs[0]);
- }
-
- return StatusCode::Success;
-}
-
-//
-// Returns the native directories of the runtime based upon
-// the specified app.
-//
-// Returned format is a list of paths separated by PATH_SEPARATOR
-// which is a semicolon (;) on Windows and a colon (:) otherwise.
-// The returned string is null-terminated.
-//
-// Invoked from ASP.NET in order to help load a native assembly
-// before the clr is initialized (through a custom host).
-//
-// Parameters:
-// argc
-// The number of argv arguments
-//
-// argv
-// The standard arguments normally passed to dotnet.exe
-// for launching the application.
-//
-// buffer
-// The buffer where the native paths and null terminator
-// will be written.
-//
-// buffer_size
-// The size of the buffer argument in pal::char_t units.
-//
-// required_buffer_size
-// If the return value is HostApiBufferTooSmall, then
-// required_buffer_size is set to the minimium buffer
-// size necessary to contain the result including the
-// null terminator.
-//
-// Return value:
-// 0 on success, otherwise failure
-// 0x800080980 - Buffer is too small (HostApiBufferTooSmall)
-//
-// String encoding:
-// Windows - UTF-16 (pal::char_t is 2 byte wchar_t)
-// Unix - UTF-8 (pal::char_t is 1 byte char)
-//
-SHARED_API int32_t hostfxr_get_native_search_directories(const int argc, const pal::char_t* argv[], pal::char_t buffer[], int32_t buffer_size, int32_t* required_buffer_size)
-{
- trace::setup();
-
- trace::info(_X("--- Invoked hostfxr_get_native_search_directories [commit hash: %s] main"), _STRINGIFY(REPO_COMMIT_HASH));
-
- if (buffer_size < 0 || (buffer_size > 0 && buffer == nullptr) || required_buffer_size == nullptr)
- {
- trace::error(_X("hostfxr_get_native_search_directories received an invalid argument."));
- return InvalidArgFailure;
- }
-
- host_startup_info_t startup_info;
- startup_info.parse(argc, argv);
-
- fx_muxer_t muxer;
- int rc = muxer.execute(_X("get-native-search-directories"), argc, argv, startup_info, buffer, buffer_size, required_buffer_size);
- return rc;
-}
diff --git a/src/corehost/cli/fxr/sdk_info.cpp b/src/corehost/cli/fxr/sdk_info.cpp
deleted file mode 100644
index 86fa3afd83..0000000000
--- a/src/corehost/cli/fxr/sdk_info.cpp
+++ /dev/null
@@ -1,115 +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.
-
-#include
-#include "pal.h"
-#include "sdk_info.h"
-#include "trace.h"
-#include "utils.h"
-
-bool compare_by_version_ascending_then_hive_depth_descending(const sdk_info &a, const sdk_info &b)
-{
- if (a.version < b.version)
- {
- return true;
- }
-
- // With multi-level lookup enabled, it is possible to find two SDKs with
- // the same version. For that edge case, we make the ordering put SDKs
- // from farther away (global location) hives earlier than closer ones
- // (current dotnet exe location). Without this tie-breaker, the ordering
- // would be non-deterministic.
- //
- // Furthermore, nearer earlier than farther is so that the MSBuild resolver
- // can do a linear search from the end of the list to the front to find the
- // best compatible SDK.
- //
- // Example:
- // * dotnet dir has version 4.0, 5.0, 6.0
- // * global dir has 5.0
- // * 6.0 is incompatible with calling msbuild
- // * 5.0 is compatible with calling msbuild
- //
- // MSBuild should select 5.0 from dotnet dir (matching probe order) in muxer
- // and not 5.0 from global dir.
- if (a.version == b.version)
- {
- return a.hive_depth > b.hive_depth;
- }
-
- return false;
-}
-
-void sdk_info::get_all_sdk_infos(
- const pal::string_t& own_dir,
- std::vector* sdk_infos)
-{
- std::vector global_dirs;
- bool multilevel_lookup = multilevel_lookup_enabled();
-
- // own_dir contains DIR_SEPARATOR appended that we need to remove.
- pal::string_t own_dir_temp = own_dir;
- remove_trailing_dir_seperator(&own_dir_temp);
-
- std::vector hive_dir;
- hive_dir.push_back(own_dir_temp);
-
- if (multilevel_lookup && pal::get_global_dotnet_dirs(&global_dirs))
- {
- for (pal::string_t dir : global_dirs)
- {
- if (dir != own_dir_temp)
- {
- hive_dir.push_back(dir);
- }
- }
- }
-
- int32_t hive_depth = 0;
-
- for (pal::string_t dir : hive_dir)
- {
- auto base_dir = dir;
- trace::verbose(_X("Gathering SDK locations in [%s]"), base_dir.c_str());
-
- append_path(&base_dir, _X("sdk"));
-
- if (pal::directory_exists(base_dir))
- {
- std::vector versions;
- pal::readdir_onlydirectories(base_dir, &versions);
- for (const auto& ver : versions)
- {
- // Make sure we filter out any non-version folders.
- fx_ver_t parsed(-1, -1, -1);
- if (fx_ver_t::parse(ver, &parsed, false))
- {
- trace::verbose(_X("Found SDK version [%s]"), ver.c_str());
-
- auto full_dir = base_dir;
- append_path(&full_dir, ver.c_str());
-
- sdk_info info(base_dir, full_dir, parsed, hive_depth);
-
- sdk_infos->push_back(info);
- }
- }
- }
-
- hive_depth++;
- }
-
- std::sort(sdk_infos->begin(), sdk_infos->end(), compare_by_version_ascending_then_hive_depth_descending);
-}
-
-/*static*/ bool sdk_info::print_all_sdks(const pal::string_t& own_dir, const pal::string_t& leading_whitespace)
-{
- std::vector sdk_infos;
- get_all_sdk_infos(own_dir, &sdk_infos);
- for (sdk_info info : sdk_infos)
- {
- trace::println(_X("%s%s [%s]"), leading_whitespace.c_str(), info.version.as_str().c_str(), info.base_path.c_str());
- }
-
- return sdk_infos.size() > 0;
-}
diff --git a/src/corehost/cli/fxr/sdk_info.h b/src/corehost/cli/fxr/sdk_info.h
deleted file mode 100644
index 1c296fc7c2..0000000000
--- a/src/corehost/cli/fxr/sdk_info.h
+++ /dev/null
@@ -1,29 +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.
-
-#ifndef __SDK_INFO_H_
-#define __SDK_INFO_H_
-
-#include "libhost.h"
-
-struct sdk_info
-{
- sdk_info(const pal::string_t& base_path, const pal::string_t& full_path, const fx_ver_t& version, int32_t hive_depth)
- : base_path(base_path)
- , full_path(full_path)
- , version(version)
- , hive_depth(hive_depth) { }
-
- static void get_all_sdk_infos(
- const pal::string_t& own_dir,
- std::vector* sdk_infos);
-
- static bool print_all_sdks(const pal::string_t& own_dir, const pal::string_t& leading_whitespace);
-
- pal::string_t base_path;
- pal::string_t full_path;
- fx_ver_t version;
- int32_t hive_depth;
-};
-
-#endif // __SDK_INFO_H_
diff --git a/src/corehost/cli/fxr/sdk_resolver.cpp b/src/corehost/cli/fxr/sdk_resolver.cpp
deleted file mode 100644
index 0b070d889a..0000000000
--- a/src/corehost/cli/fxr/sdk_resolver.cpp
+++ /dev/null
@@ -1,274 +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.
-
-#include "sdk_resolver.h"
-
-#include "cpprest/json.h"
-#include "fx_ver.h"
-#include "trace.h"
-#include "utils.h"
-
-typedef web::json::value json_value;
-typedef web::json::object json_object;
-
-pal::string_t resolve_cli_version(const pal::string_t& global_json)
-{
- trace::verbose(_X("--- Resolving CLI version from global json [%s]"), global_json.c_str());
-
- pal::string_t retval;
- if (!pal::file_exists(global_json))
- {
- trace::verbose(_X("[%s] does not exist"), global_json.c_str());
- return retval;
- }
-
- pal::ifstream_t file(global_json);
- if (!file.good())
- {
- trace::verbose(_X("[%s] could not be opened"), global_json.c_str());
- return retval;
- }
-
- if (skip_utf8_bom(&file))
- {
- trace::verbose(_X("UTF-8 BOM skipped while reading [%s]"), global_json.c_str());
- }
-
- try
- {
- const auto root = json_value::parse(file);
- const auto& json = root.as_object();
- const auto sdk_iter = json.find(_X("sdk"));
- if (sdk_iter == json.end() || sdk_iter->second.is_null())
- {
- trace::verbose(_X("CLI '/sdk/version' field not present/null in [%s]"), global_json.c_str());
- return retval;
- }
-
- const auto& sdk_obj = sdk_iter->second.as_object();
- const auto ver_iter = sdk_obj.find(_X("version"));
- if (ver_iter == sdk_obj.end() || ver_iter->second.is_null())
- {
- trace::verbose(_X("CLI 'sdk/version' field not present/null in [%s]"), global_json.c_str());
- return retval;
- }
- retval = ver_iter->second.as_string();
- }
- catch (const std::exception& je)
- {
- pal::string_t jes;
- (void)pal::utf8_palstring(je.what(), &jes);
- trace::error(_X("A JSON parsing exception occurred in [%s]: %s"), global_json.c_str(), jes.c_str());
- }
- trace::verbose(_X("CLI version is [%s] in global json file [%s]"), retval.c_str(), global_json.c_str());
- return retval;
-}
-
-pal::string_t resolve_sdk_version(pal::string_t sdk_path, bool disallow_prerelease, pal::string_t global_cli_version)
-{
- fx_ver_t specified(-1, -1, -1);
-
- // Validate the global cli version if specified
- if (!global_cli_version.empty())
- {
- if (!fx_ver_t::parse(global_cli_version, &specified, false))
- {
- trace::error(_X("The specified SDK version '%s' could not be parsed"), global_cli_version.c_str());
- return pal::string_t();
- }
-
- // Always consider prereleases when the version specified in global.json is itself a prerelease
- if (specified.is_prerelease())
- {
- disallow_prerelease = false;
- }
- }
-
- trace::verbose(_X("--- Resolving SDK version from SDK dir [%s]"), sdk_path.c_str());
-
- pal::string_t retval;
- std::vector versions;
-
- pal::readdir_onlydirectories(sdk_path, &versions);
- fx_ver_t max_ver(-1, -1, -1);
- for (const auto& version : versions)
- {
- trace::verbose(_X("Considering version... [%s]"), version.c_str());
-
- fx_ver_t ver(-1, -1, -1);
- if (fx_ver_t::parse(version, &ver, disallow_prerelease))
- {
- if (global_cli_version.empty() ||
- // Pick the greatest version that differs only in the 'minor-patch' if a global cli version is specified.
- (ver.get_major() == specified.get_major() && ver.get_minor() == specified.get_minor() &&
- (ver.get_patch() / 100) == (specified.get_patch() / 100)))
- {
- max_ver = std::max(ver, max_ver);
- }
- }
- }
-
- pal::string_t max_ver_str = max_ver.as_str();
- append_path(&sdk_path, max_ver_str.c_str());
-
- trace::verbose(_X("Checking if resolved SDK dir [%s] exists"), sdk_path.c_str());
- if (pal::directory_exists(sdk_path))
- {
- trace::verbose(_X("Resolved SDK dir is [%s]"), sdk_path.c_str());
- retval = max_ver_str;
- }
-
- return retval;
-}
-
-bool sdk_resolver_t::resolve_sdk_dotnet_path(const pal::string_t& dotnet_root, pal::string_t* cli_sdk)
-{
- trace::verbose(_X("--- Resolving dotnet from working dir"));
- pal::string_t cwd;
- if (!pal::getcwd(&cwd))
- {
- trace::verbose(_X("Failed to obtain current working dir"));
- assert(cwd.empty());
- }
-
- return resolve_sdk_dotnet_path(dotnet_root, cwd, cli_sdk);
-}
-
-bool higher_sdk_version(const pal::string_t& new_version, pal::string_t* version)
-{
- bool disallow_prerelease = false;
- bool retval = false;
- fx_ver_t ver(-1, -1, -1);
- fx_ver_t new_ver(-1, -1, -1);
-
- if (fx_ver_t::parse(new_version, &new_ver, disallow_prerelease))
- {
- if (!fx_ver_t::parse(*version, &ver, disallow_prerelease) || (new_ver > ver))
- {
- version->assign(new_version);
- retval = true;
- }
- }
-
- return retval;
-}
-
-bool sdk_resolver_t::resolve_sdk_dotnet_path(
- const pal::string_t& dotnet_root,
- const pal::string_t& cwd,
- pal::string_t* cli_sdk,
- bool disallow_prerelease,
- pal::string_t* global_json_path)
-{
- pal::string_t global;
-
- if (!cwd.empty())
- {
- for (pal::string_t parent_dir, cur_dir = cwd; true; cur_dir = parent_dir)
- {
- pal::string_t file = cur_dir;
- append_path(&file, _X("global.json"));
-
- trace::verbose(_X("Probing path [%s] for global.json"), file.c_str());
- if (pal::file_exists(file))
- {
- global = file;
- trace::verbose(_X("Found global.json [%s]"), global.c_str());
- break;
- }
- parent_dir = get_directory(cur_dir);
- if (parent_dir.empty() || parent_dir.size() == cur_dir.size())
- {
- trace::verbose(_X("Terminating global.json search at [%s]"), parent_dir.c_str());
- break;
- }
- }
- }
-
- std::vector hive_dir;
- std::vector global_dirs;
- bool multilevel_lookup = multilevel_lookup_enabled();
-
- if (!dotnet_root.empty())
- {
- hive_dir.push_back(dotnet_root);
- }
-
- if (multilevel_lookup && pal::get_global_dotnet_dirs(&global_dirs))
- {
- for (pal::string_t dir : global_dirs)
- {
- hive_dir.push_back(dir);
- }
- }
-
- pal::string_t cli_version;
- pal::string_t sdk_path;
- pal::string_t global_cli_version;
-
- if (!global.empty())
- {
- global_cli_version = resolve_cli_version(global);
- }
-
- for (pal::string_t dir : hive_dir)
- {
- trace::verbose(_X("Searching SDK directory in [%s]"), dir.c_str());
- pal::string_t current_sdk_path = dir;
- append_path(¤t_sdk_path, _X("sdk"));
-
- if (global_cli_version.empty())
- {
- pal::string_t new_cli_version = resolve_sdk_version(current_sdk_path, disallow_prerelease, global_cli_version);
- if (higher_sdk_version(new_cli_version, &cli_version))
- {
- sdk_path = current_sdk_path;
- }
- }
- else
- {
- if (global_json_path != nullptr)
- {
- global_json_path->assign(global);
- }
-
- pal::string_t probing_sdk_path = current_sdk_path;
- append_path(&probing_sdk_path, global_cli_version.c_str());
-
- if (pal::directory_exists(probing_sdk_path))
- {
- trace::verbose(_X("CLI directory [%s] from global.json exists"), probing_sdk_path.c_str());
- cli_version = global_cli_version;
- sdk_path = current_sdk_path;
- // Use the first matching version
- break;
- }
- else
- {
- pal::string_t new_cli_version = resolve_sdk_version(current_sdk_path, disallow_prerelease, global_cli_version);
- if (higher_sdk_version(new_cli_version, &cli_version))
- {
- sdk_path = current_sdk_path;
- }
- }
- }
- }
-
- if (!cli_version.empty())
- {
- append_path(&sdk_path, cli_version.c_str());
- cli_sdk->assign(sdk_path);
- trace::verbose(_X("Found CLI SDK in: %s"), cli_sdk->c_str());
- return true;
- }
-
- if (global_cli_version.empty())
- {
- trace::verbose(_X("It was not possible to find any SDK version"));
- }
- else
- {
- trace::error(_X("A compatible SDK version for global.json version: [%s] from [%s] was not found"), global_cli_version.c_str(), global.c_str());
- }
- return false;
-}
diff --git a/src/corehost/cli/fxr/sdk_resolver.h b/src/corehost/cli/fxr/sdk_resolver.h
deleted file mode 100644
index 1e5da8c3ec..0000000000
--- a/src/corehost/cli/fxr/sdk_resolver.h
+++ /dev/null
@@ -1,19 +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.
-
-#include "pal.h"
-
-class sdk_resolver_t
-{
-public:
- static bool resolve_sdk_dotnet_path(
- const pal::string_t& dotnet_root,
- pal::string_t* cli_sdk);
-
- static bool resolve_sdk_dotnet_path(
- const pal::string_t& dotnet_root,
- const pal::string_t& cwd,
- pal::string_t* cli_sdk,
- bool disallow_prerelease = false,
- pal::string_t* global_json_path = nullptr);
-};
diff --git a/src/corehost/cli/host_startup_info.cpp b/src/corehost/cli/host_startup_info.cpp
deleted file mode 100644
index 9730b05a4b..0000000000
--- a/src/corehost/cli/host_startup_info.cpp
+++ /dev/null
@@ -1,92 +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.
-
-#include "error_codes.h"
-#include "host_startup_info.h"
-#include "pal.h"
-#include "trace.h"
-#include "utils.h"
-
-host_startup_info_t::host_startup_info_t(
- const pal::char_t* host_path_value,
- const pal::char_t* dotnet_root_value,
- const pal::char_t* app_path_value)
- : host_path(host_path_value)
- , dotnet_root(dotnet_root_value)
- , app_path(app_path_value) {}
-
-// Determine if string is a valid path, and if so then fix up by using realpath()
-bool get_path_from_argv(pal::string_t *path)
-{
- // Assume all paths will have at least one separator. We want to detect path vs. file before calling realpath
- // because realpath will expand a filename into a full path containing the current directory which may be
- // the wrong location when filename ends up being found in %PATH% and not the current directory.
- if (path->find(DIR_SEPARATOR) != pal::string_t::npos)
- {
- return pal::realpath(path);
- }
-
- return false;
-}
-
-int host_startup_info_t::parse(
- int argc,
- const pal::char_t* argv[])
-{
- // Get host_path
- get_host_path(argc, argv, &host_path);
-
- // Get dotnet_root
- dotnet_root.assign(get_directory(host_path));
-
- // Get app_path
- app_path.assign(dotnet_root);
- pal::string_t app_name = get_filename(strip_executable_ext(host_path));
- append_path(&app_path, app_name.c_str());
- app_path.append(_X(".dll"));
-
- trace::info(_X("Host path: [%s]"), host_path.c_str());
- trace::info(_X("Dotnet path: [%s]"), dotnet_root.c_str());
- trace::info(_X("App path: [%s]"), app_path.c_str());
- return 0;
-}
-
-const bool host_startup_info_t::is_valid() const
-{
- return (
- !host_path.empty() &&
- !dotnet_root.empty() &&
- !app_path.empty());
-}
-
-const pal::string_t host_startup_info_t::get_app_name() const
-{
- return get_filename(strip_file_ext(app_path));
-}
-
-/*static*/ int host_startup_info_t::get_host_path(int argc, const pal::char_t* argv[], pal::string_t* host_path)
-{
- // Attempt to get host_path from argv[0] as to allow for hosts located elsewhere
- if (argc >= 1)
- {
- host_path->assign(argv[0]);
- if (!host_path->empty())
- {
- trace::info(_X("Attempting to use argv[0] as path [%s]"), host_path->c_str());
- if (!get_path_from_argv(host_path))
- {
- trace::warning(_X("Failed to resolve argv[0] as path [%s]. Using location of current executable instead."), host_path->c_str());
- host_path->clear();
- }
- }
- }
-
- // If argv[0] did not work, get the executable name
- if (host_path->empty() && (!pal::get_own_executable_path(host_path) || !pal::realpath(host_path)))
- {
- trace::error(_X("Failed to resolve full path of the current executable [%s]"), host_path->c_str());
- return StatusCode::LibHostCurExeFindFailure;
- }
-
- return 0;
-}
diff --git a/src/corehost/cli/host_startup_info.h b/src/corehost/cli/host_startup_info.h
deleted file mode 100644
index 97bef5a5f8..0000000000
--- a/src/corehost/cli/host_startup_info.h
+++ /dev/null
@@ -1,32 +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.
-
-#ifndef __HOST_STARTUP_INFO_H_
-#define __HOST_STARTUP_INFO_H_
-
-#include "pal.h"
-
-struct host_startup_info_t
-{
- host_startup_info_t() {}
- host_startup_info_t(
- const pal::char_t* host_path_value,
- const pal::char_t* dotnet_root_value,
- const pal::char_t* app_path_value);
-
- int parse(
- int argc,
- const pal::char_t* argv[]);
-
- const bool is_valid() const;
-
- const pal::string_t get_app_name() const;
-
- static int get_host_path(int argc, const pal::char_t* argv[], pal::string_t* host_path);
-
- pal::string_t host_path; // The path to the current executable.
- pal::string_t dotnet_root; // The path to the framework.
- pal::string_t app_path; // For apphost, the path to the app dll; for muxer, not applicable as this information is not yet parsed.
-};
-
-#endif // __HOST_STARTUP_INFO_H_
diff --git a/src/corehost/cli/hostpolicy.cpp b/src/corehost/cli/hostpolicy.cpp
deleted file mode 100644
index 9ebba3ef36..0000000000
--- a/src/corehost/cli/hostpolicy.cpp
+++ /dev/null
@@ -1,436 +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.
-
-#include "pal.h"
-#include "args.h"
-#include "trace.h"
-#include "deps_resolver.h"
-#include "fx_muxer.h"
-#include "utils.h"
-#include "coreclr.h"
-#include "cpprest/json.h"
-#include "libhost.h"
-#include "error_codes.h"
-#include "breadcrumbs.h"
-#include "host_startup_info.h"
-
-hostpolicy_init_t g_init;
-
-int run(const arguments_t& args, pal::string_t* out_host_command_result = nullptr)
-{
- // Load the deps resolver
- deps_resolver_t resolver(g_init, args);
-
- pal::string_t resolver_errors;
- if (!resolver.valid(&resolver_errors))
- {
- trace::error(_X("Error initializing the dependency resolver: %s"), resolver_errors.c_str());
- return StatusCode::ResolverInitFailure;
- }
-
- // Setup breadcrumbs. Breadcrumbs are not enabled for API calls because they do not execute
- // the app and may be re-entry
- probe_paths_t probe_paths;
- std::unordered_set breadcrumbs;
- bool breadcrumbs_enabled = (out_host_command_result == nullptr);
- if (breadcrumbs_enabled)
- {
- pal::string_t policy_name = _STRINGIFY(HOST_POLICY_PKG_NAME);
- pal::string_t policy_version = _STRINGIFY(HOST_POLICY_PKG_VER);
-
- // Always insert the hostpolicy that the code is running on.
- breadcrumbs.insert(policy_name);
- breadcrumbs.insert(policy_name + _X(",") + policy_version);
-
- if (!resolver.resolve_probe_paths(&probe_paths, &breadcrumbs))
- {
- return StatusCode::ResolverResolveFailure;
- }
- }
- else
- {
- if (!resolver.resolve_probe_paths(&probe_paths, nullptr))
- {
- return StatusCode::ResolverResolveFailure;
- }
- }
-
- pal::string_t clr_path = probe_paths.coreclr;
- if (clr_path.empty() || !pal::realpath(&clr_path))
- {
- trace::error(_X("Could not resolve CoreCLR path. For more details, enable tracing by setting COREHOST_TRACE environment variable to 1"));;
- return StatusCode::CoreClrResolveFailure;
- }
-
- // Get path in which CoreCLR is present.
- pal::string_t clr_dir = get_directory(clr_path);
-
- // System.Private.CoreLib.dll is expected to be next to CoreCLR.dll - add its path to the TPA list.
- pal::string_t corelib_path = clr_dir;
- append_path(&corelib_path, CORELIB_NAME);
-
- // Append CoreLib path
- if (probe_paths.tpa.back() != PATH_SEPARATOR)
- {
- probe_paths.tpa.push_back(PATH_SEPARATOR);
- }
-
- probe_paths.tpa.append(corelib_path);
- probe_paths.tpa.push_back(PATH_SEPARATOR);
-
- pal::string_t clrjit_path = probe_paths.clrjit;
- if (clrjit_path.empty())
- {
- trace::warning(_X("Could not resolve CLRJit path"));
- }
- else if (pal::realpath(&clrjit_path))
- {
- trace::verbose(_X("The resolved JIT path is '%s'"), clrjit_path.c_str());
- }
- else
- {
- clrjit_path.clear();
- trace::warning(_X("Could not resolve symlink to CLRJit path '%s'"), probe_paths.clrjit.c_str());
- }
-
- // Build CoreCLR properties
- std::vector property_keys = {
- "TRUSTED_PLATFORM_ASSEMBLIES",
- "NATIVE_DLL_SEARCH_DIRECTORIES",
- "PLATFORM_RESOURCE_ROOTS",
- "AppDomainCompatSwitch",
- // Workaround: mscorlib does not resolve symlinks for AppContext.BaseDirectory dotnet/coreclr/issues/2128
- "APP_CONTEXT_BASE_DIRECTORY",
- "APP_CONTEXT_DEPS_FILES",
- "FX_DEPS_FILE",
- "PROBING_DIRECTORIES"
- };
-
- // Note: these variables' lifetime should be longer than coreclr_initialize.
- std::vector tpa_paths_cstr, app_base_cstr, native_dirs_cstr, resources_dirs_cstr, fx_deps, deps, clrjit_path_cstr, probe_directories;
- pal::pal_clrstring(probe_paths.tpa, &tpa_paths_cstr);
- pal::pal_clrstring(args.app_root, &app_base_cstr);
- pal::pal_clrstring(probe_paths.native, &native_dirs_cstr);
- pal::pal_clrstring(probe_paths.resources, &resources_dirs_cstr);
-
- pal::string_t fx_deps_str;
- if (resolver.get_fx_definitions().size() >= 2)
- {
- // Use the root fx to define FX_DEPS_FILE
- fx_deps_str = get_root_framework(resolver.get_fx_definitions()).get_deps_file();
- }
- pal::pal_clrstring(fx_deps_str, &fx_deps);
-
- // Get all deps files
- pal::string_t allDeps;
- for (int i = 0; i < resolver.get_fx_definitions().size(); ++i)
- {
- allDeps += resolver.get_fx_definitions()[i]->get_deps_file();
- if (i < resolver.get_fx_definitions().size() - 1)
- {
- allDeps += _X(";");
- }
- }
- pal::pal_clrstring(allDeps, &deps);
-
- pal::pal_clrstring(resolver.get_lookup_probe_directories(), &probe_directories);
-
- std::vector property_values = {
- // TRUSTED_PLATFORM_ASSEMBLIES
- tpa_paths_cstr.data(),
- // NATIVE_DLL_SEARCH_DIRECTORIES
- native_dirs_cstr.data(),
- // PLATFORM_RESOURCE_ROOTS
- resources_dirs_cstr.data(),
- // AppDomainCompatSwitch
- "UseLatestBehaviorWhenTFMNotSpecified",
- // APP_CONTEXT_BASE_DIRECTORY
- app_base_cstr.data(),
- // APP_CONTEXT_DEPS_FILES,
- deps.data(),
- // FX_DEPS_FILE
- fx_deps.data(),
- //PROBING_DIRECTORIES
- probe_directories.data()
- };
-
- if (!clrjit_path.empty())
- {
- pal::pal_clrstring(clrjit_path, &clrjit_path_cstr);
- property_keys.push_back("JIT_PATH");
- property_values.push_back(clrjit_path_cstr.data());
- }
-
- bool set_app_paths = false;
-
- // Runtime options config properties.
- for (int i = 0; i < g_init.cfg_keys.size(); ++i)
- {
- // Provide opt-in compatible behavior by using the switch to set APP_PATHS
- if (pal::cstrcasecmp(g_init.cfg_keys[i].data(), "Microsoft.NETCore.DotNetHostPolicy.SetAppPaths") == 0)
- {
- set_app_paths = (pal::cstrcasecmp(g_init.cfg_values[i].data(), "true") == 0);
- }
-
- property_keys.push_back(g_init.cfg_keys[i].data());
- property_values.push_back(g_init.cfg_values[i].data());
- }
-
- // App paths and App NI paths
- if (set_app_paths)
- {
- property_keys.push_back("APP_PATHS");
- property_keys.push_back("APP_NI_PATHS");
- property_values.push_back(app_base_cstr.data());
- property_values.push_back(app_base_cstr.data());
- }
-
- size_t property_size = property_keys.size();
- assert(property_keys.size() == property_values.size());
-
- unsigned int exit_code = 1;
-
- // Check for host command(s)
- if (pal::strcasecmp(g_init.host_command.c_str(), _X("get-native-search-directories")) == 0)
- {
- // Verify property_keys[1] contains the correct information
- if (pal::cstrcasecmp(property_keys[1], "NATIVE_DLL_SEARCH_DIRECTORIES"))
- {
- trace::error(_X("get-native-search-directories failed to find NATIVE_DLL_SEARCH_DIRECTORIES property"));
- exit_code = HostApiFailed;
- }
- else
- {
- assert(out_host_command_result != nullptr);
- pal::clr_palstring(property_values[1], out_host_command_result);
- exit_code = 0; // Success
- }
-
- return exit_code;
- }
-
- // Bind CoreCLR
- trace::verbose(_X("CoreCLR path = '%s', CoreCLR dir = '%s'"), clr_path.c_str(), clr_dir.c_str());
- if (!coreclr::bind(clr_dir))
- {
- trace::error(_X("Failed to bind to CoreCLR at '%s'"), clr_path.c_str());
- return StatusCode::CoreClrBindFailure;
- }
-
- // Verbose logging
- if (trace::is_enabled())
- {
- for (size_t i = 0; i < property_size; ++i)
- {
- pal::string_t key, val;
- pal::clr_palstring(property_keys[i], &key);
- pal::clr_palstring(property_values[i], &val);
- trace::verbose(_X("Property %s = %s"), key.c_str(), val.c_str());
- }
- }
-
- std::vector host_path;
- pal::pal_clrstring(args.host_path, &host_path);
-
- // Initialize CoreCLR
- coreclr::host_handle_t host_handle;
- coreclr::domain_id_t domain_id;
- auto hr = coreclr::initialize(
- host_path.data(),
- "clrhost",
- property_keys.data(),
- property_values.data(),
- property_size,
- &host_handle,
- &domain_id);
- if (!SUCCEEDED(hr))
- {
- trace::error(_X("Failed to initialize CoreCLR, HRESULT: 0x%X"), hr);
- return StatusCode::CoreClrInitFailure;
- }
-
- // Initialize clr strings for arguments
- std::vector> argv_strs(args.app_argc);
- std::vector argv(args.app_argc);
- for (int i = 0; i < args.app_argc; i++)
- {
- pal::pal_clrstring(args.app_argv[i], &argv_strs[i]);
- argv[i] = argv_strs[i].data();
- }
-
- if (trace::is_enabled())
- {
- pal::string_t arg_str;
- for (int i = 0; i < argv.size(); i++)
- {
- pal::string_t cur;
- pal::clr_palstring(argv[i], &cur);
- arg_str.append(cur);
- arg_str.append(_X(","));
- }
- trace::info(_X("Launch host: %s, app: %s, argc: %d, args: %s"), args.host_path.c_str(),
- args.managed_application.c_str(), args.app_argc, arg_str.c_str());
- }
-
- std::vector managed_app;
- pal::pal_clrstring(args.managed_application, &managed_app);
-
- breadcrumb_writer_t writer(&breadcrumbs);
- if (breadcrumbs_enabled)
- {
- // Leave breadcrumbs for servicing.
- writer.begin_write();
- }
-
- // Previous hostpolicy trace messages must be printed before executing assembly
- trace::flush();
-
- // Execute the application
- hr = coreclr::execute_assembly(
- host_handle,
- domain_id,
- argv.size(),
- argv.data(),
- managed_app.data(),
- &exit_code);
-
- if (!SUCCEEDED(hr))
- {
- trace::error(_X("Failed to execute managed app, HRESULT: 0x%X"), hr);
- return StatusCode::CoreClrExeFailure;
- }
-
- // Shut down the CoreCLR
- hr = coreclr::shutdown(host_handle, domain_id, (int*)&exit_code);
- if (!SUCCEEDED(hr))
- {
- trace::warning(_X("Failed to shut down CoreCLR, HRESULT: 0x%X"), hr);
- }
-
- coreclr::unload();
-
- if (breadcrumbs_enabled)
- {
- // Finish breadcrumb writing
- writer.end_write();
- }
-
- return exit_code;
-}
-
-SHARED_API int corehost_load(host_interface_t* init)
-{
- trace::setup();
-
- // Re-initialize global state in case of re-entry
- g_init = hostpolicy_init_t();
-
- if (!hostpolicy_init_t::init(init, &g_init))
- {
- return StatusCode::LibHostInitFailure;
- }
-
- return 0;
-}
-
-int corehost_main_init(const int argc, const pal::char_t* argv[], const pal::string_t location, arguments_t& args)
-{
- if (trace::is_enabled())
- {
- trace::info(_X("--- Invoked hostpolicy %s[commit hash: %s] [%s,%s,%s][%s] main = {"),
- location.c_str(),
- _STRINGIFY(REPO_COMMIT_HASH),
- _STRINGIFY(HOST_POLICY_PKG_NAME),
- _STRINGIFY(HOST_POLICY_PKG_VER),
- _STRINGIFY(HOST_POLICY_PKG_REL_DIR),
- get_arch());
-
- for (int i = 0; i < argc; ++i)
- {
- trace::info(_X("%s"), argv[i]);
- }
- trace::info(_X("}"));
-
- trace::info(_X("Deps file: %s"), g_init.deps_file.c_str());
- for (const auto& probe : g_init.probe_paths)
- {
- trace::info(_X("Additional probe dir: %s"), probe.c_str());
- }
- }
-
- // Take care of arguments
- if (!g_init.host_info.is_valid())
- {
- // For backwards compat (older hostfxr), default the host_info
- g_init.host_info.parse(argc, argv);
- }
-
- if (!parse_arguments(g_init, argc, argv, &args))
- {
- return StatusCode::LibHostInvalidArgs;
- }
- if (trace::is_enabled())
- {
- args.print();
- }
-
- return 0;
-}
-
-SHARED_API int corehost_main(const int argc, const pal::char_t* argv[])
-{
- arguments_t args;
- int rc = corehost_main_init(argc, argv, _X(""), args);
- if (!rc)
- {
- rc = run(args);
- }
-
- return rc;
-}
-
-SHARED_API int corehost_main_with_output_buffer(const int argc, const pal::char_t* argv[], pal::char_t buffer[], int32_t buffer_size, int32_t* required_buffer_size)
-{
- arguments_t args;
-
- int rc = corehost_main_init(argc, argv, _X("corehost_main_with_output_buffer "), args);
- if (!rc)
- {
- if (g_init.host_command == _X("get-native-search-directories"))
- {
- pal::string_t output_string;
- rc = run(args, &output_string);
- if (!rc)
- {
- // Get length in character count not including null terminator
- int len = output_string.length();
-
- if (len + 1 > buffer_size)
- {
- rc = HostApiBufferTooSmall;
- *required_buffer_size = len + 1;
- trace::info(_X("get-native-search-directories failed with buffer too small"), output_string.c_str());
- }
- else
- {
- output_string.copy(buffer, len);
- buffer[len] = '\0';
- *required_buffer_size = 0;
- trace::info(_X("get-native-search-directories success: %s"), output_string.c_str());
- }
- }
- }
- else
- {
- trace::error(_X("Unknown command: %s"), g_init.host_command.c_str());
- rc = LibHostUnknownCommand;
- }
- }
-
- return rc;
-}
-
-SHARED_API int corehost_unload()
-{
- return 0;
-}
diff --git a/src/corehost/cli/json/casablanca/include/cpprest/asyncrt_utils.h b/src/corehost/cli/json/casablanca/include/cpprest/asyncrt_utils.h
deleted file mode 100644
index dc87045a4e..0000000000
--- a/src/corehost/cli/json/casablanca/include/cpprest/asyncrt_utils.h
+++ /dev/null
@@ -1,597 +0,0 @@
-/***
-* ==++==
-*
-* Copyright (c) Microsoft Corporation. All rights reserved.
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*
-* ==--==
-* =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
-*
-* Various common utilities.
-*
-* For the latest on this and related APIs, please see: https://github.com/Microsoft/cpprestsdk
-*
-* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-****/
-
-#pragma once
-
-#include
-#include
-#include
-#include
-#include
-#include
-
-#include "cpprest/details/basic_types.h"
-
-#if !defined(_WIN32) || (_MSC_VER >= 1700)
-#include
-#endif
-
-#ifndef _WIN32
-#include
-#endif
-
-/// Various utilities for string conversions and date and time manipulation.
-namespace utility
-{
-
-// Left over from VS2010 support, remains to avoid breaking.
-typedef std::chrono::seconds seconds;
-
-/// Functions for converting to/from std::chrono::seconds to xml string.
-namespace timespan
-{
- ///
- /// Converts a timespan/interval in seconds to xml duration string as specified by
- /// http://www.w3.org/TR/xmlschema-2/#duration
- ///
- _ASYNCRTIMP utility::string_t __cdecl seconds_to_xml_duration(utility::seconds numSecs);
-
- ///
- /// Converts an xml duration to timespan/interval in seconds
- /// http://www.w3.org/TR/xmlschema-2/#duration
- ///
- _ASYNCRTIMP utility::seconds __cdecl xml_duration_to_seconds(const utility::string_t ×panString);
-}
-
-/// Functions for Unicode string conversions.
-namespace conversions
-{
- ///
- /// Converts a UTF-16 string to a UTF-8 string.
- ///
- /// A two byte character UTF-16 string.
- /// A single byte character UTF-8 string.
- _ASYNCRTIMP std::string __cdecl utf16_to_utf8(const utf16string &w);
-
- ///
- /// Converts a UTF-8 string to a UTF-16
- ///
- /// A single byte character UTF-8 string.
- /// A two byte character UTF-16 string.
- _ASYNCRTIMP utf16string __cdecl utf8_to_utf16(const std::string &s);
-
- ///
- /// Converts a ASCII (us-ascii) string to a UTF-16 string.
- ///
- /// A single byte character us-ascii string.
- /// A two byte character UTF-16 string.
- _ASYNCRTIMP utf16string __cdecl usascii_to_utf16(const std::string &s);
-
- ///
- /// Converts a Latin1 (iso-8859-1) string to a UTF-16 string.
- ///
- /// A single byte character UTF-8 string.
- /// A two byte character UTF-16 string.
- _ASYNCRTIMP utf16string __cdecl latin1_to_utf16(const std::string &s);
-
- ///
- /// Converts a Latin1 (iso-8859-1) string to a UTF-8 string.
- ///
- /// A single byte character UTF-8 string.
- /// A single byte character UTF-8 string.
- _ASYNCRTIMP utf8string __cdecl latin1_to_utf8(const std::string &s);
-
- ///
- /// Converts to a platform dependent Unicode string type.
- ///
- /// A single byte character UTF-8 string.
- /// A platform dependent string type.
- _ASYNCRTIMP utility::string_t __cdecl to_string_t(std::string &&s);
-
- ///
- /// Converts to a platform dependent Unicode string type.
- ///
- /// A two byte character UTF-16 string.
- /// A platform dependent string type.
- _ASYNCRTIMP utility::string_t __cdecl to_string_t(utf16string &&s);
-
- ///
- /// Converts to a platform dependent Unicode string type.
- ///
- /// A single byte character UTF-8 string.
- /// A platform dependent string type.
- _ASYNCRTIMP utility::string_t __cdecl to_string_t(const std::string &s);
-
- ///
- /// Converts to a platform dependent Unicode string type.
- ///
- /// A two byte character UTF-16 string.
- /// A platform dependent string type.
- _ASYNCRTIMP utility::string_t __cdecl to_string_t(const utf16string &s);
-
- ///
- /// Converts to a UTF-16 from string.
- ///
- /// A single byte character UTF-8 string.
- /// A two byte character UTF-16 string.
- _ASYNCRTIMP utf16string __cdecl to_utf16string(const std::string &value);
-
- ///
- /// Converts to a UTF-16 from string.
- ///
- /// A two byte character UTF-16 string.
- /// A two byte character UTF-16 string.
- _ASYNCRTIMP utf16string __cdecl to_utf16string(utf16string value);
-
- ///
- /// Converts to a UTF-8 string.
- ///
- /// A single byte character UTF-8 string.
- /// A single byte character UTF-8 string.
- _ASYNCRTIMP std::string __cdecl to_utf8string(std::string value);
-
- ///
- /// Converts to a UTF-8 string.
- ///
- /// A two byte character UTF-16 string.
- /// A single byte character UTF-8 string.
- _ASYNCRTIMP std::string __cdecl to_utf8string(const utf16string &value);
-
- ///
- /// Encode the given byte array into a base64 string
- ///
- _ASYNCRTIMP utility::string_t __cdecl to_base64(const std::vector& data);
-
- ///
- /// Encode the given 8-byte integer into a base64 string
- ///
- _ASYNCRTIMP utility::string_t __cdecl to_base64(uint64_t data);
-
- ///
- /// Decode the given base64 string to a byte array
- ///
- _ASYNCRTIMP std::vector __cdecl from_base64(const utility::string_t& str);
-
- template
- utility::string_t print_string(const Source &val, const std::locale &loc)
- {
- utility::ostringstream_t oss;
- oss.imbue(loc);
- oss << val;
- if (oss.bad())
- {
- throw std::bad_cast();
- }
- return oss.str();
- }
-
- template
- utility::string_t print_string(const Source &val)
- {
- return print_string(val, std::locale());
- }
-
- template
- Target scan_string(const utility::string_t &str, const std::locale &loc)
- {
- Target t;
- utility::istringstream_t iss(str);
- iss.imbue(loc);
- iss >> t;
- if (iss.bad())
- {
- throw std::bad_cast();
- }
- return t;
- }
-
- template
- Target scan_string(const utility::string_t &str)
- {
- return scan_string(str, std::locale());
- }
-}
-
-namespace details
-{
- ///
- /// Cross platform RAII container for setting thread local locale.
- ///
- class scoped_c_thread_locale
- {
- public:
- _ASYNCRTIMP scoped_c_thread_locale();
- _ASYNCRTIMP ~scoped_c_thread_locale();
-
-#if !defined(ANDROID) && !defined(__ANDROID__) // CodePlex 269
-#ifdef _WIN32
- typedef _locale_t xplat_locale;
-#else
- typedef locale_t xplat_locale;
-#endif
-
- static _ASYNCRTIMP xplat_locale __cdecl c_locale();
-#endif
- private:
-#ifdef _WIN32
- std::string m_prevLocale;
- int m_prevThreadSetting;
-#elif !(defined(ANDROID) || defined(__ANDROID__))
- locale_t m_prevLocale;
-#endif
- scoped_c_thread_locale(const scoped_c_thread_locale &);
- scoped_c_thread_locale & operator=(const scoped_c_thread_locale &);
- };
-
- ///
- /// Our own implementation of alpha numeric instead of std::isalnum to avoid
- /// taking global lock for performance reasons.
- ///
- inline bool __cdecl is_alnum(char ch)
- {
- return (ch >= '0' && ch <= '9')
- || (ch >= 'A' && ch <= 'Z')
- || (ch >= 'a' && ch <= 'z');
- }
-
- ///
- /// Simplistic implementation of make_unique. A better implementation would be based on variadic templates
- /// and therefore not be compatible with Dev10.
- ///
- template
- std::unique_ptr<_Type> make_unique() {
- return std::unique_ptr<_Type>(new _Type());
- }
-
- template
- std::unique_ptr<_Type> make_unique(_Arg1&& arg1) {
- return std::unique_ptr<_Type>(new _Type(std::forward<_Arg1>(arg1)));
- }
-
- template
- std::unique_ptr<_Type> make_unique(_Arg1&& arg1, _Arg2&& arg2) {
- return std::unique_ptr<_Type>(new _Type(std::forward<_Arg1>(arg1), std::forward<_Arg2>(arg2)));
- }
-
- template
- std::unique_ptr<_Type> make_unique(_Arg1&& arg1, _Arg2&& arg2, _Arg3&& arg3) {
- return std::unique_ptr<_Type>(new _Type(std::forward<_Arg1>(arg1), std::forward<_Arg2>(arg2), std::forward<_Arg3>(arg3)));
- }
-
- template
- std::unique_ptr<_Type> make_unique(_Arg1&& arg1, _Arg2&& arg2, _Arg3&& arg3, _Arg4&& arg4) {
- return std::unique_ptr<_Type>(new _Type(std::forward<_Arg1>(arg1), std::forward<_Arg2>(arg2), std::forward<_Arg3>(arg3), std::forward<_Arg4>(arg4)));
- }
-
- ///
- /// Cross platform utility function for performing case insensitive string comparision.
- ///
- /// First string to compare.
- /// Second strong to compare.
- /// true if the strings are equivalent, false otherwise
-/* inline bool str_icmp(const utility::string_t &left, const utility::string_t &right)
- {
-#ifdef _WIN32
- return _wcsicmp(left.c_str(), right.c_str()) == 0;
-#else
- return boost::iequals(left, right);
-#endif
- }
-*/
-#ifdef _WIN32
-
-///
-/// Category error type for Windows OS errors.
-///
-class windows_category_impl : public std::error_category
-{
-public:
- virtual const char *name() const CPPREST_NOEXCEPT { return "windows"; }
-
- _ASYNCRTIMP virtual std::string message(int errorCode) const CPPREST_NOEXCEPT;
-
- _ASYNCRTIMP virtual std::error_condition default_error_condition(int errorCode) const CPPREST_NOEXCEPT;
-};
-
-///
-/// Gets the one global instance of the windows error category.
-///
-/// An error category instance.
-_ASYNCRTIMP const std::error_category & __cdecl windows_category();
-
-#else
-
-///
-/// Gets the one global instance of the linux error category.
-///
-/// An error category instance.
-_ASYNCRTIMP const std::error_category & __cdecl linux_category();
-
-#endif
-
-///
-/// Gets the one global instance of the current platform's error category.
-///
-_ASYNCRTIMP const std::error_category & __cdecl platform_category();
-
-///
-/// Creates an instance of std::system_error from a OS error code.
-///
-inline std::system_error __cdecl create_system_error(unsigned long errorCode)
-{
- std::error_code code((int)errorCode, platform_category());
- return std::system_error(code, code.message());
-}
-
-///
-/// Creates a std::error_code from a OS error code.
-///
-inline std::error_code __cdecl create_error_code(unsigned long errorCode)
-{
- return std::error_code((int)errorCode, platform_category());
-}
-
-///
-/// Creates the corresponding error message from a OS error code.
-///
-inline utility::string_t __cdecl create_error_message(unsigned long errorCode)
-{
- return utility::conversions::to_string_t(create_error_code(errorCode).message());
-}
-
-}
-
-class datetime
-{
-public:
- typedef uint64_t interval_type;
-
- ///
- /// Defines the supported date and time string formats.
- ///
- enum date_format { RFC_1123, ISO_8601 };
-
- ///
- /// Returns the current UTC time.
- ///
- // static _ASYNCRTIMP datetime __cdecl utc_now();
-
- ///
- /// An invalid UTC timestamp value.
- ///
- enum:interval_type { utc_timestamp_invalid = static_cast(-1) };
-
- ///
- /// Returns seconds since Unix/POSIX time epoch at 01-01-1970 00:00:00.
- /// If time is before epoch, utc_timestamp_invalid is returned.
- ///
- /*
- static interval_type utc_timestamp()
- {
- const auto seconds = utc_now().to_interval() / _secondTicks;
- if (seconds >= 11644473600LL)
- {
- return seconds - 11644473600LL;
- }
- else
- {
- return utc_timestamp_invalid;
- }
- }
- */
-
- datetime() : m_interval(0)
- {
- }
-
- ///
- /// Creates datetime from a string representing time in UTC in RFC 1123 format.
- ///
- /// Returns a datetime of zero if not successful.
- // static _ASYNCRTIMP datetime __cdecl from_string(const utility::string_t& timestring, date_format format = RFC_1123);
-
- ///
- /// Returns a string representation of the datetime.
- ///
- _ASYNCRTIMP utility::string_t to_string(date_format format = RFC_1123) const;
-
- ///
- /// Returns the integral time value.
- ///
- interval_type to_interval() const
- {
- return m_interval;
- }
-
- datetime operator- (interval_type value) const
- {
- return datetime(m_interval - value);
- }
-
- datetime operator+ (interval_type value) const
- {
- return datetime(m_interval + value);
- }
-
- bool operator== (datetime dt) const
- {
- return m_interval == dt.m_interval;
- }
-
- bool operator!= (const datetime& dt) const
- {
- return !(*this == dt);
- }
-
- static interval_type from_milliseconds(unsigned int milliseconds)
- {
- return milliseconds*_msTicks;
- }
-
- static interval_type from_seconds(unsigned int seconds)
- {
- return seconds*_secondTicks;
- }
-
- static interval_type from_minutes(unsigned int minutes)
- {
- return minutes*_minuteTicks;
- }
-
- static interval_type from_hours(unsigned int hours)
- {
- return hours*_hourTicks;
- }
-
- static interval_type from_days(unsigned int days)
- {
- return days*_dayTicks;
- }
-
- bool is_initialized() const
- {
- return m_interval != 0;
- }
-
-private:
-
- friend int operator- (datetime t1, datetime t2);
-
- static const interval_type _msTicks = static_cast(10000);
- static const interval_type _secondTicks = 1000*_msTicks;
- static const interval_type _minuteTicks = 60*_secondTicks;
- static const interval_type _hourTicks = 60*60*_secondTicks;
- static const interval_type _dayTicks = 24*60*60*_secondTicks;
-
-
-#ifdef _WIN32
- // void* to avoid pulling in windows.h
- static _ASYNCRTIMP bool __cdecl datetime::system_type_to_datetime(/*SYSTEMTIME*/ void* psysTime, uint64_t seconds, datetime * pdt);
-#else
- static datetime timeval_to_datetime(const timeval &time);
-#endif
-
- // Private constructor. Use static methods to create an instance.
- datetime(interval_type interval) : m_interval(interval)
- {
- }
-
- // Storing as hundreds of nanoseconds 10e-7, i.e. 1 here equals 100ns.
- interval_type m_interval;
-};
-
-#ifndef _WIN32
-
-// temporary workaround for the fact that
-// utf16char is not fully supported in GCC
-class cmp
-{
-public:
-
- static int icmp(std::string left, std::string right)
- {
- size_t i;
- for (i = 0; i < left.size(); ++i)
- {
- if (i == right.size()) return 1;
-
- auto l = cmp::tolower(left[i]);
- auto r = cmp::tolower(right[i]);
- if (l > r) return 1;
- if (l < r) return -1;
- }
- if (i < right.size()) return -1;
- return 0;
- }
-
-private:
- static char tolower(char c)
- {
- if (c >= 'A' && c <= 'Z')
- return static_cast(c - 'A' + 'a');
- return c;
- }
-};
-
-#endif
-
-inline int operator- (datetime t1, datetime t2)
-{
- auto diff = (t1.m_interval - t2.m_interval);
-
- // Round it down to seconds
- diff /= 10 * 1000 * 1000;
-
- return static_cast(diff);
-}
-
-/*
-///
-/// Nonce string generator class.
-///
-class nonce_generator
-{
-public:
-
- ///
- /// Define default nonce length.
- ///
- enum { default_length = 32 };
-
- ///
- /// Nonce generator constructor.
- ///
- /// Length of the generated nonce string.
- nonce_generator(int length=default_length) :
- m_random(static_cast(utility::datetime::utc_timestamp())),
- m_length(length)
- {}
-
- ///
- /// Generate a nonce string containing random alphanumeric characters (A-Za-z0-9).
- /// Length of the generated string is set by length().
- ///
- /// The generated nonce string.
- _ASYNCRTIMP utility::string_t generate();
-
- ///
- /// Get length of generated nonce string.
- ///
- /// Nonce string length.
- int length() const { return m_length; }
-
- ///
- /// Set length of the generated nonce string.
- ///
- /// Lenght of nonce string.
- void set_length(int length) { m_length = length; }
-
-private:
- static const utility::string_t c_allowed_chars;
- std::mt19937 m_random;
- int m_length;
-};
-*/
-} // namespace utility;
diff --git a/src/corehost/cli/json/casablanca/include/cpprest/details/SafeInt3.hpp b/src/corehost/cli/json/casablanca/include/cpprest/details/SafeInt3.hpp
deleted file mode 100644
index 798012bedf..0000000000
--- a/src/corehost/cli/json/casablanca/include/cpprest/details/SafeInt3.hpp
+++ /dev/null
@@ -1,7048 +0,0 @@
-/*-----------------------------------------------------------------------------------------------------------
-SafeInt.hpp
-Version 3.0.18p
-
-This software is licensed under the Microsoft Public License (Ms-PL).
-For more information about Microsoft open source licenses, refer to
-http://www.microsoft.com/opensource/licenses.mspx
-
-This license governs use of the accompanying software. If you use the software, you accept this license.
-If you do not accept the license, do not use the software.
-
-Definitions
-The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning here
-as under U.S. copyright law. A "contribution" is the original software, or any additions or changes to
-the software. A "contributor" is any person that distributes its contribution under this license.
-"Licensed patents" are a contributor's patent claims that read directly on its contribution.
-
-Grant of Rights
-(A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations
-in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to
-reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution
-or any derivative works that you create.
-
-(B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in
-section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed
-patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution
-in the software or derivative works of the contribution in the software.
-
-Conditions and Limitations
-(A) No Trademark License- This license does not grant you rights to use any contributors' name, logo,
- or trademarks.
-(B) If you bring a patent claim against any contributor over patents that you claim are infringed by the
- software, your patent license from such contributor to the software ends automatically.
-(C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and
- attribution notices that are present in the software.
-(D) If you distribute any portion of the software in source code form, you may do so only under this license
- by including a complete copy of this license with your distribution. If you distribute any portion of the
- software in compiled or object code form, you may only do so under a license that complies with this license.
-(E) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties,
- guarantees, or conditions. You may have additional consumer rights under your local laws which this license
- cannot change. To the extent permitted under your local laws, the contributors exclude the implied warranties
- of merchantability, fitness for a particular purpose and non-infringement.
-
-
-Copyright (c) Microsoft Corporation. All rights reserved.
-
-This header implements an integer handling class designed to catch
-unsafe integer operations
-
-This header compiles properly at Wall on Visual Studio, -Wall on gcc, and -Weverything on clang.
-
-Please read the leading comments before using the class.
----------------------------------------------------------------*/
-#pragma once
-
-// It is a bit tricky to sort out what compiler we are actually using,
-// do this once here, and avoid cluttering the code
-#define VISUAL_STUDIO_COMPILER 0
-#define CLANG_COMPILER 1
-#define GCC_COMPILER 2
-#define UNKNOWN_COMPILER -1
-
-// Clang will sometimes pretend to be Visual Studio
-// and does pretend to be gcc. Check it first, as nothing else pretends to be clang
-#if defined __clang__
-#define SAFEINT_COMPILER CLANG_COMPILER
-#elif defined __GNUC__
-#define SAFEINT_COMPILER GCC_COMPILER
-#elif defined _MSC_VER
-#define SAFEINT_COMPILER VISUAL_STUDIO_COMPILER
-#else
-#define SAFEINT_COMPILER UNKNOWN_COMPILER
-#endif
-
-// Enable compiling with /Wall under VC
-#if SAFEINT_COMPILER == VISUAL_STUDIO_COMPILER
-#pragma warning( push )
-// Disable warnings coming from headers
-#pragma warning( disable:4987 4820 4987 4820 )
-
-#endif
-
-// Need this for ptrdiff_t on some compilers
-#include
-#include
-
-#if SAFEINT_COMPILER == VISUAL_STUDIO_COMPILER && defined _M_AMD64
- #include
- #define SAFEINT_USE_INTRINSICS 1
-#else
- #define SAFEINT_USE_INTRINSICS 0
-#endif
-
-#if SAFEINT_COMPILER == VISUAL_STUDIO_COMPILER
-#pragma warning( pop )
-#endif
-
-// Various things needed for GCC
-#if SAFEINT_COMPILER == GCC_COMPILER || SAFEINT_COMPILER == CLANG_COMPILER
-
-#define NEEDS_INT_DEFINED
-
-#if !defined NULL
-#define NULL 0
-#endif
-
-// GCC warning suppression
-#if SAFEINT_COMPILER == GCC_COMPILER
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wunused-local-typedefs"
-#endif
-
-#include
-
-// clang only
-#if SAFEINT_COMPILER == CLANG_COMPILER
-
-#if __has_feature(cxx_nullptr)
- #define NEEDS_NULLPTR_DEFINED 0
-#endif
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wc++11-long-long"
-#pragma clang diagnostic ignored "-Wold-style-cast"
-#pragma clang diagnostic ignored "-Wunused-local-typedef"
-#endif
-
-#endif
-
-// If the user made a choice, respect it #if !defined
-#if !defined NEEDS_NULLPTR_DEFINED
- // Visual Studio 2010 and higher support this
- #if SAFEINT_COMPILER == VISUAL_STUDIO_COMPILER
- #if (_MSC_VER < 1600)
- #define NEEDS_NULLPTR_DEFINED 1
- #else
- #define NEEDS_NULLPTR_DEFINED 0
- #endif
- #else
- // Let everything else trigger based on whether we use c++11 or above
- #if __cplusplus >= 201103L
- #define NEEDS_NULLPTR_DEFINED 0
- #else
- #define NEEDS_NULLPTR_DEFINED 1
- #endif
- #endif
-#endif
-
-#if NEEDS_NULLPTR_DEFINED
-#define nullptr NULL
-#endif
-
-#ifndef C_ASSERT
-#define C_ASSERT(e) typedef char __C_ASSERT__[(e)?1:-1]
-#endif
-
-// Let's test some assumptions
-// We're assuming two's complement negative numbers
-C_ASSERT( -1 == static_cast(0xffffffff) );
-
-/************* Compiler Options *****************************************************************************************************
-
-SafeInt supports several compile-time options that can change the behavior of the class.
-
-Compiler options:
-SAFEINT_WARN_64BIT_PORTABILITY - this re-enables various warnings that happen when /Wp64 is used. Enabling this option is not
- recommended.
-NEEDS_INT_DEFINED - if your compiler does not support __int8, __int16, __int32 and __int64, you can enable this.
-SAFEINT_ASSERT_ON_EXCEPTION - it is often easier to stop on an assert and figure out a problem than to try and figure out
- how you landed in the catch block.
-SafeIntDefaultExceptionHandler - if you'd like to replace the exception handlers SafeInt provides, define your replacement and
- define this. Note - two built in (Windows-specific) options exist:
- - SAFEINT_FAILFAST - bypasses all exception handlers, exits the app with an exception
- - SAFEINT_RAISE_EXCEPTION - throws Win32 exceptions, which can be caught
-SAFEINT_DISALLOW_UNSIGNED_NEGATION - Invoking the unary negation operator creates warnings, but if you'd like it to completely fail
- to compile, define this.
-ANSI_CONVERSIONS - This changes the class to use default comparison behavior, which may be unsafe. Enabling this
- option is not recommended.
-SAFEINT_DISABLE_BINARY_ASSERT - binary AND, OR or XOR operations on mixed size types can produce unexpected results. If you do
- this, the default is to assert. Set this if you prefer not to assert under these conditions.
-SIZE_T_CAST_NEEDED - some compilers complain if there is not a cast to size_t, others complain if there is one.
- This lets you not have your compiler complain.
-SAFEINT_DISABLE_SHIFT_ASSERT - Set this option if you don't want to assert when shifting more bits than the type has. Enabling
- this option is not recommended.
-
-************************************************************************************************************************************/
-
-/*
-* The SafeInt class is designed to have as low an overhead as possible
-* while still ensuring that all integer operations are conducted safely.
-* Nearly every operator has been overloaded, with a very few exceptions.
-*
-* A usability-safety trade-off has been made to help ensure safety. This
-* requires that every operation return either a SafeInt or a bool. If we
-* allowed an operator to return a base integer type T, then the following
-* can happen:
-*
-* char i = SafeInt(32) * 2 + SafeInt(16) * 4;
-*
-* The * operators take precedence, get overloaded, return a char, and then
-* you have:
-*
-* char i = (char)64 + (char)64; //overflow!
-*
-* This situation would mean that safety would depend on usage, which isn't
-* acceptable.
-*
-* One key operator that is missing is an implicit cast to type T. The reason for
-* this is that if there is an implicit cast operator, then we end up with
-* an ambiguous compile-time precedence. Because of this amiguity, there
-* are two methods that are provided:
-*
-* Casting operators for every native integer type
-* Version 3 note - it now compiles correctly for size_t without warnings
-*
-* SafeInt::Ptr() - returns the address of the internal integer
-* Note - the '&' (address of) operator has been overloaded and returns
-* the address of the internal integer.
-*
-* The SafeInt class should be used in any circumstances where ensuring
-* integrity of the calculations is more important than performance. See Performance
-* Notes below for additional information.
-*
-* Many of the conditionals will optimize out or be inlined for a release
-* build (especially with /Ox), but it does have significantly more overhead,
-* especially for signed numbers. If you do not _require_ negative numbers, use
-* unsigned integer types - certain types of problems cannot occur, and this class
-* performs most efficiently.
-*
-* Here's an example of when the class should ideally be used -
-*
-* void* AllocateMemForStructs(int StructSize, int HowMany)
-* {
-* SafeInt s(StructSize);
-*
-* s *= HowMany;
-*
-* return malloc(s);
-*
-* }
-*
-* Here's when it should NOT be used:
-*
-* void foo()
-* {
-* int i;
-*
-* for(i = 0; i < 0xffff; i++)
-* ....
-* }
-*
-* Error handling - a SafeInt class will throw exceptions if something
-* objectionable happens. The exceptions are SafeIntException classes,
-* which contain an enum as a code.
-*
-* Typical usage might be:
-*
-* bool foo()
-* {
-* SafeInt s; //note that s == 0 unless set
-*
-* try{
-* s *= 23;
-* ....
-* }
-* catch(SafeIntException err)
-* {
-* //handle errors here
-* }
-* }
-*
-* Update for 3.0 - the exception class is now a template parameter.
-* You can replace the exception class with any exception class you like. This is accomplished by:
-* 1) Create a class that has the following interface:
-*
- template <> class YourSafeIntExceptionHandler < YourException >
- {
- public:
- static __declspec(noreturn) void __stdcall SafeIntOnOverflow()
- {
- throw YourException( YourSafeIntArithmeticOverflowError );
- }
-
- static __declspec(noreturn) void __stdcall SafeIntOnDivZero()
- {
- throw YourException( YourSafeIntDivideByZeroError );
- }
- };
-*
-* Note that you don't have to throw C++ exceptions, you can throw Win32 exceptions, or do
-* anything you like, just don't return from the call back into the code.
-*
-* 2) Either explicitly declare SafeInts like so:
-* SafeInt< int, YourSafeIntExceptionHandler > si;
-* or
-* #define SafeIntDefaultExceptionHandler YourSafeIntExceptionHandler
-*
-* Performance:
-*
-* Due to the highly nested nature of this class, you can expect relatively poor
-* performance in unoptimized code. In tests of optimized code vs. correct inline checks
-* in native code, this class has been found to take approximately 8% more CPU time (this varies),
-* most of which is due to exception handling. Solutions:
-*
-* 1) Compile optimized code - /Ox is best, /O2 also performs well. Interestingly, /O1
-* (optimize for size) does not work as well.
-* 2) If that 8% hit is really a serious problem, walk through the code and inline the
-* exact same checks as the class uses.
-* 3) Some operations are more difficult than others - avoid using signed integers, and if
-* possible keep them all the same size. 64-bit integers are also expensive. Mixing
-* different integer sizes and types may prove expensive. Be aware that literals are
-* actually ints. For best performance, cast literals to the type desired.
-*
-*
-* Performance update
-* The current version of SafeInt uses template specialization to force the compiler to invoke only the
-* operator implementation needed for any given pair of types. This will dramatically improve the perf
-* of debug builds.
-*
-* 3.0 update - not only have we maintained the specialization, there were some cases that were overly complex,
-* and using some additional cases (e.g. signed __int64 and unsigned __int64) resulted in some simplification.
-* Additionally, there was a lot of work done to better optimize the 64-bit multiplication.
-*
-* Binary Operators
-*
-* All of the binary operators have certain assumptions built into the class design.
-* This is to ensure correctness. Notes on each class of operator follow:
-*
-* Arithmetic Operators (*,/,+,-,%)
-* There are three possible variants:
-* SafeInt< T, E > op SafeInt< T, E >
-* SafeInt< T, E > op U
-* U op SafeInt< T, E >
-*
-* The SafeInt< T, E > op SafeInt< U, E > variant is explicitly not supported, and if you try to do
-* this the compiler with throw the following error:
-*
-* error C2593: 'operator *' is ambiguous
-*
-* This is because the arithmetic operators are required to return a SafeInt of some type.
-* The compiler cannot know whether you'd prefer to get a type T or a type U returned. If
-* you need to do this, you need to extract the value contained within one of the two using
-* the casting operator. For example:
-*
-* SafeInt< T, E > t, result;
-* SafeInt< U, E > u;
-*
-* result = t * (U)u;
-*
-* Comparison Operators
-* Because each of these operators return type bool, mixing SafeInts of differing types is
-* allowed.
-*
-* Shift Operators
-* Shift operators always return the type on the left hand side of the operator. Mixed type
-* operations are allowed because the return type is always known.
-*
-* Boolean Operators
-* Like comparison operators, these overloads always return type bool, and mixed-type SafeInts
-* are allowed. Additionally, specific overloads exist for type bool on both sides of the
-* operator.
-*
-* Binary Operators
-* Mixed-type operations are discouraged, however some provision has been made in order to
-* enable things like:
-*
-* SafeInt c = 2;
-*
-* if(c & 0x02)
-* ...
-*
-* The "0x02" is actually an int, and it needs to work.
-* In the case of binary operations on integers smaller than 32-bit, or of mixed type, corner
-* cases do exist where you could get unexpected results. In any case where SafeInt returns a different
-* result than the underlying operator, it will call assert(). You should examine your code and cast things
-* properly so that you are not programming with side effects.
-*
-* Documented issues:
-*
-* This header compiles correctly at /W4 using VC++ 8 (Version 14.00.50727.42) and later.
-* As of this writing, I believe it will also work for VC 7.1, but not for VC 7.0 or below.
-* If you need a version that will work with lower level compilers, try version 1.0.7. None
-* of them work with Visual C++ 6, and gcc didn't work very well, either, though this hasn't
-* been tried recently.
-*
-* It is strongly recommended that any code doing integer manipulation be compiled at /W4
-* - there are a number of warnings which pertain to integer manipulation enabled that are
-* not enabled at /W3 (default for VC++)
-*
-* Perf note - postfix operators are slightly more costly than prefix operators.
-* Unless you're actually assigning it to something, ++SafeInt is less expensive than SafeInt++
-*
-* The comparison operator behavior in this class varies from the ANSI definition, which is
-* arguably broken. As an example, consider the following:
-*
-* unsigned int l = 0xffffffff;
-* char c = -1;
-*
-* if(c == l)
-* printf("Why is -1 equal to 4 billion???\n");
-*
-* The problem here is that c gets cast to an int, now has a value of 0xffffffff, and then gets
-* cast again to an unsigned int, losing the true value. This behavior is despite the fact that
-* an __int64 exists, and the following code will yield a different (and intuitively correct)
-* answer:
-*
-* if((__int64)c == (__int64)l))
-* printf("Why is -1 equal to 4 billion???\n");
-* else
-* printf("Why doesn't the compiler upcast to 64-bits when needed?\n");
-*
-* Note that combinations with smaller integers won't display the problem - if you
-* changed "unsigned int" above to "unsigned short", you'd get the right answer.
-*
-* If you prefer to retain the ANSI standard behavior insert
-* #define ANSI_CONVERSIONS
-* into your source. Behavior differences occur in the following cases:
-* 8, 16, and 32-bit signed int, unsigned 32-bit int
-* any signed int, unsigned 64-bit int
-* Note - the signed int must be negative to show the problem
-*
-*
-* Revision history:
-*
-* Oct 12, 2003 - Created
-* Author - David LeBlanc - dleblanc@microsoft.com
-*
-* Oct 27, 2003 - fixed numerous items pointed out by michmarc and bdawson
-* Dec 28, 2003 - 1.0
-* added support for mixed-type operations
-* thanks to vikramh
-* also fixed broken __int64 multiplication section
-* added extended support for mixed-type operations where possible
-* Jan 28, 2004 - 1.0.1
-* changed WCHAR to wchar_t
-* fixed a construct in two mixed-type assignment overloads that was
-* not compiling on some compilers
-* Also changed name of private method to comply with standards on
-* reserved names
-* Thanks to Niels Dekker for the input
-* Feb 12, 2004 - 1.0.2
-* Minor changes to remove dependency on Windows headers
-* Consistently used __int16, __int32 and __int64 to ensure
-* portability
-* May 10, 2004 - 1.0.3
-* Corrected bug in one case of GreaterThan
-* July 22, 2004 - 1.0.4
-* Tightened logic in addition check (saving 2 instructions)
-* Pulled error handler out into function to enable user-defined replacement
-* Made internal type of SafeIntException an enum (as per Niels' suggestion)
-* Added casts for base integer types (as per Scott Meyers' suggestion)
-* Updated usage information - see important new perf notes.
-* Cleaned up several const issues (more thanks to Niels)
-*
-* Oct 1, 2004 - 1.0.5
-* Added support for SEH exceptions instead of C++ exceptions - Win32 only
-* Made handlers for DIV0 and overflows individually overridable
-* Commented out the destructor - major perf gains here
-* Added cast operator for type long, since long != __int32
-* Corrected a couple of missing const modifiers
-* Fixed broken >= and <= operators for type U op SafeInt< T, E >
-* Nov 5, 2004 - 1.0.6
-* Implemented new logic in binary operators to resolve issues with
-* implicit casts
-* Fixed casting operator because char != signed char
-* Defined __int32 as int instead of long
-* Removed unsafe SafeInt::Value method
-* Re-implemented casting operator as a result of removing Value method
-* Dec 1, 2004 - 1.0.7
-* Implemented specialized operators for pointer arithmetic
-* Created overloads for cases of U op= SafeInt. What you do with U
-* after that may be dangerous.
-* Fixed bug in corner case of MixedSizeModulus
-* Fixed bug in MixedSizeMultiply and MixedSizeDivision with input of 0
-* Added throw() decorations
-*
-* Apr 12, 2005 - 2.0
-* Extensive revisions to leverage template specialization.
-* April, 2007 Extensive revisions for version 3.0
-* Nov 22, 2009 Forked from MS internal code
-* Changes needed to support gcc compiler - many thanks to Niels Dekker
-* for determining not just the issues, but also suggesting fixes.
-* Also updating some of the header internals to be the same as the upcoming Visual Studio version.
-*
-* Jan 16, 2010 64-bit gcc has long == __int64, which means that many of the existing 64-bit
-* templates are over-specialized. This forces a redefinition of all the 64-bit
-* multiplication routines to use pointers instead of references for return
-* values. Also, let's use some intrinsics for x64 Microsoft compiler to
-* reduce code size, and hopefully improve efficiency.
-*
-* June 21, 2014 Better support for clang, higher warning levels supported for all 3 primary supported
- compilers (Visual Studio, clang, gcc).
- Also started to converge the code base such that the public CodePlex version will
- be a drop-in replacement for the Visual Studio version.
-
-* Note about code style - throughout this class, casts will be written using C-style (T),
-* not C++ style static_cast< T >. This is because the class is nearly always dealing with integer
-* types, and in this case static_cast and a C cast are equivalent. Given the large number of casts,
-* the code is a little more readable this way. In the event a cast is needed where static_cast couldn't
-* be substituted, we'll use the new templatized cast to make it explicit what the operation is doing.
-*
-************************************************************************************************************
-* Version 3.0 changes:
-*
-* 1) The exception type thrown is now replacable, and you can throw your own exception types. This should help
-* those using well-developed exception classes.
-* 2) The 64-bit multiplication code has had a lot of perf work done, and should be faster than 2.0.
-* 3) There is now limited floating point support. You can initialize a SafeInt with a floating point type,
-* and you can cast it out (or assign) to a float as well.
-* 4) There is now an Align method. I noticed people use this a lot, and rarely check errors, so now you have one.
-*
-* Another major improvement is the addition of external functions - if you just want to check an operation, this can now happen:
-* All of the following can be invoked without dealing with creating a class, or managing exceptions. This is especially handy
-* for 64-bit porting, since SafeCast compiles away for a 32-bit cast from size_t to unsigned long, but checks it for 64-bit.
-*
-* inline bool SafeCast( const T From, U& To ) throw()
-* inline bool SafeEquals( const T t, const U u ) throw()
-* inline bool SafeNotEquals( const T t, const U u ) throw()
-* inline bool SafeGreaterThan( const T t, const U u ) throw()
-* inline bool SafeGreaterThanEquals( const T t, const U u ) throw()
-* inline bool SafeLessThan( const T t, const U u ) throw()
-* inline bool SafeLessThanEquals( const T t, const U u ) throw()
-* inline bool SafeModulus( const T& t, const U& u, T& result ) throw()
-* inline bool SafeMultiply( T t, U u, T& result ) throw()
-* inline bool SafeDivide( T t, U u, T& result ) throw()
-* inline bool SafeAdd( T t, U u, T& result ) throw()
-* inline bool SafeSubtract( T t, U u, T& result ) throw()
-*
-*/
-
-//use these if the compiler does not support _intXX
-#ifdef NEEDS_INT_DEFINED
-#define __int8 char
-#define __int16 short
-#define __int32 int
-#define __int64 long long
-#endif
-
-namespace msl
-{
-
-namespace safeint3
-{
-
-// catch these to handle errors
-// Currently implemented code values:
-// ERROR_ARITHMETIC_OVERFLOW
-// EXCEPTION_INT_DIVIDE_BY_ZERO
-enum SafeIntError
-{
- SafeIntNoError = 0,
- SafeIntArithmeticOverflow,
- SafeIntDivideByZero
-};
-
-} // safeint3
-} // msl
-
-
-/*
-* Error handler classes
-* Using classes to deal with exceptions is going to allow the most
-* flexibility, and we can mix different error handlers in the same project
-* or even the same file. It isn't advisable to do this in the same function
-* because a SafeInt< int, MyExceptionHandler > isn't the same thing as
-* SafeInt< int, YourExceptionHander >.
-* If for some reason you have to translate between the two, cast one of them back to its
-* native type.
-*
-* To use your own exception class with SafeInt, first create your exception class,
-* which may look something like the SafeIntException class below. The second step is to
-* create a template specialization that implements SafeIntOnOverflow and SafeIntOnDivZero.
-* For example:
-*
-* template <> class SafeIntExceptionHandler < YourExceptionClass >
-* {
-* static __declspec(noreturn) void __stdcall SafeIntOnOverflow()
-* {
-* throw YourExceptionClass( EXCEPTION_INT_OVERFLOW );
-* }
-*
-* static __declspec(noreturn) void __stdcall SafeIntOnDivZero()
-* {
-* throw YourExceptionClass( EXCEPTION_INT_DIVIDE_BY_ZERO );
-* }
-* };
-*
-* typedef SafeIntExceptionHandler < YourExceptionClass > YourSafeIntExceptionHandler
-* You'd then declare your SafeInt objects like this:
-* SafeInt< int, YourSafeIntExceptionHandler >
-*
-* Unfortunately, there is no such thing as partial template specialization in typedef
-* statements, so you have three options if you find this cumbersome:
-*
-* 1) Create a holder class:
-*
-* template < typename T >
-* class MySafeInt
-* {
-* public:
-* SafeInt< T, MyExceptionClass> si;
-* };
-*
-* You'd then declare an instance like so:
-* MySafeInt< int > i;
-*
-* You'd lose handy things like initialization - it would have to be initialized as:
-*
-* i.si = 0;
-*
-* 2) You could create a typedef for every int type you deal with:
-*
-* typedef SafeInt< int, MyExceptionClass > MySafeInt;
-* typedef SafeInt< char, MyExceptionClass > MySafeChar;
-*
-* and so on. The second approach is probably more usable, and will just drop into code
-* better, which is the original intent of the SafeInt class.
-*
-* 3) If you're going to consistently use a different class to handle your exceptions,
-* you can override the default typedef like so:
-*
-* #define SafeIntDefaultExceptionHandler YourSafeIntExceptionHandler
-*
-* Overall, this is probably the best approach.
-* */
-
-// On the Microsoft compiler, violating a throw() annotation is a silent error.
-// Other compilers might turn these into exceptions, and some users may want to not have throw() enabled.
-// In addition, some error handlers may not throw C++ exceptions, which makes everything no throw.
-#if defined SAFEINT_REMOVE_NOTHROW
-#define SAFEINT_NOTHROW
-#else
-#define SAFEINT_NOTHROW throw()
-#endif
-
-namespace msl
-{
-
-namespace safeint3
-{
-
-// If you would like to use your own custom assert
-// Define SAFEINT_ASSERT
-#if !defined SAFEINT_ASSERT
-#include
-#define SAFEINT_ASSERT(x) assert(x)
-#endif
-
-#if defined SAFEINT_ASSERT_ON_EXCEPTION
- inline void SafeIntExceptionAssert() SAFEINT_NOTHROW { SAFEINT_ASSERT(false); }
-#else
- inline void SafeIntExceptionAssert() SAFEINT_NOTHROW {}
-#endif
-
-#if SAFEINT_COMPILER == GCC_COMPILER || SAFEINT_COMPILER == CLANG_COMPILER
- #define SAFEINT_NORETURN __attribute__((noreturn))
- #define SAFEINT_STDCALL
- #define SAFEINT_VISIBLE __attribute__ ((__visibility__("default")))
- #define SAFEINT_WEAK __attribute__ ((weak))
-#else
- #define SAFEINT_NORETURN __declspec(noreturn)
- #define SAFEINT_STDCALL __stdcall
- #define SAFEINT_VISIBLE
- #define SAFEINT_WEAK
-#endif
-
-class SAFEINT_VISIBLE SafeIntException
-{
-public:
- SafeIntException() SAFEINT_NOTHROW { m_code = SafeIntNoError; }
- SafeIntException( SafeIntError code ) SAFEINT_NOTHROW
- {
- m_code = code;
- }
- SafeIntError m_code;
-};
-
-namespace SafeIntInternal
-{
- // Visual Studio version of SafeInt provides for two possible error
- // handlers:
- // SafeIntErrorPolicy_SafeIntException - C++ exception, default if not otherwise defined
- // SafeIntErrorPolicy_InvalidParameter - Calls fail fast (Windows-specific), bypasses any exception handlers,
- // exits the app with a crash
- template < typename E > class SafeIntExceptionHandler;
-
- template <> class SafeIntExceptionHandler < SafeIntException >
- {
- public:
-
- static SAFEINT_NORETURN void SAFEINT_STDCALL SafeIntOnOverflow()
- {
- SafeIntExceptionAssert();
- throw SafeIntException( SafeIntArithmeticOverflow );
- }
-
- static SAFEINT_NORETURN void SAFEINT_STDCALL SafeIntOnDivZero()
- {
- SafeIntExceptionAssert();
- throw SafeIntException( SafeIntDivideByZero );
- }
- };
-
-#if !defined _CRT_SECURE_INVALID_PARAMETER
- // Calling fail fast is somewhat more robust than calling abort,
- // but abort is the closest we can manage without Visual Studio support
- // Need the header for abort()
- #include
- #define _CRT_SECURE_INVALID_PARAMETER(msg) abort()
-#endif
-
- class SafeInt_InvalidParameter
- {
- public:
- static SAFEINT_NORETURN void SafeIntOnOverflow() SAFEINT_NOTHROW
- {
- SafeIntExceptionAssert();
- _CRT_SECURE_INVALID_PARAMETER("SafeInt Arithmetic Overflow");
- }
-
- static SAFEINT_NORETURN void SafeIntOnDivZero() SAFEINT_NOTHROW
- {
- SafeIntExceptionAssert();
- _CRT_SECURE_INVALID_PARAMETER("SafeInt Divide By Zero");
- }
- };
-
-#if defined _WINDOWS_
-
- class SafeIntWin32ExceptionHandler
- {
- public:
- static SAFEINT_NORETURN void SAFEINT_STDCALL SafeIntOnOverflow() SAFEINT_NOTHROW
- {
- SafeIntExceptionAssert();
- RaiseException( static_cast(EXCEPTION_INT_OVERFLOW), EXCEPTION_NONCONTINUABLE, 0, 0);
- }
-
- static SAFEINT_NORETURN void SAFEINT_STDCALL SafeIntOnDivZero() SAFEINT_NOTHROW
- {
- SafeIntExceptionAssert();
- RaiseException( static_cast(EXCEPTION_INT_DIVIDE_BY_ZERO), EXCEPTION_NONCONTINUABLE, 0, 0);
- }
- };
-
-#endif
-
-} // namespace SafeIntInternal
-
-// both of these have cross-platform support
-typedef SafeIntInternal::SafeIntExceptionHandler < SafeIntException > CPlusPlusExceptionHandler;
-typedef SafeIntInternal::SafeInt_InvalidParameter InvalidParameterExceptionHandler;
-
-// This exception handler is no longer recommended, but is left here in order not to break existing users
-#if defined _WINDOWS_
-typedef SafeIntInternal::SafeIntWin32ExceptionHandler Win32ExceptionHandler;
-#endif
-
-// For Visual Studio compatibility
-#if defined VISUAL_STUDIO_SAFEINT_COMPAT
- typedef CPlusPlusExceptionHandler SafeIntErrorPolicy_SafeIntException;
- typedef InvalidParameterExceptionHandler SafeIntErrorPolicy_InvalidParameter;
-#endif
-
-// If the user hasn't defined a default exception handler,
-// define one now, depending on whether they would like Win32 or C++ exceptions
-
-// This library will use conditional noexcept soon, but not in this release
-// Some users might mix exception handlers, which is not advised, but is supported
-#if !defined SafeIntDefaultExceptionHandler
- #if defined SAFEINT_RAISE_EXCEPTION
- #if !defined _WINDOWS_
- #error Include windows.h in order to use Win32 exceptions
- #endif
-
- #define SafeIntDefaultExceptionHandler Win32ExceptionHandler
- #elif defined SAFEINT_FAILFAST
- #define SafeIntDefaultExceptionHandler InvalidParameterExceptionHandler
- #else
- #define SafeIntDefaultExceptionHandler CPlusPlusExceptionHandler
- #if !defined SAFEINT_EXCEPTION_HANDLER_CPP
- #define SAFEINT_EXCEPTION_HANDLER_CPP 1
- #endif
- #endif
-#endif
-
-#if !defined SAFEINT_EXCEPTION_HANDLER_CPP
-#define SAFEINT_EXCEPTION_HANDLER_CPP 0
-#endif
-
-// If an error handler is chosen other than C++ exceptions, such as Win32 exceptions, fail fast,
-// or abort, then all methods become no throw. Some teams track throw() annotations closely,
-// and the following option provides for this.
-#if SAFEINT_EXCEPTION_HANDLER_CPP
-#define SAFEINT_CPP_THROW
-#else
-#define SAFEINT_CPP_THROW SAFEINT_NOTHROW
-#endif
-
-// Turns out we can fool the compiler into not seeing compile-time constants with
-// a simple template specialization
-template < int method > class CompileConst;
-template <> class CompileConst { public: static bool Value() SAFEINT_NOTHROW { return true; } };
-template <> class CompileConst { public: static bool Value() SAFEINT_NOTHROW { return false; } };
-
-// The following template magic is because we're now not allowed
-// to cast a float to an enum. This means that if we happen to assign
-// an enum to a SafeInt of some type, it won't compile, unless we prevent
-// isFloat = ( (T)( (float)1.1 ) > (T)1 )
-// from compiling in the case of an enum, which is the point of the specialization
-// that follows.
-
-// If we have support for std, then we can do this easily, and detect enums as well
-template < typename T > class NumericType;
-
-#if defined _LIBCPP_TYPE_TRAITS || defined _TYPE_TRAITS_
-// Continue to special case bool
-template <> class NumericType { public: enum{ isBool = true, isFloat = false, isInt = false }; };
-template < typename T > class NumericType
-{
- public:
- enum
- {
- isBool = false, // We specialized out a bool
- isFloat = std::is_floating_point::value,
- // If it is an enum, then consider it an int type
- // This does allow someone to make a SafeInt from an enum type, which is not recommended,
- // but it also allows someone to add an enum value to a SafeInt, which is handy.
- isInt = std::is_integral::value || std::is_enum::value
- };
-};
-
-#else
-
-template <> class NumericType { public: enum{ isBool = true, isFloat = false, isInt = false }; };
-template <> class NumericType { public: enum{ isBool = false, isFloat = false, isInt = true }; };
-template <> class NumericType { public: enum{ isBool = false, isFloat = false, isInt = true }; };
-template <> class NumericType { public: enum{ isBool = false, isFloat = false, isInt = true }; };
-template <> class NumericType { public: enum{ isBool = false, isFloat = false, isInt = true }; };
-template <> class NumericType { public: enum{ isBool = false, isFloat = false, isInt = true }; };
-#if defined SAFEINT_USE_WCHAR_T || defined _NATIVE_WCHAR_T_DEFINED
-template <> class NumericType { public: enum{ isBool = false, isFloat = false, isInt = true }; };
-#endif
-template <> class NumericType { public: enum{ isBool = false, isFloat = false, isInt = true }; };
-template <> class NumericType { public: enum{ isBool = false, isFloat = false, isInt = true }; };
-template <> class NumericType { public: enum{ isBool = false, isFloat = false, isInt = true }; };
-template <> class NumericType { public: enum{ isBool = false, isFloat = false, isInt = true }; };
-template <> class NumericType<__int64> { public: enum{ isBool = false, isFloat = false, isInt = true }; };
-template <> class NumericType { public: enum{ isBool = false, isFloat = false, isInt = true }; };
-template <> class NumericType { public: enum{ isBool = false, isFloat = true, isInt = false }; };
-template <> class NumericType { public: enum{ isBool = false, isFloat = true, isInt = false }; };
-template <> class NumericType { public: enum{ isBool = false, isFloat = true, isInt = false }; };
-// Catch-all for anything not supported
-template < typename T > class NumericType
-{
-public:
- // We have some unknown type, which could be an enum. For parity with the code that uses ,
- // We can try a static_cast - it if compiles, then it might be an enum, and should work.
- // If it is something else that just happens to have a constructor that takes an int, and a casting operator,
- // then it is possible something will go wrong, and for best results, cast it directly to an int before letting it
- // interact with a SafeInt
-
- enum
- {
- isBool = false,
- isFloat = false,
- isInt = static_cast( static_cast(0) ) == 0
- };
-};
-#endif // type traits
-
-// Use this to avoid compile-time const truncation warnings
-template < int fSigned, int bits > class SafeIntMinMax;
-
-template <> class SafeIntMinMax< true, 8 > { public: const static signed __int8 min = (-0x7f - 1);
- const static signed __int8 max = 0x7f; };
-template <> class SafeIntMinMax< true, 16 > { public: const static __int16 min = ( -0x7fff - 1 );
- const static __int16 max = 0x7fff; };
-template <> class SafeIntMinMax< true, 32 > { public: const static __int32 min = ( -0x7fffffff -1 );
- const static __int32 max = 0x7fffffff; };
-template <> class SafeIntMinMax< true, 64 > { public: const static __int64 min = static_cast<__int64>(0x8000000000000000LL);
- const static __int64 max = 0x7fffffffffffffffLL; };
-
-template <> class SafeIntMinMax< false, 8 > { public: const static unsigned __int8 min = 0;
- const static unsigned __int8 max = 0xff; };
-template <> class SafeIntMinMax< false, 16 > { public: const static unsigned __int16 min = 0;
- const static unsigned __int16 max = 0xffff; };
-template <> class SafeIntMinMax< false, 32 > { public: const static unsigned __int32 min = 0;
- const static unsigned __int32 max = 0xffffffff; };
-template <> class SafeIntMinMax< false, 64 > { public: const static unsigned __int64 min = 0;
- const static unsigned __int64 max = 0xffffffffffffffffULL; };
-
-template < typename T > class IntTraits
-{
-public:
- C_ASSERT( NumericType::isInt );
- enum
- {
- isSigned = ( (T)(-1) < 0 ),
- is64Bit = ( sizeof(T) == 8 ),
- is32Bit = ( sizeof(T) == 4 ),
- is16Bit = ( sizeof(T) == 2 ),
- is8Bit = ( sizeof(T) == 1 ),
- isLT32Bit = ( sizeof(T) < 4 ),
- isLT64Bit = ( sizeof(T) < 8 ),
- isInt8 = ( sizeof(T) == 1 && isSigned ),
- isUint8 = ( sizeof(T) == 1 && !isSigned ),
- isInt16 = ( sizeof(T) == 2 && isSigned ),
- isUint16 = ( sizeof(T) == 2 && !isSigned ),
- isInt32 = ( sizeof(T) == 4 && isSigned ),
- isUint32 = ( sizeof(T) == 4 && !isSigned ),
- isInt64 = ( sizeof(T) == 8 && isSigned ),
- isUint64 = ( sizeof(T) == 8 && !isSigned ),
- bitCount = ( sizeof(T)*8 ),
- isBool = ( (T)2 == (T)1 )
- };
-
- // On version 13.10 enums cannot define __int64 values
- // so we'll use const statics instead!
- // These must be cast to deal with the possibility of a SafeInt being given an enum as an argument
- const static T maxInt = static_cast(SafeIntMinMax< isSigned, bitCount >::max);
- const static T minInt = static_cast(SafeIntMinMax< isSigned, bitCount >::min);
-};
-
-template < typename T >
-const T IntTraits< T >::maxInt;
-template < typename T >
-const T IntTraits< T >::minInt;
-
-template < typename T, typename U > class SafeIntCompare
-{
-public:
- enum
- {
- isBothSigned = (IntTraits< T >::isSigned && IntTraits< U >::isSigned),
- isBothUnsigned = (!IntTraits< T >::isSigned && !IntTraits< U >::isSigned),
- isLikeSigned = ((bool)(IntTraits< T >::isSigned) == (bool)(IntTraits< U >::isSigned)),
- isCastOK = ((isLikeSigned && sizeof(T) >= sizeof(U)) ||
- (IntTraits< T >::isSigned && sizeof(T) > sizeof(U))),
- isBothLT32Bit = (IntTraits< T >::isLT32Bit && IntTraits< U >::isLT32Bit),
- isBothLT64Bit = (IntTraits< T >::isLT64Bit && IntTraits< U >::isLT64Bit)
- };
-};
-
-//all of the arithmetic operators can be solved by the same code within
-//each of these regions without resorting to compile-time constant conditionals
-//most operators collapse the problem into less than the 22 zones, but this is used
-//as the first cut
-//using this also helps ensure that we handle all of the possible cases correctly
-
-template < typename T, typename U > class IntRegion
-{
-public:
- enum
- {
- //unsigned-unsigned zone
- IntZone_UintLT32_UintLT32 = SafeIntCompare< T,U >::isBothUnsigned && SafeIntCompare< T,U >::isBothLT32Bit,
- IntZone_Uint32_UintLT64 = SafeIntCompare< T,U >::isBothUnsigned && IntTraits< T >::is32Bit && IntTraits< U >::isLT64Bit,
- IntZone_UintLT32_Uint32 = SafeIntCompare< T,U >::isBothUnsigned && IntTraits< T >::isLT32Bit && IntTraits< U >::is32Bit,
- IntZone_Uint64_Uint = SafeIntCompare< T,U >::isBothUnsigned && IntTraits< T >::is64Bit,
- IntZone_UintLT64_Uint64 = SafeIntCompare< T,U >::isBothUnsigned && IntTraits< T >::isLT64Bit && IntTraits< U >::is64Bit,
- //unsigned-signed
- IntZone_UintLT32_IntLT32 = !IntTraits< T >::isSigned && IntTraits< U >::isSigned && SafeIntCompare< T,U >::isBothLT32Bit,
- IntZone_Uint32_IntLT64 = IntTraits< T >::isUint32 && IntTraits< U >::isSigned && IntTraits< U >::isLT64Bit,
- IntZone_UintLT32_Int32 = !IntTraits< T >::isSigned && IntTraits< T >::isLT32Bit && IntTraits< U >::isInt32,
- IntZone_Uint64_Int = IntTraits< T >::isUint64 && IntTraits< U >::isSigned && IntTraits< U >::isLT64Bit,
- IntZone_UintLT64_Int64 = !IntTraits< T >::isSigned && IntTraits< T >::isLT64Bit && IntTraits< U >::isInt64,
- IntZone_Uint64_Int64 = IntTraits< T >::isUint64 && IntTraits< U >::isInt64,
- //signed-signed
- IntZone_IntLT32_IntLT32 = SafeIntCompare< T,U >::isBothSigned && SafeIntCompare< T, U >::isBothLT32Bit,
- IntZone_Int32_IntLT64 = SafeIntCompare< T,U >::isBothSigned && IntTraits< T >::is32Bit && IntTraits< U >::isLT64Bit,
- IntZone_IntLT32_Int32 = SafeIntCompare< T,U >::isBothSigned && IntTraits< T >::isLT32Bit && IntTraits< U >::is32Bit,
- IntZone_Int64_Int64 = SafeIntCompare< T,U >::isBothSigned && IntTraits< T >::isInt64 && IntTraits< U >::isInt64,
- IntZone_Int64_Int = SafeIntCompare< T,U >::isBothSigned && IntTraits< T >::is64Bit && IntTraits< U >::isLT64Bit,
- IntZone_IntLT64_Int64 = SafeIntCompare< T,U >::isBothSigned && IntTraits< T >::isLT64Bit && IntTraits< U >::is64Bit,
- //signed-unsigned
- IntZone_IntLT32_UintLT32 = IntTraits< T >::isSigned && !IntTraits< U >::isSigned && SafeIntCompare< T,U >::isBothLT32Bit,
- IntZone_Int32_UintLT32 = IntTraits< T >::isInt32 && !IntTraits< U >::isSigned && IntTraits< U >::isLT32Bit,
- IntZone_IntLT64_Uint32 = IntTraits< T >::isSigned && IntTraits< T >::isLT64Bit && IntTraits< U >::isUint32,
- IntZone_Int64_UintLT64 = IntTraits< T >::isInt64 && !IntTraits< U >::isSigned && IntTraits< U >::isLT64Bit,
- IntZone_Int_Uint64 = IntTraits< T >::isSigned && IntTraits< U >::isUint64 && IntTraits< T >::isLT64Bit,
- IntZone_Int64_Uint64 = IntTraits< T >::isInt64 && IntTraits< U >::isUint64
- };
-};
-
-
-// In all of the following functions, we have two versions
-// One for SafeInt, which throws C++ (or possibly SEH) exceptions
-// The non-throwing versions are for use by the helper functions that return success and failure.
-// Some of the non-throwing functions are not used, but are maintained for completeness.
-
-// There's no real alternative to duplicating logic, but keeping the two versions
-// immediately next to one another will help reduce problems
-
-
-// useful function to help with getting the magnitude of a negative number
-enum AbsMethod
-{
- AbsMethodInt,
- AbsMethodInt64,
- AbsMethodNoop
-};
-
-template < typename T >
-class GetAbsMethod
-{
-public:
- enum
- {
- method = IntTraits< T >::isLT64Bit && IntTraits< T >::isSigned ? AbsMethodInt :
- IntTraits< T >::isInt64 ? AbsMethodInt64 : AbsMethodNoop
- };
-};
-
-// let's go ahead and hard-code a dependency on the
-// representation of negative numbers to keep compilers from getting overly
-// happy with optimizing away things like -MIN_INT.
-template < typename T, int > class AbsValueHelper;
-
-template < typename T > class AbsValueHelper < T, AbsMethodInt>
-{
-public:
- static unsigned __int32 Abs( T t ) SAFEINT_NOTHROW
- {
- SAFEINT_ASSERT( t < 0 );
- return ~(unsigned __int32)t + 1;
- }
-};
-
-template < typename T > class AbsValueHelper < T, AbsMethodInt64 >
-{
-public:
- static unsigned __int64 Abs( T t ) SAFEINT_NOTHROW
- {
- SAFEINT_ASSERT( t < 0 );
- return ~(unsigned __int64)t + 1;
- }
-};
-
-template < typename T > class AbsValueHelper < T, AbsMethodNoop >
-{
-public:
- static T Abs( T t ) SAFEINT_NOTHROW
- {
- // Why are you calling Abs on an unsigned number ???
- SAFEINT_ASSERT( false );
- return t;
- }
-};
-
-template < typename T, bool > class NegationHelper;
-// Previous versions had an assert that the type being negated was 32-bit or higher
-// In retrospect, this seems like something to just document
-// Negation will normally upcast to int
-// For example -(unsigned short)0xffff == (int)0xffff0001
-// This class will retain the type, and will truncate, which may not be what
-// you wanted
-// If you want normal operator casting behavior, do this:
-// SafeInt ss = 0xffff;
-// then:
-// -(SafeInt(ss))
-// will then emit a signed int with the correct value and bitfield
-
-template < typename T > class NegationHelper // Signed
-{
-public:
- template
- static T NegativeThrow( T t ) SAFEINT_CPP_THROW
- {
- // corner case
- if( t != IntTraits< T >::minInt )
- {
- // cast prevents unneeded checks in the case of small ints
- return -t;
- }
- E::SafeIntOnOverflow();
- }
-
- static bool Negative( T t, T& ret ) SAFEINT_NOTHROW
- {
- // corner case
- if( t != IntTraits< T >::minInt )
- {
- // cast prevents unneeded checks in the case of small ints
- ret = -t;
- return true;
- }
- return false;
- }
-};
-
-// Helper classes to work keep compilers from
-// optimizing away negation
-template < typename T > class SignedNegation;
-
-template <>
-class SignedNegation