Architecture specific change in rpms/freecad.git
by githook-noreply@fedoraproject.org
The package rpms/freecad.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/freecad.git/commit/?id=f7440d5416....
Change:
+%ifarch x86_64 aarch64
Thanks.
Full change:
============
commit f7440d54161a5206774c017dfb956425ec1ccad8
Author: Richard Shaw <hobbes1069(a)gmail.com>
Date: Sat Jan 14 06:48:30 2023 -0600
Add ifarch since Qt WebEngine seems to only be available for x86_64 and aarch64.
diff --git a/freecad.spec b/freecad.spec
index 8eaed26..988d915 100644
--- a/freecad.spec
+++ b/freecad.spec
@@ -61,7 +61,11 @@ BuildRequires: eigen3-devel
BuildRequires: cmake(Qt5Core)
BuildRequires: cmake(Qt5Svg)
BuildRequires: cmake(Qt5UiTools)
+%ifarch x86_64 aarch64
BuildRequires: cmake(Qt5WebEngine)
+%else
+BuildRequires: cmake(Qt5WebKit)
+%endif
BuildRequires: cmake(Qt5XmlPatterns)
#BuildRequires: SoQt-devel
BuildRequires: xerces-c xerces-c-devel
commit 8c8cc452e8d1ca10257bfb6c4cf3a4770e7fffd6
Author: Richard Shaw <hobbes1069(a)gmail.com>
Date: Fri Jan 13 21:16:02 2023 -0600
Update to 0.20.2.
diff --git a/.gitignore b/.gitignore
index 21aaced..6130b33 100644
--- a/.gitignore
+++ b/.gitignore
@@ -20,3 +20,4 @@
/FreeCAD-0.19.4.tar.gz
/FreeCAD-0.20.tar.gz
/FreeCAD-0.20.1.tar.gz
+/FreeCAD-0.20.2.tar.gz
diff --git a/freecad.spec b/freecad.spec
index da89492..8eaed26 100644
--- a/freecad.spec
+++ b/freecad.spec
@@ -20,8 +20,8 @@
Name: freecad
Epoch: 1
-Version: 0.20.1
-Release: 1%{?dist}.1
+Version: 0.20.2
+Release: 1%{?dist}
Summary: A general purpose 3D CAD modeler
License: GPLv2+
@@ -30,9 +30,6 @@ Source0: https://github.com/FreeCAD/FreeCAD/archive/%{version}%{?pre:_pre
Source102: freecad.1
Patch0: freecad-unbundled-pycxx.patch
-# The following two patches are for Python 3.11 compatibility
-Patch1: https://github.com/FreeCAD/FreeCAD/commit/1ae55905ba.patch
-Patch2: https://github.com/FreeCAD/FreeCAD/commit/6820e0a9ec.patch
# https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval
%if 0%{?fedora} > 36
@@ -244,6 +241,9 @@ desktop-file-validate \
%changelog
+* Fri Jan 13 2023 Richard Shaw <hobbes1069(a)gmail.com> - 1:0.20.2-1
+- Update to 0.20.2.
+
* Tue Aug 30 2022 Richard Shaw <hobbes1069(a)gmail.com> - 1:0.20.1-1.1
- Rebuild for retagged upstream source, fixes rhbz#2121671.
- Readd Python 3.11 patches that did not make it into the current release.
diff --git a/sources b/sources
index 79cb3db..794f262 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (FreeCAD-0.20.1.tar.gz) = ab4cfab4008300b8273769b9395602261c88c19f0893dabe6498a2eac020f1fe3fbf7284928144f1d4147d8627a47d83a40a1777a298673da2e24d956006d827
+SHA512 (FreeCAD-0.20.2.tar.gz) = f3f90751c7a19a112f7683aafc920ff913962b36aa1886990908d9597fe0565e7e108eca9cd35edfc1640ef6400674f8ade26310f43f9dc3d5b054625403ad70
1 year, 4 months
[Report] Packages Restricting Arches
by root
List of packages currently excluding arches (2494)
===========================================
- 0ad
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le
- 90-Second-Portraits
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc64le
- BareBonesBrowserLaunch
ExclusiveArch: %{java_arches} noarch
- CardManager
ExclusiveArch: %{java_arches} noarch
- GAPDoc
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- GoldenCheetah
ExclusiveArch: %{qt5_qtwebengine_arches}
- GtkAda
ExclusiveArch: %{GPRbuild_arches}
- GtkAda3
ExclusiveArch: %{GPRbuild_arches}
- IPAddress
ExclusiveArch: %{java_arches} noarch
- Mars
ExclusiveArch: %{java_arches} noarch
- OpenColorIO
ExclusiveArch: x86_64 ppc64le
- OpenImageIO
ExclusiveArch: x86_64 ppc64le
- OpenMolcas
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- OpenStego
ExclusiveArch: %{java_arches} noarch
- PragmARC
ExclusiveArch: %{GPRbuild_arches}
- R-V8
ExclusiveArch: %{nodejs_arches}
- R-rJava
ExclusiveArch: %{java_arches}
- RdRand
ExclusiveArch: %{ix86} x86_64
- RediSearch
ExclusiveArch: x86_64
- SLOF
ExclusiveArch: ppc64le
- YafaRay
ExclusiveArch: %{ix86} x86_64
- aardvark-dns
ExclusiveArch: %{rust_arches}
- accel-config
ExclusiveArch: %{ix86} x86_64
- acpid
ExclusiveArch: ia64 x86_64 %{ix86} %{arm} aarch64
- ahven
ExclusiveArch: %{GPRbuild_arches}
- algobox
ExclusiveArch: %{qt5_qtwebengine_arches}
- american-fuzzy-lop
ExclusiveArch: %{ix86} x86_64 s390x
- anet
ExclusiveArch: %{GPRbuild_arches}
- ant
ExclusiveArch: %{java_arches} noarch
- ant-antunit
ExclusiveArch: %{java_arches} noarch
- antlr
ExclusiveArch: %{java_arches}
- antlr-maven-plugin
ExclusiveArch: %{java_arches} noarch
- antlr3
ExclusiveArch: %{java_arches}
- antlr32
ExclusiveArch: %{java_arches} noarch
- antlr4-project
ExclusiveArch: %{java_arches}
- antlrworks
ExclusiveArch: %{java_arches} noarch
- aopalliance
ExclusiveArch: %{java_arches} noarch
- apache-commons-beanutils
ExclusiveArch: %{java_arches} noarch
- apache-commons-cli
ExclusiveArch: %{java_arches} noarch
- apache-commons-codec
ExclusiveArch: %{java_arches} noarch
- apache-commons-collections
ExclusiveArch: %{java_arches} noarch
- apache-commons-collections4
ExclusiveArch: %{java_arches} noarch
- apache-commons-compress
ExclusiveArch: %{java_arches} noarch
- apache-commons-digester
ExclusiveArch: %{java_arches} noarch
- apache-commons-exec
ExclusiveArch: %{java_arches} noarch
- apache-commons-fileupload
ExclusiveArch: %{java_arches} noarch
- apache-commons-io
ExclusiveArch: %{java_arches} noarch
- apache-commons-jxpath
ExclusiveArch: %{java_arches} noarch
- apache-commons-lang3
ExclusiveArch: %{java_arches} noarch
- apache-commons-logging
ExclusiveArch: %{java_arches} noarch
- apache-commons-math
ExclusiveArch: %{java_arches} noarch
- apache-commons-modeler
ExclusiveArch: %{java_arches} noarch
- apache-commons-net
ExclusiveArch: %{java_arches} noarch
- apache-commons-parent
ExclusiveArch: %{java_arches} noarch
- apache-commons-pool
ExclusiveArch: %{java_arches} noarch
- apache-ivy
ExclusiveArch: %{java_arches} noarch
- apache-parent
ExclusiveArch: %{java_arches} noarch
- apache-resource-bundles
ExclusiveArch: %{java_arches} noarch
- apache-sshd
ExclusiveArch: %{java_arches} noarch
- apiguardian
ExclusiveArch: %{java_arches} noarch
- apmd
ExclusiveArch: %{ix86}
- appstream-generator
ExclusiveArch: %{ldc_arches}
- aqute-bnd
ExclusiveArch: %{java_arches} noarch
- args4j
ExclusiveArch: %{java_arches} noarch
- arm-trusted-firmware
ExclusiveArch: aarch64
- assertj-core
ExclusiveArch: %{java_arches} noarch
- atinject
ExclusiveArch: %{java_arches} noarch
- aunit
ExclusiveArch: %GPRbuild_arches
- auto
ExclusiveArch: %{java_arches} noarch
- avgtime
ExclusiveArch: %{ldc_arches}
- aws
ExclusiveArch: %GPRbuild_arches
- azure-cli
ExclusiveArch: %{java_arches} noarch
- batik
ExclusiveArch: %{java_arches} noarch
- bcal
ExclusiveArch: x86_64 aarch64 ia64 ppc64 ppc64le s390x
- bcc
ExclusiveArch: x86_64 %{power64} aarch64 s390x armv7hl
- bcel
ExclusiveArch: %{java_arches} noarch
- bcm283x-firmware
ExclusiveArch: %{arm} aarch64
- beansbinding
ExclusiveArch: %{java_arches} noarch
- belle-sip
ExclusiveArch: %{java_arches}
- berusky2
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 %{mips}
- beust-jcommander
ExclusiveArch: %{java_arches} noarch
- biosdevname
ExclusiveArch: %{ix86} x86_64
- blender
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- bless
ExclusiveArch: %mono_arches
- bolzplatz2006
ExclusiveArch: %{java_arches}
- bouncycastle
ExclusiveArch: %{java_arches} noarch
- bpftrace
ExclusiveArch: x86_64 %{power64} aarch64 s390x
- brazil
ExclusiveArch: %{java_arches} noarch
- bsf
ExclusiveArch: %{java_arches} noarch
- bsh
ExclusiveArch: %{java_arches} noarch
- buildah
ExclusiveArch: %{golang_arches}
- buildnumber-maven-plugin
ExclusiveArch: %{java_arches} noarch
- byte-buddy
ExclusiveArch: %{java_arches} noarch
- byteman
ExclusiveArch: %{java_arches} noarch
- cachelib
ExclusiveArch: x86_64 aarch64 ppc64le
- calamares
ExclusiveArch: %{ix86} x86_64 aarch64
- calibre
ExclusiveArch: %{qt5_qtwebengine_arches}
- cambozola
ExclusiveArch: %{java_arches} noarch
- canl-java
ExclusiveArch: %{java_arches} noarch
- ccdciel
ExclusiveArch: %{fpc_arches}
- cdcollect
ExclusiveArch: %{mono_arches}
- cdi-api
ExclusiveArch: %{java_arches} noarch
- ceph
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- cglib
ExclusiveArch: %{java_arches} noarch
- chromium
ExclusiveArch: x86_64 i686
ExclusiveArch: x86_64 aarch64
ExclusiveArch: x86_64 i686 aarch64
- cjdns
ExclusiveArch: %{nodejs_arches}
- classloader-leak-test-framework
ExclusiveArch: %{java_arches} noarch
- classpathless-compiler
ExclusiveArch: %{java_arches} noarch
- clevis-pin-tpm2
ExclusiveArch: %{rust_arches}
- clojure
ExclusiveArch: %{java_arches} noarch
- clojure-core-specs-alpha
ExclusiveArch: %{java_arches} noarch
- clojure-maven-plugin
ExclusiveArch: %{java_arches} noarch
- clojure-spec-alpha
ExclusiveArch: %{java_arches} noarch
- cmospwd
ExclusiveArch: %{ix86} x86_64
- cmrt
ExclusiveArch: %{ix86} x86_64 ia64
- codehaus-parent
ExclusiveArch: %{java_arches} noarch
- coffee-script
ExclusiveArch: %{nodejs_arches} noarch
- colorful
ExclusiveArch: %{fpc_arches}
- colossus
ExclusiveArch: %{java_arches} noarch
- conmon
ExclusiveArch: %{go_arches}
- console-image-viewer
ExclusiveArch: %{java_arches} noarch
- containernetworking-plugins
ExclusiveArch: %{golang_arches}
- coq
ExclusiveArch: %{java_arches}
- cortado
ExclusiveArch: %{java_arches} noarch
- cpu-x
ExclusiveArch: i686 x86_64
- cpufetch
ExclusiveArch: %{arm} aarch64 x86_64 ppc ppc64 ppc64le
- cpuid
ExclusiveArch: %{ix86} x86_64
- cqrlog
ExclusiveArch: %{fpc_arches}
- crash
ExclusiveArch: %{ix86} ia64 x86_64 ppc ppc64 s390 s390x %{arm} aarch64 ppc64le
- crash-gcore-command
ExclusiveArch: aarch64 ppc64le x86_64
- crash-trace-command
ExclusiveArch: aarch64 ppc64le s390x x86_64
- cri-o
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- cri-tools
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- criu
ExclusiveArch: x86_64 %{arm} ppc64le aarch64 s390x
- crun
ExclusiveArch: %{golang_arches}
- cryptlib
ExclusiveArch: x86_64 aarch64 ppc64le
- crypto-policies
ExclusiveArch: %{java_arches} noarch
- cryptobone
ExclusiveArch: x86_64 ppc64le aarch64
- csslint
ExclusiveArch: %{nodejs_arches} noarch
- cvc4
ExclusiveArch: %{java_arches}
- daq
ExclusiveArch: x86_64 aarch64
- dbus-parsec
ExclusiveArch: %{rust_arches}
- dbus-sharp
ExclusiveArch: %mono_arches
- dbus-sharp-glib
ExclusiveArch: %mono_arches
- decentxml
ExclusiveArch: %{java_arches} noarch
- deepin-daemon
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- deepin-desktop-schemas
ExclusiveArch: %{go_arches}
- directory-maven-plugin
ExclusiveArch: %{java_arches} noarch
- dirgra
ExclusiveArch: %{java_arches} noarch
- disruptor
ExclusiveArch: %{java_arches} noarch
- ditaa
ExclusiveArch: %{java_arches} noarch
- dlm
ExclusiveArch: i686 x86_64
- dmidecode
ExclusiveArch: %{ix86} x86_64 ia64 aarch64
- dmtcp
ExclusiveArch: x86_64
- docker-distribution
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- dolphin-emu
ExclusiveArch: x86_64 aarch64
- dom4j
ExclusiveArch: %{java_arches} noarch
- dotnet6.0
ExclusiveArch: aarch64 x86_64 s390x
ExclusiveArch: x86_64
- dotnet7.0
ExclusiveArch: aarch64 ppc64le s390x x86_64
ExclusiveArch: x86_64
- doublecmd
ExclusiveArch: %{ix86} x86_64
- dpdk
ExclusiveArch: x86_64 i686 aarch64 ppc64le
- dub
ExclusiveArch: %{ldc_arches}
- dxvk-native
ExclusiveArch: %{ix86} x86_64
- dyninst
ExclusiveArch: %{ix86} x86_64 ppc64le aarch64
- e3
ExclusiveArch: %{ix86} x86_64
- easymock
ExclusiveArch: %{java_arches} noarch
- ecj
ExclusiveArch: %{java_arches} noarch
- eclipse-swt
ExclusiveArch: %{java_arches}
- ed25519-java
ExclusiveArch: %{java_arches} noarch
- edk2
ExclusiveArch: x86_64 aarch64
- efibootmgr
ExclusiveArch: %{efi}
- efifs
ExclusiveArch: %{efi}
- efitools
ExclusiveArch: %{efi}
- efivar
ExclusiveArch: %{efi}
- elk
ExclusiveArch: x86_64 %{ix86}
ExclusiveArch: x86_64 %{ix86} aarch64 %{arm} %{power64}
- emacs-slime
ExclusiveArch: %{arm} %{ix86} x86_64 ppc sparcv9 aarch64
- embree
ExclusiveArch: aarch64 x86_64
- enjarify
ExclusiveArch: %{java_arches} noarch
- enki
ExclusiveArch: %{qt5_qtwebengine_arches} noarch
- envytools
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- eric
ExclusiveArch: %{qt5_qtwebengine_arches} noarch
- erlang-corba
ExclusiveArch: %{java_arches}
- eth-tools
ExclusiveArch: x86_64
- exec-maven-plugin
ExclusiveArch: %{java_arches} noarch
- external-editor-revived
ExclusiveArch: %{rust_arches}
- extra-enforcer-rules
ExclusiveArch: %{java_arches} noarch
- fasterxml-oss-parent
ExclusiveArch: %{java_arches} noarch
- fb303
ExclusiveArch: x86_64 aarch64 ppc64le
- fbthrift
ExclusiveArch: x86_64 aarch64 ppc64le
- fcitx-libpinyin
ExclusiveArch: %{qt5_qtwebengine_arches}
- fedora-dockerfiles
ExclusiveArch: %{go_arches}
- felix-parent
ExclusiveArch: %{java_arches} noarch
- felix-utils
ExclusiveArch: %{java_arches} noarch
- fernflower
ExclusiveArch: %{java_arches} noarch
- fes
ExclusiveArch: %{ix86} x86_64
- filedrop
ExclusiveArch: %{java_arches} noarch
- fishbowl
ExclusiveArch: %{java_arches} noarch
- fizz
ExclusiveArch: x86_64 aarch64 ppc64le
- flocq
ExclusiveArch: %{java_arches}
- florist
ExclusiveArch: %{GPRbuild_arches}
- fluent-bit
ExclusiveArch: x86_64 aarch64
- flute
ExclusiveArch: %{java_arches} noarch
- folly
ExclusiveArch: x86_64 aarch64 ppc64le
- fop
ExclusiveArch: %{java_arches} noarch
- forge-parent
ExclusiveArch: %{java_arches} noarch
- fpc
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64 ppc64le
- frama-c
ExclusiveArch: %{java_arches}
- freecol
ExclusiveArch: %{java_arches} noarch
- freemarker
ExclusiveArch: %{java_arches} noarch
- freerouting
ExclusiveArch: %{java_arches} noarch
- frescobaldi
ExclusiveArch: %{qt5_qtwebengine_arches}
- frysk
ExclusiveArch: x86_64 ppc64
- fusesource-pom
ExclusiveArch: %{java_arches} noarch
- fwts
ExclusiveArch: x86_64 %{arm} aarch64 s390x riscv64 %{power64}
- fwupd-efi
ExclusiveArch: x86_64 aarch64
- ga
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le
- gap-pkg-ace
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gap-pkg-aclib
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-alnuth
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-atlasrep
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-autodoc
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-automata
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-autpgrp
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-browse
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gap-pkg-caratinterface
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-circle
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-cohomolo
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gap-pkg-congruence
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-corelg
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-crime
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-crisp
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-crypting
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gap-pkg-cryst
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-crystcat
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-ctbllib
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-curlinterface
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gap-pkg-cvec
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gap-pkg-datastructures
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gap-pkg-design
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-digraphs
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gap-pkg-edim
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gap-pkg-factint
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-ferret
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gap-pkg-fga
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-fining
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-float
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gap-pkg-format
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-forms
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-fr
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-francy
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-gbnp
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-genss
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-grape
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-groupoids
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-grpconst
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-guava
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gap-pkg-hap
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-hapcryst
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-hecke
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch noarch
- gap-pkg-images
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-io
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gap-pkg-irredsol
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-json
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gap-pkg-jupyterkernel
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-jupyterviz
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-laguna
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-liealgdb
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-liepring
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-liering
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-loops
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-lpres
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-mapclass
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-nautytracesinterface
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gap-pkg-nq
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gap-pkg-openmath
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-orb
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gap-pkg-polenta
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-polycyclic
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-polymaking
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-primgrp
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-profiling
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gap-pkg-qpa
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-quagroup
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-radiroot
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-recog
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-repsn
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-resclasses
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-scscp
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-semigroups
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gap-pkg-singular
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-sla
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-smallgrp
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-smallsemi
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-sonata
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-sophus
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-spinsym
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-standardff
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gap-pkg-tomlib
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-toric
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-transgrp
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-utils
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-uuid
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-xmod
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-zeromqinterface
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gappalib-coq
ExclusiveArch: %{java_arches}
- gbrainy
ExclusiveArch: %mono_arches
- gdb
ExclusiveArch: %{ix86} x86_64
- gdb-exploitable
ExclusiveArch: x86_64 i386
ExclusiveArch: x86_64 noarch
- gearhead1
ExclusiveArch: %{fpc_arches}
- gearhead2
ExclusiveArch: %{fpc_arches}
- ghdl
ExclusiveArch: %{GNAT_arches}
- ghostwriter
ExclusiveArch: %{qt5_qtwebengine_arches}
- gio-sharp
ExclusiveArch: %mono_arches
- gir-to-d
ExclusiveArch: %{ldc_arches}
- git-octopus
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- gitqlient
ExclusiveArch: %{qt5_qtwebengine_arches}
- giver
ExclusiveArch: %{mono_arches}
- gkeyfile-sharp
ExclusiveArch: %mono_arches
- glibc32
ExclusiveArch: x86_64
- glibd
ExclusiveArch: %{ldc_arches}
- gnatcoll
ExclusiveArch: %{GPRbuild_arches}
- gnatcoll-bindings
ExclusiveArch: %{GPRbuild_arches}
- gnatcoll-db
ExclusiveArch: %{GPRbuild_arches}
- gnome-boxes
ExclusiveArch: x86_64
- gnome-desktop-sharp
ExclusiveArch: %mono_arches
- gnome-do
ExclusiveArch: %mono_arches
- gnome-keyring-sharp
ExclusiveArch: %mono_arches
- gnome-rdp
ExclusiveArch: %{mono_arches}
- gnome-sharp
ExclusiveArch: %mono_arches
- gnome-subtitles
ExclusiveArch: %mono_arches
- gnu-efi
ExclusiveArch: %{efi}
- go-bindata
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- godep
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang
ExclusiveArch: %{golang_arches}
- gomtree
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- google-gson
ExclusiveArch: %{java_arches} noarch
- google-guice
ExclusiveArch: %{java_arches} noarch
- gotun
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
ExclusiveArch: x86_64
- goverlay
ExclusiveArch: %{fpc_arches}
- gprbuild
ExclusiveArch: %{GPRbuild_arches} %{bootstrap_arch}
- gprolog
ExclusiveArch: x86_64 %{ix86} ppc alpha aarch64
- grafana
ExclusiveArch: %{grafana_arches}
- grafana-pcp
ExclusiveArch: %{grafanapcp_arches}
- gtk-sharp-beans
ExclusiveArch: %mono_arches
- gtk-sharp2
ExclusiveArch: %mono_arches
- gtk-sharp3
ExclusiveArch: %{mono_arches}
- gtkd
ExclusiveArch: %{ldc_arches}
- guava
ExclusiveArch: %{java_arches} noarch
- gudev-sharp
ExclusiveArch: %mono_arches
- guestfs-tools
ExclusiveArch: %{kernel_arches}
- hamcrest
ExclusiveArch: %{java_arches} noarch
- harec
ExclusiveArch: x86_64 aarch64
- hawtjni
ExclusiveArch: %{java_arches} noarch
- hedgewars
ExclusiveArch: %{fpc_arches}
- hibernate-jpa-2.0-api
ExclusiveArch: %{java_arches} noarch
- hibernate-jpa-2.1-api
ExclusiveArch: %{java_arches} noarch
- hid4java
ExclusiveArch: %{java_arches} noarch
- hsakmt
ExclusiveArch: x86_64 aarch64 ppc64le
- httpcomponents-client
ExclusiveArch: %{java_arches} noarch
- httpcomponents-core
ExclusiveArch: %{java_arches} noarch
- httpcomponents-project
ExclusiveArch: %{java_arches} noarch
- hyena
ExclusiveArch: %{mono_arches}
- hyperscan
ExclusiveArch: x86_64
- hyperv-daemons
ExclusiveArch: i686 x86_64 aarch64
- i3status-rs
ExclusiveArch: %{rust_arches}
- icaro
ExclusiveArch: %{ix86} x86_64 noarch
- icu4j
ExclusiveArch: %{java_arches} noarch
- imagej
ExclusiveArch: %{java_arches} noarch
- imhex
ExclusiveArch: x86_64 %{arm64} ppc64le
- imvirt
ExclusiveArch: %{ix86} x86_64 ia64
- indistarter
ExclusiveArch: %{fpc_arches}
- infinipath-psm
ExclusiveArch: x86_64
- intel-cm-compiler
ExclusiveArch: i686 x86_64
- intel-cmt-cat
ExclusiveArch: x86_64 i686 i586
ExclusiveArch: x86_64 i686 i586
- intel-compute-runtime
ExclusiveArch: x86_64
- intel-gmmlib
ExclusiveArch: x86_64 i686
- intel-igc
ExclusiveArch: x86_64
- intel-ipp-crypto-mb
ExclusiveArch: x86_64
ExclusiveArch: x86_64
- intel-ipsec-mb
ExclusiveArch: x86_64
ExclusiveArch: x86_64
- intel-mediasdk
ExclusiveArch: x86_64
- intel-undervolt
ExclusiveArch: i386 x86_64
- ioport
ExclusiveArch: %{ix86} x86_64
- ipmctl
ExclusiveArch: x86_64
- ispc
ExclusiveArch: x86_64 aarch64
- iucode-tool
ExclusiveArch: %{ix86} x86_64
- iyfct
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc64le
- jFormatString
ExclusiveArch: %{java_arches} noarch
- jackson-annotations
ExclusiveArch: %{java_arches} noarch
- jackson-bom
ExclusiveArch: %{java_arches} noarch
- jackson-core
ExclusiveArch: %{java_arches} noarch
- jackson-databind
ExclusiveArch: %{java_arches} noarch
- jackson-dataformats-binary
ExclusiveArch: %{java_arches} noarch
- jackson-dataformats-text
ExclusiveArch: %{java_arches} noarch
- jackson-jaxrs-providers
ExclusiveArch: %{java_arches} noarch
- jackson-modules-base
ExclusiveArch: %{java_arches} noarch
- jackson-parent
ExclusiveArch: %{java_arches} noarch
- jacoco
ExclusiveArch: %{java_arches} noarch
- jacop
ExclusiveArch: %{java_arches} noarch
- jakarta-activation
ExclusiveArch: %{java_arches} noarch
- jakarta-activation1
ExclusiveArch: %{java_arches} noarch
- jakarta-annotations
ExclusiveArch: %{java_arches} noarch
- jakarta-el
ExclusiveArch: %{java_arches} noarch
- jakarta-interceptors
ExclusiveArch: %{java_arches} noarch
- jakarta-json
ExclusiveArch: %{java_arches} noarch
- jakarta-mail
ExclusiveArch: %{java_arches} noarch
- jakarta-oro
ExclusiveArch: %{java_arches} noarch
- jakarta-saaj
ExclusiveArch: %{java_arches} noarch
- jakarta-server-pages
ExclusiveArch: %{java_arches} noarch
- jakarta-servlet
ExclusiveArch: %{java_arches} noarch
- jakarta-xml-ws
ExclusiveArch: %{java_arches} noarch
- janino
ExclusiveArch: %{java_arches} noarch
- jansi
ExclusiveArch: %{java_arches}
- jansi-native
ExclusiveArch: %{java_arches}
- jansi1
ExclusiveArch: %{java_arches} noarch
- java-1.8.0-openjdk
ExclusiveArch: %{java_arches}
- java-1.8.0-openjdk-aarch32
ExclusiveArch: %{arm}
- java-11-openjdk
ExclusiveArch: %{java_arches}
- java-11-openjdk-portable
ExclusiveArch: %{java_arches}
- java-17-openjdk
ExclusiveArch: %{java_arches}
- java-17-openjdk-portable
ExclusiveArch: %{java_arches}
- java-diff-utils
ExclusiveArch: %{java_arches} noarch
- java-dirq
ExclusiveArch: %{java_arches} noarch
- java-jd-decompiler
ExclusiveArch: %{java_arches} noarch
- java-latest-openjdk
ExclusiveArch: %{java_arches}
- java-latest-openjdk-portable
ExclusiveArch: %{java_arches}
- java-runtime-decompiler
ExclusiveArch: %{java_arches} noarch
- java-scrypt
ExclusiveArch: %{java_arches} noarch
- java_cup
ExclusiveArch: %{java_arches} noarch
- javacc
ExclusiveArch: %{java_arches} noarch
- javacc-maven-plugin
ExclusiveArch: %{java_arches} noarch
- javaewah
ExclusiveArch: %{java_arches} noarch
- javapackages-bootstrap
ExclusiveArch: %{java_arches} noarch
- javaparser
ExclusiveArch: %{java_arches} noarch
- javapoet
ExclusiveArch: %{java_arches} noarch
- javassist
ExclusiveArch: %{java_arches} noarch
- jaxb
ExclusiveArch: %{java_arches} noarch
- jaxb-api
ExclusiveArch: %{java_arches} noarch
- jaxb-api2
ExclusiveArch: %{java_arches} noarch
- jaxb-dtd-parser
ExclusiveArch: %{java_arches} noarch
- jaxb-fi
ExclusiveArch: %{java_arches} noarch
- jaxb-istack-commons
ExclusiveArch: %{java_arches} noarch
- jaxb-stax-ex
ExclusiveArch: %{java_arches} noarch
- jaxen
ExclusiveArch: %{java_arches} noarch
- jboss-jaxrs-2.0-api
ExclusiveArch: %{java_arches} noarch
- jboss-logging
ExclusiveArch: %{java_arches} noarch
- jboss-logging-tools
ExclusiveArch: %{java_arches} noarch
- jboss-parent
ExclusiveArch: %{java_arches} noarch
- jchardet
ExclusiveArch: %{java_arches} noarch
- jcip-annotations
ExclusiveArch: %{java_arches} noarch
- jcommon
ExclusiveArch: %{java_arches} noarch
- jcommon-serializer
ExclusiveArch: %{java_arches} noarch
- jctools
ExclusiveArch: %{java_arches} noarch
- jcuber
ExclusiveArch: %{java_arches} noarch
- jdeparser
ExclusiveArch: %{java_arches} noarch
- jdepend
ExclusiveArch: %{java_arches} noarch
- jdependency
ExclusiveArch: %{java_arches} noarch
- jdom
ExclusiveArch: %{java_arches} noarch
- jdom2
ExclusiveArch: %{java_arches} noarch
- jericho-html
ExclusiveArch: %{java_arches} noarch
- jetty
ExclusiveArch: %{java_arches} noarch
- jflex
ExclusiveArch: %{java_arches} noarch
- jfreechart
ExclusiveArch: %{java_arches} noarch
- jgit
ExclusiveArch: %{java_arches} noarch
- jglobus
ExclusiveArch: %{java_arches} noarch
- jgoodies-common
ExclusiveArch: %{java_arches} noarch
- jgoodies-forms
ExclusiveArch: %{java_arches} noarch
- jgoodies-looks
ExclusiveArch: %{java_arches} noarch
- jigawatts
ExclusiveArch: x86_64 %{arm} ppc64le aarch64 s390x
- jline
ExclusiveArch: %{java_arches} noarch
- jline2
ExclusiveArch: %{java_arches} noarch
- jmock
ExclusiveArch: %{java_arches} noarch
- jmol
ExclusiveArch: %{java_arches} noarch
- jna
ExclusiveArch: %{java_arches}
- jneuroml-core
ExclusiveArch: %{java_arches} noarch
- jni-inchi
ExclusiveArch: %{java_arches}
- jol
ExclusiveArch: %{java_arches} noarch
- jolokia-jvm-agent
ExclusiveArch: %{java_arches} noarch
- joni
ExclusiveArch: %{java_arches} noarch
- jopt-simple
ExclusiveArch: %{java_arches} noarch
- jorbis
ExclusiveArch: %{java_arches} noarch
- jowl
ExclusiveArch: %{nodejs_arches} noarch
- jpanoramamaker
ExclusiveArch: %{java_arches} noarch
- jpcap
ExclusiveArch: %java_arches
- jsch
ExclusiveArch: %{java_arches} noarch
- jsch-agent-proxy
ExclusiveArch: %{java_arches} noarch
- json_simple
ExclusiveArch: %{java_arches} noarch
- jsr-305
ExclusiveArch: %{java_arches} noarch
- jssc
ExclusiveArch: %{java_arches}
- jtidy
ExclusiveArch: %{java_arches} noarch
- junit
ExclusiveArch: %{java_arches} noarch
- junit5
ExclusiveArch: %{java_arches} noarch
- juniversalchardet
ExclusiveArch: %{java_arches} noarch
- jzlib
ExclusiveArch: %{java_arches} noarch
- kchmviewer
ExclusiveArch: %{qt5_qtwebengine_arches}
- kernel
ExclusiveArch: noarch x86_64 s390x %{arm} aarch64 ppc64le
ExclusiveArch: noarch i386 i686 x86_64 s390x %{arm} aarch64 ppc64le
- keylime-agent-rust
ExclusiveArch: %{rust_arches}
- keyring-ima-signer
ExclusiveArch: %{rust_arches}
- kf5-akonadi-search
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-audiocd-kio
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-kalarmcal
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-kblog
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-kcalendarcore
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-kcalendarutils
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-kitinerary
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-ktnef
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-libkdcraw
ExclusiveArch: x86_64 ppc64le %{arm}
- kicad
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le
- kiwix-desktop
ExclusiveArch: %{qt5_qtwebengine_arches}
- klee
ExclusiveArch: x86_64
- knot-resolver
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- knotes
ExclusiveArch: x86_64 %{arm}
- kubernetes
ExclusiveArch: x86_64 aarch64 ppc64le s390x %{arm}
- laf-plugin
ExclusiveArch: %{java_arches} noarch
- lazarus
ExclusiveArch: %{fpc_arches}
- lazpaint
ExclusiveArch: %{fpc_arches}
- ldapjdk
ExclusiveArch: %{java_arches} noarch
- ldc
ExclusiveArch: %{ldc_arches} ppc64le
- libbase
ExclusiveArch: %{java_arches} noarch
- libclc
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 %{power64} s390x
- libcxl
ExclusiveArch: %{power64}
- libdfp
ExclusiveArch: ppc ppc64 ppc64le s390 s390x x86_64
- libdispatch
ExclusiveArch: x86_64 aarch64 ppc64le
- libfonts
ExclusiveArch: %{java_arches} noarch
- libformula
ExclusiveArch: %{java_arches} noarch
- libguestfs
ExclusiveArch: %{kernel_arches}
- libica
ExclusiveArch: s390 s390x
- libipt
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
- libkgapi
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- libkrun
ExclusiveArch: x86_64 aarch64
- libkrunfw
ExclusiveArch: x86_64 aarch64
- liblayout
ExclusiveArch: %{java_arches} noarch
- libloader
ExclusiveArch: %{java_arches} noarch
- libnxz
ExclusiveArch: ppc64le
- libocxl
ExclusiveArch: ppc64le
- libpmemobj-cpp
ExclusiveArch: x86_64 ppc64le
- libpsm2
ExclusiveArch: x86_64
- libquentier
ExclusiveArch: %{qt5_qtwebengine_arches}
- libreoffice-TexMaths
ExclusiveArch: %{java_arches}
- librepository
ExclusiveArch: %{java_arches} noarch
- libretro-desmume2015
ExclusiveArch: i686 x86_64
- librtas
ExclusiveArch: %{power64}
- libserializer
ExclusiveArch: %{java_arches} noarch
- libservicelog
ExclusiveArch: ppc %{power64}
- libsmbios
ExclusiveArch: x86_64 %{ix86}
- libunwind
ExclusiveArch: %{arm} aarch64 hppa ia64 mips ppc %{power64} s390x %{ix86} x86_64
- libva-intel-hybrid-driver
ExclusiveArch: %{ix86} x86_64 ia64
- libvirt-java
ExclusiveArch: %{java_arches} noarch
- libvma
ExclusiveArch: x86_64 ppc64le ppc64 aarch64
- libvmi
ExclusiveArch: x86_64
- libvpd
ExclusiveArch: %{power64}
- libxsmm
ExclusiveArch: x86_64
- libzdnn
ExclusiveArch: s390x
- libzfcphbaapi
ExclusiveArch: s390 s390x
- libzpc
ExclusiveArch: s390x
- llhttp
ExclusiveArch: %{nodejs_arches}
- log4j
ExclusiveArch: %{java_arches} noarch
- log4net
ExclusiveArch: %mono_arches
- lrmi
ExclusiveArch: %{ix86}
- lsvpd
ExclusiveArch: %{power64}
- luajit
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
- lucene
ExclusiveArch: %{java_arches} noarch
- luxcorerender
ExclusiveArch: x86_64
- mactel-boot
ExclusiveArch: x86_64
- manifest-tool
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- mariadb-java-client
ExclusiveArch: %{java_arches} noarch
- marked
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- matreshka
ExclusiveArch: %GPRbuild_arches
- maui-mauikit
ExclusiveArch: %{ix86} s390x aarch64 x86_64
- maven
ExclusiveArch: %{java_arches} noarch
- maven-antrun-plugin
ExclusiveArch: %{java_arches} noarch
- maven-archetype
ExclusiveArch: %{java_arches} noarch
- maven-archiver
ExclusiveArch: %{java_arches} noarch
- maven-artifact-transfer
ExclusiveArch: %{java_arches} noarch
- maven-assembly-plugin
ExclusiveArch: %{java_arches} noarch
- maven-clean-plugin
ExclusiveArch: %{java_arches} noarch
- maven-common-artifact-filters
ExclusiveArch: %{java_arches} noarch
- maven-compiler-plugin
ExclusiveArch: %{java_arches} noarch
- maven-dependency-analyzer
ExclusiveArch: %{java_arches} noarch
- maven-dependency-plugin
ExclusiveArch: %{java_arches} noarch
- maven-dependency-tree
ExclusiveArch: %{java_arches} noarch
- maven-doxia
ExclusiveArch: %{java_arches} noarch
- maven-doxia-sitetools
ExclusiveArch: %{java_arches} noarch
- maven-enforcer
ExclusiveArch: %{java_arches} noarch
- maven-file-management
ExclusiveArch: %{java_arches} noarch
- maven-filtering
ExclusiveArch: %{java_arches} noarch
- maven-invoker
ExclusiveArch: %{java_arches} noarch
- maven-invoker-plugin
ExclusiveArch: %{java_arches} noarch
- maven-jar-plugin
ExclusiveArch: %{java_arches} noarch
- maven-mapping
ExclusiveArch: %{java_arches} noarch
- maven-native
ExclusiveArch: %{java_arches} noarch
- maven-parent
ExclusiveArch: %{java_arches} noarch
- maven-patch-plugin
ExclusiveArch: %{java_arches} noarch
- maven-plugin-build-helper
ExclusiveArch: %{java_arches} noarch
- maven-plugin-bundle
ExclusiveArch: %{java_arches} noarch
- maven-plugin-testing
ExclusiveArch: %{java_arches} noarch
- maven-plugin-tools
ExclusiveArch: %{java_arches} noarch
- maven-remote-resources-plugin
ExclusiveArch: %{java_arches} noarch
- maven-reporting-api
ExclusiveArch: %{java_arches} noarch
- maven-reporting-impl
ExclusiveArch: %{java_arches} noarch
- maven-resolver
ExclusiveArch: %{java_arches} noarch
- maven-resources-plugin
ExclusiveArch: %{java_arches} noarch
- maven-scm
ExclusiveArch: %{java_arches} noarch
- maven-script-interpreter
ExclusiveArch: %{java_arches} noarch
- maven-shade-plugin
ExclusiveArch: %{java_arches} noarch
- maven-shared-incremental
ExclusiveArch: %{java_arches} noarch
- maven-shared-io
ExclusiveArch: %{java_arches} noarch
- maven-shared-utils
ExclusiveArch: %{java_arches} noarch
- maven-source-plugin
ExclusiveArch: %{java_arches} noarch
- maven-surefire
ExclusiveArch: %{java_arches} noarch
- maven-verifier
ExclusiveArch: %{java_arches} noarch
- maven-verifier-plugin
ExclusiveArch: %{java_arches} noarch
- maven-wagon
ExclusiveArch: %{java_arches} noarch
- maven2
ExclusiveArch: %{java_arches} noarch
- maxima
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc sparcv9
ExclusiveArch: %{ix86} x86_64 ppc sparcv9
- mbpfan
ExclusiveArch: x86_64
- mcelog
ExclusiveArch: i686 x86_64
- mcrouter
ExclusiveArch: x86_64 aarch64 ppc64le
- mdevctl
ExclusiveArch: %{rust_arches}
- mecab-java
ExclusiveArch: %java_arches
- mediaconch
ExclusiveArch: %{qt5_qtwebengine_arches}
- mellowplayer
ExclusiveArch: %{qt5_qtwebengine_arches}
- memkind
ExclusiveArch: x86_64 ppc64 ppc64le s390x aarch64
- memtest86+
ExclusiveArch: %{ix86} x86_64
- microcode_ctl
ExclusiveArch: %{ix86} x86_64
- micropython
ExclusiveArch: %{arm} x86_64
ExclusiveArch: %{arm} %{ix86} x86_64
- miglayout
ExclusiveArch: %{java_arches} noarch
- mine_detector
ExclusiveArch: %{GPRbuild_arches}
- minetest
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
- mingw-libidn2
ExclusiveArch: %{ix86} x86_64 %{arm}
- mingw-wine-gecko
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- mirrorlist-server
ExclusiveArch: %{rust_arches}
- mkbootdisk
ExclusiveArch: %{ix86} sparc sparc64 x86_64
- moby-engine
ExclusiveArch: %{golang_arches}
- mockito
ExclusiveArch: %{java_arches} noarch
- mod_mono
ExclusiveArch: %mono_arches
- modello
ExclusiveArch: %{java_arches} noarch
- module-build-service
ExclusiveArch: %{ix86} x86_64 noarch
- mojo-executor
ExclusiveArch: %{java_arches} noarch
- mojo-parent
ExclusiveArch: %{java_arches} noarch
- mokutil
ExclusiveArch: %{ix86} x86_64 aarch64 %{arm}
- mono
ExclusiveArch: %mono_arches
- mono-addins
ExclusiveArch: %mono_arches
- mono-basic
ExclusiveArch: %{mono_arches}
- mono-bouncycastle
ExclusiveArch: %mono_arches
- mono-cecil
ExclusiveArch: %mono_arches
- mono-cecil-flowanalysis
ExclusiveArch: %mono_arches
- mono-reflection
ExclusiveArch: %mono_arches
- mono-tools
ExclusiveArch: %mono_arches
- mono-zeroconf
ExclusiveArch: %mono_arches
- monodevelop
ExclusiveArch: %mono_arches
- monodevelop-debugger-gdb
ExclusiveArch: %{mono_arches}
- mrrescue
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc64le
- msr-tools
ExclusiveArch: %{ix86} x86_64
- munge-maven-plugin
ExclusiveArch: %{java_arches} noarch
- mxparser
ExclusiveArch: %{java_arches} noarch
- mysql-connector-java
ExclusiveArch: %{java_arches} noarch
- mysql-connector-net
ExclusiveArch: %{mono_arches}
- naev
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
- naga
ExclusiveArch: %{java_arches} noarch
- nant
ExclusiveArch: %mono_arches
- nativejit
ExclusiveArch: x86_64
- nbc
ExclusiveArch: %{fpc_arches}
- nbdkit
ExclusiveArch: x86_64
- ndesk-dbus
ExclusiveArch: %{mono_arches}
- ndesk-dbus-glib
ExclusiveArch: %{mono_arches}
- nekohtml
ExclusiveArch: %{java_arches} noarch
- netavark
ExclusiveArch: %{rust_arches}
- newtonsoft-json
ExclusiveArch: %{mono_arches}
- nispor
ExclusiveArch: %{rust_arches}
- nodejs
ExclusiveArch: %{nodejs_arches}
- nodejs-acorn-object-spread
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-backbone
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bash-language-server
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-buble
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-colors
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-generic-pool
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-less
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-linefix
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-nodemon
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-packaging
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-replace-require-self
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tape
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-typescript
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-underscore
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs16
ExclusiveArch: %{nodejs_arches}
- nodejs18
ExclusiveArch: %{nodejs_arches}
- nom-tam-fits
ExclusiveArch: %{java_arches} noarch
- notify-sharp
ExclusiveArch: %{mono_arches}
- notify-sharp3
ExclusiveArch: %{mono_arches}
- nuget
ExclusiveArch: %{mono_arches}
- numatop
ExclusiveArch: x86_64 ppc64le
- nunit
ExclusiveArch: %{mono_arches}
- nunit2
ExclusiveArch: %{mono_arches}
- nvml
ExclusiveArch: x86_64 ppc64le
- nwchem
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le
- objectweb-asm
ExclusiveArch: %{java_arches} noarch
- objenesis
ExclusiveArch: %{java_arches} noarch
- obs-service-rust2rpm
ExclusiveArch: %{rust_arches} noarch
- oci-seccomp-bpf-hook
ExclusiveArch: x86_64 %{power64} aarch64 s390x armv7hl
- oidn
ExclusiveArch: x86_64
- olpc-kbdshim
ExclusiveArch: %{ix86} %{arm}
- olpc-utils
ExclusiveArch: %{ix86} %{arm}
- oneVPL
ExclusiveArch: x86_64
- oneVPL-intel-gpu
ExclusiveArch: x86_64
- oneapi-level-zero
ExclusiveArch: x86_64
- onednn
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- onedrive
ExclusiveArch: %{ldc_arches}
- ongres-scram
ExclusiveArch: %{java_arches} noarch
- ongres-stringprep
ExclusiveArch: %{java_arches} noarch
- opae
ExclusiveArch: x86_64
- opal-prd
ExclusiveArch: ppc64le
- open-vm-tools
ExclusiveArch: x86_64 aarch64
ExclusiveArch: %{ix86} x86_64 aarch64
ExclusiveArch: x86_64
- openas2
ExclusiveArch: %{java_arches} noarch
ExclusiveArch: %{java_arches} noarch
- openblas
ExclusiveArch: %{openblas_arches}
- openjdk-asmtools
ExclusiveArch: %{java_arches} noarch
- openjdk-asmtools7
ExclusiveArch: %{java_arches} noarch
- openjfx
ExclusiveArch: %{java_arches}
- openjfx8
ExclusiveArch: x86_64
- openlibm
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 %{power64}
- openms
ExclusiveArch: %{qt5_qtwebengine_arches}
- openni
ExclusiveArch: %{ix86} x86_64 %{arm}
- openni-primesense
ExclusiveArch: %{ix86} x86_64 %{arm}
- openpgl
ExclusiveArch: x86_64
- openshadinglanguage
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- openssl-ibmca
ExclusiveArch: s390 s390x
- openstack-java-sdk
ExclusiveArch: %{java_arches} noarch
- opentest4j
ExclusiveArch: %{java_arches} noarch
- options
ExclusiveArch: %{java_arches} noarch
- orthorobot
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc64le
- osgi-annotation
ExclusiveArch: %{java_arches} noarch
- osgi-compendium
ExclusiveArch: %{java_arches} noarch
- osgi-core
ExclusiveArch: %{java_arches} noarch
- pacemaker
ExclusiveArch: aarch64 i686 ppc64le s390x x86_64 %{arm}
ExclusiveArch: aarch64 i686 ppc64le s390x x86_64
- paflib
ExclusiveArch: ppc %{power64}
- pageedit
ExclusiveArch: %{qt5_qtwebengine_arches}
- parsec
ExclusiveArch: %{rust_arches}
- parsec-tool
ExclusiveArch: %{rust_arches}
- parserng
ExclusiveArch: %{java_arches} noarch
- pasdoc
ExclusiveArch: %{fpc_arches}
- pcc
ExclusiveArch: %{ix86} x86_64
- pcfi
ExclusiveArch: %{java_arches} noarch
- pcm
ExclusiveArch: %{ix86} x86_64
- pcmciautils
ExclusiveArch: %{ix86} x86_64 ia64 ppc ppc64 %{arm}
- pdbg
ExclusiveArch: ppc64le
- pdfbox
ExclusiveArch: %{java_arches} noarch
- pdfmod
ExclusiveArch: %mono_arches
- pdftk-java
ExclusiveArch: %{java_arches} noarch
- pentaho-libxml
ExclusiveArch: %{java_arches} noarch
- pentaho-reporting-flow-engine
ExclusiveArch: %{java_arches} noarch
- perl-Dumbbench
ExclusiveArch: %{ix86} x86_64 noarch
- perl-Parse-DMIDecode
ExclusiveArch: %{ix86} x86_64 ia64 aarch64
- pesign
ExclusiveArch: %{ix86} x86_64 ia64 aarch64 %{arm}
- pesign-test-app
ExclusiveArch: x86_64
- picocli
ExclusiveArch: %{java_arches} noarch
- pinta
ExclusiveArch: %mono_arches
- pioneer
ExclusiveArch: %{ix86} x86_64
- plantuml
ExclusiveArch: %{java_arches} noarch
- plasma-dialer
ExclusiveArch: %{java_arches}
- playonlinux
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- plexus-active-collections
ExclusiveArch: %{java_arches} noarch
- plexus-archiver
ExclusiveArch: %{java_arches} noarch
- plexus-build-api
ExclusiveArch: %{java_arches} noarch
- plexus-cipher
ExclusiveArch: %{java_arches} noarch
- plexus-classworlds
ExclusiveArch: %{java_arches} noarch
- plexus-compiler
ExclusiveArch: %{java_arches} noarch
- plexus-component-api
ExclusiveArch: %{java_arches} noarch
- plexus-components-pom
ExclusiveArch: %{java_arches} noarch
- plexus-containers
ExclusiveArch: %{java_arches} noarch
- plexus-i18n
ExclusiveArch: %{java_arches} noarch
- plexus-interpolation
ExclusiveArch: %{java_arches} noarch
- plexus-io
ExclusiveArch: %{java_arches} noarch
- plexus-languages
ExclusiveArch: %{java_arches} noarch
- plexus-pom
ExclusiveArch: %{java_arches} noarch
- plexus-resources
ExclusiveArch: %{java_arches} noarch
- plexus-sec-dispatcher
ExclusiveArch: %{java_arches} noarch
- plexus-utils
ExclusiveArch: %{java_arches} noarch
- plexus-velocity
ExclusiveArch: %{java_arches} noarch
- pmdk-convert
ExclusiveArch: x86_64
- pmemkv
ExclusiveArch: x86_64
- podman
ExclusiveArch: %{golang_arches}
- pomchecker
ExclusiveArch: %{java_arches} noarch
- poppler-sharp
ExclusiveArch: %mono_arches
- popub
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- portlet-2.0-api
ExclusiveArch: %{java_arches} noarch
- postgresql-jdbc
ExclusiveArch: %{java_arches} noarch
- powerpc-utils
ExclusiveArch: ppc %{power64}
- ppc64-diag
ExclusiveArch: ppc %{power64}
- procyon
ExclusiveArch: %{java_arches} noarch
ExclusiveArch: %{java_arches} noarch
ExclusiveArch: %{java_arches} noarch
ExclusiveArch: %{java_arches} noarch
ExclusiveArch: %{java_arches} noarch
ExclusiveArch: %{java_arches} noarch
- proguard
ExclusiveArch: %{java_arches} noarch
- prometheus-jmx-exporter
ExclusiveArch: %{java_arches} noarch
- prometheus-simpleclient-java
ExclusiveArch: %{java_arches} noarch
- proxygen
ExclusiveArch: x86_64 aarch64 ppc64le
- pveclib
ExclusiveArch: ppc %{power64}
- pvs-sbcl
ExclusiveArch: x86_64
- pyqtwebengine
ExclusiveArch: %{qt5_qtwebengine_arches}
- python-ast-monitor
ExclusiveArch: %{qt5_qtwebengine_arches} noarch
- python-cryptography
ExclusiveArch: %{rust_arches}
- python-etcd
ExclusiveArch: noarch %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- python-javaobj
ExclusiveArch: %{java_arches} noarch
- python-jep
ExclusiveArch: %{java_arches}
- python-jupyter-polymake
ExclusiveArch: noarch aarch64 ppc64le s390x x86_64
- python-openoffice
ExclusiveArch: noarch x86_64
- python-pymoc
ExclusiveArch: aarch64 ppc64 ppc64le x86_64 s390x
- python-setuptools-rust
ExclusiveArch: %{rust_arches}
- q4wine
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- qatzip
ExclusiveArch: x86_64
- qbe
ExclusiveArch: x86_64 aarch64
- qcint
ExclusiveArch: x86_64
- qclib
ExclusiveArch: s390 s390x
- qdox
ExclusiveArch: %{java_arches} noarch
- qemu-sanity-check
ExclusiveArch: %{kernel_arches}
- qevercloud
ExclusiveArch: %{qt5_qtwebengine_arches}
- qmapshack
ExclusiveArch: %{qt5_qtwebengine_arches}
- qt4pas
ExclusiveArch: %{fpc_arches}
- qt5-qtwebengine
ExclusiveArch: %{qt5_qtwebengine_arches}
- quantum-espresso
ExclusiveArch: x86_64 %{ix86} aarch64 %{power64}
- quentier
ExclusiveArch: %{qt5_qtwebengine_arches}
- rEFInd
ExclusiveArch: %{efi}
- rachota
ExclusiveArch: %{java_arches} noarch
- rear
ExclusiveArch: %ix86 x86_64 ppc ppc64 ppc64le ia64
- reflections
ExclusiveArch: %{java_arches} noarch
- reg
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- regexp
ExclusiveArch: %{java_arches} noarch
- replacer
ExclusiveArch: %{java_arches} noarch
- reptyr
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- rescene
ExclusiveArch: %{mono_arches}
- resteasy
ExclusiveArch: %{java_arches} noarch
- restool
ExclusiveArch: aarch64
- restsharp
ExclusiveArch: %{mono_arches}
- retsnoop
ExclusiveArch: %{rust_arches}
- rhino
ExclusiveArch: %{java_arches} noarch
- river
ExclusiveArch: %{zig_arches}
- rocm-compilersupport
ExclusiveArch: x86_64 aarch64 ppc64le
- rocm-device-libs
ExclusiveArch: x86_64 aarch64 ppc64le
- rocm-opencl
ExclusiveArch: x86_64 aarch64
ExclusiveArch: x86_64 aarch64 ppc64le
- rocm-runtime
ExclusiveArch: x86_64 aarch64 ppc64le
- rocminfo
ExclusiveArch: x86_64 aarch64 ppc64le
- rpm-ostree
ExclusiveArch: %{rust_arches}
- rr
ExclusiveArch: %{ix86} x86_64 aarch64
- rssguard
ExclusiveArch: %{qt5_qtwebengine_arches}
- rstudio
ExclusiveArch: %{java_arches}
- rsyntaxtextarea
ExclusiveArch: %{java_arches} noarch
- rubygem-childprocess
ExclusiveArch: %{ix86} x86_64 noarch
- runc
ExclusiveArch: %{golang_arches}
- rundoc
ExclusiveArch: %{java_arches} noarch
- rust
ExclusiveArch: %{rust_arches}
- rust-Inflector
ExclusiveArch: %{rust_arches}
- rust-actix
ExclusiveArch: %{rust_arches}
- rust-actix-codec
ExclusiveArch: %{rust_arches}
- rust-actix-http
ExclusiveArch: %{rust_arches}
- rust-actix-macros
ExclusiveArch: %{rust_arches}
- rust-actix-router
ExclusiveArch: %{rust_arches}
- rust-actix-rt
ExclusiveArch: %{rust_arches}
- rust-actix-server
ExclusiveArch: %{rust_arches}
- rust-actix-service
ExclusiveArch: %{rust_arches}
- rust-actix-tls
ExclusiveArch: %{rust_arches}
- rust-actix-web
ExclusiveArch: %{rust_arches}
- rust-actix-web-codegen
ExclusiveArch: %{rust_arches}
- rust-actix_derive
ExclusiveArch: %{rust_arches}
- rust-addr2line
ExclusiveArch: %{rust_arches}
- rust-aead
ExclusiveArch: %{rust_arches}
- rust-aes-gcm
ExclusiveArch: %{rust_arches}
- rust-aes0.7
ExclusiveArch: %{rust_arches}
- rust-afterburn
ExclusiveArch: %{rust_arches}
- rust-ahash0.4
ExclusiveArch: %{rust_arches}
- rust-alacritty
ExclusiveArch: %{rust_arches}
- rust-alacritty_config_derive
ExclusiveArch: %{rust_arches}
- rust-alacritty_terminal
ExclusiveArch: %{rust_arches}
- rust-alga
ExclusiveArch: %{rust_arches}
- rust-alga_derive
ExclusiveArch: %{rust_arches}
- rust-aliasable
ExclusiveArch: %{rust_arches}
- rust-alloc-no-stdlib
ExclusiveArch: %{rust_arches}
- rust-alloc-stdlib
ExclusiveArch: %{rust_arches}
- rust-ammonia
ExclusiveArch: %{rust_arches}
- rust-ansi_term
ExclusiveArch: %{rust_arches}
- rust-ansi_term0.11
ExclusiveArch: %{rust_arches}
- rust-aparato
ExclusiveArch: %{rust_arches}
- rust-app_dirs
ExclusiveArch: %{rust_arches}
- rust-approx
ExclusiveArch: %{rust_arches}
- rust-ar
ExclusiveArch: %{rust_arches}
- rust-arbitrary0.4
ExclusiveArch: %{rust_arches}
- rust-arc-swap
ExclusiveArch: %{rust_arches}
- rust-arg_enum_proc_macro
ExclusiveArch: %{rust_arches}
- rust-argh
ExclusiveArch: %{rust_arches}
- rust-argh_derive
ExclusiveArch: %{rust_arches}
- rust-argh_shared
ExclusiveArch: %{rust_arches}
- rust-argmax
ExclusiveArch: %{rust_arches}
- rust-argparse
ExclusiveArch: %{rust_arches}
- rust-arrayvec
ExclusiveArch: %{rust_arches}
- rust-arrayvec0.5
ExclusiveArch: %{rust_arches}
- rust-ascii
ExclusiveArch: %{rust_arches}
- rust-ascii-canvas
ExclusiveArch: %{rust_arches}
- rust-askalono
ExclusiveArch: %{rust_arches}
- rust-askalono-cli
ExclusiveArch: %{rust_arches}
- rust-askama
ExclusiveArch: %{rust_arches}
- rust-askama_derive
ExclusiveArch: %{rust_arches}
- rust-askama_escape
ExclusiveArch: %{rust_arches}
- rust-askama_shared
ExclusiveArch: %{rust_arches}
- rust-asn1
ExclusiveArch: %{rust_arches}
- rust-asn1_derive
ExclusiveArch: %{rust_arches}
- rust-assert-impl
ExclusiveArch: %{rust_arches}
- rust-assert-json-diff
ExclusiveArch: %{rust_arches}
- rust-assert_approx_eq
ExclusiveArch: %{rust_arches}
- rust-assert_cli
ExclusiveArch: %{rust_arches}
- rust-assert_cmd
ExclusiveArch: %{rust_arches}
- rust-assert_fs
ExclusiveArch: %{rust_arches}
- rust-assert_matches
ExclusiveArch: %{rust_arches}
- rust-async-attributes
ExclusiveArch: %{rust_arches}
- rust-async-broadcast
ExclusiveArch: %{rust_arches}
- rust-async-compression
ExclusiveArch: %{rust_arches}
- rust-async-mutex
ExclusiveArch: %{rust_arches}
- rust-async-recursion
ExclusiveArch: %{rust_arches}
- rust-async-std
ExclusiveArch: %{rust_arches}
- rust-async-task
ExclusiveArch: %{rust_arches}
- rust-asyncgit
ExclusiveArch: %{rust_arches}
- rust-atom
ExclusiveArch: %{rust_arches}
- rust-atomic
ExclusiveArch: %{rust_arches}
- rust-atomic-traits
ExclusiveArch: %{rust_arches}
- rust-atomic-waker
ExclusiveArch: %{rust_arches}
- rust-atty
ExclusiveArch: %{rust_arches}
- rust-autocfg
ExclusiveArch: %{rust_arches}
- rust-average
ExclusiveArch: %{rust_arches}
- rust-awc
ExclusiveArch: %{rust_arches}
- rust-aws-nitro-enclaves-cose
ExclusiveArch: %{rust_arches}
- rust-az
ExclusiveArch: %{rust_arches}
- rust-backtrace
ExclusiveArch: %{rust_arches}
- rust-base-x
ExclusiveArch: %{rust_arches}
- rust-base64
ExclusiveArch: %{rust_arches}
- rust-below
ExclusiveArch: %{rust_arches}
- rust-below-common
ExclusiveArch: %{rust_arches}
- rust-below-config
ExclusiveArch: %{rust_arches}
- rust-below-dump
ExclusiveArch: %{rust_arches}
- rust-below-model
ExclusiveArch: %{rust_arches}
- rust-below-render
ExclusiveArch: %{rust_arches}
- rust-below-store
ExclusiveArch: %{rust_arches}
- rust-below-view
ExclusiveArch: %{rust_arches}
- rust-below_derive
ExclusiveArch: %{rust_arches}
- rust-bencher
ExclusiveArch: %{rust_arches}
- rust-benfred-read-process-memory
ExclusiveArch: %{rust_arches}
- rust-bigdecimal
ExclusiveArch: %{rust_arches}
- rust-binascii
ExclusiveArch: %{rust_arches}
- rust-bincode
ExclusiveArch: %{rust_arches}
- rust-bit-set
ExclusiveArch: %{rust_arches}
- rust-bit-vec
ExclusiveArch: %{rust_arches}
- rust-bit_field
ExclusiveArch: %{rust_arches}
- rust-bitfield
ExclusiveArch: %{rust_arches}
- rust-bitflags
ExclusiveArch: %{rust_arches}
- rust-blobby
ExclusiveArch: %{rust_arches}
- rust-blobby0.1
ExclusiveArch: %{rust_arches}
- rust-block-buffer
ExclusiveArch: %{rust_arches}
- rust-block-buffer0.9
ExclusiveArch: %{rust_arches}
- rust-block-modes
ExclusiveArch: %{rust_arches}
- rust-block-padding
ExclusiveArch: %{rust_arches}
- rust-block-padding0.2
ExclusiveArch: %{rust_arches}
- rust-blsctl
ExclusiveArch: %{rust_arches}
- rust-bodhi
ExclusiveArch: %{rust_arches}
- rust-bodhi-cli
ExclusiveArch: %{rust_arches}
- rust-bootupd
ExclusiveArch: x86_64 aarch64
- rust-box_drawing
ExclusiveArch: %{rust_arches}
- rust-boxfnonce
ExclusiveArch: %{rust_arches}
- rust-brotli
ExclusiveArch: %{rust_arches}
- rust-brotli-decompressor
ExclusiveArch: %{rust_arches}
- rust-bstr
ExclusiveArch: %{rust_arches}
- rust-btrd
ExclusiveArch: %{rust_arches}
- rust-buffered-reader
ExclusiveArch: %{rust_arches}
- rust-bufstream
ExclusiveArch: %{rust_arches}
- rust-bugreport
ExclusiveArch: %{rust_arches}
- rust-byte-unit3
ExclusiveArch: %{rust_arches}
- rust-bytecheck
ExclusiveArch: %{rust_arches}
- rust-bytecheck_derive
ExclusiveArch: %{rust_arches}
- rust-bytecount
ExclusiveArch: %{rust_arches}
- rust-byteorder
ExclusiveArch: %{rust_arches}
- rust-bytes-cast
ExclusiveArch: %{rust_arches}
- rust-bytes-cast-derive
ExclusiveArch: %{rust_arches}
- rust-bytes0.4
ExclusiveArch: %{rust_arches}
- rust-bytes0.5
ExclusiveArch: %{rust_arches}
- rust-bytesize
ExclusiveArch: %{rust_arches}
- rust-bzip2
ExclusiveArch: %{rust_arches}
- rust-bzip2-sys
ExclusiveArch: %{rust_arches}
- rust-cache-padded
ExclusiveArch: %{rust_arches}
- rust-calloop
ExclusiveArch: %{rust_arches}
- rust-cap
ExclusiveArch: %{rust_arches}
- rust-capng
ExclusiveArch: %{rust_arches}
- rust-capnp-futures
ExclusiveArch: %{rust_arches}
- rust-capnp-rpc
ExclusiveArch: %{rust_arches}
- rust-cargo
ExclusiveArch: %{rust_arches}
- rust-cargo-c
ExclusiveArch: %{rust_arches}
- rust-cargo-edit
ExclusiveArch: %{rust_arches}
- rust-cargo-husky
ExclusiveArch: %{rust_arches}
- rust-cargo-insta
ExclusiveArch: %{rust_arches}
- rust-cargo-manifest
ExclusiveArch: %{rust_arches}
- rust-cargo-platform
ExclusiveArch: %{rust_arches}
- rust-cargo-readme
ExclusiveArch: %{rust_arches}
- rust-cascade
ExclusiveArch: %{rust_arches}
- rust-case
ExclusiveArch: %{rust_arches}
- rust-cassowary
ExclusiveArch: %{rust_arches}
- rust-cast
ExclusiveArch: %{rust_arches}
- rust-cbindgen
ExclusiveArch: %{rust_arches}
- rust-cdylib-link-lines
ExclusiveArch: %{rust_arches}
- rust-cexpr
ExclusiveArch: %{rust_arches}
- rust-cfb
ExclusiveArch: %{rust_arches}
- rust-cfg-if
ExclusiveArch: %{rust_arches}
- rust-cfg-if0.1
ExclusiveArch: %{rust_arches}
- rust-cgroupfs
ExclusiveArch: %{rust_arches}
- rust-chainerror
ExclusiveArch: %{rust_arches}
- rust-charset
ExclusiveArch: %{rust_arches}
- rust-choosier
ExclusiveArch: %{rust_arches}
- rust-chrono-humanize
ExclusiveArch: %{rust_arches}
- rust-chrono-tz
ExclusiveArch: %{rust_arches}
- rust-ciborium
ExclusiveArch: %{rust_arches}
- rust-ciborium-io
ExclusiveArch: %{rust_arches}
- rust-ciborium-ll
ExclusiveArch: %{rust_arches}
- rust-cint
ExclusiveArch: %{rust_arches}
- rust-cipher
ExclusiveArch: %{rust_arches}
- rust-cipher0.3
ExclusiveArch: %{rust_arches}
- rust-clang-sys
ExclusiveArch: %{rust_arches}
- rust-clap
ExclusiveArch: %{rust_arches}
- rust-clap-verbosity-flag
ExclusiveArch: %{rust_arches}
- rust-clap2
ExclusiveArch: %{rust_arches}
- rust-clap_complete
ExclusiveArch: %{rust_arches}
- rust-clap_complete_fig
ExclusiveArch: %{rust_arches}
- rust-clap_derive
ExclusiveArch: %{rust_arches}
- rust-clap_generate
ExclusiveArch: %{rust_arches}
- rust-clap_generate_fig
ExclusiveArch: %{rust_arches}
- rust-clicolors-control
ExclusiveArch: %{rust_arches}
- rust-clircle
ExclusiveArch: %{rust_arches}
- rust-codespan-reporting
ExclusiveArch: %{rust_arches}
- rust-codicon
ExclusiveArch: %{rust_arches}
- rust-color-backtrace
ExclusiveArch: %{rust_arches}
- rust-color_quant
ExclusiveArch: %{rust_arches}
- rust-colored
ExclusiveArch: %{rust_arches}
- rust-colored1
ExclusiveArch: %{rust_arches}
- rust-colored_json
ExclusiveArch: %{rust_arches}
- rust-colorful
ExclusiveArch: %{rust_arches}
- rust-combine
ExclusiveArch: %{rust_arches}
- rust-comfy-table
ExclusiveArch: %{rust_arches}
- rust-common-path
ExclusiveArch: %{rust_arches}
- rust-compiletest_rs
ExclusiveArch: %{rust_arches}
- rust-compress-tools
ExclusiveArch: %{rust_arches}
- rust-concolor
ExclusiveArch: %{rust_arches}
- rust-concolor-control
ExclusiveArch: %{rust_arches}
- rust-concolor-query
ExclusiveArch: %{rust_arches}
- rust-config
ExclusiveArch: %{rust_arches}
- rust-configparser
ExclusiveArch: %{rust_arches}
- rust-confy
ExclusiveArch: %{rust_arches}
- rust-conhash
ExclusiveArch: %{rust_arches}
- rust-console
ExclusiveArch: %{rust_arches}
- rust-console0.11
ExclusiveArch: %{rust_arches}
- rust-console0.12
ExclusiveArch: %{rust_arches}
- rust-console0.13
ExclusiveArch: %{rust_arches}
- rust-console0.14
ExclusiveArch: %{rust_arches}
- rust-console0.9
ExclusiveArch: %{rust_arches}
- rust-const-cstr
ExclusiveArch: %{rust_arches}
- rust-const-oid0.6
ExclusiveArch: %{rust_arches}
- rust-const-random
ExclusiveArch: %{rust_arches}
- rust-const-random-macro
ExclusiveArch: %{rust_arches}
- rust-const_fn
ExclusiveArch: %{rust_arches}
- rust-const_format
ExclusiveArch: %{rust_arches}
- rust-const_format_proc_macros
ExclusiveArch: %{rust_arches}
- rust-constant_time_eq
ExclusiveArch: %{rust_arches}
- rust-content_inspector
ExclusiveArch: %{rust_arches}
- rust-conv
ExclusiveArch: %{rust_arches}
- rust-cookie
ExclusiveArch: %{rust_arches}
- rust-cookie-factory
ExclusiveArch: %{rust_arches}
- rust-cookie_store
ExclusiveArch: %{rust_arches}
- rust-coolor
ExclusiveArch: %{rust_arches}
- rust-copydeps
ExclusiveArch: %{rust_arches}
- rust-copypasta
ExclusiveArch: %{rust_arches}
- rust-cordic
ExclusiveArch: %{rust_arches}
- rust-coreos-installer
ExclusiveArch: %{rust_arches}
- rust-count-zeroes
ExclusiveArch: %{rust_arches}
- rust-counted-array
ExclusiveArch: %{rust_arches}
- rust-cpc
ExclusiveArch: %{rust_arches}
- rust-cpio
ExclusiveArch: %{rust_arches}
- rust-cpp_demangle
ExclusiveArch: %{rust_arches}
- rust-cpufeatures
ExclusiveArch: %{rust_arches}
- rust-crates-io
ExclusiveArch: %{rust_arches}
- rust-crc
ExclusiveArch: %{rust_arches}
- rust-crc-catalog
ExclusiveArch: %{rust_arches}
- rust-crc32fast
ExclusiveArch: %{rust_arches}
- rust-crossbeam
ExclusiveArch: %{rust_arches}
- rust-crossbeam-channel
ExclusiveArch: %{rust_arches}
- rust-crossbeam-channel0.4
ExclusiveArch: %{rust_arches}
- rust-crossbeam-deque
ExclusiveArch: %{rust_arches}
- rust-crossbeam-deque0.7
ExclusiveArch: %{rust_arches}
- rust-crossbeam-epoch
ExclusiveArch: %{rust_arches}
- rust-crossbeam-epoch0.8
ExclusiveArch: %{rust_arches}
- rust-crossbeam-queue0.2
ExclusiveArch: %{rust_arches}
- rust-crossbeam-utils0.7
ExclusiveArch: %{rust_arches}
- rust-crossbeam0.7
ExclusiveArch: %{rust_arches}
- rust-crossfont
ExclusiveArch: %{rust_arches}
- rust-crossterm0.17
ExclusiveArch: %{rust_arches}
- rust-crossterm0.19
ExclusiveArch: %{rust_arches}
- rust-crosstermion
ExclusiveArch: %{rust_arches}
- rust-crunchy
ExclusiveArch: %{rust_arches}
- rust-crypto-bigint
ExclusiveArch: %{rust_arches}
- rust-crypto-common
ExclusiveArch: %{rust_arches}
- rust-crypto-hash
ExclusiveArch: %{rust_arches}
- rust-crypto-mac
ExclusiveArch: %{rust_arches}
- rust-cryptoki
ExclusiveArch: %{rust_arches}
- rust-cryptoki-sys
ExclusiveArch: %{rust_arches}
- rust-csscolorparser
ExclusiveArch: %{rust_arches}
- rust-cssparser
ExclusiveArch: %{rust_arches}
- rust-cssparser-macros
ExclusiveArch: %{rust_arches}
- rust-cstr_core
ExclusiveArch: %{rust_arches}
- rust-csv
ExclusiveArch: %{rust_arches}
- rust-csv-core
ExclusiveArch: %{rust_arches}
- rust-ct-logs
ExclusiveArch: %{rust_arches}
- rust-ctr
ExclusiveArch: %{rust_arches}
- rust-ctr0.8
ExclusiveArch: %{rust_arches}
- rust-ctrlc
ExclusiveArch: %{rust_arches}
- rust-cty
ExclusiveArch: %{rust_arches}
- rust-curl
ExclusiveArch: %{rust_arches}
- rust-cursive-tabs
ExclusiveArch: %{rust_arches}
- rust-cursive_buffered_backend
ExclusiveArch: %{rust_arches}
- rust-custom_derive
ExclusiveArch: %{rust_arches}
- rust-custom_error
ExclusiveArch: %{rust_arches}
- rust-daemonize
ExclusiveArch: %{rust_arches}
- rust-darling0.12
ExclusiveArch: %{rust_arches}
- rust-darling_core0.12
ExclusiveArch: %{rust_arches}
- rust-darling_macro0.12
ExclusiveArch: %{rust_arches}
- rust-dashmap4
ExclusiveArch: %{rust_arches}
- rust-data-encoding-macro
ExclusiveArch: %{rust_arches}
- rust-data-encoding-macro-internal
ExclusiveArch: %{rust_arches}
- rust-data-url
ExclusiveArch: %{rust_arches}
- rust-datetime
ExclusiveArch: %{rust_arches}
- rust-dav1d-sys
ExclusiveArch: %{rust_arches}
- rust-dbus
ExclusiveArch: %{rust_arches}
- rust-dbus-codegen
ExclusiveArch: %{rust_arches}
- rust-dbus-crossroads
ExclusiveArch: %{rust_arches}
- rust-dbus-tree
ExclusiveArch: %{rust_arches}
- rust-dbus0.8
ExclusiveArch: %{rust_arches}
- rust-decimal
ExclusiveArch: %{rust_arches}
- rust-deflate
ExclusiveArch: %{rust_arches}
- rust-deflate0.8
ExclusiveArch: %{rust_arches}
- rust-defmac
ExclusiveArch: %{rust_arches}
- rust-deltae
ExclusiveArch: %{rust_arches}
- rust-der
ExclusiveArch: %{rust_arches}
- rust-der_derive
ExclusiveArch: %{rust_arches}
- rust-derivative
ExclusiveArch: %{rust_arches}
- rust-derive-new
ExclusiveArch: %{rust_arches}
- rust-derive_arbitrary0.4
ExclusiveArch: %{rust_arches}
- rust-derive_builder0.9
ExclusiveArch: %{rust_arches}
- rust-derive_builder_core0.9
ExclusiveArch: %{rust_arches}
- rust-derive_more
ExclusiveArch: %{rust_arches}
- rust-des
ExclusiveArch: %{rust_arches}
- rust-des0.7
ExclusiveArch: %{rust_arches}
- rust-desed
ExclusiveArch: %{rust_arches}
- rust-devicemapper-sys
ExclusiveArch: %{rust_arches}
- rust-dialoguer
ExclusiveArch: %{rust_arches}
- rust-diesel
ExclusiveArch: %{rust_arches}
- rust-diesel_derives
ExclusiveArch: %{rust_arches}
- rust-diff
ExclusiveArch: %{rust_arches}
- rust-difference
ExclusiveArch: %{rust_arches}
- rust-difflib
ExclusiveArch: %{rust_arches}
- rust-digest0.9
ExclusiveArch: %{rust_arches}
- rust-digest_auth
ExclusiveArch: %{rust_arches}
- rust-directories
ExclusiveArch: %{rust_arches}
- rust-directories-next
ExclusiveArch: %{rust_arches}
- rust-directories3
ExclusiveArch: %{rust_arches}
- rust-dirs
ExclusiveArch: %{rust_arches}
- rust-dirs-next
ExclusiveArch: %{rust_arches}
- rust-dirs-sys
ExclusiveArch: %{rust_arches}
- rust-dirs-sys-next
ExclusiveArch: %{rust_arches}
- rust-dirs2
ExclusiveArch: %{rust_arches}
- rust-dirs3
ExclusiveArch: %{rust_arches}
- rust-diskonaut
ExclusiveArch: %{rust_arches}
- rust-displaydoc
ExclusiveArch: %{rust_arches}
- rust-dlib
ExclusiveArch: %{rust_arches}
- rust-dns-lookup
ExclusiveArch: %{rust_arches}
- rust-doc-comment
ExclusiveArch: %{rust_arches}
- rust-docmatic
ExclusiveArch: %{rust_arches}
- rust-docopt
ExclusiveArch: %{rust_arches}
- rust-dotenv
ExclusiveArch: %{rust_arches}
- rust-downcast
ExclusiveArch: %{rust_arches}
- rust-downcast-rs
ExclusiveArch: %{rust_arches}
- rust-drg
ExclusiveArch: %{rust_arches}
- rust-dtoa
ExclusiveArch: %{rust_arches}
- rust-dtoa-short
ExclusiveArch: %{rust_arches}
- rust-dua-cli
ExclusiveArch: %{rust_arches}
- rust-duct
ExclusiveArch: %{rust_arches}
- rust-duct_sh
ExclusiveArch: %{rust_arches}
- rust-dummy
ExclusiveArch: %{rust_arches}
- rust-dunce
ExclusiveArch: %{rust_arches}
- rust-dutree
ExclusiveArch: %{rust_arches}
- rust-easy-cast
ExclusiveArch: %{rust_arches}
- rust-easy-parallel
ExclusiveArch: %{rust_arches}
- rust-edit
ExclusiveArch: %{rust_arches}
- rust-edit-distance
ExclusiveArch: %{rust_arches}
- rust-either
ExclusiveArch: %{rust_arches}
- rust-elf
ExclusiveArch: %{rust_arches}
- rust-elfcat
ExclusiveArch: %{rust_arches}
- rust-email-encoding
ExclusiveArch: %{rust_arches}
- rust-ena
ExclusiveArch: %{rust_arches}
- rust-encode_unicode
ExclusiveArch: %{rust_arches}
- rust-encoding
ExclusiveArch: %{rust_arches}
- rust-encoding-index-japanese
ExclusiveArch: %{rust_arches}
- rust-encoding-index-korean
ExclusiveArch: %{rust_arches}
- rust-encoding-index-simpchinese
ExclusiveArch: %{rust_arches}
- rust-encoding-index-singlebyte
ExclusiveArch: %{rust_arches}
- rust-encoding-index-tradchinese
ExclusiveArch: %{rust_arches}
- rust-encoding_index_tests
ExclusiveArch: %{rust_arches}
- rust-encoding_rs
ExclusiveArch: %{rust_arches}
- rust-encoding_rs_io
ExclusiveArch: %{rust_arches}
- rust-endian-type
ExclusiveArch: %{rust_arches}
- rust-enquote
ExclusiveArch: %{rust_arches}
- rust-entities
ExclusiveArch: %{rust_arches}
- rust-enum-as-inner
ExclusiveArch: %{rust_arches}
- rust-enum-iterator
ExclusiveArch: %{rust_arches}
- rust-enum-iterator-derive
ExclusiveArch: %{rust_arches}
- rust-enumflags2
ExclusiveArch: %{rust_arches}
- rust-enumflags2_0.6
ExclusiveArch: %{rust_arches}
- rust-enumflags2_derive
ExclusiveArch: %{rust_arches}
- rust-enumflags2_derive0.6
ExclusiveArch: %{rust_arches}
- rust-enumset
ExclusiveArch: %{rust_arches}
- rust-enumset_derive
ExclusiveArch: %{rust_arches}
- rust-env_logger0.4
ExclusiveArch: %{rust_arches}
- rust-env_logger0.5
ExclusiveArch: %{rust_arches}
- rust-env_logger0.6
ExclusiveArch: %{rust_arches}
- rust-env_logger0.7
ExclusiveArch: %{rust_arches}
- rust-env_logger0.8
ExclusiveArch: %{rust_arches}
- rust-env_proxy
ExclusiveArch: %{rust_arches}
- rust-environment
ExclusiveArch: %{rust_arches}
- rust-epoll
ExclusiveArch: %{rust_arches}
- rust-err-derive
ExclusiveArch: %{rust_arches}
- rust-errno
ExclusiveArch: %{rust_arches}
- rust-error-chain
ExclusiveArch: %{rust_arches}
- rust-escape_string
ExclusiveArch: %{rust_arches}
- rust-escargot
ExclusiveArch: %{rust_arches}
- rust-esphome
ExclusiveArch: %{rust_arches}
- rust-ethtool
ExclusiveArch: %{rust_arches}
- rust-event-listener
ExclusiveArch: %{rust_arches}
- rust-exa
ExclusiveArch: %{rust_arches}
- rust-executable-path
ExclusiveArch: %{rust_arches}
- rust-exitcode
ExclusiveArch: %{rust_arches}
- rust-exitfailure
ExclusiveArch: %{rust_arches}
- rust-expat-sys
ExclusiveArch: %{rust_arches}
- rust-eyre
ExclusiveArch: %{rust_arches}
- rust-faccess
ExclusiveArch: %{rust_arches}
- rust-fail
ExclusiveArch: %{rust_arches}
- rust-failure
ExclusiveArch: %{rust_arches}
- rust-failure-tools
ExclusiveArch: %{rust_arches}
- rust-failure_derive
ExclusiveArch: %{rust_arches}
- rust-fake
ExclusiveArch: %{rust_arches}
- rust-fake-simd
ExclusiveArch: %{rust_arches}
- rust-fallible-iterator
ExclusiveArch: %{rust_arches}
- rust-fallible-streaming-iterator
ExclusiveArch: %{rust_arches}
- rust-fastrand
ExclusiveArch: %{rust_arches}
- rust-fatfs
ExclusiveArch: %{rust_arches}
- rust-fb_procfs
ExclusiveArch: %{rust_arches}
- rust-fd-find
ExclusiveArch: %{rust_arches}
- rust-fd-lock
ExclusiveArch: %{rust_arches}
- rust-fedora
ExclusiveArch: %{rust_arches}
- rust-fedora-update-feedback
ExclusiveArch: %{rust_arches}
- rust-femme
ExclusiveArch: %{rust_arches}
- rust-fern
ExclusiveArch: %{rust_arches}
- rust-field-offset
ExclusiveArch: %{rust_arches}
- rust-filedescriptor
ExclusiveArch: %{rust_arches}
- rust-filesize
ExclusiveArch: %{rust_arches}
- rust-filetreelist
ExclusiveArch: %{rust_arches}
- rust-find-crate
ExclusiveArch: %{rust_arches}
- rust-findshlibs
ExclusiveArch: %{rust_arches}
- rust-firestorm
ExclusiveArch: %{rust_arches}
- rust-fixed
ExclusiveArch: %{rust_arches}
- rust-fixedbitset
ExclusiveArch: %{rust_arches}
- rust-fixedbitset0.2
ExclusiveArch: %{rust_arches}
- rust-flate2
ExclusiveArch: %{rust_arches}
- rust-float-cmp
ExclusiveArch: %{rust_arches}
- rust-float-ord
ExclusiveArch: %{rust_arches}
- rust-fluent
ExclusiveArch: %{rust_arches}
- rust-flume
ExclusiveArch: %{rust_arches}
- rust-fn-error-context
ExclusiveArch: %{rust_arches}
- rust-fnv
ExclusiveArch: %{rust_arches}
- rust-font-kit
ExclusiveArch: %{rust_arches}
- rust-foreign-types
ExclusiveArch: %{rust_arches}
- rust-foreign-types-macros
ExclusiveArch: %{rust_arches}
- rust-foreign-types-shared
ExclusiveArch: %{rust_arches}
- rust-foreign-types-shared0.1
ExclusiveArch: %{rust_arches}
- rust-foreign-types0.3
ExclusiveArch: %{rust_arches}
- rust-format-bytes
ExclusiveArch: %{rust_arches}
- rust-format-bytes-macros
ExclusiveArch: %{rust_arches}
- rust-freetype
ExclusiveArch: %{rust_arches}
- rust-fs2
ExclusiveArch: %{rust_arches}
- rust-fs_extra
ExclusiveArch: %{rust_arches}
- rust-fscommon
ExclusiveArch: %{rust_arches}
- rust-fslock
ExclusiveArch: %{rust_arches}
- rust-funty
ExclusiveArch: %{rust_arches}
- rust-futf
ExclusiveArch: %{rust_arches}
- rust-futures-cpupool
ExclusiveArch: %{rust_arches}
- rust-futures-lite
ExclusiveArch: %{rust_arches}
- rust-futures-timer
ExclusiveArch: %{rust_arches}
- rust-futures0.1
ExclusiveArch: %{rust_arches}
- rust-fuzzy-matcher
ExclusiveArch: %{rust_arches}
- rust-fxhash
ExclusiveArch: %{rust_arches}
- rust-gag
ExclusiveArch: %{rust_arches}
- rust-generic-array
ExclusiveArch: %{rust_arches}
- rust-generic-array0.12
ExclusiveArch: %{rust_arches}
- rust-genetlink
ExclusiveArch: %{rust_arches}
- rust-getch
ExclusiveArch: %{rust_arches}
- rust-gethostname
ExclusiveArch: %{rust_arches}
- rust-getopts
ExclusiveArch: %{rust_arches}
- rust-getrandom0.1
ExclusiveArch: %{rust_arches}
- rust-getset
ExclusiveArch: %{rust_arches}
- rust-gettext-rs
ExclusiveArch: %{rust_arches}
- rust-gettext-sys
ExclusiveArch: %{rust_arches}
- rust-gh-emoji
ExclusiveArch: %{rust_arches}
- rust-ghash
ExclusiveArch: %{rust_arches}
- rust-gif
ExclusiveArch: %{rust_arches}
- rust-gimli
ExclusiveArch: %{rust_arches}
- rust-gir-format-check
ExclusiveArch: %{rust_arches}
- rust-git-delta
ExclusiveArch: %{rust_arches}
- rust-git-version
ExclusiveArch: %{rust_arches}
- rust-git-version-macro
ExclusiveArch: %{rust_arches}
- rust-git2
ExclusiveArch: %{rust_arches}
- rust-git2-curl
ExclusiveArch: %{rust_arches}
- rust-git2_0.13
ExclusiveArch: %{rust_arches}
- rust-gitui
ExclusiveArch: %{rust_arches}
- rust-gl_generator
ExclusiveArch: %{rust_arches}
- rust-glam
ExclusiveArch: %{rust_arches}
- rust-glob
ExclusiveArch: %{rust_arches}
- rust-globset
ExclusiveArch: %{rust_arches}
- rust-globwalk
ExclusiveArch: %{rust_arches}
- rust-glutin
ExclusiveArch: %{rust_arches}
- rust-glutin_egl_sys
ExclusiveArch: %{rust_arches}
- rust-glutin_glx_sys
ExclusiveArch: %{rust_arches}
- rust-goblin
ExclusiveArch: %{rust_arches}
- rust-gptman
ExclusiveArch: %{rust_arches}
- rust-grep
ExclusiveArch: %{rust_arches}
- rust-grep-cli
ExclusiveArch: %{rust_arches}
- rust-grep-matcher
ExclusiveArch: %{rust_arches}
- rust-grep-pcre2
ExclusiveArch: %{rust_arches}
- rust-grep-printer
ExclusiveArch: %{rust_arches}
- rust-grep-regex
ExclusiveArch: %{rust_arches}
- rust-grep-searcher
ExclusiveArch: %{rust_arches}
- rust-groupable
ExclusiveArch: %{rust_arches}
- rust-gstreamer
ExclusiveArch: %{rust_arches}
- rust-gstreamer-audio
ExclusiveArch: %{rust_arches}
- rust-gstreamer-audio-sys
ExclusiveArch: %{rust_arches}
- rust-gstreamer-base
ExclusiveArch: %{rust_arches}
- rust-gstreamer-base-sys
ExclusiveArch: %{rust_arches}
- rust-gstreamer-editing-services
ExclusiveArch: %{rust_arches}
- rust-gstreamer-editing-services-sys
ExclusiveArch: %{rust_arches}
- rust-gstreamer-pbutils
ExclusiveArch: %{rust_arches}
- rust-gstreamer-pbutils-sys
ExclusiveArch: %{rust_arches}
- rust-gstreamer-player
ExclusiveArch: %{rust_arches}
- rust-gstreamer-player-sys
ExclusiveArch: %{rust_arches}
- rust-gstreamer-sys
ExclusiveArch: %{rust_arches}
- rust-gstreamer-video
ExclusiveArch: %{rust_arches}
- rust-gstreamer-video-sys
ExclusiveArch: %{rust_arches}
- rust-gzip-header
ExclusiveArch: %{rust_arches}
- rust-half
ExclusiveArch: %{rust_arches}
- rust-hamcrest2
ExclusiveArch: %{rust_arches}
- rust-hamming
ExclusiveArch: %{rust_arches}
- rust-handlebars
ExclusiveArch: %{rust_arches}
- rust-hashbrown
ExclusiveArch: %{rust_arches}
- rust-hashbrown0.11
ExclusiveArch: %{rust_arches}
- rust-hashbrown0.9
ExclusiveArch: %{rust_arches}
- rust-hashlink
ExclusiveArch: %{rust_arches}
- rust-headers
ExclusiveArch: %{rust_arches}
- rust-headers-core
ExclusiveArch: %{rust_arches}
- rust-heapsize
ExclusiveArch: %{rust_arches}
- rust-heatseeker
ExclusiveArch: %{rust_arches}
- rust-heck
ExclusiveArch: %{rust_arches}
- rust-heck0.3
ExclusiveArch: %{rust_arches}
- rust-helvum
ExclusiveArch: %{rust_arches}
- rust-hex
ExclusiveArch: %{rust_arches}
- rust-hex-literal
ExclusiveArch: %{rust_arches}
- rust-hex-literal-impl
ExclusiveArch: %{rust_arches}
- rust-hex-literal0.2
ExclusiveArch: %{rust_arches}
- rust-hexyl
ExclusiveArch: %{rust_arches}
- rust-hidapi
ExclusiveArch: %{rust_arches}
- rust-hkdf
ExclusiveArch: %{rust_arches}
- rust-hkdf0.11
ExclusiveArch: %{rust_arches}
- rust-hmac
ExclusiveArch: %{rust_arches}
- rust-hmac0.11
ExclusiveArch: %{rust_arches}
- rust-home
ExclusiveArch: %{rust_arches}
- rust-hostname
ExclusiveArch: %{rust_arches}
- rust-hostname-validator
ExclusiveArch: %{rust_arches}
- rust-html2pango
ExclusiveArch: %{rust_arches}
- rust-http-body
ExclusiveArch: %{rust_arches}
- rust-http0.1
ExclusiveArch: %{rust_arches}
- rust-httparse
ExclusiveArch: %{rust_arches}
- rust-httpdate
ExclusiveArch: %{rust_arches}
- rust-human-panic
ExclusiveArch: %{rust_arches}
- rust-human-sort
ExclusiveArch: %{rust_arches}
- rust-humansize
ExclusiveArch: %{rust_arches}
- rust-humantime
ExclusiveArch: %{rust_arches}
- rust-humantime-serde
ExclusiveArch: %{rust_arches}
- rust-humantime1
ExclusiveArch: %{rust_arches}
- rust-hyper-rustls
ExclusiveArch: %{rust_arches}
- rust-hyper-tls
ExclusiveArch: %{rust_arches}
- rust-hyperfine
ExclusiveArch: %{rust_arches}
- rust-hyperlocal
ExclusiveArch: %{rust_arches}
- rust-i18n-config
ExclusiveArch: %{rust_arches}
- rust-i18n-embed
ExclusiveArch: %{rust_arches}
- rust-i18n-embed-fl
ExclusiveArch: %{rust_arches}
- rust-i18n-embed-impl
ExclusiveArch: %{rust_arches}
- rust-i3ipc
ExclusiveArch: %{rust_arches}
- rust-iai
ExclusiveArch: %{rust_arches}
- rust-id-arena
ExclusiveArch: %{rust_arches}
- rust-ident_case
ExclusiveArch: %{rust_arches}
- rust-idna0.1
ExclusiveArch: %{rust_arches}
- rust-ifcfg-devname
ExclusiveArch: %{rust_arches}
- rust-ignition-config
ExclusiveArch: %{rust_arches}
- rust-ignore
ExclusiveArch: %{rust_arches}
- rust-im-rc
ExclusiveArch: %{rust_arches}
- rust-image
ExclusiveArch: %{rust_arches}
- rust-image0.23
ExclusiveArch: %{rust_arches}
- rust-imgref
ExclusiveArch: %{rust_arches}
- rust-impls
ExclusiveArch: %{rust_arches}
- rust-indenter
ExclusiveArch: %{rust_arches}
- rust-indicatif
ExclusiveArch: %{rust_arches}
- rust-indicatif0.15
ExclusiveArch: %{rust_arches}
- rust-infer
ExclusiveArch: %{rust_arches}
- rust-inferno
ExclusiveArch: %{rust_arches}
- rust-inflate
ExclusiveArch: %{rust_arches}
- rust-inlinable_string
ExclusiveArch: %{rust_arches}
- rust-inotify
ExclusiveArch: %{rust_arches}
- rust-inotify-sys
ExclusiveArch: %{rust_arches}
- rust-inout
ExclusiveArch: %{rust_arches}
- rust-input_buffer
ExclusiveArch: %{rust_arches}
- rust-insta
ExclusiveArch: %{rust_arches}
- rust-instant
ExclusiveArch: %{rust_arches}
- rust-integer-encoding
ExclusiveArch: %{rust_arches}
- rust-interpolate_name
ExclusiveArch: %{rust_arches}
- rust-intervaltree
ExclusiveArch: %{rust_arches}
- rust-intl-memoizer
ExclusiveArch: %{rust_arches}
- rust-invalidstring
ExclusiveArch: %{rust_arches}
- rust-inventory
ExclusiveArch: %{rust_arches}
- rust-inventory-impl
ExclusiveArch: %{rust_arches}
- rust-inventory0.1
ExclusiveArch: %{rust_arches}
- rust-ioctl-rs
ExclusiveArch: %{rust_arches}
- rust-iocuddle
ExclusiveArch: %{rust_arches}
- rust-iovec
ExclusiveArch: %{rust_arches}
- rust-ipnetwork
ExclusiveArch: %{rust_arches}
- rust-ipnetwork0.17
ExclusiveArch: %{rust_arches}
- rust-iptables
ExclusiveArch: %{rust_arches}
- rust-is_ci
ExclusiveArch: %{rust_arches}
- rust-is_debug
ExclusiveArch: %{rust_arches}
- rust-is_executable
ExclusiveArch: %{rust_arches}
- rust-iso8601
ExclusiveArch: %{rust_arches}
- rust-iter-read
ExclusiveArch: %{rust_arches}
- rust-itertools
ExclusiveArch: %{rust_arches}
- rust-itertools-num
ExclusiveArch: %{rust_arches}
- rust-itertools0.8
ExclusiveArch: %{rust_arches}
- rust-itertools0.9
ExclusiveArch: %{rust_arches}
- rust-itoa0.4
ExclusiveArch: %{rust_arches}
- rust-ivf
ExclusiveArch: %{rust_arches}
- rust-jobserver
ExclusiveArch: %{rust_arches}
- rust-josekit
ExclusiveArch: %{rust_arches}
- rust-jpeg-decoder
ExclusiveArch: %{rust_arches}
- rust-jpeg-decoder0.1
ExclusiveArch: %{rust_arches}
- rust-json
ExclusiveArch: %{rust_arches}
- rust-json5
ExclusiveArch: %{rust_arches}
- rust-just
ExclusiveArch: %{rust_arches}
- rust-k9
ExclusiveArch: %{rust_arches}
- rust-khronos_api
ExclusiveArch: %{rust_arches}
- rust-konst
ExclusiveArch: %{rust_arches}
- rust-konst_macro_rules
ExclusiveArch: %{rust_arches}
- rust-konst_proc_macros
ExclusiveArch: %{rust_arches}
- rust-krunvm
ExclusiveArch: x86_64 aarch64
- rust-kstring
ExclusiveArch: %{rust_arches}
- rust-kv-log-macro
ExclusiveArch: %{rust_arches}
- rust-kvm-bindings
ExclusiveArch: %{rust_arches}
- rust-kvm-ioctls
ExclusiveArch: x86_64 aarch64
- rust-lalrpop
ExclusiveArch: %{rust_arches}
- rust-lalrpop-util
ExclusiveArch: %{rust_arches}
- rust-language-tags
ExclusiveArch: %{rust_arches}
- rust-lazy_static
ExclusiveArch: %{rust_arches}
- rust-lazycell
ExclusiveArch: %{rust_arches}
- rust-leb128
ExclusiveArch: %{rust_arches}
- rust-lebe
ExclusiveArch: %{rust_arches}
- rust-lev_distance
ExclusiveArch: %{rust_arches}
- rust-lexiclean
ExclusiveArch: %{rust_arches}
- rust-lexopt
ExclusiveArch: %{rust_arches}
- rust-libblkid-rs
ExclusiveArch: %{rust_arches}
- rust-libblkid-rs-sys
ExclusiveArch: %{rust_arches}
- rust-libbpf-cargo
ExclusiveArch: %{rust_arches}
- rust-libcryptsetup-rs
ExclusiveArch: %{rust_arches}
- rust-libcryptsetup-rs-sys
ExclusiveArch: %{rust_arches}
- rust-libdbus-sys
ExclusiveArch: %{rust_arches}
- rust-libflate
ExclusiveArch: %{rust_arches}
- rust-libflate_lz77
ExclusiveArch: %{rust_arches}
- rust-libgit2-sys
ExclusiveArch: %{rust_arches}
- rust-libhandy
ExclusiveArch: %{rust_arches}
- rust-libhandy-sys
ExclusiveArch: %{rust_arches}
- rust-libmount
ExclusiveArch: %{rust_arches}
- rust-liboverdrop
ExclusiveArch: %{rust_arches}
- rust-libpulse-binding
ExclusiveArch: %{rust_arches}
- rust-libpulse-sys
ExclusiveArch: %{rust_arches}
- rust-libseccomp-sys
ExclusiveArch: %{rust_arches}
- rust-libslirp
ExclusiveArch: %{rust_arches}
- rust-libslirp-sys
ExclusiveArch: %{rust_arches}
- rust-libsodium-sys
ExclusiveArch: %{rust_arches}
- rust-libspa
ExclusiveArch: %{rust_arches}
- rust-libspa-sys
ExclusiveArch: %{rust_arches}
- rust-libsqlite3-sys
ExclusiveArch: %{rust_arches}
- rust-libssh2-sys
ExclusiveArch: %{rust_arches}
- rust-libsystemd
ExclusiveArch: %{rust_arches}
- rust-libudev-sys
ExclusiveArch: %{rust_arches}
- rust-libxml
ExclusiveArch: %{rust_arches}
- rust-libz-sys
ExclusiveArch: %{rust_arches}
- rust-line-wrap
ExclusiveArch: %{rust_arches}
- rust-linked-hash-map
ExclusiveArch: %{rust_arches}
- rust-linkify
ExclusiveArch: %{rust_arches}
- rust-lino
ExclusiveArch: %{rust_arches}
- rust-linreg
ExclusiveArch: %{rust_arches}
- rust-linux_proc
ExclusiveArch: %{rust_arches}
- rust-listenfd
ExclusiveArch: %{rust_arches}
- rust-lmdb
ExclusiveArch: %{rust_arches}
- rust-lmdb-sys
ExclusiveArch: %{rust_arches}
- rust-local-channel
ExclusiveArch: %{rust_arches}
- rust-local-encoding
ExclusiveArch: %{rust_arches}
- rust-local-waker
ExclusiveArch: %{rust_arches}
- rust-local_ipaddress
ExclusiveArch: %{rust_arches}
- rust-locale
ExclusiveArch: %{rust_arches}
- rust-locale_config
ExclusiveArch: %{rust_arches}
- rust-lock_api
ExclusiveArch: %{rust_arches}
- rust-log
ExclusiveArch: %{rust_arches}
- rust-log-mdc
ExclusiveArch: %{rust_arches}
- rust-log-panics
ExclusiveArch: %{rust_arches}
- rust-log0.3
ExclusiveArch: %{rust_arches}
- rust-loopdev
ExclusiveArch: %{rust_arches}
- rust-lru-cache
ExclusiveArch: %{rust_arches}
- rust-lscolors
ExclusiveArch: %{rust_arches}
- rust-lsd
ExclusiveArch: %{rust_arches}
- rust-mac
ExclusiveArch: %{rust_arches}
- rust-mac_address
ExclusiveArch: %{rust_arches}
- rust-madvr_parse
ExclusiveArch: %{rust_arches}
- rust-maildir
ExclusiveArch: %{rust_arches}
- rust-mailparse
ExclusiveArch: %{rust_arches}
- rust-man
ExclusiveArch: %{rust_arches}
- rust-maplit
ExclusiveArch: %{rust_arches}
- rust-markup5ever
ExclusiveArch: %{rust_arches}
- rust-markup5ever_rcdom
ExclusiveArch: %{rust_arches}
- rust-match_cfg
ExclusiveArch: %{rust_arches}
- rust-matches
ExclusiveArch: %{rust_arches}
- rust-matrixcompare
ExclusiveArch: %{rust_arches}
- rust-matrixcompare-core
ExclusiveArch: %{rust_arches}
- rust-matrixcompare-mock
ExclusiveArch: %{rust_arches}
- rust-matrixmultiply
ExclusiveArch: %{rust_arches}
- rust-maybe-uninit
ExclusiveArch: %{rust_arches}
- rust-mbox
ExclusiveArch: %{rust_arches}
- rust-mbrman
ExclusiveArch: %{rust_arches}
- rust-md-5
ExclusiveArch: %{rust_arches}
- rust-md-5_0.9
ExclusiveArch: %{rust_arches}
- rust-md5
ExclusiveArch: %{rust_arches}
- rust-memcached-rs
ExclusiveArch: %{rust_arches}
- rust-memchr
ExclusiveArch: %{rust_arches}
- rust-memmap
ExclusiveArch: %{rust_arches}
- rust-memmap2_0.3
ExclusiveArch: %{rust_arches}
- rust-memmem
ExclusiveArch: %{rust_arches}
- rust-memoffset0.5
ExclusiveArch: %{rust_arches}
- rust-memsec
ExclusiveArch: %{rust_arches}
- rust-micro-timer
ExclusiveArch: %{rust_arches}
- rust-micro-timer-macros
ExclusiveArch: %{rust_arches}
- rust-mime
ExclusiveArch: %{rust_arches}
- rust-minimad
ExclusiveArch: %{rust_arches}
- rust-minimal-lexical
ExclusiveArch: %{rust_arches}
- rust-miniz_oxide
ExclusiveArch: %{rust_arches}
- rust-miniz_oxide0.3
ExclusiveArch: %{rust_arches}
- rust-mint
ExclusiveArch: %{rust_arches}
- rust-mio-extras
ExclusiveArch: %{rust_arches}
- rust-mio-uds
ExclusiveArch: %{rust_arches}
- rust-mio0.6
ExclusiveArch: %{rust_arches}
- rust-mio0.7
ExclusiveArch: %{rust_arches}
- rust-mockall_double
ExclusiveArch: %{rust_arches}
- rust-mockito
ExclusiveArch: %{rust_arches}
- rust-mptcp-pm
ExclusiveArch: %{rust_arches}
- rust-multer
ExclusiveArch: %{rust_arches}
- rust-multimap
ExclusiveArch: %{rust_arches}
- rust-mustache
ExclusiveArch: %{rust_arches}
- rust-nalgebra-macros
ExclusiveArch: %{rust_arches}
- rust-nanorand
ExclusiveArch: %{rust_arches}
- rust-nasm-rs
ExclusiveArch: %{rust_arches}
- rust-natord
ExclusiveArch: %{rust_arches}
- rust-navi
ExclusiveArch: %{rust_arches}
- rust-nb-connect
ExclusiveArch: %{rust_arches}
- rust-ncurses
ExclusiveArch: %{rust_arches}
- rust-netlink-packet-core
ExclusiveArch: %{rust_arches}
- rust-netlink-packet-generic
ExclusiveArch: %{rust_arches}
- rust-netlink-packet-route
ExclusiveArch: %{rust_arches}
- rust-netlink-packet-utils
ExclusiveArch: %{rust_arches}
- rust-netlink-proto
ExclusiveArch: %{rust_arches}
- rust-netlink-sys
ExclusiveArch: %{rust_arches}
- rust-netmap_sys
ExclusiveArch: %{rust_arches}
- rust-netstat2
ExclusiveArch: %{rust_arches}
- rust-nettle
ExclusiveArch: %{rust_arches}
- rust-nettle-sys
ExclusiveArch: %{rust_arches}
- rust-new_debug_unreachable
ExclusiveArch: %{rust_arches}
- rust-nix
ExclusiveArch: %{rust_arches}
- rust-nix0.14
ExclusiveArch: %{rust_arches}
- rust-nix0.17
ExclusiveArch: %{rust_arches}
- rust-nix0.18
ExclusiveArch: %{rust_arches}
- rust-nix0.20
ExclusiveArch: %{rust_arches}
- rust-nix0.22
ExclusiveArch: %{rust_arches}
- rust-nix0.23
ExclusiveArch: %{rust_arches}
- rust-nodrop
ExclusiveArch: %{rust_arches}
- rust-nohash-hasher
ExclusiveArch: %{rust_arches}
- rust-nom
ExclusiveArch: %{rust_arches}
- rust-nom4
ExclusiveArch: %{rust_arches}
- rust-nom5
ExclusiveArch: %{rust_arches}
- rust-noop_proc_macro
ExclusiveArch: %{rust_arches}
- rust-normalize-line-endings
ExclusiveArch: %{rust_arches}
- rust-notify
ExclusiveArch: %{rust_arches}
- rust-notify-rust
ExclusiveArch: %{rust_arches}
- rust-nu-ansi-term
ExclusiveArch: %{rust_arches}
- rust-nu-engine
ExclusiveArch: %{rust_arches}
- rust-nu-glob
ExclusiveArch: %{rust_arches}
- rust-nu-json
ExclusiveArch: %{rust_arches}
- rust-nu-parser
ExclusiveArch: %{rust_arches}
- rust-nu-path
ExclusiveArch: %{rust_arches}
- rust-nu-plugin
ExclusiveArch: %{rust_arches}
- rust-nu-protocol
ExclusiveArch: %{rust_arches}
- rust-nu-system
ExclusiveArch: %{rust_arches}
- rust-nu-utils
ExclusiveArch: %{rust_arches}
- rust-num
ExclusiveArch: %{rust_arches}
- rust-num-bigint
ExclusiveArch: %{rust_arches}
- rust-num-bigint-dig
ExclusiveArch: %{rust_arches}
- rust-num-bigint0.3
ExclusiveArch: %{rust_arches}
- rust-num-complex
ExclusiveArch: %{rust_arches}
- rust-num-complex0.3
ExclusiveArch: %{rust_arches}
- rust-num-derive
ExclusiveArch: %{rust_arches}
- rust-num-integer
ExclusiveArch: %{rust_arches}
- rust-num-iter
ExclusiveArch: %{rust_arches}
- rust-num-rational
ExclusiveArch: %{rust_arches}
- rust-num-rational0.3
ExclusiveArch: %{rust_arches}
- rust-num-traits
ExclusiveArch: %{rust_arches}
- rust-num-traits0.1
ExclusiveArch: %{rust_arches}
- rust-num0.3
ExclusiveArch: %{rust_arches}
- rust-num_enum
ExclusiveArch: %{rust_arches}
- rust-num_enum_derive
ExclusiveArch: %{rust_arches}
- rust-num_threads
ExclusiveArch: %{rust_arches}
- rust-number_prefix
ExclusiveArch: %{rust_arches}
- rust-numtoa
ExclusiveArch: %{rust_arches}
- rust-oauth2
ExclusiveArch: %{rust_arches}
- rust-object
ExclusiveArch: %{rust_arches}
- rust-oid
ExclusiveArch: %{rust_arches}
- rust-onig
ExclusiveArch: %{rust_arches}
- rust-onig_sys
ExclusiveArch: %{rust_arches}
- rust-opaque-debug
ExclusiveArch: %{rust_arches}
- rust-openat
ExclusiveArch: %{rust_arches}
- rust-openat-ext
ExclusiveArch: %{rust_arches}
- rust-opener
ExclusiveArch: %{rust_arches}
- rust-openssh-keys
ExclusiveArch: %{rust_arches}
- rust-openssl-kdf
ExclusiveArch: %{rust_arches}
- rust-openssl-macros
ExclusiveArch: %{rust_arches}
- rust-openssl-probe
ExclusiveArch: %{rust_arches}
- rust-option-operations
ExclusiveArch: %{rust_arches}
- rust-ord_subset
ExclusiveArch: %{rust_arches}
- rust-ordered-float2
ExclusiveArch: %{rust_arches}
- rust-ordered-stream
ExclusiveArch: %{rust_arches}
- rust-os-release
ExclusiveArch: %{rust_arches}
- rust-os_display
ExclusiveArch: %{rust_arches}
- rust-os_info
ExclusiveArch: %{rust_arches}
- rust-os_pipe0.9
ExclusiveArch: %{rust_arches}
- rust-os_type
ExclusiveArch: %{rust_arches}
- rust-osmesa-sys
ExclusiveArch: %{rust_arches}
- rust-ouroboros
ExclusiveArch: %{rust_arches}
- rust-ouroboros_macro
ExclusiveArch: %{rust_arches}
- rust-overload
ExclusiveArch: %{rust_arches}
- rust-owning_ref
ExclusiveArch: %{rust_arches}
- rust-owo-colors
ExclusiveArch: %{rust_arches}
- rust-packaging
ExclusiveArch: %{rust_arches}
- rust-pad
ExclusiveArch: %{rust_arches}
- rust-page_size
ExclusiveArch: %{rust_arches}
- rust-pager
ExclusiveArch: %{rust_arches}
- rust-palette_derive
ExclusiveArch: %{rust_arches}
- rust-pam
ExclusiveArch: %{rust_arches}
- rust-pam-sys
ExclusiveArch: %{rust_arches}
- rust-pancurses
ExclusiveArch: %{rust_arches}
- rust-paris
ExclusiveArch: %{rust_arches}
- rust-parking
ExclusiveArch: %{rust_arches}
- rust-parking_lot
ExclusiveArch: %{rust_arches}
- rust-parking_lot0.11
ExclusiveArch: %{rust_arches}
- rust-parse-zoneinfo
ExclusiveArch: %{rust_arches}
- rust-parsec-client
ExclusiveArch: %{rust_arches}
- rust-parsec-interface
ExclusiveArch: %{rust_arches}
- rust-partition-identity
ExclusiveArch: %{rust_arches}
- rust-passwd
ExclusiveArch: %{rust_arches}
- rust-password-hash
ExclusiveArch: %{rust_arches}
- rust-path-slash
ExclusiveArch: %{rust_arches}
- rust-pathdiff
ExclusiveArch: %{rust_arches}
- rust-pathfinder_geometry
ExclusiveArch: %{rust_arches}
- rust-pathfinder_simd
ExclusiveArch: %{rust_arches}
- rust-pathsearch
ExclusiveArch: %{rust_arches}
- rust-pbkdf2
ExclusiveArch: %{rust_arches}
- rust-pcap
ExclusiveArch: %{rust_arches}
- rust-pcre2
ExclusiveArch: %{rust_arches}
- rust-pcre2-sys
ExclusiveArch: %{rust_arches}
- rust-peeking_take_while
ExclusiveArch: %{rust_arches}
- rust-peg
ExclusiveArch: %{rust_arches}
- rust-peg-macros
ExclusiveArch: %{rust_arches}
- rust-peg-runtime
ExclusiveArch: %{rust_arches}
- rust-peg0.5
ExclusiveArch: %{rust_arches}
- rust-pem-rfc7468
ExclusiveArch: %{rust_arches}
- rust-pem0.8
ExclusiveArch: %{rust_arches}
- rust-percent-encoding
ExclusiveArch: %{rust_arches}
- rust-percent-encoding1
ExclusiveArch: %{rust_arches}
- rust-peresil
ExclusiveArch: %{rust_arches}
- rust-permutohedron
ExclusiveArch: %{rust_arches}
- rust-pest
ExclusiveArch: %{rust_arches}
- rust-pest_derive
ExclusiveArch: %{rust_arches}
- rust-pest_generator
ExclusiveArch: %{rust_arches}
- rust-pest_meta
ExclusiveArch: %{rust_arches}
- rust-petgraph
ExclusiveArch: %{rust_arches}
- rust-petgraph0.5
ExclusiveArch: %{rust_arches}
- rust-phf
ExclusiveArch: %{rust_arches}
- rust-phf0.8
ExclusiveArch: %{rust_arches}
- rust-phf_codegen
ExclusiveArch: %{rust_arches}
- rust-phf_macros
ExclusiveArch: %{rust_arches}
- rust-phf_macros0.8
ExclusiveArch: %{rust_arches}
- rust-phf_shared
ExclusiveArch: %{rust_arches}
- rust-phf_shared0.8
ExclusiveArch: %{rust_arches}
- rust-picky-asn1
ExclusiveArch: %{rust_arches}
- rust-picky-asn1-der
ExclusiveArch: %{rust_arches}
- rust-picky-asn1-x509
ExclusiveArch: %{rust_arches}
- rust-pico-args
ExclusiveArch: %{rust_arches}
- rust-pid
ExclusiveArch: %{rust_arches}
- rust-pin-project
ExclusiveArch: %{rust_arches}
- rust-pin-project-internal
ExclusiveArch: %{rust_arches}
- rust-pin-project-internal0.4
ExclusiveArch: %{rust_arches}
- rust-pin-project-lite
ExclusiveArch: %{rust_arches}
- rust-pin-project-lite0.1
ExclusiveArch: %{rust_arches}
- rust-pin-project0.4
ExclusiveArch: %{rust_arches}
- rust-pin-utils
ExclusiveArch: %{rust_arches}
- rust-pipewire
ExclusiveArch: %{rust_arches}
- rust-pipewire-sys
ExclusiveArch: %{rust_arches}
- rust-pkcs1
ExclusiveArch: %{rust_arches}
- rust-pkcs5
ExclusiveArch: %{rust_arches}
- rust-pkcs8
ExclusiveArch: %{rust_arches}
- rust-plain
ExclusiveArch: %{rust_arches}
- rust-platform-info
ExclusiveArch: %{rust_arches}
- rust-plist
ExclusiveArch: %{rust_arches}
- rust-plotlib
ExclusiveArch: %{rust_arches}
- rust-pnet_base
ExclusiveArch: %{rust_arches}
- rust-pnet_datalink
ExclusiveArch: %{rust_arches}
- rust-pnet_sys
ExclusiveArch: %{rust_arches}
- rust-png
ExclusiveArch: %{rust_arches}
- rust-png0.16
ExclusiveArch: %{rust_arches}
- rust-podio
ExclusiveArch: %{rust_arches}
- rust-polyval
ExclusiveArch: %{rust_arches}
- rust-pom
ExclusiveArch: %{rust_arches}
- rust-pq-sys
ExclusiveArch: %{rust_arches}
- rust-precomputed-hash
ExclusiveArch: %{rust_arches}
- rust-predicates
ExclusiveArch: %{rust_arches}
- rust-predicates1
ExclusiveArch: %{rust_arches}
- rust-pretty-bytes
ExclusiveArch: %{rust_arches}
- rust-pretty-git-prompt
ExclusiveArch: %{rust_arches}
- rust-pretty-hex
ExclusiveArch: %{rust_arches}
- rust-pretty_assertions
ExclusiveArch: %{rust_arches}
- rust-pretty_assertions0.6
ExclusiveArch: %{rust_arches}
- rust-pretty_assertions0.7
ExclusiveArch: %{rust_arches}
- rust-pretty_env_logger
ExclusiveArch: %{rust_arches}
- rust-prettytable-rs
ExclusiveArch: %{rust_arches}
- rust-primal-bit
ExclusiveArch: %{rust_arches}
- rust-primal-check
ExclusiveArch: %{rust_arches}
- rust-primal-estimate
ExclusiveArch: %{rust_arches}
- rust-proc-macro-crate
ExclusiveArch: %{rust_arches}
- rust-proc-macro-crate0.1
ExclusiveArch: %{rust_arches}
- rust-proc-macro-error
ExclusiveArch: %{rust_arches}
- rust-proc-macro-error-attr
ExclusiveArch: %{rust_arches}
- rust-proc-macro-hack
ExclusiveArch: %{rust_arches}
- rust-proc-macro2-0.4
ExclusiveArch: %{rust_arches}
- rust-proc-maps
ExclusiveArch: %{rust_arches}
- rust-proc-mounts
ExclusiveArch: %{rust_arches}
- rust-process_control
ExclusiveArch: %{rust_arches}
- rust-procfs
ExclusiveArch: %{rust_arches}
- rust-procfs0.9
ExclusiveArch: %{rust_arches}
- rust-procs
ExclusiveArch: %{rust_arches}
- rust-progress-streams
ExclusiveArch: %{rust_arches}
- rust-prometheus
ExclusiveArch: %{rust_arches}
- rust-proptest
ExclusiveArch: %{rust_arches}
- rust-proptest0.10
ExclusiveArch: %{rust_arches}
- rust-prost
ExclusiveArch: %{rust_arches}
- rust-prost-build
ExclusiveArch: %{rust_arches}
- rust-prost-derive
ExclusiveArch: %{rust_arches}
- rust-prost-derive0.8
ExclusiveArch: %{rust_arches}
- rust-prost-types
ExclusiveArch: %{rust_arches}
- rust-prost0.8
ExclusiveArch: %{rust_arches}
- rust-protobuf
ExclusiveArch: %{rust_arches}
- rust-protobuf-codegen
ExclusiveArch: %{rust_arches}
- rust-protobuf-codegen-pure
ExclusiveArch: %{rust_arches}
- rust-protoc
ExclusiveArch: %{rust_arches}
- rust-psa-crypto
ExclusiveArch: %{rust_arches}
- rust-psa-crypto-sys
ExclusiveArch: %{rust_arches}
- rust-psl-types
ExclusiveArch: %{rust_arches}
- rust-psm
ExclusiveArch: %{rust_arches}
- rust-ptr_meta
ExclusiveArch: %{rust_arches}
- rust-ptr_meta_derive
ExclusiveArch: %{rust_arches}
- rust-pulse
ExclusiveArch: %{rust_arches}
- rust-pure-rust-locales
ExclusiveArch: %{rust_arches}
- rust-pwd
ExclusiveArch: %{rust_arches}
- rust-pyo3
ExclusiveArch: %{rust_arches}
- rust-pyo3-build-config
ExclusiveArch: %{rust_arches}
- rust-pyo3-macros
ExclusiveArch: %{rust_arches}
- rust-pyo3-macros-backend
ExclusiveArch: %{rust_arches}
- rust-python-launcher
ExclusiveArch: %{rust_arches}
- rust-qstring
ExclusiveArch: %{rust_arches}
- rust-quantiles
ExclusiveArch: %{rust_arches}
- rust-quick-error
ExclusiveArch: %{rust_arches}
- rust-quick-error1
ExclusiveArch: %{rust_arches}
- rust-quick-xml0.22
ExclusiveArch: %{rust_arches}
- rust-quickcheck
ExclusiveArch: %{rust_arches}
- rust-quickcheck0.6
ExclusiveArch: %{rust_arches}
- rust-quickcheck0.9
ExclusiveArch: %{rust_arches}
- rust-quickcheck_macros
ExclusiveArch: %{rust_arches}
- rust-quicli
ExclusiveArch: %{rust_arches}
- rust-quote0.3
ExclusiveArch: %{rust_arches}
- rust-quote0.6
ExclusiveArch: %{rust_arches}
- rust-r2d2
ExclusiveArch: %{rust_arches}
- rust-radium
ExclusiveArch: %{rust_arches}
- rust-rand
ExclusiveArch: %{rust_arches}
- rust-rand0.4
ExclusiveArch: %{rust_arches}
- rust-rand0.5
ExclusiveArch: %{rust_arches}
- rust-rand0.6
ExclusiveArch: %{rust_arches}
- rust-rand0.7
ExclusiveArch: %{rust_arches}
- rust-rand_chacha
ExclusiveArch: %{rust_arches}
- rust-rand_chacha0.1
ExclusiveArch: %{rust_arches}
- rust-rand_chacha0.2
ExclusiveArch: %{rust_arches}
- rust-rand_core
ExclusiveArch: %{rust_arches}
- rust-rand_core0.3
ExclusiveArch: %{rust_arches}
- rust-rand_core0.4
ExclusiveArch: %{rust_arches}
- rust-rand_core0.5
ExclusiveArch: %{rust_arches}
- rust-rand_distr
ExclusiveArch: %{rust_arches}
- rust-rand_hc
ExclusiveArch: %{rust_arches}
- rust-rand_hc0.1
ExclusiveArch: %{rust_arches}
- rust-rand_isaac
ExclusiveArch: %{rust_arches}
- rust-rand_isaac0.1
ExclusiveArch: %{rust_arches}
- rust-rand_jitter
ExclusiveArch: %{rust_arches}
- rust-rand_jitter0.1
ExclusiveArch: %{rust_arches}
- rust-rand_os
ExclusiveArch: %{rust_arches}
- rust-rand_os0.1
ExclusiveArch: %{rust_arches}
- rust-rand_pcg
ExclusiveArch: %{rust_arches}
- rust-rand_pcg0.1
ExclusiveArch: %{rust_arches}
- rust-rand_pcg0.2
ExclusiveArch: %{rust_arches}
- rust-rand_xorshift
ExclusiveArch: %{rust_arches}
- rust-rand_xorshift0.1
ExclusiveArch: %{rust_arches}
- rust-rand_xorshift0.2
ExclusiveArch: %{rust_arches}
- rust-rand_xoshiro
ExclusiveArch: %{rust_arches}
- rust-random
ExclusiveArch: %{rust_arches}
- rust-random-fast-rng
ExclusiveArch: %{rust_arches}
- rust-random-trait
ExclusiveArch: %{rust_arches}
- rust-randomize
ExclusiveArch: %{rust_arches}
- rust-rav1e
ExclusiveArch: %{rust_arches}
- rust-raw-window-handle
ExclusiveArch: %{rust_arches}
- rust-rawpointer
ExclusiveArch: %{rust_arches}
- rust-rawslice
ExclusiveArch: %{rust_arches}
- rust-rbspy
ExclusiveArch: %{rust_arches}
- rust-rbspy-ruby-structs
ExclusiveArch: %{rust_arches}
- rust-rbspy-testdata
ExclusiveArch: %{rust_arches}
- rust-rctree
ExclusiveArch: %{rust_arches}
- rust-rd-agent
ExclusiveArch: %{rust_arches}
- rust-rd-agent-intf
ExclusiveArch: %{rust_arches}
- rust-rd-hashd
ExclusiveArch: %{rust_arches}
- rust-rd-hashd-intf
ExclusiveArch: %{rust_arches}
- rust-rd-util
ExclusiveArch: %{rust_arches}
- rust-read-process-memory
ExclusiveArch: %{rust_arches}
- rust-read_input
ExclusiveArch: %{rust_arches}
- rust-readwrite
ExclusiveArch: %{rust_arches}
- rust-regex-automata
ExclusiveArch: %{rust_arches}
- rust-region
ExclusiveArch: %{rust_arches}
- rust-remoteprocess
ExclusiveArch: %{rust_arches}
- rust-remove_dir_all
ExclusiveArch: %{rust_arches}
- rust-rend
ExclusiveArch: %{rust_arches}
- rust-reqwest
ExclusiveArch: %{rust_arches}
- rust-resctl-bench
ExclusiveArch: %{rust_arches}
- rust-resctl-bench-intf
ExclusiveArch: %{rust_arches}
- rust-resctl-demo
ExclusiveArch: %{rust_arches}
- rust-resize
ExclusiveArch: %{rust_arches}
- rust-resolv-conf
ExclusiveArch: %{rust_arches}
- rust-retry
ExclusiveArch: %{rust_arches}
- rust-rgb
ExclusiveArch: %{rust_arches}
- rust-ring
ExclusiveArch: %{rust_arches}
- rust-ripgrep
ExclusiveArch: %{rust_arches}
- rust-rkyv
ExclusiveArch: %{rust_arches}
- rust-rkyv_derive
ExclusiveArch: %{rust_arches}
- rust-rle-decode-fast
ExclusiveArch: %{rust_arches}
- rust-rmp
ExclusiveArch: %{rust_arches}
- rust-rmp-serde
ExclusiveArch: %{rust_arches}
- rust-rmpv
ExclusiveArch: %{rust_arches}
- rust-roff
ExclusiveArch: %{rust_arches}
- rust-ron
ExclusiveArch: %{rust_arches}
- rust-rpassword
ExclusiveArch: %{rust_arches}
- rust-rpick
ExclusiveArch: %{rust_arches}
- rust-rsa
ExclusiveArch: %{rust_arches}
- rust-rspec
ExclusiveArch: %{rust_arches}
- rust-rtnetlink
ExclusiveArch: %{rust_arches}
- rust-rusqlite
ExclusiveArch: %{rust_arches}
- rust-rust_decimal
ExclusiveArch: %{rust_arches}
- rust-rustbus_derive
ExclusiveArch: %{rust_arches}
- rust-rustc-hash
ExclusiveArch: %{rust_arches}
- rust-rustc-serialize
ExclusiveArch: %{rust_arches}
- rust-rustc-test
ExclusiveArch: %{rust_arches}
- rust-rustc_tools_util
ExclusiveArch: %{rust_arches}
- rust-rustc_version
ExclusiveArch: %{rust_arches}
- rust-rustc_version0.3
ExclusiveArch: %{rust_arches}
- rust-rustcat
ExclusiveArch: %{rust_arches}
- rust-rustfix
ExclusiveArch: %{rust_arches}
- rust-rustls-native-certs
ExclusiveArch: %{rust_arches}
- rust-rustls-pemfile
ExclusiveArch: %{rust_arches}
- rust-rusty-fork
ExclusiveArch: %{rust_arches}
- rust-rustyline
ExclusiveArch: %{rust_arches}
- rust-rustyline-derive
ExclusiveArch: %{rust_arches}
- rust-safe_arch
ExclusiveArch: %{rust_arches}
- rust-safemem
ExclusiveArch: %{rust_arches}
- rust-salsa20
ExclusiveArch: %{rust_arches}
- rust-same-file
ExclusiveArch: %{rust_arches}
- rust-scan_fmt
ExclusiveArch: %{rust_arches}
- rust-scheduled-thread-pool
ExclusiveArch: %{rust_arches}
- rust-schemafy_core
ExclusiveArch: %{rust_arches}
- rust-schemafy_lib
ExclusiveArch: %{rust_arches}
- rust-scoped_threadpool
ExclusiveArch: %{rust_arches}
- rust-scopeguard
ExclusiveArch: %{rust_arches}
- rust-scopetime
ExclusiveArch: %{rust_arches}
- rust-scratch
ExclusiveArch: %{rust_arches}
- rust-scroll
ExclusiveArch: %{rust_arches}
- rust-scroll_derive
ExclusiveArch: %{rust_arches}
- rust-scrypt
ExclusiveArch: %{rust_arches}
- rust-sct
ExclusiveArch: %{rust_arches}
- rust-sd
ExclusiveArch: %{rust_arches}
- rust-sd-notify
ExclusiveArch: %{rust_arches}
- rust-seahash
ExclusiveArch: %{rust_arches}
- rust-seahash3
ExclusiveArch: %{rust_arches}
- rust-secrecy
ExclusiveArch: %{rust_arches}
- rust-secret-service
ExclusiveArch: %{rust_arches}
- rust-selectors
ExclusiveArch: %{rust_arches}
- rust-self_cell
ExclusiveArch: %{rust_arches}
- rust-semver-parser
ExclusiveArch: %{rust_arches}
- rust-semver-parser0.9
ExclusiveArch: %{rust_arches}
- rust-semver0.11
ExclusiveArch: %{rust_arches}
- rust-sequoia-autocrypt
ExclusiveArch: %{rust_arches}
- rust-sequoia-ipc
ExclusiveArch: %{rust_arches}
- rust-sequoia-net
ExclusiveArch: %{rust_arches}
- rust-sequoia-octopus-librnp
ExclusiveArch: %{rust_arches}
- rust-sequoia-openpgp-mt
ExclusiveArch: %{rust_arches}
- rust-sequoia-sop
ExclusiveArch: %{rust_arches}
- rust-sequoia-sq
ExclusiveArch: %{rust_arches}
- rust-sequoia-sqv
ExclusiveArch: %{rust_arches}
- rust-serde-big-array
ExclusiveArch: %{rust_arches}
- rust-serde-value
ExclusiveArch: %{rust_arches}
- rust-serde-xml-rs
ExclusiveArch: %{rust_arches}
- rust-serde_bser
ExclusiveArch: %{rust_arches}
- rust-serde_cbor
ExclusiveArch: %{rust_arches}
- rust-serde_fmt
ExclusiveArch: %{rust_arches}
- rust-serde_qs
ExclusiveArch: %{rust_arches}
- rust-serde_url_params
ExclusiveArch: %{rust_arches}
- rust-serde_urlencoded
ExclusiveArch: %{rust_arches}
- rust-serde_with
ExclusiveArch: %{rust_arches}
- rust-serde_with_macros
ExclusiveArch: %{rust_arches}
- rust-serde_yaml0.8
ExclusiveArch: %{rust_arches}
- rust-serial-core
ExclusiveArch: %{rust_arches}
- rust-serial_test0.5
ExclusiveArch: %{rust_arches}
- rust-serial_test_derive0.5
ExclusiveArch: %{rust_arches}
- rust-servo-fontconfig
ExclusiveArch: %{rust_arches}
- rust-servo-fontconfig-sys
ExclusiveArch: %{rust_arches}
- rust-servo_arc
ExclusiveArch: %{rust_arches}
- rust-sev
ExclusiveArch: x86_64
- rust-sevctl
ExclusiveArch: x86_64
- rust-sha-1_0.9
ExclusiveArch: %{rust_arches}
- rust-sha1
ExclusiveArch: %{rust_arches}
- rust-sha1_0.6
ExclusiveArch: %{rust_arches}
- rust-sha1_smol
ExclusiveArch: %{rust_arches}
- rust-sha1collisiondetection
ExclusiveArch: %{rust_arches}
- rust-sha2
ExclusiveArch: %{rust_arches}
- rust-sha2_0.9
ExclusiveArch: %{rust_arches}
- rust-sha3_0.9
ExclusiveArch: %{rust_arches}
- rust-shadow-rs
ExclusiveArch: %{rust_arches}
- rust-sharded-slab
ExclusiveArch: %{rust_arches}
- rust-shared_child
ExclusiveArch: %{rust_arches}
- rust-shared_library
ExclusiveArch: %{rust_arches}
- rust-shell-escape
ExclusiveArch: %{rust_arches}
- rust-shell-words
ExclusiveArch: %{rust_arches}
- rust-shellexpand
ExclusiveArch: %{rust_arches}
- rust-shellwords
ExclusiveArch: %{rust_arches}
- rust-shlex
ExclusiveArch: %{rust_arches}
- rust-signal
ExclusiveArch: %{rust_arches}
- rust-signal-hook
ExclusiveArch: %{rust_arches}
- rust-signal-hook-mio
ExclusiveArch: %{rust_arches}
- rust-signal-hook-registry
ExclusiveArch: %{rust_arches}
- rust-signal-hook0.1
ExclusiveArch: %{rust_arches}
- rust-signature
ExclusiveArch: %{rust_arches}
- rust-signature_derive
ExclusiveArch: %{rust_arches}
- rust-silver
ExclusiveArch: %{rust_arches}
- rust-simd_helpers
ExclusiveArch: %{rust_arches}
- rust-similar-asserts
ExclusiveArch: %{rust_arches}
- rust-simple-error
ExclusiveArch: %{rust_arches}
- rust-simple_asn1
ExclusiveArch: %{rust_arches}
- rust-simple_logger
ExclusiveArch: %{rust_arches}
- rust-simplelog
ExclusiveArch: %{rust_arches}
- rust-sinit
ExclusiveArch: %{rust_arches}
- rust-siphasher
ExclusiveArch: %{rust_arches}
- rust-sized-chunks
ExclusiveArch: %{rust_arches}
- rust-skeptic
ExclusiveArch: %{rust_arches}
- rust-skim
ExclusiveArch: %{rust_arches}
- rust-slab
ExclusiveArch: %{rust_arches}
- rust-slog-async
ExclusiveArch: %{rust_arches}
- rust-slog-scope
ExclusiveArch: %{rust_arches}
- rust-slog-term
ExclusiveArch: %{rust_arches}
- rust-slug
ExclusiveArch: %{rust_arches}
- rust-smallbitvec
ExclusiveArch: %{rust_arches}
- rust-smallstr
ExclusiveArch: %{rust_arches}
- rust-smallvec
ExclusiveArch: %{rust_arches}
- rust-smawk
ExclusiveArch: %{rust_arches}
- rust-smithay-client-toolkit
ExclusiveArch: %{rust_arches}
- rust-smithay-clipboard
ExclusiveArch: %{rust_arches}
- rust-smol_str
ExclusiveArch: %{rust_arches}
- rust-snake_case
ExclusiveArch: %{rust_arches}
- rust-socket2
ExclusiveArch: %{rust_arches}
- rust-sop
ExclusiveArch: %{rust_arches}
- rust-spin
ExclusiveArch: %{rust_arches}
- rust-spin0.5
ExclusiveArch: %{rust_arches}
- rust-spin_on
ExclusiveArch: %{rust_arches}
- rust-spki
ExclusiveArch: %{rust_arches}
- rust-ssh-key-dir
ExclusiveArch: %{rust_arches}
- rust-stable_deref_trait
ExclusiveArch: %{rust_arches}
- rust-stacker
ExclusiveArch: %{rust_arches}
- rust-standback
ExclusiveArch: %{rust_arches}
- rust-static_assertions
ExclusiveArch: %{rust_arches}
- rust-statistical
ExclusiveArch: %{rust_arches}
- rust-statrs
ExclusiveArch: %{rust_arches}
- rust-stb_truetype
ExclusiveArch: %{rust_arches}
- rust-str_stack
ExclusiveArch: %{rust_arches}
- rust-stratisd_proc_macros
ExclusiveArch: %{rust_arches}
- rust-streaming-stats
ExclusiveArch: %{rust_arches}
- rust-streebog
ExclusiveArch: %{rust_arches}
- rust-streebog0.9
ExclusiveArch: %{rust_arches}
- rust-strict
ExclusiveArch: %{rust_arches}
- rust-string_cache
ExclusiveArch: %{rust_arches}
- rust-string_cache_codegen
ExclusiveArch: %{rust_arches}
- rust-strip-ansi-escapes
ExclusiveArch: %{rust_arches}
- rust-strsim
ExclusiveArch: %{rust_arches}
- rust-structopt
ExclusiveArch: %{rust_arches}
- rust-structopt-derive
ExclusiveArch: %{rust_arches}
- rust-structopt-derive0.2
ExclusiveArch: %{rust_arches}
- rust-structopt0.2
ExclusiveArch: %{rust_arches}
- rust-strum
ExclusiveArch: %{rust_arches}
- rust-strum0.21
ExclusiveArch: %{rust_arches}
- rust-strum_macros
ExclusiveArch: %{rust_arches}
- rust-strum_macros0.21
ExclusiveArch: %{rust_arches}
- rust-subprocess
ExclusiveArch: %{rust_arches}
- rust-subtle
ExclusiveArch: %{rust_arches}
- rust-sudo_plugin-sys
ExclusiveArch: %{rust_arches}
- rust-supports-color
ExclusiveArch: %{rust_arches}
- rust-supports-hyperlinks
ExclusiveArch: %{rust_arches}
- rust-supports-unicode
ExclusiveArch: %{rust_arches}
- rust-sval
ExclusiveArch: %{rust_arches}
- rust-sval_derive
ExclusiveArch: %{rust_arches}
- rust-sval_json
ExclusiveArch: %{rust_arches}
- rust-svg
ExclusiveArch: %{rust_arches}
- rust-syn0.15
ExclusiveArch: %{rust_arches}
- rust-synstructure
ExclusiveArch: %{rust_arches}
- rust-syntect
ExclusiveArch: %{rust_arches}
- rust-syntect4
ExclusiveArch: %{rust_arches}
- rust-sys-info
ExclusiveArch: %{rust_arches}
- rust-sysctl
ExclusiveArch: %{rust_arches}
- rust-sysinfo0.19
ExclusiveArch: %{rust_arches}
- rust-syslog
ExclusiveArch: %{rust_arches}
- rust-system76_ectool
ExclusiveArch: %{rust_arches}
- rust-tabular
ExclusiveArch: %{rust_arches}
- rust-take_mut
ExclusiveArch: %{rust_arches}
- rust-tap
ExclusiveArch: %{rust_arches}
- rust-tar
ExclusiveArch: %{rust_arches}
- rust-target
ExclusiveArch: %{rust_arches}
- rust-tealdeer
ExclusiveArch: %{rust_arches}
- rust-temp-env
ExclusiveArch: %{rust_arches}
- rust-temp_testdir
ExclusiveArch: %{rust_arches}
- rust-tempdir
ExclusiveArch: %{rust_arches}
- rust-tempfile
ExclusiveArch: %{rust_arches}
- rust-temporary
ExclusiveArch: %{rust_arches}
- rust-temptree
ExclusiveArch: %{rust_arches}
- rust-tendril
ExclusiveArch: %{rust_arches}
- rust-tera
ExclusiveArch: %{rust_arches}
- rust-term
ExclusiveArch: %{rust_arches}
- rust-term0.6
ExclusiveArch: %{rust_arches}
- rust-term_grid
ExclusiveArch: %{rust_arches}
- rust-term_size
ExclusiveArch: %{rust_arches}
- rust-termbg
ExclusiveArch: %{rust_arches}
- rust-termcolor
ExclusiveArch: %{rust_arches}
- rust-terminfo
ExclusiveArch: %{rust_arches}
- rust-termion
ExclusiveArch: %{rust_arches}
- rust-termios
ExclusiveArch: %{rust_arches}
- rust-test-assembler
ExclusiveArch: %{rust_arches}
- rust-test-case
ExclusiveArch: %{rust_arches}
- rust-tester
ExclusiveArch: %{rust_arches}
- rust-testing_logger
ExclusiveArch: %{rust_arches}
- rust-textwrap
ExclusiveArch: %{rust_arches}
- rust-textwrap0.11
ExclusiveArch: %{rust_arches}
- rust-textwrap0.14
ExclusiveArch: %{rust_arches}
- rust-thread-id
ExclusiveArch: %{rust_arches}
- rust-thread-tree
ExclusiveArch: %{rust_arches}
- rust-thread_local
ExclusiveArch: %{rust_arches}
- rust-threadpool
ExclusiveArch: %{rust_arches}
- rust-tiff
ExclusiveArch: %{rust_arches}
- rust-tiff0.6
ExclusiveArch: %{rust_arches}
- rust-tiger
ExclusiveArch: %{rust_arches}
- rust-time
ExclusiveArch: %{rust_arches}
- rust-time-macros
ExclusiveArch: %{rust_arches}
- rust-time-macros-impl
ExclusiveArch: %{rust_arches}
- rust-time-macros0.1
ExclusiveArch: %{rust_arches}
- rust-time0.2
ExclusiveArch: %{rust_arches}
- rust-timebomb
ExclusiveArch: %{rust_arches}
- rust-timer
ExclusiveArch: %{rust_arches}
- rust-tiny-keccak
ExclusiveArch: %{rust_arches}
- rust-tiny_http
ExclusiveArch: %{rust_arches}
- rust-tiny_http0.6
ExclusiveArch: %{rust_arches}
- rust-tinyvec
ExclusiveArch: %{rust_arches}
- rust-tinyvec_macros
ExclusiveArch: %{rust_arches}
- rust-tokei
ExclusiveArch: %{rust_arches}
- rust-tokio-codec
ExclusiveArch: %{rust_arches}
- rust-tokio-compat
ExclusiveArch: %{rust_arches}
- rust-tokio-core
ExclusiveArch: %{rust_arches}
- rust-tokio-current-thread
ExclusiveArch: %{rust_arches}
- rust-tokio-executor
ExclusiveArch: %{rust_arches}
- rust-tokio-fs
ExclusiveArch: %{rust_arches}
- rust-tokio-io
ExclusiveArch: %{rust_arches}
- rust-tokio-macros0.2
ExclusiveArch: %{rust_arches}
- rust-tokio-mock-task
ExclusiveArch: %{rust_arches}
- rust-tokio-native-tls
ExclusiveArch: %{rust_arches}
- rust-tokio-openssl
ExclusiveArch: %{rust_arches}
- rust-tokio-reactor
ExclusiveArch: %{rust_arches}
- rust-tokio-rustls
ExclusiveArch: %{rust_arches}
- rust-tokio-socks
ExclusiveArch: %{rust_arches}
- rust-tokio-sync
ExclusiveArch: %{rust_arches}
- rust-tokio-tcp
ExclusiveArch: %{rust_arches}
- rust-tokio-test
ExclusiveArch: %{rust_arches}
- rust-tokio-threadpool
ExclusiveArch: %{rust_arches}
- rust-tokio-timer
ExclusiveArch: %{rust_arches}
- rust-tokio-tungstenite
ExclusiveArch: %{rust_arches}
- rust-tokio-udp
ExclusiveArch: %{rust_arches}
- rust-tokio-uds
ExclusiveArch: %{rust_arches}
- rust-tokio-util
ExclusiveArch: %{rust_arches}
- rust-tokio-util0.6
ExclusiveArch: %{rust_arches}
- rust-tokio0.1
ExclusiveArch: %{rust_arches}
- rust-tokio0.2
ExclusiveArch: %{rust_arches}
- rust-toml0.4
ExclusiveArch: %{rust_arches}
- rust-toml_edit
ExclusiveArch: %{rust_arches}
- rust-totp-lite
ExclusiveArch: %{rust_arches}
- rust-tower-layer
ExclusiveArch: %{rust_arches}
- rust-tower-service
ExclusiveArch: %{rust_arches}
- rust-tower-test
ExclusiveArch: %{rust_arches}
- rust-tower-util
ExclusiveArch: %{rust_arches}
- rust-tpm2-policy
ExclusiveArch: %{rust_arches}
- rust-tracing
ExclusiveArch: %{rust_arches}
- rust-tracing-attributes
ExclusiveArch: %{rust_arches}
- rust-tracing-core
ExclusiveArch: %{rust_arches}
- rust-tracing-futures
ExclusiveArch: %{rust_arches}
- rust-tracing-log
ExclusiveArch: %{rust_arches}
- rust-trash
ExclusiveArch: %{rust_arches}
- rust-tree-sitter
ExclusiveArch: %{rust_arches}
- rust-tree-sitter-cli
ExclusiveArch: %{rust_arches}
- rust-tree-sitter-config
ExclusiveArch: %{rust_arches}
- rust-tree-sitter-highlight
ExclusiveArch: %{rust_arches}
- rust-tree-sitter-loader
ExclusiveArch: %{rust_arches}
- rust-tree-sitter-tags
ExclusiveArch: %{rust_arches}
- rust-treebitmap
ExclusiveArch: %{rust_arches}
- rust-treeline
ExclusiveArch: %{rust_arches}
- rust-trust-dns-proto
ExclusiveArch: %{rust_arches}
- rust-trust-dns-resolver
ExclusiveArch: %{rust_arches}
- rust-try-lock
ExclusiveArch: %{rust_arches}
- rust-tss-esapi
ExclusiveArch: %{rust_arches}
- rust-tss-esapi-sys
ExclusiveArch: %{rust_arches}
- rust-ttf-parser
ExclusiveArch: %{rust_arches}
- rust-ttf-parser0.12
ExclusiveArch: %{rust_arches}
- rust-tui
ExclusiveArch: %{rust_arches}
- rust-tui-react
ExclusiveArch: %{rust_arches}
- rust-tui0.11
ExclusiveArch: %{rust_arches}
- rust-tui0.9
ExclusiveArch: %{rust_arches}
- rust-tuikit
ExclusiveArch: %{rust_arches}
- rust-tungstenite
ExclusiveArch: %{rust_arches}
- rust-twoway
ExclusiveArch: %{rust_arches}
- rust-twox-hash
ExclusiveArch: %{rust_arches}
- rust-type-map
ExclusiveArch: %{rust_arches}
- rust-typed-arena
ExclusiveArch: %{rust_arches}
- rust-typed-arena1
ExclusiveArch: %{rust_arches}
- rust-typed-builder
ExclusiveArch: %{rust_arches}
- rust-typetag
ExclusiveArch: %{rust_arches}
- rust-typetag-impl
ExclusiveArch: %{rust_arches}
- rust-tzfile
ExclusiveArch: %{rust_arches}
- rust-ubyte
ExclusiveArch: %{rust_arches}
- rust-ucd-parse
ExclusiveArch: %{rust_arches}
- rust-ucd-trie
ExclusiveArch: %{rust_arches}
- rust-ucd-util
ExclusiveArch: %{rust_arches}
- rust-uefi-run
ExclusiveArch: %{rust_arches}
- rust-umask
ExclusiveArch: %{rust_arches}
- rust-uncased
ExclusiveArch: %{rust_arches}
- rust-unchecked-index
ExclusiveArch: %{rust_arches}
- rust-unescape
ExclusiveArch: %{rust_arches}
- rust-unic-char-property
ExclusiveArch: %{rust_arches}
- rust-unic-char-range
ExclusiveArch: %{rust_arches}
- rust-unic-common
ExclusiveArch: %{rust_arches}
- rust-unic-langid
ExclusiveArch: %{rust_arches}
- rust-unic-langid-macros
ExclusiveArch: %{rust_arches}
- rust-unic-langid-macros-impl
ExclusiveArch: %{rust_arches}
- rust-unic-locale
ExclusiveArch: %{rust_arches}
- rust-unic-locale-macros
ExclusiveArch: %{rust_arches}
- rust-unic-locale-macros-impl
ExclusiveArch: %{rust_arches}
- rust-unic-segment
ExclusiveArch: %{rust_arches}
- rust-unic-ucd-common
ExclusiveArch: %{rust_arches}
- rust-unic-ucd-segment
ExclusiveArch: %{rust_arches}
- rust-unic-ucd-version
ExclusiveArch: %{rust_arches}
- rust-unicase
ExclusiveArch: %{rust_arches}
- rust-unicase1
ExclusiveArch: %{rust_arches}
- rust-unicode-bidi
ExclusiveArch: %{rust_arches}
- rust-unicode-linebreak
ExclusiveArch: %{rust_arches}
- rust-unicode-normalization
ExclusiveArch: %{rust_arches}
- rust-unicode-segmentation
ExclusiveArch: %{rust_arches}
- rust-unicode-width
ExclusiveArch: %{rust_arches}
- rust-unicode-xid
ExclusiveArch: %{rust_arches}
- rust-unicode-xid0.1
ExclusiveArch: %{rust_arches}
- rust-unicode_categories
ExclusiveArch: %{rust_arches}
- rust-universal-hash
ExclusiveArch: %{rust_arches}
- rust-unix_socket
ExclusiveArch: %{rust_arches}
- rust-unreachable
ExclusiveArch: %{rust_arches}
- rust-untrusted
ExclusiveArch: %{rust_arches}
- rust-uriparse
ExclusiveArch: %{rust_arches}
- rust-url1
ExclusiveArch: %{rust_arches}
- rust-urlencoding
ExclusiveArch: %{rust_arches}
- rust-urlocator
ExclusiveArch: %{rust_arches}
- rust-users
ExclusiveArch: %{rust_arches}
- rust-users0.10
ExclusiveArch: %{rust_arches}
- rust-utf-8
ExclusiveArch: %{rust_arches}
- rust-utf8-width
ExclusiveArch: %{rust_arches}
- rust-utf8parse
ExclusiveArch: %{rust_arches}
- rust-uucore
ExclusiveArch: %{rust_arches}
- rust-uucore_procs
ExclusiveArch: %{rust_arches}
- rust-uuid0.7
ExclusiveArch: %{rust_arches}
- rust-uuid0.8
ExclusiveArch: %{rust_arches}
- rust-v_frame
ExclusiveArch: %{rust_arches}
- rust-value-bag
ExclusiveArch: %{rust_arches}
- rust-varbincode
ExclusiveArch: %{rust_arches}
- rust-varlink
ExclusiveArch: %{rust_arches}
- rust-varlink-cli
ExclusiveArch: %{rust_arches}
- rust-varlink_generator
ExclusiveArch: %{rust_arches}
- rust-varlink_parser
ExclusiveArch: %{rust_arches}
- rust-varlink_stdinterfaces
ExclusiveArch: %{rust_arches}
- rust-vcsgraph
ExclusiveArch: %{rust_arches}
- rust-vec_map
ExclusiveArch: %{rust_arches}
- rust-vergen
ExclusiveArch: %{rust_arches}
- rust-vergen3
ExclusiveArch: %{rust_arches}
- rust-version
ExclusiveArch: %{rust_arches}
- rust-version-sync
ExclusiveArch: %{rust_arches}
- rust-version-sync0.8
ExclusiveArch: %{rust_arches}
- rust-version_check
ExclusiveArch: %{rust_arches}
- rust-vhost
ExclusiveArch: %{rust_arches}
- rust-vhost-user-backend
ExclusiveArch: %{rust_arches}
- rust-virtio-bindings
ExclusiveArch: x86_64 aarch64 ppc64le
- rust-vmm-sys-util
ExclusiveArch: x86_64 aarch64 ppc64le
- rust-void
ExclusiveArch: %{rust_arches}
- rust-vsprintf
ExclusiveArch: %{rust_arches}
- rust-vte
ExclusiveArch: %{rust_arches}
- rust-vte_generate_state_changes
ExclusiveArch: %{rust_arches}
- rust-vtparse
ExclusiveArch: %{rust_arches}
- rust-wait-timeout
ExclusiveArch: %{rust_arches}
- rust-waker-fn
ExclusiveArch: %{rust_arches}
- rust-walkdir
ExclusiveArch: %{rust_arches}
- rust-want
ExclusiveArch: %{rust_arches}
- rust-warp
ExclusiveArch: %{rust_arches}
- rust-wasmer_enumset
ExclusiveArch: %{rust_arches}
- rust-wasmer_enumset_derive
ExclusiveArch: %{rust_arches}
- rust-watchman_client
ExclusiveArch: %{rust_arches}
- rust-web-ext-native-messaging
ExclusiveArch: %{rust_arches}
- rust-webbrowser
ExclusiveArch: %{rust_arches}
- rust-webpki
ExclusiveArch: %{rust_arches}
- rust-webpki-roots
ExclusiveArch: %{rust_arches}
- rust-weezl
ExclusiveArch: %{rust_arches}
- rust-wezterm-bidi
ExclusiveArch: %{rust_arches}
- rust-wezterm-color-types
ExclusiveArch: %{rust_arches}
- rust-wezterm-dynamic
ExclusiveArch: %{rust_arches}
- rust-wezterm-dynamic-derive
ExclusiveArch: %{rust_arches}
- rust-which
ExclusiveArch: %{rust_arches}
- rust-wide
ExclusiveArch: %{rust_arches}
- rust-wild
ExclusiveArch: %{rust_arches}
- rust-winit
ExclusiveArch: %{rust_arches}
- rust-wyz
ExclusiveArch: %{rust_arches}
- rust-x11-clipboard
ExclusiveArch: %{rust_arches}
- rust-xattr
ExclusiveArch: %{rust_arches}
- rust-xcb
ExclusiveArch: %{rust_arches}
- rust-xcursor
ExclusiveArch: %{rust_arches}
- rust-xdg
ExclusiveArch: %{rust_arches}
- rust-xi-unicode
ExclusiveArch: %{rust_arches}
- rust-xkbcommon
ExclusiveArch: %{rust_arches}
- rust-xml-rs
ExclusiveArch: %{rust_arches}
- rust-xmlwriter
ExclusiveArch: %{rust_arches}
- rust-xxhash-c-sys
ExclusiveArch: %{rust_arches}
- rust-xxhash-rust
ExclusiveArch: %{rust_arches}
- rust-xz2
ExclusiveArch: %{rust_arches}
- rust-y4m
ExclusiveArch: %{rust_arches}
- rust-yaml-rust
ExclusiveArch: %{rust_arches}
- rust-yaml-rust0.3
ExclusiveArch: %{rust_arches}
- rust-yansi
ExclusiveArch: %{rust_arches}
- rust-ybaas
ExclusiveArch: %{rust_arches}
- rust-yubibomb
ExclusiveArch: %{rust_arches}
- rust-z85
ExclusiveArch: %{rust_arches}
- rust-zbase32
ExclusiveArch: %{rust_arches}
- rust-zbus
ExclusiveArch: %{rust_arches}
- rust-zbus1
ExclusiveArch: %{rust_arches}
- rust-zbus_macros
ExclusiveArch: %{rust_arches}
- rust-zbus_macros1
ExclusiveArch: %{rust_arches}
- rust-zbus_names
ExclusiveArch: %{rust_arches}
- rust-zeroize
ExclusiveArch: %{rust_arches}
- rust-zincati
ExclusiveArch: %{rust_arches}
- rust-zip
ExclusiveArch: %{rust_arches}
- rust-zmq
ExclusiveArch: %{rust_arches}
- rust-zmq-sys
ExclusiveArch: %{rust_arches}
- rust-zoneinfo_compiled
ExclusiveArch: %{rust_arches}
- rust-zoxide
ExclusiveArch: %{rust_arches}
- rust-zram-generator
ExclusiveArch: %{rust_arches}
- rust-zstd
ExclusiveArch: %{rust_arches}
- rust-zstd-safe
ExclusiveArch: %{rust_arches}
- rust-zstd-sys
ExclusiveArch: %{rust_arches}
- rust-zvariant
ExclusiveArch: %{rust_arches}
- rust-zvariant2
ExclusiveArch: %{rust_arches}
- rust-zvariant_derive
ExclusiveArch: %{rust_arches}
- rust-zvariant_derive2
ExclusiveArch: %{rust_arches}
- s390utils
ExclusiveArch: s390 s390x
- sac
ExclusiveArch: %{java_arches} noarch
- safetyblanket
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc64le
- sagemath
ExclusiveArch: aarch64 x86_64
- sat4j
ExclusiveArch: %{java_arches} noarch
- sbcl
ExclusiveArch: %{arm} %{ix86} x86_64 ppc sparcv9 aarch64
- sbd
ExclusiveArch: i686 x86_64 s390x aarch64 ppc64le
- sblim-cim-client
ExclusiveArch: %{java_arches} noarch
- sblim-cim-client2
ExclusiveArch: %{java_arches} noarch
- sbsigntools
ExclusiveArch: x86_64 aarch64 %{arm} %{ix86}
- scala
ExclusiveArch: %{java_arches} noarch
- scalacheck
ExclusiveArch: %{java_arches} noarch
- scannotation
ExclusiveArch: %{java_arches} noarch
- sdljava
ExclusiveArch: %{java_arches}
- sdrangel
ExclusiveArch: %{qt5_qtwebengine_arches}
- sdsl-lite
ExclusiveArch: %{power64} x86_64 aarch64
- seabios
ExclusiveArch: x86_64
- seadrive-gui
ExclusiveArch: %{qt5_qtwebengine_arches}
- seafile-client
ExclusiveArch: %{qt5_qtwebengine_arches}
- seamonkey
ExclusiveArch: x86_64
- seqan3
ExclusiveArch: %{power64} x86_64 aarch64
- sequence-library
ExclusiveArch: %{java_arches} noarch
- serp
ExclusiveArch: %{java_arches} noarch
- servicelog
ExclusiveArch: ppc %{power64}
- sgabios
ExclusiveArch: %{ix86} x86_64
- shaman
ExclusiveArch: %{java_arches} noarch
- sharpfont
ExclusiveArch: %mono_arches
- sharpziplib
ExclusiveArch: %{mono_arches}
- shim
ExclusiveArch: %{efi}
- shim-unsigned-aarch64
ExclusiveArch: aarch64
- shim-unsigned-x64
ExclusiveArch: x86_64
- sigul
ExclusiveArch: x86_64
- singularity-ce
ExclusiveArch: %{go_arches}
- sisu
ExclusiveArch: %{java_arches} noarch
- sisu-mojos
ExclusiveArch: %{java_arches} noarch
- skopeo
ExclusiveArch: %{go_arches}
- skychart
ExclusiveArch: %{fpc_arches}
- slf4j
ExclusiveArch: %{java_arches} noarch
- slirp4netns
ExclusiveArch: %{golang_arches}
- snakeyaml
ExclusiveArch: %{java_arches} noarch
- snapd
ExclusiveArch: %{?golang_arches}%{!?golang_arches:%{ix86} x86_64 %{arm} aarch64 ppc64le s390x}
- snip
ExclusiveArch: %{java_arches} noarch
- softnet-stat
ExclusiveArch: %{rust_arches}
- soup-sharp
ExclusiveArch: %{mono_arches}
- spacebar
ExclusiveArch: %{java_arches}
- sparkleshare
ExclusiveArch: %{mono_arches}
- spec-version-maven-plugin
ExclusiveArch: %{java_arches} noarch
- spicctrl
ExclusiveArch: %{ix86} x86_64
- spice
ExclusiveArch: x86_64
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- spice-parent
ExclusiveArch: %{java_arches} noarch
- springlobby
ExclusiveArch: %{ix86} x86_64
- sqljet
ExclusiveArch: %{java_arches} noarch
- squeekboard
ExclusiveArch: %{rust_arches}
- startdde
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- statsd
ExclusiveArch: %{nodejs_arches} noarch
- stratis-cli
ExclusiveArch: %{rust_arches} noarch
- stratisd
ExclusiveArch: %{rust_arches}
ExclusiveArch: %{rust_arches}
- string-template-maven-plugin
ExclusiveArch: %{java_arches} noarch
- stringtemplate
ExclusiveArch: %{java_arches} noarch
- stringtemplate4
ExclusiveArch: %{java_arches} noarch
- stripesnoop
ExclusiveArch: %{ix86} x86_64
- subscription-manager-cockpit
ExclusiveArch: %{nodejs_arches} noarch
- supercollider
ExclusiveArch: %{qt5_qtwebengine_arches}
- supermin
ExclusiveArch: %{kernel_arches}
- svnkit
ExclusiveArch: %{java_arches} noarch
- svt-av1
ExclusiveArch: x86_64
- svt-vp9
ExclusiveArch: x86_64
- swift-lang
ExclusiveArch: x86_64 aarch64
- swing-layout
ExclusiveArch: %{java_arches} noarch
- sysbench
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips}
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64 ppc64le s390x
- syslinux
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
- system-rules
ExclusiveArch: %{java_arches} noarch
- system76-keyboard-configurator
ExclusiveArch: %{rust_arches}
- systemd-boot
ExclusiveArch: %efi
- t-digest
ExclusiveArch: %{java_arches} noarch
- taggle
ExclusiveArch: %{java_arches} noarch
- taglib-sharp
ExclusiveArch: %{mono_arches}
- tagsoup
ExclusiveArch: %{java_arches} noarch
- tarantool
ExclusiveArch: %{ix86} x86_64
- tboot
ExclusiveArch: %{ix86} x86_64
- tdlib
ExclusiveArch: x86_64 aarch64
- templates_parser
ExclusiveArch: %GPRbuild_arches
- ternimal
ExclusiveArch: %{rust_arches}
- test-interface
ExclusiveArch: %{java_arches} noarch
- testcloud
ExclusiveArch: %{kernel_arches} noarch
- testng
ExclusiveArch: %{java_arches} noarch
- texlive
ExclusiveArch: %{java_arches} noarch
- thermald
ExclusiveArch: %{ix86} x86_64
- tilix
ExclusiveArch: %{ldc_arches}
- tomboy
ExclusiveArch: %{mono_arches}
- tomcat
ExclusiveArch: %{java_arches} noarch
- tomcat-native
ExclusiveArch: %{java_arches}
- tomcat-taglibs-parent
ExclusiveArch: %{java_arches} noarch
- tomcatjss
ExclusiveArch: %{java_arches} noarch
- torbrowser-launcher
ExclusiveArch: %{ix86} x86_64
- treelayout
ExclusiveArch: %{java_arches} noarch
- trilead-ssh2
ExclusiveArch: %{java_arches} noarch
- truth
ExclusiveArch: %{java_arches} noarch
- tuned-profiles-nfv-host-bin
ExclusiveArch: %{ix86} x86_64
- typescript
ExclusiveArch: %{nodejs_arches} noarch
- uClibc
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips}
- ucx
ExclusiveArch: aarch64 ppc64le x86_64
- uglify-js
ExclusiveArch: %{nodejs_arches} noarch
- unetbootin
ExclusiveArch: %{ix86} x86_64
- univocity-parsers
ExclusiveArch: %{java_arches} noarch
- ursa-major
ExclusiveArch: noarch aarch64 ppc64le s390x x86_64
- usd
ExclusiveArch: aarch64 x86_64
- v8-314
ExclusiveArch: %{ix86} x86_64 %{arm} mips mipsel ppc ppc64
- vakzination
ExclusiveArch: %{java_arches}
- valgrind
ExclusiveArch: %{ix86} x86_64 ppc ppc64 ppc64le s390x armv7hl aarch64
- vboot-utils
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- vecmath1.2
ExclusiveArch: %{java_arches} noarch
- velocity
ExclusiveArch: %{java_arches} noarch
- vim-go
ExclusiveArch: %{?golang_arches}%{!?golang_arches:%{ix86} x86_64 %{arm}}
- vim-syntastic
ExclusiveArch: %{java_arches} noarch
- virt-p2v
ExclusiveArch: x86_64
- virt-v2v
ExclusiveArch: x86_64
- virtiofsd
ExclusiveArch: %{rust_arches}
- virtualbox-guest-additions
ExclusiveArch: i686 x86_64
- vkd3d
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- vmaf
ExclusiveArch: x86_64
- vmemcache
ExclusiveArch: x86_64 ppc64 ppc64le s390x aarch64
- voms-api-java
ExclusiveArch: %{java_arches} noarch
- voms-clients-java
ExclusiveArch: %{java_arches} noarch
- vrq
ExclusiveArch: %{ix86} x86_64
- wangle
ExclusiveArch: x86_64 aarch64 ppc64le
- warsow
ExclusiveArch: %{ix86} x86_64 %{arm}
- warsow-data
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{ix86} x86_64 %{arm}
- wasmedge
ExclusiveArch: x86_64 aarch64
- watchman
ExclusiveArch: x86_64 aarch64 ppc64le
- wdt
ExclusiveArch: x86_64 aarch64 ppc64le
- webkit2-sharp
ExclusiveArch: %mono_arches
- weld-parent
ExclusiveArch: %{java_arches} noarch
- why3
ExclusiveArch: %{java_arches}
- wine
ExclusiveArch: %{ix86} x86_64 aarch64
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86}
- wine-dxvk
ExclusiveArch: %{ix86} x86_64
- winetricks
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- writer2latex
ExclusiveArch: %{java_arches}
- ws-commons-util
ExclusiveArch: %{java_arches} noarch
- wsdl4j
ExclusiveArch: %{java_arches} noarch
- wxMaxima
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc sparcv9
- x2goclient
ExclusiveArch: x86_64
- xalan-j2
ExclusiveArch: %{java_arches} noarch
- xbean
ExclusiveArch: %{java_arches} noarch
- xbyak
ExclusiveArch: x86_64
- xbyak_aarch64
ExclusiveArch: aarch64
- xe-guest-utilities-latest
ExclusiveArch: %{ix86} x86_64
- xen
ExclusiveArch: x86_64 aarch64
- xerces-j2
ExclusiveArch: %{java_arches} noarch
- xgap
ExclusiveArch: aarch64 ppc64le s390x x86_64
- xml-commons-apis
ExclusiveArch: %{java_arches} noarch
- xml-commons-resolver
ExclusiveArch: %{java_arches} noarch
- xml-maven-plugin
ExclusiveArch: %{java_arches} noarch
- xmlada
ExclusiveArch: %{GPRbuild_arches}
- xmlgraphics-commons
ExclusiveArch: %{java_arches} noarch
- xmlpull
ExclusiveArch: %{java_arches} noarch
- xmlstreambuffer
ExclusiveArch: %{java_arches} noarch
- xmlunit
ExclusiveArch: %{java_arches} noarch
- xmpcore
ExclusiveArch: %{java_arches} noarch
- xmvn
ExclusiveArch: %{java_arches} noarch
- xmvn-connector-ivy
ExclusiveArch: %{java_arches} noarch
- xorg-x11-drv-armsoc
ExclusiveArch: %{arm} aarch64
- xorg-x11-drv-intel
ExclusiveArch: %{ix86} x86_64
- xorg-x11-drv-openchrome
ExclusiveArch: %{ix86} x86_64
- xorg-x11-drv-vesa
ExclusiveArch: %{ix86} x86_64
- xorg-x11-drv-vmware
ExclusiveArch: %{ix86} x86_64 ia64
- xsp
ExclusiveArch: %mono_arches
- xstream
ExclusiveArch: %{java_arches} noarch
- xz-java
ExclusiveArch: %{java_arches} noarch
- yarnpkg
ExclusiveArch: %{nodejs_arches} noarch
- yuicompressor
ExclusiveArch: %{java_arches} noarch
- zcfan
ExclusiveArch: x86_64
- zeal
ExclusiveArch: %{qt5_qtwebengine_arches}
- zenon
ExclusiveArch: %{java_arches}
- zeromq-ada
ExclusiveArch: %{GPRbuild_arches}
- zig
ExclusiveArch: %{zig_arches}
- zlib-ada
ExclusiveArch: %{GPRbuild_arches}
- zlib-ng
ExclusiveArch: aarch64 i686 ppc64le s390x x86_64
- zola
ExclusiveArch: %{rust_arches}
1 year, 4 months
[Report] Packages Restricting Arches
by root
Package no longer excluding arches (38)
==================================
- rust-fbthrift_codegen_includer_proc_macro
- rust-fdlimit
- rust-lipsum
- rust-loggerv
- rust-lzw
- rust-macro-attr
- rust-mdl
- rust-mktemp
- rust-mnt
- rust-newtype_derive
- rust-odds
- rust-osstrtools
- rust-parse_cfg
- rust-permutate
- rust-piper
- rust-proc-quote-impl
- rust-process_path
- rust-protoc-rust
- rust-quickersort
- rust-relay
- rust-rustdoc-stripper
- rust-rustfilt
- rust-safe-transmute
- rust-scoped-tls-hkt
- rust-serde-pickle
- rust-sluice
- rust-spinning_top
- rust-spmc
- rust-string_cache_shared
- rust-strings
- rust-sudo_plugin
- rust-sxd-document
- rust-synom
- rust-tabwriter
- rust-take
- rust-unic-ucd-category
- rust-url_serde
- rust-utf8-ranges
List of packages currently excluding arches (2494)
===========================================
- 0ad
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le
- 90-Second-Portraits
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc64le
- BareBonesBrowserLaunch
ExclusiveArch: %{java_arches} noarch
- CardManager
ExclusiveArch: %{java_arches} noarch
- GAPDoc
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- GoldenCheetah
ExclusiveArch: %{qt5_qtwebengine_arches}
- GtkAda
ExclusiveArch: %{GPRbuild_arches}
- GtkAda3
ExclusiveArch: %{GPRbuild_arches}
- IPAddress
ExclusiveArch: %{java_arches} noarch
- Mars
ExclusiveArch: %{java_arches} noarch
- OpenColorIO
ExclusiveArch: x86_64 ppc64le
- OpenImageIO
ExclusiveArch: x86_64 ppc64le
- OpenMolcas
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- OpenStego
ExclusiveArch: %{java_arches} noarch
- PragmARC
ExclusiveArch: %{GPRbuild_arches}
- R-V8
ExclusiveArch: %{nodejs_arches}
- R-rJava
ExclusiveArch: %{java_arches}
- RdRand
ExclusiveArch: %{ix86} x86_64
- RediSearch
ExclusiveArch: x86_64
- SLOF
ExclusiveArch: ppc64le
- YafaRay
ExclusiveArch: %{ix86} x86_64
- aardvark-dns
ExclusiveArch: %{rust_arches}
- accel-config
ExclusiveArch: %{ix86} x86_64
- acpid
ExclusiveArch: ia64 x86_64 %{ix86} %{arm} aarch64
- ahven
ExclusiveArch: %{GPRbuild_arches}
- algobox
ExclusiveArch: %{qt5_qtwebengine_arches}
- american-fuzzy-lop
ExclusiveArch: %{ix86} x86_64 s390x
- anet
ExclusiveArch: %{GPRbuild_arches}
- ant
ExclusiveArch: %{java_arches} noarch
- ant-antunit
ExclusiveArch: %{java_arches} noarch
- antlr
ExclusiveArch: %{java_arches}
- antlr-maven-plugin
ExclusiveArch: %{java_arches} noarch
- antlr3
ExclusiveArch: %{java_arches}
- antlr32
ExclusiveArch: %{java_arches} noarch
- antlr4-project
ExclusiveArch: %{java_arches}
- antlrworks
ExclusiveArch: %{java_arches} noarch
- aopalliance
ExclusiveArch: %{java_arches} noarch
- apache-commons-beanutils
ExclusiveArch: %{java_arches} noarch
- apache-commons-cli
ExclusiveArch: %{java_arches} noarch
- apache-commons-codec
ExclusiveArch: %{java_arches} noarch
- apache-commons-collections
ExclusiveArch: %{java_arches} noarch
- apache-commons-collections4
ExclusiveArch: %{java_arches} noarch
- apache-commons-compress
ExclusiveArch: %{java_arches} noarch
- apache-commons-digester
ExclusiveArch: %{java_arches} noarch
- apache-commons-exec
ExclusiveArch: %{java_arches} noarch
- apache-commons-fileupload
ExclusiveArch: %{java_arches} noarch
- apache-commons-io
ExclusiveArch: %{java_arches} noarch
- apache-commons-jxpath
ExclusiveArch: %{java_arches} noarch
- apache-commons-lang3
ExclusiveArch: %{java_arches} noarch
- apache-commons-logging
ExclusiveArch: %{java_arches} noarch
- apache-commons-math
ExclusiveArch: %{java_arches} noarch
- apache-commons-modeler
ExclusiveArch: %{java_arches} noarch
- apache-commons-net
ExclusiveArch: %{java_arches} noarch
- apache-commons-parent
ExclusiveArch: %{java_arches} noarch
- apache-commons-pool
ExclusiveArch: %{java_arches} noarch
- apache-ivy
ExclusiveArch: %{java_arches} noarch
- apache-parent
ExclusiveArch: %{java_arches} noarch
- apache-resource-bundles
ExclusiveArch: %{java_arches} noarch
- apache-sshd
ExclusiveArch: %{java_arches} noarch
- apiguardian
ExclusiveArch: %{java_arches} noarch
- apmd
ExclusiveArch: %{ix86}
- appstream-generator
ExclusiveArch: %{ldc_arches}
- aqute-bnd
ExclusiveArch: %{java_arches} noarch
- args4j
ExclusiveArch: %{java_arches} noarch
- arm-trusted-firmware
ExclusiveArch: aarch64
- assertj-core
ExclusiveArch: %{java_arches} noarch
- atinject
ExclusiveArch: %{java_arches} noarch
- aunit
ExclusiveArch: %GPRbuild_arches
- auto
ExclusiveArch: %{java_arches} noarch
- avgtime
ExclusiveArch: %{ldc_arches}
- aws
ExclusiveArch: %GPRbuild_arches
- azure-cli
ExclusiveArch: %{java_arches} noarch
- batik
ExclusiveArch: %{java_arches} noarch
- bcal
ExclusiveArch: x86_64 aarch64 ia64 ppc64 ppc64le s390x
- bcc
ExclusiveArch: x86_64 %{power64} aarch64 s390x armv7hl
- bcel
ExclusiveArch: %{java_arches} noarch
- bcm283x-firmware
ExclusiveArch: %{arm} aarch64
- beansbinding
ExclusiveArch: %{java_arches} noarch
- belle-sip
ExclusiveArch: %{java_arches}
- berusky2
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 %{mips}
- beust-jcommander
ExclusiveArch: %{java_arches} noarch
- biosdevname
ExclusiveArch: %{ix86} x86_64
- blender
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- bless
ExclusiveArch: %mono_arches
- bolzplatz2006
ExclusiveArch: %{java_arches}
- bouncycastle
ExclusiveArch: %{java_arches} noarch
- bpftrace
ExclusiveArch: x86_64 %{power64} aarch64 s390x
- brazil
ExclusiveArch: %{java_arches} noarch
- bsf
ExclusiveArch: %{java_arches} noarch
- bsh
ExclusiveArch: %{java_arches} noarch
- buildah
ExclusiveArch: %{golang_arches}
- buildnumber-maven-plugin
ExclusiveArch: %{java_arches} noarch
- byte-buddy
ExclusiveArch: %{java_arches} noarch
- byteman
ExclusiveArch: %{java_arches} noarch
- cachelib
ExclusiveArch: x86_64 aarch64 ppc64le
- calamares
ExclusiveArch: %{ix86} x86_64 aarch64
- calibre
ExclusiveArch: %{qt5_qtwebengine_arches}
- cambozola
ExclusiveArch: %{java_arches} noarch
- canl-java
ExclusiveArch: %{java_arches} noarch
- ccdciel
ExclusiveArch: %{fpc_arches}
- cdcollect
ExclusiveArch: %{mono_arches}
- cdi-api
ExclusiveArch: %{java_arches} noarch
- ceph
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- cglib
ExclusiveArch: %{java_arches} noarch
- chromium
ExclusiveArch: x86_64 i686
ExclusiveArch: x86_64 aarch64
ExclusiveArch: x86_64 i686 aarch64
- cjdns
ExclusiveArch: %{nodejs_arches}
- classloader-leak-test-framework
ExclusiveArch: %{java_arches} noarch
- classpathless-compiler
ExclusiveArch: %{java_arches} noarch
- clevis-pin-tpm2
ExclusiveArch: %{rust_arches}
- clojure
ExclusiveArch: %{java_arches} noarch
- clojure-core-specs-alpha
ExclusiveArch: %{java_arches} noarch
- clojure-maven-plugin
ExclusiveArch: %{java_arches} noarch
- clojure-spec-alpha
ExclusiveArch: %{java_arches} noarch
- cmospwd
ExclusiveArch: %{ix86} x86_64
- cmrt
ExclusiveArch: %{ix86} x86_64 ia64
- codehaus-parent
ExclusiveArch: %{java_arches} noarch
- coffee-script
ExclusiveArch: %{nodejs_arches} noarch
- colorful
ExclusiveArch: %{fpc_arches}
- colossus
ExclusiveArch: %{java_arches} noarch
- conmon
ExclusiveArch: %{go_arches}
- console-image-viewer
ExclusiveArch: %{java_arches} noarch
- containernetworking-plugins
ExclusiveArch: %{golang_arches}
- coq
ExclusiveArch: %{java_arches}
- cortado
ExclusiveArch: %{java_arches} noarch
- cpu-x
ExclusiveArch: i686 x86_64
- cpufetch
ExclusiveArch: %{arm} aarch64 x86_64 ppc ppc64 ppc64le
- cpuid
ExclusiveArch: %{ix86} x86_64
- cqrlog
ExclusiveArch: %{fpc_arches}
- crash
ExclusiveArch: %{ix86} ia64 x86_64 ppc ppc64 s390 s390x %{arm} aarch64 ppc64le
- crash-gcore-command
ExclusiveArch: aarch64 ppc64le x86_64
- crash-trace-command
ExclusiveArch: aarch64 ppc64le s390x x86_64
- cri-o
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- cri-tools
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- criu
ExclusiveArch: x86_64 %{arm} ppc64le aarch64 s390x
- crun
ExclusiveArch: %{golang_arches}
- cryptlib
ExclusiveArch: x86_64 aarch64 ppc64le
- crypto-policies
ExclusiveArch: %{java_arches} noarch
- cryptobone
ExclusiveArch: x86_64 ppc64le aarch64
- csslint
ExclusiveArch: %{nodejs_arches} noarch
- cvc4
ExclusiveArch: %{java_arches}
- daq
ExclusiveArch: x86_64 aarch64
- dbus-parsec
ExclusiveArch: %{rust_arches}
- dbus-sharp
ExclusiveArch: %mono_arches
- dbus-sharp-glib
ExclusiveArch: %mono_arches
- decentxml
ExclusiveArch: %{java_arches} noarch
- deepin-daemon
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- deepin-desktop-schemas
ExclusiveArch: %{go_arches}
- directory-maven-plugin
ExclusiveArch: %{java_arches} noarch
- dirgra
ExclusiveArch: %{java_arches} noarch
- disruptor
ExclusiveArch: %{java_arches} noarch
- ditaa
ExclusiveArch: %{java_arches} noarch
- dlm
ExclusiveArch: i686 x86_64
- dmidecode
ExclusiveArch: %{ix86} x86_64 ia64 aarch64
- dmtcp
ExclusiveArch: x86_64
- docker-distribution
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- dolphin-emu
ExclusiveArch: x86_64 aarch64
- dom4j
ExclusiveArch: %{java_arches} noarch
- dotnet6.0
ExclusiveArch: aarch64 x86_64 s390x
ExclusiveArch: x86_64
- dotnet7.0
ExclusiveArch: aarch64 ppc64le s390x x86_64
ExclusiveArch: x86_64
- doublecmd
ExclusiveArch: %{ix86} x86_64
- dpdk
ExclusiveArch: x86_64 i686 aarch64 ppc64le
- dub
ExclusiveArch: %{ldc_arches}
- dxvk-native
ExclusiveArch: %{ix86} x86_64
- dyninst
ExclusiveArch: %{ix86} x86_64 ppc64le aarch64
- e3
ExclusiveArch: %{ix86} x86_64
- easymock
ExclusiveArch: %{java_arches} noarch
- ecj
ExclusiveArch: %{java_arches} noarch
- eclipse-swt
ExclusiveArch: %{java_arches}
- ed25519-java
ExclusiveArch: %{java_arches} noarch
- edk2
ExclusiveArch: x86_64 aarch64
- efibootmgr
ExclusiveArch: %{efi}
- efifs
ExclusiveArch: %{efi}
- efitools
ExclusiveArch: %{efi}
- efivar
ExclusiveArch: %{efi}
- elk
ExclusiveArch: x86_64 %{ix86}
ExclusiveArch: x86_64 %{ix86} aarch64 %{arm} %{power64}
- emacs-slime
ExclusiveArch: %{arm} %{ix86} x86_64 ppc sparcv9 aarch64
- embree
ExclusiveArch: aarch64 x86_64
- enjarify
ExclusiveArch: %{java_arches} noarch
- enki
ExclusiveArch: %{qt5_qtwebengine_arches} noarch
- envytools
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- eric
ExclusiveArch: %{qt5_qtwebengine_arches} noarch
- erlang-corba
ExclusiveArch: %{java_arches}
- eth-tools
ExclusiveArch: x86_64
- exec-maven-plugin
ExclusiveArch: %{java_arches} noarch
- external-editor-revived
ExclusiveArch: %{rust_arches}
- extra-enforcer-rules
ExclusiveArch: %{java_arches} noarch
- fasterxml-oss-parent
ExclusiveArch: %{java_arches} noarch
- fb303
ExclusiveArch: x86_64 aarch64 ppc64le
- fbthrift
ExclusiveArch: x86_64 aarch64 ppc64le
- fcitx-libpinyin
ExclusiveArch: %{qt5_qtwebengine_arches}
- fedora-dockerfiles
ExclusiveArch: %{go_arches}
- felix-parent
ExclusiveArch: %{java_arches} noarch
- felix-utils
ExclusiveArch: %{java_arches} noarch
- fernflower
ExclusiveArch: %{java_arches} noarch
- fes
ExclusiveArch: %{ix86} x86_64
- filedrop
ExclusiveArch: %{java_arches} noarch
- fishbowl
ExclusiveArch: %{java_arches} noarch
- fizz
ExclusiveArch: x86_64 aarch64 ppc64le
- flocq
ExclusiveArch: %{java_arches}
- florist
ExclusiveArch: %{GPRbuild_arches}
- fluent-bit
ExclusiveArch: x86_64 aarch64
- flute
ExclusiveArch: %{java_arches} noarch
- folly
ExclusiveArch: x86_64 aarch64 ppc64le
- fop
ExclusiveArch: %{java_arches} noarch
- forge-parent
ExclusiveArch: %{java_arches} noarch
- fpc
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64 ppc64le
- frama-c
ExclusiveArch: %{java_arches}
- freecol
ExclusiveArch: %{java_arches} noarch
- freemarker
ExclusiveArch: %{java_arches} noarch
- freerouting
ExclusiveArch: %{java_arches} noarch
- frescobaldi
ExclusiveArch: %{qt5_qtwebengine_arches}
- frysk
ExclusiveArch: x86_64 ppc64
- fusesource-pom
ExclusiveArch: %{java_arches} noarch
- fwts
ExclusiveArch: x86_64 %{arm} aarch64 s390x riscv64 %{power64}
- fwupd-efi
ExclusiveArch: x86_64 aarch64
- ga
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le
- gap-pkg-ace
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gap-pkg-aclib
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-alnuth
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-atlasrep
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-autodoc
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-automata
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-autpgrp
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-browse
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gap-pkg-caratinterface
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-circle
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-cohomolo
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gap-pkg-congruence
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-corelg
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-crime
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-crisp
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-crypting
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gap-pkg-cryst
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-crystcat
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-ctbllib
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-curlinterface
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gap-pkg-cvec
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gap-pkg-datastructures
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gap-pkg-design
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-digraphs
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gap-pkg-edim
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gap-pkg-factint
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-ferret
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gap-pkg-fga
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-fining
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-float
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gap-pkg-format
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-forms
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-fr
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-francy
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-gbnp
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-genss
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-grape
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-groupoids
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-grpconst
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-guava
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gap-pkg-hap
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-hapcryst
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-hecke
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch noarch
- gap-pkg-images
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-io
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gap-pkg-irredsol
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-json
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gap-pkg-jupyterkernel
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-jupyterviz
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-laguna
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-liealgdb
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-liepring
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-liering
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-loops
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-lpres
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-mapclass
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-nautytracesinterface
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gap-pkg-nq
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gap-pkg-openmath
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-orb
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gap-pkg-polenta
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-polycyclic
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-polymaking
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-primgrp
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-profiling
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gap-pkg-qpa
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-quagroup
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-radiroot
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-recog
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-repsn
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-resclasses
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-scscp
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-semigroups
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gap-pkg-singular
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-sla
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-smallgrp
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-smallsemi
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-sonata
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-sophus
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-spinsym
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-standardff
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gap-pkg-tomlib
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-toric
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-transgrp
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-utils
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-uuid
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-xmod
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
- gap-pkg-zeromqinterface
ExclusiveArch: aarch64 ppc64le s390x x86_64
- gappalib-coq
ExclusiveArch: %{java_arches}
- gbrainy
ExclusiveArch: %mono_arches
- gdb
ExclusiveArch: %{ix86} x86_64
- gdb-exploitable
ExclusiveArch: x86_64 i386
ExclusiveArch: x86_64 noarch
- gearhead1
ExclusiveArch: %{fpc_arches}
- gearhead2
ExclusiveArch: %{fpc_arches}
- ghdl
ExclusiveArch: %{GNAT_arches}
- ghostwriter
ExclusiveArch: %{qt5_qtwebengine_arches}
- gio-sharp
ExclusiveArch: %mono_arches
- gir-to-d
ExclusiveArch: %{ldc_arches}
- git-octopus
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- gitqlient
ExclusiveArch: %{qt5_qtwebengine_arches}
- giver
ExclusiveArch: %{mono_arches}
- gkeyfile-sharp
ExclusiveArch: %mono_arches
- glibc32
ExclusiveArch: x86_64
- glibd
ExclusiveArch: %{ldc_arches}
- gnatcoll
ExclusiveArch: %{GPRbuild_arches}
- gnatcoll-bindings
ExclusiveArch: %{GPRbuild_arches}
- gnatcoll-db
ExclusiveArch: %{GPRbuild_arches}
- gnome-boxes
ExclusiveArch: x86_64
- gnome-desktop-sharp
ExclusiveArch: %mono_arches
- gnome-do
ExclusiveArch: %mono_arches
- gnome-keyring-sharp
ExclusiveArch: %mono_arches
- gnome-rdp
ExclusiveArch: %{mono_arches}
- gnome-sharp
ExclusiveArch: %mono_arches
- gnome-subtitles
ExclusiveArch: %mono_arches
- gnu-efi
ExclusiveArch: %{efi}
- go-bindata
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- godep
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang
ExclusiveArch: %{golang_arches}
- gomtree
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- google-gson
ExclusiveArch: %{java_arches} noarch
- google-guice
ExclusiveArch: %{java_arches} noarch
- gotun
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
ExclusiveArch: x86_64
- goverlay
ExclusiveArch: %{fpc_arches}
- gprbuild
ExclusiveArch: %{GPRbuild_arches} %{bootstrap_arch}
- gprolog
ExclusiveArch: x86_64 %{ix86} ppc alpha aarch64
- grafana
ExclusiveArch: %{grafana_arches}
- grafana-pcp
ExclusiveArch: %{grafanapcp_arches}
- gtk-sharp-beans
ExclusiveArch: %mono_arches
- gtk-sharp2
ExclusiveArch: %mono_arches
- gtk-sharp3
ExclusiveArch: %{mono_arches}
- gtkd
ExclusiveArch: %{ldc_arches}
- guava
ExclusiveArch: %{java_arches} noarch
- gudev-sharp
ExclusiveArch: %mono_arches
- guestfs-tools
ExclusiveArch: %{kernel_arches}
- hamcrest
ExclusiveArch: %{java_arches} noarch
- harec
ExclusiveArch: x86_64 aarch64
- hawtjni
ExclusiveArch: %{java_arches} noarch
- hedgewars
ExclusiveArch: %{fpc_arches}
- hibernate-jpa-2.0-api
ExclusiveArch: %{java_arches} noarch
- hibernate-jpa-2.1-api
ExclusiveArch: %{java_arches} noarch
- hid4java
ExclusiveArch: %{java_arches} noarch
- hsakmt
ExclusiveArch: x86_64 aarch64 ppc64le
- httpcomponents-client
ExclusiveArch: %{java_arches} noarch
- httpcomponents-core
ExclusiveArch: %{java_arches} noarch
- httpcomponents-project
ExclusiveArch: %{java_arches} noarch
- hyena
ExclusiveArch: %{mono_arches}
- hyperscan
ExclusiveArch: x86_64
- hyperv-daemons
ExclusiveArch: i686 x86_64 aarch64
- i3status-rs
ExclusiveArch: %{rust_arches}
- icaro
ExclusiveArch: %{ix86} x86_64 noarch
- icu4j
ExclusiveArch: %{java_arches} noarch
- imagej
ExclusiveArch: %{java_arches} noarch
- imhex
ExclusiveArch: x86_64 %{arm64} ppc64le
- imvirt
ExclusiveArch: %{ix86} x86_64 ia64
- indistarter
ExclusiveArch: %{fpc_arches}
- infinipath-psm
ExclusiveArch: x86_64
- intel-cm-compiler
ExclusiveArch: i686 x86_64
- intel-cmt-cat
ExclusiveArch: x86_64 i686 i586
ExclusiveArch: x86_64 i686 i586
- intel-compute-runtime
ExclusiveArch: x86_64
- intel-gmmlib
ExclusiveArch: x86_64 i686
- intel-igc
ExclusiveArch: x86_64
- intel-ipp-crypto-mb
ExclusiveArch: x86_64
ExclusiveArch: x86_64
- intel-ipsec-mb
ExclusiveArch: x86_64
ExclusiveArch: x86_64
- intel-mediasdk
ExclusiveArch: x86_64
- intel-undervolt
ExclusiveArch: i386 x86_64
- ioport
ExclusiveArch: %{ix86} x86_64
- ipmctl
ExclusiveArch: x86_64
- ispc
ExclusiveArch: x86_64 aarch64
- iucode-tool
ExclusiveArch: %{ix86} x86_64
- iyfct
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc64le
- jFormatString
ExclusiveArch: %{java_arches} noarch
- jackson-annotations
ExclusiveArch: %{java_arches} noarch
- jackson-bom
ExclusiveArch: %{java_arches} noarch
- jackson-core
ExclusiveArch: %{java_arches} noarch
- jackson-databind
ExclusiveArch: %{java_arches} noarch
- jackson-dataformats-binary
ExclusiveArch: %{java_arches} noarch
- jackson-dataformats-text
ExclusiveArch: %{java_arches} noarch
- jackson-jaxrs-providers
ExclusiveArch: %{java_arches} noarch
- jackson-modules-base
ExclusiveArch: %{java_arches} noarch
- jackson-parent
ExclusiveArch: %{java_arches} noarch
- jacoco
ExclusiveArch: %{java_arches} noarch
- jacop
ExclusiveArch: %{java_arches} noarch
- jakarta-activation
ExclusiveArch: %{java_arches} noarch
- jakarta-activation1
ExclusiveArch: %{java_arches} noarch
- jakarta-annotations
ExclusiveArch: %{java_arches} noarch
- jakarta-el
ExclusiveArch: %{java_arches} noarch
- jakarta-interceptors
ExclusiveArch: %{java_arches} noarch
- jakarta-json
ExclusiveArch: %{java_arches} noarch
- jakarta-mail
ExclusiveArch: %{java_arches} noarch
- jakarta-oro
ExclusiveArch: %{java_arches} noarch
- jakarta-saaj
ExclusiveArch: %{java_arches} noarch
- jakarta-server-pages
ExclusiveArch: %{java_arches} noarch
- jakarta-servlet
ExclusiveArch: %{java_arches} noarch
- jakarta-xml-ws
ExclusiveArch: %{java_arches} noarch
- janino
ExclusiveArch: %{java_arches} noarch
- jansi
ExclusiveArch: %{java_arches}
- jansi-native
ExclusiveArch: %{java_arches}
- jansi1
ExclusiveArch: %{java_arches} noarch
- java-1.8.0-openjdk
ExclusiveArch: %{java_arches}
- java-1.8.0-openjdk-aarch32
ExclusiveArch: %{arm}
- java-11-openjdk
ExclusiveArch: %{java_arches}
- java-11-openjdk-portable
ExclusiveArch: %{java_arches}
- java-17-openjdk
ExclusiveArch: %{java_arches}
- java-17-openjdk-portable
ExclusiveArch: %{java_arches}
- java-diff-utils
ExclusiveArch: %{java_arches} noarch
- java-dirq
ExclusiveArch: %{java_arches} noarch
- java-jd-decompiler
ExclusiveArch: %{java_arches} noarch
- java-latest-openjdk
ExclusiveArch: %{java_arches}
- java-latest-openjdk-portable
ExclusiveArch: %{java_arches}
- java-runtime-decompiler
ExclusiveArch: %{java_arches} noarch
- java-scrypt
ExclusiveArch: %{java_arches} noarch
- java_cup
ExclusiveArch: %{java_arches} noarch
- javacc
ExclusiveArch: %{java_arches} noarch
- javacc-maven-plugin
ExclusiveArch: %{java_arches} noarch
- javaewah
ExclusiveArch: %{java_arches} noarch
- javapackages-bootstrap
ExclusiveArch: %{java_arches} noarch
- javaparser
ExclusiveArch: %{java_arches} noarch
- javapoet
ExclusiveArch: %{java_arches} noarch
- javassist
ExclusiveArch: %{java_arches} noarch
- jaxb
ExclusiveArch: %{java_arches} noarch
- jaxb-api
ExclusiveArch: %{java_arches} noarch
- jaxb-api2
ExclusiveArch: %{java_arches} noarch
- jaxb-dtd-parser
ExclusiveArch: %{java_arches} noarch
- jaxb-fi
ExclusiveArch: %{java_arches} noarch
- jaxb-istack-commons
ExclusiveArch: %{java_arches} noarch
- jaxb-stax-ex
ExclusiveArch: %{java_arches} noarch
- jaxen
ExclusiveArch: %{java_arches} noarch
- jboss-jaxrs-2.0-api
ExclusiveArch: %{java_arches} noarch
- jboss-logging
ExclusiveArch: %{java_arches} noarch
- jboss-logging-tools
ExclusiveArch: %{java_arches} noarch
- jboss-parent
ExclusiveArch: %{java_arches} noarch
- jchardet
ExclusiveArch: %{java_arches} noarch
- jcip-annotations
ExclusiveArch: %{java_arches} noarch
- jcommon
ExclusiveArch: %{java_arches} noarch
- jcommon-serializer
ExclusiveArch: %{java_arches} noarch
- jctools
ExclusiveArch: %{java_arches} noarch
- jcuber
ExclusiveArch: %{java_arches} noarch
- jdeparser
ExclusiveArch: %{java_arches} noarch
- jdepend
ExclusiveArch: %{java_arches} noarch
- jdependency
ExclusiveArch: %{java_arches} noarch
- jdom
ExclusiveArch: %{java_arches} noarch
- jdom2
ExclusiveArch: %{java_arches} noarch
- jericho-html
ExclusiveArch: %{java_arches} noarch
- jetty
ExclusiveArch: %{java_arches} noarch
- jflex
ExclusiveArch: %{java_arches} noarch
- jfreechart
ExclusiveArch: %{java_arches} noarch
- jgit
ExclusiveArch: %{java_arches} noarch
- jglobus
ExclusiveArch: %{java_arches} noarch
- jgoodies-common
ExclusiveArch: %{java_arches} noarch
- jgoodies-forms
ExclusiveArch: %{java_arches} noarch
- jgoodies-looks
ExclusiveArch: %{java_arches} noarch
- jigawatts
ExclusiveArch: x86_64 %{arm} ppc64le aarch64 s390x
- jline
ExclusiveArch: %{java_arches} noarch
- jline2
ExclusiveArch: %{java_arches} noarch
- jmock
ExclusiveArch: %{java_arches} noarch
- jmol
ExclusiveArch: %{java_arches} noarch
- jna
ExclusiveArch: %{java_arches}
- jneuroml-core
ExclusiveArch: %{java_arches} noarch
- jni-inchi
ExclusiveArch: %{java_arches}
- jol
ExclusiveArch: %{java_arches} noarch
- jolokia-jvm-agent
ExclusiveArch: %{java_arches} noarch
- joni
ExclusiveArch: %{java_arches} noarch
- jopt-simple
ExclusiveArch: %{java_arches} noarch
- jorbis
ExclusiveArch: %{java_arches} noarch
- jowl
ExclusiveArch: %{nodejs_arches} noarch
- jpanoramamaker
ExclusiveArch: %{java_arches} noarch
- jpcap
ExclusiveArch: %java_arches
- jsch
ExclusiveArch: %{java_arches} noarch
- jsch-agent-proxy
ExclusiveArch: %{java_arches} noarch
- json_simple
ExclusiveArch: %{java_arches} noarch
- jsr-305
ExclusiveArch: %{java_arches} noarch
- jssc
ExclusiveArch: %{java_arches}
- jtidy
ExclusiveArch: %{java_arches} noarch
- junit
ExclusiveArch: %{java_arches} noarch
- junit5
ExclusiveArch: %{java_arches} noarch
- juniversalchardet
ExclusiveArch: %{java_arches} noarch
- jzlib
ExclusiveArch: %{java_arches} noarch
- kchmviewer
ExclusiveArch: %{qt5_qtwebengine_arches}
- kernel
ExclusiveArch: noarch x86_64 s390x %{arm} aarch64 ppc64le
ExclusiveArch: noarch i386 i686 x86_64 s390x %{arm} aarch64 ppc64le
- keylime-agent-rust
ExclusiveArch: %{rust_arches}
- keyring-ima-signer
ExclusiveArch: %{rust_arches}
- kf5-akonadi-search
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-audiocd-kio
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-kalarmcal
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-kblog
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-kcalendarcore
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-kcalendarutils
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-kitinerary
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-ktnef
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-libkdcraw
ExclusiveArch: x86_64 ppc64le %{arm}
- kicad
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le
- kiwix-desktop
ExclusiveArch: %{qt5_qtwebengine_arches}
- klee
ExclusiveArch: x86_64
- knot-resolver
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- knotes
ExclusiveArch: x86_64 %{arm}
- kubernetes
ExclusiveArch: x86_64 aarch64 ppc64le s390x %{arm}
- laf-plugin
ExclusiveArch: %{java_arches} noarch
- lazarus
ExclusiveArch: %{fpc_arches}
- lazpaint
ExclusiveArch: %{fpc_arches}
- ldapjdk
ExclusiveArch: %{java_arches} noarch
- ldc
ExclusiveArch: %{ldc_arches} ppc64le
- libbase
ExclusiveArch: %{java_arches} noarch
- libclc
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 %{power64} s390x
- libcxl
ExclusiveArch: %{power64}
- libdfp
ExclusiveArch: ppc ppc64 ppc64le s390 s390x x86_64
- libdispatch
ExclusiveArch: x86_64 aarch64 ppc64le
- libfonts
ExclusiveArch: %{java_arches} noarch
- libformula
ExclusiveArch: %{java_arches} noarch
- libguestfs
ExclusiveArch: %{kernel_arches}
- libica
ExclusiveArch: s390 s390x
- libipt
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
- libkgapi
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- libkrun
ExclusiveArch: x86_64 aarch64
- libkrunfw
ExclusiveArch: x86_64 aarch64
- liblayout
ExclusiveArch: %{java_arches} noarch
- libloader
ExclusiveArch: %{java_arches} noarch
- libnxz
ExclusiveArch: ppc64le
- libocxl
ExclusiveArch: ppc64le
- libpmemobj-cpp
ExclusiveArch: x86_64 ppc64le
- libpsm2
ExclusiveArch: x86_64
- libquentier
ExclusiveArch: %{qt5_qtwebengine_arches}
- libreoffice-TexMaths
ExclusiveArch: %{java_arches}
- librepository
ExclusiveArch: %{java_arches} noarch
- libretro-desmume2015
ExclusiveArch: i686 x86_64
- librtas
ExclusiveArch: %{power64}
- libserializer
ExclusiveArch: %{java_arches} noarch
- libservicelog
ExclusiveArch: ppc %{power64}
- libsmbios
ExclusiveArch: x86_64 %{ix86}
- libunwind
ExclusiveArch: %{arm} aarch64 hppa ia64 mips ppc %{power64} s390x %{ix86} x86_64
- libva-intel-hybrid-driver
ExclusiveArch: %{ix86} x86_64 ia64
- libvirt-java
ExclusiveArch: %{java_arches} noarch
- libvma
ExclusiveArch: x86_64 ppc64le ppc64 aarch64
- libvmi
ExclusiveArch: x86_64
- libvpd
ExclusiveArch: %{power64}
- libxsmm
ExclusiveArch: x86_64
- libzdnn
ExclusiveArch: s390x
- libzfcphbaapi
ExclusiveArch: s390 s390x
- libzpc
ExclusiveArch: s390x
- llhttp
ExclusiveArch: %{nodejs_arches}
- log4j
ExclusiveArch: %{java_arches} noarch
- log4net
ExclusiveArch: %mono_arches
- lrmi
ExclusiveArch: %{ix86}
- lsvpd
ExclusiveArch: %{power64}
- luajit
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
- lucene
ExclusiveArch: %{java_arches} noarch
- luxcorerender
ExclusiveArch: x86_64
- mactel-boot
ExclusiveArch: x86_64
- manifest-tool
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- mariadb-java-client
ExclusiveArch: %{java_arches} noarch
- marked
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- matreshka
ExclusiveArch: %GPRbuild_arches
- maui-mauikit
ExclusiveArch: %{ix86} s390x aarch64 x86_64
- maven
ExclusiveArch: %{java_arches} noarch
- maven-antrun-plugin
ExclusiveArch: %{java_arches} noarch
- maven-archetype
ExclusiveArch: %{java_arches} noarch
- maven-archiver
ExclusiveArch: %{java_arches} noarch
- maven-artifact-transfer
ExclusiveArch: %{java_arches} noarch
- maven-assembly-plugin
ExclusiveArch: %{java_arches} noarch
- maven-clean-plugin
ExclusiveArch: %{java_arches} noarch
- maven-common-artifact-filters
ExclusiveArch: %{java_arches} noarch
- maven-compiler-plugin
ExclusiveArch: %{java_arches} noarch
- maven-dependency-analyzer
ExclusiveArch: %{java_arches} noarch
- maven-dependency-plugin
ExclusiveArch: %{java_arches} noarch
- maven-dependency-tree
ExclusiveArch: %{java_arches} noarch
- maven-doxia
ExclusiveArch: %{java_arches} noarch
- maven-doxia-sitetools
ExclusiveArch: %{java_arches} noarch
- maven-enforcer
ExclusiveArch: %{java_arches} noarch
- maven-file-management
ExclusiveArch: %{java_arches} noarch
- maven-filtering
ExclusiveArch: %{java_arches} noarch
- maven-invoker
ExclusiveArch: %{java_arches} noarch
- maven-invoker-plugin
ExclusiveArch: %{java_arches} noarch
- maven-jar-plugin
ExclusiveArch: %{java_arches} noarch
- maven-mapping
ExclusiveArch: %{java_arches} noarch
- maven-native
ExclusiveArch: %{java_arches} noarch
- maven-parent
ExclusiveArch: %{java_arches} noarch
- maven-patch-plugin
ExclusiveArch: %{java_arches} noarch
- maven-plugin-build-helper
ExclusiveArch: %{java_arches} noarch
- maven-plugin-bundle
ExclusiveArch: %{java_arches} noarch
- maven-plugin-testing
ExclusiveArch: %{java_arches} noarch
- maven-plugin-tools
ExclusiveArch: %{java_arches} noarch
- maven-remote-resources-plugin
ExclusiveArch: %{java_arches} noarch
- maven-reporting-api
ExclusiveArch: %{java_arches} noarch
- maven-reporting-impl
ExclusiveArch: %{java_arches} noarch
- maven-resolver
ExclusiveArch: %{java_arches} noarch
- maven-resources-plugin
ExclusiveArch: %{java_arches} noarch
- maven-scm
ExclusiveArch: %{java_arches} noarch
- maven-script-interpreter
ExclusiveArch: %{java_arches} noarch
- maven-shade-plugin
ExclusiveArch: %{java_arches} noarch
- maven-shared-incremental
ExclusiveArch: %{java_arches} noarch
- maven-shared-io
ExclusiveArch: %{java_arches} noarch
- maven-shared-utils
ExclusiveArch: %{java_arches} noarch
- maven-source-plugin
ExclusiveArch: %{java_arches} noarch
- maven-surefire
ExclusiveArch: %{java_arches} noarch
- maven-verifier
ExclusiveArch: %{java_arches} noarch
- maven-verifier-plugin
ExclusiveArch: %{java_arches} noarch
- maven-wagon
ExclusiveArch: %{java_arches} noarch
- maven2
ExclusiveArch: %{java_arches} noarch
- maxima
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc sparcv9
ExclusiveArch: %{ix86} x86_64 ppc sparcv9
- mbpfan
ExclusiveArch: x86_64
- mcelog
ExclusiveArch: i686 x86_64
- mcrouter
ExclusiveArch: x86_64 aarch64 ppc64le
- mdevctl
ExclusiveArch: %{rust_arches}
- mecab-java
ExclusiveArch: %java_arches
- mediaconch
ExclusiveArch: %{qt5_qtwebengine_arches}
- mellowplayer
ExclusiveArch: %{qt5_qtwebengine_arches}
- memkind
ExclusiveArch: x86_64 ppc64 ppc64le s390x aarch64
- memtest86+
ExclusiveArch: %{ix86} x86_64
- microcode_ctl
ExclusiveArch: %{ix86} x86_64
- micropython
ExclusiveArch: %{arm} x86_64
ExclusiveArch: %{arm} %{ix86} x86_64
- miglayout
ExclusiveArch: %{java_arches} noarch
- mine_detector
ExclusiveArch: %{GPRbuild_arches}
- minetest
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
- mingw-libidn2
ExclusiveArch: %{ix86} x86_64 %{arm}
- mingw-wine-gecko
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- mirrorlist-server
ExclusiveArch: %{rust_arches}
- mkbootdisk
ExclusiveArch: %{ix86} sparc sparc64 x86_64
- moby-engine
ExclusiveArch: %{golang_arches}
- mockito
ExclusiveArch: %{java_arches} noarch
- mod_mono
ExclusiveArch: %mono_arches
- modello
ExclusiveArch: %{java_arches} noarch
- module-build-service
ExclusiveArch: %{ix86} x86_64 noarch
- mojo-executor
ExclusiveArch: %{java_arches} noarch
- mojo-parent
ExclusiveArch: %{java_arches} noarch
- mokutil
ExclusiveArch: %{ix86} x86_64 aarch64 %{arm}
- mono
ExclusiveArch: %mono_arches
- mono-addins
ExclusiveArch: %mono_arches
- mono-basic
ExclusiveArch: %{mono_arches}
- mono-bouncycastle
ExclusiveArch: %mono_arches
- mono-cecil
ExclusiveArch: %mono_arches
- mono-cecil-flowanalysis
ExclusiveArch: %mono_arches
- mono-reflection
ExclusiveArch: %mono_arches
- mono-tools
ExclusiveArch: %mono_arches
- mono-zeroconf
ExclusiveArch: %mono_arches
- monodevelop
ExclusiveArch: %mono_arches
- monodevelop-debugger-gdb
ExclusiveArch: %{mono_arches}
- mrrescue
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc64le
- msr-tools
ExclusiveArch: %{ix86} x86_64
- munge-maven-plugin
ExclusiveArch: %{java_arches} noarch
- mxparser
ExclusiveArch: %{java_arches} noarch
- mysql-connector-java
ExclusiveArch: %{java_arches} noarch
- mysql-connector-net
ExclusiveArch: %{mono_arches}
- naev
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
- naga
ExclusiveArch: %{java_arches} noarch
- nant
ExclusiveArch: %mono_arches
- nativejit
ExclusiveArch: x86_64
- nbc
ExclusiveArch: %{fpc_arches}
- nbdkit
ExclusiveArch: x86_64
- ndesk-dbus
ExclusiveArch: %{mono_arches}
- ndesk-dbus-glib
ExclusiveArch: %{mono_arches}
- nekohtml
ExclusiveArch: %{java_arches} noarch
- netavark
ExclusiveArch: %{rust_arches}
- newtonsoft-json
ExclusiveArch: %{mono_arches}
- nispor
ExclusiveArch: %{rust_arches}
- nodejs
ExclusiveArch: %{nodejs_arches}
- nodejs-acorn-object-spread
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-backbone
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bash-language-server
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-buble
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-colors
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-generic-pool
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-less
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-linefix
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-nodemon
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-packaging
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-replace-require-self
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tape
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-typescript
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-underscore
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs16
ExclusiveArch: %{nodejs_arches}
- nodejs18
ExclusiveArch: %{nodejs_arches}
- nom-tam-fits
ExclusiveArch: %{java_arches} noarch
- notify-sharp
ExclusiveArch: %{mono_arches}
- notify-sharp3
ExclusiveArch: %{mono_arches}
- nuget
ExclusiveArch: %{mono_arches}
- numatop
ExclusiveArch: x86_64 ppc64le
- nunit
ExclusiveArch: %{mono_arches}
- nunit2
ExclusiveArch: %{mono_arches}
- nvml
ExclusiveArch: x86_64 ppc64le
- nwchem
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le
- objectweb-asm
ExclusiveArch: %{java_arches} noarch
- objenesis
ExclusiveArch: %{java_arches} noarch
- obs-service-rust2rpm
ExclusiveArch: %{rust_arches} noarch
- oci-seccomp-bpf-hook
ExclusiveArch: x86_64 %{power64} aarch64 s390x armv7hl
- oidn
ExclusiveArch: x86_64
- olpc-kbdshim
ExclusiveArch: %{ix86} %{arm}
- olpc-utils
ExclusiveArch: %{ix86} %{arm}
- oneVPL
ExclusiveArch: x86_64
- oneVPL-intel-gpu
ExclusiveArch: x86_64
- oneapi-level-zero
ExclusiveArch: x86_64
- onednn
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- onedrive
ExclusiveArch: %{ldc_arches}
- ongres-scram
ExclusiveArch: %{java_arches} noarch
- ongres-stringprep
ExclusiveArch: %{java_arches} noarch
- opae
ExclusiveArch: x86_64
- opal-prd
ExclusiveArch: ppc64le
- open-vm-tools
ExclusiveArch: x86_64 aarch64
ExclusiveArch: %{ix86} x86_64 aarch64
ExclusiveArch: x86_64
- openas2
ExclusiveArch: %{java_arches} noarch
ExclusiveArch: %{java_arches} noarch
- openblas
ExclusiveArch: %{openblas_arches}
- openjdk-asmtools
ExclusiveArch: %{java_arches} noarch
- openjdk-asmtools7
ExclusiveArch: %{java_arches} noarch
- openjfx
ExclusiveArch: %{java_arches}
- openjfx8
ExclusiveArch: x86_64
- openlibm
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 %{power64}
- openms
ExclusiveArch: %{qt5_qtwebengine_arches}
- openni
ExclusiveArch: %{ix86} x86_64 %{arm}
- openni-primesense
ExclusiveArch: %{ix86} x86_64 %{arm}
- openpgl
ExclusiveArch: x86_64
- openshadinglanguage
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- openssl-ibmca
ExclusiveArch: s390 s390x
- openstack-java-sdk
ExclusiveArch: %{java_arches} noarch
- opentest4j
ExclusiveArch: %{java_arches} noarch
- options
ExclusiveArch: %{java_arches} noarch
- orthorobot
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc64le
- osgi-annotation
ExclusiveArch: %{java_arches} noarch
- osgi-compendium
ExclusiveArch: %{java_arches} noarch
- osgi-core
ExclusiveArch: %{java_arches} noarch
- pacemaker
ExclusiveArch: aarch64 i686 ppc64le s390x x86_64 %{arm}
ExclusiveArch: aarch64 i686 ppc64le s390x x86_64
- paflib
ExclusiveArch: ppc %{power64}
- pageedit
ExclusiveArch: %{qt5_qtwebengine_arches}
- parsec
ExclusiveArch: %{rust_arches}
- parsec-tool
ExclusiveArch: %{rust_arches}
- parserng
ExclusiveArch: %{java_arches} noarch
- pasdoc
ExclusiveArch: %{fpc_arches}
- pcc
ExclusiveArch: %{ix86} x86_64
- pcfi
ExclusiveArch: %{java_arches} noarch
- pcm
ExclusiveArch: %{ix86} x86_64
- pcmciautils
ExclusiveArch: %{ix86} x86_64 ia64 ppc ppc64 %{arm}
- pdbg
ExclusiveArch: ppc64le
- pdfbox
ExclusiveArch: %{java_arches} noarch
- pdfmod
ExclusiveArch: %mono_arches
- pdftk-java
ExclusiveArch: %{java_arches} noarch
- pentaho-libxml
ExclusiveArch: %{java_arches} noarch
- pentaho-reporting-flow-engine
ExclusiveArch: %{java_arches} noarch
- perl-Dumbbench
ExclusiveArch: %{ix86} x86_64 noarch
- perl-Parse-DMIDecode
ExclusiveArch: %{ix86} x86_64 ia64 aarch64
- pesign
ExclusiveArch: %{ix86} x86_64 ia64 aarch64 %{arm}
- pesign-test-app
ExclusiveArch: x86_64
- picocli
ExclusiveArch: %{java_arches} noarch
- pinta
ExclusiveArch: %mono_arches
- pioneer
ExclusiveArch: %{ix86} x86_64
- plantuml
ExclusiveArch: %{java_arches} noarch
- plasma-dialer
ExclusiveArch: %{java_arches}
- playonlinux
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- plexus-active-collections
ExclusiveArch: %{java_arches} noarch
- plexus-archiver
ExclusiveArch: %{java_arches} noarch
- plexus-build-api
ExclusiveArch: %{java_arches} noarch
- plexus-cipher
ExclusiveArch: %{java_arches} noarch
- plexus-classworlds
ExclusiveArch: %{java_arches} noarch
- plexus-compiler
ExclusiveArch: %{java_arches} noarch
- plexus-component-api
ExclusiveArch: %{java_arches} noarch
- plexus-components-pom
ExclusiveArch: %{java_arches} noarch
- plexus-containers
ExclusiveArch: %{java_arches} noarch
- plexus-i18n
ExclusiveArch: %{java_arches} noarch
- plexus-interpolation
ExclusiveArch: %{java_arches} noarch
- plexus-io
ExclusiveArch: %{java_arches} noarch
- plexus-languages
ExclusiveArch: %{java_arches} noarch
- plexus-pom
ExclusiveArch: %{java_arches} noarch
- plexus-resources
ExclusiveArch: %{java_arches} noarch
- plexus-sec-dispatcher
ExclusiveArch: %{java_arches} noarch
- plexus-utils
ExclusiveArch: %{java_arches} noarch
- plexus-velocity
ExclusiveArch: %{java_arches} noarch
- pmdk-convert
ExclusiveArch: x86_64
- pmemkv
ExclusiveArch: x86_64
- podman
ExclusiveArch: %{golang_arches}
- pomchecker
ExclusiveArch: %{java_arches} noarch
- poppler-sharp
ExclusiveArch: %mono_arches
- popub
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- portlet-2.0-api
ExclusiveArch: %{java_arches} noarch
- postgresql-jdbc
ExclusiveArch: %{java_arches} noarch
- powerpc-utils
ExclusiveArch: ppc %{power64}
- ppc64-diag
ExclusiveArch: ppc %{power64}
- procyon
ExclusiveArch: %{java_arches} noarch
ExclusiveArch: %{java_arches} noarch
ExclusiveArch: %{java_arches} noarch
ExclusiveArch: %{java_arches} noarch
ExclusiveArch: %{java_arches} noarch
ExclusiveArch: %{java_arches} noarch
- proguard
ExclusiveArch: %{java_arches} noarch
- prometheus-jmx-exporter
ExclusiveArch: %{java_arches} noarch
- prometheus-simpleclient-java
ExclusiveArch: %{java_arches} noarch
- proxygen
ExclusiveArch: x86_64 aarch64 ppc64le
- pveclib
ExclusiveArch: ppc %{power64}
- pvs-sbcl
ExclusiveArch: x86_64
- pyqtwebengine
ExclusiveArch: %{qt5_qtwebengine_arches}
- python-ast-monitor
ExclusiveArch: %{qt5_qtwebengine_arches} noarch
- python-cryptography
ExclusiveArch: %{rust_arches}
- python-etcd
ExclusiveArch: noarch %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- python-javaobj
ExclusiveArch: %{java_arches} noarch
- python-jep
ExclusiveArch: %{java_arches}
- python-jupyter-polymake
ExclusiveArch: noarch aarch64 ppc64le s390x x86_64
- python-openoffice
ExclusiveArch: noarch x86_64
- python-pymoc
ExclusiveArch: aarch64 ppc64 ppc64le x86_64 s390x
- python-setuptools-rust
ExclusiveArch: %{rust_arches}
- q4wine
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- qatzip
ExclusiveArch: x86_64
- qbe
ExclusiveArch: x86_64 aarch64
- qcint
ExclusiveArch: x86_64
- qclib
ExclusiveArch: s390 s390x
- qdox
ExclusiveArch: %{java_arches} noarch
- qemu-sanity-check
ExclusiveArch: %{kernel_arches}
- qevercloud
ExclusiveArch: %{qt5_qtwebengine_arches}
- qmapshack
ExclusiveArch: %{qt5_qtwebengine_arches}
- qt4pas
ExclusiveArch: %{fpc_arches}
- qt5-qtwebengine
ExclusiveArch: %{qt5_qtwebengine_arches}
- quantum-espresso
ExclusiveArch: x86_64 %{ix86} aarch64 %{power64}
- quentier
ExclusiveArch: %{qt5_qtwebengine_arches}
- rEFInd
ExclusiveArch: %{efi}
- rachota
ExclusiveArch: %{java_arches} noarch
- rear
ExclusiveArch: %ix86 x86_64 ppc ppc64 ppc64le ia64
- reflections
ExclusiveArch: %{java_arches} noarch
- reg
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- regexp
ExclusiveArch: %{java_arches} noarch
- replacer
ExclusiveArch: %{java_arches} noarch
- reptyr
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- rescene
ExclusiveArch: %{mono_arches}
- resteasy
ExclusiveArch: %{java_arches} noarch
- restool
ExclusiveArch: aarch64
- restsharp
ExclusiveArch: %{mono_arches}
- retsnoop
ExclusiveArch: %{rust_arches}
- rhino
ExclusiveArch: %{java_arches} noarch
- river
ExclusiveArch: %{zig_arches}
- rocm-compilersupport
ExclusiveArch: x86_64 aarch64 ppc64le
- rocm-device-libs
ExclusiveArch: x86_64 aarch64 ppc64le
- rocm-opencl
ExclusiveArch: x86_64 aarch64
ExclusiveArch: x86_64 aarch64 ppc64le
- rocm-runtime
ExclusiveArch: x86_64 aarch64 ppc64le
- rocminfo
ExclusiveArch: x86_64 aarch64 ppc64le
- rpm-ostree
ExclusiveArch: %{rust_arches}
- rr
ExclusiveArch: %{ix86} x86_64 aarch64
- rssguard
ExclusiveArch: %{qt5_qtwebengine_arches}
- rstudio
ExclusiveArch: %{java_arches}
- rsyntaxtextarea
ExclusiveArch: %{java_arches} noarch
- rubygem-childprocess
ExclusiveArch: %{ix86} x86_64 noarch
- runc
ExclusiveArch: %{golang_arches}
- rundoc
ExclusiveArch: %{java_arches} noarch
- rust
ExclusiveArch: %{rust_arches}
- rust-Inflector
ExclusiveArch: %{rust_arches}
- rust-actix
ExclusiveArch: %{rust_arches}
- rust-actix-codec
ExclusiveArch: %{rust_arches}
- rust-actix-http
ExclusiveArch: %{rust_arches}
- rust-actix-macros
ExclusiveArch: %{rust_arches}
- rust-actix-router
ExclusiveArch: %{rust_arches}
- rust-actix-rt
ExclusiveArch: %{rust_arches}
- rust-actix-server
ExclusiveArch: %{rust_arches}
- rust-actix-service
ExclusiveArch: %{rust_arches}
- rust-actix-tls
ExclusiveArch: %{rust_arches}
- rust-actix-web
ExclusiveArch: %{rust_arches}
- rust-actix-web-codegen
ExclusiveArch: %{rust_arches}
- rust-actix_derive
ExclusiveArch: %{rust_arches}
- rust-addr2line
ExclusiveArch: %{rust_arches}
- rust-aead
ExclusiveArch: %{rust_arches}
- rust-aes-gcm
ExclusiveArch: %{rust_arches}
- rust-aes0.7
ExclusiveArch: %{rust_arches}
- rust-afterburn
ExclusiveArch: %{rust_arches}
- rust-ahash0.4
ExclusiveArch: %{rust_arches}
- rust-alacritty
ExclusiveArch: %{rust_arches}
- rust-alacritty_config_derive
ExclusiveArch: %{rust_arches}
- rust-alacritty_terminal
ExclusiveArch: %{rust_arches}
- rust-alga
ExclusiveArch: %{rust_arches}
- rust-alga_derive
ExclusiveArch: %{rust_arches}
- rust-aliasable
ExclusiveArch: %{rust_arches}
- rust-alloc-no-stdlib
ExclusiveArch: %{rust_arches}
- rust-alloc-stdlib
ExclusiveArch: %{rust_arches}
- rust-ammonia
ExclusiveArch: %{rust_arches}
- rust-ansi_term
ExclusiveArch: %{rust_arches}
- rust-ansi_term0.11
ExclusiveArch: %{rust_arches}
- rust-aparato
ExclusiveArch: %{rust_arches}
- rust-app_dirs
ExclusiveArch: %{rust_arches}
- rust-approx
ExclusiveArch: %{rust_arches}
- rust-ar
ExclusiveArch: %{rust_arches}
- rust-arbitrary0.4
ExclusiveArch: %{rust_arches}
- rust-arc-swap
ExclusiveArch: %{rust_arches}
- rust-arg_enum_proc_macro
ExclusiveArch: %{rust_arches}
- rust-argh
ExclusiveArch: %{rust_arches}
- rust-argh_derive
ExclusiveArch: %{rust_arches}
- rust-argh_shared
ExclusiveArch: %{rust_arches}
- rust-argmax
ExclusiveArch: %{rust_arches}
- rust-argparse
ExclusiveArch: %{rust_arches}
- rust-arrayvec
ExclusiveArch: %{rust_arches}
- rust-arrayvec0.5
ExclusiveArch: %{rust_arches}
- rust-ascii
ExclusiveArch: %{rust_arches}
- rust-ascii-canvas
ExclusiveArch: %{rust_arches}
- rust-askalono
ExclusiveArch: %{rust_arches}
- rust-askalono-cli
ExclusiveArch: %{rust_arches}
- rust-askama
ExclusiveArch: %{rust_arches}
- rust-askama_derive
ExclusiveArch: %{rust_arches}
- rust-askama_escape
ExclusiveArch: %{rust_arches}
- rust-askama_shared
ExclusiveArch: %{rust_arches}
- rust-asn1
ExclusiveArch: %{rust_arches}
- rust-asn1_derive
ExclusiveArch: %{rust_arches}
- rust-assert-impl
ExclusiveArch: %{rust_arches}
- rust-assert-json-diff
ExclusiveArch: %{rust_arches}
- rust-assert_approx_eq
ExclusiveArch: %{rust_arches}
- rust-assert_cli
ExclusiveArch: %{rust_arches}
- rust-assert_cmd
ExclusiveArch: %{rust_arches}
- rust-assert_fs
ExclusiveArch: %{rust_arches}
- rust-assert_matches
ExclusiveArch: %{rust_arches}
- rust-async-attributes
ExclusiveArch: %{rust_arches}
- rust-async-broadcast
ExclusiveArch: %{rust_arches}
- rust-async-compression
ExclusiveArch: %{rust_arches}
- rust-async-mutex
ExclusiveArch: %{rust_arches}
- rust-async-recursion
ExclusiveArch: %{rust_arches}
- rust-async-std
ExclusiveArch: %{rust_arches}
- rust-async-task
ExclusiveArch: %{rust_arches}
- rust-asyncgit
ExclusiveArch: %{rust_arches}
- rust-atom
ExclusiveArch: %{rust_arches}
- rust-atomic
ExclusiveArch: %{rust_arches}
- rust-atomic-traits
ExclusiveArch: %{rust_arches}
- rust-atomic-waker
ExclusiveArch: %{rust_arches}
- rust-atty
ExclusiveArch: %{rust_arches}
- rust-autocfg
ExclusiveArch: %{rust_arches}
- rust-average
ExclusiveArch: %{rust_arches}
- rust-awc
ExclusiveArch: %{rust_arches}
- rust-aws-nitro-enclaves-cose
ExclusiveArch: %{rust_arches}
- rust-az
ExclusiveArch: %{rust_arches}
- rust-backtrace
ExclusiveArch: %{rust_arches}
- rust-base-x
ExclusiveArch: %{rust_arches}
- rust-base64
ExclusiveArch: %{rust_arches}
- rust-below
ExclusiveArch: %{rust_arches}
- rust-below-common
ExclusiveArch: %{rust_arches}
- rust-below-config
ExclusiveArch: %{rust_arches}
- rust-below-dump
ExclusiveArch: %{rust_arches}
- rust-below-model
ExclusiveArch: %{rust_arches}
- rust-below-render
ExclusiveArch: %{rust_arches}
- rust-below-store
ExclusiveArch: %{rust_arches}
- rust-below-view
ExclusiveArch: %{rust_arches}
- rust-below_derive
ExclusiveArch: %{rust_arches}
- rust-bencher
ExclusiveArch: %{rust_arches}
- rust-benfred-read-process-memory
ExclusiveArch: %{rust_arches}
- rust-bigdecimal
ExclusiveArch: %{rust_arches}
- rust-binascii
ExclusiveArch: %{rust_arches}
- rust-bincode
ExclusiveArch: %{rust_arches}
- rust-bit-set
ExclusiveArch: %{rust_arches}
- rust-bit-vec
ExclusiveArch: %{rust_arches}
- rust-bit_field
ExclusiveArch: %{rust_arches}
- rust-bitfield
ExclusiveArch: %{rust_arches}
- rust-bitflags
ExclusiveArch: %{rust_arches}
- rust-blobby
ExclusiveArch: %{rust_arches}
- rust-blobby0.1
ExclusiveArch: %{rust_arches}
- rust-block-buffer
ExclusiveArch: %{rust_arches}
- rust-block-buffer0.9
ExclusiveArch: %{rust_arches}
- rust-block-modes
ExclusiveArch: %{rust_arches}
- rust-block-padding
ExclusiveArch: %{rust_arches}
- rust-block-padding0.2
ExclusiveArch: %{rust_arches}
- rust-blsctl
ExclusiveArch: %{rust_arches}
- rust-bodhi
ExclusiveArch: %{rust_arches}
- rust-bodhi-cli
ExclusiveArch: %{rust_arches}
- rust-bootupd
ExclusiveArch: x86_64 aarch64
- rust-box_drawing
ExclusiveArch: %{rust_arches}
- rust-boxfnonce
ExclusiveArch: %{rust_arches}
- rust-brotli
ExclusiveArch: %{rust_arches}
- rust-brotli-decompressor
ExclusiveArch: %{rust_arches}
- rust-bstr
ExclusiveArch: %{rust_arches}
- rust-btrd
ExclusiveArch: %{rust_arches}
- rust-buffered-reader
ExclusiveArch: %{rust_arches}
- rust-bufstream
ExclusiveArch: %{rust_arches}
- rust-bugreport
ExclusiveArch: %{rust_arches}
- rust-byte-unit3
ExclusiveArch: %{rust_arches}
- rust-bytecheck
ExclusiveArch: %{rust_arches}
- rust-bytecheck_derive
ExclusiveArch: %{rust_arches}
- rust-bytecount
ExclusiveArch: %{rust_arches}
- rust-byteorder
ExclusiveArch: %{rust_arches}
- rust-bytes-cast
ExclusiveArch: %{rust_arches}
- rust-bytes-cast-derive
ExclusiveArch: %{rust_arches}
- rust-bytes0.4
ExclusiveArch: %{rust_arches}
- rust-bytes0.5
ExclusiveArch: %{rust_arches}
- rust-bytesize
ExclusiveArch: %{rust_arches}
- rust-bzip2
ExclusiveArch: %{rust_arches}
- rust-bzip2-sys
ExclusiveArch: %{rust_arches}
- rust-cache-padded
ExclusiveArch: %{rust_arches}
- rust-calloop
ExclusiveArch: %{rust_arches}
- rust-cap
ExclusiveArch: %{rust_arches}
- rust-capng
ExclusiveArch: %{rust_arches}
- rust-capnp-futures
ExclusiveArch: %{rust_arches}
- rust-capnp-rpc
ExclusiveArch: %{rust_arches}
- rust-cargo
ExclusiveArch: %{rust_arches}
- rust-cargo-c
ExclusiveArch: %{rust_arches}
- rust-cargo-edit
ExclusiveArch: %{rust_arches}
- rust-cargo-husky
ExclusiveArch: %{rust_arches}
- rust-cargo-insta
ExclusiveArch: %{rust_arches}
- rust-cargo-manifest
ExclusiveArch: %{rust_arches}
- rust-cargo-platform
ExclusiveArch: %{rust_arches}
- rust-cargo-readme
ExclusiveArch: %{rust_arches}
- rust-cascade
ExclusiveArch: %{rust_arches}
- rust-case
ExclusiveArch: %{rust_arches}
- rust-cassowary
ExclusiveArch: %{rust_arches}
- rust-cast
ExclusiveArch: %{rust_arches}
- rust-cbindgen
ExclusiveArch: %{rust_arches}
- rust-cdylib-link-lines
ExclusiveArch: %{rust_arches}
- rust-cexpr
ExclusiveArch: %{rust_arches}
- rust-cfb
ExclusiveArch: %{rust_arches}
- rust-cfg-if
ExclusiveArch: %{rust_arches}
- rust-cfg-if0.1
ExclusiveArch: %{rust_arches}
- rust-cgroupfs
ExclusiveArch: %{rust_arches}
- rust-chainerror
ExclusiveArch: %{rust_arches}
- rust-charset
ExclusiveArch: %{rust_arches}
- rust-choosier
ExclusiveArch: %{rust_arches}
- rust-chrono-humanize
ExclusiveArch: %{rust_arches}
- rust-chrono-tz
ExclusiveArch: %{rust_arches}
- rust-ciborium
ExclusiveArch: %{rust_arches}
- rust-ciborium-io
ExclusiveArch: %{rust_arches}
- rust-ciborium-ll
ExclusiveArch: %{rust_arches}
- rust-cint
ExclusiveArch: %{rust_arches}
- rust-cipher
ExclusiveArch: %{rust_arches}
- rust-cipher0.3
ExclusiveArch: %{rust_arches}
- rust-clang-sys
ExclusiveArch: %{rust_arches}
- rust-clap
ExclusiveArch: %{rust_arches}
- rust-clap-verbosity-flag
ExclusiveArch: %{rust_arches}
- rust-clap2
ExclusiveArch: %{rust_arches}
- rust-clap_complete
ExclusiveArch: %{rust_arches}
- rust-clap_complete_fig
ExclusiveArch: %{rust_arches}
- rust-clap_derive
ExclusiveArch: %{rust_arches}
- rust-clap_generate
ExclusiveArch: %{rust_arches}
- rust-clap_generate_fig
ExclusiveArch: %{rust_arches}
- rust-clicolors-control
ExclusiveArch: %{rust_arches}
- rust-clircle
ExclusiveArch: %{rust_arches}
- rust-codespan-reporting
ExclusiveArch: %{rust_arches}
- rust-codicon
ExclusiveArch: %{rust_arches}
- rust-color-backtrace
ExclusiveArch: %{rust_arches}
- rust-color_quant
ExclusiveArch: %{rust_arches}
- rust-colored
ExclusiveArch: %{rust_arches}
- rust-colored1
ExclusiveArch: %{rust_arches}
- rust-colored_json
ExclusiveArch: %{rust_arches}
- rust-colorful
ExclusiveArch: %{rust_arches}
- rust-combine
ExclusiveArch: %{rust_arches}
- rust-comfy-table
ExclusiveArch: %{rust_arches}
- rust-common-path
ExclusiveArch: %{rust_arches}
- rust-compiletest_rs
ExclusiveArch: %{rust_arches}
- rust-compress-tools
ExclusiveArch: %{rust_arches}
- rust-concolor
ExclusiveArch: %{rust_arches}
- rust-concolor-control
ExclusiveArch: %{rust_arches}
- rust-concolor-query
ExclusiveArch: %{rust_arches}
- rust-config
ExclusiveArch: %{rust_arches}
- rust-configparser
ExclusiveArch: %{rust_arches}
- rust-confy
ExclusiveArch: %{rust_arches}
- rust-conhash
ExclusiveArch: %{rust_arches}
- rust-console
ExclusiveArch: %{rust_arches}
- rust-console0.11
ExclusiveArch: %{rust_arches}
- rust-console0.12
ExclusiveArch: %{rust_arches}
- rust-console0.13
ExclusiveArch: %{rust_arches}
- rust-console0.14
ExclusiveArch: %{rust_arches}
- rust-console0.9
ExclusiveArch: %{rust_arches}
- rust-const-cstr
ExclusiveArch: %{rust_arches}
- rust-const-oid0.6
ExclusiveArch: %{rust_arches}
- rust-const-random
ExclusiveArch: %{rust_arches}
- rust-const-random-macro
ExclusiveArch: %{rust_arches}
- rust-const_fn
ExclusiveArch: %{rust_arches}
- rust-const_format
ExclusiveArch: %{rust_arches}
- rust-const_format_proc_macros
ExclusiveArch: %{rust_arches}
- rust-constant_time_eq
ExclusiveArch: %{rust_arches}
- rust-content_inspector
ExclusiveArch: %{rust_arches}
- rust-conv
ExclusiveArch: %{rust_arches}
- rust-cookie
ExclusiveArch: %{rust_arches}
- rust-cookie-factory
ExclusiveArch: %{rust_arches}
- rust-cookie_store
ExclusiveArch: %{rust_arches}
- rust-coolor
ExclusiveArch: %{rust_arches}
- rust-copydeps
ExclusiveArch: %{rust_arches}
- rust-copypasta
ExclusiveArch: %{rust_arches}
- rust-cordic
ExclusiveArch: %{rust_arches}
- rust-coreos-installer
ExclusiveArch: %{rust_arches}
- rust-count-zeroes
ExclusiveArch: %{rust_arches}
- rust-counted-array
ExclusiveArch: %{rust_arches}
- rust-cpc
ExclusiveArch: %{rust_arches}
- rust-cpio
ExclusiveArch: %{rust_arches}
- rust-cpp_demangle
ExclusiveArch: %{rust_arches}
- rust-cpufeatures
ExclusiveArch: %{rust_arches}
- rust-crates-io
ExclusiveArch: %{rust_arches}
- rust-crc
ExclusiveArch: %{rust_arches}
- rust-crc-catalog
ExclusiveArch: %{rust_arches}
- rust-crc32fast
ExclusiveArch: %{rust_arches}
- rust-crossbeam
ExclusiveArch: %{rust_arches}
- rust-crossbeam-channel
ExclusiveArch: %{rust_arches}
- rust-crossbeam-channel0.4
ExclusiveArch: %{rust_arches}
- rust-crossbeam-deque
ExclusiveArch: %{rust_arches}
- rust-crossbeam-deque0.7
ExclusiveArch: %{rust_arches}
- rust-crossbeam-epoch
ExclusiveArch: %{rust_arches}
- rust-crossbeam-epoch0.8
ExclusiveArch: %{rust_arches}
- rust-crossbeam-queue0.2
ExclusiveArch: %{rust_arches}
- rust-crossbeam-utils0.7
ExclusiveArch: %{rust_arches}
- rust-crossbeam0.7
ExclusiveArch: %{rust_arches}
- rust-crossfont
ExclusiveArch: %{rust_arches}
- rust-crossterm0.17
ExclusiveArch: %{rust_arches}
- rust-crossterm0.19
ExclusiveArch: %{rust_arches}
- rust-crosstermion
ExclusiveArch: %{rust_arches}
- rust-crunchy
ExclusiveArch: %{rust_arches}
- rust-crypto-bigint
ExclusiveArch: %{rust_arches}
- rust-crypto-common
ExclusiveArch: %{rust_arches}
- rust-crypto-hash
ExclusiveArch: %{rust_arches}
- rust-crypto-mac
ExclusiveArch: %{rust_arches}
- rust-cryptoki
ExclusiveArch: %{rust_arches}
- rust-cryptoki-sys
ExclusiveArch: %{rust_arches}
- rust-csscolorparser
ExclusiveArch: %{rust_arches}
- rust-cssparser
ExclusiveArch: %{rust_arches}
- rust-cssparser-macros
ExclusiveArch: %{rust_arches}
- rust-cstr_core
ExclusiveArch: %{rust_arches}
- rust-csv
ExclusiveArch: %{rust_arches}
- rust-csv-core
ExclusiveArch: %{rust_arches}
- rust-ct-logs
ExclusiveArch: %{rust_arches}
- rust-ctr
ExclusiveArch: %{rust_arches}
- rust-ctr0.8
ExclusiveArch: %{rust_arches}
- rust-ctrlc
ExclusiveArch: %{rust_arches}
- rust-cty
ExclusiveArch: %{rust_arches}
- rust-curl
ExclusiveArch: %{rust_arches}
- rust-cursive-tabs
ExclusiveArch: %{rust_arches}
- rust-cursive_buffered_backend
ExclusiveArch: %{rust_arches}
- rust-custom_derive
ExclusiveArch: %{rust_arches}
- rust-custom_error
ExclusiveArch: %{rust_arches}
- rust-daemonize
ExclusiveArch: %{rust_arches}
- rust-darling0.12
ExclusiveArch: %{rust_arches}
- rust-darling_core0.12
ExclusiveArch: %{rust_arches}
- rust-darling_macro0.12
ExclusiveArch: %{rust_arches}
- rust-dashmap4
ExclusiveArch: %{rust_arches}
- rust-data-encoding-macro
ExclusiveArch: %{rust_arches}
- rust-data-encoding-macro-internal
ExclusiveArch: %{rust_arches}
- rust-data-url
ExclusiveArch: %{rust_arches}
- rust-datetime
ExclusiveArch: %{rust_arches}
- rust-dav1d-sys
ExclusiveArch: %{rust_arches}
- rust-dbus
ExclusiveArch: %{rust_arches}
- rust-dbus-codegen
ExclusiveArch: %{rust_arches}
- rust-dbus-crossroads
ExclusiveArch: %{rust_arches}
- rust-dbus-tree
ExclusiveArch: %{rust_arches}
- rust-dbus0.8
ExclusiveArch: %{rust_arches}
- rust-decimal
ExclusiveArch: %{rust_arches}
- rust-deflate
ExclusiveArch: %{rust_arches}
- rust-deflate0.8
ExclusiveArch: %{rust_arches}
- rust-defmac
ExclusiveArch: %{rust_arches}
- rust-deltae
ExclusiveArch: %{rust_arches}
- rust-der
ExclusiveArch: %{rust_arches}
- rust-der_derive
ExclusiveArch: %{rust_arches}
- rust-derivative
ExclusiveArch: %{rust_arches}
- rust-derive-new
ExclusiveArch: %{rust_arches}
- rust-derive_arbitrary0.4
ExclusiveArch: %{rust_arches}
- rust-derive_builder0.9
ExclusiveArch: %{rust_arches}
- rust-derive_builder_core0.9
ExclusiveArch: %{rust_arches}
- rust-derive_more
ExclusiveArch: %{rust_arches}
- rust-des
ExclusiveArch: %{rust_arches}
- rust-des0.7
ExclusiveArch: %{rust_arches}
- rust-desed
ExclusiveArch: %{rust_arches}
- rust-devicemapper-sys
ExclusiveArch: %{rust_arches}
- rust-dialoguer
ExclusiveArch: %{rust_arches}
- rust-diesel
ExclusiveArch: %{rust_arches}
- rust-diesel_derives
ExclusiveArch: %{rust_arches}
- rust-diff
ExclusiveArch: %{rust_arches}
- rust-difference
ExclusiveArch: %{rust_arches}
- rust-difflib
ExclusiveArch: %{rust_arches}
- rust-digest0.9
ExclusiveArch: %{rust_arches}
- rust-digest_auth
ExclusiveArch: %{rust_arches}
- rust-directories
ExclusiveArch: %{rust_arches}
- rust-directories-next
ExclusiveArch: %{rust_arches}
- rust-directories3
ExclusiveArch: %{rust_arches}
- rust-dirs
ExclusiveArch: %{rust_arches}
- rust-dirs-next
ExclusiveArch: %{rust_arches}
- rust-dirs-sys
ExclusiveArch: %{rust_arches}
- rust-dirs-sys-next
ExclusiveArch: %{rust_arches}
- rust-dirs2
ExclusiveArch: %{rust_arches}
- rust-dirs3
ExclusiveArch: %{rust_arches}
- rust-diskonaut
ExclusiveArch: %{rust_arches}
- rust-displaydoc
ExclusiveArch: %{rust_arches}
- rust-dlib
ExclusiveArch: %{rust_arches}
- rust-dns-lookup
ExclusiveArch: %{rust_arches}
- rust-doc-comment
ExclusiveArch: %{rust_arches}
- rust-docmatic
ExclusiveArch: %{rust_arches}
- rust-docopt
ExclusiveArch: %{rust_arches}
- rust-dotenv
ExclusiveArch: %{rust_arches}
- rust-downcast
ExclusiveArch: %{rust_arches}
- rust-downcast-rs
ExclusiveArch: %{rust_arches}
- rust-drg
ExclusiveArch: %{rust_arches}
- rust-dtoa
ExclusiveArch: %{rust_arches}
- rust-dtoa-short
ExclusiveArch: %{rust_arches}
- rust-dua-cli
ExclusiveArch: %{rust_arches}
- rust-duct
ExclusiveArch: %{rust_arches}
- rust-duct_sh
ExclusiveArch: %{rust_arches}
- rust-dummy
ExclusiveArch: %{rust_arches}
- rust-dunce
ExclusiveArch: %{rust_arches}
- rust-dutree
ExclusiveArch: %{rust_arches}
- rust-easy-cast
ExclusiveArch: %{rust_arches}
- rust-easy-parallel
ExclusiveArch: %{rust_arches}
- rust-edit
ExclusiveArch: %{rust_arches}
- rust-edit-distance
ExclusiveArch: %{rust_arches}
- rust-either
ExclusiveArch: %{rust_arches}
- rust-elf
ExclusiveArch: %{rust_arches}
- rust-elfcat
ExclusiveArch: %{rust_arches}
- rust-email-encoding
ExclusiveArch: %{rust_arches}
- rust-ena
ExclusiveArch: %{rust_arches}
- rust-encode_unicode
ExclusiveArch: %{rust_arches}
- rust-encoding
ExclusiveArch: %{rust_arches}
- rust-encoding-index-japanese
ExclusiveArch: %{rust_arches}
- rust-encoding-index-korean
ExclusiveArch: %{rust_arches}
- rust-encoding-index-simpchinese
ExclusiveArch: %{rust_arches}
- rust-encoding-index-singlebyte
ExclusiveArch: %{rust_arches}
- rust-encoding-index-tradchinese
ExclusiveArch: %{rust_arches}
- rust-encoding_index_tests
ExclusiveArch: %{rust_arches}
- rust-encoding_rs
ExclusiveArch: %{rust_arches}
- rust-encoding_rs_io
ExclusiveArch: %{rust_arches}
- rust-endian-type
ExclusiveArch: %{rust_arches}
- rust-enquote
ExclusiveArch: %{rust_arches}
- rust-entities
ExclusiveArch: %{rust_arches}
- rust-enum-as-inner
ExclusiveArch: %{rust_arches}
- rust-enum-iterator
ExclusiveArch: %{rust_arches}
- rust-enum-iterator-derive
ExclusiveArch: %{rust_arches}
- rust-enumflags2
ExclusiveArch: %{rust_arches}
- rust-enumflags2_0.6
ExclusiveArch: %{rust_arches}
- rust-enumflags2_derive
ExclusiveArch: %{rust_arches}
- rust-enumflags2_derive0.6
ExclusiveArch: %{rust_arches}
- rust-enumset
ExclusiveArch: %{rust_arches}
- rust-enumset_derive
ExclusiveArch: %{rust_arches}
- rust-env_logger0.4
ExclusiveArch: %{rust_arches}
- rust-env_logger0.5
ExclusiveArch: %{rust_arches}
- rust-env_logger0.6
ExclusiveArch: %{rust_arches}
- rust-env_logger0.7
ExclusiveArch: %{rust_arches}
- rust-env_logger0.8
ExclusiveArch: %{rust_arches}
- rust-env_proxy
ExclusiveArch: %{rust_arches}
- rust-environment
ExclusiveArch: %{rust_arches}
- rust-epoll
ExclusiveArch: %{rust_arches}
- rust-err-derive
ExclusiveArch: %{rust_arches}
- rust-errno
ExclusiveArch: %{rust_arches}
- rust-error-chain
ExclusiveArch: %{rust_arches}
- rust-escape_string
ExclusiveArch: %{rust_arches}
- rust-escargot
ExclusiveArch: %{rust_arches}
- rust-esphome
ExclusiveArch: %{rust_arches}
- rust-ethtool
ExclusiveArch: %{rust_arches}
- rust-event-listener
ExclusiveArch: %{rust_arches}
- rust-exa
ExclusiveArch: %{rust_arches}
- rust-executable-path
ExclusiveArch: %{rust_arches}
- rust-exitcode
ExclusiveArch: %{rust_arches}
- rust-exitfailure
ExclusiveArch: %{rust_arches}
- rust-expat-sys
ExclusiveArch: %{rust_arches}
- rust-eyre
ExclusiveArch: %{rust_arches}
- rust-faccess
ExclusiveArch: %{rust_arches}
- rust-fail
ExclusiveArch: %{rust_arches}
- rust-failure
ExclusiveArch: %{rust_arches}
- rust-failure-tools
ExclusiveArch: %{rust_arches}
- rust-failure_derive
ExclusiveArch: %{rust_arches}
- rust-fake
ExclusiveArch: %{rust_arches}
- rust-fake-simd
ExclusiveArch: %{rust_arches}
- rust-fallible-iterator
ExclusiveArch: %{rust_arches}
- rust-fallible-streaming-iterator
ExclusiveArch: %{rust_arches}
- rust-fastrand
ExclusiveArch: %{rust_arches}
- rust-fatfs
ExclusiveArch: %{rust_arches}
- rust-fb_procfs
ExclusiveArch: %{rust_arches}
- rust-fd-find
ExclusiveArch: %{rust_arches}
- rust-fd-lock
ExclusiveArch: %{rust_arches}
- rust-fedora
ExclusiveArch: %{rust_arches}
- rust-fedora-update-feedback
ExclusiveArch: %{rust_arches}
- rust-femme
ExclusiveArch: %{rust_arches}
- rust-fern
ExclusiveArch: %{rust_arches}
- rust-field-offset
ExclusiveArch: %{rust_arches}
- rust-filedescriptor
ExclusiveArch: %{rust_arches}
- rust-filesize
ExclusiveArch: %{rust_arches}
- rust-filetreelist
ExclusiveArch: %{rust_arches}
- rust-find-crate
ExclusiveArch: %{rust_arches}
- rust-findshlibs
ExclusiveArch: %{rust_arches}
- rust-firestorm
ExclusiveArch: %{rust_arches}
- rust-fixed
ExclusiveArch: %{rust_arches}
- rust-fixedbitset
ExclusiveArch: %{rust_arches}
- rust-fixedbitset0.2
ExclusiveArch: %{rust_arches}
- rust-flate2
ExclusiveArch: %{rust_arches}
- rust-float-cmp
ExclusiveArch: %{rust_arches}
- rust-float-ord
ExclusiveArch: %{rust_arches}
- rust-fluent
ExclusiveArch: %{rust_arches}
- rust-flume
ExclusiveArch: %{rust_arches}
- rust-fn-error-context
ExclusiveArch: %{rust_arches}
- rust-fnv
ExclusiveArch: %{rust_arches}
- rust-font-kit
ExclusiveArch: %{rust_arches}
- rust-foreign-types
ExclusiveArch: %{rust_arches}
- rust-foreign-types-macros
ExclusiveArch: %{rust_arches}
- rust-foreign-types-shared
ExclusiveArch: %{rust_arches}
- rust-foreign-types-shared0.1
ExclusiveArch: %{rust_arches}
- rust-foreign-types0.3
ExclusiveArch: %{rust_arches}
- rust-format-bytes
ExclusiveArch: %{rust_arches}
- rust-format-bytes-macros
ExclusiveArch: %{rust_arches}
- rust-freetype
ExclusiveArch: %{rust_arches}
- rust-fs2
ExclusiveArch: %{rust_arches}
- rust-fs_extra
ExclusiveArch: %{rust_arches}
- rust-fscommon
ExclusiveArch: %{rust_arches}
- rust-fslock
ExclusiveArch: %{rust_arches}
- rust-funty
ExclusiveArch: %{rust_arches}
- rust-futf
ExclusiveArch: %{rust_arches}
- rust-futures-cpupool
ExclusiveArch: %{rust_arches}
- rust-futures-lite
ExclusiveArch: %{rust_arches}
- rust-futures-timer
ExclusiveArch: %{rust_arches}
- rust-futures0.1
ExclusiveArch: %{rust_arches}
- rust-fuzzy-matcher
ExclusiveArch: %{rust_arches}
- rust-fxhash
ExclusiveArch: %{rust_arches}
- rust-gag
ExclusiveArch: %{rust_arches}
- rust-generic-array
ExclusiveArch: %{rust_arches}
- rust-generic-array0.12
ExclusiveArch: %{rust_arches}
- rust-genetlink
ExclusiveArch: %{rust_arches}
- rust-getch
ExclusiveArch: %{rust_arches}
- rust-gethostname
ExclusiveArch: %{rust_arches}
- rust-getopts
ExclusiveArch: %{rust_arches}
- rust-getrandom0.1
ExclusiveArch: %{rust_arches}
- rust-getset
ExclusiveArch: %{rust_arches}
- rust-gettext-rs
ExclusiveArch: %{rust_arches}
- rust-gettext-sys
ExclusiveArch: %{rust_arches}
- rust-gh-emoji
ExclusiveArch: %{rust_arches}
- rust-ghash
ExclusiveArch: %{rust_arches}
- rust-gif
ExclusiveArch: %{rust_arches}
- rust-gimli
ExclusiveArch: %{rust_arches}
- rust-gir-format-check
ExclusiveArch: %{rust_arches}
- rust-git-delta
ExclusiveArch: %{rust_arches}
- rust-git-version
ExclusiveArch: %{rust_arches}
- rust-git-version-macro
ExclusiveArch: %{rust_arches}
- rust-git2
ExclusiveArch: %{rust_arches}
- rust-git2-curl
ExclusiveArch: %{rust_arches}
- rust-git2_0.13
ExclusiveArch: %{rust_arches}
- rust-gitui
ExclusiveArch: %{rust_arches}
- rust-gl_generator
ExclusiveArch: %{rust_arches}
- rust-glam
ExclusiveArch: %{rust_arches}
- rust-glob
ExclusiveArch: %{rust_arches}
- rust-globset
ExclusiveArch: %{rust_arches}
- rust-globwalk
ExclusiveArch: %{rust_arches}
- rust-glutin
ExclusiveArch: %{rust_arches}
- rust-glutin_egl_sys
ExclusiveArch: %{rust_arches}
- rust-glutin_glx_sys
ExclusiveArch: %{rust_arches}
- rust-goblin
ExclusiveArch: %{rust_arches}
- rust-gptman
ExclusiveArch: %{rust_arches}
- rust-grep
ExclusiveArch: %{rust_arches}
- rust-grep-cli
ExclusiveArch: %{rust_arches}
- rust-grep-matcher
ExclusiveArch: %{rust_arches}
- rust-grep-pcre2
ExclusiveArch: %{rust_arches}
- rust-grep-printer
ExclusiveArch: %{rust_arches}
- rust-grep-regex
ExclusiveArch: %{rust_arches}
- rust-grep-searcher
ExclusiveArch: %{rust_arches}
- rust-groupable
ExclusiveArch: %{rust_arches}
- rust-gstreamer
ExclusiveArch: %{rust_arches}
- rust-gstreamer-audio
ExclusiveArch: %{rust_arches}
- rust-gstreamer-audio-sys
ExclusiveArch: %{rust_arches}
- rust-gstreamer-base
ExclusiveArch: %{rust_arches}
- rust-gstreamer-base-sys
ExclusiveArch: %{rust_arches}
- rust-gstreamer-editing-services
ExclusiveArch: %{rust_arches}
- rust-gstreamer-editing-services-sys
ExclusiveArch: %{rust_arches}
- rust-gstreamer-pbutils
ExclusiveArch: %{rust_arches}
- rust-gstreamer-pbutils-sys
ExclusiveArch: %{rust_arches}
- rust-gstreamer-player
ExclusiveArch: %{rust_arches}
- rust-gstreamer-player-sys
ExclusiveArch: %{rust_arches}
- rust-gstreamer-sys
ExclusiveArch: %{rust_arches}
- rust-gstreamer-video
ExclusiveArch: %{rust_arches}
- rust-gstreamer-video-sys
ExclusiveArch: %{rust_arches}
- rust-gzip-header
ExclusiveArch: %{rust_arches}
- rust-half
ExclusiveArch: %{rust_arches}
- rust-hamcrest2
ExclusiveArch: %{rust_arches}
- rust-hamming
ExclusiveArch: %{rust_arches}
- rust-handlebars
ExclusiveArch: %{rust_arches}
- rust-hashbrown
ExclusiveArch: %{rust_arches}
- rust-hashbrown0.11
ExclusiveArch: %{rust_arches}
- rust-hashbrown0.9
ExclusiveArch: %{rust_arches}
- rust-hashlink
ExclusiveArch: %{rust_arches}
- rust-headers
ExclusiveArch: %{rust_arches}
- rust-headers-core
ExclusiveArch: %{rust_arches}
- rust-heapsize
ExclusiveArch: %{rust_arches}
- rust-heatseeker
ExclusiveArch: %{rust_arches}
- rust-heck
ExclusiveArch: %{rust_arches}
- rust-heck0.3
ExclusiveArch: %{rust_arches}
- rust-helvum
ExclusiveArch: %{rust_arches}
- rust-hex
ExclusiveArch: %{rust_arches}
- rust-hex-literal
ExclusiveArch: %{rust_arches}
- rust-hex-literal-impl
ExclusiveArch: %{rust_arches}
- rust-hex-literal0.2
ExclusiveArch: %{rust_arches}
- rust-hexyl
ExclusiveArch: %{rust_arches}
- rust-hidapi
ExclusiveArch: %{rust_arches}
- rust-hkdf
ExclusiveArch: %{rust_arches}
- rust-hkdf0.11
ExclusiveArch: %{rust_arches}
- rust-hmac
ExclusiveArch: %{rust_arches}
- rust-hmac0.11
ExclusiveArch: %{rust_arches}
- rust-home
ExclusiveArch: %{rust_arches}
- rust-hostname
ExclusiveArch: %{rust_arches}
- rust-hostname-validator
ExclusiveArch: %{rust_arches}
- rust-html2pango
ExclusiveArch: %{rust_arches}
- rust-http-body
ExclusiveArch: %{rust_arches}
- rust-http0.1
ExclusiveArch: %{rust_arches}
- rust-httparse
ExclusiveArch: %{rust_arches}
- rust-httpdate
ExclusiveArch: %{rust_arches}
- rust-human-panic
ExclusiveArch: %{rust_arches}
- rust-human-sort
ExclusiveArch: %{rust_arches}
- rust-humansize
ExclusiveArch: %{rust_arches}
- rust-humantime
ExclusiveArch: %{rust_arches}
- rust-humantime-serde
ExclusiveArch: %{rust_arches}
- rust-humantime1
ExclusiveArch: %{rust_arches}
- rust-hyper-rustls
ExclusiveArch: %{rust_arches}
- rust-hyper-tls
ExclusiveArch: %{rust_arches}
- rust-hyperfine
ExclusiveArch: %{rust_arches}
- rust-hyperlocal
ExclusiveArch: %{rust_arches}
- rust-i18n-config
ExclusiveArch: %{rust_arches}
- rust-i18n-embed
ExclusiveArch: %{rust_arches}
- rust-i18n-embed-fl
ExclusiveArch: %{rust_arches}
- rust-i18n-embed-impl
ExclusiveArch: %{rust_arches}
- rust-i3ipc
ExclusiveArch: %{rust_arches}
- rust-iai
ExclusiveArch: %{rust_arches}
- rust-id-arena
ExclusiveArch: %{rust_arches}
- rust-ident_case
ExclusiveArch: %{rust_arches}
- rust-idna0.1
ExclusiveArch: %{rust_arches}
- rust-ifcfg-devname
ExclusiveArch: %{rust_arches}
- rust-ignition-config
ExclusiveArch: %{rust_arches}
- rust-ignore
ExclusiveArch: %{rust_arches}
- rust-im-rc
ExclusiveArch: %{rust_arches}
- rust-image
ExclusiveArch: %{rust_arches}
- rust-image0.23
ExclusiveArch: %{rust_arches}
- rust-imgref
ExclusiveArch: %{rust_arches}
- rust-impls
ExclusiveArch: %{rust_arches}
- rust-indenter
ExclusiveArch: %{rust_arches}
- rust-indicatif
ExclusiveArch: %{rust_arches}
- rust-indicatif0.15
ExclusiveArch: %{rust_arches}
- rust-infer
ExclusiveArch: %{rust_arches}
- rust-inferno
ExclusiveArch: %{rust_arches}
- rust-inflate
ExclusiveArch: %{rust_arches}
- rust-inlinable_string
ExclusiveArch: %{rust_arches}
- rust-inotify
ExclusiveArch: %{rust_arches}
- rust-inotify-sys
ExclusiveArch: %{rust_arches}
- rust-inout
ExclusiveArch: %{rust_arches}
- rust-input_buffer
ExclusiveArch: %{rust_arches}
- rust-insta
ExclusiveArch: %{rust_arches}
- rust-instant
ExclusiveArch: %{rust_arches}
- rust-integer-encoding
ExclusiveArch: %{rust_arches}
- rust-interpolate_name
ExclusiveArch: %{rust_arches}
- rust-intervaltree
ExclusiveArch: %{rust_arches}
- rust-intl-memoizer
ExclusiveArch: %{rust_arches}
- rust-invalidstring
ExclusiveArch: %{rust_arches}
- rust-inventory
ExclusiveArch: %{rust_arches}
- rust-inventory-impl
ExclusiveArch: %{rust_arches}
- rust-inventory0.1
ExclusiveArch: %{rust_arches}
- rust-ioctl-rs
ExclusiveArch: %{rust_arches}
- rust-iocuddle
ExclusiveArch: %{rust_arches}
- rust-iovec
ExclusiveArch: %{rust_arches}
- rust-ipnetwork
ExclusiveArch: %{rust_arches}
- rust-ipnetwork0.17
ExclusiveArch: %{rust_arches}
- rust-iptables
ExclusiveArch: %{rust_arches}
- rust-is_ci
ExclusiveArch: %{rust_arches}
- rust-is_debug
ExclusiveArch: %{rust_arches}
- rust-is_executable
ExclusiveArch: %{rust_arches}
- rust-iso8601
ExclusiveArch: %{rust_arches}
- rust-iter-read
ExclusiveArch: %{rust_arches}
- rust-itertools
ExclusiveArch: %{rust_arches}
- rust-itertools-num
ExclusiveArch: %{rust_arches}
- rust-itertools0.8
ExclusiveArch: %{rust_arches}
- rust-itertools0.9
ExclusiveArch: %{rust_arches}
- rust-itoa0.4
ExclusiveArch: %{rust_arches}
- rust-ivf
ExclusiveArch: %{rust_arches}
- rust-jobserver
ExclusiveArch: %{rust_arches}
- rust-josekit
ExclusiveArch: %{rust_arches}
- rust-jpeg-decoder
ExclusiveArch: %{rust_arches}
- rust-jpeg-decoder0.1
ExclusiveArch: %{rust_arches}
- rust-json
ExclusiveArch: %{rust_arches}
- rust-json5
ExclusiveArch: %{rust_arches}
- rust-just
ExclusiveArch: %{rust_arches}
- rust-k9
ExclusiveArch: %{rust_arches}
- rust-khronos_api
ExclusiveArch: %{rust_arches}
- rust-konst
ExclusiveArch: %{rust_arches}
- rust-konst_macro_rules
ExclusiveArch: %{rust_arches}
- rust-konst_proc_macros
ExclusiveArch: %{rust_arches}
- rust-krunvm
ExclusiveArch: x86_64 aarch64
- rust-kstring
ExclusiveArch: %{rust_arches}
- rust-kv-log-macro
ExclusiveArch: %{rust_arches}
- rust-kvm-bindings
ExclusiveArch: %{rust_arches}
- rust-kvm-ioctls
ExclusiveArch: x86_64 aarch64
- rust-lalrpop
ExclusiveArch: %{rust_arches}
- rust-lalrpop-util
ExclusiveArch: %{rust_arches}
- rust-language-tags
ExclusiveArch: %{rust_arches}
- rust-lazy_static
ExclusiveArch: %{rust_arches}
- rust-lazycell
ExclusiveArch: %{rust_arches}
- rust-leb128
ExclusiveArch: %{rust_arches}
- rust-lebe
ExclusiveArch: %{rust_arches}
- rust-lev_distance
ExclusiveArch: %{rust_arches}
- rust-lexiclean
ExclusiveArch: %{rust_arches}
- rust-lexopt
ExclusiveArch: %{rust_arches}
- rust-libblkid-rs
ExclusiveArch: %{rust_arches}
- rust-libblkid-rs-sys
ExclusiveArch: %{rust_arches}
- rust-libbpf-cargo
ExclusiveArch: %{rust_arches}
- rust-libcryptsetup-rs
ExclusiveArch: %{rust_arches}
- rust-libcryptsetup-rs-sys
ExclusiveArch: %{rust_arches}
- rust-libdbus-sys
ExclusiveArch: %{rust_arches}
- rust-libflate
ExclusiveArch: %{rust_arches}
- rust-libflate_lz77
ExclusiveArch: %{rust_arches}
- rust-libgit2-sys
ExclusiveArch: %{rust_arches}
- rust-libhandy
ExclusiveArch: %{rust_arches}
- rust-libhandy-sys
ExclusiveArch: %{rust_arches}
- rust-libmount
ExclusiveArch: %{rust_arches}
- rust-liboverdrop
ExclusiveArch: %{rust_arches}
- rust-libpulse-binding
ExclusiveArch: %{rust_arches}
- rust-libpulse-sys
ExclusiveArch: %{rust_arches}
- rust-libseccomp-sys
ExclusiveArch: %{rust_arches}
- rust-libslirp
ExclusiveArch: %{rust_arches}
- rust-libslirp-sys
ExclusiveArch: %{rust_arches}
- rust-libsodium-sys
ExclusiveArch: %{rust_arches}
- rust-libspa
ExclusiveArch: %{rust_arches}
- rust-libspa-sys
ExclusiveArch: %{rust_arches}
- rust-libsqlite3-sys
ExclusiveArch: %{rust_arches}
- rust-libssh2-sys
ExclusiveArch: %{rust_arches}
- rust-libsystemd
ExclusiveArch: %{rust_arches}
- rust-libudev-sys
ExclusiveArch: %{rust_arches}
- rust-libxml
ExclusiveArch: %{rust_arches}
- rust-libz-sys
ExclusiveArch: %{rust_arches}
- rust-line-wrap
ExclusiveArch: %{rust_arches}
- rust-linked-hash-map
ExclusiveArch: %{rust_arches}
- rust-linkify
ExclusiveArch: %{rust_arches}
- rust-lino
ExclusiveArch: %{rust_arches}
- rust-linreg
ExclusiveArch: %{rust_arches}
- rust-linux_proc
ExclusiveArch: %{rust_arches}
- rust-listenfd
ExclusiveArch: %{rust_arches}
- rust-lmdb
ExclusiveArch: %{rust_arches}
- rust-lmdb-sys
ExclusiveArch: %{rust_arches}
- rust-local-channel
ExclusiveArch: %{rust_arches}
- rust-local-encoding
ExclusiveArch: %{rust_arches}
- rust-local-waker
ExclusiveArch: %{rust_arches}
- rust-local_ipaddress
ExclusiveArch: %{rust_arches}
- rust-locale
ExclusiveArch: %{rust_arches}
- rust-locale_config
ExclusiveArch: %{rust_arches}
- rust-lock_api
ExclusiveArch: %{rust_arches}
- rust-log
ExclusiveArch: %{rust_arches}
- rust-log-mdc
ExclusiveArch: %{rust_arches}
- rust-log-panics
ExclusiveArch: %{rust_arches}
- rust-log0.3
ExclusiveArch: %{rust_arches}
- rust-loopdev
ExclusiveArch: %{rust_arches}
- rust-lru-cache
ExclusiveArch: %{rust_arches}
- rust-lscolors
ExclusiveArch: %{rust_arches}
- rust-lsd
ExclusiveArch: %{rust_arches}
- rust-mac
ExclusiveArch: %{rust_arches}
- rust-mac_address
ExclusiveArch: %{rust_arches}
- rust-madvr_parse
ExclusiveArch: %{rust_arches}
- rust-maildir
ExclusiveArch: %{rust_arches}
- rust-mailparse
ExclusiveArch: %{rust_arches}
- rust-man
ExclusiveArch: %{rust_arches}
- rust-maplit
ExclusiveArch: %{rust_arches}
- rust-markup5ever
ExclusiveArch: %{rust_arches}
- rust-markup5ever_rcdom
ExclusiveArch: %{rust_arches}
- rust-match_cfg
ExclusiveArch: %{rust_arches}
- rust-matches
ExclusiveArch: %{rust_arches}
- rust-matrixcompare
ExclusiveArch: %{rust_arches}
- rust-matrixcompare-core
ExclusiveArch: %{rust_arches}
- rust-matrixcompare-mock
ExclusiveArch: %{rust_arches}
- rust-matrixmultiply
ExclusiveArch: %{rust_arches}
- rust-maybe-uninit
ExclusiveArch: %{rust_arches}
- rust-mbox
ExclusiveArch: %{rust_arches}
- rust-mbrman
ExclusiveArch: %{rust_arches}
- rust-md-5
ExclusiveArch: %{rust_arches}
- rust-md-5_0.9
ExclusiveArch: %{rust_arches}
- rust-md5
ExclusiveArch: %{rust_arches}
- rust-memcached-rs
ExclusiveArch: %{rust_arches}
- rust-memchr
ExclusiveArch: %{rust_arches}
- rust-memmap
ExclusiveArch: %{rust_arches}
- rust-memmap2_0.3
ExclusiveArch: %{rust_arches}
- rust-memmem
ExclusiveArch: %{rust_arches}
- rust-memoffset0.5
ExclusiveArch: %{rust_arches}
- rust-memsec
ExclusiveArch: %{rust_arches}
- rust-micro-timer
ExclusiveArch: %{rust_arches}
- rust-micro-timer-macros
ExclusiveArch: %{rust_arches}
- rust-mime
ExclusiveArch: %{rust_arches}
- rust-minimad
ExclusiveArch: %{rust_arches}
- rust-minimal-lexical
ExclusiveArch: %{rust_arches}
- rust-miniz_oxide
ExclusiveArch: %{rust_arches}
- rust-miniz_oxide0.3
ExclusiveArch: %{rust_arches}
- rust-mint
ExclusiveArch: %{rust_arches}
- rust-mio-extras
ExclusiveArch: %{rust_arches}
- rust-mio-uds
ExclusiveArch: %{rust_arches}
- rust-mio0.6
ExclusiveArch: %{rust_arches}
- rust-mio0.7
ExclusiveArch: %{rust_arches}
- rust-mockall_double
ExclusiveArch: %{rust_arches}
- rust-mockito
ExclusiveArch: %{rust_arches}
- rust-mptcp-pm
ExclusiveArch: %{rust_arches}
- rust-multer
ExclusiveArch: %{rust_arches}
- rust-multimap
ExclusiveArch: %{rust_arches}
- rust-mustache
ExclusiveArch: %{rust_arches}
- rust-nalgebra-macros
ExclusiveArch: %{rust_arches}
- rust-nanorand
ExclusiveArch: %{rust_arches}
- rust-nasm-rs
ExclusiveArch: %{rust_arches}
- rust-natord
ExclusiveArch: %{rust_arches}
- rust-navi
ExclusiveArch: %{rust_arches}
- rust-nb-connect
ExclusiveArch: %{rust_arches}
- rust-ncurses
ExclusiveArch: %{rust_arches}
- rust-netlink-packet-core
ExclusiveArch: %{rust_arches}
- rust-netlink-packet-generic
ExclusiveArch: %{rust_arches}
- rust-netlink-packet-route
ExclusiveArch: %{rust_arches}
- rust-netlink-packet-utils
ExclusiveArch: %{rust_arches}
- rust-netlink-proto
ExclusiveArch: %{rust_arches}
- rust-netlink-sys
ExclusiveArch: %{rust_arches}
- rust-netmap_sys
ExclusiveArch: %{rust_arches}
- rust-netstat2
ExclusiveArch: %{rust_arches}
- rust-nettle
ExclusiveArch: %{rust_arches}
- rust-nettle-sys
ExclusiveArch: %{rust_arches}
- rust-new_debug_unreachable
ExclusiveArch: %{rust_arches}
- rust-nix
ExclusiveArch: %{rust_arches}
- rust-nix0.14
ExclusiveArch: %{rust_arches}
- rust-nix0.17
ExclusiveArch: %{rust_arches}
- rust-nix0.18
ExclusiveArch: %{rust_arches}
- rust-nix0.20
ExclusiveArch: %{rust_arches}
- rust-nix0.22
ExclusiveArch: %{rust_arches}
- rust-nix0.23
ExclusiveArch: %{rust_arches}
- rust-nodrop
ExclusiveArch: %{rust_arches}
- rust-nohash-hasher
ExclusiveArch: %{rust_arches}
- rust-nom
ExclusiveArch: %{rust_arches}
- rust-nom4
ExclusiveArch: %{rust_arches}
- rust-nom5
ExclusiveArch: %{rust_arches}
- rust-noop_proc_macro
ExclusiveArch: %{rust_arches}
- rust-normalize-line-endings
ExclusiveArch: %{rust_arches}
- rust-notify
ExclusiveArch: %{rust_arches}
- rust-notify-rust
ExclusiveArch: %{rust_arches}
- rust-nu-ansi-term
ExclusiveArch: %{rust_arches}
- rust-nu-engine
ExclusiveArch: %{rust_arches}
- rust-nu-glob
ExclusiveArch: %{rust_arches}
- rust-nu-json
ExclusiveArch: %{rust_arches}
- rust-nu-parser
ExclusiveArch: %{rust_arches}
- rust-nu-path
ExclusiveArch: %{rust_arches}
- rust-nu-plugin
ExclusiveArch: %{rust_arches}
- rust-nu-protocol
ExclusiveArch: %{rust_arches}
- rust-nu-system
ExclusiveArch: %{rust_arches}
- rust-nu-utils
ExclusiveArch: %{rust_arches}
- rust-num
ExclusiveArch: %{rust_arches}
- rust-num-bigint
ExclusiveArch: %{rust_arches}
- rust-num-bigint-dig
ExclusiveArch: %{rust_arches}
- rust-num-bigint0.3
ExclusiveArch: %{rust_arches}
- rust-num-complex
ExclusiveArch: %{rust_arches}
- rust-num-complex0.3
ExclusiveArch: %{rust_arches}
- rust-num-derive
ExclusiveArch: %{rust_arches}
- rust-num-integer
ExclusiveArch: %{rust_arches}
- rust-num-iter
ExclusiveArch: %{rust_arches}
- rust-num-rational
ExclusiveArch: %{rust_arches}
- rust-num-rational0.3
ExclusiveArch: %{rust_arches}
- rust-num-traits
ExclusiveArch: %{rust_arches}
- rust-num-traits0.1
ExclusiveArch: %{rust_arches}
- rust-num0.3
ExclusiveArch: %{rust_arches}
- rust-num_enum
ExclusiveArch: %{rust_arches}
- rust-num_enum_derive
ExclusiveArch: %{rust_arches}
- rust-num_threads
ExclusiveArch: %{rust_arches}
- rust-number_prefix
ExclusiveArch: %{rust_arches}
- rust-numtoa
ExclusiveArch: %{rust_arches}
- rust-oauth2
ExclusiveArch: %{rust_arches}
- rust-object
ExclusiveArch: %{rust_arches}
- rust-oid
ExclusiveArch: %{rust_arches}
- rust-onig
ExclusiveArch: %{rust_arches}
- rust-onig_sys
ExclusiveArch: %{rust_arches}
- rust-opaque-debug
ExclusiveArch: %{rust_arches}
- rust-openat
ExclusiveArch: %{rust_arches}
- rust-openat-ext
ExclusiveArch: %{rust_arches}
- rust-opener
ExclusiveArch: %{rust_arches}
- rust-openssh-keys
ExclusiveArch: %{rust_arches}
- rust-openssl-kdf
ExclusiveArch: %{rust_arches}
- rust-openssl-macros
ExclusiveArch: %{rust_arches}
- rust-openssl-probe
ExclusiveArch: %{rust_arches}
- rust-option-operations
ExclusiveArch: %{rust_arches}
- rust-ord_subset
ExclusiveArch: %{rust_arches}
- rust-ordered-float2
ExclusiveArch: %{rust_arches}
- rust-ordered-stream
ExclusiveArch: %{rust_arches}
- rust-os-release
ExclusiveArch: %{rust_arches}
- rust-os_display
ExclusiveArch: %{rust_arches}
- rust-os_info
ExclusiveArch: %{rust_arches}
- rust-os_pipe0.9
ExclusiveArch: %{rust_arches}
- rust-os_type
ExclusiveArch: %{rust_arches}
- rust-osmesa-sys
ExclusiveArch: %{rust_arches}
- rust-ouroboros
ExclusiveArch: %{rust_arches}
- rust-ouroboros_macro
ExclusiveArch: %{rust_arches}
- rust-overload
ExclusiveArch: %{rust_arches}
- rust-owning_ref
ExclusiveArch: %{rust_arches}
- rust-owo-colors
ExclusiveArch: %{rust_arches}
- rust-packaging
ExclusiveArch: %{rust_arches}
- rust-pad
ExclusiveArch: %{rust_arches}
- rust-page_size
ExclusiveArch: %{rust_arches}
- rust-pager
ExclusiveArch: %{rust_arches}
- rust-palette_derive
ExclusiveArch: %{rust_arches}
- rust-pam
ExclusiveArch: %{rust_arches}
- rust-pam-sys
ExclusiveArch: %{rust_arches}
- rust-pancurses
ExclusiveArch: %{rust_arches}
- rust-paris
ExclusiveArch: %{rust_arches}
- rust-parking
ExclusiveArch: %{rust_arches}
- rust-parking_lot
ExclusiveArch: %{rust_arches}
- rust-parking_lot0.11
ExclusiveArch: %{rust_arches}
- rust-parse-zoneinfo
ExclusiveArch: %{rust_arches}
- rust-parsec-client
ExclusiveArch: %{rust_arches}
- rust-parsec-interface
ExclusiveArch: %{rust_arches}
- rust-partition-identity
ExclusiveArch: %{rust_arches}
- rust-passwd
ExclusiveArch: %{rust_arches}
- rust-password-hash
ExclusiveArch: %{rust_arches}
- rust-path-slash
ExclusiveArch: %{rust_arches}
- rust-pathdiff
ExclusiveArch: %{rust_arches}
- rust-pathfinder_geometry
ExclusiveArch: %{rust_arches}
- rust-pathfinder_simd
ExclusiveArch: %{rust_arches}
- rust-pathsearch
ExclusiveArch: %{rust_arches}
- rust-pbkdf2
ExclusiveArch: %{rust_arches}
- rust-pcap
ExclusiveArch: %{rust_arches}
- rust-pcre2
ExclusiveArch: %{rust_arches}
- rust-pcre2-sys
ExclusiveArch: %{rust_arches}
- rust-peeking_take_while
ExclusiveArch: %{rust_arches}
- rust-peg
ExclusiveArch: %{rust_arches}
- rust-peg-macros
ExclusiveArch: %{rust_arches}
- rust-peg-runtime
ExclusiveArch: %{rust_arches}
- rust-peg0.5
ExclusiveArch: %{rust_arches}
- rust-pem-rfc7468
ExclusiveArch: %{rust_arches}
- rust-pem0.8
ExclusiveArch: %{rust_arches}
- rust-percent-encoding
ExclusiveArch: %{rust_arches}
- rust-percent-encoding1
ExclusiveArch: %{rust_arches}
- rust-peresil
ExclusiveArch: %{rust_arches}
- rust-permutohedron
ExclusiveArch: %{rust_arches}
- rust-pest
ExclusiveArch: %{rust_arches}
- rust-pest_derive
ExclusiveArch: %{rust_arches}
- rust-pest_generator
ExclusiveArch: %{rust_arches}
- rust-pest_meta
ExclusiveArch: %{rust_arches}
- rust-petgraph
ExclusiveArch: %{rust_arches}
- rust-petgraph0.5
ExclusiveArch: %{rust_arches}
- rust-phf
ExclusiveArch: %{rust_arches}
- rust-phf0.8
ExclusiveArch: %{rust_arches}
- rust-phf_codegen
ExclusiveArch: %{rust_arches}
- rust-phf_macros
ExclusiveArch: %{rust_arches}
- rust-phf_macros0.8
ExclusiveArch: %{rust_arches}
- rust-phf_shared
ExclusiveArch: %{rust_arches}
- rust-phf_shared0.8
ExclusiveArch: %{rust_arches}
- rust-picky-asn1
ExclusiveArch: %{rust_arches}
- rust-picky-asn1-der
ExclusiveArch: %{rust_arches}
- rust-picky-asn1-x509
ExclusiveArch: %{rust_arches}
- rust-pico-args
ExclusiveArch: %{rust_arches}
- rust-pid
ExclusiveArch: %{rust_arches}
- rust-pin-project
ExclusiveArch: %{rust_arches}
- rust-pin-project-internal
ExclusiveArch: %{rust_arches}
- rust-pin-project-internal0.4
ExclusiveArch: %{rust_arches}
- rust-pin-project-lite
ExclusiveArch: %{rust_arches}
- rust-pin-project-lite0.1
ExclusiveArch: %{rust_arches}
- rust-pin-project0.4
ExclusiveArch: %{rust_arches}
- rust-pin-utils
ExclusiveArch: %{rust_arches}
- rust-pipewire
ExclusiveArch: %{rust_arches}
- rust-pipewire-sys
ExclusiveArch: %{rust_arches}
- rust-pkcs1
ExclusiveArch: %{rust_arches}
- rust-pkcs5
ExclusiveArch: %{rust_arches}
- rust-pkcs8
ExclusiveArch: %{rust_arches}
- rust-plain
ExclusiveArch: %{rust_arches}
- rust-platform-info
ExclusiveArch: %{rust_arches}
- rust-plist
ExclusiveArch: %{rust_arches}
- rust-plotlib
ExclusiveArch: %{rust_arches}
- rust-pnet_base
ExclusiveArch: %{rust_arches}
- rust-pnet_datalink
ExclusiveArch: %{rust_arches}
- rust-pnet_sys
ExclusiveArch: %{rust_arches}
- rust-png
ExclusiveArch: %{rust_arches}
- rust-png0.16
ExclusiveArch: %{rust_arches}
- rust-podio
ExclusiveArch: %{rust_arches}
- rust-polyval
ExclusiveArch: %{rust_arches}
- rust-pom
ExclusiveArch: %{rust_arches}
- rust-pq-sys
ExclusiveArch: %{rust_arches}
- rust-precomputed-hash
ExclusiveArch: %{rust_arches}
- rust-predicates
ExclusiveArch: %{rust_arches}
- rust-predicates1
ExclusiveArch: %{rust_arches}
- rust-pretty-bytes
ExclusiveArch: %{rust_arches}
- rust-pretty-git-prompt
ExclusiveArch: %{rust_arches}
- rust-pretty-hex
ExclusiveArch: %{rust_arches}
- rust-pretty_assertions
ExclusiveArch: %{rust_arches}
- rust-pretty_assertions0.6
ExclusiveArch: %{rust_arches}
- rust-pretty_assertions0.7
ExclusiveArch: %{rust_arches}
- rust-pretty_env_logger
ExclusiveArch: %{rust_arches}
- rust-prettytable-rs
ExclusiveArch: %{rust_arches}
- rust-primal-bit
ExclusiveArch: %{rust_arches}
- rust-primal-check
ExclusiveArch: %{rust_arches}
- rust-primal-estimate
ExclusiveArch: %{rust_arches}
- rust-proc-macro-crate
ExclusiveArch: %{rust_arches}
- rust-proc-macro-crate0.1
ExclusiveArch: %{rust_arches}
- rust-proc-macro-error
ExclusiveArch: %{rust_arches}
- rust-proc-macro-error-attr
ExclusiveArch: %{rust_arches}
- rust-proc-macro-hack
ExclusiveArch: %{rust_arches}
- rust-proc-macro2-0.4
ExclusiveArch: %{rust_arches}
- rust-proc-maps
ExclusiveArch: %{rust_arches}
- rust-proc-mounts
ExclusiveArch: %{rust_arches}
- rust-process_control
ExclusiveArch: %{rust_arches}
- rust-procfs
ExclusiveArch: %{rust_arches}
- rust-procfs0.9
ExclusiveArch: %{rust_arches}
- rust-procs
ExclusiveArch: %{rust_arches}
- rust-progress-streams
ExclusiveArch: %{rust_arches}
- rust-prometheus
ExclusiveArch: %{rust_arches}
- rust-proptest
ExclusiveArch: %{rust_arches}
- rust-proptest0.10
ExclusiveArch: %{rust_arches}
- rust-prost
ExclusiveArch: %{rust_arches}
- rust-prost-build
ExclusiveArch: %{rust_arches}
- rust-prost-derive
ExclusiveArch: %{rust_arches}
- rust-prost-derive0.8
ExclusiveArch: %{rust_arches}
- rust-prost-types
ExclusiveArch: %{rust_arches}
- rust-prost0.8
ExclusiveArch: %{rust_arches}
- rust-protobuf
ExclusiveArch: %{rust_arches}
- rust-protobuf-codegen
ExclusiveArch: %{rust_arches}
- rust-protobuf-codegen-pure
ExclusiveArch: %{rust_arches}
- rust-protoc
ExclusiveArch: %{rust_arches}
- rust-psa-crypto
ExclusiveArch: %{rust_arches}
- rust-psa-crypto-sys
ExclusiveArch: %{rust_arches}
- rust-psl-types
ExclusiveArch: %{rust_arches}
- rust-psm
ExclusiveArch: %{rust_arches}
- rust-ptr_meta
ExclusiveArch: %{rust_arches}
- rust-ptr_meta_derive
ExclusiveArch: %{rust_arches}
- rust-pulse
ExclusiveArch: %{rust_arches}
- rust-pure-rust-locales
ExclusiveArch: %{rust_arches}
- rust-pwd
ExclusiveArch: %{rust_arches}
- rust-pyo3
ExclusiveArch: %{rust_arches}
- rust-pyo3-build-config
ExclusiveArch: %{rust_arches}
- rust-pyo3-macros
ExclusiveArch: %{rust_arches}
- rust-pyo3-macros-backend
ExclusiveArch: %{rust_arches}
- rust-python-launcher
ExclusiveArch: %{rust_arches}
- rust-qstring
ExclusiveArch: %{rust_arches}
- rust-quantiles
ExclusiveArch: %{rust_arches}
- rust-quick-error
ExclusiveArch: %{rust_arches}
- rust-quick-error1
ExclusiveArch: %{rust_arches}
- rust-quick-xml0.22
ExclusiveArch: %{rust_arches}
- rust-quickcheck
ExclusiveArch: %{rust_arches}
- rust-quickcheck0.6
ExclusiveArch: %{rust_arches}
- rust-quickcheck0.9
ExclusiveArch: %{rust_arches}
- rust-quickcheck_macros
ExclusiveArch: %{rust_arches}
- rust-quicli
ExclusiveArch: %{rust_arches}
- rust-quote0.3
ExclusiveArch: %{rust_arches}
- rust-quote0.6
ExclusiveArch: %{rust_arches}
- rust-r2d2
ExclusiveArch: %{rust_arches}
- rust-radium
ExclusiveArch: %{rust_arches}
- rust-rand
ExclusiveArch: %{rust_arches}
- rust-rand0.4
ExclusiveArch: %{rust_arches}
- rust-rand0.5
ExclusiveArch: %{rust_arches}
- rust-rand0.6
ExclusiveArch: %{rust_arches}
- rust-rand0.7
ExclusiveArch: %{rust_arches}
- rust-rand_chacha
ExclusiveArch: %{rust_arches}
- rust-rand_chacha0.1
ExclusiveArch: %{rust_arches}
- rust-rand_chacha0.2
ExclusiveArch: %{rust_arches}
- rust-rand_core
ExclusiveArch: %{rust_arches}
- rust-rand_core0.3
ExclusiveArch: %{rust_arches}
- rust-rand_core0.4
ExclusiveArch: %{rust_arches}
- rust-rand_core0.5
ExclusiveArch: %{rust_arches}
- rust-rand_distr
ExclusiveArch: %{rust_arches}
- rust-rand_hc
ExclusiveArch: %{rust_arches}
- rust-rand_hc0.1
ExclusiveArch: %{rust_arches}
- rust-rand_isaac
ExclusiveArch: %{rust_arches}
- rust-rand_isaac0.1
ExclusiveArch: %{rust_arches}
- rust-rand_jitter
ExclusiveArch: %{rust_arches}
- rust-rand_jitter0.1
ExclusiveArch: %{rust_arches}
- rust-rand_os
ExclusiveArch: %{rust_arches}
- rust-rand_os0.1
ExclusiveArch: %{rust_arches}
- rust-rand_pcg
ExclusiveArch: %{rust_arches}
- rust-rand_pcg0.1
ExclusiveArch: %{rust_arches}
- rust-rand_pcg0.2
ExclusiveArch: %{rust_arches}
- rust-rand_xorshift
ExclusiveArch: %{rust_arches}
- rust-rand_xorshift0.1
ExclusiveArch: %{rust_arches}
- rust-rand_xorshift0.2
ExclusiveArch: %{rust_arches}
- rust-rand_xoshiro
ExclusiveArch: %{rust_arches}
- rust-random
ExclusiveArch: %{rust_arches}
- rust-random-fast-rng
ExclusiveArch: %{rust_arches}
- rust-random-trait
ExclusiveArch: %{rust_arches}
- rust-randomize
ExclusiveArch: %{rust_arches}
- rust-rav1e
ExclusiveArch: %{rust_arches}
- rust-raw-window-handle
ExclusiveArch: %{rust_arches}
- rust-rawpointer
ExclusiveArch: %{rust_arches}
- rust-rawslice
ExclusiveArch: %{rust_arches}
- rust-rbspy
ExclusiveArch: %{rust_arches}
- rust-rbspy-ruby-structs
ExclusiveArch: %{rust_arches}
- rust-rbspy-testdata
ExclusiveArch: %{rust_arches}
- rust-rctree
ExclusiveArch: %{rust_arches}
- rust-rd-agent
ExclusiveArch: %{rust_arches}
- rust-rd-agent-intf
ExclusiveArch: %{rust_arches}
- rust-rd-hashd
ExclusiveArch: %{rust_arches}
- rust-rd-hashd-intf
ExclusiveArch: %{rust_arches}
- rust-rd-util
ExclusiveArch: %{rust_arches}
- rust-read-process-memory
ExclusiveArch: %{rust_arches}
- rust-read_input
ExclusiveArch: %{rust_arches}
- rust-readwrite
ExclusiveArch: %{rust_arches}
- rust-regex-automata
ExclusiveArch: %{rust_arches}
- rust-region
ExclusiveArch: %{rust_arches}
- rust-remoteprocess
ExclusiveArch: %{rust_arches}
- rust-remove_dir_all
ExclusiveArch: %{rust_arches}
- rust-rend
ExclusiveArch: %{rust_arches}
- rust-reqwest
ExclusiveArch: %{rust_arches}
- rust-resctl-bench
ExclusiveArch: %{rust_arches}
- rust-resctl-bench-intf
ExclusiveArch: %{rust_arches}
- rust-resctl-demo
ExclusiveArch: %{rust_arches}
- rust-resize
ExclusiveArch: %{rust_arches}
- rust-resolv-conf
ExclusiveArch: %{rust_arches}
- rust-retry
ExclusiveArch: %{rust_arches}
- rust-rgb
ExclusiveArch: %{rust_arches}
- rust-ring
ExclusiveArch: %{rust_arches}
- rust-ripgrep
ExclusiveArch: %{rust_arches}
- rust-rkyv
ExclusiveArch: %{rust_arches}
- rust-rkyv_derive
ExclusiveArch: %{rust_arches}
- rust-rle-decode-fast
ExclusiveArch: %{rust_arches}
- rust-rmp
ExclusiveArch: %{rust_arches}
- rust-rmp-serde
ExclusiveArch: %{rust_arches}
- rust-rmpv
ExclusiveArch: %{rust_arches}
- rust-roff
ExclusiveArch: %{rust_arches}
- rust-ron
ExclusiveArch: %{rust_arches}
- rust-rpassword
ExclusiveArch: %{rust_arches}
- rust-rpick
ExclusiveArch: %{rust_arches}
- rust-rsa
ExclusiveArch: %{rust_arches}
- rust-rspec
ExclusiveArch: %{rust_arches}
- rust-rtnetlink
ExclusiveArch: %{rust_arches}
- rust-rusqlite
ExclusiveArch: %{rust_arches}
- rust-rust_decimal
ExclusiveArch: %{rust_arches}
- rust-rustbus_derive
ExclusiveArch: %{rust_arches}
- rust-rustc-hash
ExclusiveArch: %{rust_arches}
- rust-rustc-serialize
ExclusiveArch: %{rust_arches}
- rust-rustc-test
ExclusiveArch: %{rust_arches}
- rust-rustc_tools_util
ExclusiveArch: %{rust_arches}
- rust-rustc_version
ExclusiveArch: %{rust_arches}
- rust-rustc_version0.3
ExclusiveArch: %{rust_arches}
- rust-rustcat
ExclusiveArch: %{rust_arches}
- rust-rustfix
ExclusiveArch: %{rust_arches}
- rust-rustls-native-certs
ExclusiveArch: %{rust_arches}
- rust-rustls-pemfile
ExclusiveArch: %{rust_arches}
- rust-rusty-fork
ExclusiveArch: %{rust_arches}
- rust-rustyline
ExclusiveArch: %{rust_arches}
- rust-rustyline-derive
ExclusiveArch: %{rust_arches}
- rust-safe_arch
ExclusiveArch: %{rust_arches}
- rust-safemem
ExclusiveArch: %{rust_arches}
- rust-salsa20
ExclusiveArch: %{rust_arches}
- rust-same-file
ExclusiveArch: %{rust_arches}
- rust-scan_fmt
ExclusiveArch: %{rust_arches}
- rust-scheduled-thread-pool
ExclusiveArch: %{rust_arches}
- rust-schemafy_core
ExclusiveArch: %{rust_arches}
- rust-schemafy_lib
ExclusiveArch: %{rust_arches}
- rust-scoped_threadpool
ExclusiveArch: %{rust_arches}
- rust-scopeguard
ExclusiveArch: %{rust_arches}
- rust-scopetime
ExclusiveArch: %{rust_arches}
- rust-scratch
ExclusiveArch: %{rust_arches}
- rust-scroll
ExclusiveArch: %{rust_arches}
- rust-scroll_derive
ExclusiveArch: %{rust_arches}
- rust-scrypt
ExclusiveArch: %{rust_arches}
- rust-sct
ExclusiveArch: %{rust_arches}
- rust-sd
ExclusiveArch: %{rust_arches}
- rust-sd-notify
ExclusiveArch: %{rust_arches}
- rust-seahash
ExclusiveArch: %{rust_arches}
- rust-seahash3
ExclusiveArch: %{rust_arches}
- rust-secrecy
ExclusiveArch: %{rust_arches}
- rust-secret-service
ExclusiveArch: %{rust_arches}
- rust-selectors
ExclusiveArch: %{rust_arches}
- rust-self_cell
ExclusiveArch: %{rust_arches}
- rust-semver-parser
ExclusiveArch: %{rust_arches}
- rust-semver-parser0.9
ExclusiveArch: %{rust_arches}
- rust-semver0.11
ExclusiveArch: %{rust_arches}
- rust-sequoia-autocrypt
ExclusiveArch: %{rust_arches}
- rust-sequoia-ipc
ExclusiveArch: %{rust_arches}
- rust-sequoia-net
ExclusiveArch: %{rust_arches}
- rust-sequoia-octopus-librnp
ExclusiveArch: %{rust_arches}
- rust-sequoia-openpgp-mt
ExclusiveArch: %{rust_arches}
- rust-sequoia-sop
ExclusiveArch: %{rust_arches}
- rust-sequoia-sq
ExclusiveArch: %{rust_arches}
- rust-sequoia-sqv
ExclusiveArch: %{rust_arches}
- rust-serde-big-array
ExclusiveArch: %{rust_arches}
- rust-serde-value
ExclusiveArch: %{rust_arches}
- rust-serde-xml-rs
ExclusiveArch: %{rust_arches}
- rust-serde_bser
ExclusiveArch: %{rust_arches}
- rust-serde_cbor
ExclusiveArch: %{rust_arches}
- rust-serde_fmt
ExclusiveArch: %{rust_arches}
- rust-serde_qs
ExclusiveArch: %{rust_arches}
- rust-serde_url_params
ExclusiveArch: %{rust_arches}
- rust-serde_urlencoded
ExclusiveArch: %{rust_arches}
- rust-serde_with
ExclusiveArch: %{rust_arches}
- rust-serde_with_macros
ExclusiveArch: %{rust_arches}
- rust-serde_yaml0.8
ExclusiveArch: %{rust_arches}
- rust-serial-core
ExclusiveArch: %{rust_arches}
- rust-serial_test0.5
ExclusiveArch: %{rust_arches}
- rust-serial_test_derive0.5
ExclusiveArch: %{rust_arches}
- rust-servo-fontconfig
ExclusiveArch: %{rust_arches}
- rust-servo-fontconfig-sys
ExclusiveArch: %{rust_arches}
- rust-servo_arc
ExclusiveArch: %{rust_arches}
- rust-sev
ExclusiveArch: x86_64
- rust-sevctl
ExclusiveArch: x86_64
- rust-sha-1_0.9
ExclusiveArch: %{rust_arches}
- rust-sha1
ExclusiveArch: %{rust_arches}
- rust-sha1_0.6
ExclusiveArch: %{rust_arches}
- rust-sha1_smol
ExclusiveArch: %{rust_arches}
- rust-sha1collisiondetection
ExclusiveArch: %{rust_arches}
- rust-sha2
ExclusiveArch: %{rust_arches}
- rust-sha2_0.9
ExclusiveArch: %{rust_arches}
- rust-sha3_0.9
ExclusiveArch: %{rust_arches}
- rust-shadow-rs
ExclusiveArch: %{rust_arches}
- rust-sharded-slab
ExclusiveArch: %{rust_arches}
- rust-shared_child
ExclusiveArch: %{rust_arches}
- rust-shared_library
ExclusiveArch: %{rust_arches}
- rust-shell-escape
ExclusiveArch: %{rust_arches}
- rust-shell-words
ExclusiveArch: %{rust_arches}
- rust-shellexpand
ExclusiveArch: %{rust_arches}
- rust-shellwords
ExclusiveArch: %{rust_arches}
- rust-shlex
ExclusiveArch: %{rust_arches}
- rust-signal
ExclusiveArch: %{rust_arches}
- rust-signal-hook
ExclusiveArch: %{rust_arches}
- rust-signal-hook-mio
ExclusiveArch: %{rust_arches}
- rust-signal-hook-registry
ExclusiveArch: %{rust_arches}
- rust-signal-hook0.1
ExclusiveArch: %{rust_arches}
- rust-signature
ExclusiveArch: %{rust_arches}
- rust-signature_derive
ExclusiveArch: %{rust_arches}
- rust-silver
ExclusiveArch: %{rust_arches}
- rust-simd_helpers
ExclusiveArch: %{rust_arches}
- rust-similar-asserts
ExclusiveArch: %{rust_arches}
- rust-simple-error
ExclusiveArch: %{rust_arches}
- rust-simple_asn1
ExclusiveArch: %{rust_arches}
- rust-simple_logger
ExclusiveArch: %{rust_arches}
- rust-simplelog
ExclusiveArch: %{rust_arches}
- rust-sinit
ExclusiveArch: %{rust_arches}
- rust-siphasher
ExclusiveArch: %{rust_arches}
- rust-sized-chunks
ExclusiveArch: %{rust_arches}
- rust-skeptic
ExclusiveArch: %{rust_arches}
- rust-skim
ExclusiveArch: %{rust_arches}
- rust-slab
ExclusiveArch: %{rust_arches}
- rust-slog-async
ExclusiveArch: %{rust_arches}
- rust-slog-scope
ExclusiveArch: %{rust_arches}
- rust-slog-term
ExclusiveArch: %{rust_arches}
- rust-slug
ExclusiveArch: %{rust_arches}
- rust-smallbitvec
ExclusiveArch: %{rust_arches}
- rust-smallstr
ExclusiveArch: %{rust_arches}
- rust-smallvec
ExclusiveArch: %{rust_arches}
- rust-smawk
ExclusiveArch: %{rust_arches}
- rust-smithay-client-toolkit
ExclusiveArch: %{rust_arches}
- rust-smithay-clipboard
ExclusiveArch: %{rust_arches}
- rust-smol_str
ExclusiveArch: %{rust_arches}
- rust-snake_case
ExclusiveArch: %{rust_arches}
- rust-socket2
ExclusiveArch: %{rust_arches}
- rust-sop
ExclusiveArch: %{rust_arches}
- rust-spin
ExclusiveArch: %{rust_arches}
- rust-spin0.5
ExclusiveArch: %{rust_arches}
- rust-spin_on
ExclusiveArch: %{rust_arches}
- rust-spki
ExclusiveArch: %{rust_arches}
- rust-ssh-key-dir
ExclusiveArch: %{rust_arches}
- rust-stable_deref_trait
ExclusiveArch: %{rust_arches}
- rust-stacker
ExclusiveArch: %{rust_arches}
- rust-standback
ExclusiveArch: %{rust_arches}
- rust-static_assertions
ExclusiveArch: %{rust_arches}
- rust-statistical
ExclusiveArch: %{rust_arches}
- rust-statrs
ExclusiveArch: %{rust_arches}
- rust-stb_truetype
ExclusiveArch: %{rust_arches}
- rust-str_stack
ExclusiveArch: %{rust_arches}
- rust-stratisd_proc_macros
ExclusiveArch: %{rust_arches}
- rust-streaming-stats
ExclusiveArch: %{rust_arches}
- rust-streebog
ExclusiveArch: %{rust_arches}
- rust-streebog0.9
ExclusiveArch: %{rust_arches}
- rust-strict
ExclusiveArch: %{rust_arches}
- rust-string_cache
ExclusiveArch: %{rust_arches}
- rust-string_cache_codegen
ExclusiveArch: %{rust_arches}
- rust-strip-ansi-escapes
ExclusiveArch: %{rust_arches}
- rust-strsim
ExclusiveArch: %{rust_arches}
- rust-structopt
ExclusiveArch: %{rust_arches}
- rust-structopt-derive
ExclusiveArch: %{rust_arches}
- rust-structopt-derive0.2
ExclusiveArch: %{rust_arches}
- rust-structopt0.2
ExclusiveArch: %{rust_arches}
- rust-strum
ExclusiveArch: %{rust_arches}
- rust-strum0.21
ExclusiveArch: %{rust_arches}
- rust-strum_macros
ExclusiveArch: %{rust_arches}
- rust-strum_macros0.21
ExclusiveArch: %{rust_arches}
- rust-subprocess
ExclusiveArch: %{rust_arches}
- rust-subtle
ExclusiveArch: %{rust_arches}
- rust-sudo_plugin-sys
ExclusiveArch: %{rust_arches}
- rust-supports-color
ExclusiveArch: %{rust_arches}
- rust-supports-hyperlinks
ExclusiveArch: %{rust_arches}
- rust-supports-unicode
ExclusiveArch: %{rust_arches}
- rust-sval
ExclusiveArch: %{rust_arches}
- rust-sval_derive
ExclusiveArch: %{rust_arches}
- rust-sval_json
ExclusiveArch: %{rust_arches}
- rust-svg
ExclusiveArch: %{rust_arches}
- rust-syn0.15
ExclusiveArch: %{rust_arches}
- rust-synstructure
ExclusiveArch: %{rust_arches}
- rust-syntect
ExclusiveArch: %{rust_arches}
- rust-syntect4
ExclusiveArch: %{rust_arches}
- rust-sys-info
ExclusiveArch: %{rust_arches}
- rust-sysctl
ExclusiveArch: %{rust_arches}
- rust-sysinfo0.19
ExclusiveArch: %{rust_arches}
- rust-syslog
ExclusiveArch: %{rust_arches}
- rust-system76_ectool
ExclusiveArch: %{rust_arches}
- rust-tabular
ExclusiveArch: %{rust_arches}
- rust-take_mut
ExclusiveArch: %{rust_arches}
- rust-tap
ExclusiveArch: %{rust_arches}
- rust-tar
ExclusiveArch: %{rust_arches}
- rust-target
ExclusiveArch: %{rust_arches}
- rust-tealdeer
ExclusiveArch: %{rust_arches}
- rust-temp-env
ExclusiveArch: %{rust_arches}
- rust-temp_testdir
ExclusiveArch: %{rust_arches}
- rust-tempdir
ExclusiveArch: %{rust_arches}
- rust-tempfile
ExclusiveArch: %{rust_arches}
- rust-temporary
ExclusiveArch: %{rust_arches}
- rust-temptree
ExclusiveArch: %{rust_arches}
- rust-tendril
ExclusiveArch: %{rust_arches}
- rust-tera
ExclusiveArch: %{rust_arches}
- rust-term
ExclusiveArch: %{rust_arches}
- rust-term0.6
ExclusiveArch: %{rust_arches}
- rust-term_grid
ExclusiveArch: %{rust_arches}
- rust-term_size
ExclusiveArch: %{rust_arches}
- rust-termbg
ExclusiveArch: %{rust_arches}
- rust-termcolor
ExclusiveArch: %{rust_arches}
- rust-terminfo
ExclusiveArch: %{rust_arches}
- rust-termion
ExclusiveArch: %{rust_arches}
- rust-termios
ExclusiveArch: %{rust_arches}
- rust-test-assembler
ExclusiveArch: %{rust_arches}
- rust-test-case
ExclusiveArch: %{rust_arches}
- rust-tester
ExclusiveArch: %{rust_arches}
- rust-testing_logger
ExclusiveArch: %{rust_arches}
- rust-textwrap
ExclusiveArch: %{rust_arches}
- rust-textwrap0.11
ExclusiveArch: %{rust_arches}
- rust-textwrap0.14
ExclusiveArch: %{rust_arches}
- rust-thread-id
ExclusiveArch: %{rust_arches}
- rust-thread-tree
ExclusiveArch: %{rust_arches}
- rust-thread_local
ExclusiveArch: %{rust_arches}
- rust-threadpool
ExclusiveArch: %{rust_arches}
- rust-tiff
ExclusiveArch: %{rust_arches}
- rust-tiff0.6
ExclusiveArch: %{rust_arches}
- rust-tiger
ExclusiveArch: %{rust_arches}
- rust-time
ExclusiveArch: %{rust_arches}
- rust-time-macros
ExclusiveArch: %{rust_arches}
- rust-time-macros-impl
ExclusiveArch: %{rust_arches}
- rust-time-macros0.1
ExclusiveArch: %{rust_arches}
- rust-time0.2
ExclusiveArch: %{rust_arches}
- rust-timebomb
ExclusiveArch: %{rust_arches}
- rust-timer
ExclusiveArch: %{rust_arches}
- rust-tiny-keccak
ExclusiveArch: %{rust_arches}
- rust-tiny_http
ExclusiveArch: %{rust_arches}
- rust-tiny_http0.6
ExclusiveArch: %{rust_arches}
- rust-tinyvec
ExclusiveArch: %{rust_arches}
- rust-tinyvec_macros
ExclusiveArch: %{rust_arches}
- rust-tokei
ExclusiveArch: %{rust_arches}
- rust-tokio-codec
ExclusiveArch: %{rust_arches}
- rust-tokio-compat
ExclusiveArch: %{rust_arches}
- rust-tokio-core
ExclusiveArch: %{rust_arches}
- rust-tokio-current-thread
ExclusiveArch: %{rust_arches}
- rust-tokio-executor
ExclusiveArch: %{rust_arches}
- rust-tokio-fs
ExclusiveArch: %{rust_arches}
- rust-tokio-io
ExclusiveArch: %{rust_arches}
- rust-tokio-macros0.2
ExclusiveArch: %{rust_arches}
- rust-tokio-mock-task
ExclusiveArch: %{rust_arches}
- rust-tokio-native-tls
ExclusiveArch: %{rust_arches}
- rust-tokio-openssl
ExclusiveArch: %{rust_arches}
- rust-tokio-reactor
ExclusiveArch: %{rust_arches}
- rust-tokio-rustls
ExclusiveArch: %{rust_arches}
- rust-tokio-socks
ExclusiveArch: %{rust_arches}
- rust-tokio-sync
ExclusiveArch: %{rust_arches}
- rust-tokio-tcp
ExclusiveArch: %{rust_arches}
- rust-tokio-test
ExclusiveArch: %{rust_arches}
- rust-tokio-threadpool
ExclusiveArch: %{rust_arches}
- rust-tokio-timer
ExclusiveArch: %{rust_arches}
- rust-tokio-tungstenite
ExclusiveArch: %{rust_arches}
- rust-tokio-udp
ExclusiveArch: %{rust_arches}
- rust-tokio-uds
ExclusiveArch: %{rust_arches}
- rust-tokio-util
ExclusiveArch: %{rust_arches}
- rust-tokio-util0.6
ExclusiveArch: %{rust_arches}
- rust-tokio0.1
ExclusiveArch: %{rust_arches}
- rust-tokio0.2
ExclusiveArch: %{rust_arches}
- rust-toml0.4
ExclusiveArch: %{rust_arches}
- rust-toml_edit
ExclusiveArch: %{rust_arches}
- rust-totp-lite
ExclusiveArch: %{rust_arches}
- rust-tower-layer
ExclusiveArch: %{rust_arches}
- rust-tower-service
ExclusiveArch: %{rust_arches}
- rust-tower-test
ExclusiveArch: %{rust_arches}
- rust-tower-util
ExclusiveArch: %{rust_arches}
- rust-tpm2-policy
ExclusiveArch: %{rust_arches}
- rust-tracing
ExclusiveArch: %{rust_arches}
- rust-tracing-attributes
ExclusiveArch: %{rust_arches}
- rust-tracing-core
ExclusiveArch: %{rust_arches}
- rust-tracing-futures
ExclusiveArch: %{rust_arches}
- rust-tracing-log
ExclusiveArch: %{rust_arches}
- rust-trash
ExclusiveArch: %{rust_arches}
- rust-tree-sitter
ExclusiveArch: %{rust_arches}
- rust-tree-sitter-cli
ExclusiveArch: %{rust_arches}
- rust-tree-sitter-config
ExclusiveArch: %{rust_arches}
- rust-tree-sitter-highlight
ExclusiveArch: %{rust_arches}
- rust-tree-sitter-loader
ExclusiveArch: %{rust_arches}
- rust-tree-sitter-tags
ExclusiveArch: %{rust_arches}
- rust-treebitmap
ExclusiveArch: %{rust_arches}
- rust-treeline
ExclusiveArch: %{rust_arches}
- rust-trust-dns-proto
ExclusiveArch: %{rust_arches}
- rust-trust-dns-resolver
ExclusiveArch: %{rust_arches}
- rust-try-lock
ExclusiveArch: %{rust_arches}
- rust-tss-esapi
ExclusiveArch: %{rust_arches}
- rust-tss-esapi-sys
ExclusiveArch: %{rust_arches}
- rust-ttf-parser
ExclusiveArch: %{rust_arches}
- rust-ttf-parser0.12
ExclusiveArch: %{rust_arches}
- rust-tui
ExclusiveArch: %{rust_arches}
- rust-tui-react
ExclusiveArch: %{rust_arches}
- rust-tui0.11
ExclusiveArch: %{rust_arches}
- rust-tui0.9
ExclusiveArch: %{rust_arches}
- rust-tuikit
ExclusiveArch: %{rust_arches}
- rust-tungstenite
ExclusiveArch: %{rust_arches}
- rust-twoway
ExclusiveArch: %{rust_arches}
- rust-twox-hash
ExclusiveArch: %{rust_arches}
- rust-type-map
ExclusiveArch: %{rust_arches}
- rust-typed-arena
ExclusiveArch: %{rust_arches}
- rust-typed-arena1
ExclusiveArch: %{rust_arches}
- rust-typed-builder
ExclusiveArch: %{rust_arches}
- rust-typetag
ExclusiveArch: %{rust_arches}
- rust-typetag-impl
ExclusiveArch: %{rust_arches}
- rust-tzfile
ExclusiveArch: %{rust_arches}
- rust-ubyte
ExclusiveArch: %{rust_arches}
- rust-ucd-parse
ExclusiveArch: %{rust_arches}
- rust-ucd-trie
ExclusiveArch: %{rust_arches}
- rust-ucd-util
ExclusiveArch: %{rust_arches}
- rust-uefi-run
ExclusiveArch: %{rust_arches}
- rust-umask
ExclusiveArch: %{rust_arches}
- rust-uncased
ExclusiveArch: %{rust_arches}
- rust-unchecked-index
ExclusiveArch: %{rust_arches}
- rust-unescape
ExclusiveArch: %{rust_arches}
- rust-unic-char-property
ExclusiveArch: %{rust_arches}
- rust-unic-char-range
ExclusiveArch: %{rust_arches}
- rust-unic-common
ExclusiveArch: %{rust_arches}
- rust-unic-langid
ExclusiveArch: %{rust_arches}
- rust-unic-langid-macros
ExclusiveArch: %{rust_arches}
- rust-unic-langid-macros-impl
ExclusiveArch: %{rust_arches}
- rust-unic-locale
ExclusiveArch: %{rust_arches}
- rust-unic-locale-macros
ExclusiveArch: %{rust_arches}
- rust-unic-locale-macros-impl
ExclusiveArch: %{rust_arches}
- rust-unic-segment
ExclusiveArch: %{rust_arches}
- rust-unic-ucd-common
ExclusiveArch: %{rust_arches}
- rust-unic-ucd-segment
ExclusiveArch: %{rust_arches}
- rust-unic-ucd-version
ExclusiveArch: %{rust_arches}
- rust-unicase
ExclusiveArch: %{rust_arches}
- rust-unicase1
ExclusiveArch: %{rust_arches}
- rust-unicode-bidi
ExclusiveArch: %{rust_arches}
- rust-unicode-linebreak
ExclusiveArch: %{rust_arches}
- rust-unicode-normalization
ExclusiveArch: %{rust_arches}
- rust-unicode-segmentation
ExclusiveArch: %{rust_arches}
- rust-unicode-width
ExclusiveArch: %{rust_arches}
- rust-unicode-xid
ExclusiveArch: %{rust_arches}
- rust-unicode-xid0.1
ExclusiveArch: %{rust_arches}
- rust-unicode_categories
ExclusiveArch: %{rust_arches}
- rust-universal-hash
ExclusiveArch: %{rust_arches}
- rust-unix_socket
ExclusiveArch: %{rust_arches}
- rust-unreachable
ExclusiveArch: %{rust_arches}
- rust-untrusted
ExclusiveArch: %{rust_arches}
- rust-uriparse
ExclusiveArch: %{rust_arches}
- rust-url1
ExclusiveArch: %{rust_arches}
- rust-urlencoding
ExclusiveArch: %{rust_arches}
- rust-urlocator
ExclusiveArch: %{rust_arches}
- rust-users
ExclusiveArch: %{rust_arches}
- rust-users0.10
ExclusiveArch: %{rust_arches}
- rust-utf-8
ExclusiveArch: %{rust_arches}
- rust-utf8-width
ExclusiveArch: %{rust_arches}
- rust-utf8parse
ExclusiveArch: %{rust_arches}
- rust-uucore
ExclusiveArch: %{rust_arches}
- rust-uucore_procs
ExclusiveArch: %{rust_arches}
- rust-uuid0.7
ExclusiveArch: %{rust_arches}
- rust-uuid0.8
ExclusiveArch: %{rust_arches}
- rust-v_frame
ExclusiveArch: %{rust_arches}
- rust-value-bag
ExclusiveArch: %{rust_arches}
- rust-varbincode
ExclusiveArch: %{rust_arches}
- rust-varlink
ExclusiveArch: %{rust_arches}
- rust-varlink-cli
ExclusiveArch: %{rust_arches}
- rust-varlink_generator
ExclusiveArch: %{rust_arches}
- rust-varlink_parser
ExclusiveArch: %{rust_arches}
- rust-varlink_stdinterfaces
ExclusiveArch: %{rust_arches}
- rust-vcsgraph
ExclusiveArch: %{rust_arches}
- rust-vec_map
ExclusiveArch: %{rust_arches}
- rust-vergen
ExclusiveArch: %{rust_arches}
- rust-vergen3
ExclusiveArch: %{rust_arches}
- rust-version
ExclusiveArch: %{rust_arches}
- rust-version-sync
ExclusiveArch: %{rust_arches}
- rust-version-sync0.8
ExclusiveArch: %{rust_arches}
- rust-version_check
ExclusiveArch: %{rust_arches}
- rust-vhost
ExclusiveArch: %{rust_arches}
- rust-vhost-user-backend
ExclusiveArch: %{rust_arches}
- rust-virtio-bindings
ExclusiveArch: x86_64 aarch64 ppc64le
- rust-vmm-sys-util
ExclusiveArch: x86_64 aarch64 ppc64le
- rust-void
ExclusiveArch: %{rust_arches}
- rust-vsprintf
ExclusiveArch: %{rust_arches}
- rust-vte
ExclusiveArch: %{rust_arches}
- rust-vte_generate_state_changes
ExclusiveArch: %{rust_arches}
- rust-vtparse
ExclusiveArch: %{rust_arches}
- rust-wait-timeout
ExclusiveArch: %{rust_arches}
- rust-waker-fn
ExclusiveArch: %{rust_arches}
- rust-walkdir
ExclusiveArch: %{rust_arches}
- rust-want
ExclusiveArch: %{rust_arches}
- rust-warp
ExclusiveArch: %{rust_arches}
- rust-wasmer_enumset
ExclusiveArch: %{rust_arches}
- rust-wasmer_enumset_derive
ExclusiveArch: %{rust_arches}
- rust-watchman_client
ExclusiveArch: %{rust_arches}
- rust-web-ext-native-messaging
ExclusiveArch: %{rust_arches}
- rust-webbrowser
ExclusiveArch: %{rust_arches}
- rust-webpki
ExclusiveArch: %{rust_arches}
- rust-webpki-roots
ExclusiveArch: %{rust_arches}
- rust-weezl
ExclusiveArch: %{rust_arches}
- rust-wezterm-bidi
ExclusiveArch: %{rust_arches}
- rust-wezterm-color-types
ExclusiveArch: %{rust_arches}
- rust-wezterm-dynamic
ExclusiveArch: %{rust_arches}
- rust-wezterm-dynamic-derive
ExclusiveArch: %{rust_arches}
- rust-which
ExclusiveArch: %{rust_arches}
- rust-wide
ExclusiveArch: %{rust_arches}
- rust-wild
ExclusiveArch: %{rust_arches}
- rust-winit
ExclusiveArch: %{rust_arches}
- rust-wyz
ExclusiveArch: %{rust_arches}
- rust-x11-clipboard
ExclusiveArch: %{rust_arches}
- rust-xattr
ExclusiveArch: %{rust_arches}
- rust-xcb
ExclusiveArch: %{rust_arches}
- rust-xcursor
ExclusiveArch: %{rust_arches}
- rust-xdg
ExclusiveArch: %{rust_arches}
- rust-xi-unicode
ExclusiveArch: %{rust_arches}
- rust-xkbcommon
ExclusiveArch: %{rust_arches}
- rust-xml-rs
ExclusiveArch: %{rust_arches}
- rust-xmlwriter
ExclusiveArch: %{rust_arches}
- rust-xxhash-c-sys
ExclusiveArch: %{rust_arches}
- rust-xxhash-rust
ExclusiveArch: %{rust_arches}
- rust-xz2
ExclusiveArch: %{rust_arches}
- rust-y4m
ExclusiveArch: %{rust_arches}
- rust-yaml-rust
ExclusiveArch: %{rust_arches}
- rust-yaml-rust0.3
ExclusiveArch: %{rust_arches}
- rust-yansi
ExclusiveArch: %{rust_arches}
- rust-ybaas
ExclusiveArch: %{rust_arches}
- rust-yubibomb
ExclusiveArch: %{rust_arches}
- rust-z85
ExclusiveArch: %{rust_arches}
- rust-zbase32
ExclusiveArch: %{rust_arches}
- rust-zbus
ExclusiveArch: %{rust_arches}
- rust-zbus1
ExclusiveArch: %{rust_arches}
- rust-zbus_macros
ExclusiveArch: %{rust_arches}
- rust-zbus_macros1
ExclusiveArch: %{rust_arches}
- rust-zbus_names
ExclusiveArch: %{rust_arches}
- rust-zeroize
ExclusiveArch: %{rust_arches}
- rust-zincati
ExclusiveArch: %{rust_arches}
- rust-zip
ExclusiveArch: %{rust_arches}
- rust-zmq
ExclusiveArch: %{rust_arches}
- rust-zmq-sys
ExclusiveArch: %{rust_arches}
- rust-zoneinfo_compiled
ExclusiveArch: %{rust_arches}
- rust-zoxide
ExclusiveArch: %{rust_arches}
- rust-zram-generator
ExclusiveArch: %{rust_arches}
- rust-zstd
ExclusiveArch: %{rust_arches}
- rust-zstd-safe
ExclusiveArch: %{rust_arches}
- rust-zstd-sys
ExclusiveArch: %{rust_arches}
- rust-zvariant
ExclusiveArch: %{rust_arches}
- rust-zvariant2
ExclusiveArch: %{rust_arches}
- rust-zvariant_derive
ExclusiveArch: %{rust_arches}
- rust-zvariant_derive2
ExclusiveArch: %{rust_arches}
- s390utils
ExclusiveArch: s390 s390x
- sac
ExclusiveArch: %{java_arches} noarch
- safetyblanket
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc64le
- sagemath
ExclusiveArch: aarch64 x86_64
- sat4j
ExclusiveArch: %{java_arches} noarch
- sbcl
ExclusiveArch: %{arm} %{ix86} x86_64 ppc sparcv9 aarch64
- sbd
ExclusiveArch: i686 x86_64 s390x aarch64 ppc64le
- sblim-cim-client
ExclusiveArch: %{java_arches} noarch
- sblim-cim-client2
ExclusiveArch: %{java_arches} noarch
- sbsigntools
ExclusiveArch: x86_64 aarch64 %{arm} %{ix86}
- scala
ExclusiveArch: %{java_arches} noarch
- scalacheck
ExclusiveArch: %{java_arches} noarch
- scannotation
ExclusiveArch: %{java_arches} noarch
- sdljava
ExclusiveArch: %{java_arches}
- sdrangel
ExclusiveArch: %{qt5_qtwebengine_arches}
- sdsl-lite
ExclusiveArch: %{power64} x86_64 aarch64
- seabios
ExclusiveArch: x86_64
- seadrive-gui
ExclusiveArch: %{qt5_qtwebengine_arches}
- seafile-client
ExclusiveArch: %{qt5_qtwebengine_arches}
- seamonkey
ExclusiveArch: x86_64
- seqan3
ExclusiveArch: %{power64} x86_64 aarch64
- sequence-library
ExclusiveArch: %{java_arches} noarch
- serp
ExclusiveArch: %{java_arches} noarch
- servicelog
ExclusiveArch: ppc %{power64}
- sgabios
ExclusiveArch: %{ix86} x86_64
- shaman
ExclusiveArch: %{java_arches} noarch
- sharpfont
ExclusiveArch: %mono_arches
- sharpziplib
ExclusiveArch: %{mono_arches}
- shim
ExclusiveArch: %{efi}
- shim-unsigned-aarch64
ExclusiveArch: aarch64
- shim-unsigned-x64
ExclusiveArch: x86_64
- sigul
ExclusiveArch: x86_64
- singularity-ce
ExclusiveArch: %{go_arches}
- sisu
ExclusiveArch: %{java_arches} noarch
- sisu-mojos
ExclusiveArch: %{java_arches} noarch
- skopeo
ExclusiveArch: %{go_arches}
- skychart
ExclusiveArch: %{fpc_arches}
- slf4j
ExclusiveArch: %{java_arches} noarch
- slirp4netns
ExclusiveArch: %{golang_arches}
- snakeyaml
ExclusiveArch: %{java_arches} noarch
- snapd
ExclusiveArch: %{?golang_arches}%{!?golang_arches:%{ix86} x86_64 %{arm} aarch64 ppc64le s390x}
- snip
ExclusiveArch: %{java_arches} noarch
- softnet-stat
ExclusiveArch: %{rust_arches}
- soup-sharp
ExclusiveArch: %{mono_arches}
- spacebar
ExclusiveArch: %{java_arches}
- sparkleshare
ExclusiveArch: %{mono_arches}
- spec-version-maven-plugin
ExclusiveArch: %{java_arches} noarch
- spicctrl
ExclusiveArch: %{ix86} x86_64
- spice
ExclusiveArch: x86_64
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- spice-parent
ExclusiveArch: %{java_arches} noarch
- springlobby
ExclusiveArch: %{ix86} x86_64
- sqljet
ExclusiveArch: %{java_arches} noarch
- squeekboard
ExclusiveArch: %{rust_arches}
- startdde
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- statsd
ExclusiveArch: %{nodejs_arches} noarch
- stratis-cli
ExclusiveArch: %{rust_arches} noarch
- stratisd
ExclusiveArch: %{rust_arches}
ExclusiveArch: %{rust_arches}
- string-template-maven-plugin
ExclusiveArch: %{java_arches} noarch
- stringtemplate
ExclusiveArch: %{java_arches} noarch
- stringtemplate4
ExclusiveArch: %{java_arches} noarch
- stripesnoop
ExclusiveArch: %{ix86} x86_64
- subscription-manager-cockpit
ExclusiveArch: %{nodejs_arches} noarch
- supercollider
ExclusiveArch: %{qt5_qtwebengine_arches}
- supermin
ExclusiveArch: %{kernel_arches}
- svnkit
ExclusiveArch: %{java_arches} noarch
- svt-av1
ExclusiveArch: x86_64
- svt-vp9
ExclusiveArch: x86_64
- swift-lang
ExclusiveArch: x86_64 aarch64
- swing-layout
ExclusiveArch: %{java_arches} noarch
- sysbench
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips}
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64 ppc64le s390x
- syslinux
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
- system-rules
ExclusiveArch: %{java_arches} noarch
- system76-keyboard-configurator
ExclusiveArch: %{rust_arches}
- systemd-boot
ExclusiveArch: %efi
- t-digest
ExclusiveArch: %{java_arches} noarch
- taggle
ExclusiveArch: %{java_arches} noarch
- taglib-sharp
ExclusiveArch: %{mono_arches}
- tagsoup
ExclusiveArch: %{java_arches} noarch
- tarantool
ExclusiveArch: %{ix86} x86_64
- tboot
ExclusiveArch: %{ix86} x86_64
- tdlib
ExclusiveArch: x86_64 aarch64
- templates_parser
ExclusiveArch: %GPRbuild_arches
- ternimal
ExclusiveArch: %{rust_arches}
- test-interface
ExclusiveArch: %{java_arches} noarch
- testcloud
ExclusiveArch: %{kernel_arches} noarch
- testng
ExclusiveArch: %{java_arches} noarch
- texlive
ExclusiveArch: %{java_arches} noarch
- thermald
ExclusiveArch: %{ix86} x86_64
- tilix
ExclusiveArch: %{ldc_arches}
- tomboy
ExclusiveArch: %{mono_arches}
- tomcat
ExclusiveArch: %{java_arches} noarch
- tomcat-native
ExclusiveArch: %{java_arches}
- tomcat-taglibs-parent
ExclusiveArch: %{java_arches} noarch
- tomcatjss
ExclusiveArch: %{java_arches} noarch
- torbrowser-launcher
ExclusiveArch: %{ix86} x86_64
- treelayout
ExclusiveArch: %{java_arches} noarch
- trilead-ssh2
ExclusiveArch: %{java_arches} noarch
- truth
ExclusiveArch: %{java_arches} noarch
- tuned-profiles-nfv-host-bin
ExclusiveArch: %{ix86} x86_64
- typescript
ExclusiveArch: %{nodejs_arches} noarch
- uClibc
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips}
- ucx
ExclusiveArch: aarch64 ppc64le x86_64
- uglify-js
ExclusiveArch: %{nodejs_arches} noarch
- unetbootin
ExclusiveArch: %{ix86} x86_64
- univocity-parsers
ExclusiveArch: %{java_arches} noarch
- ursa-major
ExclusiveArch: noarch aarch64 ppc64le s390x x86_64
- usd
ExclusiveArch: aarch64 x86_64
- v8-314
ExclusiveArch: %{ix86} x86_64 %{arm} mips mipsel ppc ppc64
- vakzination
ExclusiveArch: %{java_arches}
- valgrind
ExclusiveArch: %{ix86} x86_64 ppc ppc64 ppc64le s390x armv7hl aarch64
- vboot-utils
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- vecmath1.2
ExclusiveArch: %{java_arches} noarch
- velocity
ExclusiveArch: %{java_arches} noarch
- vim-go
ExclusiveArch: %{?golang_arches}%{!?golang_arches:%{ix86} x86_64 %{arm}}
- vim-syntastic
ExclusiveArch: %{java_arches} noarch
- virt-p2v
ExclusiveArch: x86_64
- virt-v2v
ExclusiveArch: x86_64
- virtiofsd
ExclusiveArch: %{rust_arches}
- virtualbox-guest-additions
ExclusiveArch: i686 x86_64
- vkd3d
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- vmaf
ExclusiveArch: x86_64
- vmemcache
ExclusiveArch: x86_64 ppc64 ppc64le s390x aarch64
- voms-api-java
ExclusiveArch: %{java_arches} noarch
- voms-clients-java
ExclusiveArch: %{java_arches} noarch
- vrq
ExclusiveArch: %{ix86} x86_64
- wangle
ExclusiveArch: x86_64 aarch64 ppc64le
- warsow
ExclusiveArch: %{ix86} x86_64 %{arm}
- warsow-data
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{ix86} x86_64 %{arm}
- wasmedge
ExclusiveArch: x86_64 aarch64
- watchman
ExclusiveArch: x86_64 aarch64 ppc64le
- wdt
ExclusiveArch: x86_64 aarch64 ppc64le
- webkit2-sharp
ExclusiveArch: %mono_arches
- weld-parent
ExclusiveArch: %{java_arches} noarch
- why3
ExclusiveArch: %{java_arches}
- wine
ExclusiveArch: %{ix86} x86_64 aarch64
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86}
- wine-dxvk
ExclusiveArch: %{ix86} x86_64
- winetricks
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- writer2latex
ExclusiveArch: %{java_arches}
- ws-commons-util
ExclusiveArch: %{java_arches} noarch
- wsdl4j
ExclusiveArch: %{java_arches} noarch
- wxMaxima
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc sparcv9
- x2goclient
ExclusiveArch: x86_64
- xalan-j2
ExclusiveArch: %{java_arches} noarch
- xbean
ExclusiveArch: %{java_arches} noarch
- xbyak
ExclusiveArch: x86_64
- xbyak_aarch64
ExclusiveArch: aarch64
- xe-guest-utilities-latest
ExclusiveArch: %{ix86} x86_64
- xen
ExclusiveArch: x86_64 aarch64
- xerces-j2
ExclusiveArch: %{java_arches} noarch
- xgap
ExclusiveArch: aarch64 ppc64le s390x x86_64
- xml-commons-apis
ExclusiveArch: %{java_arches} noarch
- xml-commons-resolver
ExclusiveArch: %{java_arches} noarch
- xml-maven-plugin
ExclusiveArch: %{java_arches} noarch
- xmlada
ExclusiveArch: %{GPRbuild_arches}
- xmlgraphics-commons
ExclusiveArch: %{java_arches} noarch
- xmlpull
ExclusiveArch: %{java_arches} noarch
- xmlstreambuffer
ExclusiveArch: %{java_arches} noarch
- xmlunit
ExclusiveArch: %{java_arches} noarch
- xmpcore
ExclusiveArch: %{java_arches} noarch
- xmvn
ExclusiveArch: %{java_arches} noarch
- xmvn-connector-ivy
ExclusiveArch: %{java_arches} noarch
- xorg-x11-drv-armsoc
ExclusiveArch: %{arm} aarch64
- xorg-x11-drv-intel
ExclusiveArch: %{ix86} x86_64
- xorg-x11-drv-openchrome
ExclusiveArch: %{ix86} x86_64
- xorg-x11-drv-vesa
ExclusiveArch: %{ix86} x86_64
- xorg-x11-drv-vmware
ExclusiveArch: %{ix86} x86_64 ia64
- xsp
ExclusiveArch: %mono_arches
- xstream
ExclusiveArch: %{java_arches} noarch
- xz-java
ExclusiveArch: %{java_arches} noarch
- yarnpkg
ExclusiveArch: %{nodejs_arches} noarch
- yuicompressor
ExclusiveArch: %{java_arches} noarch
- zcfan
ExclusiveArch: x86_64
- zeal
ExclusiveArch: %{qt5_qtwebengine_arches}
- zenon
ExclusiveArch: %{java_arches}
- zeromq-ada
ExclusiveArch: %{GPRbuild_arches}
- zig
ExclusiveArch: %{zig_arches}
- zlib-ada
ExclusiveArch: %{GPRbuild_arches}
- zlib-ng
ExclusiveArch: aarch64 i686 ppc64le s390x x86_64
- zola
ExclusiveArch: %{rust_arches}
1 year, 4 months
Architecture specific change in rpms/dotnet7.0.git
by githook-noreply@fedoraproject.org
The package rpms/dotnet7.0.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/dotnet7.0.git/commit/?id=949d62a0...
https://src.fedoraproject.org/cgit/rpms/dotnet7.0.git/commit/?id=51948773...
https://src.fedoraproject.org/cgit/rpms/dotnet7.0.git/commit/?id=3fe21304...
https://src.fedoraproject.org/cgit/rpms/dotnet7.0.git/commit/?id=9fafb98f...
https://src.fedoraproject.org/cgit/rpms/dotnet7.0.git/commit/?id=ca9a591f...
https://src.fedoraproject.org/cgit/rpms/dotnet7.0.git/commit/?id=0fdb2e03...
https://src.fedoraproject.org/cgit/rpms/dotnet7.0.git/commit/?id=0fffd382...
https://src.fedoraproject.org/cgit/rpms/dotnet7.0.git/commit/?id=b9e285d2...
https://src.fedoraproject.org/cgit/rpms/dotnet7.0.git/commit/?id=96fb4c4f...
https://src.fedoraproject.org/cgit/rpms/dotnet7.0.git/commit/?id=12044336...
https://src.fedoraproject.org/cgit/rpms/dotnet7.0.git/commit/?id=ccec65f6...
https://src.fedoraproject.org/cgit/rpms/dotnet7.0.git/commit/?id=b18622e4....
Change:
+%ifarch %{mono_archs}
+ExclusiveArch: aarch64 x86_64
+ExclusiveArch: x86_64
-%ifarch s390x
+%ifarch s390x
-%ifnarch x86_64
+ExclusiveArch: x86_64
+%ifnarch x86_64
-%ifnarch x86_64
+%ifarch aarch64
+%ifnarch x86_64
+ExclusiveArch: x86_64
Thanks.
Full change:
============
commit 245126e9b78053a9a0285ebb4cc16a7234dd0dbb
Author: Omair Majid <omajid(a)redhat.com>
Date: Mon Jan 9 12:45:43 2023 -0500
Add missing source files
diff --git a/.gitignore b/.gitignore
index 537942d..c2e6cf7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -18,3 +18,7 @@
/dotnet-v6.0.103.tar.gz
/dotnet-v6.0.104.tar.gz
/dotnet-v6.0.105.tar.gz
+/dotnet-v7.0.100-rc.2.22477.23-x64-bootstrap.tar.xz
+/dotnet-arm64-prebuilts-2022-10-12.tar.gz
+/dotnet-ppc64le-prebuilts-2022-10-21.tar.gz
+/dotnet-s390x-prebuilts-2022-10-12.tar.gz
diff --git a/sources b/sources
new file mode 100644
index 0000000..bd3cdee
--- /dev/null
+++ b/sources
@@ -0,0 +1,4 @@
+SHA512 (dotnet-v7.0.100-rc.2.22477.23-x64-bootstrap.tar.xz) = 36edac79cd36fc62dc0c39875c8c9dcd6e1f7fd96f4abdcea29dcdead6773b252c60aebbfb4f9baf6e05abffdc088a1fd3d73c48fa03b8e1f156996cd19f4c2e
+SHA512 (dotnet-arm64-prebuilts-2022-10-12.tar.gz) = 00f2202d7e2831f4f5da9fa02238b35d5ad340efd8ecd7c8d5c69206236f3de374772275c629de0f16ded93b2368e4b357927173ff7046cef145a966ea6e5c0d
+SHA512 (dotnet-ppc64le-prebuilts-2022-10-21.tar.gz) = cc4c91a43cd6abedf3acc548e9ea4b6917e6afdfe2e43d595166ce78e3efb9c05345c45f10e4f4909d6383e6f8f2e825b260ec643991eaf04a469b55b9782066
+SHA512 (dotnet-s390x-prebuilts-2022-10-12.tar.gz) = e19a989cafcf7e9a7be3381202653e9f9b9954b81ff2babcef494b5d06b8babf1996b74bd1f08dee90c6feffcf5130becbf7bfb59457d5b6926a6cf5d0e4a504
commit 6da5370c5d4b490418a5d010f2493be044eef703
Author: Omair Majid <omajid(a)redhat.com>
Date: Mon Jan 9 11:37:37 2023 -0500
Update README
diff --git a/README.md b/README.md
index d46fa1f..76a7872 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,6 @@
# dotnet7.0
-This is the work-in-progress .NET 7.0 package for Fedora. When it's ready, it
-will be merged into Fedora proper.
+This is the .NET 7.0 package for Fedora.
This package is maintained by the Fedora DotNet SIG (Special Interest
Group). You can find out more about the DotNet SIG at:
commit a008701dd96fa758aef737cd278569701581e4b8
Merge: 7b01d0b be2ce50
Author: Omair Majid <omajid(a)redhat.com>
Date: Mon Jan 9 11:36:38 2023 -0500
Merge branch 'dotnet-sig/main'
commit be2ce50c0682566a9269840342c9bdb665ce59ad
Author: Omair Majid <omajid(a)redhat.com>
Date: Sat Jan 7 12:14:22 2023 -0500
Update License field
To comply with SPDX identifiers.
Also remove some test files where the Fedora licensing situation isn't
clear.
diff --git a/build-dotnet-tarball b/build-dotnet-tarball
index 500a9f6..7c9a3aa 100755
--- a/build-dotnet-tarball
+++ b/build-dotnet-tarball
@@ -178,6 +178,9 @@ rm -r src/nuget-client/test/EndToEnd
# https://github.com/microsoft/ApplicationInsights-dotnet/issues/2670
rm -r src/source-build-externals/src/application-insights/LOGGING/test/Shared/CustomTelemetryChannel.cs
+# CC-BY-SA https://gitlab.com/fedora/legal/fedora-license-data/-/issues/104#note_123...
+rm -r src/runtime/src/tests/sizeondisk/sodbench
+
popd
if [[ ${build_bootstrap} == true ]]; then
diff --git a/dotnet7.0.spec b/dotnet7.0.spec
index 54db677..2ec2d5f 100644
--- a/dotnet7.0.spec
+++ b/dotnet7.0.spec
@@ -56,7 +56,8 @@ Name: dotnet%{dotnetver}
Version: %{sdk_rpm_version}
Release: 0%{?dist}.1
Summary: .NET Runtime and SDK
-License: MIT and ASL 2.0 and BSD and LGPLv2+ and CC-BY and CC0 and MS-PL and EPL-1.0 and GPL+ and GPLv2 and ISC and OFL and zlib
+License: 0BSD AND Apache-2.0 AND (Apache-2.0 WITH LLVM-Exception) AND APSL-2.0 AND BSD-2-Clause AND BSD-3-Clause AND BSD-4-Clause AND BSL-1.0 AND bzip2-1.0.6 AND CC0-1.0 AND CC-BY-3.0 AND CC-BY-4.0 AND CC-PDDC AND CNRI-Python AND EPL-1.0 AND GPL-2.0-only AND (GPL-2.0-only WITH GCC-exception-2.0) AND GPL-2.0-or-later AND GPL-3.0-only AND ICU AND ISC AND LGPL-2.1-only AND LGPL-2.1-or-later AND LicenseRef-Fedora-Public-Domain AND LicenseRef-ISO-8879 AND MIT AND MIT-Wu AND MS-PL AND MS-RL AND NCSA AND OFL-1.1 AND OpenSSL AND Unicode-DFS-2015 AND Unicode-DFS-2016 AND W3C-19980720 AND X11 AND Zlib
+
URL: https://github.com/dotnet/
%if %{with bootstrap}
@@ -426,17 +427,7 @@ popd
%endif
-%patch1 -p1
-%patch2 -p1
-%patch3 -p1
-%patch4 -p1
-%patch5 -p1
-%patch6 -p1
-%patch7 -p1
-%patch8 -p1
-%patch9 -p1
-%patch10 -p1
-%patch11 -p1
+%autopatch -p1
# Fix bad hardcoded path in build
sed -i 's|/usr/share/dotnet|%{_libdir}/dotnet|' src/runtime/src/native/corehost/hostmisc/pal.unix.cpp
commit de2f31ceab56d5a754d031257301d856b89ce690
Author: Omair Majid <omajid(a)redhat.com>
Date: Mon Nov 21 11:52:00 2022 -0500
Don't build dotnet package on Fedora 38
But keep it for older versions.
diff --git a/dotnet7.0.spec b/dotnet7.0.spec
index f36bb6c..54db677 100644
--- a/dotnet7.0.spec
+++ b/dotnet7.0.spec
@@ -176,10 +176,9 @@ application to drive everything.
# The `dotnet` package was a bit of historical mistake. Users
# shouldn't be asked to install .NET without a version because .NET
# code (source or build) is generally version specific. We have kept
-# it around in RHEL 8, and it's also present in the older dotnet6.0
-# package in Fedora. But no reason to continue this mistake for newer
-# versions of .NET or Fedora.
-%if 0%{?fedora} < 1 && 0%{?rhel} <= 8
+# it around in older versions of RHEL and Fedora. But no reason to
+# continue this mistake.
+%if ( 0%{?fedora} && 0%{?fedora} < 38 ) || ( 0%{?rhel} && 0%{?rhel} < 8 )
%package -n dotnet
@@ -604,7 +603,7 @@ export COMPlus_LTTng=0
%{buildroot}%{_libdir}/dotnet/dotnet --version
-%if 0%{?fedora} < 1 && 0%{?rhel} <= 8
+%if ( 0%{?fedora} && 0%{?fedora} < 38 ) || ( 0%{?rhel} && 0%{?rhel} < 9 )
%files -n dotnet
# empty package useful for dependencies
%endif
commit f78d53f5cc4f7ddbf05bbc491c6bb33d2d3635a5
Author: Omair Majid <omajid(a)redhat.com>
Date: Wed Nov 16 18:56:59 2022 -0500
Don't build dotnet package on Fedora
Fix the conditional - it was accidentally building dotnet package on
Fedora too. Make it clear that dotnet subpackage should not be built
with .NET 7 on Fedora or newer versions of RHEL.
diff --git a/dotnet7.0.spec b/dotnet7.0.spec
index 0945b39..f36bb6c 100644
--- a/dotnet7.0.spec
+++ b/dotnet7.0.spec
@@ -173,7 +173,13 @@ applications and micro-services.
framework libraries, an SDK containing compilers and a 'dotnet'
application to drive everything.
-%if 0%{?rhel} <= 8
+# The `dotnet` package was a bit of historical mistake. Users
+# shouldn't be asked to install .NET without a version because .NET
+# code (source or build) is generally version specific. We have kept
+# it around in RHEL 8, and it's also present in the older dotnet6.0
+# package in Fedora. But no reason to continue this mistake for newer
+# versions of .NET or Fedora.
+%if 0%{?fedora} < 1 && 0%{?rhel} <= 8
%package -n dotnet
@@ -491,12 +497,11 @@ export EXTRA_LDFLAGS="$LDFLAGS"
# suggested compile-time change doesn't work, unfortunately.
export COMPlus_LTTng=0
-%if 0%{?rhel} >= 9
-# OpenSSL 3.0 in RHEL 9 has disabled SHA1, used by .NET for strong
-# name signing. See https://github.com/dotnet/runtime/issues/67304
+# OpenSSL 3.0 in RHEL 9 and newer versions of Fedora has disabled
+# SHA1, used by .NET for strong name signing. See
+# https://github.com/dotnet/runtime/issues/67304
# https://gitlab.com/redhat/centos-stream/rpms/openssl/-/commit/78fb78d3075...
export OPENSSL_ENABLE_SHA1_SIGNATURES=1
-%endif
VERBOSE=1 ./build.sh \
%if %{without bootstrap}
@@ -599,7 +604,7 @@ export COMPlus_LTTng=0
%{buildroot}%{_libdir}/dotnet/dotnet --version
-%if 0%{?rhel} <= 8
+%if 0%{?fedora} < 1 && 0%{?rhel} <= 8
%files -n dotnet
# empty package useful for dependencies
%endif
commit d101c05df652e79ef7201148e5de2802392e7bfe
Author: Omair Majid <omajid(a)redhat.com>
Date: Mon Nov 14 15:24:39 2022 -0500
Some cleanups based on initial package review
- Add a variable to represent the .NET major version
- Accept man pages with any extensions
- Improve Release to handle upgrades
diff --git a/dotnet7.0.spec b/dotnet7.0.spec
index 1acd5e3..0945b39 100644
--- a/dotnet7.0.spec
+++ b/dotnet7.0.spec
@@ -6,6 +6,8 @@
# until that's done, disable LTO. This has to happen before setting the flags below.
%define _lto_cflags %{nil}
+%global dotnetver 7.0
+
%global host_version 7.0.0-rc.2.22472.3
%global runtime_version 7.0.0-rc.2.22472.3
%global aspnetcore_runtime_version 7.0.0-rc.2.22476.2
@@ -17,7 +19,7 @@
%global host_rpm_version 7.0.0
%global runtime_rpm_version 7.0.0
%global aspnetcore_runtime_rpm_version 7.0.0
-%global sdk_rpm_version 7.0.0
+%global sdk_rpm_version 7.0.100
# upstream can update releases without revving the SDK version so these don't always match
#%%global upstream_tag v%%{sdk_version}
@@ -50,9 +52,9 @@
%{!?runtime_id:%global runtime_id %(. /etc/os-release ; echo "${ID}.${VERSION_ID%%.*}")-%{runtime_arch}}
-Name: dotnet7.0
+Name: dotnet%{dotnetver}
Version: %{sdk_rpm_version}
-Release: 0.1%{?dist}
+Release: 0%{?dist}.1
Summary: .NET Runtime and SDK
License: MIT and ASL 2.0 and BSD and LGPLv2+ and CC-BY and CC0 and MS-PL and EPL-1.0 and GPL+ and GPLv2 and ISC and OFL and zlib
URL: https://github.com/dotnet/
@@ -112,8 +114,8 @@ BuildRequires: clang
BuildRequires: cmake
BuildRequires: coreutils
%if %{without bootstrap}
-BuildRequires: dotnet-sdk-7.0
-BuildRequires: dotnet-sdk-7.0-source-built-artifacts
+BuildRequires: dotnet-sdk-%{dotnetver}
+BuildRequires: dotnet-sdk-%{dotnetver}-source-built-artifacts
%endif
BuildRequires: findutils
BuildRequires: git
@@ -178,7 +180,7 @@ application to drive everything.
Version: %{sdk_rpm_version}
Summary: .NET CLI tools and runtime
-Requires: dotnet-sdk-7.0%{?_isa} >= %{sdk_rpm_version}-%{release}
+Requires: dotnet-sdk-%{dotnetver}%{?_isa} >= %{sdk_rpm_version}-%{release}
%description -n dotnet
.NET is a fast, lightweight and modular platform for creating
@@ -209,7 +211,7 @@ It particularly focuses on creating console applications, web
applications and micro-services.
-%package -n dotnet-hostfxr-7.0
+%package -n dotnet-hostfxr-%{dotnetver}
Version: %{host_rpm_version}
Summary: .NET command line host resolver
@@ -218,7 +220,7 @@ Summary: .NET command line host resolver
# provided by this package, or from a newer version of .NET
Requires: dotnet-host%{?_isa} >= %{host_rpm_version}-%{release}
-%description -n dotnet-hostfxr-7.0
+%description -n dotnet-hostfxr-%{dotnetver}
The .NET host resolver contains the logic to resolve and select
the right version of the .NET SDK or runtime to use.
@@ -229,12 +231,12 @@ It particularly focuses on creating console applications, web
applications and micro-services.
-%package -n dotnet-runtime-7.0
+%package -n dotnet-runtime-%{dotnetver}
Version: %{runtime_rpm_version}
-Summary: NET 7.0 runtime
+Summary: NET %{dotnetver} runtime
-Requires: dotnet-hostfxr-7.0%{?_isa} >= %{host_rpm_version}-%{release}
+Requires: dotnet-hostfxr-%{dotnetver}%{?_isa} >= %{host_rpm_version}-%{release}
# libicu is dlopen()ed
Requires: libicu%{?_isa}
@@ -246,7 +248,7 @@ Provides: bundled(libbrotli) = 1.0.9
Provides: bundled(libunwind) = 1.5.rc1.28.g9165d2a1
%endif
-%description -n dotnet-runtime-7.0
+%description -n dotnet-runtime-%{dotnetver}
The .NET runtime contains everything needed to run .NET applications.
It includes a high performance Virtual Machine as well as the framework
libraries used by .NET applications.
@@ -258,14 +260,14 @@ It particularly focuses on creating console applications, web
applications and micro-services.
-%package -n aspnetcore-runtime-7.0
+%package -n aspnetcore-runtime-%{dotnetver}
Version: %{aspnetcore_runtime_rpm_version}
-Summary: ASP.NET Core 7.0 runtime
+Summary: ASP.NET Core %{dotnetver} runtime
-Requires: dotnet-runtime-7.0%{?_isa} = %{runtime_rpm_version}-%{release}
+Requires: dotnet-runtime-%{dotnetver}%{?_isa} = %{runtime_rpm_version}-%{release}
-%description -n aspnetcore-runtime-7.0
+%description -n aspnetcore-runtime-%{dotnetver}
The ASP.NET Core runtime contains everything needed to run .NET
web applications. It includes a high performance Virtual Machine as
well as the framework libraries used by .NET applications.
@@ -277,16 +279,16 @@ It particularly focuses on creating console applications, web
applications and micro-services.
-%package -n dotnet-templates-7.0
+%package -n dotnet-templates-%{dotnetver}
Version: %{sdk_rpm_version}
-Summary: .NET 7.0 templates
+Summary: .NET %{dotnetver} templates
# Theoretically any version of the host should work. But lets aim for the one
# provided by this package, or from a newer version of .NET
Requires: dotnet-host%{?_isa} >= %{host_rpm_version}-%{release}
-%description -n dotnet-templates-7.0
+%description -n dotnet-templates-%{dotnetver}
This package contains templates used by the .NET SDK.
.NET is a fast, lightweight and modular platform for creating
@@ -296,24 +298,24 @@ It particularly focuses on creating console applications, web
applications and micro-services.
-%package -n dotnet-sdk-7.0
+%package -n dotnet-sdk-%{dotnetver}
Version: %{sdk_rpm_version}
-Summary: .NET 7.0 Software Development Kit
+Summary: .NET %{dotnetver} Software Development Kit
Provides: bundled(js-jquery)
-Requires: dotnet-runtime-7.0%{?_isa} >= %{runtime_rpm_version}-%{release}
-Requires: aspnetcore-runtime-7.0%{?_isa} >= %{aspnetcore_runtime_rpm_version}-%{release}
+Requires: dotnet-runtime-%{dotnetver}%{?_isa} >= %{runtime_rpm_version}-%{release}
+Requires: aspnetcore-runtime-%{dotnetver}%{?_isa} >= %{aspnetcore_runtime_rpm_version}-%{release}
-Requires: dotnet-apphost-pack-7.0%{?_isa} >= %{runtime_rpm_version}-%{release}
-Requires: dotnet-targeting-pack-7.0%{?_isa} >= %{runtime_rpm_version}-%{release}
-Requires: aspnetcore-targeting-pack-7.0%{?_isa} >= %{aspnetcore_runtime_rpm_version}-%{release}
+Requires: dotnet-apphost-pack-%{dotnetver}%{?_isa} >= %{runtime_rpm_version}-%{release}
+Requires: dotnet-targeting-pack-%{dotnetver}%{?_isa} >= %{runtime_rpm_version}-%{release}
+Requires: aspnetcore-targeting-pack-%{dotnetver}%{?_isa} >= %{aspnetcore_runtime_rpm_version}-%{release}
Requires: netstandard-targeting-pack-2.1%{?_isa} >= %{sdk_rpm_version}-%{release}
-Requires: dotnet-templates-7.0%{?_isa} >= %{sdk_rpm_version}-%{release}
+Requires: dotnet-templates-%{dotnetver}%{?_isa} >= %{sdk_rpm_version}-%{release}
-%description -n dotnet-sdk-7.0
+%description -n dotnet-sdk-%{dotnetver}
The .NET SDK is a collection of command line applications to
create, build, publish and run .NET applications.
@@ -342,18 +344,18 @@ applications using the .NET SDK.
%{_libdir}/dotnet/packs/%{5}
}
-%dotnet_targeting_pack dotnet-apphost-pack-7.0 %{runtime_rpm_version} Microsoft.NETCore.App 7.0 Microsoft.NETCore.App.Host.%{runtime_id}
-%dotnet_targeting_pack dotnet-targeting-pack-7.0 %{runtime_rpm_version} Microsoft.NETCore.App 7.0 Microsoft.NETCore.App.Ref
-%dotnet_targeting_pack aspnetcore-targeting-pack-7.0 %{aspnetcore_runtime_rpm_version} Microsoft.AspNetCore.App 7.0 Microsoft.AspNetCore.App.Ref
+%dotnet_targeting_pack dotnet-apphost-pack-%{dotnetver} %{runtime_rpm_version} Microsoft.NETCore.App %{dotnetver} Microsoft.NETCore.App.Host.%{runtime_id}
+%dotnet_targeting_pack dotnet-targeting-pack-%{dotnetver} %{runtime_rpm_version} Microsoft.NETCore.App %{dotnetver} Microsoft.NETCore.App.Ref
+%dotnet_targeting_pack aspnetcore-targeting-pack-%{dotnetver} %{aspnetcore_runtime_rpm_version} Microsoft.AspNetCore.App %{dotnetver} Microsoft.AspNetCore.App.Ref
%dotnet_targeting_pack netstandard-targeting-pack-2.1 %{sdk_rpm_version} NETStandard.Library 2.1 NETStandard.Library.Ref
-%package -n dotnet-sdk-7.0-source-built-artifacts
+%package -n dotnet-sdk-%{dotnetver}-source-built-artifacts
Version: %{sdk_rpm_version}
-Summary: Internal package for building .NET 7.0 Software Development Kit
+Summary: Internal package for building .NET %{dotnetver} Software Development Kit
-%description -n dotnet-sdk-7.0-source-built-artifacts
+%description -n dotnet-sdk-%{dotnetver}-source-built-artifacts
The .NET source-built archive is a collection of packages needed
to build the .NET SDK itself.
@@ -610,33 +612,33 @@ export COMPlus_LTTng=0
%{_bindir}/dotnet
%license %{_libdir}/dotnet/LICENSE.txt
%license %{_libdir}/dotnet/ThirdPartyNotices.txt
-%doc %{_mandir}/man1/dotnet*.1.gz
-%doc %{_mandir}/man7/dotnet*.7.gz
+%doc %{_mandir}/man1/dotnet*.1.*
+%doc %{_mandir}/man7/dotnet*.7.*
%config(noreplace) %{_sysconfdir}/profile.d/dotnet.sh
%config(noreplace) %{_sysconfdir}/dotnet
%dir %{_datadir}/bash-completion
%dir %{_datadir}/bash-completion/completions
%{_datadir}/bash-completion/completions/dotnet
-%files -n dotnet-hostfxr-7.0
+%files -n dotnet-hostfxr-%{dotnetver}
%dir %{_libdir}/dotnet/host/fxr
%{_libdir}/dotnet/host/fxr/%{host_version}
-%files -n dotnet-runtime-7.0
+%files -n dotnet-runtime-%{dotnetver}
%dir %{_libdir}/dotnet/shared
%dir %{_libdir}/dotnet/shared/Microsoft.NETCore.App
%{_libdir}/dotnet/shared/Microsoft.NETCore.App/%{runtime_version}
-%files -n aspnetcore-runtime-7.0
+%files -n aspnetcore-runtime-%{dotnetver}
%dir %{_libdir}/dotnet/shared
%dir %{_libdir}/dotnet/shared/Microsoft.AspNetCore.App
%{_libdir}/dotnet/shared/Microsoft.AspNetCore.App/%{aspnetcore_runtime_version}
-%files -n dotnet-templates-7.0
+%files -n dotnet-templates-%{dotnetver}
%dir %{_libdir}/dotnet/templates
%{_libdir}/dotnet/templates/%{templates_version}
-%files -n dotnet-sdk-7.0
+%files -n dotnet-sdk-%{dotnetver}
%dir %{_libdir}/dotnet/sdk
%{_libdir}/dotnet/sdk/%{sdk_version}
%dir %{_libdir}/dotnet/sdk-manifests
@@ -645,7 +647,7 @@ export COMPlus_LTTng=0
%{_libdir}/dotnet/metadata
%dir %{_libdir}/dotnet/packs
-%files -n dotnet-sdk-7.0-source-built-artifacts
+%files -n dotnet-sdk-%{dotnetver}-source-built-artifacts
%dir %{_libdir}/dotnet
%{_libdir}/dotnet/source-built-artifacts
commit c78aca21d618e5c390aa459734b03b008b6084ec
Author: Omair Majid <omajid(a)redhat.com>
Date: Fri Nov 11 16:53:20 2022 -0500
Add a patch to fix clang 15 compat on ppc64le
diff --git a/dotnet7.0.spec b/dotnet7.0.spec
index 9a0e30e..1acd5e3 100644
--- a/dotnet7.0.spec
+++ b/dotnet7.0.spec
@@ -96,6 +96,9 @@ Patch8: runtime-77270-ppc64le-fsharp-crash.patch
Patch9: runtime-77308-ppc64le-delegate.patch
# Disable apphost; there's no net6.0 apphost for ppc64le
Patch10: roslyn-analyzers-ppc64le-apphost.patch
+# Fix ppc64le build with clang 15
+# TODO upstream this
+Patch11: runtime-mono-ppc64le-clang15.patch
%if 0%{?fedora} || 0%{?rhel} >= 8
@@ -426,6 +429,7 @@ popd
%patch8 -p1
%patch9 -p1
%patch10 -p1
+%patch11 -p1
# Fix bad hardcoded path in build
sed -i 's|/usr/share/dotnet|%{_libdir}/dotnet|' src/runtime/src/native/corehost/hostmisc/pal.unix.cpp
diff --git a/runtime-mono-ppc64le-clang15.patch b/runtime-mono-ppc64le-clang15.patch
new file mode 100644
index 0000000..32bf3f9
--- /dev/null
+++ b/runtime-mono-ppc64le-clang15.patch
@@ -0,0 +1,39 @@
+diff --git a/src/runtime/src/mono/mono/mini/mini-ppc.c b/src/runtime/src/mono/mono/mini/mini-ppc.c
+index bc97b497af9..cc5e5ccc0e6 100644
+--- a/src/runtime/src/mono/mono/mini/mini-ppc.c
++++ b/src/runtime/src/mono/mono/mini/mini-ppc.c
+@@ -2733,7 +2733,7 @@ handle_thunk (MonoCompile *cfg, guchar *code, const guchar *target)
+ cfg->arch.thunks = cfg->thunks;
+ cfg->arch.thunks_size = cfg->thunk_area;
+ #ifdef THUNK_ADDR_ALIGNMENT
+- cfg->arch.thunks = ALIGN_TO(cfg->arch.thunks, THUNK_ADDR_ALIGNMENT);
++ cfg->arch.thunks = (guint8 *)ALIGN_TO(cfg->arch.thunks, THUNK_ADDR_ALIGNMENT);
+ #endif
+ }
+ thunks = cfg->arch.thunks;
+@@ -5886,7 +5886,7 @@ host_mgreg_t*
+ mono_arch_context_get_int_reg_address (MonoContext *ctx, int reg)
+ {
+ if (reg == ppc_r1)
+- return (host_mgreg_t)(gsize)MONO_CONTEXT_GET_SP (ctx);
++ return (host_mgreg_t *)(gsize)&ctx->sc_sp;
+
+ return &ctx->regs [reg];
+ }
+diff --git a/src/runtime/src/mono/mono/mini/tramp-ppc.c b/src/runtime/src/mono/mono/mini/tramp-ppc.c
+index 59bcb275a48..e0bc7f8eca4 100644
+--- a/src/runtime/src/mono/mono/mini/tramp-ppc.c
++++ b/src/runtime/src/mono/mono/mini/tramp-ppc.c
+@@ -672,10 +672,10 @@ mono_arch_get_call_target (guint8 *code)
+ }
+ #if defined(TARGET_POWERPC64) && !defined(PPC_USES_FUNCTION_DESCRIPTOR)
+ else if (((guint32*)(code - 32)) [0] >> 26 == 15) {
+- guint8 *thunk = GET_MEMORY_SLOT_THUNK_ADDRESS((guint32*)(code - 32));
++ guint8 *thunk = (guint8 *)GET_MEMORY_SLOT_THUNK_ADDRESS((guint32*)(code - 32));
+ return thunk;
+ } else if (((guint32*)(code - 4)) [0] >> 26 == 15) {
+- guint8 *thunk = GET_MEMORY_SLOT_THUNK_ADDRESS((guint32*)(code - 4));
++ guint8 *thunk = (guint8 *)GET_MEMORY_SLOT_THUNK_ADDRESS((guint32*)(code - 4));
+ return thunk;
+ }
+ #endif
commit 593af93cdc38c7131cbb5a3a63e504ebd614ce48
Author: Omair Majid <omajid(a)redhat.com>
Date: Thu Nov 10 17:19:13 2022 -0500
Fix changelog date
diff --git a/dotnet7.0.spec b/dotnet7.0.spec
index f1519cb..9a0e30e 100644
--- a/dotnet7.0.spec
+++ b/dotnet7.0.spec
@@ -647,7 +647,7 @@ export COMPlus_LTTng=0
%changelog
-* Thu Nov 09 2022 Omair Majid <omajid(a)redhat.com> - 7.0.100-0.1
+* Thu Nov 10 2022 Omair Majid <omajid(a)redhat.com> - 7.0.100-0.1
- Update to .NET 7 RC 2
* Wed May 11 2022 Omair Majid <omajid(a)redhat.com> - 6.0.105-1
commit 949d62a0e3d5a16310d84173f65bec4eaadcd31f
Author: Omair Majid <omajid(a)redhat.com>
Date: Thu Nov 10 17:18:09 2022 -0500
Update to .NET 7 RC 2
Enable ppc64le
diff --git a/aspnetcore-44583-ppc64le-crossgen.patch b/aspnetcore-44583-ppc64le-crossgen.patch
new file mode 100644
index 0000000..d21fc15
--- /dev/null
+++ b/aspnetcore-44583-ppc64le-crossgen.patch
@@ -0,0 +1,24 @@
+From d77f55bc7c5f6dd087113b6e93b7778d3ebcdbb4 Mon Sep 17 00:00:00 2001
+From: Sapana Khemkar <sapana.khemkar(a)ibm.com>
+Date: Fri, 14 Oct 2022 05:44:54 +0000
+Subject: [PATCH] add ppc64le arch to crossgen2 not available list
+
+---
+ .../App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/aspnetcore/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj b/src/aspnetcore/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj
+index c062788037..4dfa88f7d6 100644
+--- a/src/aspnetcore/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj
++++ b//src/aspnetcore/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj
+@@ -42,8 +42,8 @@ This package is an internal implementation of the .NET Core SDK and is not meant
+ <!-- Pack .ni.r2rmap files in symbols package (native symbols for Linux) -->
+ <AllowedOutputExtensionsInSymbolsPackageBuildOutputFolder>$(AllowedOutputExtensionsInSymbolsPackageBuildOutputFolder);.r2rmap</AllowedOutputExtensionsInSymbolsPackageBuildOutputFolder>
+
+- <!-- Optimize the framework using the crossgen2 tool. Crossgen2 is not currently supported on s390x. -->
+- <CrossgenOutput Condition=" '$(TargetArchitecture)' == 's390x' ">false</CrossgenOutput>
++ <!-- Optimize the framework using the crossgen2 tool. Crossgen2 is not currently supported on s390x or ppc64le or armv6. -->
++ <CrossgenOutput Condition=" '$(TargetArchitecture)' == 's390x' OR '$(TargetArchitecture)' == 'armv6' OR '$(TargetArchitecture)' == 'ppc64le' ">false</CrossgenOutput>
+ <CrossgenOutput Condition=" '$(CrossgenOutput)' == '' AND '$(Configuration)' != 'Debug' ">true</CrossgenOutput>
+
+ <!-- Produce crossgen2 profiling symbols (.ni.pdb or .r2rmap files). -->
diff --git a/build-arm64-bootstrap-tarball b/build-arm64-bootstrap-tarball
index 58f6580..bfd7f02 100755
--- a/build-arm64-bootstrap-tarball
+++ b/build-arm64-bootstrap-tarball
@@ -1,5 +1,8 @@
#!/bin/bash
+# Usage:
+# ./build-arm64-bootstrap-tarball <bootstrap-dir> [SDK-version]
+
set -euo pipefail
set -x
@@ -17,7 +20,7 @@ function parse-nuget-name-version-from-file() {
bootstrap_dir=$(readlink -f "$1")
-version=$(jq -r '.tools.dotnet' "$bootstrap_dir"/global.json)
+version=${2:-$(jq -r '.tools.dotnet' "$bootstrap_dir"/global.json)}
date=$(date +%F)
@@ -26,8 +29,8 @@ mkdir -p "dotnet-arm64-prebuilts-$date"
pushd "dotnet-arm64-prebuilts-$date"
# Binaries can be at one of several different URLs:
-# wget https://dotnetcli.azureedge.net/dotnet/Sdk/$version/dotnet-sdk-$version-l...
-wget https://dotnetbuilds.azureedge.net/public/Sdk/$version/dotnet-sdk-$versio...
+wget https://dotnetcli.azureedge.net/dotnet/Sdk/$version/dotnet-sdk-$version-l...
+#wget https://dotnetbuilds.azureedge.net/public/Sdk/$version/dotnet-sdk-$versio...
for archive in "$bootstrap_dir"/packages/archive/*.tar.gz; do
mapfile -t linux_x64_packages < <(tar tf "$archive" | grep linux-x64)
@@ -41,6 +44,7 @@ for archive in "$bootstrap_dir"/packages/archive/*.tar.gz; do
arm_name=${name/linux-x64/linux-arm64}
+ # https://gist.github.com/omajid/c04b6025de49d0b7b18ab4a7e789484e
nappo download --verbose "$arm_name" "$version"
done
diff --git a/build-dotnet-tarball b/build-dotnet-tarball
index 29fbfa8..500a9f6 100755
--- a/build-dotnet-tarball
+++ b/build-dotnet-tarball
@@ -141,10 +141,7 @@ fi
rm -rf "${tarball_name}"
-mkdir -p "${unmodified_tarball_name}"
-pushd "${unmodified_tarball_name}"
-tar xf ../"${unmodified_tarball_name}.tar.gz"
-popd
+tar xf "${unmodified_tarball_name}.tar.gz"
mv "${unmodified_tarball_name}" "${tarball_name}"
pushd "${tarball_name}"
@@ -178,11 +175,8 @@ rm -r src/runtime/src/tests/JIT/Performance/CodeQuality/Bytemark/
# https://github.com/NuGet/Home/issues/11094
rm -r src/nuget-client/test/EndToEnd
-# https://github.com/Humanizr/sample-aspnetmvc/issues/1
-rm -r src/source-build-externals/src/humanizer/samples/
-
-# https://github.com/dotnet/roslyn/issues/63257
-rm -r src/roslyn/scripts/GenerateSdkPackages
+# https://github.com/microsoft/ApplicationInsights-dotnet/issues/2670
+rm -r src/source-build-externals/src/application-insights/LOGGING/test/Shared/CustomTelemetryChannel.cs
popd
diff --git a/dotnet7.0.spec b/dotnet7.0.spec
index c0fa976..f1519cb 100644
--- a/dotnet7.0.spec
+++ b/dotnet7.0.spec
@@ -6,12 +6,12 @@
# until that's done, disable LTO. This has to happen before setting the flags below.
%define _lto_cflags %{nil}
-%global host_version 7.0.0-rc.1.22411.12
-%global runtime_version 7.0.0-rc.1.22411.12
-%global aspnetcore_runtime_version 7.0.0-rc.1.22412.2
-%global sdk_version 7.0.100-rc.1.22413.1
+%global host_version 7.0.0-rc.2.22472.3
+%global runtime_version 7.0.0-rc.2.22472.3
+%global aspnetcore_runtime_version 7.0.0-rc.2.22476.2
+%global sdk_version 7.0.100-rc.2.22511.1
%global sdk_feature_band_version %(echo %{sdk_version} | cut -d '-' -f 1 | sed -e 's|[[:digit:]][[:digit:]]$|00|')
-%global templates_version 7.0.0-rc.1.22412.2
+%global templates_version 7.0.0-rc.2.22476.2
#%%global templates_version %%(echo %%{runtime_version} | awk 'BEGIN { FS="."; OFS="." } {print $1, $2, $3+1 }')
%global host_rpm_version 7.0.0
@@ -21,7 +21,7 @@
# upstream can update releases without revving the SDK version so these don't always match
#%%global upstream_tag v%%{sdk_version}
-%global upstream_tag fd587269d0a1fa669d547f3a2e74f5d9353b6dcf
+%global upstream_tag v7.0.100-rc.2.22477.23
%if 0%{?fedora} || 0%{?rhel} < 8
%global use_bundled_libunwind 0
@@ -29,19 +29,24 @@
%global use_bundled_libunwind 1
%endif
-%ifarch aarch64 s390x
+%ifarch aarch64 ppc64le s390x
%global use_bundled_libunwind 1
%endif
-%ifarch x86_64
-%global runtime_arch x64
-%endif
%ifarch aarch64
%global runtime_arch arm64
%endif
+%ifarch ppc64le
+%global runtime_arch ppc64le
+%endif
%ifarch s390x
%global runtime_arch s390x
%endif
+%ifarch x86_64
+%global runtime_arch x64
+%endif
+
+%global mono_archs s390x ppc64le
%{!?runtime_id:%global runtime_id %(. /etc/os-release ; echo "${ID}.${VERSION_ID%%.*}")-%{runtime_arch}}
@@ -57,9 +62,11 @@ URL: https://github.com/dotnet/
# ./build-dotnet-tarball --bootstrap %%{upstream_tag}
Source0: dotnet-%{upstream_tag}-x64-bootstrap.tar.xz
# Generated via ./build-arm64-bootstrap-tarball
-Source1: dotnet-arm64-prebuilts-2022-08-17.tar.gz
+Source1: dotnet-arm64-prebuilts-2022-10-12.tar.gz
+# Generated manually, same pattern as the arm64 tarball
+Source2: dotnet-ppc64le-prebuilts-2022-10-21.tar.gz
# Generated manually, same pattern as the arm64 tarball
-Source2: dotnet-s390x-prebuilts-2021-10-29.tar.gz
+Source3: dotnet-s390x-prebuilts-2022-10-12.tar.gz
%else
# The source is generated on a Fedora box via:
# ./build-dotnet-tarball %%{upstream_tag}
@@ -69,11 +76,30 @@ Source0: dotnet-%{upstream_tag}.tar.gz
Source10: check-debug-symbols.py
Source11: dotnet.sh.in
+# https://github.com/dotnet/runtime/pull/76916
+Patch1: runtime-76916-mono-s390x-opcheckthis.patch
+# https://github.com/microsoft/vstest/pull/4028
+Patch2: vstest-4028-ppc64le.patch
+# https://github.com/microsoft/vstest/pull/4066
+Patch3: vstest-4066-s390x-ppc64le.patch
+# https://github.com/dotnet/installer/pull/14631
+Patch4: installer-14631-ppc64le.patch
+# https://github.com/dotnet/installer/pull/14792
+Patch5: installer-14792-mono.patch
+# https://github.com/dotnet/aspnetcore/pull/44583
+Patch6: aspnetcore-44583-ppc64le-crossgen.patch
+# https://github.com/dotnet/runtime/pull/77269
+Patch7: runtime-77269-mono-ppc64le-opcheckthis.patch
+# https://github.com/dotnet/runtime/pull/77270
+Patch8: runtime-77270-ppc64le-fsharp-crash.patch
+# https://github.com/dotnet/runtime/pull/77308
+Patch9: runtime-77308-ppc64le-delegate.patch
+# Disable apphost; there's no net6.0 apphost for ppc64le
+Patch10: roslyn-analyzers-ppc64le-apphost.patch
+
%if 0%{?fedora} || 0%{?rhel} >= 8
-# FIXME
-# ExclusiveArch: aarch64 x86_64 s390x
-ExclusiveArch: aarch64 x86_64
+ExclusiveArch: aarch64 ppc64le s390x x86_64
%else
ExclusiveArch: x86_64
%endif
@@ -100,6 +126,9 @@ BuildRequires: libunwind-devel
%ifarch aarch64
BuildRequires: lld
%endif
+# If the build ever crashes, then having lldb installed might help the
+# runtime generate a backtrace for the crash
+BuildRequires: lldb
BuildRequires: llvm
BuildRequires: lttng-ust-devel
BuildRequires: make
@@ -331,6 +360,20 @@ These are not meant for general use.
%prep
%if %{without bootstrap}
%setup -q -n dotnet-%{upstream_tag}
+
+# Remove all prebuilts
+find -iname '*.dll' -type f -delete
+find -iname '*.so' -type f -delete
+find -iname '*.tar.gz' -type f -delete
+find -iname '*.nupkg' -type f -delete
+find -iname '*.zip' -type f -delete
+
+rm -rf .dotnet/
+rm -rf packages/source-built
+
+mkdir -p packages/archive
+ln -s %{_libdir}/dotnet/source-built-artifacts/Private.SourceBuilt.Artifacts.*.tar.gz packages/archive/
+
%else
%setup -q -T -b 0 -n dotnet-%{upstream_tag}-x64-bootstrap
@@ -341,29 +384,49 @@ rm -rf .dotnet
%ifarch aarch64
tar -x --strip-components=1 -f %{SOURCE1} -C packages/prebuilt
%endif
-%ifarch s390x
+%ifarch ppc64le
tar -x --strip-components=1 -f %{SOURCE2} -C packages/prebuilt
%endif
+%ifarch s390x
+tar -x --strip-components=1 -f %{SOURCE3} -C packages/prebuilt
+%endif
+
mkdir -p .dotnet
tar xf packages/prebuilt/dotnet-sdk*.tar.gz -C .dotnet/
rm packages/prebuilt/dotnet-sdk*.tar.gz
+
boot_sdk_version=$(ls -1 .dotnet/sdk/)
sed -i -E 's|"dotnet": "[^"]+"|"dotnet" : "'$boot_sdk_version'"|' global.json
+
+%ifarch ppc64le s390x
+ilasm_version=$(ls packages/prebuilt| grep -i ilasm | tr 'A-Z' 'a-z' | sed -E 's|runtime.linux-'%{runtime_arch}'.microsoft.netcore.ilasm.||' | sed -E 's|.nupkg$||')
+echo $ilasm_version
+
+mkdir -p packages-customized-local
+pushd packages-customized-local
+tar xf ../packages/archive/Private.SourceBuilt.Artifacts.*.tar.gz
+sed -i -E 's|<MicrosoftNETCoreILAsmVersion>[^<]+</MicrosoftNETCoreILAsmVersion>|<MicrosoftNETCoreILAsmVersion>'$ilasm_version'</MicrosoftNETCoreILAsmVersion>|' PackageVersions.props
+sed -i -E 's|<MicrosoftNETCoreILDAsmVersion>[^<]+</MicrosoftNETCoreILDAsmVersion>|<MicrosoftNETCoreILDAsmVersion>'$ilasm_version'</MicrosoftNETCoreILDAsmVersion>|' PackageVersions.props
+tar czf ../packages/archive/Private.SourceBuilt.Artifacts.*.tar.gz *
+popd
+
%endif
%endif
-%if %{without bootstrap}
-# Remove all prebuilts
-find -iname '*.dll' -type f -delete
-find -iname '*.so' -type f -delete
-find -iname '*.tar.gz' -type f -delete
-find -iname '*.nupkg' -type f -delete
-find -iname '*.zip' -type f -delete
-rm -rf .dotnet/
-rm -rf packages/source-built
%endif
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
+%patch5 -p1
+%patch6 -p1
+%patch7 -p1
+%patch8 -p1
+%patch9 -p1
+%patch10 -p1
+
# Fix bad hardcoded path in build
sed -i 's|/usr/share/dotnet|%{_libdir}/dotnet|' src/runtime/src/native/corehost/hostmisc/pal.unix.cpp
@@ -429,15 +492,12 @@ export COMPlus_LTTng=0
export OPENSSL_ENABLE_SHA1_SIGNATURES=1
%endif
-%if 0%{?rhel}
-# See https://github.com/dotnet/source-build/issues/2991
-export DOTNET_NUGET_SIGNATURE_VERIFICATION=false
-%endif
-
VERBOSE=1 ./build.sh \
%if %{without bootstrap}
--with-sdk previously-built-dotnet \
- --with-packages %{_libdir}/dotnet/source-built-artifacts/Private.SourceBuilt.Artifacts.*.tar.gz
+%endif
+%ifarch %{mono_archs}
+ --use-mono-runtime \
%endif
-- \
/p:MinimalConsoleLogOutput=false \
@@ -576,8 +636,8 @@ export COMPlus_LTTng=0
%dir %{_libdir}/dotnet/sdk
%{_libdir}/dotnet/sdk/%{sdk_version}
%dir %{_libdir}/dotnet/sdk-manifests
-%{_libdir}/dotnet/sdk-manifests/6.0.300
%{_libdir}/dotnet/sdk-manifests/%{sdk_feature_band_version}
+%{_libdir}/dotnet/sdk-manifests/%{sdk_feature_band_version}-rc.1
%{_libdir}/dotnet/metadata
%dir %{_libdir}/dotnet/packs
@@ -587,6 +647,9 @@ export COMPlus_LTTng=0
%changelog
+* Thu Nov 09 2022 Omair Majid <omajid(a)redhat.com> - 7.0.100-0.1
+- Update to .NET 7 RC 2
+
* Wed May 11 2022 Omair Majid <omajid(a)redhat.com> - 6.0.105-1
- Update to .NET SDK 6.0.105 and Runtime 6.0.5
diff --git a/installer-14631-ppc64le.patch b/installer-14631-ppc64le.patch
new file mode 100644
index 0000000..5691df5
--- /dev/null
+++ b/installer-14631-ppc64le.patch
@@ -0,0 +1,98 @@
+From 564e481e39511d214d0d26dd902022decd0d93ea Mon Sep 17 00:00:00 2001
+From: Swapnali911 <Swapnali.Pawar1(a)ibm.com>
+Date: Fri, 30 Sep 2022 05:07:55 -0400
+Subject: [PATCH] Adding ppc64le arch for source build
+
+---
+ Directory.Build.props | 1 +
+ src/SourceBuild/tarball/content/Directory.Build.props | 1 +
+ src/redist/targets/Crossgen.targets | 4 ++--
+ src/redist/targets/GenerateBundledVersions.targets | 9 ++++++---
+ 4 files changed, 10 insertions(+), 5 deletions(-)
+
+diff --git a/Directory.Build.props b/Directory.Build.props
+index 61cc6ff6746..860785575f7 100644
+--- a/Directory.Build.props
++++ b/Directory.Build.props
+@@ -19,6 +19,7 @@
+ <BuildArchitecture>$([System.Runtime.InteropServices.RuntimeInformation]::ProcessArchitecture.ToString().ToLowerInvariant())</BuildArchitecture>
+ <Platform Condition="'$(Platform)' == '' AND '$(BuildArchitecture)' == 'arm64'">$(BuildArchitecture)</Platform>
+ <Platform Condition="'$(Platform)' == '' AND '$(BuildArchitecture)' == 's390x'">$(BuildArchitecture)</Platform>
++ <Platform Condition="'$(Platform)' == '' AND '$(BuildArchitecture)' == 'ppc64le'">$(BuildArchitecture)</Platform>
+ <Platform Condition="'$(Platform)' == ''">x64</Platform>
+
+ <UseStableVersions Condition="'$(UseStableVersions)' == ''">false</UseStableVersions>
+diff --git a/src/installer/Directory.Build.props b/src/installer/Directory.Build.props
+index 15c9d27b734..b87eeccca0d 100644
+--- a/src/installer/Directory.Build.props
++++ b/src/installer/Directory.Build.props
+@@ -11,6 +11,7 @@
+ <BuildArchitecture>$([System.Runtime.InteropServices.RuntimeInformation]::ProcessArchitecture.ToString().ToLowerInvariant())</BuildArchitecture>
+ <Architecture Condition="'$(Architecture)' == '' AND '$(BuildArchitecture)' == 'arm64'">$(BuildArchitecture)</Architecture>
+ <Architecture Condition="'$(Architecture)' == '' AND '$(BuildArchitecture)' == 's390x'">$(BuildArchitecture)</Architecture>
++ <Architecture Condition="'$(Architecture)' == '' AND '$(BuildArchitecture)' == 'ppc64le'">$(BuildArchitecture)</Architecture>
+ <Architecture Condition="'$(Architecture)' == ''">x64</Architecture>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(PgoInstrument)' == 'true'">
+diff --git a/src/installer/src/redist/targets/Crossgen.targets b/src/installer/src/redist/targets/Crossgen.targets
+index c7a7642e4eb..da7d186a152 100644
+--- a/src/installer/src/redist/targets/Crossgen.targets
++++ b/src/installer/src/redist/targets/Crossgen.targets
+@@ -1,7 +1,7 @@
+ <Project>
+- <!-- Crossgen is currently not supported on the s390x architecture. -->
++ <!-- Crossgen is currently not supported on the s390x, ppc64le architecture as using mono instead of CoreCLR. -->
+ <Target Name="CrossgenLayout"
+- Condition="'$(DISABLE_CROSSGEN)' == '' AND '$(Architecture)' != 's390x'"
++ Condition="'$(DISABLE_CROSSGEN)' == '' AND '$(Architecture)' != 's390x' AND '$(Architecture)' != 'ppc64le'"
+ DependsOnTargets="SetSdkBrandingInfo">
+
+ <PropertyGroup>
+diff --git a/src/installer/src/redist/targets/GenerateBundledVersions.targets b/src/installer/src/redist/targets/GenerateBundledVersions.targets
+index d1bee676355..58d1abfa720 100644
+--- a/src/installer/src/redist/targets/GenerateBundledVersions.targets
++++ b/src/installer/src/redist/targets/GenerateBundledVersions.targets
+@@ -168,6 +168,7 @@
+ linux-bionic-arm64;
+ linux-bionic-x64;
+ linux-bionic-x86;
++ linux-ppc64le;
+ "/>
+
+ <Net70RuntimePackRids Include="
+@@ -176,6 +177,7 @@
+ linux-bionic-arm64;
+ linux-bionic-x64;
+ linux-bionic-x86;
++ linux-ppc64le;
+ " />
+
+ <NetCoreAppHostRids Include="
+@@ -254,7 +256,8 @@
+
+ <AspNetCore31RuntimePackRids Include="@(AspNetCore30RuntimePackRids)" />
+ <AspNetCore50RuntimePackRids Include="@(AspNetCore31RuntimePackRids);linux-musl-arm;win-arm64" />
+- <AspNetCoreRuntimePackRids Include="@(AspNetCore50RuntimePackRids);osx-arm64;linux-s390x" />
++ <AspNetCore60RuntimePackRids Include="@(AspNetCore50RuntimePackRids);osx-arm64;linux-s390x" />
++ <AspNetCore70RuntimePackRids Include="@(AspNetCore60RuntimePackRids);linux-ppc64le" />
+
+ <WindowsDesktop30RuntimePackRids Include="win-x64;win-x86" />
+ <WindowsDesktop31RuntimePackRids Include="@(WindowsDesktop30RuntimePackRids)" />
+@@ -444,7 +447,7 @@ Copyright (c) .NET Foundation. All rights reserved.
+ TargetingPackName="Microsoft.AspNetCore.App.Ref"
+ TargetingPackVersion="$(MicrosoftAspNetCoreAppRefPackageVersion)"
+ RuntimePackNamePatterns="Microsoft.AspNetCore.App.Runtime.**RID**"
+- RuntimePackRuntimeIdentifiers="@(AspNetCoreRuntimePackRids, '%3B')"
++ RuntimePackRuntimeIdentifiers="@(AspNetCore70RuntimePackRids, '%3B')"
+ RuntimePackExcludedRuntimeIdentifiers="android"
+ />
+
+@@ -569,7 +572,7 @@ Copyright (c) .NET Foundation. All rights reserved.
+ TargetingPackName="Microsoft.AspNetCore.App.Ref"
+ TargetingPackVersion="$(_AspNet60TargetingPackVersion)"
+ RuntimePackNamePatterns="Microsoft.AspNetCore.App.Runtime.**RID**"
+- RuntimePackRuntimeIdentifiers="@(AspNetCoreRuntimePackRids, '%3B')"
++ RuntimePackRuntimeIdentifiers="@(AspNetCore60RuntimePackRids, '%3B')"
+ />
+
+ <KnownFrameworkReference Include="Microsoft.Windows.SDK.NET.Ref"
diff --git a/installer-14792-mono.patch b/installer-14792-mono.patch
new file mode 100644
index 0000000..2e321c7
--- /dev/null
+++ b/installer-14792-mono.patch
@@ -0,0 +1,432 @@
+Please note that the paths in this patch have been manually modified so
+we can apply it against an already-built tarball.
+
+From 9a7d07ab5a163b75a7b82cf8883d32553f34dcdb Mon Sep 17 00:00:00 2001
+From: Tom Deseyn <tom.deseyn(a)gmail.com>
+Date: Wed, 19 Oct 2022 15:21:40 +0200
+Subject: [PATCH] Enabled source-building with mono runtime on any
+ architecture.
+
+Adds an argument to the top-level build script to use the mono
+runtime, and sets the flags needed for the different repos
+to work with mono.
+---
+ eng/SourceBuild.props | 1 +
+ .../tarball/content/Directory.Build.props | 5 ++
+ src/SourceBuild/tarball/content/build.sh | 4 ++
+ .../content/repos/Directory.Build.props | 1 +
+ ...d-support-building-with-mono-runtime.patch | 24 +++++++++
+ ...d-support-building-with-mono-runtime.patch | 24 +++++++++
+ ...d-support-building-with-mono-runtime.patch | 51 +++++++++++++++++++
+ 7 files changed, 110 insertions(+)
+ create mode 100644 src/SourceBuild/tarball/patches/aspnetcore/0002-source-build-support-building-with-mono-runtime.patch
+ create mode 100644 src/SourceBuild/tarball/patches/runtime/0001-source-build-support-building-with-mono-runtime.patch
+ create mode 100644 src/SourceBuild/tarball/patches/sdk/0001-source-build-support-building-with-mono-runtime.patch
+
+diff --git a/eng/SourceBuild.props b/eng/SourceBuild.props
+index a2831d57455..9ebca97ff90 100644
+--- a/src/installer/eng/SourceBuild.props
++++ b/src/installer/eng/SourceBuild.props
+@@ -11,6 +11,7 @@
+ <InnerBuildArgs>$(InnerBuildArgs) /p:IncludeNuGetPackageArchive=false</InnerBuildArgs>
+ <InnerBuildArgs>$(InnerBuildArgs) /p:IncludeAdditionalSharedFrameworks=false</InnerBuildArgs>
+ <InnerBuildArgs>$(InnerBuildArgs) /p:IncludeSharedFrameworksForBackwardsCompatibilityTests=false</InnerBuildArgs>
++ <InnerBuildArgs Condition="'$(SourceBuildUseMonoRuntime)' == 'true'">$(InnerBuildArgs) /p:DISABLE_CROSSGEN=true</InnerBuildArgs>
+ </PropertyGroup>
+ </Target>
+
+diff --git a/Directory.Build.props b/Directory.Build.props
+index 860785575f7..982fb7f0725 100644
+--- a/Directory.Build.props
++++ b/Directory.Build.props
+@@ -24,6 +24,11 @@
+
+ <UseStableVersions Condition="'$(UseStableVersions)' == ''">false</UseStableVersions>
+
++ <SourceBuildUseMonoRuntime>false</SourceBuildUseMonoRuntime>
++ <!-- These architectures are only supported with mono runtime -->
++ <SourceBuildUseMonoRuntime Condition="'$(BuildArchitecture)' == 's390x'">true</SourceBuildUseMonoRuntime>
++ <SourceBuildUseMonoRuntime Condition="'$(BuildArchitecture)' == 'ppc64le'">true</SourceBuildUseMonoRuntime>
++
+ <!-- new supported portable/nonportable options. These control whether to build portable runtime
+ or portable SDK. The PortableBuild flag is only set in runtime-portable.proj and should
+ no longer be passed in. -->
+diff --git a/build.sh b/build.sh
+index e899d2f808c..17699c78cb7 100755
+--- a/build.sh
++++ b/build.sh
+@@ -11,6 +11,7 @@ usage() {
+ echo " --run-smoke-test don't build; run smoke tests"
+ echo " --with-packages <dir> use the specified directory of previously-built packages"
+ echo " --with-sdk <dir> use the SDK in the specified directory for bootstrapping"
++ echo " --use-mono-runtime output uses the mono runtime"
+ echo "use -- to send the remaining arguments to MSBuild"
+ echo ""
+ }
+@@ -65,6 +66,9 @@ while :; do
+ fi
+ shift
+ ;;
++ --use-mono-runtime)
++ MSBUILD_ARGUMENTS+=( "/p:SourceBuildUseMonoRuntime=true" )
++ ;;
+ --)
+ shift
+ echo "Detected '--': passing remaining parameters '$@' as build.sh arguments."
+diff --git a/repos/Directory.Build.props b/repos/Directory.Build.props
+index e4e3060af7f..04ab89d11dc 100644
+--- a/repos/Directory.Build.props
++++ b/repos/Directory.Build.props
+@@ -143,6 +143,7 @@
+ <StandardSourceBuildArgs>$(StandardSourceBuildArgs) /p:AdditionalSourceBuiltNupkgCacheDir="$(SourceBuiltPackagesPath)"</StandardSourceBuildArgs>
+ <StandardSourceBuildArgs>$(StandardSourceBuildArgs) /p:ReferencePackageNupkgCacheDir="$(ReferencePackagesDir)"</StandardSourceBuildArgs>
+ <StandardSourceBuildArgs>$(StandardSourceBuildArgs) /p:PreviouslySourceBuiltNupkgCacheDir="$(PrebuiltSourceBuiltPackagesPath)"</StandardSourceBuildArgs>
++ <StandardSourceBuildArgs>$(StandardSourceBuildArgs) /p:SourceBuildUseMonoRuntime=$(SourceBuildUseMonoRuntime)</StandardSourceBuildArgs>
+
+ <StandardSourceBuildCommand>$(ProjectDirectory)\build$(ShellExtension)</StandardSourceBuildCommand>
+ </PropertyGroup>
+diff --git a/src/aspnetcore/eng/SourceBuild.props b/src/aspnetcore/eng/SourceBuild.props
+index 32108e1f..3dfbd5ef 100644
+--- a/src/aspnetcore/eng/SourceBuild.props
++++ b/src/aspnetcore/eng/SourceBuild.props
+@@ -55,6 +55,7 @@
+
+ <PropertyGroup>
+ <InnerBuildArgs>$(InnerBuildArgs) /p:SourceBuildRuntimeIdentifier=$(TargetRuntimeIdentifier)</InnerBuildArgs>
++ <InnerBuildArgs Condition="'$(SourceBuildUseMonoRuntime)' == 'true'">$(InnerBuildArgs) /p:CrossgenOutput=false</InnerBuildArgs>
+ </PropertyGroup>
+ </Target>
+
+diff --git a/src/runtime/eng/SourceBuild.props b/src/runtime/eng/SourceBuild.props
+index c197d8afd..55c1c1d22 100644
+--- a/src/runtime/eng/SourceBuild.props
++++ b/src/runtime/eng/SourceBuild.props
+@@ -41,6 +41,7 @@
+ <InnerBuildArgs>$(InnerBuildArgs) /p:BuildDebPackage=false</InnerBuildArgs>
+ <InnerBuildArgs>$(InnerBuildArgs) /p:EnableNgenOptimization=false</InnerBuildArgs>
+ <InnerBuildArgs>$(InnerBuildArgs) /p:EnablePackageValidation=false</InnerBuildArgs>
++ <InnerBuildArgs Condition="'$(SourceBuildUseMonoRuntime)' == 'true'">$(InnerBuildArgs) /p:PrimaryRuntimeFlavor=Mono /p:RuntimeFlavor=Mono</InnerBuildArgs>
+ </PropertyGroup>
+ </Target>
+
+diff --git a/src/sdk/eng/SourceBuild.props b/src/sdk/eng/SourceBuild.props
+index 61b9a913708..2107a718419 100644
+--- a/src/sdk/eng/SourceBuild.props
++++ b/src/sdk/eng/SourceBuild.props
+@@ -8,6 +8,7 @@
+ <PropertyGroup>
+ <InnerBuildArgs>$(InnerBuildArgs) /p:Projects="$(InnerSourceBuildRepoRoot)\source-build.slnf"</InnerBuildArgs>
+ <InnerBuildArgs>$(InnerBuildArgs) /p:UseSharedCompilation=false</InnerBuildArgs>
++ <InnerBuildArgs Condition="'$(SourceBuildUseMonoRuntime)' == 'true'">$(InnerBuildArgs) /p:NativeAotSupported=false</InnerBuildArgs>
+ </PropertyGroup>
+ </Target>
+
+diff --git a/src/sdk/src/Layout/redist/targets/BundledSdks.targets b/src/sdk/src/Layout/redist/targets/BundledSdks.targets
+index 6f8b0fc3b33..64638ef1cff 100644
+--- a/src/sdk/src/Layout/redist/targets/BundledSdks.targets
++++ b/src/sdk/src/Layout/redist/targets/BundledSdks.targets
+@@ -5,6 +5,6 @@
+ <BundledSdk Include="FSharp.NET.Sdk" Version="1.0.4-bundled-0100" />
+ <BundledSdk Include="Microsoft.Docker.Sdk" Version="1.1.0" />
+ <BundledSdk Include="Microsoft.NET.ILLink.Tasks" Version="$(MicrosoftNETILLinkTasksPackageVersion)" />
+- <BundledSdk Include="Microsoft.DotNet.ILCompiler" Version="$(MicrosoftDotNetILCompilerPackageVersion)" />
++ <BundledSdk Include="Microsoft.DotNet.ILCompiler" Version="$(MicrosoftDotNetILCompilerPackageVersion)" Condition="'$(NativeAotSupported)' != 'false'" />
+ </ItemGroup>
+ </Project>
+diff --git a/src/sdk/src/Tasks/Common/Resources/Strings.resx b/src/sdk/src/Tasks/Common/Resources/Strings.resx
+index a347c736df5..426cb6aa96d 100644
+--- a/src/sdk/src/Tasks/Common/Resources/Strings.resx
++++ b/src/sdk/src/Tasks/Common/Resources/Strings.resx
+@@ -875,4 +875,8 @@ You may need to build the project on another operating system or architecture, o
+ <value>NETSDK1191: A runtime identifier for the property '{0}' couldn't be inferred. Specify a rid explicitly.</value>
+ <comment>{StrBegin="NETSDK1191: "}</comment>
+ </data>
++ <data name="AotNotSupported" xml:space="preserve">
++ <value>NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</value>
++ <comment>{StrBegin="NETSDK1193: "}</comment>
++ </data>
+ </root>
+diff --git a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.cs.xlf b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.cs.xlf
+index e477f7a489b..c75990f94e2 100644
+--- a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.cs.xlf
++++ b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.cs.xlf
+@@ -12,6 +12,11 @@
+ <target state="translated">NETSDK1183: Sestavení nelze optimalizovat pro kompilaci s předstihem: nebyl nalezen platný balíček modulu runtime. Buď nastavte vlastnost PublishAot na hodnotu false, nebo při publikování použijte podporovaný identifikátor modulu runtime. Při cílení na .NET 7 nebo vyšší nezapomeňte obnovit balíčky s vlastností PublishAot nastavenou na hodnotu true.</target>
+ <note>{StrBegin="NETSDK1183: "}</note>
+ </trans-unit>
++ <trans-unit id="AotNotSupported">
++ <source>NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</source>
++ <target state="new">NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</target>
++ <note>{StrBegin="NETSDK1193: "}</note>
++ </trans-unit>
+ <trans-unit id="AppConfigRequiresRootConfiguration">
+ <source>NETSDK1070: The application configuration file must have root configuration element.</source>
+ <target state="translated">NETSDK1070: Konfigurační soubor aplikace musí obsahovat kořenový element konfigurace.</target>
+diff --git a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.de.xlf b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.de.xlf
+index d8cd9725269..2e427931dd1 100644
+--- a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.de.xlf
++++ b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.de.xlf
+@@ -12,6 +12,11 @@
+ <target state="translated">NETSDK1183: Assemblys können nicht für Ahead-of-time-Kompilierung optimiert werden: Es wurde kein gültiges Runtimepaket gefunden. Legen Sie entweder die PublishAot-Eigenschaft auf FALSE fest, oder verwenden Sie beim Veröffentlichen einen unterstützten Runtimebezeichner. Wenn Sie .NET 7 oder höher verwenden, stellen Sie sicher, dass Sie Pakete wiederherstellen, bei denen die PublishAot-Eigenschaft auf TRUE festgelegt ist.</target>
+ <note>{StrBegin="NETSDK1183: "}</note>
+ </trans-unit>
++ <trans-unit id="AotNotSupported">
++ <source>NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</source>
++ <target state="new">NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</target>
++ <note>{StrBegin="NETSDK1193: "}</note>
++ </trans-unit>
+ <trans-unit id="AppConfigRequiresRootConfiguration">
+ <source>NETSDK1070: The application configuration file must have root configuration element.</source>
+ <target state="translated">NETSDK1070: Die Anwendungskonfigurationsdatei muss das Stammkonfigurationselement enthalten.</target>
+diff --git a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.es.xlf b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.es.xlf
+index 4c61e20b937..cb654c521fb 100644
+--- a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.es.xlf
++++ b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.es.xlf
+@@ -12,6 +12,11 @@
+ <target state="translated">NETSDK1183: No se pueden optimizar los ensamblados para la compilación Ahead of time: no se ha encontrado un paquete en tiempo de ejecución válido. Establezca la propiedad PublishAot en false o use un identificador de tiempo de ejecución compatible al publicar. Cuando el destino sea .NET 7 o una versión posterior, asegúrese de restaurar los paquetes con la propiedad PublishAot establecida en true.</target>
+ <note>{StrBegin="NETSDK1183: "}</note>
+ </trans-unit>
++ <trans-unit id="AotNotSupported">
++ <source>NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</source>
++ <target state="new">NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</target>
++ <note>{StrBegin="NETSDK1193: "}</note>
++ </trans-unit>
+ <trans-unit id="AppConfigRequiresRootConfiguration">
+ <source>NETSDK1070: The application configuration file must have root configuration element.</source>
+ <target state="translated">NETSDK1070: El archivo de configuración de la aplicación debe tener el elemento de configuración raíz.</target>
+diff --git a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.fr.xlf b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.fr.xlf
+index dfbb0391549..a97af754880 100644
+--- a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.fr.xlf
++++ b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.fr.xlf
+@@ -12,6 +12,11 @@
+ <target state="translated">NETSDK1183: Impossible d'optimiser les assemblys pour la compilation Ahead of time : un package d'exécution valide n'a pas été trouvé. Définissez la propriété PublishAot sur false ou utilisez un identificateur d'exécution pris en charge lors de la publication. Lorsque vous ciblez .NET 7 ou supérieur, assurez-vous de restaurer les packages avec la propriété PublishAot définie sur true.</target>
+ <note>{StrBegin="NETSDK1183: "}</note>
+ </trans-unit>
++ <trans-unit id="AotNotSupported">
++ <source>NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</source>
++ <target state="new">NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</target>
++ <note>{StrBegin="NETSDK1193: "}</note>
++ </trans-unit>
+ <trans-unit id="AppConfigRequiresRootConfiguration">
+ <source>NETSDK1070: The application configuration file must have root configuration element.</source>
+ <target state="translated">NETSDK1070: Le fichier de configuration de l'application doit avoir un élément de configuration racine.</target>
+diff --git a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.it.xlf b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.it.xlf
+index a768517271c..70fe2939526 100644
+--- a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.it.xlf
++++ b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.it.xlf
+@@ -12,6 +12,11 @@
+ <target state="translated">NETSDK1183: non è possibile ottimizzare gli assembly per la compilazione Ahead Of Time perché non è stato trovato alcun pacchetto di runtime valido. Impostare la proprietà PublishAot su false oppure usare un identificatore di runtime supportato durante la pubblicazione. Quando si usa .NET 7 o versioni successive, assicurarsi di ripristinare i pacchetti con la proprietà PublishAot impostata su true.</target>
+ <note>{StrBegin="NETSDK1183: "}</note>
+ </trans-unit>
++ <trans-unit id="AotNotSupported">
++ <source>NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</source>
++ <target state="new">NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</target>
++ <note>{StrBegin="NETSDK1193: "}</note>
++ </trans-unit>
+ <trans-unit id="AppConfigRequiresRootConfiguration">
+ <source>NETSDK1070: The application configuration file must have root configuration element.</source>
+ <target state="translated">NETSDK1070: il file di configurazione dell'applicazione deve avere un elemento di configurazione radice.</target>
+diff --git a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.ja.xlf b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.ja.xlf
+index c3713a3bb6f..42ba79f1034 100644
+--- a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.ja.xlf
++++ b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.ja.xlf
+@@ -12,6 +12,11 @@
+ <target state="translated">NETSDK1183: Ahead Of Time コンパイル用にアセンブリを最適化できません: 有効なランタイム パッケージが見つかりませんでした。PublishAot プロパティを false に設定するか、公開時に、サポートされているランタイム識別子を使用してください。.NET 7 以降を対象とする場合は、必ず PublishAot プロパティを true に設定してパッケージを復元してください。</target>
+ <note>{StrBegin="NETSDK1183: "}</note>
+ </trans-unit>
++ <trans-unit id="AotNotSupported">
++ <source>NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</source>
++ <target state="new">NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</target>
++ <note>{StrBegin="NETSDK1193: "}</note>
++ </trans-unit>
+ <trans-unit id="AppConfigRequiresRootConfiguration">
+ <source>NETSDK1070: The application configuration file must have root configuration element.</source>
+ <target state="translated">NETSDK1070: アプリケーション構成ファイルには、ルート構成要素が必要です。</target>
+diff --git a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.ko.xlf b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.ko.xlf
+index 86d77d024ad..f9695e37529 100644
+--- a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.ko.xlf
++++ b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.ko.xlf
+@@ -12,6 +12,11 @@
+ <target state="translated">NETSDK1183: Ahead of Time 컴파일을 위해 어셈블리를 최적화할 수 없습니다. 유효한 런타임 패키지를 찾을 수 없습니다. PublishAot 속성을 false로 설정하거나 게시할 때 지원되는 런타임 식별자를 사용하세요. .NET 7 이상을 대상으로 하는 경우 PublishAot 속성이 true로 설정된 패키지를 복원해야 합니다.</target>
+ <note>{StrBegin="NETSDK1183: "}</note>
+ </trans-unit>
++ <trans-unit id="AotNotSupported">
++ <source>NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</source>
++ <target state="new">NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</target>
++ <note>{StrBegin="NETSDK1193: "}</note>
++ </trans-unit>
+ <trans-unit id="AppConfigRequiresRootConfiguration">
+ <source>NETSDK1070: The application configuration file must have root configuration element.</source>
+ <target state="translated">NETSDK1070: 애플리케이션 구성 파일에는 루트 구성 요소가 있어야 합니다.</target>
+diff --git a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.pl.xlf b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.pl.xlf
+index b954c4f64f5..0594cfc5bad 100644
+--- a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.pl.xlf
++++ b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.pl.xlf
+@@ -12,6 +12,11 @@
+ <target state="translated">NETSDK1183: Nie można zoptymalizować zestawów pod kątem kompilacji z wyprzedzeniem: nie znaleziono prawidłowego pakietu środowiska uruchomieniowego. Ustaw właściwość PublishAot na wartość false lub użyj obsługiwanego identyfikatora środowiska uruchomieniowego podczas publikowania. W przypadku określania wartości docelowej platformy .NET 7 lub nowszej należy przywrócić pakiety z właściwością PublishAot ustawioną na wartość true.</target>
+ <note>{StrBegin="NETSDK1183: "}</note>
+ </trans-unit>
++ <trans-unit id="AotNotSupported">
++ <source>NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</source>
++ <target state="new">NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</target>
++ <note>{StrBegin="NETSDK1193: "}</note>
++ </trans-unit>
+ <trans-unit id="AppConfigRequiresRootConfiguration">
+ <source>NETSDK1070: The application configuration file must have root configuration element.</source>
+ <target state="translated">NETSDK1070: Plik konfiguracji aplikacji musi mieć główny element konfiguracji.</target>
+diff --git a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.pt-BR.xlf b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.pt-BR.xlf
+index 4153425cfce..ae701f4dc3b 100644
+--- a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.pt-BR.xlf
++++ b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.pt-BR.xlf
+@@ -12,6 +12,11 @@
+ <target state="translated">NETSDK1183: Não é possível otimizar assemblies para compilação antecipada: um pacote de tempo de execução válido não foi encontrado. Defina a propriedade PublishAot como false ou use um identificador de tempo de execução com suporte ao publicar. Ao direcionar o .NET 7 ou superior, certifique-se de restaurar os pacotes com a propriedade PublishAot definida como true.</target>
+ <note>{StrBegin="NETSDK1183: "}</note>
+ </trans-unit>
++ <trans-unit id="AotNotSupported">
++ <source>NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</source>
++ <target state="new">NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</target>
++ <note>{StrBegin="NETSDK1193: "}</note>
++ </trans-unit>
+ <trans-unit id="AppConfigRequiresRootConfiguration">
+ <source>NETSDK1070: The application configuration file must have root configuration element.</source>
+ <target state="translated">NETSDK1070: o arquivo de configuração do aplicativo deve ter um elemento de configuração raiz.</target>
+diff --git a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.ru.xlf b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.ru.xlf
+index e66e13cd417..1780c0eb89b 100644
+--- a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.ru.xlf
++++ b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.ru.xlf
+@@ -12,6 +12,11 @@
+ <target state="translated">NETSDK1183: не удалось оптимизировать сборки для компиляции Ahead Of Time: не найден допустимый пакет среды выполнения. Задайте для свойства PublishAot значение false либо используйте поддерживаемый идентификатор среды выполнения при публикации. При выборе .NET 7 или более поздней версии в качестве цели восстановите пакеты со свойством PublishAot со значением true.</target>
+ <note>{StrBegin="NETSDK1183: "}</note>
+ </trans-unit>
++ <trans-unit id="AotNotSupported">
++ <source>NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</source>
++ <target state="new">NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</target>
++ <note>{StrBegin="NETSDK1193: "}</note>
++ </trans-unit>
+ <trans-unit id="AppConfigRequiresRootConfiguration">
+ <source>NETSDK1070: The application configuration file must have root configuration element.</source>
+ <target state="translated">NETSDK1070: В файле конфигурации приложения должен присутствовать корневой элемент конфигурации.</target>
+diff --git a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.tr.xlf b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.tr.xlf
+index 4121fe024d6..d4ec2bbfea3 100644
+--- a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.tr.xlf
++++ b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.tr.xlf
+@@ -12,6 +12,11 @@
+ <target state="translated">NETSDK1183: Derlemeler, AOT derlemesi için iyileştirilemedi: geçerli bir çalışma zamanı paketi bulunamadı. PublishAot özelliğini false olarak ayarlayın veya yayımlarken desteklenen bir çalışma zamanı tanımlayıcısı kullanın. .NET 7 veya üzerini hedeflerken PublishAot özelliği true olarak ayarlanmış paketleri geri yüklediğinizden emin olun.</target>
+ <note>{StrBegin="NETSDK1183: "}</note>
+ </trans-unit>
++ <trans-unit id="AotNotSupported">
++ <source>NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</source>
++ <target state="new">NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</target>
++ <note>{StrBegin="NETSDK1193: "}</note>
++ </trans-unit>
+ <trans-unit id="AppConfigRequiresRootConfiguration">
+ <source>NETSDK1070: The application configuration file must have root configuration element.</source>
+ <target state="translated">NETSDK1070: Uygulama yapılandırma dosyasının kök yapılandırma öğesi olmalıdır.</target>
+diff --git a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.zh-Hans.xlf b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.zh-Hans.xlf
+index 5bd5617ccba..77323667f98 100644
+--- a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.zh-Hans.xlf
++++ b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.zh-Hans.xlf
+@@ -12,6 +12,11 @@
+ <target state="translated">NETSDK1183: 无法优化程序集以实现提前编译: 找不到有效的运行时包。将 PublishAot 属性设置为 false,或在发布时使用支持的运行时标识符。面向 .NET 7 或更高版本时,请确保还原将 PublishAot 属性设置为 true 的包。</target>
+ <note>{StrBegin="NETSDK1183: "}</note>
+ </trans-unit>
++ <trans-unit id="AotNotSupported">
++ <source>NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</source>
++ <target state="new">NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</target>
++ <note>{StrBegin="NETSDK1193: "}</note>
++ </trans-unit>
+ <trans-unit id="AppConfigRequiresRootConfiguration">
+ <source>NETSDK1070: The application configuration file must have root configuration element.</source>
+ <target state="translated">NETSDK1070: 应用程序配置文件必须具有根配置元素。</target>
+diff --git a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.zh-Hant.xlf b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.zh-Hant.xlf
+index c2e6be8b9be..ae573c7ed8b 100644
+--- a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.zh-Hant.xlf
++++ b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.zh-Hant.xlf
+@@ -12,6 +12,11 @@
+ <target state="translated">NETSDK1183: 無法為提前編譯最佳化組件: 找不到有效的執行階段套件。請將 PublishAot 屬性設為 false,或在發佈時使用支援的執行階段識別碼。以 .NET 7 或更高版本為目標時,請務必還原套件,將 PublishAot 屬性設為 true。</target>
+ <note>{StrBegin="NETSDK1183: "}</note>
+ </trans-unit>
++ <trans-unit id="AotNotSupported">
++ <source>NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</source>
++ <target state="new">NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</target>
++ <note>{StrBegin="NETSDK1193: "}</note>
++ </trans-unit>
+ <trans-unit id="AppConfigRequiresRootConfiguration">
+ <source>NETSDK1070: The application configuration file must have root configuration element.</source>
+ <target state="translated">NETSDK1070: 應用程式組態檔必須有根組態元素。</target>
+diff --git a/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.RuntimeIdentifierInference.targets b/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.RuntimeIdentifierInference.targets
+index 84b21ee0dd8..72d10f518af 100644
+--- a/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.RuntimeIdentifierInference.targets
++++ b/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.RuntimeIdentifierInference.targets
+@@ -178,6 +178,9 @@ Copyright (c) .NET Foundation. All rights reserved.
+ ResourceName="ImplicitRuntimeIdentifierResolutionForPublishPropertyFailed"
+ FormatArguments="PublishAot"/>
+
++ <NETSdkError Condition="'$(PublishAot)' == 'true' and '$(PublishAotSupported)' != 'true'"
++ ResourceName="AotNotSupported" />
++
+ <!-- End of implicit RID resolver checks.-->
+ <NETSdkError Condition="'$(SelfContained)' == 'true' and '$(UseAppHost)' != 'true' and '$(_RuntimeIdentifierUsesAppHost)' == 'true'"
+ ResourceName="CannotUseSelfContainedWithoutAppHost" />
+diff --git a/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.props b/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.props
+index 73a182102d1..b7eee4dfe3d 100644
+--- a/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.props
++++ b/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.props
+@@ -116,6 +116,8 @@ Copyright (c) .NET Foundation. All rights reserved.
+ <MSBuildCopyContentTransitively Condition="'$(MSBuildCopyContentTransitively)' == ''">true</MSBuildCopyContentTransitively>
+ <ResolveAssemblyReferenceOutputUnresolvedAssemblyConflicts Condition="'$(ResolveAssemblyReferenceOutputUnresolvedAssemblyConflicts)' == ''">true</ResolveAssemblyReferenceOutputUnresolvedAssemblyConflicts>
+
++ <PublishAotSupported>false</PublishAotSupported>
++ <PublishAotSupported Condition="Exists('$(MSBuildThisFileDirectory)../../Microsoft.DotNet.ILCompiler')">true</PublishAotSupported>
+ <!-- Uncomment this once https://github.com/Microsoft/visualfsharp/issues/3207 gets fixed -->
+ <!-- <WarningsAsErrors>$(WarningsAsErrors);NU1605</WarningsAsErrors> -->
+ </PropertyGroup>
+@@ -151,7 +153,7 @@ Copyright (c) .NET Foundation. All rights reserved.
+ <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.Sdk.CSharp.props" Condition="'$(MSBuildProjectExtension)' == '.csproj'" />
+ <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.Sdk.VisualBasic.props" Condition="'$(MSBuildProjectExtension)' == '.vbproj'" />
+ <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.Sdk.FSharp.props" Condition="'$(MSBuildProjectExtension)' == '.fsproj'" />
+- <Import Project="Sdk.props" Sdk="Microsoft.DotNet.ILCompiler" />
++ <Import Project="Sdk.props" Sdk="Microsoft.DotNet.ILCompiler" Condition="'$(PublishAotSupported)' == 'true'" />
+ <Import Project="Sdk.props" Sdk="Microsoft.NET.ILLink.Tasks" />
+
+ <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.PackTool.props" />
+diff --git a/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.targets b/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.targets
+index 4311ec0ecea..1f80ab9ded0 100644
+--- a/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.targets
++++ b/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.targets
+@@ -1175,7 +1175,7 @@ Copyright (c) .NET Foundation. All rights reserved.
+ <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.Sdk.CSharp.targets" Condition="'$(Language)' == 'C#'" />
+ <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.Sdk.VisualBasic.targets" Condition="'$(Language)' == 'VB'" />
+ <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.Sdk.FSharp.targets" Condition="'$(Language)' == 'F#'" />
+- <Import Project="$(ILCompilerTargetsPath)" Condition="'$(PublishAot)' == 'true'"/>
++ <Import Project="$(ILCompilerTargetsPath)" Condition="'$(PublishAot)' == 'true' and '$(PublishAotSupported)' == 'true'"/>
+ <Import Project="$(ILLinkTargetsPath)" Condition="'$(Language)' != 'C++'" />
+ <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.Sdk.Analyzers.targets" Condition="'$(Language)' == 'C#' or '$(Language)' == 'VB'" />
+
+diff --git a/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Publish.targets b/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Publish.targets
+index a943e6615bf..8593957f3d6 100644
+--- a/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Publish.targets
++++ b/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Publish.targets
+@@ -111,6 +111,8 @@ Copyright (c) .NET Foundation. All rights reserved.
+ '$(EnableCompressionInSingleFile)' == 'true' And
+ '$(SelfContained)' != 'true'"
+ ResourceName="CompressionInSingleFileRequiresSelfContained" />
++ <NETSdkError Condition="'$(PublishAot)' == 'true' and '$(PublishAotSupported)' != 'true'"
++ ResourceName="AotNotSupported" />
+
+ <!-- Enable warning for trying to use PublishRelease or PackRelease with a solution if env-var is not set.-->
+ <NETSdkWarning Condition="'$(PublishRelease)' != '' and '$(SolutionExt)' == '.sln' and '$(DOTNET_CLI_ENABLE_PUBLISH_RELEASE_FOR_SOLUTIONS)' == ''"
+diff --git a/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.RuntimeIdentifierInference.targets b/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.RuntimeIdentifierInference.targets
+index 72d10f518af..84b21ee0dd8 100644
+--- a/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.RuntimeIdentifierInference.targets
++++ b/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.RuntimeIdentifierInference.targets
+@@ -178,9 +178,6 @@ Copyright (c) .NET Foundation. All rights reserved.
+ ResourceName="ImplicitRuntimeIdentifierResolutionForPublishPropertyFailed"
+ FormatArguments="PublishAot"/>
+
+- <NETSdkError Condition="'$(PublishAot)' == 'true' and '$(PublishAotSupported)' != 'true'"
+- ResourceName="AotNotSupported" />
+-
+ <!-- End of implicit RID resolver checks.-->
+ <NETSdkError Condition="'$(SelfContained)' == 'true' and '$(UseAppHost)' != 'true' and '$(_RuntimeIdentifierUsesAppHost)' == 'true'"
+ ResourceName="CannotUseSelfContainedWithoutAppHost" />
diff --git a/roslyn-analyzers-ppc64le-apphost.patch b/roslyn-analyzers-ppc64le-apphost.patch
new file mode 100644
index 0000000..4dd465c
--- /dev/null
+++ b/roslyn-analyzers-ppc64le-apphost.patch
@@ -0,0 +1,12 @@
+diff --git a/src/roslyn-analyzers/src/PerformanceTests/Tests/PerformanceTests.csproj b/src/roslyn-analyzers/src/PerformanceTests/Tests/PerformanceTests.csproj
+index 044a2aba4..b3f8f2611 100644
+--- a/src/roslyn-analyzers/src/PerformanceTests/Tests/PerformanceTests.csproj
++++ b/src/roslyn-analyzers/src/PerformanceTests/Tests/PerformanceTests.csproj
+@@ -4,6 +4,7 @@
+ <LangVersion>preview</LangVersion>
+ <Nullable>disable</Nullable>
+ <OutputType>Exe</OutputType>
++ <UseAppHost>false</UseAppHost>
+ </PropertyGroup>
+ <PropertyGroup>
+ <NonShipping>true</NonShipping>
diff --git a/rpminspect.yaml b/rpminspect.yaml
index edc369a..e719510 100644
--- a/rpminspect.yaml
+++ b/rpminspect.yaml
@@ -1,12 +1,21 @@
---
inspections:
- # We ship an empty dotnet package that installs the latest SDK, but
- # also a newer SDK when we have that
- emptyrpm: off
- # We patch upstream a lot, no need to reject patches
- patches: off
+ # We ship an empty dotnet package that installs the latest SDK, but
+ # also a newer SDK when we have that
+ emptyrpm: off
+ # We patch upstream a lot, no need to reject patches
+ patches: off
+badfuncs:
+ allowed:
+ # The Mono runtime (used on s390x, for example), uses inet_addr for
+ # debugging (such as sending the control flow graph to a remote process).
+ # See runtime/src/mono/mono/mini/cfgdump.c. This isn't part of any
+ # standard networking facility; networking APIs are implemented/used in
+ # libSystem*so.
+ /usr/lib64/dotnet/shared/Microsoft.NETCore.App/*/libcoreclr.so:
+ - inet_addr
runpath:
- # Upstream explicitly sets $ORIGIN/netcoredeps as an RPATH
- # See https://github.com/dotnet/core/blob/main/Documentation/self-contained-lin...
- allowed_origin_paths:
- - /netcoredeps
+ # Upstream explicitly sets $ORIGIN/netcoredeps as an RPATH
+ # See https://github.com/dotnet/core/blob/main/Documentation/self-contained-lin...
+ allowed_origin_paths:
+ - /netcoredeps
diff --git a/runtime-76916-mono-s390x-opcheckthis.patch b/runtime-76916-mono-s390x-opcheckthis.patch
new file mode 100644
index 0000000..b3724a9
--- /dev/null
+++ b/runtime-76916-mono-s390x-opcheckthis.patch
@@ -0,0 +1,28 @@
+From 7b46eae144e3a6a430155e824fc33e3f38fab427 Mon Sep 17 00:00:00 2001
+From: Ulrich Weigand <ulrich.weigand(a)de.ibm.com>
+Date: Wed, 12 Oct 2022 09:53:09 +0200
+Subject: [PATCH] [mono][s390x] Fix wrong implementation of OP_CHECK_THIS
+
+* Only access a single byte in memory for OP_CHECK_THIS
+
+* Remove unnecessary ltgr instruction
+
+* Fixes https://github.com/dotnet/runtime/issues/76915
+---
+ src/mono/mono/mini/mini-s390x.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/src/runtime/src/mono/mono/mini/mini-s390x.c b/src/runtime/src/mono/mono/mini/mini-s390x.c
+index 7c7a936ed9701..26e6ba1d32a3b 100644
+--- a/src/runtime/src/mono/mono/mini/mini-s390x.c
++++ b/src/runtime/src/mono/mono/mini/mini-s390x.c
+@@ -3594,8 +3594,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
+ break;
+ case OP_CHECK_THIS: {
+ /* ensure ins->sreg1 is not NULL */
+- s390_lg (code, s390_r0, 0, ins->sreg1, 0);
+- s390_ltgr (code, s390_r0, s390_r0);
++ s390_llgc (code, s390_r0, 0, ins->sreg1, 0);
+ }
+ break;
+ case OP_ARGLIST: {
diff --git a/runtime-77269-mono-ppc64le-opcheckthis.patch b/runtime-77269-mono-ppc64le-opcheckthis.patch
new file mode 100644
index 0000000..a959beb
--- /dev/null
+++ b/runtime-77269-mono-ppc64le-opcheckthis.patch
@@ -0,0 +1,23 @@
+From f163003da28cd01866b15233116d5efd53b1a2ef Mon Sep 17 00:00:00 2001
+From: Sapana Khemkar <sapana.khemkar(a)ibm.com>
+Date: Thu, 13 Oct 2022 07:45:23 +0000
+Subject: [PATCH] use byte load instruction in OP_CHECK_THIS instead of double
+ word instruction
+
+---
+ src/runtime/src/mono/mono/mini/mini-ppc.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/runtime/src/mono/mono/mini/mini-ppc.c b/src/runtime/src/mono/mono/mini/mini-ppc.c
+index bc97b497af93a..a2d8c5a714e3b 100644
+--- a/src/runtime/src/mono/mono/mini/mini-ppc.c
++++ b/src/runtime/src/mono/mono/mini/mini-ppc.c
+@@ -3837,7 +3837,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
+ }
+ case OP_CHECK_THIS:
+ /* ensure ins->sreg1 is not NULL */
+- ppc_ldptr (code, ppc_r0, 0, ins->sreg1);
++ ppc_lbz (code, ppc_r0, 0, ins->sreg1);
+ break;
+ case OP_ARGLIST: {
+ long cookie_offset = cfg->sig_cookie + cfg->stack_usage;
diff --git a/runtime-77270-ppc64le-fsharp-crash.patch b/runtime-77270-ppc64le-fsharp-crash.patch
new file mode 100644
index 0000000..e135b8b
--- /dev/null
+++ b/runtime-77270-ppc64le-fsharp-crash.patch
@@ -0,0 +1,56 @@
+From 14749457ff716cebd043b4e41aad622f9ac89586 Mon Sep 17 00:00:00 2001
+From: Alhad Deshpande <Alhad.Deshpande1(a)ibm.com>
+Date: Wed, 19 Oct 2022 06:29:54 +0000
+Subject: [PATCH] Fixed FSharp crash issue
+
+---
+ src/mono/mono/mini/mini-ppc.c | 24 ++++++++++++------------
+ 1 file changed, 12 insertions(+), 12 deletions(-)
+
+diff --git a/src/runtime/src/mono/mono/mini/mini-ppc.c b/src/runtime/src/mono/mono/mini/mini-ppc.c
+index bc97b497af93a..3df60c6a925f6 100644
+--- a/src/runtime/src/mono/mono/mini/mini-ppc.c
++++ b/src/runtime/src/mono/mono/mini/mini-ppc.c
+@@ -3782,23 +3782,11 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
+ ppc_addis (code, ppc_r12, cfg->frame_reg, ppc_ha(cfg->stack_usage));
+ ppc_addi (code, ppc_r12, ppc_r12, cfg->stack_usage);
+ }
+- if (!cfg->method->save_lmf) {
+- pos = 0;
+- for (i = 31; i >= 13; --i) {
+- if (cfg->used_int_regs & (1 << i)) {
+- pos += sizeof (target_mgreg_t);
+- ppc_ldptr (code, i, -pos, ppc_r12);
+- }
+- }
+- } else {
+- /* FIXME restore from MonoLMF: though this can't happen yet */
+- }
+
+ /* Copy arguments on the stack to our argument area */
+ if (call->stack_usage) {
+ code = emit_memcpy (code, call->stack_usage, ppc_r12, PPC_STACK_PARAM_OFFSET, ppc_sp, PPC_STACK_PARAM_OFFSET);
+ /* r12 was clobbered */
+- g_assert (cfg->frame_reg == ppc_sp);
+ if (ppc_is_imm16 (cfg->stack_usage)) {
+ ppc_addi (code, ppc_r12, cfg->frame_reg, cfg->stack_usage);
+ } else {
+@@ -3809,6 +3797,18 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
+ }
+ }
+
++ if (!cfg->method->save_lmf) {
++ pos = 0;
++ for (i = 31; i >= 13; --i) {
++ if (cfg->used_int_regs & (1 << i)) {
++ pos += sizeof (target_mgreg_t);
++ ppc_ldptr (code, i, -pos, ppc_r12);
++ }
++ }
++ } else {
++ /* FIXME restore from MonoLMF: though this can't happen yet */
++ }
++
+ ppc_mr (code, ppc_sp, ppc_r12);
+ mono_add_patch_info (cfg, (guint8*) code - cfg->native_code, MONO_PATCH_INFO_METHOD_JUMP, call->method);
+ cfg->thunk_area += THUNK_SIZE;
diff --git a/runtime-77308-ppc64le-delegate.patch b/runtime-77308-ppc64le-delegate.patch
new file mode 100644
index 0000000..4c5464a
--- /dev/null
+++ b/runtime-77308-ppc64le-delegate.patch
@@ -0,0 +1,60 @@
+diff --git a/src/runtime/src/mono/mono/mini/mini-ppc.c b/src/runtime/src/mono/mono/mini/mini-ppc.c
+index db669f8b5da0f..73a26c02b18aa 100644
+--- a/src/runtime/src/mono/mono/mini/mini-ppc.c
++++ b/src/runtime/src/mono/mono/mini/mini-ppc.c
+@@ -470,10 +470,54 @@ mono_arch_get_delegate_invoke_impl (MonoMethodSignature *sig, gboolean has_targe
+ return start;
+ }
+
++/**
++ *
++ * @brief Architecture-specific delegation virtual trampoline processing
++ *
++ * @param[in] @sig - Method signature
++ * @param[in] @method - Method
++ * @param[in] @offset - Offset into vtable
++ * @param[in] @load_imt_reg - Whether to load the LMT register
++ * @returns Trampoline
++ *
++ * Return a pointer to a delegation virtual trampoline
++ */
++
+ gpointer
+ mono_arch_get_delegate_virtual_invoke_impl (MonoMethodSignature *sig, MonoMethod *method, int offset, gboolean load_imt_reg)
+ {
+- return NULL;
++ guint8 *code, *start;
++ int size = 32;
++
++ start = code = (guint8 *) mono_global_codeman_reserve (size);
++
++ /*
++ * Replace the "this" argument with the target
++ */
++ ppc_mr (code, ppc_r12, ppc_r3);
++ ppc_ldptr (code, ppc_r3, MONO_STRUCT_OFFSET(MonoDelegate, target), ppc_r12);
++
++ /*
++ * Load the IMT register, if needed
++ */
++ if (load_imt_reg) {
++ ppc_ldptr (code, MONO_ARCH_IMT_REG, MONO_STRUCT_OFFSET(MonoDelegate, method), ppc_r12);
++ }
++
++ /*
++ * Load the vTable
++ */
++ ppc_ldptr (code, ppc_r12, MONO_STRUCT_OFFSET(MonoObject, vtable), ppc_r3);
++ if (!ppc_is_imm16(offset))
++ ppc_addis (code, ppc_r12, ppc_r12, ppc_ha(offset));
++ ppc_ldptr (code, ppc_r12, offset, ppc_r12);
++ ppc_mtctr (code, ppc_r12);
++ ppc_bcctr (code, PPC_BR_ALWAYS, 0);
++
++ mono_arch_flush_icache (start, code - start);
++ MONO_PROFILER_RAISE (jit_code_buffer, (start, code - start, MONO_PROFILER_CODE_BUFFER_DELEGATE_INVOKE, NULL));
++
++ return(start);
+ }
+
+ gpointer
diff --git a/update-release b/update-release
index 46dc018..54c7307 100755
--- a/update-release
+++ b/update-release
@@ -1,18 +1,19 @@
#!/bin/bash
# Usage:
-# ./update-release sdk-version runtime-version [--bug bug-id] [--tarball tarball-name]
+# ./update-release sdk-version runtime-version [--bug bug-id] [--tarball tarball-name] [--larger-rpm-release]
set -euo pipefail
IFS=$'\n\t'
print_usage() {
echo " Usage:"
- echo " ./update-release sdk-version runtime-version [--bug bug-id] [--tarball tarball-name]"
+ echo " ./update-release sdk-version runtime-version [--bug bug-id] [--tarball tarball-name] [--larger-rpm-release]"
}
user_provided_tarball_name=""
+rpm_release=1
positional_args=()
bug_ids=()
while [[ "$#" -gt 0 ]]; do
@@ -32,6 +33,10 @@ while [[ "$#" -gt 0 ]]; do
shift;
shift;
;;
+ --larger-rpm-release)
+ rpm_release="2"
+ shift;
+ ;;
*)
positional_args+=("$1")
shift
@@ -56,13 +61,19 @@ fi
host_version="$runtime_version"
-tag=v${sdk_version}
+if [[ "$runtime_version" == "3.1"* ]]; then
+ tag=v${sdk_version}-SDK
+else
+ tag=v${sdk_version}
+fi
if [[ -f "dotnet-${tag}-original.tar.gz" ]]; then
echo "dotnet-${tag}-original.tar.gz alredy exists, not rebuilding tarball"
else
if [[ -n "${user_provided_tarball_name}" ]]; then
./rename-tarball "$user_provided_tarball_name" "dotnet-${tag}-original.tar.gz"
+ elif [[ -f "dotnet-${sdk_version}-SDK.tar.gz" ]]; then
+ ./rename-tarball "dotnet-${sdk_version}-SDK.tar.gz" "dotnet-${tag}-original.tar.gz"
elif [[ -f "dotnet-${sdk_version}.tar.gz" ]]; then
./rename-tarball "dotnet-${sdk_version}.tar.gz" "dotnet-${tag}-original.tar.gz"
elif [[ -f "dotnet-${runtime_version}.tar.gz" ]]; then
@@ -94,8 +105,8 @@ echo "$commit_message" > git-commit-message
rpmdev-bumpspec --comment="$comment" "$spec_file"
-# Reset release to 1 in 'Release' tag
-sed -i -E 's|^Release: [[:digit:]]+%|Release: 1%|' "$spec_file"
+# Reset release in 'Release' tag
+sed -i -E 's|^Release: [[:digit:]]+%|Release: '"$rpm_release"'%|' "$spec_file"
# Reset Release in changelog comment
# See https://stackoverflow.com/questions/18620153/find-matching-text-and-repla...
-sed -i -E '/^%changelog$/!b;n;s/-[[:digit:]]+$/-1/' "$spec_file"
+sed -i -E '/^%changelog$/!b;n;s/-[[:digit:]]+$/-'"$rpm_release"'/' "$spec_file"
diff --git a/vstest-4028-ppc64le.patch b/vstest-4028-ppc64le.patch
new file mode 100644
index 0000000..ee31759
--- /dev/null
+++ b/vstest-4028-ppc64le.patch
@@ -0,0 +1,294 @@
+From 96591cb1ac589021b9f31854a13f8fe3dd565f25 Mon Sep 17 00:00:00 2001
+From: Sapana Khemkar <Sapana.Khemkar(a)ibm.com>
+Date: Tue, 27 Sep 2022 13:08:43 +0530
+Subject: [PATCH 1/4] add support for ppc64le processor architecture
+
+---
+ src/Microsoft.TestPlatform.ObjectModel/Architecture.cs | 3 ++-
+ .../Interfaces/System/PlatformArchitecture.cs | 1 +
+ .../netcore/System/PlatformEnvironment.cs | 1 +
+ .../netcore/System/ProcessHelper.cs | 1 +
+ .../Hosting/DefaultTestHostManager.cs | 1 +
+ src/vstest.console/TestPlatformHelpers/TestRequestManager.cs | 2 ++
+ .../Processors/PlatformArgumentProcessorTests.cs | 4 ++--
+ 7 files changed, 10 insertions(+), 3 deletions(-)
+
+diff --git a/src/vstest/src/Microsoft.TestPlatform.ObjectModel/Architecture.cs b/src/vstest/src/Microsoft.TestPlatform.ObjectModel/Architecture.cs
+index 6c9b9bcde5..7879358840 100644
+--- a/src/vstest/src/Microsoft.TestPlatform.ObjectModel/Architecture.cs
++++ b/src/vstest/src/Microsoft.TestPlatform.ObjectModel/Architecture.cs
+@@ -11,5 +11,6 @@ public enum Architecture
+ ARM,
+ AnyCPU,
+ ARM64,
+- S390x
++ S390x,
++ PPC64le
+ }
+diff --git a/src/vstest/src/Microsoft.TestPlatform.PlatformAbstractions/Interfaces/System/PlatformArchitecture.cs b/src/vstest/src/Microsoft.TestPlatform.PlatformAbstractions/Interfaces/System/PlatformArchitecture.cs
+index b1d477c7d3..aa81ca0ffc 100644
+--- a/src/vstest/src/Microsoft.TestPlatform.PlatformAbstractions/Interfaces/System/PlatformArchitecture.cs
++++ b/src/vstest/src/Microsoft.TestPlatform.PlatformAbstractions/Interfaces/System/PlatformArchitecture.cs
+@@ -13,4 +13,5 @@ public enum PlatformArchitecture
+ ARM,
+ ARM64,
+ S390x,
++ PPC64le,
+ }
+diff --git a/src/vstest/src/Microsoft.TestPlatform.PlatformAbstractions/netcore/System/PlatformEnvironment.cs b/src/vstest/src/Microsoft.TestPlatform.PlatformAbstractions/netcore/System/PlatformEnvironment.cs
+index 10d4a61570..14d1234ef6 100644
+--- a/src/vstest/src/Microsoft.TestPlatform.PlatformAbstractions/netcore/System/PlatformEnvironment.cs
++++ b/src/vstest/src/Microsoft.TestPlatform.PlatformAbstractions/netcore/System/PlatformEnvironment.cs
+@@ -28,6 +28,7 @@ public PlatformArchitecture Architecture
+ // preview 6 or later, so use the numerical value for now.
+ // case System.Runtime.InteropServices.Architecture.S390x:
+ (Architecture)5 => PlatformArchitecture.S390x,
++ (Architecture)6 => PlatformArchitecture.PPC64le,
+ _ => throw new NotSupportedException(),
+ };
+ }
+diff --git a/src/vstest/src/Microsoft.TestPlatform.PlatformAbstractions/netcore/System/ProcessHelper.cs b/src/vstest/src/Microsoft.TestPlatform.PlatformAbstractions/netcore/System/ProcessHelper.cs
+index 6cf4b0f91b..d1e31bb0f6 100644
+--- a/src/vstest/src/Microsoft.TestPlatform.PlatformAbstractions/netcore/System/ProcessHelper.cs
++++ b/src/vstest/src/Microsoft.TestPlatform.PlatformAbstractions/netcore/System/ProcessHelper.cs
+@@ -41,6 +41,7 @@ public PlatformArchitecture GetCurrentProcessArchitecture()
+ // preview 6 or later, so use the numerical value for now.
+ // case System.Runtime.InteropServices.Architecture.S390x:
+ (Architecture)5 => PlatformArchitecture.S390x,
++ (Architecture)6 => PlatformArchitecture.PPC64le,
+ _ => throw new NotSupportedException(),
+ };
+ }
+diff --git a/src/vstest/src/Microsoft.TestPlatform.TestHostProvider/Hosting/DefaultTestHostManager.cs b/src/vstest/src/Microsoft.TestPlatform.TestHostProvider/Hosting/DefaultTestHostManager.cs
+index 2eca302b43..54fa36e344 100644
+--- a/src/vstest/src/Microsoft.TestPlatform.TestHostProvider/Hosting/DefaultTestHostManager.cs
++++ b/src/vstest/src/Microsoft.TestPlatform.TestHostProvider/Hosting/DefaultTestHostManager.cs
+@@ -274,6 +274,7 @@ private static string GetTestHostName(Architecture architecture, Framework targe
+ PlatformArchitecture.ARM => Architecture.ARM,
+ PlatformArchitecture.ARM64 => Architecture.ARM64,
+ PlatformArchitecture.S390x => Architecture.S390x,
++ PlatformArchitecture.PPC64le => Architecture.PPC64le,
+ _ => throw new NotSupportedException(),
+ };
+
+diff --git a/src/vstest/src/vstest.console/TestPlatformHelpers/TestRequestManager.cs b/src/vstest/src/vstest.console/TestPlatformHelpers/TestRequestManager.cs
+index 642e36bb9e..c7a0f93927 100644
+--- a/src/vstest/src/vstest.console/TestPlatformHelpers/TestRequestManager.cs
++++ b/src/vstest/src/vstest.console/TestPlatformHelpers/TestRequestManager.cs
+@@ -841,6 +841,8 @@ static Architecture TranslateToArchitecture(PlatformArchitecture targetArchitect
+ return Architecture.ARM64;
+ case PlatformArchitecture.S390x:
+ return Architecture.S390x;
++ case PlatformArchitecture.PPC64le:
++ return Architecture.PPC64le;
+ default:
+ EqtTrace.Error($"TestRequestManager.TranslateToArchitecture: Unhandled architecture '{targetArchitecture}'.");
+ break;
+diff --git a/src/vstest/test/vstest.console.UnitTests/Processors/PlatformArgumentProcessorTests.cs b/src/vstest/test/vstest.console.UnitTests/Processors/PlatformArgumentProcessorTests.cs
+index 207e4590fd..472688248d 100644
+--- a/src/vstest/test/vstest.console.UnitTests/Processors/PlatformArgumentProcessorTests.cs
++++ b/src/vstest/test/vstest.console.UnitTests/Processors/PlatformArgumentProcessorTests.cs
+@@ -85,7 +85,7 @@ public void InitializeShouldThrowIfArgumentIsNotAnArchitecture()
+ {
+ ExceptionUtilities.ThrowsException<CommandLineException>(
+ () => _executor.Initialize("foo"),
+- "Invalid platform type: {0}. Valid platform types are X86, X64, ARM, ARM64, S390x.",
++ "Invalid platform type: {0}. Valid platform types are X86, X64, ARM, ARM64, S390x, PPC64le.",
+ "foo");
+ }
+
+@@ -94,7 +94,7 @@ public void InitializeShouldThrowIfArgumentIsNotASupportedArchitecture()
+ {
+ ExceptionUtilities.ThrowsException<CommandLineException>(
+ () => _executor.Initialize("AnyCPU"),
+- "Invalid platform type: {0}. Valid platform types are X86, X64, ARM, ARM64, S390x.",
++ "Invalid platform type: {0}. Valid platform types are X86, X64, ARM, ARM64, S390x, PPC64le.",
+ "AnyCPU");
+ }
+
+
+From 750b193e964a446dad5fc5927b745861eb19a9a9 Mon Sep 17 00:00:00 2001
+From: Sapana Khemkar <Sapana.Khemkar(a)ibm.com>
+Date: Wed, 28 Sep 2022 11:06:08 +0530
+Subject: [PATCH 2/4] change enum name from PPC64le to Ppc64le to match with
+ System.Runtime.InteropServices.Architecture enum name
+
+---
+ src/Microsoft.TestPlatform.ObjectModel/Architecture.cs | 2 +-
+ .../Interfaces/System/PlatformArchitecture.cs | 2 +-
+ .../netcore/System/PlatformEnvironment.cs | 2 +-
+ .../netcore/System/ProcessHelper.cs | 2 +-
+ .../Hosting/DefaultTestHostManager.cs | 2 +-
+ src/vstest.console/TestPlatformHelpers/TestRequestManager.cs | 4 ++--
+ .../Processors/PlatformArgumentProcessorTests.cs | 4 ++--
+ 7 files changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/src/vstest/src/Microsoft.TestPlatform.ObjectModel/Architecture.cs b/src/vstest/src/Microsoft.TestPlatform.ObjectModel/Architecture.cs
+index 7879358840..f3d59e7ae4 100644
+--- a/src/vstest/src/Microsoft.TestPlatform.ObjectModel/Architecture.cs
++++ b/src/vstest/src/Microsoft.TestPlatform.ObjectModel/Architecture.cs
+@@ -12,5 +12,5 @@ public enum Architecture
+ AnyCPU,
+ ARM64,
+ S390x,
+- PPC64le
++ Ppc64le
+ }
+diff --git a/src/vstest/src/Microsoft.TestPlatform.PlatformAbstractions/Interfaces/System/PlatformArchitecture.cs b/src/vstest/src/Microsoft.TestPlatform.PlatformAbstractions/Interfaces/System/PlatformArchitecture.cs
+index aa81ca0ffc..907ec721dd 100644
+--- a/src/vstest/src/Microsoft.TestPlatform.PlatformAbstractions/Interfaces/System/PlatformArchitecture.cs
++++ b/src/vstest/src/Microsoft.TestPlatform.PlatformAbstractions/Interfaces/System/PlatformArchitecture.cs
+@@ -13,5 +13,5 @@ public enum PlatformArchitecture
+ ARM,
+ ARM64,
+ S390x,
+- PPC64le,
++ Ppc64le,
+ }
+diff --git a/src/vstest/src/Microsoft.TestPlatform.PlatformAbstractions/netcore/System/PlatformEnvironment.cs b/src/vstest/src/Microsoft.TestPlatform.PlatformAbstractions/netcore/System/PlatformEnvironment.cs
+index 14d1234ef6..f2163db898 100644
+--- a/src/vstest/src/Microsoft.TestPlatform.PlatformAbstractions/netcore/System/PlatformEnvironment.cs
++++ b/src/vstest/src/Microsoft.TestPlatform.PlatformAbstractions/netcore/System/PlatformEnvironment.cs
+@@ -28,7 +28,7 @@ public PlatformArchitecture Architecture
+ // preview 6 or later, so use the numerical value for now.
+ // case System.Runtime.InteropServices.Architecture.S390x:
+ (Architecture)5 => PlatformArchitecture.S390x,
+- (Architecture)6 => PlatformArchitecture.PPC64le,
++ (Architecture)8 => PlatformArchitecture.Ppc64le,
+ _ => throw new NotSupportedException(),
+ };
+ }
+diff --git a/src/vstest/src/Microsoft.TestPlatform.PlatformAbstractions/netcore/System/ProcessHelper.cs b/src/vstest/src/Microsoft.TestPlatform.PlatformAbstractions/netcore/System/ProcessHelper.cs
+index d1e31bb0f6..d2d048e355 100644
+--- a/src/vstest/src/Microsoft.TestPlatform.PlatformAbstractions/netcore/System/ProcessHelper.cs
++++ b/src/vstest/src/Microsoft.TestPlatform.PlatformAbstractions/netcore/System/ProcessHelper.cs
+@@ -41,7 +41,7 @@ public PlatformArchitecture GetCurrentProcessArchitecture()
+ // preview 6 or later, so use the numerical value for now.
+ // case System.Runtime.InteropServices.Architecture.S390x:
+ (Architecture)5 => PlatformArchitecture.S390x,
+- (Architecture)6 => PlatformArchitecture.PPC64le,
++ (Architecture)8 => PlatformArchitecture.Ppc64le,
+ _ => throw new NotSupportedException(),
+ };
+ }
+diff --git a/src/vstest/src/Microsoft.TestPlatform.TestHostProvider/Hosting/DefaultTestHostManager.cs b/src/vstest/src/Microsoft.TestPlatform.TestHostProvider/Hosting/DefaultTestHostManager.cs
+index 54fa36e344..02001d23ab 100644
+--- a/src/vstest/src/Microsoft.TestPlatform.TestHostProvider/Hosting/DefaultTestHostManager.cs
++++ b/src/vstest/src/Microsoft.TestPlatform.TestHostProvider/Hosting/DefaultTestHostManager.cs
+@@ -274,7 +274,7 @@ private static string GetTestHostName(Architecture architecture, Framework targe
+ PlatformArchitecture.ARM => Architecture.ARM,
+ PlatformArchitecture.ARM64 => Architecture.ARM64,
+ PlatformArchitecture.S390x => Architecture.S390x,
+- PlatformArchitecture.PPC64le => Architecture.PPC64le,
++ PlatformArchitecture.Ppc64le => Architecture.Ppc64le,
+ _ => throw new NotSupportedException(),
+ };
+
+diff --git a/src/vstest/src/vstest.console/TestPlatformHelpers/TestRequestManager.cs b/src/vstest/src/vstest.console/TestPlatformHelpers/TestRequestManager.cs
+index c7a0f93927..25cca0ca07 100644
+--- a/src/vstest/src/vstest.console/TestPlatformHelpers/TestRequestManager.cs
++++ b/src/vstest/src/vstest.console/TestPlatformHelpers/TestRequestManager.cs
+@@ -841,8 +841,8 @@ static Architecture TranslateToArchitecture(PlatformArchitecture targetArchitect
+ return Architecture.ARM64;
+ case PlatformArchitecture.S390x:
+ return Architecture.S390x;
+- case PlatformArchitecture.PPC64le:
+- return Architecture.PPC64le;
++ case PlatformArchitecture.Ppc64le:
++ return Architecture.Ppc64le;
+ default:
+ EqtTrace.Error($"TestRequestManager.TranslateToArchitecture: Unhandled architecture '{targetArchitecture}'.");
+ break;
+diff --git a/src/vstest/test/vstest.console.UnitTests/Processors/PlatformArgumentProcessorTests.cs b/src/vstest/test/vstest.console.UnitTests/Processors/PlatformArgumentProcessorTests.cs
+index 472688248d..f33166ae6c 100644
+--- a/src/vstest/test/vstest.console.UnitTests/Processors/PlatformArgumentProcessorTests.cs
++++ b/src/vstest/test/vstest.console.UnitTests/Processors/PlatformArgumentProcessorTests.cs
+@@ -85,7 +85,7 @@ public void InitializeShouldThrowIfArgumentIsNotAnArchitecture()
+ {
+ ExceptionUtilities.ThrowsException<CommandLineException>(
+ () => _executor.Initialize("foo"),
+- "Invalid platform type: {0}. Valid platform types are X86, X64, ARM, ARM64, S390x, PPC64le.",
++ "Invalid platform type: {0}. Valid platform types are X86, X64, ARM, ARM64, S390x, ppc64le.",
+ "foo");
+ }
+
+@@ -94,7 +94,7 @@ public void InitializeShouldThrowIfArgumentIsNotASupportedArchitecture()
+ {
+ ExceptionUtilities.ThrowsException<CommandLineException>(
+ () => _executor.Initialize("AnyCPU"),
+- "Invalid platform type: {0}. Valid platform types are X86, X64, ARM, ARM64, S390x, PPC64le.",
++ "Invalid platform type: {0}. Valid platform types are X86, X64, ARM, ARM64, S390x, ppc64le.",
+ "AnyCPU");
+ }
+
+
+From 4d97db82c39caf0aa6ca7bd3f47f1c3714aa6f2c Mon Sep 17 00:00:00 2001
+From: Sapana Khemkar <Sapana.Khemkar(a)ibm.com>
+Date: Wed, 28 Sep 2022 17:58:27 +0530
+Subject: [PATCH 3/4] add defination of enum
+ Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.PlatformArchitecture.Ppc64le
+ and Microsoft.VisualStudio.TestPlatform.ObjectModel.Architecture.Ppc64le in
+ Microsoft.TestPlatform.ObjectModel and
+ /Microsoft.TestPlatform.PlatformAbstractions PublicAPI.Shipped.txt file.
+
+---
+ .../PublicAPI/PublicAPI.Shipped.txt | 1 +
+ .../PublicAPI/PublicAPI.Shipped.txt | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/src/vstest/src/Microsoft.TestPlatform.ObjectModel/PublicAPI/PublicAPI.Shipped.txt b/src/vstest/src/Microsoft.TestPlatform.ObjectModel/PublicAPI/PublicAPI.Shipped.txt
+index 9df7e09b00..5d69e70774 100644
+--- a/src/vstest/src/Microsoft.TestPlatform.ObjectModel/PublicAPI/PublicAPI.Shipped.txt
++++ b/src/vstest/src/Microsoft.TestPlatform.ObjectModel/PublicAPI/PublicAPI.Shipped.txt
+@@ -113,6 +113,7 @@ Microsoft.VisualStudio.TestPlatform.ObjectModel.Architecture.ARM = 3 -> Microsof
+ Microsoft.VisualStudio.TestPlatform.ObjectModel.Architecture.ARM64 = 5 -> Microsoft.VisualStudio.TestPlatform.ObjectModel.Architecture
+ Microsoft.VisualStudio.TestPlatform.ObjectModel.Architecture.Default = 0 -> Microsoft.VisualStudio.TestPlatform.ObjectModel.Architecture
+ Microsoft.VisualStudio.TestPlatform.ObjectModel.Architecture.S390x = 6 -> Microsoft.VisualStudio.TestPlatform.ObjectModel.Architecture
++Microsoft.VisualStudio.TestPlatform.ObjectModel.Architecture.Ppc64le = 7 -> Microsoft.VisualStudio.TestPlatform.ObjectModel.Architecture
+ Microsoft.VisualStudio.TestPlatform.ObjectModel.Architecture.X64 = 2 -> Microsoft.VisualStudio.TestPlatform.ObjectModel.Architecture
+ Microsoft.VisualStudio.TestPlatform.ObjectModel.Architecture.X86 = 1 -> Microsoft.VisualStudio.TestPlatform.ObjectModel.Architecture
+ Microsoft.VisualStudio.TestPlatform.ObjectModel.AttachmentSet
+diff --git a/src/vstest/src/Microsoft.TestPlatform.PlatformAbstractions/PublicAPI/PublicAPI.Shipped.txt b/src/vstest/src/Microsoft.TestPlatform.PlatformAbstractions/PublicAPI/PublicAPI.Shipped.txt
+index 696ed76517..8f0f763f94 100644
+--- a/src/vstest/src/Microsoft.TestPlatform.PlatformAbstractions/PublicAPI/PublicAPI.Shipped.txt
++++ b/src/vstest/src/Microsoft.TestPlatform.PlatformAbstractions/PublicAPI/PublicAPI.Shipped.txt
+@@ -67,6 +67,7 @@ Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.PlatformArchitecture
+ Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.PlatformArchitecture.ARM = 2 -> Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.PlatformArchitecture
+ Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.PlatformArchitecture.ARM64 = 3 -> Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.PlatformArchitecture
+ Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.PlatformArchitecture.S390x = 4 -> Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.PlatformArchitecture
++Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.PlatformArchitecture.Ppc64le = 5 -> Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.PlatformArchitecture
+ Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.PlatformArchitecture.X64 = 1 -> Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.PlatformArchitecture
+ Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.PlatformArchitecture.X86 = 0 -> Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.PlatformArchitecture
+ Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.PlatformAssemblyExtensions
+
+From 389b923569be952cfa6875af209e70d9490bfd73 Mon Sep 17 00:00:00 2001
+From: Sapana Khemkar <Sapana.Khemkar(a)ibm.com>
+Date: Wed, 28 Sep 2022 19:45:55 +0530
+Subject: [PATCH 4/4] corrected typo in ppc64le arch name
+
+---
+ .../Processors/PlatformArgumentProcessorTests.cs | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/vstest/test/vstest.console.UnitTests/Processors/PlatformArgumentProcessorTests.cs b/src/vstest/test/vstest.console.UnitTests/Processors/PlatformArgumentProcessorTests.cs
+index f33166ae6c..b452b48408 100644
+--- a/src/vstest/test/vstest.console.UnitTests/Processors/PlatformArgumentProcessorTests.cs
++++ b/src/vstest/test/vstest.console.UnitTests/Processors/PlatformArgumentProcessorTests.cs
+@@ -85,7 +85,7 @@ public void InitializeShouldThrowIfArgumentIsNotAnArchitecture()
+ {
+ ExceptionUtilities.ThrowsException<CommandLineException>(
+ () => _executor.Initialize("foo"),
+- "Invalid platform type: {0}. Valid platform types are X86, X64, ARM, ARM64, S390x, ppc64le.",
++ "Invalid platform type: {0}. Valid platform types are X86, X64, ARM, ARM64, S390x, Ppc64le.",
+ "foo");
+ }
+
+@@ -94,7 +94,7 @@ public void InitializeShouldThrowIfArgumentIsNotASupportedArchitecture()
+ {
+ ExceptionUtilities.ThrowsException<CommandLineException>(
+ () => _executor.Initialize("AnyCPU"),
+- "Invalid platform type: {0}. Valid platform types are X86, X64, ARM, ARM64, S390x, ppc64le.",
++ "Invalid platform type: {0}. Valid platform types are X86, X64, ARM, ARM64, S390x, Ppc64le.",
+ "AnyCPU");
+ }
+
diff --git a/vstest-4066-s390x-ppc64le.patch b/vstest-4066-s390x-ppc64le.patch
new file mode 100644
index 0000000..642beb6
--- /dev/null
+++ b/vstest-4066-s390x-ppc64le.patch
@@ -0,0 +1,37 @@
+From 7ea33be2e1949d9c63ff58b59deb5b1a84105aae Mon Sep 17 00:00:00 2001
+From: Giridhar Trivedi <giridhar.trivedi(a)ibm.com>
+Date: Wed, 12 Oct 2022 14:14:40 +0200
+Subject: [PATCH] Fix Invalid target architecture 'S390x' error
+
+In commit 3ae5c4aef823 ("Add support for s390x processor architecture")
+support for S390x architecture was provided for .NET6. This is broken
+in .NET7. Add missing case statements to fix this for S390x and also
+Power architectures.
+---
+ .../Hosting/DotnetTestHostManager.cs | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/src/vstest/src/Microsoft.TestPlatform.TestHostProvider/Hosting/DotnetTestHostManager.cs b/src/vstest/src/Microsoft.TestPlatform.TestHostProvider/Hosting/DotnetTestHostManager.cs
+index b4fa53776f..deadfcb684 100644
+--- a/src/vstest/src/Microsoft.TestPlatform.TestHostProvider/Hosting/DotnetTestHostManager.cs
++++ b/src/vstest/src/Microsoft.TestPlatform.TestHostProvider/Hosting/DotnetTestHostManager.cs
+@@ -536,6 +536,10 @@ PlatformArchitecture TranslateToPlatformArchitecture(Architecture targetArchitec
+ return PlatformArchitecture.ARM;
+ case Architecture.ARM64:
+ return PlatformArchitecture.ARM64;
++ case Architecture.S390x:
++ return PlatformArchitecture.S390x;
++ case Architecture.Ppc64le:
++ return PlatformArchitecture.Ppc64le;
+ case Architecture.AnyCPU:
+ case Architecture.Default:
+ default:
+@@ -552,6 +556,8 @@ static bool IsSameArchitecture(Architecture targetArchitecture, PlatformArchitec
+ Architecture.X64 => platformAchitecture == PlatformArchitecture.X64,
+ Architecture.ARM => platformAchitecture == PlatformArchitecture.ARM,
+ Architecture.ARM64 => platformAchitecture == PlatformArchitecture.ARM64,
++ Architecture.S390x => platformAchitecture == PlatformArchitecture.S390x,
++ Architecture.Ppc64le => platformAchitecture == PlatformArchitecture.Ppc64le,
+ _ => throw new TestPlatformException($"Invalid target architecture '{targetArchitecture}'"),
+ };
+
commit 891d51c0f102886c7d34d5ce9749f04ccf257b9e
Author: Omair Majid <omajid(a)redhat.com>
Date: Sat Aug 20 22:29:41 2022 -0400
Update internal libraries for RPM-provides or -requires
These are internal libraries. Nothing should depend on them. They
shouldn't be made visible at RPM-level to avoid anyone accidentally
depending on them.
diff --git a/dotnet7.0.spec b/dotnet7.0.spec
index 96653ae..c0fa976 100644
--- a/dotnet7.0.spec
+++ b/dotnet7.0.spec
@@ -1,19 +1,5 @@
%bcond_without bootstrap
-# Avoid provides/requires from private libraries
-%global privlibs libhostfxr
-%global privlibs %{privlibs}|libclrjit
-%global privlibs %{privlibs}|libcoreclr
-%global privlibs %{privlibs}|libcoreclrtraceptprovider
-%global privlibs %{privlibs}|libdbgshim
-%global privlibs %{privlibs}|libhostpolicy
-%global privlibs %{privlibs}|libmscordaccore
-%global privlibs %{privlibs}|libmscordbi
-%global privlibs %{privlibs}|libsos
-%global privlibs %{privlibs}|libsosplugin
-%global __provides_exclude ^(%{privlibs})\\.so
-%global __requires_exclude ^(%{privlibs})\\.so
-
# LTO triggers a compilation error for a source level issue. Given that LTO should not
# change the validity of any given source and the nature of the error (undefined enum), I
# suspect a generator program is mis-behaving in some way. This needs further debugging,
@@ -123,6 +109,25 @@ BuildRequires: tar
BuildRequires: util-linux
BuildRequires: zlib-devel
+# Avoid generating provides and requires for private libraries
+%global privlibs libhostfxr
+%global privlibs %{privlibs}|libclrgc
+%global privlibs %{privlibs}|libclrjit
+%global privlibs %{privlibs}|libcoreclr
+%global privlibs %{privlibs}|libcoreclrtraceptprovider
+%global privlibs %{privlibs}|libhostpolicy
+%global privlibs %{privlibs}|libmscordaccore
+%global privlibs %{privlibs}|libmscordbi
+%global privlibs %{privlibs}|libnethost
+%global privlibs %{privlibs}|libSystem.Globalization.Native
+%global privlibs %{privlibs}|libSystem.IO.Compression.Native
+%global privlibs %{privlibs}|libSystem.Native
+%global privlibs %{privlibs}|libSystem.Net.Security.Native
+%global privlibs %{privlibs}|libSystem.Security.Cryptography.Native.OpenSsl
+%global __provides_exclude ^(%{privlibs})\\.so
+%global __requires_exclude ^(%{privlibs})\\.so
+
+
%description
.NET is a fast, lightweight and modular platform for creating
cross platform applications that work on Linux, macOS and Windows.
commit 51948773242112eebc8e2cd51ebee08455a09bfd
Author: Omair Majid <omajid(a)redhat.com>
Date: Wed Aug 17 22:57:07 2022 -0400
Fix arm64 bootstrapping
diff --git a/build-arm64-bootstrap-tarball b/build-arm64-bootstrap-tarball
index 79ac1da..58f6580 100755
--- a/build-arm64-bootstrap-tarball
+++ b/build-arm64-bootstrap-tarball
@@ -4,6 +4,17 @@ set -euo pipefail
set -x
+function parse-nuget-name-version-from-file() {
+ package=$1
+ filename=${package##*/}
+
+ version_suffix=$(echo "$filename" | grep -Eo '\.[[:digit:]]+.*\.nupkg')
+ version=$(echo "$version_suffix" | sed -Ee 's/^\.//' -e 's/\.nupkg$//')
+ name=${filename:0:(${#filename}-${#version_suffix})}
+
+ echo "$name" "$version"
+}
+
bootstrap_dir=$(readlink -f "$1")
version=$(jq -r '.tools.dotnet' "$bootstrap_dir"/global.json)
@@ -14,28 +25,25 @@ mkdir -p "dotnet-arm64-prebuilts-$date"
pushd "dotnet-arm64-prebuilts-$date"
-# Getting the exact matching rc2 version gets us an arm64 build without this
-# fix https://github.com/dotnet/runtime/pull/58959. That causes a segfault on
-# startup.
-# wget "https://dotnetcli.azureedge.net/dotnet/Sdk/$version/dotnet-sdk-$version-l..."
+# Binaries can be at one of several different URLs:
+# wget https://dotnetcli.azureedge.net/dotnet/Sdk/$version/dotnet-sdk-$version-l...
+wget https://dotnetbuilds.azureedge.net/public/Sdk/$version/dotnet-sdk-$versio...
-wget https://aka.ms/dotnet/6.0.1XX-rc2/daily/dotnet-sdk-linux-arm64.tar.gz
+for archive in "$bootstrap_dir"/packages/archive/*.tar.gz; do
+ mapfile -t linux_x64_packages < <(tar tf "$archive" | grep linux-x64)
-mapfile -t linux_x64_packages < <(tar tf "$bootstrap_dir"/packages/archive/Private.SourceBuilt.Artifacts.*.tar.gz | grep linux-x64)
+ for package in "${linux_x64_packages[@]}"; do
+ if [[ "$package" = *'.Intermediate.'* ]]; then
+ continue;
+ fi
-for package in "${linux_x64_packages[@]}"; do
- if [[ "$package" = *'.Intermediate.'* ]]; then
- continue;
- fi
+ read -r name version < <(parse-nuget-name-version-from-file "$package")
- filename=${package##*/}
- name=${filename%.7.0*}
- arm_name=${name/linux-x64/linux-arm64}
- version="7.0${filename##*6.0}"
- version=${version%.*}
+ arm_name=${name/linux-x64/linux-arm64}
- nappo download --verbose "$arm_name" "$version"
+ nappo download --verbose "$arm_name" "$version"
+ done
done
popd
diff --git a/dotnet7.0.spec b/dotnet7.0.spec
index 31c6b70..96653ae 100644
--- a/dotnet7.0.spec
+++ b/dotnet7.0.spec
@@ -71,7 +71,7 @@ URL: https://github.com/dotnet/
# ./build-dotnet-tarball --bootstrap %%{upstream_tag}
Source0: dotnet-%{upstream_tag}-x64-bootstrap.tar.xz
# Generated via ./build-arm64-bootstrap-tarball
-Source1: dotnet-arm64-prebuilts-2021-10-29.tar.gz
+Source1: dotnet-arm64-prebuilts-2022-08-17.tar.gz
# Generated manually, same pattern as the arm64 tarball
Source2: dotnet-s390x-prebuilts-2021-10-29.tar.gz
%else
@@ -87,7 +87,7 @@ Source11: dotnet.sh.in
%if 0%{?fedora} || 0%{?rhel} >= 8
# FIXME
# ExclusiveArch: aarch64 x86_64 s390x
-ExclusiveArch: x86_64
+ExclusiveArch: aarch64 x86_64
%else
ExclusiveArch: x86_64
%endif
commit 631a4719ebb5d48b06b4a08b4429eecc289f3780
Author: Omair Majid <omajid(a)redhat.com>
Date: Tue Aug 16 12:45:31 2022 -0400
Limit DOTNET_NUGET_SIGNATURE_VERIFICATION=false to RHEL
diff --git a/dotnet7.0.spec b/dotnet7.0.spec
index 1a345d3..31c6b70 100644
--- a/dotnet7.0.spec
+++ b/dotnet7.0.spec
@@ -424,7 +424,7 @@ export COMPlus_LTTng=0
export OPENSSL_ENABLE_SHA1_SIGNATURES=1
%endif
-%if 0%{?rhel} >= 0
+%if 0%{?rhel}
# See https://github.com/dotnet/source-build/issues/2991
export DOTNET_NUGET_SIGNATURE_VERIFICATION=false
%endif
commit 8236fc47eefca0792cdbd216b8184e9a7ab64c31
Author: Omair Majid <omajid(a)redhat.com>
Date: Tue Aug 16 12:42:01 2022 -0400
Update to upstream commit fd587269
This updates to a pre-RC1 build of .NET 7.
diff --git a/build-dotnet-tarball b/build-dotnet-tarball
index a6e5444..29fbfa8 100755
--- a/build-dotnet-tarball
+++ b/build-dotnet-tarball
@@ -150,22 +150,7 @@ mv "${unmodified_tarball_name}" "${tarball_name}"
pushd "${tarball_name}"
if [[ ${build_bootstrap} == true ]]; then
- if [[ "$(wc -l < packages/archive/archiveArtifacts.txt)" != 1 ]]; then
- echo "error: this is not going to work! update $0 to fix this issue."
- exit 1
- fi
-
./prep.sh --bootstrap
-
- mkdir -p fixup-previously-source-built-artifacts
- pushd fixup-previously-source-built-artifacts
- tar xf ../packages/archive/Private.SourceBuilt.Artifacts.*.tar.gz
- find . -iname '*fedora*nupkg' -delete
- # We must keep the original file names in the archive, even prepending a ./ leads to issues
- tar -I 'gzip -1' -cf ../packages/archive/Private.SourceBuilt.Artifacts.*.tar.gz *
- popd
- rm -rf fixup-previously-source-built-artifacts
-
else
find . -type f -iname '*.tar.gz' -delete
rm -rf .dotnet
@@ -196,6 +181,9 @@ rm -r src/nuget-client/test/EndToEnd
# https://github.com/Humanizr/sample-aspnetmvc/issues/1
rm -r src/source-build-externals/src/humanizer/samples/
+# https://github.com/dotnet/roslyn/issues/63257
+rm -r src/roslyn/scripts/GenerateSdkPackages
+
popd
if [[ ${build_bootstrap} == true ]]; then
diff --git a/copr-build b/copr-build
index 1e475c9..97faa2b 100755
--- a/copr-build
+++ b/copr-build
@@ -8,4 +8,6 @@ fedpkg --release f36 srpm 2>&1 | tee fedpkg.output
srpm_name=$(grep 'Wrote: ' fedpkg.output | cut -d' ' -f 2)
-copr-cli build --enable-net on @dotnet-sig/dotnet-preview "${srpm_name}"
+ls -alh "${srpm_name}"
+
+copr-cli --debug build @dotnet-sig/dotnet-preview "${srpm_name}"
diff --git a/dotnet7.0.spec b/dotnet7.0.spec
index d7049f7..1a345d3 100644
--- a/dotnet7.0.spec
+++ b/dotnet7.0.spec
@@ -20,12 +20,12 @@
# until that's done, disable LTO. This has to happen before setting the flags below.
%define _lto_cflags %{nil}
-%global host_version 7.0.0-rc.1.22367.4
-%global runtime_version 7.0.0-rc.1.22367.4
-%global aspnetcore_runtime_version 7.0.0-rc.1.22368.6
-%global sdk_version 7.0.100-rc.1.22372.1
+%global host_version 7.0.0-rc.1.22411.12
+%global runtime_version 7.0.0-rc.1.22411.12
+%global aspnetcore_runtime_version 7.0.0-rc.1.22412.2
+%global sdk_version 7.0.100-rc.1.22413.1
%global sdk_feature_band_version %(echo %{sdk_version} | cut -d '-' -f 1 | sed -e 's|[[:digit:]][[:digit:]]$|00|')
-%global templates_version 7.0.0-rc.1.22368.6
+%global templates_version 7.0.0-rc.1.22412.2
#%%global templates_version %%(echo %%{runtime_version} | awk 'BEGIN { FS="."; OFS="." } {print $1, $2, $3+1 }')
%global host_rpm_version 7.0.0
@@ -35,7 +35,7 @@
# upstream can update releases without revving the SDK version so these don't always match
#%%global upstream_tag v%%{sdk_version}
-%global upstream_tag ace7452f3bc6801cf4c4b5745b777c60e9e496a7
+%global upstream_tag fd587269d0a1fa669d547f3a2e74f5d9353b6dcf
%if 0%{?fedora} || 0%{?rhel} < 8
%global use_bundled_libunwind 0
@@ -134,6 +134,7 @@ applications and micro-services.
framework libraries, an SDK containing compilers and a 'dotnet'
application to drive everything.
+%if 0%{?rhel} <= 8
%package -n dotnet
@@ -153,6 +154,7 @@ applications and micro-services.
framework libraries, an SDK containing compilers and a 'dotnet'
application to drive everything.
+%endif
%package -n dotnet-host
@@ -374,7 +376,7 @@ cp -a %{_libdir}/dotnet previously-built-dotnet
find previously-built-dotnet
%endif
-%if 0%{?fedora} > 32 || 0%{?rhel} > 8
+%if 0%{?fedora} || 0%{?rhel} >= 9
# Setting this macro ensures that only clang supported options will be
# added to ldflags and cflags.
%global toolchain clang
@@ -415,23 +417,31 @@ export EXTRA_LDFLAGS="$LDFLAGS"
# suggested compile-time change doesn't work, unfortunately.
export COMPlus_LTTng=0
+%if 0%{?rhel} >= 9
+# OpenSSL 3.0 in RHEL 9 has disabled SHA1, used by .NET for strong
+# name signing. See https://github.com/dotnet/runtime/issues/67304
+# https://gitlab.com/redhat/centos-stream/rpms/openssl/-/commit/78fb78d3075...
+export OPENSSL_ENABLE_SHA1_SIGNATURES=1
+%endif
-# FIXME: Remove --online flag
+%if 0%{?rhel} >= 0
+# See https://github.com/dotnet/source-build/issues/2991
+export DOTNET_NUGET_SIGNATURE_VERIFICATION=false
+%endif
VERBOSE=1 ./build.sh \
%if %{without bootstrap}
--with-sdk previously-built-dotnet \
--with-packages %{_libdir}/dotnet/source-built-artifacts/Private.SourceBuilt.Artifacts.*.tar.gz
%endif
- --online \
-- \
/p:MinimalConsoleLogOutput=false \
/p:ContinueOnPrebuiltBaselineError=true \
+ /v:n \
+ /p:LogVerbosity=n \
echo \
- /v:n \
- /p:LogVerbosity=n \
/p:SkipPortableRuntimeBuild=true \
@@ -518,8 +528,10 @@ export COMPlus_LTTng=0
%{buildroot}%{_libdir}/dotnet/dotnet --version
+%if 0%{?rhel} <= 8
%files -n dotnet
# empty package useful for dependencies
+%endif
%files -n dotnet-host
%dir %{_libdir}/dotnet
diff --git a/update-release b/update-release
index 3aa2df3..46dc018 100755
--- a/update-release
+++ b/update-release
@@ -81,11 +81,17 @@ sed -i -E "s|^%global runtime_version [[:digit:]]\.[[:digit:]]\.[[:digit:]]+|%gl
sed -i -E "s|^%global sdk_version [[:digit:]]\.[[:digit:]]\.[[:digit:]][[:digit:]][[:digit:]]|%global sdk_version ${sdk_version}|" "$spec_file"
comment="Update to .NET SDK ${sdk_version} and Runtime ${runtime_version}"
+commit_message="$comment
+"
for bug_id in "${bug_ids[@]}"; do
comment="$comment
- Resolves: RHBZ#$bug_id"
+ commit_message="$commit_message
+Resolves: RHBZ#$bug_id"
done
+echo "$commit_message" > git-commit-message
+
rpmdev-bumpspec --comment="$comment" "$spec_file"
# Reset release to 1 in 'Release' tag
commit d5187598fc8d71b9b4bfb941f558352cbe8dcf7c
Author: Omair Majid <omajid(a)redhat.com>
Date: Wed Jul 27 15:06:49 2022 -0400
Clarify comments about license/crypto files
diff --git a/build-dotnet-tarball b/build-dotnet-tarball
index a332926..a6e5444 100755
--- a/build-dotnet-tarball
+++ b/build-dotnet-tarball
@@ -171,13 +171,15 @@ else
rm -rf .dotnet
fi
-# Remove files with funny licenses, crypto implementations and other
-# not-very-useful artifacts to reduce tarball size
+# Remove files with funny licenses and crypto implementations and
+# other not-very-useful artifacts. We MUST NOT ship any files that
+# have unapproved licenses and unexpected cryptographic
+# implementations.
#
-# We use rm -r (no -f) to make sure the operation fails if the files are not at
-# the expected locations. If the files are not at the expected location, we
-# need to find the new location of the files and delete them, or verify that
-# upstream has fix them.
+# We use rm -r (no -f) to make sure the operation fails if the files
+# are not at the expected locations. If the files are not at the
+# expected location, we need to find the new location of the files and
+# delete them, or verify that upstream has already removed the files.
# Binaries for gradle
rm -r src/aspnetcore/src/SignalR/clients/java/signalr/gradle*
commit 81d26c572fa1fc14627a2b6d169847932d8cfbfe
Author: Omair Majid <omajid(a)redhat.com>
Date: Tue Jul 26 15:53:08 2022 -0400
Fix some remaining references to 6.0
diff --git a/build-arm64-bootstrap-tarball b/build-arm64-bootstrap-tarball
index 9f1cc7d..79ac1da 100755
--- a/build-arm64-bootstrap-tarball
+++ b/build-arm64-bootstrap-tarball
@@ -29,9 +29,9 @@ for package in "${linux_x64_packages[@]}"; do
fi
filename=${package##*/}
- name=${filename%.6.0*}
+ name=${filename%.7.0*}
arm_name=${name/linux-x64/linux-arm64}
- version="6.0${filename##*6.0}"
+ version="7.0${filename##*6.0}"
version=${version%.*}
nappo download --verbose "$arm_name" "$version"
diff --git a/build-dotnet-tarball b/build-dotnet-tarball
index b85c3a7..a332926 100755
--- a/build-dotnet-tarball
+++ b/build-dotnet-tarball
@@ -173,6 +173,11 @@ fi
# Remove files with funny licenses, crypto implementations and other
# not-very-useful artifacts to reduce tarball size
+#
+# We use rm -r (no -f) to make sure the operation fails if the files are not at
+# the expected locations. If the files are not at the expected location, we
+# need to find the new location of the files and delete them, or verify that
+# upstream has fix them.
# Binaries for gradle
rm -r src/aspnetcore/src/SignalR/clients/java/signalr/gradle*
diff --git a/dotnet6.0.rpmlintrc b/dotnet7.0.rpmlintrc
similarity index 100%
rename from dotnet6.0.rpmlintrc
rename to dotnet7.0.rpmlintrc
diff --git a/tests/tests.yml b/tests/tests.yml
index 8ce51f4..b1facd8 100644
--- a/tests/tests.yml
+++ b/tests/tests.yml
@@ -21,12 +21,12 @@
dir: ./
run: dotnet turkey/Turkey.dll -l={{ remote_artifacts }} dotnet-regular-tests
required_packages:
- - aspnetcore-runtime-6.0
+ - aspnetcore-runtime-7.0
- babeltrace
- bash-completion
- binutils
- - dotnet-sdk-6.0
- - dotnet-runtime-6.0
+ - dotnet-sdk-7.0
+ - dotnet-runtime-7.0
- expect
- git
- jq
commit d73e0787eb302cfeae391654a8c1c31114263c09
Author: Omair Majid <omajid(a)redhat.com>
Date: Tue Jul 26 15:17:18 2022 -0400
Remove unused patches
These patch files are never applied. Remove them from repo.
diff --git a/arcade-no-apphost.patch b/arcade-no-apphost.patch
deleted file mode 100644
index cec03a1..0000000
--- a/arcade-no-apphost.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-Index: a/src/Microsoft.DotNet.GitSync.CommitManager/Microsoft.DotNet.GitSync.CommitManager.csproj
-===================================================================
---- a/src/Microsoft.DotNet.GitSync.CommitManager/Microsoft.DotNet.GitSync.CommitManager.csproj
-+++ b/src/Microsoft.DotNet.GitSync.CommitManager/Microsoft.DotNet.GitSync.CommitManager.csproj
-@@ -5,6 +5,7 @@
- <TargetFramework>netcoreapp3.1</TargetFramework>
- <LangVersion>latest</LangVersion>
- <ExcludeFromSourceBuild>true</ExcludeFromSourceBuild>
-+ <UseAppHost>false</UseAppHost>
- </PropertyGroup>
-
- <ItemGroup>
-Index: a/src/Microsoft.DotNet.SwaggerGenerator/Microsoft.DotNet.SwaggerGenerator.CmdLine/Microsoft.DotNet.SwaggerGenerator.CmdLine.csproj
-===================================================================
---- a/src/Microsoft.DotNet.SwaggerGenerator/Microsoft.DotNet.SwaggerGenerator.CmdLine/Microsoft.DotNet.SwaggerGenerator.CmdLine.csproj
-+++ b/src/Microsoft.DotNet.SwaggerGenerator/Microsoft.DotNet.SwaggerGenerator.CmdLine/Microsoft.DotNet.SwaggerGenerator.CmdLine.csproj
-@@ -9,6 +9,7 @@
- <ToolCommandName>dotnet-swaggergen</ToolCommandName>
- <SignAssembly>false</SignAssembly>
- <ExcludeFromSourceBuild>true</ExcludeFromSourceBuild>
-+ <UseAppHost>false</UseAppHost>
- </PropertyGroup>
-
- <ItemGroup>
-Index: a/src/Microsoft.DotNet.XUnitConsoleRunner/src/Microsoft.DotNet.XUnitConsoleRunner.csproj
-===================================================================
---- a/src/Microsoft.DotNet.XUnitConsoleRunner/src/Microsoft.DotNet.XUnitConsoleRunner.csproj
-+++ b/src/Microsoft.DotNet.XUnitConsoleRunner/src/Microsoft.DotNet.XUnitConsoleRunner.csproj
-@@ -11,6 +11,7 @@
- <VersionPrefix>2.5.1</VersionPrefix>
- <ExcludeFromSourceBuild>true</ExcludeFromSourceBuild>
- <RollForward>Major</RollForward>
-+ <UseAppHost>false</UseAppHost>
- </PropertyGroup>
-
- <ItemGroup>
diff --git a/command-line-api-use-work-tree-with-git-apply.patch b/command-line-api-use-work-tree-with-git-apply.patch
deleted file mode 100644
index 552d59d..0000000
--- a/command-line-api-use-work-tree-with-git-apply.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 7a752928ed3588246c4b296feb6cf4946f1b29b7 Mon Sep 17 00:00:00 2001
-From: Omair Majid <omajid(a)redhat.com>
-Date: Thu, 9 Sep 2021 12:11:39 -0400
-Subject: [PATCH] [ArPow] Use --work-tree with git apply
-
-This makes things work better in a source-tarball build, where there may
-be a .git directory but it's for a different repo than command-line-api.
----
- eng/SourceBuild.props | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/eng/SourceBuild.props b/eng/SourceBuild.props
-index 6cc85018..5e223747 100644
---- a/eng/SourceBuild.props
-+++ b/eng/SourceBuild.props
-@@ -15,7 +15,7 @@
- </ItemGroup>
-
- <Exec
-- Command="git apply --ignore-whitespace --whitespace=nowarn "%(SourceBuildPatchFile.FullPath)""
-+ Command="git --work-tree="$(RepoRoot)" apply --ignore-whitespace --whitespace=nowarn "%(SourceBuildPatchFile.FullPath)""
- WorkingDirectory="$(RepoRoot)"
- Condition="'@(SourceBuildPatchFile)' != ''" />
- </Target>
---
-2.31.1
-
diff --git a/fsharp-no-apphost.patch b/fsharp-no-apphost.patch
deleted file mode 100644
index 1534888..0000000
--- a/fsharp-no-apphost.patch
+++ /dev/null
@@ -1,21 +0,0 @@
---- a/tests/benchmarks/MicroPerf/MicroPerf.fsproj
-+++ b/tests/benchmarks/MicroPerf/MicroPerf.fsproj
-@@ -9,6 +9,7 @@
- <OtherFlags>$(OtherFlags) --nowarn:57</OtherFlags>
- <OtherFlags>$(OtherFlags) --langversion:preview</OtherFlags>
- <OtherFlags>$(OtherFlags) --define:PREVIEW</OtherFlags>
-+ <UseAppHost>false</UseAppHost>
- <!-- By default this project will compile with the proto compiler -->
- <!-- Uncommenting this will build with a previous installed compiler -->
- <!--
---- a/tests/benchmarks/TaskPerf/TaskPerf.fsproj
-+++ b/tests/benchmarks/TaskPerf/TaskPerf.fsproj
-@@ -4,6 +4,7 @@
- <TargetFramework>net5.0</TargetFramework>
- <OutputType>Exe</OutputType>
- <DisableImplicitFSharpCoreReference>true</DisableImplicitFSharpCoreReference>
-+ <UseAppHost>false</UseAppHost>
- <!-- Turn off "This function is for use by compiled F# code and should not be used directly" -->
- <OtherFlags>$(OtherFlags) --nowarn:1204</OtherFlags>
- <!-- Turn off "Experimental" -->
-
diff --git a/fsharp-use-work-tree-with-git-apply.patch b/fsharp-use-work-tree-with-git-apply.patch
deleted file mode 100644
index 810cf67..0000000
--- a/fsharp-use-work-tree-with-git-apply.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/eng/SourceBuild.props
-+++ b/eng/SourceBuild.props
-@@ -15,7 +15,7 @@
- </ItemGroup>
-
- <Exec
-- Command="git apply --ignore-whitespace --whitespace=nowarn "%(SourceBuildPatchFile.FullPath)""
-+ Command="git --work-tree="$(RepoRoot)" apply --ignore-whitespace --whitespace=nowarn "%(SourceBuildPatchFile.FullPath)""
- WorkingDirectory="$(RepoRoot)"
- Condition="'@(SourceBuildPatchFile)' != ''" />
- </Target>
diff --git a/installer-12516-portablerid.patch b/installer-12516-portablerid.patch
deleted file mode 100644
index 4cb4ab6..0000000
--- a/installer-12516-portablerid.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From 892222071f73062f969f4f6ed1df8f759b9327b7 Mon Sep 17 00:00:00 2001
-From: Tom Deseyn <tom.deseyn(a)gmail.com>
-Date: Wed, 3 Nov 2021 15:12:59 +0100
-Subject: [PATCH] GetRuntimeInformation.targets: determine
- PortableProductMonikerRid based on HostOSName and Architecture.
-
----
- src/redist/targets/GetRuntimeInformation.targets | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/redist/targets/GetRuntimeInformation.targets b/src/redist/targets/GetRuntimeInformation.targets
-index 5133c3a3841..01f704c7d8e 100644
---- a/src/redist/targets/GetRuntimeInformation.targets
-+++ b/src/redist/targets/GetRuntimeInformation.targets
-@@ -28,6 +28,8 @@
- '$(Rid)' == 'linux-musl-x64' ">$(Rid)</ProductMonikerRid>
- <ProductMonikerRid Condition=" '$(ProductMonikerRid)' == '' ">$(OSName)-$(Architecture)</ProductMonikerRid>
-
-+ <PortableProductMonikerRid Condition=" '$(PortableProductMonikerRid)' == '' ">$(HostOSName)-$(Architecture)</PortableProductMonikerRid>
-+
- <ArtifactNameSdk>dotnet-sdk-internal$(PgoTerm)</ArtifactNameSdk>
- <ArtifactNameCombinedHostHostFxrFrameworkSdk>dotnet-sdk$(PgoTerm)</ArtifactNameCombinedHostHostFxrFrameworkSdk>
-
diff --git a/msbuild-no-systemconfiguration.patch b/msbuild-no-systemconfiguration.patch
deleted file mode 100644
index 537470d..0000000
--- a/msbuild-no-systemconfiguration.patch
+++ /dev/null
@@ -1,46 +0,0 @@
---- a/src/Build/Definition/ProjectCollection.cs
-+++ b/src/Build/Definition/ProjectCollection.cs
-@@ -1754,7 +1754,11 @@ namespace Microsoft.Build.Evaluation
- #if FEATURE_WIN32_REGISTRY
- ToolsetRegistryReader registryReader = null,
- #endif
-+#if FEATURE_SYSTEM_CONFIGURATION
- ToolsetConfigurationReader configReader = null
-+#else
-+ object configReader = null
-+#endif
- )
- {
- _toolsets = new Dictionary<string, Toolset>(StringComparer.OrdinalIgnoreCase);
---- a/src/Build/Definition/ToolsetReader.cs
-+++ b/src/Build/Definition/ToolsetReader.cs
-@@ -101,7 +101,11 @@ namespace Microsoft.Build.Evaluation
- #if FEATURE_WIN32_REGISTRY
- ToolsetRegistryReader registryReader,
- #endif
-+#if FEATURE_SYSTEM_CONFIGURATION
- ToolsetConfigurationReader configurationReader,
-+#else
-+ object _configurationReader,
-+#endif
- PropertyDictionary<ProjectPropertyInstance> environmentProperties,
- PropertyDictionary<ProjectPropertyInstance> globalProperties,
- ToolsetDefinitionLocations locations
-@@ -120,6 +124,7 @@ namespace Microsoft.Build.Evaluation
-
- if ((locations & ToolsetDefinitionLocations.ConfigurationFile) == ToolsetDefinitionLocations.ConfigurationFile)
- {
-+#if FEATURE_SYSTEM_CONFIGURATION
- if (configurationReader == null)
- {
- configurationReader = new ToolsetConfigurationReader(environmentProperties, globalProperties);
-@@ -129,6 +134,9 @@ namespace Microsoft.Build.Evaluation
- defaultToolsVersionFromConfiguration = configurationReader.ReadToolsets(toolsets, globalProperties,
- initialProperties, true /* accumulate properties */, out overrideTasksPathFromConfiguration,
- out defaultOverrideToolsVersionFromConfiguration);
-+#else
-+ throw new InvalidOperationException("ToolsetDefinitionLocations.ConfigurationFile not supported");
-+#endif
- }
-
- string defaultToolsVersionFromRegistry = null;
diff --git a/msbuild-no-systemsecurity.patch b/msbuild-no-systemsecurity.patch
deleted file mode 100644
index dcf6809..0000000
--- a/msbuild-no-systemsecurity.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- a/src/Shared/ExceptionHandling.cs
-+++ b/src/Shared/ExceptionHandling.cs
-@@ -153,7 +153,9 @@ namespace Microsoft.Build.Shared
- internal static bool IsXmlException(Exception e)
- {
- return e is XmlException
-+#if FEATURE_SECURITY_PERMISSIONS
- || e is XmlSyntaxException
-+#endif
- || e is XmlSchemaException
- || e is UriFormatException; // XmlTextReader for example uses this under the covers
- }
diff --git a/roslyn-57003-mono-named-mutex.patch b/roslyn-57003-mono-named-mutex.patch
deleted file mode 100644
index c264bff..0000000
--- a/roslyn-57003-mono-named-mutex.patch
+++ /dev/null
@@ -1,453 +0,0 @@
-Index: tarball.6.0.1-rc2-6.0.100-rc2/src/roslyn.8e1779e16298415843e85029d8b52a1ae9bb4c30/src/Compilers/Core/Portable/InternalUtilities/PlatformInformation.cs
-===================================================================
---- tarball.6.0.1-rc2-6.0.100-rc2.orig/src/roslyn.8e1779e16298415843e85029d8b52a1ae9bb4c30/src/Compilers/Core/Portable/InternalUtilities/PlatformInformation.cs
-+++ tarball.6.0.1-rc2-6.0.100-rc2/src/roslyn.8e1779e16298415843e85029d8b52a1ae9bb4c30/src/Compilers/Core/Portable/InternalUtilities/PlatformInformation.cs
-@@ -31,5 +31,24 @@ namespace Roslyn.Utilities
- }
- }
- }
-+ /// <summary>
-+ /// Are we running on .NET 5 or later using the Mono runtime?
-+ /// Will also return true when running on Mono itself; if necessary
-+ /// we can use IsRunningOnMono to distinguish.
-+ /// </summary>
-+ public static bool IsUsingMonoRuntime
-+ {
-+ get
-+ {
-+ try
-+ {
-+ return !(Type.GetType("Mono.RuntimeStructs", throwOnError: false) is null);
-+ }
-+ catch
-+ {
-+ return false;
-+ }
-+ }
-+ }
- }
- }
-Index: tarball.6.0.1-rc2-6.0.100-rc2/src/roslyn.8e1779e16298415843e85029d8b52a1ae9bb4c30/src/Compilers/Server/VBCSCompilerTests/BuildClientTests.cs
-===================================================================
---- tarball.6.0.1-rc2-6.0.100-rc2.orig/src/roslyn.8e1779e16298415843e85029d8b52a1ae9bb4c30/src/Compilers/Server/VBCSCompilerTests/BuildClientTests.cs
-+++ tarball.6.0.1-rc2-6.0.100-rc2/src/roslyn.8e1779e16298415843e85029d8b52a1ae9bb4c30/src/Compilers/Server/VBCSCompilerTests/BuildClientTests.cs
-@@ -79,7 +79,7 @@ namespace Microsoft.CodeAnalysis.Compile
- // to connect. When it fails it should fall back to in-proc
- // compilation.
- bool holdsMutex;
-- using (var serverMutex = new Mutex(initiallyOwned: true,
-+ using (var serverMutex = BuildServerConnection.OpenOrCreateMutex(
- name: BuildServerConnection.GetServerMutexName(_pipeName),
- createdNew: out holdsMutex))
- {
-Index: tarball.6.0.1-rc2-6.0.100-rc2/src/roslyn.8e1779e16298415843e85029d8b52a1ae9bb4c30/src/Compilers/Server/VBCSCompilerTests/CompilerServerApiTest.cs
-===================================================================
---- tarball.6.0.1-rc2-6.0.100-rc2.orig/src/roslyn.8e1779e16298415843e85029d8b52a1ae9bb4c30/src/Compilers/Server/VBCSCompilerTests/CompilerServerApiTest.cs
-+++ tarball.6.0.1-rc2-6.0.100-rc2/src/roslyn.8e1779e16298415843e85029d8b52a1ae9bb4c30/src/Compilers/Server/VBCSCompilerTests/CompilerServerApiTest.cs
-@@ -103,7 +103,7 @@ class Hello
- var mutexName = BuildServerConnection.GetServerMutexName(pipeName);
-
- bool holdsMutex;
-- using (var mutex = new Mutex(initiallyOwned: true,
-+ using (var mutex = BuildServerConnection.OpenOrCreateMutex(
- name: mutexName,
- createdNew: out holdsMutex))
- {
-@@ -119,7 +119,7 @@ class Hello
- }
- finally
- {
-- mutex.ReleaseMutex();
-+ mutex.Dispose();
- }
- }
- }
-Index: tarball.6.0.1-rc2-6.0.100-rc2/src/roslyn.8e1779e16298415843e85029d8b52a1ae9bb4c30/src/Compilers/Server/VBCSCompilerTests/CompilerServerTests.cs
-===================================================================
---- tarball.6.0.1-rc2-6.0.100-rc2.orig/src/roslyn.8e1779e16298415843e85029d8b52a1ae9bb4c30/src/Compilers/Server/VBCSCompilerTests/CompilerServerTests.cs
-+++ tarball.6.0.1-rc2-6.0.100-rc2/src/roslyn.8e1779e16298415843e85029d8b52a1ae9bb4c30/src/Compilers/Server/VBCSCompilerTests/CompilerServerTests.cs
-@@ -304,7 +304,7 @@ End Module")
- var newTempDir = _tempDirectory.CreateDirectory(new string('a', 100 - _tempDirectory.Path.Length));
- await ApplyEnvironmentVariables(
- new[] { new KeyValuePair<string, string>("TMPDIR", newTempDir.Path) },
-- async () =>
-+ async () => await Task.Run(async () =>
- {
- using var serverData = await ServerUtil.CreateServer(_logger);
- var result = RunCommandLineCompiler(
-@@ -317,7 +317,7 @@ End Module")
-
- var listener = await serverData.Complete();
- Assert.Equal(CompletionData.RequestCompleted, listener.CompletionDataList.Single());
-- });
-+ }));
- }
-
- [Fact]
-Index: tarball.6.0.1-rc2-6.0.100-rc2/src/roslyn.8e1779e16298415843e85029d8b52a1ae9bb4c30/src/Compilers/Server/VBCSCompilerTests/VBCSCompilerServerTests.cs
-===================================================================
---- tarball.6.0.1-rc2-6.0.100-rc2.orig/src/roslyn.8e1779e16298415843e85029d8b52a1ae9bb4c30/src/Compilers/Server/VBCSCompilerTests/VBCSCompilerServerTests.cs
-+++ tarball.6.0.1-rc2-6.0.100-rc2/src/roslyn.8e1779e16298415843e85029d8b52a1ae9bb4c30/src/Compilers/Server/VBCSCompilerTests/VBCSCompilerServerTests.cs
-@@ -101,7 +101,7 @@ namespace Microsoft.CodeAnalysis.Compile
-
- var thread = new Thread(() =>
- {
-- using (var mutex = new Mutex(initiallyOwned: true, name: mutexName, createdNew: out created))
-+ using (var mutex = BuildServerConnection.OpenOrCreateMutex(name: mutexName, createdNew: out created))
- using (var stream = NamedPipeUtil.CreateServer(pipeName))
- {
- readyMre.Set();
-@@ -112,7 +112,7 @@ namespace Microsoft.CodeAnalysis.Compile
- stream.Close();
-
- doneMre.WaitOne();
-- mutex.ReleaseMutex();
-+ mutex.Dispose();
- }
- });
-
-@@ -153,7 +153,7 @@ namespace Microsoft.CodeAnalysis.Compile
- {
- using (var stream = NamedPipeUtil.CreateServer(pipeName))
- {
-- var mutex = new Mutex(initiallyOwned: true, name: mutexName, createdNew: out created);
-+ var mutex = BuildServerConnection.OpenOrCreateMutex(name: mutexName, createdNew: out created);
- readyMre.Set();
-
- stream.WaitForConnection();
-@@ -161,7 +161,6 @@ namespace Microsoft.CodeAnalysis.Compile
-
- // Client is waiting for a response. Close the mutex now. Then close the connection
- // so the client gets an error.
-- mutex.ReleaseMutex();
- mutex.Dispose();
- stream.Close();
-
-Index: tarball.6.0.1-rc2-6.0.100-rc2/src/roslyn.8e1779e16298415843e85029d8b52a1ae9bb4c30/src/Compilers/Shared/BuildServerConnection.cs
-===================================================================
---- tarball.6.0.1-rc2-6.0.100-rc2.orig/src/roslyn.8e1779e16298415843e85029d8b52a1ae9bb4c30/src/Compilers/Shared/BuildServerConnection.cs
-+++ tarball.6.0.1-rc2-6.0.100-rc2/src/roslyn.8e1779e16298415843e85029d8b52a1ae9bb4c30/src/Compilers/Shared/BuildServerConnection.cs
-@@ -543,19 +543,10 @@ namespace Microsoft.CodeAnalysis.Command
- {
- try
- {
-- if (PlatformInformation.IsRunningOnMono)
-+ if (PlatformInformation.IsUsingMonoRuntime)
- {
-- IServerMutex? mutex = null;
-- bool createdNew = false;
-- try
-- {
-- mutex = new ServerFileMutexPair(mutexName, false, out createdNew);
-- return !createdNew;
-- }
-- finally
-- {
-- mutex?.Dispose();
-- }
-+ using var mutex = new ServerFileMutex(mutexName);
-+ return !mutex.CouldLock();
- }
- else
- {
-@@ -572,9 +563,11 @@ namespace Microsoft.CodeAnalysis.Command
-
- internal static IServerMutex OpenOrCreateMutex(string name, out bool createdNew)
- {
-- if (PlatformInformation.IsRunningOnMono)
-+ if (PlatformInformation.IsUsingMonoRuntime)
- {
-- return new ServerFileMutexPair(name, initiallyOwned: true, out createdNew);
-+ var mutex = new ServerFileMutex(name);
-+ createdNew = mutex.TryLock(0);
-+ return mutex;
- }
- else
- {
-@@ -648,19 +641,22 @@ namespace Microsoft.CodeAnalysis.Command
- }
-
- /// <summary>
-- /// An interprocess mutex abstraction based on OS advisory locking (FileStream.Lock/Unlock).
-+ /// An interprocess mutex abstraction based on file sharing permission (FileShare.None).
- /// If multiple processes running as the same user create FileMutex instances with the same name,
- /// those instances will all point to the same file somewhere in a selected temporary directory.
-- /// The TryLock method can be used to attempt to acquire the mutex, with Unlock or Dispose used to release.
-+ /// The TryLock method can be used to attempt to acquire the mutex, with Dispose used to release.
-+ /// The CouldLock method can be used to check whether an attempt to acquire the mutex would have
-+ /// succeeded at the current time, without actually acquiring it.
- /// Unlike Win32 named mutexes, there is no mechanism for detecting an abandoned mutex. The file
- /// will simply revert to being unlocked but remain where it is.
- /// </summary>
-- internal sealed class FileMutex : IDisposable
-+ internal sealed class ServerFileMutex : IServerMutex
- {
-- public readonly FileStream Stream;
-+ public FileStream? Stream;
- public readonly string FilePath;
-+ public readonly string GuardPath;
-
-- public bool IsLocked { get; private set; }
-+ public bool IsDisposed { get; private set; }
-
- internal static string GetMutexDirectory()
- {
-@@ -670,61 +666,176 @@ namespace Microsoft.CodeAnalysis.Command
- return result;
- }
-
-- public FileMutex(string name)
-+ public ServerFileMutex(string name)
- {
-- FilePath = Path.Combine(GetMutexDirectory(), name);
-- Stream = new FileStream(FilePath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None);
-+ var mutexDirectory = GetMutexDirectory();
-+ FilePath = Path.Combine(mutexDirectory, name);
-+ GuardPath = Path.Combine(mutexDirectory, ".guard");
- }
-
-- public bool TryLock(int timeoutMs)
-+ /// <summary>
-+ /// Acquire the guard by opening the guard file with FileShare.None. The guard must only ever
-+ /// be held for very brief amounts of time, so we can simply spin until it is acquired. The
-+ /// guard must be released by disposing the FileStream returned from this routine. Note the
-+ /// guard file is never deleted; this is a leak, but only of a single file.
-+ /// </summary>
-+ internal FileStream LockGuard()
- {
-- if (IsLocked)
-- throw new InvalidOperationException("Lock already held");
--
-- var sw = Stopwatch.StartNew();
-- do
-+ // We should be able to acquire the guard quickly. Limit the number of retries anyway
-+ // by some arbitrary bound to avoid getting hung up in a possibly infinite loop.
-+ for (var i = 0; i < 100; i++)
- {
- try
- {
-- Stream.Lock(0, 0);
-- IsLocked = true;
-- return true;
-+ return new FileStream(GuardPath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None);
- }
- catch (IOException)
- {
-- // Lock currently held by someone else.
-+ // Guard currently held by someone else.
- // We want to sleep for a short period of time to ensure that other processes
- // have an opportunity to finish their work and relinquish the lock.
- // Spinning here (via Yield) would work but risks creating a priority
- // inversion if the lock is held by a lower-priority process.
- Thread.Sleep(1);
- }
-+ }
-+ // Handle unexpected failure to acquire guard as error.
-+ throw new InvalidOperationException("Unable to acquire guard");
-+ }
-+
-+ /// <summary>
-+ /// Attempt to acquire the lock by opening the lock file with FileShare.None. Sets "Stream"
-+ /// and returns true if successful, returns false if the lock is already held by another
-+ /// thread or process. Guard must be held when calling this routine.
-+ /// </summary>
-+ internal bool TryLockFile()
-+ {
-+ Debug.Assert(Stream is null);
-+ FileStream? stream = null;
-+ try
-+ {
-+ stream = new FileStream(FilePath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None);
-+ // On some targets, the file locking used to implement FileShare.None may not be
-+ // atomic with opening/creating the file. This creates a race window when another
-+ // thread holds the lock and is just about to unlock: we may be able to open the
-+ // file here, then the other thread unlocks and deletes the file, and then we
-+ // acquire the lock on our file handle - but the actual file is already deleted.
-+ // To close this race, we verify that the file does in fact still exist now that
-+ // we have successfull acquired the locked FileStream. (Note that this check is
-+ // safe because we cannot race with an other attempt to create the file since we
-+ // hold the guard, and after the FileStream constructor returned we can no race
-+ // with file deletion because we hold the lock.)
-+ if (!File.Exists(FilePath))
-+ {
-+ // To simplify the logic, we treat this case as "unable to acquire the lock"
-+ // because it we caught another process while it owned the lock and was just
-+ // giving it up. If the caller retries, we'll likely acquire the lock then.
-+ stream.Dispose();
-+ return false;
-+ }
-+ }
-+ catch (Exception)
-+ {
-+ stream?.Dispose();
-+ return false;
-+ }
-+ Stream = stream;
-+ return true;
-+ }
-+
-+ /// <summary>
-+ /// Release the lock by deleting the lock file and disposing "Stream".
-+ /// </summary>
-+ internal void UnlockFile()
-+ {
-+ Debug.Assert(Stream is not null);
-+ try
-+ {
-+ // Delete the lock file while the stream is not yet disposed
-+ // and we therefore still hold the FileShare.None exclusion.
-+ // There may still be a race with another thread attempting a
-+ // TryLockFile in parallel, but that is safely handled there.
-+ File.Delete(FilePath);
-+ }
-+ finally
-+ {
-+ Stream.Dispose();
-+ Stream = null;
-+ }
-+ }
-+
-+ public bool TryLock(int timeoutMs)
-+ {
-+ if (IsDisposed)
-+ throw new ObjectDisposedException("Mutex");
-+ if (Stream is not null)
-+ throw new InvalidOperationException("Lock already held");
-+
-+ var sw = Stopwatch.StartNew();
-+ do
-+ {
-+ try
-+ {
-+ // Attempt to acquire lock while holding guard.
-+ using var guard = LockGuard();
-+ if (TryLockFile())
-+ return true;
-+ }
- catch (Exception)
- {
-- // Something else went wrong.
- return false;
- }
-+
-+ // See comment in LockGuard.
-+ Thread.Sleep(1);
- } while (sw.ElapsedMilliseconds < timeoutMs);
-
- return false;
- }
-
-- public void Unlock()
-+ public bool CouldLock()
- {
-- if (!IsLocked)
-- return;
-- Stream.Unlock(0, 0);
-- IsLocked = false;
-+ if (IsDisposed)
-+ return false;
-+ if (Stream is not null)
-+ return false;
-+
-+ try
-+ {
-+ // Attempt to acquire lock while holding guard, and if successful
-+ // immediately unlock again while still holding guard. This ensures
-+ // no other thread will spuriously observe the lock as held due to
-+ // the lock attempt here.
-+ using var guard = LockGuard();
-+ if (TryLockFile())
-+ {
-+ UnlockFile();
-+ return true;
-+ }
-+ }
-+ catch (Exception)
-+ {
-+ return false;
-+ }
-+
-+ return false;
- }
-
- public void Dispose()
- {
-- var wasLocked = IsLocked;
-- if (wasLocked)
-- Unlock();
-- Stream.Dispose();
-- // We do not delete the lock file here because there is no reliable way to perform a
-- // 'delete if no one has the file open' operation atomically on *nix. This is a leak.
-+ if (IsDisposed)
-+ return;
-+ IsDisposed = true;
-+ if (Stream is not null)
-+ {
-+ try
-+ {
-+ UnlockFile();
-+ }
-+ catch (Exception)
-+ {
-+ }
-+ }
- }
- }
-
-@@ -792,56 +903,4 @@ namespace Microsoft.CodeAnalysis.Command
- }
- }
- }
--
-- /// <summary>
-- /// Approximates a named mutex with 'locked', 'unlocked' and 'abandoned' states.
-- /// There is no reliable way to detect whether a mutex has been abandoned on some target platforms,
-- /// so we use the AliveMutex to manually track whether the creator of a mutex is still running,
-- /// while the HeldMutex represents the actual lock state of the mutex.
-- /// </summary>
-- internal sealed class ServerFileMutexPair : IServerMutex
-- {
-- public readonly FileMutex AliveMutex;
-- public readonly FileMutex HeldMutex;
--
-- public bool IsDisposed { get; private set; }
--
-- public ServerFileMutexPair(string mutexName, bool initiallyOwned, out bool createdNew)
-- {
-- AliveMutex = new FileMutex(mutexName + "-alive");
-- HeldMutex = new FileMutex(mutexName + "-held");
-- createdNew = AliveMutex.TryLock(0);
-- if (initiallyOwned && createdNew)
-- {
-- if (!TryLock(0))
-- throw new Exception("Failed to lock mutex after creating it");
-- }
-- }
--
-- public bool TryLock(int timeoutMs)
-- {
-- if (IsDisposed)
-- throw new ObjectDisposedException("Mutex");
-- return HeldMutex.TryLock(timeoutMs);
-- }
--
-- public void Dispose()
-- {
-- if (IsDisposed)
-- return;
-- IsDisposed = true;
--
-- try
-- {
-- HeldMutex.Unlock();
-- AliveMutex.Unlock();
-- }
-- finally
-- {
-- AliveMutex.Dispose();
-- HeldMutex.Dispose();
-- }
-- }
-- }
--
- }
diff --git a/roslyn-analyzers-no-apphost.patch b/roslyn-analyzers-no-apphost.patch
deleted file mode 100644
index c1fc3dd..0000000
--- a/roslyn-analyzers-no-apphost.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/src/Tools/ReleaseNotesUtil/ReleaseNotesUtil.csproj
-+++ b/src/Tools/ReleaseNotesUtil/ReleaseNotesUtil.csproj
-@@ -4,6 +4,7 @@
- <TargetFramework>netcoreapp3.1</TargetFramework>
- <NonShipping>true</NonShipping>
- <ExcludeFromSourceBuild>true</ExcludeFromSourceBuild>
-+ <UseAppHost>false</UseAppHost>
- </PropertyGroup>
- <ItemGroup>
- <PackageReference Include="Microsoft.CodeAnalysis" Version="$(MicrosoftCodeAnalysisVersion)" />
diff --git a/roslyn-no-apphost.patch b/roslyn-no-apphost.patch
deleted file mode 100644
index f1767c7..0000000
--- a/roslyn-no-apphost.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/src/Workspaces/Remote/ServiceHub.CoreComponents/Microsoft.CodeAnalysis.Remote.ServiceHub.CoreComponents.csproj
-+++ b/src/Workspaces/Remote/ServiceHub.CoreComponents/Microsoft.CodeAnalysis.Remote.ServiceHub.CoreComponents.csproj
-@@ -5,6 +5,7 @@
- <OutputType>Exe</OutputType>
- <TargetFramework>netcoreapp3.1</TargetFramework>
- <!-- The purpose of this project is to include all dependecies of Microsoft.CodeAnalysis.Remote.ServiceHub targeting .Net Core -->
-+ <UseAppHost>false</UseAppHost>
- <IsShipping>false</IsShipping>
- </PropertyGroup>
- <ItemGroup>
diff --git a/runtime-66594-s390x-debuginfo.patch b/runtime-66594-s390x-debuginfo.patch
deleted file mode 100644
index 5637645..0000000
--- a/runtime-66594-s390x-debuginfo.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-diff --git a/src/mono/mono.proj b/src/mono/mono.proj
-index fb98ffc1896..d6a0c9a8ec2 100644
---- a/src/mono/mono.proj
-+++ b/src/mono/mono.proj
-@@ -519,17 +519,17 @@
- <!-- if all else fails in finding a valid objcopy, fall back to no-prefix from $PATH (used for x64 on CentOS) -->
- <_Objcopy Condition="'$(_ObjcopyFound)' != '0'">objcopy</_Objcopy>
- </PropertyGroup>
-- <ItemGroup>
-+ <ItemGroup Condition="'$(KeepNativeSymbols)' != 'true'">
- <FilesToStrip Include="$(_MonoRuntimeFilePath)" />
- <FilesToStrip Include="$([System.IO.Directory]::GetParent($(_MonoRuntimeFilePath)))\libmono-component-*$(SharedLibExt)" />
- <FilesToStrip Include="$([System.IO.Directory]::GetParent($(_MonoRuntimeFilePath)))\Mono*framework\**\Mono*" Exclude="$([System.IO.Directory]::GetParent($(_MonoRuntimeFilePath)))\Mono*framework\**\*.dwarf" />
- </ItemGroup>
-- <Message Condition="'$(BuildMonoAOTCrossCompilerOnly)' != 'true' and ($([MSBuild]::IsOSPlatform('OSX')) or $([MSBuild]::IsOSPlatform('Linux')))" Text="Stripping debug symbols from %(FilesToStrip.Identity)" Importance="High"/>
-- <Exec Condition="!$([System.String]::Copy(%(FilesToStrip.Identity)).EndsWith('.a')) and '$(BuildMonoAOTCrossCompilerOnly)' != 'true' and ('$(TargetsOSX)' == 'true' or '$(TargetsMacCatalyst)' == 'true' or '$(TargetsiOS)' == 'true' or '$(TargetstvOS)' == 'true')" Command="dsymutil --flat --minimize %(FilesToStrip.Identity)" IgnoreStandardErrorWarningFormat="true" WorkingDirectory="$(MonoObjDir)"/>
-- <Exec Condition="!$([System.String]::Copy(%(FilesToStrip.Identity)).EndsWith('.a')) and '$(BuildMonoAOTCrossCompilerOnly)' != 'true' and ('$(TargetsOSX)' == 'true' or '$(TargetsMacCatalyst)' == 'true' or '$(TargetsiOS)' == 'true' or '$(TargetstvOS)' == 'true')" Command="strip -no_code_signature_warning -S %(FilesToStrip.Identity)" IgnoreStandardErrorWarningFormat="true" WorkingDirectory="$(MonoObjDir)"/>
-- <Exec Condition="!$([System.String]::Copy(%(FilesToStrip.Identity)).EndsWith('.a')) and '$(BuildMonoAOTCrossCompilerOnly)' != 'true' and ('$(TargetsLinux)' == 'true' or '$(TargetsAndroid)' == 'true')" Command="$(_Objcopy) --only-keep-debug %(FilesToStrip.Identity) %(FilesToStrip.Identity).dbg" IgnoreStandardErrorWarningFormat="true" WorkingDirectory="$(MonoObjDir)"/>
-- <Exec Condition="!$([System.String]::Copy(%(FilesToStrip.Identity)).EndsWith('.a')) and '$(BuildMonoAOTCrossCompilerOnly)' != 'true' and ('$(TargetsLinux)' == 'true' or '$(TargetsAndroid)' == 'true')" Command="$(_Objcopy) --strip-unneeded %(FilesToStrip.Identity)" IgnoreStandardErrorWarningFormat="true" WorkingDirectory="$(MonoObjDir)"/>
-- <Exec Condition="!$([System.String]::Copy(%(FilesToStrip.Identity)).EndsWith('.a')) and '$(BuildMonoAOTCrossCompilerOnly)' != 'true' and ('$(TargetsLinux)' == 'true' or '$(TargetsAndroid)' == 'true')" Command="$(_Objcopy) --add-gnu-debuglink=%(FilesToStrip.Identity).dbg %(FilesToStrip.Identity)" IgnoreStandardErrorWarningFormat="true" WorkingDirectory="$(MonoObjDir)"/>
-+ <Message Condition="'@(FilesToStrip)' != '' and '$(BuildMonoAOTCrossCompilerOnly)' != 'true' and ($([MSBuild]::IsOSPlatform('OSX')) or $([MSBuild]::IsOSPlatform('Linux')))" Text="Stripping debug symbols from %(FilesToStrip.Identity)" Importance="High"/>
-+ <Exec Condition="'@(FilesToStrip)' != '' and !$([System.String]::Copy(%(FilesToStrip.Identity)).EndsWith('.a')) and '$(BuildMonoAOTCrossCompilerOnly)' != 'true' and ('$(TargetsOSX)' == 'true' or '$(TargetsMacCatalyst)' == 'true' or '$(TargetsiOS)' == 'true' or '$(TargetstvOS)' == 'true')" Command="dsymutil --flat --minimize %(FilesToStrip.Identity)" IgnoreStandardErrorWarningFormat="true" WorkingDirectory="$(MonoObjDir)"/>
-+ <Exec Condition="'@(FilesToStrip)' != '' and !$([System.String]::Copy(%(FilesToStrip.Identity)).EndsWith('.a')) and '$(BuildMonoAOTCrossCompilerOnly)' != 'true' and ('$(TargetsOSX)' == 'true' or '$(TargetsMacCatalyst)' == 'true' or '$(TargetsiOS)' == 'true' or '$(TargetstvOS)' == 'true')" Command="strip -no_code_signature_warning -S %(FilesToStrip.Identity)" IgnoreStandardErrorWarningFormat="true" WorkingDirectory="$(MonoObjDir)"/>
-+ <Exec Condition="'@(FilesToStrip)' != '' and !$([System.String]::Copy(%(FilesToStrip.Identity)).EndsWith('.a')) and '$(BuildMonoAOTCrossCompilerOnly)' != 'true' and ('$(TargetsLinux)' == 'true' or '$(TargetsAndroid)' == 'true')" Command="$(_Objcopy) --only-keep-debug %(FilesToStrip.Identity) %(FilesToStrip.Identity).dbg" IgnoreStandardErrorWarningFormat="true" WorkingDirectory="$(MonoObjDir)"/>
-+ <Exec Condition="'@(FilesToStrip)' != '' and !$([System.String]::Copy(%(FilesToStrip.Identity)).EndsWith('.a')) and '$(BuildMonoAOTCrossCompilerOnly)' != 'true' and ('$(TargetsLinux)' == 'true' or '$(TargetsAndroid)' == 'true')" Command="$(_Objcopy) --strip-unneeded %(FilesToStrip.Identity)" IgnoreStandardErrorWarningFormat="true" WorkingDirectory="$(MonoObjDir)"/>
-+ <Exec Condition="'@(FilesToStrip)' != '' and !$([System.String]::Copy(%(FilesToStrip.Identity)).EndsWith('.a')) and '$(BuildMonoAOTCrossCompilerOnly)' != 'true' and ('$(TargetsLinux)' == 'true' or '$(TargetsAndroid)' == 'true')" Command="$(_Objcopy) --add-gnu-debuglink=%(FilesToStrip.Identity).dbg %(FilesToStrip.Identity)" IgnoreStandardErrorWarningFormat="true" WorkingDirectory="$(MonoObjDir)"/>
- </Target>
-
- <!-- Build AOT cross compiler (if available) -->
diff --git a/runtime-arm64-lld-fix.patch b/runtime-arm64-lld-fix.patch
deleted file mode 100644
index db6f520..0000000
--- a/runtime-arm64-lld-fix.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-diff --git a/eng/native/init-compiler.sh b/eng/native/init-compiler.sh
-index 567d18da474..927b3071e92 100755
---- a/eng/native/init-compiler.sh
-+++ b/eng/native/init-compiler.sh
-@@ -108,11 +108,8 @@
- fi
-
- if [[ "$compiler" == "clang" ]]; then
-- if command -v "lld$desired_version" > /dev/null; then
-- # Only lld version >= 9 can be considered stable
-- if [[ "$majorVersion" -ge 9 ]]; then
-- LDFLAGS="-fuse-ld=lld"
-- fi
-+ if "$CC" -fuse-ld=lld -Wl,--version >/dev/null 2>&1; then
-+ LDFLAGS="-fuse-ld=lld"
- fi
- fi
-
diff --git a/runtime-fedora-37-rid.patch b/runtime-fedora-37-rid.patch
deleted file mode 100644
index 720fdcb..0000000
--- a/runtime-fedora-37-rid.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-diff --git a/src/libraries/Microsoft.NETCore.Platforms/src/runtime.compatibility.json b/src/libraries/Microsoft.NETCore.Platforms/src/runtime.compatibility.json
-index bf6dfc3c1a1..1de4979b8ee 100644
---- a/src/libraries/Microsoft.NETCore.Platforms/src/runtime.compatibility.json
-+++ b/src/libraries/Microsoft.NETCore.Platforms/src/runtime.compatibility.json
-@@ -3029,6 +3029,38 @@
- "any",
- "base"
- ],
-+ "fedora.37": [
-+ "fedora.37",
-+ "fedora",
-+ "linux",
-+ "unix",
-+ "any",
-+ "base"
-+ ],
-+ "fedora.37-arm64": [
-+ "fedora.37-arm64",
-+ "fedora.37",
-+ "fedora-arm64",
-+ "fedora",
-+ "linux-arm64",
-+ "linux",
-+ "unix-arm64",
-+ "unix",
-+ "any",
-+ "base"
-+ ],
-+ "fedora.37-x64": [
-+ "fedora.37-x64",
-+ "fedora.37",
-+ "fedora-x64",
-+ "fedora",
-+ "linux-x64",
-+ "linux",
-+ "unix-x64",
-+ "unix",
-+ "any",
-+ "base"
-+ ],
- "freebsd": [
- "freebsd",
- "unix",
-diff --git a/src/libraries/Microsoft.NETCore.Platforms/src/runtime.json b/src/libraries/Microsoft.NETCore.Platforms/src/runtime.json
-index 2e6ec616b74..70a1582ba64 100644
---- a/src/libraries/Microsoft.NETCore.Platforms/src/runtime.json
-+++ b/src/libraries/Microsoft.NETCore.Platforms/src/runtime.json
-@@ -1146,6 +1146,23 @@
- "fedora-x64"
- ]
- },
-+ "fedora.37": {
-+ "#import": [
-+ "fedora"
-+ ]
-+ },
-+ "fedora.37-arm64": {
-+ "#import": [
-+ "fedora.37",
-+ "fedora-arm64"
-+ ]
-+ },
-+ "fedora.37-x64": {
-+ "#import": [
-+ "fedora.37",
-+ "fedora-x64"
-+ ]
-+ },
- "freebsd": {
- "#import": [
- "unix"
-diff --git a/src/libraries/Microsoft.NETCore.Platforms/src/runtimeGroups.props b/src/libraries/Microsoft.NETCore.Platforms/src/runtimeGroups.props
-index 1945bb9af0e..75c6d28a30f 100644
---- a/src/libraries/Microsoft.NETCore.Platforms/src/runtimeGroups.props
-+++ b/src/libraries/Microsoft.NETCore.Platforms/src/runtimeGroups.props
-@@ -71,7 +71,7 @@
- <RuntimeGroup Include="fedora">
- <Parent>linux</Parent>
- <Architectures>x64;arm64</Architectures>
-- <Versions>23;24;25;26;27;28;29;30;31;32;33;34;35;36</Versions>
-+ <Versions>23;24;25;26;27;28;29;30;31;32;33;34;35;36;37</Versions>
- <TreatVersionsAsCompatible>false</TreatVersionsAsCompatible>
- </RuntimeGroup>
-
diff --git a/runtime-mono-remove-ilstrip.patch b/runtime-mono-remove-ilstrip.patch
deleted file mode 100644
index 9a711f8..0000000
--- a/runtime-mono-remove-ilstrip.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-diff --git a/src/mono/nuget/Microsoft.NET.Runtime.MonoTargets.Sdk/Microsoft.NET.Runtime.MonoTargets.Sdk.pkgproj b/src/mono/nuget/Microsoft.NET.Runtime.MonoTargets.Sdk/Microsoft.NET.Runtime.MonoTargets.Sdk.pkgproj
-index 724b704f864..3dabdc81dae 100644
---- a/src/mono/nuget/Microsoft.NET.Runtime.MonoTargets.Sdk/Microsoft.NET.Runtime.MonoTargets.Sdk.pkgproj
-+++ b/src/mono/nuget/Microsoft.NET.Runtime.MonoTargets.Sdk/Microsoft.NET.Runtime.MonoTargets.Sdk.pkgproj
-@@ -6,7 +6,7 @@
- </PropertyGroup>
-
- <ItemGroup>
-- <ProjectReference Include="$(RepoTasksDir)ILStripTask\ILStrip.csproj" />
-+ <ProjectReference Include="$(RepoTasksDir)ILStripTask\ILStrip.csproj" Condition="'$(DotNetBuildFromSource)' != 'true'" />
- <ProjectReference Include="$(RepoTasksDir)RuntimeConfigParser\RuntimeConfigParser.csproj" />
- <ProjectReference Include="$(RepoTasksDir)JsonToItemsTaskFactory\JsonToItemsTaskFactory.csproj" />
- </ItemGroup>
-@@ -15,7 +15,7 @@
- <PackageFile Include="Sdk\Sdk.props" TargetPath="Sdk" />
- <PackageFile Include="Sdk\Sdk.targets" TargetPath="Sdk" />
- <PackageFile Include="build\$(MSBuildProjectName).props" TargetPath="build" />
-- <PackageFile Include="Sdk\ILStripTask.props" TargetPath="Sdk" />
-+ <PackageFile Include="Sdk\ILStripTask.props" TargetPath="Sdk" Condition="'$(DotNetBuildFromSource)' != 'true'" />
- <PackageFile Include="Sdk\RuntimeConfigParserTask.props" TargetPath="Sdk" />
- <PackageFile Include="Sdk\RuntimeComponentManifest.props" TargetPath="Sdk" />
- <PackageFile Include="Sdk\RuntimeComponentManifest.targets" TargetPath="Sdk" />
-diff --git a/src/mono/nuget/Microsoft.NET.Runtime.MonoTargets.Sdk/Sdk/Sdk.props b/src/mono/nuget/Microsoft.NET.Runtime.MonoTargets.Sdk/Sdk/Sdk.props
-index 8a7ede79242..cfd515eeca9 100644
---- a/src/mono/nuget/Microsoft.NET.Runtime.MonoTargets.Sdk/Sdk/Sdk.props
-+++ b/src/mono/nuget/Microsoft.NET.Runtime.MonoTargets.Sdk/Sdk/Sdk.props
-@@ -1,5 +1,5 @@
- <Project>
-- <Import Project="$(MSBuildThisFileDirectory)\ILStripTask.props" />
-+ <Import Project="$(MSBuildThisFileDirectory)\ILStripTask.props" Condition="'$(DotNetBuildFromSource)' != 'true'" />
- <Import Project="$(MSBuildThisFileDirectory)\RuntimeConfigParserTask.props" />
- <Import Project="$(MSBuildThisFileDirectory)\RuntimeComponentManifest.props" />
- </Project>
diff --git a/sdk-22373-portablerid.patch b/sdk-22373-portablerid.patch
deleted file mode 100644
index 8b39eb3..0000000
--- a/sdk-22373-portablerid.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From 499fcf6e3b0e4b01a9c340a06f00cfc3e1fcc5d2 Mon Sep 17 00:00:00 2001
-From: Tom Deseyn <tom.deseyn(a)gmail.com>
-Date: Tue, 5 Oct 2021 09:04:14 +0200
-Subject: [PATCH] Use the portable rid for --use-current-runtime.
-
----
- .../targets/Microsoft.NET.RuntimeIdentifierInference.targets | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.RuntimeIdentifierInference.targets b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.RuntimeIdentifierInference.targets
-index 17308aa9160..e764b2d9845 100644
---- a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.RuntimeIdentifierInference.targets
-+++ b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.RuntimeIdentifierInference.targets
-@@ -62,7 +62,7 @@ Copyright (c) .NET Foundation. All rights reserved.
- </PropertyGroup>
-
- <PropertyGroup Condition="'$(UseCurrentRuntimeIdentifier)' == 'true'">
-- <RuntimeIdentifier>$(NETCoreSdkRuntimeIdentifier)</RuntimeIdentifier>
-+ <RuntimeIdentifier>$(NETCoreSdkPortableRuntimeIdentifier)</RuntimeIdentifier>
- </PropertyGroup>
-
- <PropertyGroup Condition="'$(PlatformTarget)' == ''">
diff --git a/sdk-telemetry-optout.patch b/sdk-telemetry-optout.patch
deleted file mode 100644
index d6e6464..0000000
--- a/sdk-telemetry-optout.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-diff --git a/src/Cli/dotnet/Program.cs b/src/Cli/dotnet/Program.cs
-index de1ebb9e6..6bbf479de 100644
---- a/src/Cli/dotnet/Program.cs
-+++ b/src/Cli/dotnet/Program.cs
-@@ -28,6 +28,13 @@ public class Program
-
- public static int Main(string[] args)
- {
-+ // opt out of telemetry by default if the env var is unset
-+ string telemetryValue = Environment.GetEnvironmentVariable("DOTNET_CLI_TELEMETRY_OPTOUT");
-+ if (String.IsNullOrEmpty(telemetryValue))
-+ {
-+ Environment.SetEnvironmentVariable("DOTNET_CLI_TELEMETRY_OPTOUT", "1");
-+ }
-+
- DebugHelper.HandleDebugSwitch(ref args);
-
- // Capture the current timestamp to calculate the host overhead.
diff --git a/vstest-use-work-tree-with-git-apply.patch b/vstest-use-work-tree-with-git-apply.patch
deleted file mode 100644
index 58c139f..0000000
--- a/vstest-use-work-tree-with-git-apply.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From b2c4b2427d8c1a2410c4210789caccf1ec87e64a Mon Sep 17 00:00:00 2001
-From: Omair Majid <omajid(a)redhat.com>
-Date: Thu, 9 Sep 2021 13:21:51 -0400
-Subject: [PATCH] [ArPow] Use --work-tree with git apply
-
-This makes things work better in a source-tarball build, where there may
-be a .git directory somewhere in our parent directories but it's for a
-different repo than vstest. In a situation like that a plain `git apply`
-will (silently!) ignore patches because they wont apply to the unrelated
-repository. That will (eventually) make the source-build fail.
-`--work-tree` makes git directly use the directory that we care about.
-
-See https://github.com/dotnet/source-build/issues/2445 for more details.
----
- eng/SourceBuild.props | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/eng/SourceBuild.props b/eng/SourceBuild.props
-index b365645c..68f82592 100644
---- a/eng/SourceBuild.props
-+++ b/eng/SourceBuild.props
-@@ -24,7 +24,7 @@
- </ItemGroup>
-
- <Exec
-- Command="git apply --ignore-whitespace --whitespace=nowarn "%(SourceBuildPatchFile.FullPath)""
-+ Command="git --work-tree="$(InnerSourceBuildRepoRoot)" apply --ignore-whitespace --whitespace=nowarn "%(SourceBuildPatchFile.FullPath)""
- WorkingDirectory="$(InnerSourceBuildRepoRoot)"
- Condition="'@(SourceBuildPatchFile)' != ''" />
- </Target>
---
-2.31.1
-
diff --git a/xliff-tasks-use-work-tree-with-git-apply.patch b/xliff-tasks-use-work-tree-with-git-apply.patch
deleted file mode 100644
index 810cf67..0000000
--- a/xliff-tasks-use-work-tree-with-git-apply.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/eng/SourceBuild.props
-+++ b/eng/SourceBuild.props
-@@ -15,7 +15,7 @@
- </ItemGroup>
-
- <Exec
-- Command="git apply --ignore-whitespace --whitespace=nowarn "%(SourceBuildPatchFile.FullPath)""
-+ Command="git --work-tree="$(RepoRoot)" apply --ignore-whitespace --whitespace=nowarn "%(SourceBuildPatchFile.FullPath)""
- WorkingDirectory="$(RepoRoot)"
- Condition="'@(SourceBuildPatchFile)' != ''" />
- </Target>
commit 3fe21304d3bc2ca67f0f62b1851daeae950299cd
Author: Omair Majid <omajid(a)redhat.com>
Date: Mon Jul 25 15:30:59 2022 -0400
Update to .NET 7 installer ace7452f
diff --git a/build-dotnet-tarball b/build-dotnet-tarball
index 8cf8ecd..b85c3a7 100755
--- a/build-dotnet-tarball
+++ b/build-dotnet-tarball
@@ -118,8 +118,12 @@ fi
if [ ! -f "${unmodified_tarball_name}.tar.gz" ]; then
temp_dir=$(mktemp -d -p "$(pwd)")
pushd "${temp_dir}"
- git clone https://github.com/dotnet/installer --branch "${tag}" --depth 1
+ mkdir installer
pushd installer
+ git init
+ git remote add origin https://github.com/dotnet/installer
+ git fetch --depth 1 origin "${tag}"
+ git checkout FETCH_HEAD
git submodule update --init --recursive
clean_dotnet_cache
mkdir -p "../${unmodified_tarball_name}"
@@ -188,7 +192,7 @@ rm -r src/source-build-externals/src/humanizer/samples/
popd
if [[ ${build_bootstrap} == true ]]; then
- tar -I 'xz -T 0' -cf "${tarball_name}${tarball_suffix}" "${tarball_name}"
+ tar -I 'xz -9 -T 0' -cf "${tarball_name}${tarball_suffix}" "${tarball_name}"
else
tar -czf "${tarball_name}${tarball_suffix}" "${tarball_name}"
fi
diff --git a/copr-build b/copr-build
new file mode 100755
index 0000000..1e475c9
--- /dev/null
+++ b/copr-build
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+set -euo pipefail
+
+set -x
+
+fedpkg --release f36 srpm 2>&1 | tee fedpkg.output
+
+srpm_name=$(grep 'Wrote: ' fedpkg.output | cut -d' ' -f 2)
+
+copr-cli build --enable-net on @dotnet-sig/dotnet-preview "${srpm_name}"
diff --git a/dotnet7.0.spec b/dotnet7.0.spec
index 7477c22..d7049f7 100644
--- a/dotnet7.0.spec
+++ b/dotnet7.0.spec
@@ -20,12 +20,12 @@
# until that's done, disable LTO. This has to happen before setting the flags below.
%define _lto_cflags %{nil}
-%global host_version 7.0.0-preview.6.22312.1
-%global runtime_version 7.0.0-preview.6.22312.1
-%global aspnetcore_runtime_version 7.0.0-preview.6.22312.2
-%global sdk_version 7.0.100-preview.6.22315.1
+%global host_version 7.0.0-rc.1.22367.4
+%global runtime_version 7.0.0-rc.1.22367.4
+%global aspnetcore_runtime_version 7.0.0-rc.1.22368.6
+%global sdk_version 7.0.100-rc.1.22372.1
%global sdk_feature_band_version %(echo %{sdk_version} | cut -d '-' -f 1 | sed -e 's|[[:digit:]][[:digit:]]$|00|')
-%global templates_version 7.0.0-preview.6.22312.2
+%global templates_version 7.0.0-rc.1.22368.6
#%%global templates_version %%(echo %%{runtime_version} | awk 'BEGIN { FS="."; OFS="." } {print $1, $2, $3+1 }')
%global host_rpm_version 7.0.0
@@ -35,7 +35,7 @@
# upstream can update releases without revving the SDK version so these don't always match
#%%global upstream_tag v%%{sdk_version}
-%global upstream_tag main
+%global upstream_tag ace7452f3bc6801cf4c4b5745b777c60e9e496a7
%if 0%{?fedora} || 0%{?rhel} < 8
%global use_bundled_libunwind 0
@@ -59,7 +59,7 @@
%{!?runtime_id:%global runtime_id %(. /etc/os-release ; echo "${ID}.${VERSION_ID%%.*}")-%{runtime_arch}}
-Name: dotnet6.0
+Name: dotnet7.0
Version: %{sdk_rpm_version}
Release: 0.1%{?dist}
Summary: .NET Runtime and SDK
@@ -83,11 +83,11 @@ Source0: dotnet-%{upstream_tag}.tar.gz
Source10: check-debug-symbols.py
Source11: dotnet.sh.in
-Patch1: runtime-fix-cmakeargs-handling.patch
-
%if 0%{?fedora} || 0%{?rhel} >= 8
-ExclusiveArch: aarch64 x86_64 s390x
+# FIXME
+# ExclusiveArch: aarch64 x86_64 s390x
+ExclusiveArch: x86_64
%else
ExclusiveArch: x86_64
%endif
@@ -97,8 +97,8 @@ BuildRequires: clang
BuildRequires: cmake
BuildRequires: coreutils
%if %{without bootstrap}
-BuildRequires: dotnet-sdk-6.0
-BuildRequires: dotnet-sdk-6.0-source-built-artifacts
+BuildRequires: dotnet-sdk-7.0
+BuildRequires: dotnet-sdk-7.0-source-built-artifacts
%endif
BuildRequires: findutils
BuildRequires: git
@@ -140,7 +140,7 @@ application to drive everything.
Version: %{sdk_rpm_version}
Summary: .NET CLI tools and runtime
-Requires: dotnet-sdk-6.0%{?_isa} >= %{sdk_rpm_version}-%{release}
+Requires: dotnet-sdk-7.0%{?_isa} >= %{sdk_rpm_version}-%{release}
%description -n dotnet
.NET is a fast, lightweight and modular platform for creating
@@ -170,7 +170,7 @@ It particularly focuses on creating console applications, web
applications and micro-services.
-%package -n dotnet-hostfxr-6.0
+%package -n dotnet-hostfxr-7.0
Version: %{host_rpm_version}
Summary: .NET command line host resolver
@@ -179,7 +179,7 @@ Summary: .NET command line host resolver
# provided by this package, or from a newer version of .NET
Requires: dotnet-host%{?_isa} >= %{host_rpm_version}-%{release}
-%description -n dotnet-hostfxr-6.0
+%description -n dotnet-hostfxr-7.0
The .NET host resolver contains the logic to resolve and select
the right version of the .NET SDK or runtime to use.
@@ -190,12 +190,12 @@ It particularly focuses on creating console applications, web
applications and micro-services.
-%package -n dotnet-runtime-6.0
+%package -n dotnet-runtime-7.0
Version: %{runtime_rpm_version}
-Summary: NET 6.0 runtime
+Summary: NET 7.0 runtime
-Requires: dotnet-hostfxr-6.0%{?_isa} >= %{host_rpm_version}-%{release}
+Requires: dotnet-hostfxr-7.0%{?_isa} >= %{host_rpm_version}-%{release}
# libicu is dlopen()ed
Requires: libicu%{?_isa}
@@ -207,7 +207,7 @@ Provides: bundled(libbrotli) = 1.0.9
Provides: bundled(libunwind) = 1.5.rc1.28.g9165d2a1
%endif
-%description -n dotnet-runtime-6.0
+%description -n dotnet-runtime-7.0
The .NET runtime contains everything needed to run .NET applications.
It includes a high performance Virtual Machine as well as the framework
libraries used by .NET applications.
@@ -219,14 +219,14 @@ It particularly focuses on creating console applications, web
applications and micro-services.
-%package -n aspnetcore-runtime-6.0
+%package -n aspnetcore-runtime-7.0
Version: %{aspnetcore_runtime_rpm_version}
-Summary: ASP.NET Core 6.0 runtime
+Summary: ASP.NET Core 7.0 runtime
-Requires: dotnet-runtime-6.0%{?_isa} = %{runtime_rpm_version}-%{release}
+Requires: dotnet-runtime-7.0%{?_isa} = %{runtime_rpm_version}-%{release}
-%description -n aspnetcore-runtime-6.0
+%description -n aspnetcore-runtime-7.0
The ASP.NET Core runtime contains everything needed to run .NET
web applications. It includes a high performance Virtual Machine as
well as the framework libraries used by .NET applications.
@@ -238,16 +238,16 @@ It particularly focuses on creating console applications, web
applications and micro-services.
-%package -n dotnet-templates-6.0
+%package -n dotnet-templates-7.0
Version: %{sdk_rpm_version}
-Summary: .NET 6.0 templates
+Summary: .NET 7.0 templates
# Theoretically any version of the host should work. But lets aim for the one
# provided by this package, or from a newer version of .NET
Requires: dotnet-host%{?_isa} >= %{host_rpm_version}-%{release}
-%description -n dotnet-templates-6.0
+%description -n dotnet-templates-7.0
This package contains templates used by the .NET SDK.
.NET is a fast, lightweight and modular platform for creating
@@ -257,24 +257,24 @@ It particularly focuses on creating console applications, web
applications and micro-services.
-%package -n dotnet-sdk-6.0
+%package -n dotnet-sdk-7.0
Version: %{sdk_rpm_version}
-Summary: .NET 6.0 Software Development Kit
+Summary: .NET 7.0 Software Development Kit
Provides: bundled(js-jquery)
-Requires: dotnet-runtime-6.0%{?_isa} >= %{runtime_rpm_version}-%{release}
-Requires: aspnetcore-runtime-6.0%{?_isa} >= %{aspnetcore_runtime_rpm_version}-%{release}
+Requires: dotnet-runtime-7.0%{?_isa} >= %{runtime_rpm_version}-%{release}
+Requires: aspnetcore-runtime-7.0%{?_isa} >= %{aspnetcore_runtime_rpm_version}-%{release}
-Requires: dotnet-apphost-pack-6.0%{?_isa} >= %{runtime_rpm_version}-%{release}
-Requires: dotnet-targeting-pack-6.0%{?_isa} >= %{runtime_rpm_version}-%{release}
-Requires: aspnetcore-targeting-pack-6.0%{?_isa} >= %{aspnetcore_runtime_rpm_version}-%{release}
+Requires: dotnet-apphost-pack-7.0%{?_isa} >= %{runtime_rpm_version}-%{release}
+Requires: dotnet-targeting-pack-7.0%{?_isa} >= %{runtime_rpm_version}-%{release}
+Requires: aspnetcore-targeting-pack-7.0%{?_isa} >= %{aspnetcore_runtime_rpm_version}-%{release}
Requires: netstandard-targeting-pack-2.1%{?_isa} >= %{sdk_rpm_version}-%{release}
-Requires: dotnet-templates-6.0%{?_isa} >= %{sdk_rpm_version}-%{release}
+Requires: dotnet-templates-7.0%{?_isa} >= %{sdk_rpm_version}-%{release}
-%description -n dotnet-sdk-6.0
+%description -n dotnet-sdk-7.0
The .NET SDK is a collection of command line applications to
create, build, publish and run .NET applications.
@@ -303,18 +303,18 @@ applications using the .NET SDK.
%{_libdir}/dotnet/packs/%{5}
}
-%dotnet_targeting_pack dotnet-apphost-pack-6.0 %{runtime_rpm_version} Microsoft.NETCore.App 6.0 Microsoft.NETCore.App.Host.%{runtime_id}
-%dotnet_targeting_pack dotnet-targeting-pack-6.0 %{runtime_rpm_version} Microsoft.NETCore.App 6.0 Microsoft.NETCore.App.Ref
-%dotnet_targeting_pack aspnetcore-targeting-pack-6.0 %{aspnetcore_runtime_rpm_version} Microsoft.AspNetCore.App 6.0 Microsoft.AspNetCore.App.Ref
+%dotnet_targeting_pack dotnet-apphost-pack-7.0 %{runtime_rpm_version} Microsoft.NETCore.App 7.0 Microsoft.NETCore.App.Host.%{runtime_id}
+%dotnet_targeting_pack dotnet-targeting-pack-7.0 %{runtime_rpm_version} Microsoft.NETCore.App 7.0 Microsoft.NETCore.App.Ref
+%dotnet_targeting_pack aspnetcore-targeting-pack-7.0 %{aspnetcore_runtime_rpm_version} Microsoft.AspNetCore.App 7.0 Microsoft.AspNetCore.App.Ref
%dotnet_targeting_pack netstandard-targeting-pack-2.1 %{sdk_rpm_version} NETStandard.Library 2.1 NETStandard.Library.Ref
-%package -n dotnet-sdk-6.0-source-built-artifacts
+%package -n dotnet-sdk-7.0-source-built-artifacts
Version: %{sdk_rpm_version}
-Summary: Internal package for building .NET 6.0 Software Development Kit
+Summary: Internal package for building .NET 7.0 Software Development Kit
-%description -n dotnet-sdk-6.0-source-built-artifacts
+%description -n dotnet-sdk-7.0-source-built-artifacts
The .NET source-built archive is a collection of packages needed
to build the .NET SDK itself.
@@ -364,10 +364,6 @@ sed -i 's|/usr/share/dotnet|%{_libdir}/dotnet|' src/runtime/src/native/corehost/
sed -i -E 's|( /p:BuildDebPackage=false)|\1 --cmakeargs -DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=TRUE|' src/runtime/eng/SourceBuild.props
%endif
-pushd src/runtime
-%patch1 -p1
-popd
-
%build
cat /etc/os-release
@@ -429,13 +425,14 @@ VERBOSE=1 ./build.sh \
%endif
--online \
-- \
+ /p:MinimalConsoleLogOutput=false \
+ /p:ContinueOnPrebuiltBaselineError=true \
+
echo \
/v:n \
- /p:SkipPortableRuntimeBuild=true \
/p:LogVerbosity=n \
- /p:MinimalConsoleLogOutput=false \
- /p:ContinueOnPrebuiltBaselineError=true \
+ /p:SkipPortableRuntimeBuild=true \
sed -e 's|[@]LIBDIR[@]|%{_libdir}|g' %{SOURCE11} > dotnet.sh
@@ -540,33 +537,34 @@ export COMPlus_LTTng=0
%dir %{_datadir}/bash-completion/completions
%{_datadir}/bash-completion/completions/dotnet
-%files -n dotnet-hostfxr-6.0
+%files -n dotnet-hostfxr-7.0
%dir %{_libdir}/dotnet/host/fxr
%{_libdir}/dotnet/host/fxr/%{host_version}
-%files -n dotnet-runtime-6.0
+%files -n dotnet-runtime-7.0
%dir %{_libdir}/dotnet/shared
%dir %{_libdir}/dotnet/shared/Microsoft.NETCore.App
%{_libdir}/dotnet/shared/Microsoft.NETCore.App/%{runtime_version}
-%files -n aspnetcore-runtime-6.0
+%files -n aspnetcore-runtime-7.0
%dir %{_libdir}/dotnet/shared
%dir %{_libdir}/dotnet/shared/Microsoft.AspNetCore.App
%{_libdir}/dotnet/shared/Microsoft.AspNetCore.App/%{aspnetcore_runtime_version}
-%files -n dotnet-templates-6.0
+%files -n dotnet-templates-7.0
%dir %{_libdir}/dotnet/templates
%{_libdir}/dotnet/templates/%{templates_version}
-%files -n dotnet-sdk-6.0
+%files -n dotnet-sdk-7.0
%dir %{_libdir}/dotnet/sdk
%{_libdir}/dotnet/sdk/%{sdk_version}
%dir %{_libdir}/dotnet/sdk-manifests
+%{_libdir}/dotnet/sdk-manifests/6.0.300
%{_libdir}/dotnet/sdk-manifests/%{sdk_feature_band_version}
%{_libdir}/dotnet/metadata
%dir %{_libdir}/dotnet/packs
-%files -n dotnet-sdk-6.0-source-built-artifacts
+%files -n dotnet-sdk-7.0-source-built-artifacts
%dir %{_libdir}/dotnet
%{_libdir}/dotnet/source-built-artifacts
diff --git a/runtime-fix-cmakeargs-handling.patch b/runtime-fix-cmakeargs-handling.patch
deleted file mode 100644
index f0c7e13..0000000
--- a/runtime-fix-cmakeargs-handling.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/eng/build.sh b/eng/build.sh
-index 9c9beb471f1..7c766a227ef 100755
---- a/eng/build.sh
-+++ b/eng/build.sh
-@@ -392,7 +392,7 @@ while [[ $# > 0 ]]; do
- echo "No cmake args supplied." 1>&2
- exit 1
- fi
-- cmakeargs="${cmakeargs} ${opt} $2"
-+ cmakeargs="${cmakeargs} $2"
- shift 2
- ;;
-
commit 9fafb98fe5d30bca2c73e8fe8579cc4a0e9d53e4
Author: Omair Majid <omajid(a)redhat.com>
Date: Mon Jun 20 12:27:25 2022 -0400
Initial package
diff --git a/README.md b/README.md
index a3681f2..d46fa1f 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,7 @@
-# dotnet6.0
+# dotnet7.0
-This is the .NET 6.0 package for Fedora.
+This is the work-in-progress .NET 7.0 package for Fedora. When it's ready, it
+will be merged into Fedora proper.
This package is maintained by the Fedora DotNet SIG (Special Interest
Group). You can find out more about the DotNet SIG at:
@@ -10,7 +11,7 @@ Group). You can find out more about the DotNet SIG at:
- https://lists.fedoraproject.org/archives/list/dotnet-sig@lists.fedoraproj...
Please report any issues [using
-bugzilla](https://bugzilla.redhat.com/enter_bug.cgi?product=Fedora&component=dotnet6.0).
+bugzilla](https://bugzilla.redhat.com/enter_bug.cgi?product=Fedora&component=dotnet7.0).
# Specification
@@ -31,8 +32,8 @@ follow.
2. Checkout the forked repository.
- - `git clone ssh://$USER@pkgs.fedoraproject.org/forks/$USER/rpms/dotnet6.0.git`
- - `cd dotnet6.0`
+ - `git clone ssh://$USER@pkgs.fedoraproject.org/forks/$USER/rpms/dotnet7.0.git`
+ - `cd dotnet7.0`
3. Make your changes. Don't forget to add a changelog.
@@ -75,8 +76,8 @@ follow.
2. Checkout the forked repository.
- - `git clone ssh://$USER@pkgs.fedoraproject.org/forks/$USER/rpms/dotnet6.0.git`
- - `cd dotnet6.0`
+ - `git clone ssh://$USER@pkgs.fedoraproject.org/forks/$USER/rpms/dotnet7.0.git`
+ - `cd dotnet7.0`
3. Build the new upstream source tarball. Update the versions in the
spec file. Add a changelog. This is generally automated by the
diff --git a/build-dotnet-tarball b/build-dotnet-tarball
index 95b94a9..8cf8ecd 100755
--- a/build-dotnet-tarball
+++ b/build-dotnet-tarball
@@ -4,11 +4,9 @@
# build-dotnet-tarball [--bootstrap] <tag-from-installer>
#
# Creates a source archive from a tag (or commit) at github.com/dotnet/installer
-
-# installer is a little strange, we need to clone it, check out the
-# tag, build it and then create a tarball from the archive directory
-# it creates. Also, it is likely that the source archive is only
-# buildable on the OS it was initially created in.
+#
+# Clone dotnet/installer, check out the tag (if any), and build the
+# source-tarball.
set -euo pipefail
IFS=$'\n\t'
@@ -62,8 +60,10 @@ archmap=(
["aarch64"]="arm64"
["amd64"]="x64"
["armv8l"]="arm"
- ["i686"]="x86"
["i386"]="x86"
+ ["i686"]="x86"
+ ["ppc64le"]="ppc64le"
+ ["s390x"]="s390x"
["x86_64"]="x64"
)
@@ -123,18 +123,24 @@ if [ ! -f "${unmodified_tarball_name}.tar.gz" ]; then
git submodule update --init --recursive
clean_dotnet_cache
mkdir -p "../${unmodified_tarball_name}"
- ./build.sh /p:ArcadeBuildTarball=true /p:TarballDir="$(readlink -f ../"${unmodified_tarball_name}")"
+ ./build.sh /p:ArcadeBuildTarball=true
popd
popd
- tar cf "${unmodified_tarball_name}.tar.gz" -C "${temp_dir}" "${unmodified_tarball_name}"
+ cp -a \
+ "${temp_dir}"/installer/artifacts/packages/Debug/Shipping/dotnet-sdk-source-7*.tar.gz \
+ "${unmodified_tarball_name}.tar.gz"
rm -rf "${temp_dir}"
fi
rm -rf "${tarball_name}"
-tar xf "${unmodified_tarball_name}.tar.gz"
+
+mkdir -p "${unmodified_tarball_name}"
+pushd "${unmodified_tarball_name}"
+tar xf ../"${unmodified_tarball_name}.tar.gz"
+popd
mv "${unmodified_tarball_name}" "${tarball_name}"
pushd "${tarball_name}"
@@ -145,23 +151,6 @@ if [[ ${build_bootstrap} == true ]]; then
exit 1
fi
- pushd packages/archive/
- curl -O $(cat archiveArtifacts.txt)
- popd
-
- mkdir foo
- pushd foo
-
- tar xf ../packages/archive/Private.SourceBuilt.Artifacts.*.tar.gz
- sed -i -E 's|<MicrosoftNETHostModelPackageVersion>6.0.0-rtm.21521.1</|<MicrosoftNETHostModelPackageVersion>6.0.0-rtm.21521.4</|' PackageVersions.props
- sed -i -E 's|<MicrosoftNETHostModelVersion>6.0.0-rtm.21521.1</|<MicrosoftNETHostModelVersion>6.0.0-rtm.21521.4</|' PackageVersions.props
- cat PackageVersions.props
-
- tar czf ../packages/archive/Private.SourceBuilt.Artifacts.*.tar.gz *
-
- popd
- rm -rf foo
-
./prep.sh --bootstrap
mkdir -p fixup-previously-source-built-artifacts
@@ -182,19 +171,19 @@ fi
# not-very-useful artifacts to reduce tarball size
# Binaries for gradle
-rm -r src/aspnetcore.*/src/SignalR/clients/java/signalr/gradle*
-
-# Unnecessary crypto implementation: IDEA
-rm -r src/runtime.*/src/tests/JIT/Performance/CodeQuality/Bytemark/
+rm -r src/aspnetcore/src/SignalR/clients/java/signalr/gradle*
# https://github.com/dotnet/aspnetcore/issues/34785
-find src/aspnetcore.*/src -type d -name samples -print0 | xargs -0 rm -r
+find src/aspnetcore/src -type d -name samples -print0 | xargs -0 rm -r
+
+# Unnecessary crypto implementation: IDEA
+rm -r src/runtime/src/tests/JIT/Performance/CodeQuality/Bytemark/
# https://github.com/NuGet/Home/issues/11094
-rm -r src/nuget-client.*/test/EndToEnd
+rm -r src/nuget-client/test/EndToEnd
# https://github.com/Humanizr/sample-aspnetmvc/issues/1
-rm -r src/source-build.*/src/humanizer/samples/
+rm -r src/source-build-externals/src/humanizer/samples/
popd
diff --git a/dotnet6.0.spec b/dotnet7.0.spec
similarity index 89%
rename from dotnet6.0.spec
rename to dotnet7.0.spec
index e0495d6..7477c22 100644
--- a/dotnet6.0.spec
+++ b/dotnet7.0.spec
@@ -1,4 +1,4 @@
-%bcond_with bootstrap
+%bcond_without bootstrap
# Avoid provides/requires from private libraries
%global privlibs libhostfxr
@@ -20,21 +20,22 @@
# until that's done, disable LTO. This has to happen before setting the flags below.
%define _lto_cflags %{nil}
-%global host_version 6.0.5
-%global runtime_version 6.0.5
-%global aspnetcore_runtime_version %{runtime_version}
-%global sdk_version 6.0.105
-%global sdk_feature_band_version %(echo %{sdk_version} | sed -e 's|[[:digit:]][[:digit:]]$|00|')
-%global templates_version %{runtime_version}
+%global host_version 7.0.0-preview.6.22312.1
+%global runtime_version 7.0.0-preview.6.22312.1
+%global aspnetcore_runtime_version 7.0.0-preview.6.22312.2
+%global sdk_version 7.0.100-preview.6.22315.1
+%global sdk_feature_band_version %(echo %{sdk_version} | cut -d '-' -f 1 | sed -e 's|[[:digit:]][[:digit:]]$|00|')
+%global templates_version 7.0.0-preview.6.22312.2
#%%global templates_version %%(echo %%{runtime_version} | awk 'BEGIN { FS="."; OFS="." } {print $1, $2, $3+1 }')
-%global host_rpm_version %{host_version}
-%global runtime_rpm_version %{runtime_version}
-%global aspnetcore_runtime_rpm_version %{aspnetcore_runtime_version}
-%global sdk_rpm_version %{sdk_version}
+%global host_rpm_version 7.0.0
+%global runtime_rpm_version 7.0.0
+%global aspnetcore_runtime_rpm_version 7.0.0
+%global sdk_rpm_version 7.0.0
# upstream can update releases without revving the SDK version so these don't always match
-%global upstream_tag v%{sdk_version}
+#%%global upstream_tag v%%{sdk_version}
+%global upstream_tag main
%if 0%{?fedora} || 0%{?rhel} < 8
%global use_bundled_libunwind 0
@@ -60,7 +61,7 @@
Name: dotnet6.0
Version: %{sdk_rpm_version}
-Release: 1%{?dist}
+Release: 0.1%{?dist}
Summary: .NET Runtime and SDK
License: MIT and ASL 2.0 and BSD and LGPLv2+ and CC-BY and CC0 and MS-PL and EPL-1.0 and GPL+ and GPLv2 and ISC and OFL and zlib
URL: https://github.com/dotnet/
@@ -82,43 +83,7 @@ Source0: dotnet-%{upstream_tag}.tar.gz
Source10: check-debug-symbols.py
Source11: dotnet.sh.in
-# Fix using lld on Fedora
-Patch100: runtime-arm64-lld-fix.patch
-# Mono still has a dependency on (now unbuildable) ILStrip which was removed from CoreCLR: https://github.com/dotnet/runtime/pull/60315
-Patch101: runtime-mono-remove-ilstrip.patch
-# https://github.com/dotnet/runtime/pull/65392
-Patch102: runtime-fedora-37-rid.patch
-# https://github.com/dotnet/runtime/pull/66594
-Patch103: runtime-66594-s390x-debuginfo.patch
-
-# Disable apphost, needed for s390x
-Patch500: fsharp-no-apphost.patch
-
-# Disable apphost, needed for s390x
-Patch700: arcade-no-apphost.patch
-
-# Named mutex fix for mono, needed for s390x. https://github.com/dotnet/roslyn/pull/57003
-Patch800: roslyn-57003-mono-named-mutex.patch
-# Disable apphost, needed for s390x
-Patch801: roslyn-no-apphost.patch
-
-# Disable apphost, needed for s390x
-Patch900: roslyn-analyzers-no-apphost.patch
-
-# Fix mono-specific runtime crashes running msbuild. CoreCLR does not
-# load types that are not actually used/invoked at runtime, while mono
-# does. System.Configuration and System.Security are missing in
-# source-build builds, which breaks msbuild.
-Patch1000: msbuild-no-systemsecurity.patch
-Patch1001: msbuild-no-systemconfiguration.patch
-
-# Disable telemetry by default; make it opt-in
-Patch1500: sdk-telemetry-optout.patch
-# https://github.com/dotnet/sdk/pull/22373
-Patch1501: sdk-22373-portablerid.patch
-
-# https://github.com/dotnet/installer/pull/12516
-Patch1600: installer-12516-portablerid.patch
+Patch1: runtime-fix-cmakeargs-handling.patch
%if 0%{?fedora} || 0%{?rhel} >= 8
@@ -235,10 +200,10 @@ Requires: dotnet-hostfxr-6.0%{?_isa} >= %{host_rpm_version}-%{release}
# libicu is dlopen()ed
Requires: libicu%{?_isa}
-# See src/runtime.*/src/libraries/Native/AnyOS/brotli-version.txt
+# See src/runtime/src/libraries/Native/AnyOS/brotli-version.txt
Provides: bundled(libbrotli) = 1.0.9
%if %{use_bundled_libunwind}
-# See src/runtime.*/src/coreclr/pal/src/libunwind/libunwind-version.txt
+# See src/runtime/src/coreclr/pal/src/libunwind/libunwind-version.txt
Provides: bundled(libunwind) = 1.5.rc1.28.g9165d2a1
%endif
@@ -259,7 +224,7 @@ applications and micro-services.
Version: %{aspnetcore_runtime_rpm_version}
Summary: ASP.NET Core 6.0 runtime
-Requires: dotnet-runtime-6.0%{?_isa} >= %{runtime_rpm_version}-%{release}
+Requires: dotnet-runtime-6.0%{?_isa} = %{runtime_rpm_version}-%{release}
%description -n aspnetcore-runtime-6.0
The ASP.NET Core runtime contains everything needed to run .NET
@@ -390,63 +355,19 @@ find -iname '*.nupkg' -type f -delete
find -iname '*.zip' -type f -delete
rm -rf .dotnet/
rm -rf packages/source-built
-
-mkdir -p packages/archive
-ln -s %{_libdir}/dotnet/source-built-artifacts/Private.SourceBuilt.Artifacts.*.tar.gz packages/archive/
-ln -s %{_libdir}/dotnet/reference-packages/Private.SourceBuild.ReferencePackages*.tar.gz packages/archive/
%endif
# Fix bad hardcoded path in build
-sed -i 's|/usr/share/dotnet|%{_libdir}/dotnet|' src/runtime.*/src/native/corehost/hostmisc/pal.unix.cpp
-
-pushd src/runtime.*
-%patch100 -p1
-%patch101 -p1
-%patch102 -p1
-%patch103 -p1
-popd
-
-pushd src/fsharp.*
-%patch500 -p1
-popd
-
-pushd src/arcade.*
-%patch700 -p1
-popd
+sed -i 's|/usr/share/dotnet|%{_libdir}/dotnet|' src/runtime/src/native/corehost/hostmisc/pal.unix.cpp
-pushd src/roslyn.*
-%patch800 -p3
-%patch801 -p1
-popd
-
-pushd src/roslyn-analyzers.*
-%patch900 -p1
-popd
-
-pushd src/msbuild.*
-
-# These are mono-specific fixes. Mono is only used on s390x. Restrict
-# patch to s390x to avoid potential risk in other architectures.
-%ifarch s390x
-%patch1000 -p1
-%patch1001 -p1
+%if ! %{use_bundled_libunwind}
+sed -i -E 's|( /p:BuildDebPackage=false)|\1 --cmakeargs -DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=TRUE|' src/runtime/eng/SourceBuild.props
%endif
+pushd src/runtime
+%patch1 -p1
popd
-pushd src/sdk.*
-%patch1500 -p1
-%patch1501 -p1
-popd
-
-pushd src/installer.*
-%patch1600 -p1
-popd
-
-
-%if ! %{use_bundled_libunwind}
-sed -i -E 's|( /p:BuildDebPackage=false)|\1 --cmakeargs -DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=TRUE|' src/runtime.*/eng/SourceBuild.props
-%endif
%build
cat /etc/os-release
@@ -498,10 +419,15 @@ export EXTRA_LDFLAGS="$LDFLAGS"
# suggested compile-time change doesn't work, unfortunately.
export COMPlus_LTTng=0
+
+# FIXME: Remove --online flag
+
VERBOSE=1 ./build.sh \
%if %{without bootstrap}
--with-sdk previously-built-dotnet \
+ --with-packages %{_libdir}/dotnet/source-built-artifacts/Private.SourceBuilt.Artifacts.*.tar.gz
%endif
+ --online \
-- \
echo \
@@ -550,7 +476,7 @@ install dotnet.sh %{buildroot}%{_sysconfdir}/profile.d/
install -dm 0755 %{buildroot}/%{_datadir}/bash-completion/completions
# dynamic completion needs the file to be named the same as the base command
-install src/sdk.*/scripts/register-completions.bash %{buildroot}/%{_datadir}/bash-completion/completions/dotnet
+install src/sdk/scripts/register-completions.bash %{buildroot}/%{_datadir}/bash-completion/completions/dotnet
# TODO: the zsh completion script needs to be ported to use #compdef
#install -dm 755 %%{buildroot}/%%{_datadir}/zsh/site-functions
@@ -559,8 +485,10 @@ install src/sdk.*/scripts/register-completions.bash %{buildroot}/%{_datadir}/bas
install -dm 0755 %{buildroot}%{_bindir}
ln -s ../../%{_libdir}/dotnet/dotnet %{buildroot}%{_bindir}/
-install -dm 0755 %{buildroot}%{_mandir}/man1/
-find -iname 'dotnet*.1' -type f -exec cp {} %{buildroot}%{_mandir}/man1/ \;
+for section in 1 7; do
+ install -dm 0755 %{buildroot}%{_mandir}/man${section}/
+ find -iname 'dotnet*'.${section} -type f -exec cp {} %{buildroot}%{_mandir}/man${section}/ \;
+done
install -dm 0755 %{buildroot}%{_sysconfdir}/dotnet
echo "%{_libdir}/dotnet" >> install_location
@@ -605,6 +533,7 @@ export COMPlus_LTTng=0
%license %{_libdir}/dotnet/LICENSE.txt
%license %{_libdir}/dotnet/ThirdPartyNotices.txt
%doc %{_mandir}/man1/dotnet*.1.gz
+%doc %{_mandir}/man7/dotnet*.7.gz
%config(noreplace) %{_sysconfdir}/profile.d/dotnet.sh
%config(noreplace) %{_sysconfdir}/dotnet
%dir %{_datadir}/bash-completion
diff --git a/runtime-fix-cmakeargs-handling.patch b/runtime-fix-cmakeargs-handling.patch
new file mode 100644
index 0000000..f0c7e13
--- /dev/null
+++ b/runtime-fix-cmakeargs-handling.patch
@@ -0,0 +1,13 @@
+diff --git a/eng/build.sh b/eng/build.sh
+index 9c9beb471f1..7c766a227ef 100755
+--- a/eng/build.sh
++++ b/eng/build.sh
+@@ -392,7 +392,7 @@ while [[ $# > 0 ]]; do
+ echo "No cmake args supplied." 1>&2
+ exit 1
+ fi
+- cmakeargs="${cmakeargs} ${opt} $2"
++ cmakeargs="${cmakeargs} $2"
+ shift 2
+ ;;
+
diff --git a/sources b/sources
deleted file mode 100644
index b5e5889..0000000
--- a/sources
+++ /dev/null
@@ -1 +0,0 @@
-SHA512 (dotnet-v6.0.105.tar.gz) = a2b23b60d3b7792b909d685d78aff5f4ad44da4e43c0af353e08529da59edbc1683a843815035081beb4ffb24667c925514a0a999c829e457b7ffbeb37a40cbc
commit ca9a591f283b365ad2dc629cf0ce7ff707b5be53
Author: Omair Majid <omajid(a)redhat.com>
Date: Thu May 12 10:55:13 2022 -0400
Update to .NET SDK 6.0.105 and Runtime 6.0.5
diff --git a/.gitignore b/.gitignore
index f03c348..537942d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,3 +17,4 @@
/dotnet-v6.0.102.tar.gz
/dotnet-v6.0.103.tar.gz
/dotnet-v6.0.104.tar.gz
+/dotnet-v6.0.105.tar.gz
diff --git a/build-dotnet-tarball b/build-dotnet-tarball
index 8f15c6f..95b94a9 100755
--- a/build-dotnet-tarball
+++ b/build-dotnet-tarball
@@ -118,9 +118,8 @@ fi
if [ ! -f "${unmodified_tarball_name}.tar.gz" ]; then
temp_dir=$(mktemp -d -p "$(pwd)")
pushd "${temp_dir}"
- git clone https://github.com/dotnet/installer
+ git clone https://github.com/dotnet/installer --branch "${tag}" --depth 1
pushd installer
- git checkout "${tag}"
git submodule update --init --recursive
clean_dotnet_cache
mkdir -p "../${unmodified_tarball_name}"
diff --git a/dotnet6.0.spec b/dotnet6.0.spec
index 37980db..e0495d6 100644
--- a/dotnet6.0.spec
+++ b/dotnet6.0.spec
@@ -20,10 +20,10 @@
# until that's done, disable LTO. This has to happen before setting the flags below.
%define _lto_cflags %{nil}
-%global host_version 6.0.4
-%global runtime_version 6.0.4
+%global host_version 6.0.5
+%global runtime_version 6.0.5
%global aspnetcore_runtime_version %{runtime_version}
-%global sdk_version 6.0.104
+%global sdk_version 6.0.105
%global sdk_feature_band_version %(echo %{sdk_version} | sed -e 's|[[:digit:]][[:digit:]]$|00|')
%global templates_version %{runtime_version}
#%%global templates_version %%(echo %%{runtime_version} | awk 'BEGIN { FS="."; OFS="." } {print $1, $2, $3+1 }')
@@ -91,19 +91,8 @@ Patch102: runtime-fedora-37-rid.patch
# https://github.com/dotnet/runtime/pull/66594
Patch103: runtime-66594-s390x-debuginfo.patch
-# https://github.com/dotnet/command-line-api/pull/1401
-Patch300: command-line-api-use-work-tree-with-git-apply.patch
-
-# https://github.com/microsoft/vstest/pull/3046
-Patch400: vstest-use-work-tree-with-git-apply.patch
-
-# This is the suggestion from https://github.com/dotnet/source-build/pull/2450, applied
-Patch500: fsharp-use-work-tree-with-git-apply.patch
# Disable apphost, needed for s390x
-Patch501: fsharp-no-apphost.patch
-
-# This is the suggestion from https://github.com/dotnet/source-build/pull/2450, applied
-Patch600: xliff-tasks-use-work-tree-with-git-apply.patch
+Patch500: fsharp-no-apphost.patch
# Disable apphost, needed for s390x
Patch700: arcade-no-apphost.patch
@@ -417,21 +406,8 @@ pushd src/runtime.*
%patch103 -p1
popd
-pushd src/command-line-api.*
-%patch300 -p1
-popd
-
-pushd src/vstest.*
-%patch400 -p1
-popd
-
pushd src/fsharp.*
%patch500 -p1
-%patch501 -p1
-popd
-
-pushd src/xliff-tasks.*
-%patch600 -p1
popd
pushd src/arcade.*
@@ -458,10 +434,6 @@ pushd src/msbuild.*
popd
-pushd src/aspnetcore.*
-
-popd
-
pushd src/sdk.*
%patch1500 -p1
%patch1501 -p1
@@ -499,24 +471,28 @@ export CXXFLAGS="%{dotnet_cflags}"
export LDFLAGS="%{dotnet_ldflags}"
%endif
+# -fstack-clash-protection breaks CoreCLR
+CFLAGS=$(echo $CFLAGS | sed -e 's/-fstack-clash-protection//' )
+CXXFLAGS=$(echo $CXXFLAGS | sed -e 's/-fstack-clash-protection//' )
+
%ifarch aarch64
# -mbranch-protection=standard breaks unwinding in CoreCLR through libunwind
CFLAGS=$(echo $CFLAGS | sed -e 's/-mbranch-protection=standard //')
CXXFLAGS=$(echo $CXXFLAGS | sed -e 's/-mbranch-protection=standard //')
%endif
-# -fstack-clash-protection breaks CoreCLR
-CFLAGS=$(echo $CFLAGS | sed -e 's/-fstack-clash-protection//' )
-CXXFLAGS=$(echo $CXXFLAGS | sed -e 's/-fstack-clash-protection//' )
+%ifarch s390x
+# -march=z13 -mtune=z14 makes clang crash while compiling .NET
+CFLAGS=$(echo $CFLAGS | sed -e 's/ -march=z13//')
+CFLAGS=$(echo $CFLAGS | sed -e 's/ -mtune=z14//')
+CXXFLAGS=$(echo $CXXFLAGS | sed -e 's/ -march=z13//')
+CXXFLAGS=$(echo $CXXFLAGS | sed -e 's/ -mtune=z14//')
+%endif
export EXTRA_CFLAGS="$CFLAGS"
export EXTRA_CXXFLAGS="$CXXFLAGS"
export EXTRA_LDFLAGS="$LDFLAGS"
-unset CFLAGS
-unset CXXFLAGS
-unset LDFLAGS
-
# Disable tracing, which is incompatible with certain versions of
# lttng See https://github.com/dotnet/runtime/issues/57784. The
# suggested compile-time change doesn't work, unfortunately.
@@ -551,8 +527,8 @@ find %{buildroot}%{_libdir}/dotnet/ -type f -name 'vstest.console' -delete
# Install managed symbols: disabled because they don't contain sources
# but point to the paths the sources would have been at in the build
# servers. The end user experience is pretty bad atm.
-# tar xf artifacts/%{runtime_arch}/Release/runtime/dotnet-runtime-symbols-%{runtime_id}-%{runtime_version}.tar.gz \
-# -C %{buildroot}/%{_libdir}/dotnet/shared/Microsoft.NETCore.App/%{runtime_version}/
+# tar xf artifacts/%%{runtime_arch}/Release/runtime/dotnet-runtime-symbols-%%{runtime_id}-%%{runtime_version}.tar.gz \
+# -C %%{buildroot}/%%{_libdir}/dotnet/shared/Microsoft.NETCore.App/%%{runtime_version}/
# Fix executable permissions on files
find %{buildroot}%{_libdir}/dotnet/ -type f -name 'apphost' -exec chmod +x {} \;
@@ -595,6 +571,7 @@ install install_location_%{runtime_arch} %{buildroot}%{_sysconfdir}/dotnet/
install -dm 0755 %{buildroot}%{_libdir}/dotnet/source-built-artifacts
install -m 0644 artifacts/%{runtime_arch}/Release/Private.SourceBuilt.Artifacts.*.tar.gz %{buildroot}/%{_libdir}/dotnet/source-built-artifacts/
+
# Quick and dirty check for https://github.com/dotnet/source-build/issues/2731
test -f %{buildroot}%{_libdir}/dotnet/sdk/%{sdk_version}/Sdks/Microsoft.NET.Sdk/Sdk/Sdk.props
@@ -613,6 +590,7 @@ export COMPlus_LTTng=0
%endif
%{buildroot}%{_libdir}/dotnet/dotnet --info
+%{buildroot}%{_libdir}/dotnet/dotnet --version
%files -n dotnet
@@ -665,6 +643,9 @@ export COMPlus_LTTng=0
%changelog
+* Wed May 11 2022 Omair Majid <omajid(a)redhat.com> - 6.0.105-1
+- Update to .NET SDK 6.0.105 and Runtime 6.0.5
+
* Tue Apr 12 2022 Omair Majid <omajid(a)redhat.com> - 6.0.104-1
- Update to .NET SDK 6.0.104 and Runtime 6.0.4
diff --git a/sources b/sources
index 0f44321..b5e5889 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (dotnet-v6.0.104.tar.gz) = db996788a8144f5438ff292537bb32f4953fce8fe8636ce41954d6206d03efa5a77bf456a7952119347169f5f5962ee3b95c0e73f35912b8ea0768ee3de09d3d
+SHA512 (dotnet-v6.0.105.tar.gz) = a2b23b60d3b7792b909d685d78aff5f4ad44da4e43c0af353e08529da59edbc1683a843815035081beb4ffb24667c925514a0a999c829e457b7ffbeb37a40cbc
diff --git a/update-release b/update-release
index d722cb6..3aa2df3 100755
--- a/update-release
+++ b/update-release
@@ -63,8 +63,8 @@ if [[ -f "dotnet-${tag}-original.tar.gz" ]]; then
else
if [[ -n "${user_provided_tarball_name}" ]]; then
./rename-tarball "$user_provided_tarball_name" "dotnet-${tag}-original.tar.gz"
- elif [[ -f "dotnet-${sdk_version}-SDK.tar.gz" ]]; then
- ./rename-tarball "dotnet-${sdk_version}-SDK.tar.gz" "dotnet-${tag}-original.tar.gz"
+ elif [[ -f "dotnet-${sdk_version}.tar.gz" ]]; then
+ ./rename-tarball "dotnet-${sdk_version}.tar.gz" "dotnet-${tag}-original.tar.gz"
elif [[ -f "dotnet-${runtime_version}.tar.gz" ]]; then
./rename-tarball "dotnet-${runtime_version}.tar.gz" "dotnet-${tag}-original.tar.gz"
fi
commit b73cce139ea72f4111116b57b448ff31b9c569e4
Author: Konrad Kleine <kkleine(a)redhat.com>
Date: Fri Apr 29 08:38:32 2022 +0000
Fix typo in comment: unfrotunately -> unfortunately
diff --git a/dotnet6.0.spec b/dotnet6.0.spec
index 607493b..37980db 100644
--- a/dotnet6.0.spec
+++ b/dotnet6.0.spec
@@ -519,7 +519,7 @@ unset LDFLAGS
# Disable tracing, which is incompatible with certain versions of
# lttng See https://github.com/dotnet/runtime/issues/57784. The
-# suggested compile-time change doesn't work, unfrotunately.
+# suggested compile-time change doesn't work, unfortunately.
export COMPlus_LTTng=0
VERBOSE=1 ./build.sh \
commit 012c53e281fe907b5422b87fd8c62f2eacc841bf
Author: Omair Majid <omajid(a)redhat.com>
Date: Thu Apr 14 17:31:57 2022 -0400
Update to .NET SDK 6.0.104 and Runtime 6.0.4
diff --git a/.gitignore b/.gitignore
index 7bde969..f03c348 100644
--- a/.gitignore
+++ b/.gitignore
@@ -16,3 +16,4 @@
/dotnet-v6.0.101.tar.gz
/dotnet-v6.0.102.tar.gz
/dotnet-v6.0.103.tar.gz
+/dotnet-v6.0.104.tar.gz
diff --git a/check-debug-symbols.py b/check-debug-symbols.py
index b873c77..d759f47 100755
--- a/check-debug-symbols.py
+++ b/check-debug-symbols.py
@@ -65,11 +65,10 @@ def scan_file(file):
def is_elf(file):
result = subprocess.run(['file', file], stdout=subprocess.PIPE, encoding='utf-8', check=True)
- return re.search('ELF 64-bit LSB (?:pie )(?:executable|shared object)', result.stdout)
+ return re.search(r'ELF 64-bit [LM]SB (?:pie )?(?:executable|shared object)', result.stdout)
def scan_file_if_sensible(file):
if is_elf(file):
- # print(file)
return scan_file(file)
return None
diff --git a/dotnet6.0.spec b/dotnet6.0.spec
index 66c4564..607493b 100644
--- a/dotnet6.0.spec
+++ b/dotnet6.0.spec
@@ -20,10 +20,11 @@
# until that's done, disable LTO. This has to happen before setting the flags below.
%define _lto_cflags %{nil}
-%global host_version 6.0.3
-%global runtime_version 6.0.3
+%global host_version 6.0.4
+%global runtime_version 6.0.4
%global aspnetcore_runtime_version %{runtime_version}
-%global sdk_version 6.0.103
+%global sdk_version 6.0.104
+%global sdk_feature_band_version %(echo %{sdk_version} | sed -e 's|[[:digit:]][[:digit:]]$|00|')
%global templates_version %{runtime_version}
#%%global templates_version %%(echo %%{runtime_version} | awk 'BEGIN { FS="."; OFS="." } {print $1, $2, $3+1 }')
@@ -85,7 +86,10 @@ Source11: dotnet.sh.in
Patch100: runtime-arm64-lld-fix.patch
# Mono still has a dependency on (now unbuildable) ILStrip which was removed from CoreCLR: https://github.com/dotnet/runtime/pull/60315
Patch101: runtime-mono-remove-ilstrip.patch
+# https://github.com/dotnet/runtime/pull/65392
Patch102: runtime-fedora-37-rid.patch
+# https://github.com/dotnet/runtime/pull/66594
+Patch103: runtime-66594-s390x-debuginfo.patch
# https://github.com/dotnet/command-line-api/pull/1401
Patch300: command-line-api-use-work-tree-with-git-apply.patch
@@ -134,6 +138,7 @@ ExclusiveArch: aarch64 x86_64 s390x
ExclusiveArch: x86_64
%endif
+
BuildRequires: clang
BuildRequires: cmake
BuildRequires: coreutils
@@ -409,6 +414,7 @@ pushd src/runtime.*
%patch100 -p1
%patch101 -p1
%patch102 -p1
+%patch103 -p1
popd
pushd src/command-line-api.*
@@ -465,10 +471,6 @@ pushd src/installer.*
%patch1600 -p1
popd
-# Disable package validation which breaks our build.
-# There's no need to run validation in RPM packages anyway.
-# See https://github.com/dotnet/runtime/pull/60881
-sed -i -E 's|( /p:BuildDebPackage=false)|\1 /p:EnablePackageValidation=false|' src/runtime.*/eng/SourceBuild.props
%if ! %{use_bundled_libunwind}
sed -i -E 's|( /p:BuildDebPackage=false)|\1 --cmakeargs -DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=TRUE|' src/runtime.*/eng/SourceBuild.props
@@ -596,7 +598,6 @@ install -m 0644 artifacts/%{runtime_arch}/Release/Private.SourceBuilt.Artifacts.
# Quick and dirty check for https://github.com/dotnet/source-build/issues/2731
test -f %{buildroot}%{_libdir}/dotnet/sdk/%{sdk_version}/Sdks/Microsoft.NET.Sdk/Sdk/Sdk.props
-
# Check debug symbols in all elf objects. This is not in %%check
# because native binaries are stripped by rpm-build after %%install.
# So we need to do this check earlier.
@@ -654,8 +655,7 @@ export COMPlus_LTTng=0
%dir %{_libdir}/dotnet/sdk
%{_libdir}/dotnet/sdk/%{sdk_version}
%dir %{_libdir}/dotnet/sdk-manifests
-# FIXME hardcoded version?
-%{_libdir}/dotnet/sdk-manifests/6.0.100
+%{_libdir}/dotnet/sdk-manifests/%{sdk_feature_band_version}
%{_libdir}/dotnet/metadata
%dir %{_libdir}/dotnet/packs
@@ -665,6 +665,9 @@ export COMPlus_LTTng=0
%changelog
+* Tue Apr 12 2022 Omair Majid <omajid(a)redhat.com> - 6.0.104-1
+- Update to .NET SDK 6.0.104 and Runtime 6.0.4
+
* Thu Mar 10 2022 Omair Majid <omajid(a)redhat.com> - 6.0.103-1
- Update to .NET SDK 6.0.103 and Runtime 6.0.3
diff --git a/runtime-66594-s390x-debuginfo.patch b/runtime-66594-s390x-debuginfo.patch
new file mode 100644
index 0000000..5637645
--- /dev/null
+++ b/runtime-66594-s390x-debuginfo.patch
@@ -0,0 +1,29 @@
+diff --git a/src/mono/mono.proj b/src/mono/mono.proj
+index fb98ffc1896..d6a0c9a8ec2 100644
+--- a/src/mono/mono.proj
++++ b/src/mono/mono.proj
+@@ -519,17 +519,17 @@
+ <!-- if all else fails in finding a valid objcopy, fall back to no-prefix from $PATH (used for x64 on CentOS) -->
+ <_Objcopy Condition="'$(_ObjcopyFound)' != '0'">objcopy</_Objcopy>
+ </PropertyGroup>
+- <ItemGroup>
++ <ItemGroup Condition="'$(KeepNativeSymbols)' != 'true'">
+ <FilesToStrip Include="$(_MonoRuntimeFilePath)" />
+ <FilesToStrip Include="$([System.IO.Directory]::GetParent($(_MonoRuntimeFilePath)))\libmono-component-*$(SharedLibExt)" />
+ <FilesToStrip Include="$([System.IO.Directory]::GetParent($(_MonoRuntimeFilePath)))\Mono*framework\**\Mono*" Exclude="$([System.IO.Directory]::GetParent($(_MonoRuntimeFilePath)))\Mono*framework\**\*.dwarf" />
+ </ItemGroup>
+- <Message Condition="'$(BuildMonoAOTCrossCompilerOnly)' != 'true' and ($([MSBuild]::IsOSPlatform('OSX')) or $([MSBuild]::IsOSPlatform('Linux')))" Text="Stripping debug symbols from %(FilesToStrip.Identity)" Importance="High"/>
+- <Exec Condition="!$([System.String]::Copy(%(FilesToStrip.Identity)).EndsWith('.a')) and '$(BuildMonoAOTCrossCompilerOnly)' != 'true' and ('$(TargetsOSX)' == 'true' or '$(TargetsMacCatalyst)' == 'true' or '$(TargetsiOS)' == 'true' or '$(TargetstvOS)' == 'true')" Command="dsymutil --flat --minimize %(FilesToStrip.Identity)" IgnoreStandardErrorWarningFormat="true" WorkingDirectory="$(MonoObjDir)"/>
+- <Exec Condition="!$([System.String]::Copy(%(FilesToStrip.Identity)).EndsWith('.a')) and '$(BuildMonoAOTCrossCompilerOnly)' != 'true' and ('$(TargetsOSX)' == 'true' or '$(TargetsMacCatalyst)' == 'true' or '$(TargetsiOS)' == 'true' or '$(TargetstvOS)' == 'true')" Command="strip -no_code_signature_warning -S %(FilesToStrip.Identity)" IgnoreStandardErrorWarningFormat="true" WorkingDirectory="$(MonoObjDir)"/>
+- <Exec Condition="!$([System.String]::Copy(%(FilesToStrip.Identity)).EndsWith('.a')) and '$(BuildMonoAOTCrossCompilerOnly)' != 'true' and ('$(TargetsLinux)' == 'true' or '$(TargetsAndroid)' == 'true')" Command="$(_Objcopy) --only-keep-debug %(FilesToStrip.Identity) %(FilesToStrip.Identity).dbg" IgnoreStandardErrorWarningFormat="true" WorkingDirectory="$(MonoObjDir)"/>
+- <Exec Condition="!$([System.String]::Copy(%(FilesToStrip.Identity)).EndsWith('.a')) and '$(BuildMonoAOTCrossCompilerOnly)' != 'true' and ('$(TargetsLinux)' == 'true' or '$(TargetsAndroid)' == 'true')" Command="$(_Objcopy) --strip-unneeded %(FilesToStrip.Identity)" IgnoreStandardErrorWarningFormat="true" WorkingDirectory="$(MonoObjDir)"/>
+- <Exec Condition="!$([System.String]::Copy(%(FilesToStrip.Identity)).EndsWith('.a')) and '$(BuildMonoAOTCrossCompilerOnly)' != 'true' and ('$(TargetsLinux)' == 'true' or '$(TargetsAndroid)' == 'true')" Command="$(_Objcopy) --add-gnu-debuglink=%(FilesToStrip.Identity).dbg %(FilesToStrip.Identity)" IgnoreStandardErrorWarningFormat="true" WorkingDirectory="$(MonoObjDir)"/>
++ <Message Condition="'@(FilesToStrip)' != '' and '$(BuildMonoAOTCrossCompilerOnly)' != 'true' and ($([MSBuild]::IsOSPlatform('OSX')) or $([MSBuild]::IsOSPlatform('Linux')))" Text="Stripping debug symbols from %(FilesToStrip.Identity)" Importance="High"/>
++ <Exec Condition="'@(FilesToStrip)' != '' and !$([System.String]::Copy(%(FilesToStrip.Identity)).EndsWith('.a')) and '$(BuildMonoAOTCrossCompilerOnly)' != 'true' and ('$(TargetsOSX)' == 'true' or '$(TargetsMacCatalyst)' == 'true' or '$(TargetsiOS)' == 'true' or '$(TargetstvOS)' == 'true')" Command="dsymutil --flat --minimize %(FilesToStrip.Identity)" IgnoreStandardErrorWarningFormat="true" WorkingDirectory="$(MonoObjDir)"/>
++ <Exec Condition="'@(FilesToStrip)' != '' and !$([System.String]::Copy(%(FilesToStrip.Identity)).EndsWith('.a')) and '$(BuildMonoAOTCrossCompilerOnly)' != 'true' and ('$(TargetsOSX)' == 'true' or '$(TargetsMacCatalyst)' == 'true' or '$(TargetsiOS)' == 'true' or '$(TargetstvOS)' == 'true')" Command="strip -no_code_signature_warning -S %(FilesToStrip.Identity)" IgnoreStandardErrorWarningFormat="true" WorkingDirectory="$(MonoObjDir)"/>
++ <Exec Condition="'@(FilesToStrip)' != '' and !$([System.String]::Copy(%(FilesToStrip.Identity)).EndsWith('.a')) and '$(BuildMonoAOTCrossCompilerOnly)' != 'true' and ('$(TargetsLinux)' == 'true' or '$(TargetsAndroid)' == 'true')" Command="$(_Objcopy) --only-keep-debug %(FilesToStrip.Identity) %(FilesToStrip.Identity).dbg" IgnoreStandardErrorWarningFormat="true" WorkingDirectory="$(MonoObjDir)"/>
++ <Exec Condition="'@(FilesToStrip)' != '' and !$([System.String]::Copy(%(FilesToStrip.Identity)).EndsWith('.a')) and '$(BuildMonoAOTCrossCompilerOnly)' != 'true' and ('$(TargetsLinux)' == 'true' or '$(TargetsAndroid)' == 'true')" Command="$(_Objcopy) --strip-unneeded %(FilesToStrip.Identity)" IgnoreStandardErrorWarningFormat="true" WorkingDirectory="$(MonoObjDir)"/>
++ <Exec Condition="'@(FilesToStrip)' != '' and !$([System.String]::Copy(%(FilesToStrip.Identity)).EndsWith('.a')) and '$(BuildMonoAOTCrossCompilerOnly)' != 'true' and ('$(TargetsLinux)' == 'true' or '$(TargetsAndroid)' == 'true')" Command="$(_Objcopy) --add-gnu-debuglink=%(FilesToStrip.Identity).dbg %(FilesToStrip.Identity)" IgnoreStandardErrorWarningFormat="true" WorkingDirectory="$(MonoObjDir)"/>
+ </Target>
+
+ <!-- Build AOT cross compiler (if available) -->
diff --git a/sources b/sources
index 8daada4..0f44321 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (dotnet-v6.0.103.tar.gz) = 7fc7f9f8aa9b7491a72884ec08ea3269a35ee5d6295e19b8c9b4d5b61262bebcfeae8f945bf2bdb0f1cb4ebdfd57f9a06490e8062e0319494ddecc4606e8d052
+SHA512 (dotnet-v6.0.104.tar.gz) = db996788a8144f5438ff292537bb32f4953fce8fe8636ce41954d6206d03efa5a77bf456a7952119347169f5f5962ee3b95c0e73f35912b8ea0768ee3de09d3d
commit 249b125e10e35fc47a1b96371c41ed748d61d844
Author: Omair Majid <omajid(a)redhat.com>
Date: Fri Mar 11 08:35:36 2022 -0500
Update to .NET SDK 6.0.103 and Runtime 6.0.3
diff --git a/.gitignore b/.gitignore
index 88f4db5..7bde969 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,3 +15,4 @@
/dotnet-9e8b04bbff820c93c142f99a507a46b976f5c14c.tar.gz
/dotnet-v6.0.101.tar.gz
/dotnet-v6.0.102.tar.gz
+/dotnet-v6.0.103.tar.gz
diff --git a/dotnet6.0.spec b/dotnet6.0.spec
index 4c6d8c0..66c4564 100644
--- a/dotnet6.0.spec
+++ b/dotnet6.0.spec
@@ -20,10 +20,10 @@
# until that's done, disable LTO. This has to happen before setting the flags below.
%define _lto_cflags %{nil}
-%global host_version 6.0.2
-%global runtime_version 6.0.2
+%global host_version 6.0.3
+%global runtime_version 6.0.3
%global aspnetcore_runtime_version %{runtime_version}
-%global sdk_version 6.0.102
+%global sdk_version 6.0.103
%global templates_version %{runtime_version}
#%%global templates_version %%(echo %%{runtime_version} | awk 'BEGIN { FS="."; OFS="." } {print $1, $2, $3+1 }')
@@ -241,8 +241,10 @@ Requires: dotnet-hostfxr-6.0%{?_isa} >= %{host_rpm_version}-%{release}
# libicu is dlopen()ed
Requires: libicu%{?_isa}
+# See src/runtime.*/src/libraries/Native/AnyOS/brotli-version.txt
+Provides: bundled(libbrotli) = 1.0.9
%if %{use_bundled_libunwind}
-# See runtime.*/src/coreclr/pal/src/libunwind/libunwind-version.txt
+# See src/runtime.*/src/coreclr/pal/src/libunwind/libunwind-version.txt
Provides: bundled(libunwind) = 1.5.rc1.28.g9165d2a1
%endif
@@ -663,6 +665,9 @@ export COMPlus_LTTng=0
%changelog
+* Thu Mar 10 2022 Omair Majid <omajid(a)redhat.com> - 6.0.103-1
+- Update to .NET SDK 6.0.103 and Runtime 6.0.3
+
* Mon Feb 14 2022 Omair Majid <omajid(a)redhat.com> - 6.0.102-1
- Update to .NET SDK 6.0.102 and Runtime 6.0.2
diff --git a/sources b/sources
index c956c74..8daada4 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (dotnet-v6.0.102.tar.gz) = dcb4102b1a6c9e1889d80f8cecf30da00ad16320cbbf14de891db632ebaa0b872501865957429107ade0caef569a2f2ed5ccb70111de7772838b820997f0c36e
+SHA512 (dotnet-v6.0.103.tar.gz) = 7fc7f9f8aa9b7491a72884ec08ea3269a35ee5d6295e19b8c9b4d5b61262bebcfeae8f945bf2bdb0f1cb4ebdfd57f9a06490e8062e0319494ddecc4606e8d052
diff --git a/tests/tests.yml b/tests/tests.yml
index d63f183..8ce51f4 100644
--- a/tests/tests.yml
+++ b/tests/tests.yml
@@ -13,18 +13,22 @@
tests:
- download_test_runner:
dir: ./
- run: wget --no-verbose https://github.com/redhat-developer/dotnet-bunny/releases/latest/download... -m) -O turkey && chmod +x ./turkey
+ run: wget --no-verbose https://github.com/redhat-developer/dotnet-bunny/releases/latest/download... && tar xf turkey.tar.gz
- print_test_runner_version:
dir: ./
- run: ./turkey --version
+ run: dotnet turkey/Turkey.dll --version
- regular:
dir: ./
- run: ./turkey -l={{ remote_artifacts }} dotnet-regular-tests
+ run: dotnet turkey/Turkey.dll -l={{ remote_artifacts }} dotnet-regular-tests
required_packages:
+ - aspnetcore-runtime-6.0
- babeltrace
- bash-completion
- binutils
+ - dotnet-sdk-6.0
+ - dotnet-runtime-6.0
- expect
+ - git
- jq
- lldb
- lttng-tools
commit 4f642ff2a797f3d5a410ba4480433bba1d74b82d
Author: Omair Majid <omajid(a)redhat.com>
Date: Tue Feb 15 11:46:24 2022 -0500
Update to .NET SDK 6.0.102 and Runtime 6.0.2
diff --git a/.gitignore b/.gitignore
index 5bde936..88f4db5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,3 +14,4 @@
/dotnet-s390x-prebuilts-2021-10-29.tar.gz
/dotnet-9e8b04bbff820c93c142f99a507a46b976f5c14c.tar.gz
/dotnet-v6.0.101.tar.gz
+/dotnet-v6.0.102.tar.gz
diff --git a/aspnetcore-39471-build-all-packages.patch b/aspnetcore-39471-build-all-packages.patch
deleted file mode 100644
index 9007b28..0000000
--- a/aspnetcore-39471-build-all-packages.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From c5211f8557f2fb019416cf1f6c01142965270479 Mon Sep 17 00:00:00 2001
-From: Doug Bunting <6431421+dougbu(a)users.noreply.github.com>
-Date: Sun, 16 Jan 2022 22:55:10 -0800
-Subject: [PATCH] Always build App.Ref and the targeting packs - set
- `$(IsTargetingPackBuilding)` to `true` unconditionally - leave all _use_ of
- `$(IsTargetingPackBuilding)`
-
-See https://github.com/dotnet/aspnetcore/issues/39471 for details and backporting.
----
- Directory.Build.props | 6 +-----
- 1 file changed, 1 insertion(+), 5 deletions(-)
-
-diff --git a/Directory.Build.props b/Directory.Build.props
-index e100d883e9..d71b308905 100644
---- a/Directory.Build.props
-+++ b/Directory.Build.props
-@@ -138,11 +138,7 @@
- <TargetingPackName>Microsoft.AspNetCore.App.Ref</TargetingPackName>
- <RuntimeInstallerBaseName>aspnetcore-runtime</RuntimeInstallerBaseName>
- <TargetingPackInstallerBaseName>aspnetcore-targeting-pack</TargetingPackInstallerBaseName>
--
-- <!-- This is used to produce targeting pack installers/packages once per major.minor. -->
-- <IsTargetingPackBuilding
-- Condition=" '$(IsTargetingPackBuilding)' == '' AND '$(AspNetCorePatchVersion)' != '0' ">false</IsTargetingPackBuilding>
-- <IsTargetingPackBuilding Condition=" '$(IsTargetingPackBuilding)' == '' ">true</IsTargetingPackBuilding>
-+ <IsTargetingPackBuilding>true</IsTargetingPackBuilding>
-
- <!--
- Archives and installers using this prefix are intended for internal use only.
diff --git a/build-dotnet-tarball b/build-dotnet-tarball
index 3d96924..8f15c6f 100755
--- a/build-dotnet-tarball
+++ b/build-dotnet-tarball
@@ -122,8 +122,6 @@ if [ ! -f "${unmodified_tarball_name}.tar.gz" ]; then
pushd installer
git checkout "${tag}"
git submodule update --init --recursive
- patch -p1 -i ../../installer-12736-no-sudo.patch
- patch -p1 -i ../../installer-12852-fix-internal-urls.patch
clean_dotnet_cache
mkdir -p "../${unmodified_tarball_name}"
./build.sh /p:ArcadeBuildTarball=true /p:TarballDir="$(readlink -f ../"${unmodified_tarball_name}")"
diff --git a/dotnet6.0.spec b/dotnet6.0.spec
index d1e1390..4c6d8c0 100644
--- a/dotnet6.0.spec
+++ b/dotnet6.0.spec
@@ -20,10 +20,10 @@
# until that's done, disable LTO. This has to happen before setting the flags below.
%define _lto_cflags %{nil}
-%global host_version 6.0.1
-%global runtime_version 6.0.1
+%global host_version 6.0.2
+%global runtime_version 6.0.2
%global aspnetcore_runtime_version %{runtime_version}
-%global sdk_version 6.0.101
+%global sdk_version 6.0.102
%global templates_version %{runtime_version}
#%%global templates_version %%(echo %%{runtime_version} | awk 'BEGIN { FS="."; OFS="." } {print $1, $2, $3+1 }')
@@ -59,7 +59,7 @@
Name: dotnet6.0
Version: %{sdk_rpm_version}
-Release: 3%{?dist}
+Release: 1%{?dist}
Summary: .NET Runtime and SDK
License: MIT and ASL 2.0 and BSD and LGPLv2+ and CC-BY and CC0 and MS-PL and EPL-1.0 and GPL+ and GPLv2 and ISC and OFL and zlib
URL: https://github.com/dotnet/
@@ -85,10 +85,7 @@ Source11: dotnet.sh.in
Patch100: runtime-arm64-lld-fix.patch
# Mono still has a dependency on (now unbuildable) ILStrip which was removed from CoreCLR: https://github.com/dotnet/runtime/pull/60315
Patch101: runtime-mono-remove-ilstrip.patch
-# https://github.com/dotnet/runtime/pull/62170
-Patch102: runtime-62170-clang13.patch
-# Extracted from https://github.com/dotnet/installer/pull/13009
-Patch103: runtime-63653-build-all-packages.patch
+Patch102: runtime-fedora-37-rid.patch
# https://github.com/dotnet/command-line-api/pull/1401
Patch300: command-line-api-use-work-tree-with-git-apply.patch
@@ -122,20 +119,13 @@ Patch900: roslyn-analyzers-no-apphost.patch
Patch1000: msbuild-no-systemsecurity.patch
Patch1001: msbuild-no-systemconfiguration.patch
-# Extracted from https://github.com/dotnet/installer/pull/13009
-Patch1100: aspnetcore-39471-build-all-packages.patch
-
# Disable telemetry by default; make it opt-in
Patch1500: sdk-telemetry-optout.patch
# https://github.com/dotnet/sdk/pull/22373
Patch1501: sdk-22373-portablerid.patch
-# https://github.com/dotnet/sdk/pull/21557
-Patch1502: sdk-21557-man-pages.patch
# https://github.com/dotnet/installer/pull/12516
Patch1600: installer-12516-portablerid.patch
-# https://github.com/dotnet/installer/pull/12736
-Patch1601: installer-12736-no-sudo.patch
%if 0%{?fedora} || 0%{?rhel} >= 8
@@ -417,7 +407,6 @@ pushd src/runtime.*
%patch100 -p1
%patch101 -p1
%patch102 -p1
-%patch103 -p1
popd
pushd src/command-line-api.*
@@ -462,18 +451,16 @@ pushd src/msbuild.*
popd
pushd src/aspnetcore.*
-%patch1100 -p1
+
popd
pushd src/sdk.*
%patch1500 -p1
%patch1501 -p1
-%patch1502 -p1
popd
pushd src/installer.*
%patch1600 -p1
-%patch1601 -p1
popd
# Disable package validation which breaks our build.
@@ -604,6 +591,9 @@ install install_location_%{runtime_arch} %{buildroot}%{_sysconfdir}/dotnet/
install -dm 0755 %{buildroot}%{_libdir}/dotnet/source-built-artifacts
install -m 0644 artifacts/%{runtime_arch}/Release/Private.SourceBuilt.Artifacts.*.tar.gz %{buildroot}/%{_libdir}/dotnet/source-built-artifacts/
+# Quick and dirty check for https://github.com/dotnet/source-build/issues/2731
+test -f %{buildroot}%{_libdir}/dotnet/sdk/%{sdk_version}/Sdks/Microsoft.NET.Sdk/Sdk/Sdk.props
+
# Check debug symbols in all elf objects. This is not in %%check
# because native binaries are stripped by rpm-build after %%install.
@@ -673,6 +663,9 @@ export COMPlus_LTTng=0
%changelog
+* Mon Feb 14 2022 Omair Majid <omajid(a)redhat.com> - 6.0.102-1
+- Update to .NET SDK 6.0.102 and Runtime 6.0.2
+
* Fri Jan 28 2022 Omair Majid <omajid(a)redhat.com> - 6.0.101-3
- Update to .NET SDK 6.0.101 and Runtime 6.0.1
diff --git a/installer-12736-no-sudo.patch b/installer-12736-no-sudo.patch
deleted file mode 100644
index 34d583a..0000000
--- a/installer-12736-no-sudo.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From f8e115fadf6e8b392fa007e78d9b77fc64590cdd Mon Sep 17 00:00:00 2001
-From: Daniel Plaisted <dsplaisted(a)gmail.com>
-Date: Mon, 29 Nov 2021 20:19:30 -0800
-Subject: [PATCH] Don't set ulimit
-
-1ES pools should now have ulimit set already now
----
- build.sh | 4 +---
- run-build.sh | 4 ----
- 2 files changed, 1 insertion(+), 7 deletions(-)
-
-diff --git a/build.sh b/build.sh
-index 594a355fafa..7ff647c4060 100755
---- a/build.sh
-+++ b/build.sh
-@@ -53,7 +53,5 @@ dockerbuild()
- if [ ! -z "$BUILD_IN_DOCKER" ]; then
- dockerbuild $args
- else
-- # Run under sudo so we can set ulimit
-- # See https://github.com/dotnet/core-eng/issues/14808
-- sudo -E $DIR/run-build.sh $args
-+ $DIR/run-build.sh $args
- fi
-diff --git a/run-build.sh b/run-build.sh
-index fe839eb8009..7b98aedc0be 100755
---- a/run-build.sh
-+++ b/run-build.sh
-@@ -25,10 +25,6 @@ CUSTOM_BUILD_ARGS=
- # Set nuget package cache under the repo
- [ -z $NUGET_PACKAGES ] && export NUGET_PACKAGES="$REPOROOT/.nuget/packages"
-
--# Set max number of files open, helps avoid errors during NuGet restore
--# See https://github.com/dotnet/core-eng/issues/14808
--ulimit -n 16384
--
- args=( )
-
- while [[ $# > 0 ]]; do
diff --git a/installer-12852-fix-internal-urls.patch b/installer-12852-fix-internal-urls.patch
deleted file mode 100644
index 410bef9..0000000
--- a/installer-12852-fix-internal-urls.patch
+++ /dev/null
@@ -1,129 +0,0 @@
-From 4582256e7ad537e315c5aa8f16bf049350d2de41 Mon Sep 17 00:00:00 2001
-From: MichaelSimons <msimons(a)microsoft.com>
-Date: Thu, 16 Dec 2021 02:29:27 +0000
-Subject: [PATCH 1/2] Add logic to convert internal repo uris in
- version.details.xml
-
----
- ...ourceBuildIntermediateNupkgDependencies.cs | 38 +++++++++++++++++++
- .../tools/SourceBuildArcadeTarball.targets | 4 +-
- 2 files changed, 41 insertions(+), 1 deletion(-)
-
-diff --git a/src/SourceBuild/Arcade/src/Tarball_ReadSourceBuildIntermediateNupkgDependencies.cs b/src/SourceBuild/Arcade/src/Tarball_ReadSourceBuildIntermediateNupkgDependencies.cs
-index 59f7eb49919..1217d166aae 100644
---- a/src/SourceBuild/Arcade/src/Tarball_ReadSourceBuildIntermediateNupkgDependencies.cs
-+++ b/src/SourceBuild/Arcade/src/Tarball_ReadSourceBuildIntermediateNupkgDependencies.cs
-@@ -3,6 +3,7 @@
-
- using Microsoft.Build.Framework;
- using Microsoft.Build.Utilities;
-+using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Xml.Linq;
-@@ -21,6 +22,11 @@ public class Tarball_ReadSourceBuildIntermediateNupkgDependencies : Task
- [Required]
- public string SourceBuildIntermediateNupkgPrefix { get; set; }
-
-+ /// <summary>
-+ /// Convert any internal repo references to the public GitHub repos.
-+ /// </summary>
-+ public bool ConvertInternalRepos { get; set; }
-+
- /// <summary>
- /// The intermediate nupkg RID to use if any RID-specific intermediate nupkgs are required.
- /// If this parameter isn't specified, RID-specific intermediate nupkgs can't be used and
-@@ -88,6 +94,11 @@ XName CreateQualifiedName(string plainName)
- string dependencyVersion = d.Attribute("Version")?.Value;
-
- string uri = d.Element(CreateQualifiedName("Uri"))?.Value;
-+ if (ConvertInternalRepos)
-+ {
-+ uri = ConvertInternalRepo(uri);
-+ }
-+
- string sha = d.Element(CreateQualifiedName("Sha"))?.Value;
- string sourceBuildRepoName = sourceBuildElement.Attribute("RepoName")?.Value;
-
-@@ -137,5 +148,32 @@ XName CreateQualifiedName(string plainName)
-
- return !Log.HasLoggedErrors;
- }
-+
-+ private string ConvertInternalRepo(string uri)
-+ {
-+ if (uri.StartsWith("https://dev.azure.com", StringComparison.OrdinalIgnoreCase))
-+ {
-+ string[] repoParts = uri.Substring(uri.LastIndexOf('/')).Split('-', 2);
-+
-+ if (repoParts.Length != 2)
-+ {
-+ Log.LogError($"Repo '{uri}' does not end with the expected <GH organization>-<GH repo> format");
-+ return null;
-+ }
-+
-+ string org = repoParts[0];
-+ string repo = repoParts[1];
-+
-+ // The internal Nuget.Client repo has suffix which needs to be accounted for.
-+ if (uri.EndsWith("-Trusted", StringComparison.OrdinalIgnoreCase))
-+ {
-+ repo = repo.Substring(0, repo.Length - 8);
-+ }
-+
-+ uri = $"https://github.com/{org}/{repo}";
-+ }
-+
-+ return uri;
-+ }
- }
- }
-diff --git a/src/SourceBuild/Arcade/tools/SourceBuildArcadeTarball.targets b/src/SourceBuild/Arcade/tools/SourceBuildArcadeTarball.targets
-index 1717371dc87..9a49c349924 100644
---- a/src/SourceBuild/Arcade/tools/SourceBuildArcadeTarball.targets
-+++ b/src/SourceBuild/Arcade/tools/SourceBuildArcadeTarball.targets
-@@ -19,6 +19,7 @@
- <TarballSourceDir>$(TarballRootDir)src/</TarballSourceDir>
- <TarballGitInfoDir>$(TarballRootDir)git-info/</TarballGitInfoDir>
- <CloneVerbosity>quiet</CloneVerbosity> <!-- Support quiet and full -->
-+ <ConvertInternalRepos Condition="'$(ConvertInternalRepos)' == '' and '$(VSS_NUGET_EXTERNAL_FEED_ENDPOINTS)' == '' ">true</ConvertInternalRepos>
- </PropertyGroup>
-
- <Target Name="CreateSourceTarball"
-@@ -203,7 +204,8 @@
- <Tarball_ReadSourceBuildIntermediateNupkgDependencies
- VersionDetailsXmlFile="$([MSBuild]::NormalizePath($(TarballVersionDetailsFile)))"
- SourceBuildIntermediateNupkgPrefix="$(SourceBuildIntermediateNupkgPrefix)"
-- SourceBuildIntermediateNupkgRid="$(SourceBuildIntermediateNupkgRid)">
-+ SourceBuildIntermediateNupkgRid="$(SourceBuildIntermediateNupkgRid)"
-+ ConvertInternalRepos="$(ConvertInternalRepos)">
- <Output TaskParameter="Dependencies" ItemName="SourceBuildRepos" />
- </Tarball_ReadSourceBuildIntermediateNupkgDependencies>
-
-
-From 6e467b43033aefd1af39ddcbf625ef30d5440e7f Mon Sep 17 00:00:00 2001
-From: MichaelSimons <msimons(a)microsoft.com>
-Date: Thu, 16 Dec 2021 18:31:15 +0000
-Subject: [PATCH 2/2] code review updates
-
----
- .../Tarball_ReadSourceBuildIntermediateNupkgDependencies.cs | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/src/SourceBuild/Arcade/src/Tarball_ReadSourceBuildIntermediateNupkgDependencies.cs b/src/SourceBuild/Arcade/src/Tarball_ReadSourceBuildIntermediateNupkgDependencies.cs
-index 1217d166aae..9b6365dfccd 100644
---- a/src/SourceBuild/Arcade/src/Tarball_ReadSourceBuildIntermediateNupkgDependencies.cs
-+++ b/src/SourceBuild/Arcade/src/Tarball_ReadSourceBuildIntermediateNupkgDependencies.cs
-@@ -165,9 +165,10 @@ private string ConvertInternalRepo(string uri)
- string repo = repoParts[1];
-
- // The internal Nuget.Client repo has suffix which needs to be accounted for.
-- if (uri.EndsWith("-Trusted", StringComparison.OrdinalIgnoreCase))
-+ const string trustedSuffix = "-Trusted";
-+ if (uri.EndsWith(trustedSuffix, StringComparison.OrdinalIgnoreCase))
- {
-- repo = repo.Substring(0, repo.Length - 8);
-+ repo = repo.Substring(0, repo.Length - trustedSuffix.Length);
- }
-
- uri = $"https://github.com/{org}/{repo}";
diff --git a/runtime-62170-clang13.patch b/runtime-62170-clang13.patch
deleted file mode 100644
index 8c47186..0000000
--- a/runtime-62170-clang13.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-From 9cd95a5608b667e22727d9eb1a5330efd61dfe50 Mon Sep 17 00:00:00 2001
-From: Jan Vorlicek <janvorli(a)microsoft.com>
-Date: Mon, 29 Nov 2021 17:32:45 -0800
-Subject: [PATCH] Fix clang 13 induced runtime issues
-
-The clang 13 optimizer started to assume that "this" pointer is always
-properly aligned. That lead to elimination of some code that was actually
-needed.
-It also takes pointer aliasing rules more strictly in one place in jit.
-That caused the optimizer to falsely assume that a callee with an argument
-passed by reference is not modifying that argument and used a stale
-copy of the original value at the caller site.
-
-This change fixes both of the issues. With this fix, runtime compiled
-using clang 13 seems to be fully functional.
----
- src/coreclr/inc/corhlpr.h | 8 ++++----
- src/coreclr/jit/bitsetasshortlong.h | 4 ++--
- 2 files changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/src/coreclr/inc/corhlpr.h b/src/coreclr/inc/corhlpr.h
-index 450514da95c1..427e8cdc0ff5 100644
---- a/src/coreclr/inc/corhlpr.h
-+++ b/src/coreclr/inc/corhlpr.h
-@@ -336,7 +336,7 @@ struct COR_ILMETHOD_SECT
- const COR_ILMETHOD_SECT* Next() const
- {
- if (!More()) return(0);
-- return ((COR_ILMETHOD_SECT*)(((BYTE *)this) + DataSize()))->Align();
-+ return ((COR_ILMETHOD_SECT*)Align(((BYTE *)this) + DataSize()));
- }
-
- const BYTE* Data() const
-@@ -374,9 +374,9 @@ struct COR_ILMETHOD_SECT
- return((AsSmall()->Kind & CorILMethod_Sect_FatFormat) != 0);
- }
-
-- const COR_ILMETHOD_SECT* Align() const
-+ static const void* Align(const void* p)
- {
-- return((COR_ILMETHOD_SECT*) ((((UINT_PTR) this) + 3) & ~3));
-+ return((void*) ((((UINT_PTR) p) + 3) & ~3));
- }
-
- protected:
-@@ -579,7 +579,7 @@ typedef struct tagCOR_ILMETHOD_FAT : IMAGE_COR_ILMETHOD_FAT
-
- const COR_ILMETHOD_SECT* GetSect() const {
- if (!More()) return (0);
-- return(((COR_ILMETHOD_SECT*) (GetCode() + GetCodeSize()))->Align());
-+ return(((COR_ILMETHOD_SECT*) COR_ILMETHOD_SECT::Align(GetCode() + GetCodeSize())));
- }
- } COR_ILMETHOD_FAT;
-
-diff --git a/src/coreclr/jit/bitsetasshortlong.h b/src/coreclr/jit/bitsetasshortlong.h
-index d343edeeda4c..365cf346a10a 100644
---- a/src/coreclr/jit/bitsetasshortlong.h
-+++ b/src/coreclr/jit/bitsetasshortlong.h
-@@ -345,7 +345,7 @@ class BitSetOps</*BitSetType*/ BitSetShortLongRep,
- {
- if (IsShort(env))
- {
-- (size_t&)out = (size_t)out & ((size_t)gen | (size_t)in);
-+ out = (BitSetShortLongRep)((size_t)out & ((size_t)gen | (size_t)in));
- }
- else
- {
-@@ -361,7 +361,7 @@ class BitSetOps</*BitSetType*/ BitSetShortLongRep,
- {
- if (IsShort(env))
- {
-- (size_t&)in = (size_t)use | ((size_t)out & ~(size_t)def);
-+ in = (BitSetShortLongRep)((size_t)use | ((size_t)out & ~(size_t)def));
- }
- else
- {
diff --git a/runtime-63653-build-all-packages.patch b/runtime-63653-build-all-packages.patch
deleted file mode 100644
index 43c68de..0000000
--- a/runtime-63653-build-all-packages.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Santiago Fernandez Madero <safern(a)microsoft.com>
-Date: Tue, 11 Jan 2022 13:55:22 -0800
-Subject: [PATCH] [release/6.0] Build all packages when in source-build
-
-Originating PR: https://github.com/dotnet/runtime/pull/63653
----
- eng/packaging.targets | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/eng/packaging.targets b/eng/packaging.targets
-index 6bcf86dc9f2..ee8e95167d9 100644
---- a/eng/packaging.targets
-+++ b/eng/packaging.targets
-@@ -34,6 +34,10 @@
- '$(IsRIDSpecificProject)' != 'true' and
- '$(PreReleaseVersionLabel)' == 'servicing' and
- '$(GitHubRepositoryName)' != 'runtimelab'">false</GeneratePackageOnBuild>
-+ <!-- When in source-build we need to generate all packages when building for all configurations even in servicing. -->
-+ <GeneratePackageOnBuild Condition="!$(GeneratePackageOnBuild) and
-+ '$(BuildAllConfigurations)' == 'true' and
-+ '$(DotNetBuildFromSource)' == 'true'">true</GeneratePackageOnBuild>
- <!-- Search for the documentation file in the intellisense package and otherwise pick up the generated one. -->
- <LibIntellisenseDocumentationFilePath>$(XmlDocFileRoot)1033\$(AssemblyName).xml</LibIntellisenseDocumentationFilePath>
- <UseIntellisenseDocumentationFile Condition="'$(UseIntellisenseDocumentationFile)' == '' and Exists('$(LibIntellisenseDocumentationFilePath)')">true</UseIntellisenseDocumentationFile>
-@@ -279,7 +283,7 @@
- </Target>
-
- <Target Name="ValidateServicingVersionIsPropertlySet"
-- Condition="'$(PreReleaseVersionLabel)' == 'servicing'"
-+ Condition="'$(PreReleaseVersionLabel)' == 'servicing' and '$(DotNetBuildFromSource)' != 'true'"
- AfterTargets="GenerateNuspec">
- <Error Condition="'$(ServicingVersion)' == '0'" Text="ServicingVersion is set to 0 and it should be an increment of the patch version from the last released package." />
- </Target>
diff --git a/runtime-fedora-37-rid.patch b/runtime-fedora-37-rid.patch
new file mode 100644
index 0000000..720fdcb
--- /dev/null
+++ b/runtime-fedora-37-rid.patch
@@ -0,0 +1,84 @@
+diff --git a/src/libraries/Microsoft.NETCore.Platforms/src/runtime.compatibility.json b/src/libraries/Microsoft.NETCore.Platforms/src/runtime.compatibility.json
+index bf6dfc3c1a1..1de4979b8ee 100644
+--- a/src/libraries/Microsoft.NETCore.Platforms/src/runtime.compatibility.json
++++ b/src/libraries/Microsoft.NETCore.Platforms/src/runtime.compatibility.json
+@@ -3029,6 +3029,38 @@
+ "any",
+ "base"
+ ],
++ "fedora.37": [
++ "fedora.37",
++ "fedora",
++ "linux",
++ "unix",
++ "any",
++ "base"
++ ],
++ "fedora.37-arm64": [
++ "fedora.37-arm64",
++ "fedora.37",
++ "fedora-arm64",
++ "fedora",
++ "linux-arm64",
++ "linux",
++ "unix-arm64",
++ "unix",
++ "any",
++ "base"
++ ],
++ "fedora.37-x64": [
++ "fedora.37-x64",
++ "fedora.37",
++ "fedora-x64",
++ "fedora",
++ "linux-x64",
++ "linux",
++ "unix-x64",
++ "unix",
++ "any",
++ "base"
++ ],
+ "freebsd": [
+ "freebsd",
+ "unix",
+diff --git a/src/libraries/Microsoft.NETCore.Platforms/src/runtime.json b/src/libraries/Microsoft.NETCore.Platforms/src/runtime.json
+index 2e6ec616b74..70a1582ba64 100644
+--- a/src/libraries/Microsoft.NETCore.Platforms/src/runtime.json
++++ b/src/libraries/Microsoft.NETCore.Platforms/src/runtime.json
+@@ -1146,6 +1146,23 @@
+ "fedora-x64"
+ ]
+ },
++ "fedora.37": {
++ "#import": [
++ "fedora"
++ ]
++ },
++ "fedora.37-arm64": {
++ "#import": [
++ "fedora.37",
++ "fedora-arm64"
++ ]
++ },
++ "fedora.37-x64": {
++ "#import": [
++ "fedora.37",
++ "fedora-x64"
++ ]
++ },
+ "freebsd": {
+ "#import": [
+ "unix"
+diff --git a/src/libraries/Microsoft.NETCore.Platforms/src/runtimeGroups.props b/src/libraries/Microsoft.NETCore.Platforms/src/runtimeGroups.props
+index 1945bb9af0e..75c6d28a30f 100644
+--- a/src/libraries/Microsoft.NETCore.Platforms/src/runtimeGroups.props
++++ b/src/libraries/Microsoft.NETCore.Platforms/src/runtimeGroups.props
+@@ -71,7 +71,7 @@
+ <RuntimeGroup Include="fedora">
+ <Parent>linux</Parent>
+ <Architectures>x64;arm64</Architectures>
+- <Versions>23;24;25;26;27;28;29;30;31;32;33;34;35;36</Versions>
++ <Versions>23;24;25;26;27;28;29;30;31;32;33;34;35;36;37</Versions>
+ <TreatVersionsAsCompatible>false</TreatVersionsAsCompatible>
+ </RuntimeGroup>
+
diff --git a/sdk-21557-man-pages.patch b/sdk-21557-man-pages.patch
deleted file mode 100644
index 26155e9..0000000
--- a/sdk-21557-man-pages.patch
+++ /dev/null
@@ -1,14271 +0,0 @@
-From e71948468d166cd5df3edf610cf225a3350c755e Mon Sep 17 00:00:00 2001
-From: Omair Majid <omajid(a)redhat.com>
-Date: Wed, 29 Sep 2021 16:50:41 -0400
-Subject: [PATCH] Update man pages
-
-The current .NET man pages were updated a long time ago and are missing
-docs for a number of components, including `dotnet format` and `dotnet
-workload install`.
-
-Please use `man ./relative/path/to/file.1` to see the rendered views.
-
-There's two major changes in this commit:
-
-1. Update the tooling and toolset to generate the man pages
-
-2. The actual changes (addition/updates) for the man pages
-
-For the first, the container has been updated to use a newer pandoc and
-python3. The pandoc filter has been updated to remove the link-removal
-since it doesn't seem necessary for this version of pandoc anymore. Also
-added another early pass over the document files: this inlines all
-!INCLUDE'd references so the manual pages are complete.
-
-Fixes: #21449
----
- .../manpages/sdk/dotnet-add-package.1 | 47 +-
- .../manpages/sdk/dotnet-add-reference.1 | 30 +-
- .../manpages/sdk/dotnet-build-server.1 | 16 +-
- documentation/manpages/sdk/dotnet-build.1 | 97 +-
- documentation/manpages/sdk/dotnet-clean.1 | 27 +-
- .../sdk/dotnet-environment-variables.1 | 135 ++
- documentation/manpages/sdk/dotnet-format.1 | 198 ++
- documentation/manpages/sdk/dotnet-help.1 | 20 +-
- .../manpages/sdk/dotnet-install-script.1 | 305 +++-
- .../manpages/sdk/dotnet-list-package.1 | 72 +-
- .../manpages/sdk/dotnet-list-reference.1 | 28 +-
- documentation/manpages/sdk/dotnet-migrate.1 | 22 +-
- documentation/manpages/sdk/dotnet-msbuild.1 | 32 +-
- .../manpages/sdk/dotnet-new-install.1 | 85 +
- documentation/manpages/sdk/dotnet-new-list.1 | 164 ++
- .../manpages/sdk/dotnet-new-sdk-templates.1 | 1603 +++++++++++++++++
- .../manpages/sdk/dotnet-new-search.1 | 149 ++
- .../manpages/sdk/dotnet-new-uninstall.1 | 56 +
- .../manpages/sdk/dotnet-new-update.1 | 34 +
- documentation/manpages/sdk/dotnet-new.1 | 1573 +++-------------
- .../manpages/sdk/dotnet-nuget-add-source.1 | 123 ++
- .../manpages/sdk/dotnet-nuget-delete.1 | 27 +-
- .../sdk/dotnet-nuget-disable-source.1 | 55 +
- .../manpages/sdk/dotnet-nuget-enable-source.1 | 55 +
- .../manpages/sdk/dotnet-nuget-list-source.1 | 54 +
- .../manpages/sdk/dotnet-nuget-locals.1 | 25 +-
- .../manpages/sdk/dotnet-nuget-push.1 | 98 +-
- .../manpages/sdk/dotnet-nuget-remove-source.1 | 55 +
- .../manpages/sdk/dotnet-nuget-sign.1 | 242 +++
- .../manpages/sdk/dotnet-nuget-trust.1 | 468 +++++
- .../manpages/sdk/dotnet-nuget-update-source.1 | 89 +
- .../manpages/sdk/dotnet-nuget-verify.1 | 341 ++++
- documentation/manpages/sdk/dotnet-pack.1 | 130 +-
- documentation/manpages/sdk/dotnet-publish.1 | 485 +++--
- .../manpages/sdk/dotnet-remove-package.1 | 37 +-
- .../manpages/sdk/dotnet-remove-reference.1 | 76 +-
- documentation/manpages/sdk/dotnet-restore.1 | 326 ++--
- documentation/manpages/sdk/dotnet-run.1 | 417 ++---
- documentation/manpages/sdk/dotnet-sdk-check.1 | 76 +
- documentation/manpages/sdk/dotnet-sln.1 | 201 ++-
- documentation/manpages/sdk/dotnet-store.1 | 113 +-
- documentation/manpages/sdk/dotnet-test.1 | 574 +++---
- .../manpages/sdk/dotnet-tool-install.1 | 206 ++-
- documentation/manpages/sdk/dotnet-tool-list.1 | 101 +-
- .../manpages/sdk/dotnet-tool-restore.1 | 103 ++
- documentation/manpages/sdk/dotnet-tool-run.1 | 50 +
- .../manpages/sdk/dotnet-tool-search.1 | 122 ++
- .../manpages/sdk/dotnet-tool-uninstall.1 | 97 +-
- .../manpages/sdk/dotnet-tool-update.1 | 195 +-
- documentation/manpages/sdk/dotnet-vstest.1 | 418 ++---
- .../manpages/sdk/dotnet-workload-install.1 | 196 ++
- .../manpages/sdk/dotnet-workload-list.1 | 51 +
- .../manpages/sdk/dotnet-workload-repair.1 | 118 ++
- .../manpages/sdk/dotnet-workload-restore.1 | 124 ++
- .../manpages/sdk/dotnet-workload-search.1 | 70 +
- .../manpages/sdk/dotnet-workload-uninstall.1 | 59 +
- .../manpages/sdk/dotnet-workload-update.1 | 137 ++
- documentation/manpages/sdk/dotnet.1 | 652 +++----
- documentation/manpages/tool/Dockerfile | 4 +-
- .../manpages/tool/man-pandoc-filter.py | 16 +-
- .../remove-metadata-and-embed-includes.py | 67 +
- documentation/manpages/tool/run_docker.sh | 2 +-
- .../manpages/tool/update-man-pages.sh | 5 +-
- 63 files changed, 8258 insertions(+), 3295 deletions(-)
- create mode 100644 documentation/manpages/sdk/dotnet-environment-variables.1
- create mode 100644 documentation/manpages/sdk/dotnet-format.1
- create mode 100644 documentation/manpages/sdk/dotnet-new-install.1
- create mode 100644 documentation/manpages/sdk/dotnet-new-list.1
- create mode 100644 documentation/manpages/sdk/dotnet-new-sdk-templates.1
- create mode 100644 documentation/manpages/sdk/dotnet-new-search.1
- create mode 100644 documentation/manpages/sdk/dotnet-new-uninstall.1
- create mode 100644 documentation/manpages/sdk/dotnet-new-update.1
- create mode 100644 documentation/manpages/sdk/dotnet-nuget-add-source.1
- create mode 100644 documentation/manpages/sdk/dotnet-nuget-disable-source.1
- create mode 100644 documentation/manpages/sdk/dotnet-nuget-enable-source.1
- create mode 100644 documentation/manpages/sdk/dotnet-nuget-list-source.1
- create mode 100644 documentation/manpages/sdk/dotnet-nuget-remove-source.1
- create mode 100644 documentation/manpages/sdk/dotnet-nuget-sign.1
- create mode 100644 documentation/manpages/sdk/dotnet-nuget-trust.1
- create mode 100644 documentation/manpages/sdk/dotnet-nuget-update-source.1
- create mode 100644 documentation/manpages/sdk/dotnet-nuget-verify.1
- create mode 100644 documentation/manpages/sdk/dotnet-sdk-check.1
- create mode 100644 documentation/manpages/sdk/dotnet-tool-restore.1
- create mode 100644 documentation/manpages/sdk/dotnet-tool-run.1
- create mode 100644 documentation/manpages/sdk/dotnet-tool-search.1
- create mode 100644 documentation/manpages/sdk/dotnet-workload-install.1
- create mode 100644 documentation/manpages/sdk/dotnet-workload-list.1
- create mode 100644 documentation/manpages/sdk/dotnet-workload-repair.1
- create mode 100644 documentation/manpages/sdk/dotnet-workload-restore.1
- create mode 100644 documentation/manpages/sdk/dotnet-workload-search.1
- create mode 100644 documentation/manpages/sdk/dotnet-workload-uninstall.1
- create mode 100644 documentation/manpages/sdk/dotnet-workload-update.1
- mode change 100644 => 100755 documentation/manpages/tool/man-pandoc-filter.py
- create mode 100755 documentation/manpages/tool/remove-metadata-and-embed-includes.py
- mode change 100644 => 100755 documentation/manpages/tool/run_docker.sh
- mode change 100644 => 100755 documentation/manpages/tool/update-man-pages.sh
-
-diff --git a/documentation/manpages/sdk/dotnet-add-package.1 b/documentation/manpages/sdk/dotnet-add-package.1
-index deed5dd94f..6ec932214f 100644
---- a/documentation/manpages/sdk/dotnet-add-package.1
-+++ b/documentation/manpages/sdk/dotnet-add-package.1
-@@ -1,28 +1,36 @@
--.\" Automatically generated by Pandoc 2.7.2
-+.\" Automatically generated by Pandoc 2.14.1
- .\"
--.TH "dotnet add package command" "1" "" "" ".NET Core"
-+.TH "" "1" "" "" ".NET"
- .hy
- .SH dotnet add package
- .PP
--\f[B]This article applies to: \[OK]\f[R] .NET Core 1.x SDK and later versions
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.x SDK and later versions
- .SH NAME
- .PP
- \f[C]dotnet add package\f[R] - Adds a package reference to a project file.
- .SH SYNOPSIS
--.PP
--\f[C]dotnet add [<PROJECT>] package <PACKAGE_NAME> [-h|--help] [-f|--framework] [--interactive] [-n|--no-restore] [--package-directory] [-s|--source] [-v|--version]\f[R]
-+.IP
-+.nf
-+\f[C]
-+dotnet add [<PROJECT>] package <PACKAGE_NAME>
-+ [-f|--framework <FRAMEWORK>] [--interactive]
-+ [-n|--no-restore] [--package-directory <PACKAGE_DIRECTORY>]
-+ [--prerelease] [-s|--source <SOURCE>] [-v|--version <VERSION>]
-+
-+dotnet add package -h|--help
-+\f[R]
-+.fi
- .SH DESCRIPTION
- .PP
- The \f[C]dotnet add package\f[R] command provides a convenient option to add a package reference to a project file.
- After running the command, there\[cq]s a compatibility check to ensure the package is compatible with the frameworks in the project.
- If the check passes, a \f[C]<PackageReference>\f[R] element is added to the project file and dotnet restore is run.
- .PP
--.PP
- For example, adding \f[C]Newtonsoft.Json\f[R] to \f[I]ToDo.csproj\f[R] produces output similar to the following example:
- .IP
- .nf
- \f[C]
-- Writing C:\[rs]Users\[rs]mairaw\[rs]AppData\[rs]Local\[rs]Temp\[rs]tmp95A8.tmp
-+Writing C:\[rs]Users\[rs]me\[rs]AppData\[rs]Local\[rs]Temp\[rs]tmp95A8.tmp
- info : Adding PackageReference for package \[aq]Newtonsoft.Json\[aq] into project \[aq]C:\[rs]projects\[rs]ToDo\[rs]ToDo.csproj\[aq].
- log : Restoring packages for C:\[rs]Temp\[rs]projects\[rs]consoleproj\[rs]consoleproj.csproj...
- info : GET https://api.nuget.org/v3-flatcontainer/newtonsoft.json/index.json
-@@ -42,6 +50,14 @@ The \f[I]ToDo.csproj\f[R] file now contains a \f[C]<PackageReference>\f[R] eleme
- <PackageReference Include=\[dq]Newtonsoft.Json\[dq] Version=\[dq]12.0.1\[dq] />
- \f[R]
- .fi
-+.SS Implicit restore
-+.PP
-+You don\[cq]t have to run \f[C]dotnet restore\f[R] because it\[cq]s run implicitly by all commands that require a restore to occur, such as \f[C]dotnet new\f[R], \f[C]dotnet build\f[R], \f[C]dotnet run\f[R], \f[C]dotnet test\f[R], \f[C]dotnet publish\f[R], and \f[C]dotnet pack\f[R].
-+To disable implicit restore, use the \f[C]--no-restore\f[R] option.
-+.PP
-+The \f[C]dotnet restore\f[R] command is still useful in certain scenarios where explicitly restoring makes sense, such as continuous integration builds in Azure DevOps Services or in build systems that need to explicitly control when the restore occurs.
-+.PP
-+For information about how to manage NuGet feeds, see the \f[C]dotnet restore\f[R] documentation.
- .SS Arguments
- .IP \[bu] 2
- \f[B]\f[CB]PROJECT\f[B]\f[R]
-@@ -64,17 +80,17 @@ The package reference to add.
- Adds a package reference only when targeting a specific framework.
- .RE
- .IP \[bu] 2
--\f[B]\f[CB]-h|--help\f[B]\f[R]
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
- .RS 2
- .PP
--Prints out a short help for the command.
-+Prints out a description of how to use the command.
- .RE
- .IP \[bu] 2
- \f[B]\f[CB]--interactive\f[B]\f[R]
- .RS 2
- .PP
--Allows the command to stop and wait for user input or action (for example, to complete authentication).
--Available since .NET Core 2.1 SDK, version 2.1.400 or later.
-+Allows the command to stop and wait for user input or action.
-+For example, to complete authentication.
- .RE
- .IP \[bu] 2
- \f[B]\f[CB]-n|--no-restore\f[B]\f[R]
-@@ -91,10 +107,17 @@ The default package restore location is \f[C]%userprofile%\[rs].nuget\[rs]packag
- For more information, see Managing the global packages, cache, and temp folders in NuGet.
- .RE
- .IP \[bu] 2
-+\f[B]\f[CB]--prerelease\f[B]\f[R]
-+.RS 2
-+.PP
-+Allows prerelease packages to be installed.
-+Available since .NET Core 5 SDK
-+.RE
-+.IP \[bu] 2
- \f[B]\f[CB]-s|--source <SOURCE>\f[B]\f[R]
- .RS 2
- .PP
--The NuGet package source to use during the restore operation.
-+The URI of the NuGet package source to use during the restore operation.
- .RE
- .IP \[bu] 2
- \f[B]\f[CB]-v|--version <VERSION>\f[B]\f[R]
-diff --git a/documentation/manpages/sdk/dotnet-add-reference.1 b/documentation/manpages/sdk/dotnet-add-reference.1
-index 5389d478ce..4ca212564a 100644
---- a/documentation/manpages/sdk/dotnet-add-reference.1
-+++ b/documentation/manpages/sdk/dotnet-add-reference.1
-@@ -1,16 +1,23 @@
--.\" Automatically generated by Pandoc 2.7.2
-+.\" Automatically generated by Pandoc 2.14.1
- .\"
--.TH "dotnet add reference command" "1" "" "" ".NET Core"
-+.TH "" "1" "" "" ".NET"
- .hy
- .SH dotnet add reference
- .PP
--\f[B]This article applies to: \[OK]\f[R] .NET Core 1.x SDK and later versions
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.x SDK and later versions
- .SH NAME
- .PP
- \f[C]dotnet add reference\f[R] - Adds project-to-project (P2P) references.
- .SH SYNOPSIS
--.PP
--\f[C]dotnet add [<PROJECT>] reference [-f|--framework] <PROJECT_REFERENCES> [-h|--help] [--interactive]\f[R]
-+.IP
-+.nf
-+\f[C]
-+dotnet add [<PROJECT>] reference [-f|--framework <FRAMEWORK>]
-+ [--interactive] <PROJECT_REFERENCES>
-+
-+dotnet add reference -h|--help
-+\f[R]
-+.fi
- .SH DESCRIPTION
- .PP
- The \f[C]dotnet add reference\f[R] command provides a convenient option to add project references to a project.
-@@ -39,26 +46,27 @@ If not specified, the command searches the current directory for one.
- .PP
- Project-to-project (P2P) references to add.
- Specify one or more projects.
--Glob patterns are supported on Unix/Linux-based systems.
-+Glob patterns (https://en.wikipedia.org/wiki/Glob_(programming)) are supported on Unix/Linux-based systems.
- .RE
- .SH OPTIONS
- .IP \[bu] 2
--\f[B]\f[CB]-h|--help\f[B]\f[R]
-+\f[B]\f[CB]-f|--framework <FRAMEWORK>\f[B]\f[R]
- .RS 2
- .PP
--Prints out a short help for the command.
-+Adds project references only when targeting a specific framework using the TFM format.
- .RE
- .IP \[bu] 2
--\f[B]\f[CB]-f|--framework <FRAMEWORK>\f[B]\f[R]
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
- .RS 2
- .PP
--Adds project references only when targeting a specific framework.
-+Prints out a description of how to use the command.
- .RE
- .IP \[bu] 2
- \f[B]\f[CB]--interactive\f[B]\f[R]
- .RS 2
- .PP
--Allows the command to stop and wait for user input or action (for example, to complete authentication).
-+Allows the command to stop and wait for user input or action.
-+For example, to complete authentication.
- Available since .NET Core 3.0 SDK.
- .RE
- .SH EXAMPLES
-diff --git a/documentation/manpages/sdk/dotnet-build-server.1 b/documentation/manpages/sdk/dotnet-build-server.1
-index e378f13a32..e87f43a4c5 100644
---- a/documentation/manpages/sdk/dotnet-build-server.1
-+++ b/documentation/manpages/sdk/dotnet-build-server.1
-@@ -1,10 +1,10 @@
--.\" Automatically generated by Pandoc 2.7.2
-+.\" Automatically generated by Pandoc 2.14.1
- .\"
--.TH "dotnet build-server command" "1" "" "" ".NET Core"
-+.TH "" "1" "" "" ".NET"
- .hy
- .SH dotnet build-server
- .PP
--\f[B]This article applies to: \[OK]\f[R] .NET Core 2.1 SDK and later versions
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.1 SDK and later versions
- .SH NAME
- .PP
- \f[C]dotnet build-server\f[R] - Interacts with servers started by a build.
-@@ -13,8 +13,10 @@
- .nf
- \f[C]
- dotnet build-server shutdown [--msbuild] [--razor] [--vbcscompiler]
--dotnet build-server shutdown [-h|--help]
--dotnet build-server [-h|--help]
-+
-+dotnet build-server shutdown -h|--help
-+
-+dotnet build-server -h|--help
- \f[R]
- .fi
- .SS Commands
-@@ -27,10 +29,10 @@ By default, all servers are shut down.
- .RE
- .SH OPTIONS
- .IP \[bu] 2
--\f[B]\f[CB]-h|--help\f[B]\f[R]
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
- .RS 2
- .PP
--Prints out a short help for the command.
-+Prints out a description of how to use the command.
- .RE
- .IP \[bu] 2
- \f[B]\f[CB]--msbuild\f[B]\f[R]
-diff --git a/documentation/manpages/sdk/dotnet-build.1 b/documentation/manpages/sdk/dotnet-build.1
-index 26787ebed2..8d8dc8eff0 100644
---- a/documentation/manpages/sdk/dotnet-build.1
-+++ b/documentation/manpages/sdk/dotnet-build.1
-@@ -1,10 +1,10 @@
--.\" Automatically generated by Pandoc 2.7.2
-+.\" Automatically generated by Pandoc 2.14.1
- .\"
--.TH "dotnet build command" "1" "" "" ".NET Core"
-+.TH "" "1" "" "" ".NET"
- .hy
- .SH dotnet build
- .PP
--\f[B]This article applies to: \[OK]\f[R] .NET Core 1.x SDK and later versions
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.x SDK and later versions
- .SH NAME
- .PP
- \f[C]dotnet build\f[R] - Builds a project and all of its dependencies.
-@@ -12,11 +12,15 @@
- .IP
- .nf
- \f[C]
--dotnet build [<PROJECT>|<SOLUTION>] [-c|--configuration] [-f|--framework] [--force]
-- [--interactive] [--no-dependencies] [--no-incremental] [--no-restore] [--nologo]
-- [-o|--output] [-r|--runtime] [-v|--verbosity] [--version-suffix]
-+dotnet build [<PROJECT>|<SOLUTION>] [-a|--arch <ARCHITECTURE>]
-+ [-c|--configuration <CONFIGURATION>] [-f|--framework <FRAMEWORK>]
-+ [--force] [--interactive] [--no-dependencies] [--no-incremental]
-+ [--no-restore] [--nologo] [--no-self-contained] [--os <OS>]
-+ [-o|--output <OUTPUT_DIRECTORY>] [-r|--runtime <RUNTIME_IDENTIFIER>]
-+ [--self-contained [true|false]] [--source <SOURCE>]
-+ [-v|--verbosity <LEVEL>] [--version-suffix <VERSION_SUFFIX>]
-
--dotnet build [-h|--help]
-+dotnet build -h|--help
- \f[R]
- .fi
- .SH DESCRIPTION
-@@ -39,18 +43,26 @@ For executable projects targeting versions earlier than .NET Core 3.0, library d
- They\[cq]re resolved from the NuGet global packages folder at run time.
- With that in mind, the product of \f[C]dotnet build\f[R] isn\[cq]t ready to be transferred to another machine to run.
- To create a version of the application that can be deployed, you need to publish it (for example, with the dotnet publish command).
--For more information, see .NET Core Application Deployment.
-+For more information, see .NET Application Deployment.
- .PP
- For executable projects targeting .NET Core 3.0 and later, library dependencies are copied to the output folder.
- This means that if there isn\[cq]t any other publish-specific logic (such as Web projects have), the build output should be deployable.
-+.SS Implicit restore
- .PP
- Building requires the \f[I]project.assets.json\f[R] file, which lists the dependencies of your application.
- The file is created when \f[C]dotnet restore\f[R] is executed.
- Without the assets file in place, the tooling can\[cq]t resolve reference assemblies, which results in errors.
--With .NET Core 1.x SDK, you needed to explicitly run \f[C]dotnet restore\f[R] before running \f[C]dotnet build\f[R].
--Starting with .NET Core 2.0 SDK, \f[C]dotnet restore\f[R] runs implicitly when you run \f[C]dotnet build\f[R].
--If you want to disable implicit restore when running the build command, you can pass the \f[C]--no-restore\f[R] option.
- .PP
-+You don\[cq]t have to run \f[C]dotnet restore\f[R] because it\[cq]s run implicitly by all commands that require a restore to occur, such as \f[C]dotnet new\f[R], \f[C]dotnet build\f[R], \f[C]dotnet run\f[R], \f[C]dotnet test\f[R], \f[C]dotnet publish\f[R], and \f[C]dotnet pack\f[R].
-+To disable implicit restore, use the \f[C]--no-restore\f[R] option.
-+.PP
-+The \f[C]dotnet restore\f[R] command is still useful in certain scenarios where explicitly restoring makes sense, such as continuous integration builds in Azure DevOps Services or in build systems that need to explicitly control when the restore occurs.
-+.PP
-+For information about how to manage NuGet feeds, see the \f[C]dotnet restore\f[R] documentation.
-+.PP
-+This command supports the \f[C]dotnet restore\f[R] options when passed in the long form (for example, \f[C]--source\f[R]).
-+Short form options, such as \f[C]-s\f[R], are not supported.
-+.SS Executable or library output
- .PP
- Whether the project is executable or not is determined by the \f[C]<OutputType>\f[R] property in the project file.
- The following example shows a project that produces executable code:
-@@ -73,8 +85,17 @@ For more information, see Incremental Builds.
- In addition to its options, the \f[C]dotnet build\f[R] command accepts MSBuild options, such as \f[C]-p\f[R] for setting properties or \f[C]-l\f[R] to define a logger.
- For more information about these options, see the MSBuild Command-Line Reference.
- Or you can also use the dotnet msbuild command.
-+.RS
-+.PP
-+[!NOTE] When \f[C]dotnet build\f[R] is run automatically by \f[C]dotnet run\f[R], arguments like \f[C]-property:property=value\f[R] aren\[cq]t respected.
-+.RE
- .PP
- Running \f[C]dotnet build\f[R] is equivalent to running \f[C]dotnet msbuild -restore\f[R]; however, the default verbosity of the output is different.
-+.SS Workload manifest downloads
-+.PP
-+When you run this command, it initiates an asynchronous background download of advertising manifests for workloads.
-+If the download is still running when this command finishes, the download is stopped.
-+For more information, see Advertising manifests.
- .SS Arguments
- .PP
- \f[C]PROJECT | SOLUTION\f[R]
-@@ -83,7 +104,17 @@ The project or solution file to build.
- If a project or solution file isn\[cq]t specified, MSBuild searches the current working directory for a file that has a file extension that ends in either \f[I]proj\f[R] or \f[I]sln\f[R] and uses that file.
- .SH OPTIONS
- .IP \[bu] 2
--\f[B]\f[CB]-c|--configuration {Debug|Release}\f[B]\f[R]
-+\f[B]\f[CB]-a|--arch <ARCHITECTURE>\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies the target architecture.
-+This is a shorthand syntax for setting the Runtime Identifier (RID), where the provided value is combined with the default RID.
-+For example, on a \f[C]win-x64\f[R] machine, specifying \f[C]--arch x86\f[R] sets the RID to \f[C]win-x86\f[R].
-+If you use this option, don\[cq]t use the \f[C]-r|--runtime\f[R] option.
-+Available since .NET 6 Preview 7.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-c|--configuration <CONFIGURATION>\f[B]\f[R]
- .RS 2
- .PP
- Defines the build configuration.
-@@ -102,13 +133,12 @@ The framework must be defined in the project file.
- .PP
- Forces all dependencies to be resolved even if the last restore was successful.
- Specifying this flag is the same as deleting the \f[I]project.assets.json\f[R] file.
--Available since .NET Core 2.0 SDK.
- .RE
- .IP \[bu] 2
--\f[B]\f[CB]-h|--help\f[B]\f[R]
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
- .RS 2
- .PP
--Prints out a short help for the command.
-+Prints out a description of how to use the command.
- .RE
- .IP \[bu] 2
- \f[B]\f[CB]--interactive\f[B]\f[R]
-@@ -136,7 +166,6 @@ This flag turns off incremental compilation and forces a clean rebuild of the pr
- .RS 2
- .PP
- Doesn\[cq]t execute an implicit restore during build.
--Available since .NET Core 2.0 SDK.
- .RE
- .IP \[bu] 2
- \f[B]\f[CB]--nologo\f[B]\f[R]
-@@ -146,6 +175,13 @@ Doesn\[cq]t display the startup banner or the copyright message.
- Available since .NET Core 3.0 SDK.
- .RE
- .IP \[bu] 2
-+\f[B]\f[CB]--no-self-contained\f[B]\f[R]
-+.RS 2
-+.PP
-+Publishes the application as a framework dependent application.
-+A compatible .NET runtime must be installed on the target machine to run the application.
-+.RE
-+.IP \[bu] 2
- \f[B]\f[CB]-o|--output <OUTPUT_DIRECTORY>\f[B]\f[R]
- .RS 2
- .PP
-@@ -154,19 +190,44 @@ If not specified, the default path is \f[C]./bin/<configuration>/<framework>/\f[
- For projects with multiple target frameworks (via the \f[C]TargetFrameworks\f[R] property), you also need to define \f[C]--framework\f[R] when you specify this option.
- .RE
- .IP \[bu] 2
-+\f[B]\f[CB]--os <OS>\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies the target operating system (OS).
-+This is a shorthand syntax for setting the Runtime Identifier (RID), where the provided value is combined with the default RID.
-+For example, on a \f[C]win-x64\f[R] machine, specifying \f[C]--os os\f[R] sets the RID to \f[C]os-x64\f[R].
-+If you use this option, don\[cq]t use the \f[C]-r|--runtime\f[R] option.
-+Available since .NET 6 Preview 7.
-+.RE
-+.IP \[bu] 2
- \f[B]\f[CB]-r|--runtime <RUNTIME_IDENTIFIER>\f[B]\f[R]
- .RS 2
- .PP
- Specifies the target runtime.
- For a list of Runtime Identifiers (RIDs), see the RID catalog.
-+If you use this option, use \f[C]--self-contained\f[R] or \f[C]--no-self-contained\f[R] also.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--self-contained [true|false]\f[B]\f[R]
-+.RS 2
-+.PP
-+Publishes the .NET runtime with the application so the runtime doesn\[cq]t need to be installed on the target machine.
-+The default is \f[C]true\f[R] if a runtime identifier is specified.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--source <SOURCE>\f[B]\f[R]
-+.RS 2
-+.PP
-+The URI of the NuGet package source to use during the restore operation.
- .RE
- .IP \[bu] 2
- \f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
- .RS 2
- .PP
--Sets the MSBuild verbosity level.
-+Sets the verbosity level of the command.
- Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
- The default is \f[C]minimal\f[R].
-+For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
- .RE
- .IP \[bu] 2
- \f[B]\f[CB]--version-suffix <VERSION_SUFFIX>\f[B]\f[R]
-@@ -208,7 +269,7 @@ dotnet build --runtime ubuntu.18.04-x64
- .fi
- .RE
- .IP \[bu] 2
--Build the project and use the specified NuGet package source during the restore operation (.NET Core 2.0 SDK and later versions):
-+Build the project and use the specified NuGet package source during the restore operation:
- .RS 2
- .IP
- .nf
-diff --git a/documentation/manpages/sdk/dotnet-clean.1 b/documentation/manpages/sdk/dotnet-clean.1
-index 008eade6f1..2c0c8cd5d7 100644
---- a/documentation/manpages/sdk/dotnet-clean.1
-+++ b/documentation/manpages/sdk/dotnet-clean.1
-@@ -1,10 +1,10 @@
--.\" Automatically generated by Pandoc 2.7.2
-+.\" Automatically generated by Pandoc 2.14.1
- .\"
--.TH "dotnet clean command" "1" "" "" ".NET Core"
-+.TH "" "1" "" "" ".NET"
- .hy
- .SH dotnet clean
- .PP
--\f[B]This topic applies to: \[OK]\f[R] .NET Core 1.x SDK and later versions
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.x SDK and later versions
- .SH NAME
- .PP
- \f[C]dotnet clean\f[R] - Cleans the output of a project.
-@@ -12,9 +12,12 @@
- .IP
- .nf
- \f[C]
--dotnet clean [<PROJECT>|<SOLUTION>] [-c|--configuration] [-f|--framework] [--interactive]
-- [--nologo] [-o|--output] [-r|--runtime] [-v|--verbosity]
--dotnet clean [-h|--help]
-+dotnet clean [<PROJECT>|<SOLUTION>] [-c|--configuration <CONFIGURATION>]
-+ [-f|--framework <FRAMEWORK>] [--interactive]
-+ [--nologo] [-o|--output <OUTPUT_DIRECTORY>]
-+ [-r|--runtime <RUNTIME_IDENTIFIER>] [-v|--verbosity <LEVEL>]
-+
-+dotnet clean -h|--help
- \f[R]
- .fi
- .SH DESCRIPTION
-@@ -31,11 +34,11 @@ The MSBuild project or solution to clean.
- If a project or solution file is not specified, MSBuild searches the current working directory for a file that has a file extension that ends in \f[I]proj\f[R] or \f[I]sln\f[R], and uses that file.
- .SH OPTIONS
- .IP \[bu] 2
--\f[B]\f[CB]-c|--configuration {Debug|Release}\f[B]\f[R]
-+\f[B]\f[CB]-c|--configuration <CONFIGURATION>\f[B]\f[R]
- .RS 2
- .PP
- Defines the build configuration.
--The default value is \f[C]Debug\f[R].
-+The default for most projects is \f[C]Debug\f[R], but you can override the build configuration settings in your project.
- This option is only required when cleaning if you specified it during build time.
- .RE
- .IP \[bu] 2
-@@ -47,10 +50,10 @@ The framework must be defined in the project file.
- If you specified the framework at build time, you must specify the framework when cleaning.
- .RE
- .IP \[bu] 2
--\f[B]\f[CB]-h|--help\f[B]\f[R]
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
- .RS 2
- .PP
--Prints out a short help for the command.
-+Prints out a description of how to use the command.
- .RE
- .IP \[bu] 2
- \f[B]\f[CB]--interactive\f[B]\f[R]
-@@ -80,15 +83,15 @@ Specify the \f[C]-f|--framework <FRAMEWORK>\f[R] switch with the output director
- .PP
- Cleans the output folder of the specified runtime.
- This is used when a self-contained deployment was created.
--Option available since .NET Core 2.0 SDK.
- .RE
- .IP \[bu] 2
- \f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
- .RS 2
- .PP
--Sets the MSBuild verbosity level.
-+Sets the verbosity level of the command.
- Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
- The default is \f[C]normal\f[R].
-+For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
- .RE
- .SH EXAMPLES
- .IP \[bu] 2
-diff --git a/documentation/manpages/sdk/dotnet-environment-variables.1 b/documentation/manpages/sdk/dotnet-environment-variables.1
-new file mode 100644
-index 0000000000..61dd16b4b8
---- /dev/null
-+++ b/documentation/manpages/sdk/dotnet-environment-variables.1
-@@ -0,0 +1,135 @@
-+.\" Automatically generated by Pandoc 2.14.1
-+.\"
-+.TH "" "1" "" "" ".NET"
-+.hy
-+.SH Environment variables used by .NET SDK, .NET CLI, and .NET runtime
-+.PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.1 SDK and later versions
-+.PP
-+Use the following environment variables to configure the .NET SDK, .NET CLI, and .NET runtime.
-+.SS \f[C]DOTNET_ROOT\f[R], \f[C]DOTNET_ROOT(x86)\f[R]
-+.PP
-+Specifies the location of the .NET runtimes, if they are not installed in the default location.
-+The default location on Windows is \f[C]C:\[rs]Program Files\[rs]dotnet\f[R].
-+The default location on Linux and macOS is \f[C]/usr/share/dotnet\f[R].
-+This environment variable is used only when running apps via generated executables (apphosts).
-+\f[C]DOTNET_ROOT(x86)\f[R] is used instead when running a 32-bit executable on a 64-bit OS.
-+.SS \f[C]NUGET_PACKAGES\f[R]
-+.PP
-+The global packages folder.
-+If not set, it defaults to \f[C]\[ti]/.nuget/packages\f[R] on Unix or \f[C]%userprofile%\[rs].nuget\[rs]packages\f[R] on Windows.
-+.SS \f[C]DOTNET_SERVICING\f[R]
-+.PP
-+Specifies the location of the servicing index to use by the shared host when loading the runtime.
-+.SS \f[C]DOTNET_NOLOGO\f[R]
-+.PP
-+Specifies whether .NET welcome and telemetry messages are displayed on first run.
-+Set to \f[C]true\f[R] to mute these messages (values \f[C]true\f[R], \f[C]1\f[R], or \f[C]yes\f[R] accepted) or set to \f[C]false\f[R] to allow (values \f[C]false\f[R], \f[C]0\f[R], or \f[C]no\f[R] accepted).
-+If not set, the default is \f[C]false\f[R] and the messages will be displayed on first run.
-+This flag has no effect on telemetry (see \f[C]DOTNET_CLI_TELEMETRY_OPTOUT\f[R] for opting out of sending telemetry).
-+.SS \f[C]DOTNET_CLI_TELEMETRY_OPTOUT\f[R]
-+.PP
-+Specifies whether data about the .NET tools usage is collected and sent to Microsoft.
-+Set to \f[C]true\f[R] to opt-out of the telemetry feature (values \f[C]true\f[R], \f[C]1\f[R], or \f[C]yes\f[R] accepted).
-+Otherwise, set to \f[C]false\f[R] to opt into the telemetry features (values \f[C]false\f[R], \f[C]0\f[R], or \f[C]no\f[R] accepted).
-+If not set, the default is \f[C]false\f[R] and the telemetry feature is active.
-+.SS \f[C]DOTNET_MULTILEVEL_LOOKUP\f[R]
-+.PP
-+Specifies whether .NET runtime, shared framework, or SDK are resolved from the global location.
-+If not set, it defaults to 1 (logical \f[C]true\f[R]).
-+Set to 0 (logical \f[C]false\f[R]) to not resolve from the global location and have isolated .NET installations.
-+For more information about multi-level lookup, see Multi-level SharedFX Lookup (https://github.com/dotnet/core-setup/blob/master/Documentation/design-doc...).
-+.SS \f[C]DOTNET_ROLL_FORWARD\f[R]
-+.PP
-+Determines roll forward behavior.
-+For more information, see the \f[C]--roll-forward\f[R] option earlier in this article.
-+\f[B]Available starting with .NET Core 3.x.\f[R]
-+.SS \f[C]DOTNET_ROLL_FORWARD_TO_PRERELEASE\f[R]
-+.PP
-+If set to \f[C]1\f[R] (enabled), enables rolling forward to a pre-release version from a release version.
-+By default (\f[C]0\f[R] - disabled), when a release version of .NET runtime is requested, roll-forward will only consider installed release versions.
-+\f[B]Available starting with .NET Core 3.x.\f[R]
-+.PP
-+For more information, see Roll forward.
-+.SS \f[C]DOTNET_ROLL_FORWARD_ON_NO_CANDIDATE_FX\f[R]
-+.PP
-+Disables minor version roll forward, if set to \f[C]0\f[R].
-+For more information, see Roll forward.
-+.PP
-+This setting is superseded in .NET Core 3.0 by \f[C]DOTNET_ROLL_FORWARD\f[R].
-+The new settings should be used instead.
-+.SS \f[C]DOTNET_CLI_UI_LANGUAGE\f[R]
-+.PP
-+Sets the language of the CLI UI using a locale value such as \f[C]en-us\f[R].
-+The supported values are the same as for Visual Studio.
-+For more information, see the section on changing the installer language in the Visual Studio installation documentation.
-+The .NET resource manager rules apply, so you don\[cq]t have to pick an exact match\[em]you can also pick descendants in the \f[C]CultureInfo\f[R] tree.
-+For example, if you set it to \f[C]fr-CA\f[R], the CLI will find and use the \f[C]fr\f[R] translations.
-+If you set it to a language that is not supported, the CLI falls back to English.
-+.SS \f[C]DOTNET_DISABLE_GUI_ERRORS\f[R]
-+.PP
-+For GUI-enabled generated executables - disables dialog popup, which normally shows for certain classes of errors.
-+It only writes to \f[C]stderr\f[R] and exits in those cases.
-+.SS \f[C]DOTNET_ADDITIONAL_DEPS\f[R]
-+.PP
-+Equivalent to CLI option \f[C]--additional-deps\f[R].
-+.SS \f[C]DOTNET_RUNTIME_ID\f[R]
-+.PP
-+Overrides the detected RID.
-+.SS \f[C]DOTNET_SHARED_STORE\f[R]
-+.PP
-+Location of the \[lq]shared store\[rq] which assembly resolution falls back to in some cases.
-+.SS \f[C]DOTNET_STARTUP_HOOKS\f[R]
-+.PP
-+List of assemblies to load and execute startup hooks from.
-+.SS \f[C]DOTNET_BUNDLE_EXTRACT_BASE_DIR\f[R]
-+.PP
-+Specifies a directory to which a single-file application is extracted before it is executed.
-+\f[B]Available starting with .NET Core 3.x.\f[R]
-+.PP
-+For more information, see Single-file executables.
-+.SS \f[C]COREHOST_TRACE\f[R]
-+.PP
-+Controls diagnostics tracing from the hosting components, such as \f[C]dotnet.exe\f[R], \f[C]hostfxr\f[R], and \f[C]hostpolicy\f[R].
-+.IP \[bu] 2
-+\f[C]COREHOST_TRACE=[0/1]\f[R] - default is \f[C]0\f[R] - tracing disabled.
-+If set to \f[C]1\f[R], diagnostics tracing is enabled.
-+.IP \[bu] 2
-+\f[C]COREHOST_TRACEFILE=<file path>\f[R] - only has effect if tracing is enabled via \f[C]COREHOST_TRACE=1\f[R].
-+When set, the tracing information is written to the specified file, otherwise the tracing information is written to \f[C]stderr\f[R].
-+\f[B]Available starting with .NET Core 3.x.\f[R]
-+.IP \[bu] 2
-+\f[C]COREHOST_TRACE_VERBOSITY=[1/2/3/4]\f[R] - default is \f[C]4\f[R].
-+The setting is used only when tracing is enabled via \f[C]COREHOST_TRACE=1\f[R].
-+\f[B]Available starting with .NET Core 3.x.\f[R]
-+.RS 2
-+.IP \[bu] 2
-+\f[C]4\f[R] - all tracing information is written
-+.IP \[bu] 2
-+\f[C]3\f[R] - only informational, warning and error messages are written
-+.IP \[bu] 2
-+\f[C]2\f[R] - only warning and error messages are written
-+.IP \[bu] 2
-+\f[C]1\f[R] - only error messages are written
-+.RE
-+.PP
-+The typical way to get detailed trace information about application startup is to set \f[C]COREHOST_TRACE=1\f[R] and\f[C]COREHOST_TRACEFILE=host_trace.txt\f[R] and then run the application.
-+A new file \f[C]host_trace.txt\f[R] will be created in the current directory with the detailed information.
-+.SS \f[C]DOTNET_CLI_WORKLOAD_UPDATE_NOTIFY_DISABLE\f[R]
-+.PP
-+Disables background download of advertising manifests for workloads.
-+Default is \f[C]false\f[R] - not disabled.
-+If set to \f[C]true\f[R], downloading is disabled.
-+For more information, see Advertising manifests.
-+.SS \f[C]DOTNET_CLI_WORKLOAD_UPDATE_NOTIFY_INTERVAL_HOURS\f[R]
-+.PP
-+Specifies the minimum number of hours between background downloads of advertising manifests for workloads.
-+Default is \f[C]24\f[R] - no more frequently than once a day.
-+For more information, see Advertising manifests.
-+.SS See also
-+.IP \[bu] 2
-+dotnet command
-+.IP \[bu] 2
-+Runtime Configuration Files (https://github.com/dotnet/sdk/blob/main/documentation/specs/runtime-confi...)
-+.IP \[bu] 2
-+\&.NET runtime configuration settings
-diff --git a/documentation/manpages/sdk/dotnet-format.1 b/documentation/manpages/sdk/dotnet-format.1
-new file mode 100644
-index 0000000000..9ca1d4e620
---- /dev/null
-+++ b/documentation/manpages/sdk/dotnet-format.1
-@@ -0,0 +1,198 @@
-+.\" Automatically generated by Pandoc 2.14.1
-+.\"
-+.TH "" "1" "" "" ".NET"
-+.hy
-+.SH dotnet format
-+.PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET 6.x SDK and later versions
-+.SH NAME
-+.PP
-+\f[C]dotnet format\f[R] - Formats code to match \f[C]editorconfig\f[R] settings.
-+.SH SYNOPSIS
-+.IP
-+.nf
-+\f[C]
-+dotnet format [options] [<PROJECT | SOLUTION>]
-+
-+dotnet format -h|--help
-+\f[R]
-+.fi
-+.SH DESCRIPTION
-+.PP
-+\f[C]dotnet format\f[R] is a code formatter that applies style preferences to a project or solution.
-+Preferences will be read from an \f[I].editorconfig\f[R] file, if present, otherwise a default set of preferences will be used.
-+For more information, see the EditorConfig documentation.
-+.SS Arguments
-+.PP
-+\f[C]PROJECT | SOLUTION\f[R]
-+.PP
-+The MSBuild project or solution to run code formatting on.
-+If a project or solution file is not specified, MSBuild searches the current working directory for a file that has a file extension that ends in \f[I]proj\f[R] or \f[I]sln\f[R], and uses that file.
-+.SH OPTIONS
-+.PP
-+None of the options below are required for the \f[C]dotnet format\f[R] command to succeed but can be used to further customize what is formatted and by which rules.
-+.IP \[bu] 2
-+\f[B]\f[CB]--diagnostics <DIAGNOSTICS>\f[B]\f[R]
-+.RS 2
-+.PP
-+A space-separated list of diagnostic IDs to use as a filter when fixing code style or third party issues.
-+Default value is whichever IDs are listed in the \f[I]editorconfig\f[R] file.
-+For a list of built-in analyzer rule IDs that you can specify, see the list of IDs for code-analysis quality rules.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--severity\f[B]\f[R]
-+.RS 2
-+.PP
-+The minumum severity of diagnostics to fix.
-+Allowed values are \f[C]info\f[R], \f[C]warn\f[R], and \f[C]error\f[R].
-+The default value is \f[C]warn\f[R]
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-restore\f[B]\f[R]
-+.RS 2
-+.PP
-+Doesn\[cq]t execute an implicit restore before formatting.
-+Default is to do implicit restore.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--verify-no-changes\f[B]\f[R]
-+.RS 2
-+.PP
-+Verifies that no formatting changes would be performed.
-+Terminates with a non zero exit code if any files would have been formatted.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--include <INCLUDE>\f[B]\f[R]
-+.RS 2
-+.PP
-+A space-separated list of relative file or folder paths to include in formatting.
-+All files in the solution or project are formatted if empty.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--exclude <EXCLUDE>\f[B]\f[R]
-+.RS 2
-+.PP
-+A space-separated list of relative file or folder paths to exclude from formatting.
-+The default is none.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--include-generated\f[B]\f[R]
-+.RS 2
-+.PP
-+Formats files generated by the SDK.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
-+.RS 2
-+.PP
-+Sets the verbosity level.
-+Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
-+Default value is \f[C]m[inimal]\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--binarylog <BINARY-LOG-PATH>\f[B]\f[R]
-+.RS 2
-+.PP
-+Logs all project or solution load information to a binary log file.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--report <REPORT-PATH>\f[B]\f[R]
-+.RS 2
-+.PP
-+Produces a JSON report in the directory specified by \f[C]<REPORT_PATH>\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-h|--help\f[B]\f[R]
-+.RS 2
-+.PP
-+Shows help and usage information
-+.RE
-+.SS Subcommands
-+.SS Whitespace
-+.PP
-+\f[C]dotnet format whitespace\f[R] - Formats code to match \f[C]editorconfig\f[R] settings for whitespace.
-+.SH DESCRIPTION
-+.PP
-+The \f[C]dotnet format whitespace\f[R] subcommand will only run formatting rules associated with whitespace formatting.
-+For a complete list of possible formatting options that you can specify in your \f[I].editorconfig\f[R] file, see the whitespace formatting documentation.
-+.SS Style
-+.PP
-+\f[C]dotnet format style\f[R] - Formats code to match EditorConfig settings for code style.
-+.SH DESCRIPTION
-+.PP
-+The \f[C]dotnet format style\f[R] subcommand will only run formatting rule associated with code style formatting.
-+For a complete list of possible formatting options that you can specify in your \f[C]editorconfig\f[R] file see the code style documentation.
-+.SH OPTIONS
-+.IP \[bu] 2
-+\f[B]\f[CB]--severity\f[B]\f[R]
-+.RS 2
-+.PP
-+The minimum severity of diagnostics to fix.
-+Allowed values are \f[C]info\f[R], \f[C]warn\f[R], and \f[C]error\f[R].
-+The default value is \f[C]warn\f[R]
-+.RE
-+.SS Analyzers
-+.PP
-+\f[C]dotnet format analyzers\f[R] - Formats code to match \f[C]editorconfig\f[R] settings for analyzers.
-+.SH DESCRIPTION
-+.PP
-+The \f[C]dotnet format analyzers\f[R] subcommand will only run formatting rule associated with analyzers.
-+For a list of possible analyzer rules that you can specify in your \f[C]editorconfig\f[R] file see the list of ids for code-analysis quality rules.
-+.SH OPTIONS
-+.IP \[bu] 2
-+\f[B]\f[CB]--diagnostics <DIAGNOSTICS>\f[B]\f[R]
-+.RS 2
-+.PP
-+A space separated list of diagnostic ids to use as a filter when fixing code quality or 3rd party issues.
-+Default value is whichever ids are listed in the \f[C]editorconfig\f[R] file.
-+For a list of built-in analyzer rule ids that you can specify see the list of ids see the documentation of code-analysis quality rules.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--severity\f[B]\f[R]
-+.RS 2
-+.PP
-+The minimum severity of diagnostics to fix.
-+Allowed values are \f[C]info\f[R], \f[C]warn\f[R], and \f[C]error\f[R].
-+The default value is \f[C]warn\f[R]
-+.RE
-+.SH EXAMPLES
-+.IP \[bu] 2
-+Format all code in the solution:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet format ./solution.sln
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Clean up all code in the application project:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet format ./src/application.csproj
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Verify that all code is correctly formatted:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet format --verify-no-changes
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Clean up all code in the \f[I]src\f[R] and \f[I]tests\f[R] directory but not in \f[I]src/submodule-a\f[R]:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet format --include ./src/ ./tests/ --exclude ./src/submodule-a/
-+\f[R]
-+.fi
-+.RE
-diff --git a/documentation/manpages/sdk/dotnet-help.1 b/documentation/manpages/sdk/dotnet-help.1
-index c60cece94c..0fe1fe7117 100644
---- a/documentation/manpages/sdk/dotnet-help.1
-+++ b/documentation/manpages/sdk/dotnet-help.1
-@@ -1,16 +1,20 @@
--.\" Automatically generated by Pandoc 2.7.2
-+.\" Automatically generated by Pandoc 2.14.1
- .\"
--.TH "dotnet help command" "1" "" "" ".NET Core"
-+.TH "" "1" "" "" ".NET"
- .hy
- .SH dotnet help reference
- .PP
--\f[B]This article applies to: \[OK]\f[R] .NET Core 2.0 SDK and later versions
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.0 SDK and later versions
- .SH NAME
- .PP
- \f[C]dotnet help\f[R] - Shows more detailed documentation online for the specified command.
- .SH SYNOPSIS
--.PP
--\f[C]dotnet help <COMMAND_NAME> [-h|--help]\f[R]
-+.IP
-+.nf
-+\f[C]
-+dotnet help <COMMAND_NAME> [-h|--help]
-+\f[R]
-+.fi
- .SH DESCRIPTION
- .PP
- The \f[C]dotnet help\f[R] command opens up the reference page for more detailed information about the specified command at docs.microsoft.com.
-@@ -19,15 +23,15 @@ The \f[C]dotnet help\f[R] command opens up the reference page for more detailed
- \f[B]\f[CB]COMMAND_NAME\f[B]\f[R]
- .RS 2
- .PP
--Name of the .NET Core CLI command.
-+Name of the .NET CLI command.
- For a list of the valid CLI commands, see CLI commands.
- .RE
- .SH OPTIONS
- .IP \[bu] 2
--\f[B]\f[CB]-h|--help\f[B]\f[R]
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
- .RS 2
- .PP
--Prints out a short help for the command.
-+Prints out a description of how to use the command.
- .RE
- .SH EXAMPLES
- .IP \[bu] 2
-diff --git a/documentation/manpages/sdk/dotnet-install-script.1 b/documentation/manpages/sdk/dotnet-install-script.1
-index 09d91ee3fa..5a05a02300 100644
---- a/documentation/manpages/sdk/dotnet-install-script.1
-+++ b/documentation/manpages/sdk/dotnet-install-script.1
-@@ -1,51 +1,125 @@
--.\" Automatically generated by Pandoc 2.7.2
-+.\" Automatically generated by Pandoc 2.14.1
- .\"
--.TH "dotnet-install scripts" "1" "" "" ".NET Core"
-+.TH "" "1" "" "" ".NET"
- .hy
- .SH dotnet-install scripts reference
- .SH NAME
- .PP
--\f[C]dotnet-install.ps1\f[R] | \f[C]dotnet-install.sh\f[R] - Script used to install the .NET Core CLI tools and the shared runtime.
-+\f[C]dotnet-install.ps1\f[R] | \f[C]dotnet-install.sh\f[R] - Script used to install the .NET SDK and the shared runtime.
- .SH SYNOPSIS
- .PP
- Windows:
-+.IP
-+.nf
-+\f[C]
-+dotnet-install.ps1 [-Architecture <ARCHITECTURE>] [-AzureFeed]
-+ [-Channel <CHANNEL>] [-DryRun] [-FeedCredential]
-+ [-InstallDir <DIRECTORY>] [-JSonFile <JSONFILE>]
-+ [-NoCdn] [-NoPath] [-ProxyAddress] [-ProxyBypassList <LIST_OF_URLS>]
-+ [-ProxyUseDefaultCredentials] [-Quality <QUALITY>] [-Runtime <RUNTIME>]
-+ [-SkipNonVersionedFiles] [-UncachedFeed] [-Verbose]
-+ [-Version <VERSION>]
-+
-+Get-Help ./dotnet-install.ps1
-+\f[R]
-+.fi
- .PP
--\f[C]dotnet-install.ps1 [-Channel] [-Version] [-InstallDir] [-Architecture] [-SharedRuntime] [-Runtime] [-DryRun] [-NoPath] [-Verbose] [-AzureFeed] [-UncachedFeed] [-NoCdn] [-FeedCredential] [-ProxyAddress] [-ProxyUseDefaultCredentials] [-SkipNonVersionedFiles] [-Help]\f[R]
--.PP
--macOS/Linux:
-+Linux/macOS:
-+.IP
-+.nf
-+\f[C]
-+dotnet-install.sh [--architecture <ARCHITECTURE>] [--azure-feed]
-+ [--channel <CHANNEL>] [--dry-run] [--feed-credential]
-+ [--install-dir <DIRECTORY>] [--jsonfile <JSONFILE>]
-+ [--no-cdn] [--no-path] [--quality <QUALITY>]
-+ [--runtime <RUNTIME>] [--runtime-id <RID>]
-+ [--skip-non-versioned-files] [--uncached-feed] [--verbose]
-+ [--version <VERSION>]
-+
-+dotnet-install.sh --help
-+\f[R]
-+.fi
- .PP
--\f[C]dotnet-install.sh [--channel] [--version] [--install-dir] [--architecture] [--runtime] [--dry-run] [--no-path] [--verbose] [--azure-feed] [--uncached-feed] [--no-cdn] [--feed-credential] [--runtime-id] [--skip-non-versioned-files] [--help]\f[R]
-+The bash script also reads PowerShell switches, so you can use PowerShell switches with the script on Linux/macOS systems.
- .SH DESCRIPTION
- .PP
--The \f[C]dotnet-install\f[R] scripts are used to perform a non-admin installation of the .NET Core SDK, which includes the .NET Core CLI tools and the shared runtime.
-+The \f[C]dotnet-install\f[R] scripts perform a non-admin installation of the .NET SDK, which includes the .NET CLI and the shared runtime.
-+There are two scripts:
-+.IP \[bu] 2
-+A PowerShell script that works on Windows.
-+.IP \[bu] 2
-+A bash script that works on Linux/macOS.
-+.RS
- .PP
--We recommend that you use the stable version that is hosted on .NET Core main website.
--The direct paths to the scripts are:
-+[!NOTE] .NET collects telemetry data.
-+To learn more and how to opt out, see .NET SDK telemetry.
-+.RE
-+.SS Purpose
-+.PP
-+The intended use of the scripts is for Continuous Integration (CI) scenarios, where:
-+.IP \[bu] 2
-+The SDK needs to be installed without user interaction and without admin rights.
-+.IP \[bu] 2
-+The SDK installation doesn\[cq]t need to persist across multiple CI runs.
-+.RS 2
-+.PP
-+The typical sequence of events:
-+.IP \[bu] 2
-+CI is triggered.
-+.IP \[bu] 2
-+CI installs the SDK using one of these scripts.
-+.IP \[bu] 2
-+CI finishes its work and clears temporary data including the SDK installation.
-+.RE
-+.PP
-+To set up a development environment or to run apps, use the installers rather than these scripts.
-+.SS Recommended version
-+.PP
-+We recommend that you use the stable version of the scripts:
- .IP \[bu] 2
--https://dot.net/v1/dotnet-install.sh (bash, UNIX)
-+Bash (Linux/macOS): <https://dot.net/v1/dotnet-install.sh>
- .IP \[bu] 2
--https://dot.net/v1/dotnet-install.ps1 (Powershell, Windows)
-+PowerShell (Windows): <https://dot.net/v1/dotnet-install.ps1>
-+.SS Script behavior
- .PP
--The main usefulness of these scripts is in automation scenarios and non-admin installations.
--There are two scripts: one is a PowerShell script that works on Windows, and the other is a bash script that works on Linux/macOS.
- Both scripts have the same behavior.
--The bash script also reads PowerShell switches, so you can use PowerShell switches with the script on Linux/macOS systems.
-+They download the ZIP/tarball file from the CLI build drops and proceed to install it in either the default location or in a location specified by \f[C]-InstallDir|--install-dir\f[R].
- .PP
--The installation scripts download the ZIP/tarball file from the CLI build drops and proceed to install it in either the default location or in a location specified by \f[C]-InstallDir|--install-dir\f[R].
- By default, the installation scripts download the SDK and install it.
--If you wish to only obtain the shared runtime, specify the \f[C]--runtime\f[R] argument.
-+If you wish to only obtain the shared runtime, specify the \f[C]-Runtime|--runtime\f[R] argument.
- .PP
- By default, the script adds the install location to the $PATH for the current session.
--Override this default behavior by specifying the \f[C]--no-path\f[R] argument.
-+Override this default behavior by specifying the \f[C]-NoPath|--no-path\f[R] argument.
-+The script doesn\[cq]t set the \f[C]DOTNET_ROOT\f[R] environment variable.
- .PP
- Before running the script, install the required dependencies.
- .PP
--You can install a specific version using the \f[C]--version\f[R] argument.
--The version must be specified as a three-part version (for example, 1.0.0-13232).
--If not provided, it uses the \f[C]latest\f[R] version.
-+You can install a specific version using the \f[C]-Version|--version\f[R] argument.
-+The version must be specified as a three-part version number, such as \f[C]2.1.0\f[R].
-+If the version isn\[cq]t specified, the script installs the \f[C]latest\f[R] version.
-+.PP
-+The install scripts do not update the registry on Windows.
-+They just download the zipped binaries and copy them to a folder.
-+If you want registry key values to be updated, use the .NET installers.
- .SH OPTIONS
- .IP \[bu] 2
--\f[B]\f[CB]-Channel <CHANNEL>\f[B]\f[R]
-+\f[B]\f[CB]-Architecture|--architecture <ARCHITECTURE>\f[B]\f[R]
-+.RS 2
-+.PP
-+Architecture of the .NET binaries to install.
-+Possible values are \f[C]<auto>\f[R], \f[C]amd64\f[R], \f[C]x64\f[R], \f[C]x86\f[R], \f[C]arm64\f[R], and \f[C]arm\f[R].
-+The default value is \f[C]<auto>\f[R], which represents the currently running OS architecture.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-AzureFeed|--azure-feed\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies the URL for the Azure feed to the installer.
-+We recommended that you don\[cq]t change this value.
-+The default value is \f[C]https://dotnetcli.azureedge.net/dotnet\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-Channel|--channel <CHANNEL>\f[B]\f[R]
- .RS 2
- .PP
- Specifies the source channel for the installation.
-@@ -55,145 +129,179 @@ The possible values are:
- .IP \[bu] 2
- \f[C]LTS\f[R] - Long-Term Support channel (most current supported release).
- .IP \[bu] 2
--Two-part version in X.Y format representing a specific release (for example, \f[C]2.0\f[R] or \f[C]1.0\f[R]).
-+Two-part version in A.B format, representing a specific release (for example, \f[C]2.1\f[R] or \f[C]3.0\f[R]).
- .IP \[bu] 2
--Branch name.
--For example, \f[C]release/2.0.0\f[R], \f[C]release/2.0.0-preview2\f[R], or \f[C]main\f[R] (for nightly releases).
-+Three-part version in A.B.Cxx format, representing a specific SDK release (for example, 5.0.1xx or 5.0.2xx).
-+Available since the 5.0 release.
-+.PP
-+The \f[C]version\f[R] parameter overrides the \f[C]channel\f[R] parameter when any version other than \f[C]latest\f[R] is used.
- .PP
- The default value is \f[C]LTS\f[R].
--For more information on .NET support channels, see the .NET Support Policy page.
-+For more information on .NET support channels, see the .NET Support Policy (https://dotnet.microsoft.com/platform/support/policy/dotnet-core) page.
- .RE
- .IP \[bu] 2
--\f[B]\f[CB]-Version <VERSION>\f[B]\f[R]
-+\f[B]\f[CB]-DryRun|--dry-run\f[B]\f[R]
- .RS 2
- .PP
--Represents a specific build version.
--The possible values are:
--.IP \[bu] 2
--\f[C]latest\f[R] - Latest build on the channel (used with the \f[C]-Channel\f[R] option).
-+If set, the script won\[cq]t perform the installation.
-+Instead, it displays what command line to use to consistently install the currently requested version of the .NET CLI.
-+For example, if you specify version \f[C]latest\f[R], it displays a link with the specific version so that this command can be used deterministically in a build script.
-+It also displays the binary\[cq]s location if you prefer to install or download it yourself.
-+.RE
- .IP \[bu] 2
--\f[C]coherent\f[R] - Latest coherent build on the channel; uses the latest stable package combination (used with Branch name \f[C]-Channel\f[R] options).
-+\f[B]\f[CB]-FeedCredential|--feed-credential\f[B]\f[R]
-+.RS 2
-+.PP
-+Used as a query string to append to the Azure feed.
-+It allows changing the URL to use non-public blob storage accounts.
-+.RE
- .IP \[bu] 2
--Three-part version in X.Y.Z format representing a specific build version; supersedes the \f[C]-Channel\f[R] option.
--For example: \f[C]2.0.0-preview2-006120\f[R].
-+\f[B]\f[CB]--help\f[B]\f[R]
-+.RS 2
- .PP
--If not specified, \f[C]-Version\f[R] defaults to \f[C]latest\f[R].
-+Prints out help for the script.
-+Applies only to bash script.
-+For PowerShell, use \f[C]Get-Help ./dotnet-install.ps1\f[R].
- .RE
- .IP \[bu] 2
--\f[B]\f[CB]-InstallDir <DIRECTORY>\f[B]\f[R]
-+\f[B]\f[CB]-InstallDir|--install-dir <DIRECTORY>\f[B]\f[R]
- .RS 2
- .PP
- Specifies the installation path.
- The directory is created if it doesn\[cq]t exist.
--The default value is *%LocalAppData%.
-+The default value is \f[I]%LocalAppData%on Windows and \f[R]/usr/share/dotnet* on Linux/macOS.
- Binaries are placed directly in this directory.
- .RE
- .IP \[bu] 2
--\f[B]\f[CB]-Architecture <ARCHITECTURE>\f[B]\f[R]
-+\f[B]\f[CB]-JSonFile|--jsonfile <JSONFILE>\f[B]\f[R]
- .RS 2
- .PP
--Architecture of the .NET Core binaries to install.
--Possible values are \f[C]<auto>\f[R], \f[C]amd64\f[R], \f[C]x64\f[R], \f[C]x86\f[R], \f[C]arm64\f[R], and \f[C]arm\f[R].
--The default value is \f[C]<auto>\f[R], which represents the currently running OS architecture.
-+Specifies a path to a global.json file that will be used to determine the SDK version.
-+The \f[I]global.json\f[R] file must have a value for \f[C]sdk:version\f[R].
- .RE
- .IP \[bu] 2
--\f[B]\f[CB]-SharedRuntime\f[B]\f[R]
-+\f[B]\f[CB]-NoCdn|--no-cdn\f[B]\f[R]
- .RS 2
--.RS
- .PP
--[!NOTE] This parameter is obsolete and may be removed in a future version of the script.
--The recommended alternative is the \f[C]Runtime\f[R] option.
--.RE
--.PP
--Installs just the shared runtime bits, not the entire SDK.
--This is equivalent to specifying \f[C]-Runtime dotnet\f[R].
-+Disables downloading from the Azure Content Delivery Network (CDN) and uses the uncached feed directly.
- .RE
- .IP \[bu] 2
--\f[B]\f[CB]-Runtime <RUNTIME>\f[B]\f[R]
-+\f[B]\f[CB]-NoPath|--no-path\f[B]\f[R]
- .RS 2
- .PP
--Installs just the shared runtime, not the entire SDK.
--The possible values are:
--.IP \[bu] 2
--\f[C]dotnet\f[R] - the \f[C]Microsoft.NETCore.App\f[R] shared runtime.
--.IP \[bu] 2
--\f[C]aspnetcore\f[R] - the \f[C]Microsoft.AspNetCore.App\f[R] shared runtime.
-+If set, the installation folder isn\[cq]t exported to the path for the current session.
-+By default, the script modifies the PATH, which makes the .NET CLI available immediately after install.
- .RE
- .IP \[bu] 2
--\f[B]\f[CB]-DryRun\f[B]\f[R]
-+\f[B]\f[CB]-ProxyAddress\f[B]\f[R]
- .RS 2
- .PP
--If set, the script won\[cq]t perform the installation.
--Instead, it displays what command line to use to consistently install the currently requested version of the .NET Core CLI.
--For example, if you specify version \f[C]latest\f[R], it displays a link with the specific version so that this command can be used deterministically in a build script.
--It also displays the binary\[cq]s location if you prefer to install or download it yourself.
-+If set, the installer uses the proxy when making web requests.
-+(Only valid for Windows.)
- .RE
- .IP \[bu] 2
--\f[B]\f[CB]-NoPath\f[B]\f[R]
-+\f[B]\f[CB]-ProxyBypassList <LIST_OF_URLS>\f[B]\f[R]
- .RS 2
- .PP
--If set, the installation folder isn\[cq]t exported to the path for the current session.
--By default, the script modifies the PATH, which makes the CLI tools available immediately after install.
-+If set with \f[C]ProxyAddress\f[R], provides a list of comma-separated urls that will bypass the proxy.
-+(Only valid for Windows.)
- .RE
- .IP \[bu] 2
--\f[B]\f[CB]-Verbose\f[B]\f[R]
-+\f[B]\f[CB]ProxyUseDefaultCredentials\f[B]\f[R]
- .RS 2
- .PP
--Displays diagnostics information.
-+If set, the installer uses the credentials of the current user when using proxy address.
-+(Only valid for Windows.)
- .RE
- .IP \[bu] 2
--\f[B]\f[CB]-AzureFeed\f[B]\f[R]
-+\f[B]\f[CB]-Quality|--quality <QUALITY>\f[B]\f[R]
- .RS 2
- .PP
--Specifies the URL for the Azure feed to the installer.
--We recommended that you don\[cq]t change this value.
--The default value is \f[C]https://dotnetcli.azureedge.net/dotnet\f[R].
-+Downloads the latest build of the specified quality in the channel.
-+The possible values are: \f[C]daily\f[R], \f[C]signed\f[R], \f[C]validated\f[R], \f[C]preview\f[R], \f[C]GA\f[R].
-+Works only in combination with \f[C]channel\f[R].
-+Not applicable for current and LTS channels and will be ignored if one of those channels is used.
-+.PP
-+For an SDK installation, use \f[C]channel\f[R] in \f[C]A.B\f[R] or \f[C]A.B.Cxx\f[R] format.
-+For a runtime installation, use \f[C]channel\f[R] in \f[C]A.B\f[R] format.
-+.PP
-+The \f[C]version\f[R] parameter overrides the \f[C]channel\f[R] and \f[C]quality\f[R] parameters when any \f[C]version\f[R] other than \f[C]latest\f[R] is used.
-+.PP
-+Available since since the 5.0 release.
- .RE
- .IP \[bu] 2
--\f[B]\f[CB]-UncachedFeed\f[B]\f[R]
-+\f[B]\f[CB]-Runtime|--runtime <RUNTIME>\f[B]\f[R]
- .RS 2
- .PP
--Allows changing the URL for the uncached feed used by this installer.
--We recommended that you don\[cq]t change this value.
-+Installs just the shared runtime, not the entire SDK.
-+The possible values are:
-+.IP \[bu] 2
-+\f[C]dotnet\f[R] - the \f[C]Microsoft.NETCore.App\f[R] shared runtime.
-+.IP \[bu] 2
-+\f[C]aspnetcore\f[R] - the \f[C]Microsoft.AspNetCore.App\f[R] shared runtime.
-+.IP \[bu] 2
-+\f[C]windowsdesktop\f[R] - the \f[C]Microsoft.WindowsDesktop.App\f[R] shared runtime.
- .RE
- .IP \[bu] 2
--\f[B]\f[CB]-NoCdn\f[B]\f[R]
-+\f[B]\f[CB]--runtime-id <RID>\f[B] [Deprecated]\f[R]
- .RS 2
- .PP
--Disables downloading from the Azure Content Delivery Network (CDN) and uses the uncached feed directly.
-+Specifies the runtime identifier for which the tools are being installed.
-+Use \f[C]linux-x64\f[R] for portable Linux.
-+(Only valid for Linux/macOS and for versions earlier than .NET Core 2.1.)
-+.PP
-+\f[B]\f[CB]--os <OPERATING_SYSTEM>\f[B]\f[R]
-+.PP
-+Specifies the operating system for which the tools are being installed.
-+Possible values are: \f[C]osx\f[R], \f[C]linux\f[R], \f[C]linux-musl\f[R], \f[C]freebsd\f[R], \f[C]rhel.6\f[R].
-+(Valid for .NET Core 2.1 and later.)
-+.PP
-+The parameter is optional and should only be used when it\[cq]s required to override the operating system that is detected by the script.
- .RE
- .IP \[bu] 2
--\f[B]\f[CB]-FeedCredential\f[B]\f[R]
-+\f[B]\f[CB]-SharedRuntime|--shared-runtime\f[B]\f[R]
- .RS 2
-+.RS
- .PP
--Used as a query string to append to the Azure feed.
--It allows changing the URL to use non-public blob storage accounts.
-+[!NOTE] This parameter is obsolete and may be removed in a future version of the script.
-+The recommended alternative is the \f[C]-Runtime|--runtime\f[R] option.
-+.RE
-+.PP
-+Installs just the shared runtime bits, not the entire SDK.
-+This option is equivalent to specifying \f[C]-Runtime|--runtime dotnet\f[R].
- .RE
- .IP \[bu] 2
--\f[B]\f[CB]-ProxyAddress\f[B]\f[R]
-+\f[B]\f[CB]-SkipNonVersionedFiles|--skip-non-versioned-files\f[B]\f[R]
- .RS 2
- .PP
--If set, the installer uses the proxy when making web requests.
--(Only valid for Windows)
-+Skips installing non-versioned files, such as \f[I]dotnet.exe\f[R], if they already exist.
- .RE
- .IP \[bu] 2
--\f[B]\f[CB]ProxyUseDefaultCredentials\f[B]\f[R]
-+\f[B]\f[CB]-UncachedFeed|--uncached-feed\f[B]\f[R]
- .RS 2
- .PP
--If set, the installer uses the credentials of the current user when using proxy address.
--(Only valid for Windows)
-+Allows changing the URL for the uncached feed used by this installer.
-+We recommended that you don\[cq]t change this value.
- .RE
- .IP \[bu] 2
--\f[B]\f[CB]-SkipNonVersionedFiles\f[B]\f[R]
-+\f[B]\f[CB]-Verbose|--verbose\f[B]\f[R]
- .RS 2
- .PP
--Skips installing non-versioned files, such as \f[I]dotnet.exe\f[R], if they already exist.
-+Displays diagnostics information.
- .RE
- .IP \[bu] 2
--\f[B]\f[CB]-Help\f[B]\f[R]
-+\f[B]\f[CB]-Version|--version <VERSION>\f[B]\f[R]
- .RS 2
- .PP
--Prints out help for the script.
-+Represents a specific build version.
-+The possible values are:
-+.IP \[bu] 2
-+\f[C]latest\f[R] - Latest build on the channel (used with the \f[C]-Channel\f[R] option).
-+.IP \[bu] 2
-+Three-part version in X.Y.Z format representing a specific build version; supersedes the \f[C]-Channel\f[R] option.
-+For example: \f[C]2.0.0-preview2-006120\f[R].
-+.PP
-+If not specified, \f[C]-Version\f[R] defaults to \f[C]latest\f[R].
- .RE
- .SH EXAMPLES
- .IP \[bu] 2
-@@ -217,14 +325,14 @@ macOS/Linux:
- .fi
- .RE
- .IP \[bu] 2
--Install the latest version from 2.0 channel to the specified location:
-+Install the latest preview version of the 6.0.1xx SDK to the specified location:
- .RS 2
- .PP
- Windows:
- .IP
- .nf
- \f[C]
--\&./dotnet-install.ps1 -Channel 2.0 -InstallDir C:\[rs]cli
-+\&./dotnet-install.ps1 -Channel 6.0.1xx -Quality preview -InstallDir C:\[rs]cli
- \f[R]
- .fi
- .PP
-@@ -232,19 +340,19 @@ macOS/Linux:
- .IP
- .nf
- \f[C]
--\&./dotnet-install.sh --channel 2.0 --install-dir \[ti]/cli
-+\&./dotnet-install.sh --channel 6.0.1xx --quality preview --install-dir \[ti]/cli
- \f[R]
- .fi
- .RE
- .IP \[bu] 2
--Install the 1.1.0 version of the shared runtime:
-+Install the 3.0.0 version of the shared runtime:
- .RS 2
- .PP
- Windows:
- .IP
- .nf
- \f[C]
--\&./dotnet-install.ps1 -Runtime dotnet -Version 1.1.0
-+\&./dotnet-install.ps1 -Runtime dotnet -Version 3.0.0
- \f[R]
- .fi
- .PP
-@@ -252,7 +360,7 @@ macOS/Linux:
- .IP
- .nf
- \f[C]
--\&./dotnet-install.sh --runtime dotnet --version 1.1.0
-+\&./dotnet-install.sh --runtime dotnet --version 3.0.0
- \f[R]
- .fi
- .RE
-@@ -268,14 +376,15 @@ Invoke-WebRequest \[aq]https://dot.net/v1/dotnet-install.ps1\[aq] -Proxy $env:HT
- .fi
- .RE
- .IP \[bu] 2
--Obtain script and install .NET Core CLI one-liner examples:
-+Obtain script and install .NET CLI one-liner examples:
- .RS 2
- .PP
- Windows:
- .IP
- .nf
- \f[C]
--\[at]powershell -NoProfile -ExecutionPolicy unrestricted -Command \[dq][Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; &([scriptblock]::Create((Invoke-WebRequest -UseBasicParsing \[aq]https://dot.net/v1/dotnet-install.ps1\[aq]))) <additional install-script args>\[dq]
-+# Run a separate PowerShell process because the script calls exit, so it will end the current PowerShell session.
-+&powershell -NoProfile -ExecutionPolicy unrestricted -Command \[dq][Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; &([scriptblock]::Create((Invoke-WebRequest -UseBasicParsing \[aq]https://dot.net/v1/dotnet-install.ps1\[aq]))) <additional install-script args>\[dq]
- \f[R]
- .fi
- .PP
-@@ -289,6 +398,6 @@ curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin <additional ins
- .RE
- .SS See also
- .IP \[bu] 2
--\&.NET Core releases
-+\&.NET releases (https://github.com/dotnet/core/releases)
- .IP \[bu] 2
--\&.NET Core Runtime and SDK download archive
-+\&.NET Runtime and SDK download archive (https://github.com/dotnet/core/tree/main/release-notes/download-archives)
-diff --git a/documentation/manpages/sdk/dotnet-list-package.1 b/documentation/manpages/sdk/dotnet-list-package.1
-index 6adfe6e581..5bd48b770e 100644
---- a/documentation/manpages/sdk/dotnet-list-package.1
-+++ b/documentation/manpages/sdk/dotnet-list-package.1
-@@ -1,9 +1,10 @@
--.\" Automatically generated by Pandoc 2.7.2
-+.\" Automatically generated by Pandoc 2.14.1
- .\"
--.TH "dotnet list package command" "1" "" "" ".NET Core"
-+.TH "" "1" "" "" ".NET"
- .hy
- .SH dotnet list package
- .PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.2 SDK and later versions
- .SH NAME
- .PP
- \f[C]dotnet list package\f[R] - Lists the package references for a project or solution.
-@@ -11,23 +12,28 @@
- .IP
- .nf
- \f[C]
--dotnet list [<PROJECT>|<SOLUTION>] package [--config] [--framework] [--highest-minor] [--highest-patch]
-- [--include-prerelease] [--include-transitive] [--interactive] [--outdated] [--source]
--dotnet list package [-h|--help]
-+dotnet list [<PROJECT>|<SOLUTION>] package [--config <SOURCE>]
-+ [--deprecated]
-+ [--framework <FRAMEWORK>] [--highest-minor] [--highest-patch]
-+ [--include-prerelease] [--include-transitive] [--interactive]
-+ [--outdated] [--source <SOURCE>] [-v|--verbosity <LEVEL>]
-+ [--vulnerable]
-+
-+dotnet list package -h|--help
- \f[R]
- .fi
- .SH DESCRIPTION
- .PP
- The \f[C]dotnet list package\f[R] command provides a convenient option to list all NuGet package references for a specific project or a solution.
- You first need to build the project in order to have the assets needed for this command to process.
--The following example shows the output of the \f[C]dotnet list package\f[R] command for the SentimentAnalysis project:
-+The following example shows the output of the \f[C]dotnet list package\f[R] command for the SentimentAnalysis (https://github.com/dotnet/samples/tree/main/machine-learning/tutorials/Se...) project:
- .IP
- .nf
- \f[C]
- Project \[aq]SentimentAnalysis\[aq] has the following package references
- [netcoreapp2.1]:
- Top-level Package Requested Resolved
-- > Microsoft.ML 0.11.0 0.11.0
-+ > Microsoft.ML 1.4.0 1.4.0
- > Microsoft.NETCore.App (A) [2.1.0, ) 2.1.0
-
- (A) : Auto-referenced package.
-@@ -36,7 +42,7 @@ Project \[aq]SentimentAnalysis\[aq] has the following package references
- .PP
- The \f[B]Requested\f[R] column refers to the package version specified in the project file and can be a range.
- The \f[B]Resolved\f[R] column lists the version that the project is currently using and is always a single value.
--The packages displaying an \f[C](A)\f[R] right next to their names represent implicit package references that are inferred from your project settings (\f[C]Sdk\f[R] type, \f[C]<TargetFramework>\f[R] or \f[C]<TargetFrameworks>\f[R] property, etc.)
-+The packages displaying an \f[C](A)\f[R] right next to their names represent implicit package references that are inferred from your project settings (\f[C]Sdk\f[R] type, or \f[C]<TargetFramework>\f[R] or \f[C]<TargetFrameworks>\f[R] property).
- .PP
- Use the \f[C]--outdated\f[R] option to find out if there are newer versions available of the packages you\[cq]re using in your projects.
- By default, \f[C]--outdated\f[R] lists the latest stable packages unless the resolved version is also a prerelease version.
-@@ -47,31 +53,25 @@ The following examples shows the output of the \f[C]dotnet list package --outdat
- \f[C]
- The following sources were used:
- https://api.nuget.org/v3/index.json
-+ C:\[rs]Program Files (x86)\[rs]Microsoft SDKs\[rs]NuGetPackages\[rs]
-
- Project \[ga]SentimentAnalysis\[ga] has the following updates to its packages
- [netcoreapp2.1]:
- Top-level Package Requested Resolved Latest
-- > Microsoft.ML 0.11.0 0.11.0 1.0.0-preview
-+ > Microsoft.ML 1.4.0 1.4.0 1.5.0-preview
- \f[R]
- .fi
- .PP
- If you need to find out whether your project has transitive dependencies, use the \f[C]--include-transitive\f[R] option.
- Transitive dependencies occur when you add a package to your project that in turn relies on another package.
--The following example shows the output from running the \f[C]dotnet list package --include-transitive\f[R] command for the HelloPlugin project, which displays top-level packages and the packages they depend on:
-+The following example shows the output from running the \f[C]dotnet list package --include-transitive\f[R] command for the HelloPlugin (https://github.com/dotnet/samples/tree/main/core/extensions/AppWithPlugin...) project, which displays top-level packages and the packages they depend on:
- .IP
- .nf
- \f[C]
- Project \[aq]HelloPlugin\[aq] has the following package references
- [netcoreapp3.0]:
-- Top-level Package Requested Resolved
-- > Microsoft.NETCore.Platforms (A) [3.0.0-preview3.19128.7, ) 3.0.0-preview3.19128.7
-- > Microsoft.WindowsDesktop.App (A) [3.0.0-preview3-27504-2, ) 3.0.0-preview3-27504-2
--
-- Transitive Package Resolved
-- > Microsoft.NETCore.Targets 2.0.0
-- > PluginBase 1.0.0
--
--(A) : Auto-referenced package.
-+ Transitive Package Resolved
-+ > PluginBase 1.0.0
- \f[R]
- .fi
- .SS Arguments
-@@ -90,6 +90,12 @@ The NuGet sources to use when searching for newer packages.
- Requires the \f[C]--outdated\f[R] option.
- .RE
- .IP \[bu] 2
-+\f[B]\f[CB]--deprecated\f[B]\f[R]
-+.RS 2
-+.PP
-+Displays packages that have been deprecated.
-+.RE
-+.IP \[bu] 2
- \f[B]\f[CB]--framework <FRAMEWORK>\f[B]\f[R]
- .RS 2
- .PP
-@@ -98,31 +104,31 @@ To specify multiple frameworks, repeat the option multiple times.
- For example: \f[C]--framework netcoreapp2.2 --framework netstandard2.0\f[R].
- .RE
- .IP \[bu] 2
--\f[B]\f[CB]-h|--help\f[B]\f[R]
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
- .RS 2
- .PP
--Prints out a short help for the command.
-+Prints out a description of how to use the command.
- .RE
- .IP \[bu] 2
- \f[B]\f[CB]--highest-minor\f[B]\f[R]
- .RS 2
- .PP
- Considers only the packages with a matching major version number when searching for newer packages.
--Requires the \f[C]--outdated\f[R] option.
-+Requires the \f[C]--outdated\f[R] or \f[C]--deprecated\f[R] option.
- .RE
- .IP \[bu] 2
- \f[B]\f[CB]--highest-patch\f[B]\f[R]
- .RS 2
- .PP
- Considers only the packages with a matching major and minor version numbers when searching for newer packages.
--Requires the \f[C]--outdated\f[R] option.
-+Requires the \f[C]--outdated\f[R] or \f[C]--deprecated\f[R] option.
- .RE
- .IP \[bu] 2
- \f[B]\f[CB]--include-prerelease\f[B]\f[R]
- .RS 2
- .PP
- Considers packages with prerelease versions when searching for newer packages.
--Requires the \f[C]--outdated\f[R] option.
-+Requires the \f[C]--outdated\f[R] or \f[C]--deprecated\f[R] option.
- .RE
- .IP \[bu] 2
- \f[B]\f[CB]--include-transitive\f[B]\f[R]
-@@ -150,7 +156,23 @@ Lists packages that have newer versions available.
- .RS 2
- .PP
- The NuGet sources to use when searching for newer packages.
--Requires the \f[C]--outdated\f[R] option.
-+Requires the \f[C]--outdated\f[R] or \f[C]--deprecated\f[R] option.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
-+.RS 2
-+.PP
-+Sets the verbosity level of the command.
-+Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
-+The default is \f[C]minimal\f[R].
-+For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--vulnerable\f[B]\f[R]
-+.RS 2
-+.PP
-+Lists packages that have known vulnerabilities.
-+Cannot be combined with \f[C]--deprecated\f[R] or \f[C]--outdated\f[R] options.
- .RE
- .SH EXAMPLES
- .IP \[bu] 2
-diff --git a/documentation/manpages/sdk/dotnet-list-reference.1 b/documentation/manpages/sdk/dotnet-list-reference.1
-index 61056a5c0e..ef42860081 100644
---- a/documentation/manpages/sdk/dotnet-list-reference.1
-+++ b/documentation/manpages/sdk/dotnet-list-reference.1
-@@ -1,33 +1,39 @@
--.\" Automatically generated by Pandoc 2.7.2
-+.\" Automatically generated by Pandoc 2.14.1
- .\"
--.TH "dotnet list reference command" "1" "" "" ".NET Core"
-+.TH "" "1" "" "" ".NET"
- .hy
- .SH dotnet list reference
- .PP
--\f[B]This topic applies to: \[OK]\f[R] .NET Core 1.x SDK and later versions
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.x SDK and later versions
- .SH NAME
- .PP
- \f[C]dotnet list reference\f[R] - Lists project-to-project references.
- .SH SYNOPSIS
--.PP
--\f[C]dotnet list [<PROJECT>|<SOLUTION>] reference [-h|--help]\f[R]
-+.IP
-+.nf
-+\f[C]
-+dotnet list [<PROJECT>] reference
-+
-+dotnet list -h|--help
-+\f[R]
-+.fi
- .SH DESCRIPTION
- .PP
--The \f[C]dotnet list reference\f[R] command provides a convenient option to list project references for a given project or solution.
-+The \f[C]dotnet list reference\f[R] command provides a convenient option to list project references for a given project.
- .SS Arguments
- .IP \[bu] 2
--\f[B]\f[CB]PROJECT | SOLUTION\f[B]\f[R]
-+\f[B]\f[CB]PROJECT\f[B]\f[R]
- .RS 2
- .PP
--Specifies the project or solution file to use for listing references.
--If not specified, the command searches the current directory for a project file.
-+The project file to operate on.
-+If a file is not specified, the command will search the current directory for one.
- .RE
- .SH OPTIONS
- .IP \[bu] 2
--\f[B]\f[CB]-h|--help\f[B]\f[R]
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
- .RS 2
- .PP
--Prints out a short help for the command.
-+Prints out a description of how to use the command.
- .RE
- .SH EXAMPLES
- .IP \[bu] 2
-diff --git a/documentation/manpages/sdk/dotnet-migrate.1 b/documentation/manpages/sdk/dotnet-migrate.1
-index a6895ff5a0..453d640ba2 100644
---- a/documentation/manpages/sdk/dotnet-migrate.1
-+++ b/documentation/manpages/sdk/dotnet-migrate.1
-@@ -1,10 +1,10 @@
--.\" Automatically generated by Pandoc 2.7.2
-+.\" Automatically generated by Pandoc 2.14.1
- .\"
--.TH "dotnet migrate command" "1" "" "" ".NET Core"
-+.TH "" "1" "" "" ".NET"
- .hy
- .SH dotnet migrate
- .PP
--\f[B]This article applies to: \[OK]\f[R] .NET Core 1.x SDK \f[B]\[OK]\f[R] .NET Core 2.x SDK
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.x SDK
- .SH NAME
- .PP
- \f[C]dotnet migrate\f[R] - Migrates a Preview 2 .NET Core project to a .NET Core SDK-style project.
-@@ -12,16 +12,22 @@
- .IP
- .nf
- \f[C]
--dotnet migrate [<SOLUTION_FILE|PROJECT_DIR>] [--format-report-file-json] [-r|--report-file] [-s|--skip-project-references] [--skip-backup] [-t|--template-file] [-v|--sdk-package-version] [-x|--xproj-file]
--dotnet migrate [-h|--help]
-+dotnet migrate [<SOLUTION_FILE|PROJECT_DIR>] [--format-report-file-json <REPORT_FILE>]
-+ [-r|--report-file <REPORT_FILE>] [-s|--skip-project-references [Debug|Release]]
-+ [--skip-backup] [-t|--template-file <TEMPLATE_FILE>] [-v|--sdk-package-version]
-+ [-x|--xproj-file]
-+
-+dotnet migrate -h|--help
- \f[R]
- .fi
- .SH DESCRIPTION
- .PP
--The \f[C]dotnet migrate\f[R] command migrates a valid Preview 2 \f[I]project.json\f[R]-based project to a valid .NET Core SDK-style \f[I]csproj\f[R] project.
-+This command is deprecated.
-+The \f[C]dotnet migrate\f[R] command is no longer available starting with .NET Core 3.0 SDK.
-+It can only migrate a Preview 2 .NET Core project to a 1.x .NET Core project, which is out of support.
- .PP
- By default, the command migrates the root project and any project references that the root project contains.
--This behavior is disabled using the \f[C]--skip-project-references\f[R] option at runtime.
-+This behavior is disabled using the \f[C]--skip-project-references\f[R] option at run time.
- .PP
- Migration can be performed on the following assets:
- .IP \[bu] 2
-@@ -42,8 +48,6 @@ If you use the \f[C]--report-file <REPORT_FILE>\f[R] option, the output is saved
- The \f[C]dotnet migrate\f[R] command only supports valid Preview 2 \f[I]project.json\f[R]-based projects.
- This means that you cannot use it to migrate DNX or Preview 1 \f[I]project.json\f[R]-based projects directly to MSBuild/csproj projects.
- You first need to manually migrate the project to a Preview 2 \f[I]project.json\f[R]-based project and then use the \f[C]dotnet migrate\f[R] command to migrate the project.
--.PP
--The \f[C]dotnet migrate\f[R] command is no longer available starting with .NET Core 3.0 SDK.
- .SS Arguments
- .PP
- \f[C]PROJECT_JSON/GLOBAL_JSON/SOLUTION_FILE/PROJECT_DIR\f[R]
-diff --git a/documentation/manpages/sdk/dotnet-msbuild.1 b/documentation/manpages/sdk/dotnet-msbuild.1
-index a1aaf28852..63a60651c5 100644
---- a/documentation/manpages/sdk/dotnet-msbuild.1
-+++ b/documentation/manpages/sdk/dotnet-msbuild.1
-@@ -1,26 +1,33 @@
--.\" Automatically generated by Pandoc 2.7.2
-+.\" Automatically generated by Pandoc 2.14.1
- .\"
--.TH "dotnet msbuild command" "1" "" "" ".NET Core"
-+.TH "" "1" "" "" ".NET"
- .hy
- .SH dotnet msbuild
- .PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.x SDK and later versions
- .SH NAME
- .PP
- \f[C]dotnet msbuild\f[R] - Builds a project and all of its dependencies.
-+Note: A solution or project file may need to be specified if there are multiple.
- .SH SYNOPSIS
--.PP
--\f[C]dotnet msbuild <msbuild_arguments> [-h]\f[R]
-+.IP
-+.nf
-+\f[C]
-+dotnet msbuild <MSBUILD_ARGUMENTS>
-+
-+dotnet msbuild -h
-+\f[R]
-+.fi
- .SH DESCRIPTION
- .PP
- The \f[C]dotnet msbuild\f[R] command allows access to a fully functional MSBuild.
- .PP
--The command has the exact same capabilities as the existing MSBuild command-line client for SDK-style project only.
-+The command has the exact same capabilities as the existing MSBuild command-line client for SDK-style projects only.
- The options are all the same.
--For more information about the available options, see the MSBuild Command-Line Reference.
-+For more information about the available options, see the MSBuild command-line reference.
- .PP
--The dotnet build command is equivalent to \f[C]dotnet msbuild -restore -target:Build\f[R].
--\f[C]dotnet build\f[R] is more commonly used for building projects, but \f[C]dotnet msbuild\f[R] gives you more control.
--For example, if you have a specific target you want to run (without running the build target), you probably want to use \f[C]dotnet msbuild\f[R].
-+The dotnet build command is equivalent to \f[C]dotnet msbuild -restore\f[R].
-+When you don\[cq]t want to build the project and you have a specific target you want to run, use \f[C]dotnet build\f[R] or \f[C]dotnet msbuild\f[R] and specify the target.
- .SH EXAMPLES
- .IP \[bu] 2
- Build a project and its dependencies:
-@@ -38,7 +45,7 @@ Build a project and its dependencies using Release configuration:
- .IP
- .nf
- \f[C]
--dotnet msbuild -p:Configuration=Release
-+dotnet msbuild -property:Configuration=Release
- \f[R]
- .fi
- .RE
-@@ -48,7 +55,7 @@ Run the publish target and publish for the \f[C]osx.10.11-x64\f[R] RID:
- .IP
- .nf
- \f[C]
--dotnet msbuild -t:Publish -p:RuntimeIdentifiers=osx.10.11-x64
-+dotnet msbuild -target:Publish -property:RuntimeIdentifiers=osx.10.11-x64
- \f[R]
- .fi
- .RE
-@@ -58,7 +65,8 @@ See the whole project with all targets included by the SDK:
- .IP
- .nf
- \f[C]
--dotnet msbuild -pp
-+dotnet msbuild -preprocess
-+dotnet msbuild -preprocess:<fileName>.xml
- \f[R]
- .fi
- .RE
-diff --git a/documentation/manpages/sdk/dotnet-new-install.1 b/documentation/manpages/sdk/dotnet-new-install.1
-new file mode 100644
-index 0000000000..635fcb8afc
---- /dev/null
-+++ b/documentation/manpages/sdk/dotnet-new-install.1
-@@ -0,0 +1,85 @@
-+.\" Automatically generated by Pandoc 2.14.1
-+.\"
-+.TH "" "1" "" "" ".NET"
-+.hy
-+.SH dotnet new \[en]install option
-+.PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.0 SDK and later versions
-+.SH NAME
-+.PP
-+\f[C]dotnet new --install\f[R] - installs a template package.
-+.SH SYNOPSIS
-+.IP
-+.nf
-+\f[C]
-+dotnet new --install <PATH|NUGET_ID> [--interactive] [--nuget-source <SOURCE>]
-+\f[R]
-+.fi
-+.SH DESCRIPTION
-+.PP
-+The \f[C]dotnet new --install\f[R] command installs a template package from the \f[C]PATH\f[R] or \f[C]NUGET_ID\f[R] provided.
-+If you want to install a prerelease version of a template package, specify the version in the format \f[C]<package-name>::<package-version>\f[R].
-+By default, \f[C]dotnet new\f[R] passes * for the version, which represents the latest stable package version.
-+For more information, see the Examples section.
-+.PP
-+If a version of the template was already installed when you run this command, the template will be updated to the specified version, or to the latest stable version if no version was specified.
-+For information on creating custom templates, see Custom templates for dotnet new.
-+.SH OPTIONS
-+.IP \[bu] 2
-+\f[B]\f[CB]--interactive\f[B]\f[R]
-+.RS 2
-+.PP
-+Allows the command to stop and wait for user input or action.
-+For example, to complete authentication.
-+Available since .NET 5.0 SDK.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--nuget-source <SOURCE>\f[B]\f[R]
-+.RS 2
-+.PP
-+By default, \f[C]dotnet new --install\f[R] uses the hierarchy of NuGet configuration files from the current directory to determine the NuGet source the package can be installed from.
-+If \f[C]--nuget-source\f[R] is specified, the source will be added to the list of sources to be checked.
-+.PD 0
-+.P
-+.PD
-+To check the configured sources for the current directory use \f[C]dotnet nuget list source\f[R].
-+For more information, see Common NuGet Configurations
-+.RE
-+.SH EXAMPLES
-+.IP \[bu] 2
-+Install the latest version of SPA templates for ASP.NET Core:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet new --install Microsoft.DotNet.Web.Spa.ProjectTemplates
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Install version 2.0 of the SPA templates for ASP.NET Core:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet new --install Microsoft.DotNet.Web.Spa.ProjectTemplates::2.0.0
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Install version 2.0 of the SPA templates for ASP.NET Core from a custom NuGet source using interactive mode:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet new --install Microsoft.DotNet.Web.Spa.ProjectTemplates::2.0.0 --nuget-source \[dq]https://api.my-custom-nuget.com/v3/index.json\[dq] --interactive
-+\f[R]
-+.fi
-+.RE
-+.SS See also
-+.IP \[bu] 2
-+dotnet new command
-+.IP \[bu] 2
-+dotnet new \[en]search option
-+.IP \[bu] 2
-+Custom templates for dotnet new
-diff --git a/documentation/manpages/sdk/dotnet-new-list.1 b/documentation/manpages/sdk/dotnet-new-list.1
-new file mode 100644
-index 0000000000..e0bf9d3ab0
---- /dev/null
-+++ b/documentation/manpages/sdk/dotnet-new-list.1
-@@ -0,0 +1,164 @@
-+.\" Automatically generated by Pandoc 2.14.1
-+.\"
-+.TH "" "1" "" "" ".NET"
-+.hy
-+.SH dotnet new \[en]list option
-+.PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.0 SDK and later versions
-+.SH NAME
-+.PP
-+\f[C]dotnet new --list\f[R] - Lists available templates to be run using \f[C]dotnet new\f[R].
-+.SH SYNOPSIS
-+.IP
-+.nf
-+\f[C]
-+dotnet new [<TEMPLATE_NAME>] -l|--list [--author <AUTHOR>] [-lang|--language {\[dq]C#\[dq]|\[dq]F#\[dq]|VB}]
-+ [--tag <TAG>] [--type <TYPE>] [--columns <COLUMNS>] [--columns-all]
-+\f[R]
-+.fi
-+.SH DESCRIPTION
-+.PP
-+The \f[C]dotnet new --list\f[R] option lists available templates to use with \f[C]dotnet new\f[R].
-+If the is specified, lists templates containing the specified name.
-+This option lists only default and installed templates.
-+To find templates in NuGet that you can install locally, use the \f[C]--search\f[R] option.
-+.SS Arguments
-+.IP \[bu] 2
-+\f[B]\f[CB]TEMPLATE_NAME\f[B]\f[R]
-+.RS 2
-+.PP
-+If the argument is specified, only the templates containing \f[C]<TEMPLATE_NAME>\f[R] in template name or short name will be shown.
-+.RE
-+.SH OPTIONS
-+.IP \[bu] 2
-+\f[B]\f[CB]--author <AUTHOR>\f[B]\f[R]
-+.RS 2
-+.PP
-+Filters templates based on template author.
-+Partial match is supported.
-+Available since .NET Core 5.0.300 SDK.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--columns <COLUMNS>\f[B]\f[R]
-+.RS 2
-+.PP
-+Comma-separated list of columns to display in the output.
-+The supported columns are:
-+.IP \[bu] 2
-+\f[C]language\f[R] - A comma-separated list of languages supported by the template.
-+.IP \[bu] 2
-+\f[C]tags\f[R] - The list of template tags.
-+.IP \[bu] 2
-+\f[C]author\f[R] - The template author.
-+.IP \[bu] 2
-+\f[C]type\f[R] - The template type: project or item.
-+.PP
-+The template name and short name are always shown.
-+The default list of columns is template name, short name, language, and tags.
-+This list is equivalent to specifying \f[C]--columns=language,tags\f[R].
-+Available since .NET Core 5.0.300 SDK.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--columns-all\f[B]\f[R]
-+.RS 2
-+.PP
-+Displays all columns in the output.
-+Available since .NET Core 5.0.300 SDK.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-lang|--language {C#|F#|VB}\f[B]\f[R]
-+.RS 2
-+.PP
-+Filters templates based on language supported by the template.
-+The language accepted varies by the template.
-+Not valid for some templates.
-+.RS
-+.PP
-+[!NOTE] Some shells interpret \f[C]#\f[R] as a special character.
-+In those cases, enclose the language parameter value in quotes.
-+For example, \f[C]dotnet new --list --language \[dq]F#\[dq]\f[R].
-+.RE
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--tag <TAG>\f[B]\f[R]
-+.RS 2
-+.PP
-+Filters templates based on template tags.
-+To be selected, a template must have at least one tag that exactly matches the criteria.
-+Available since .NET Core 5.0.300 SDK.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--type <TYPE>\f[B]\f[R]
-+.RS 2
-+.PP
-+Filters templates based on template type.
-+Predefined values are \f[C]project\f[R] and \f[C]item\f[R].
-+.RE
-+.SH EXAMPLES
-+.IP \[bu] 2
-+List all templates
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet new --list
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+List all Single Page Application (SPA) templates:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet new spa --list
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+List all templates matching the \f[I]we\f[R] substring.
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet new we --list
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+List all templates matching the \f[I]we\f[R] substring that support the F# language.
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet new we --list --language \[dq]F#\[dq]
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+List all item templates.
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet new --list --type item
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+List all C# templates, showing the author and the type in the output.
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet new --list --language \[dq]C#\[dq] --columns \[dq]author,type\[dq]
-+\f[R]
-+.fi
-+.RE
-+.SS See also
-+.IP \[bu] 2
-+dotnet new command
-+.IP \[bu] 2
-+dotnet new \[en]search option
-+.IP \[bu] 2
-+Custom templates for dotnet new
-diff --git a/documentation/manpages/sdk/dotnet-new-sdk-templates.1 b/documentation/manpages/sdk/dotnet-new-sdk-templates.1
-new file mode 100644
-index 0000000000..a84c5bbf84
---- /dev/null
-+++ b/documentation/manpages/sdk/dotnet-new-sdk-templates.1
-@@ -0,0 +1,1603 @@
-+'\" t
-+.\" Automatically generated by Pandoc 2.14.1
-+.\"
-+.TH "" "1" "" "" ".NET"
-+.hy
-+.SH .NET default templates for dotnet new
-+.PP
-+When you install the .NET SDK (https://dotnet.microsoft.com/download), you receive over a dozen built-in templates for creating projects and files, including console apps, class libraries, unit test projects, ASP.NET Core apps (including Angular (https://angular.io/) and React (https://reactjs.org/) projects), and configuration files.
-+To list the built-in templates, run the \f[C]dotnet new\f[R] command with the \f[C]-l|--list\f[R] option:
-+.IP
-+.nf
-+\f[C]
-+dotnet new --list
-+\f[R]
-+.fi
-+.PP
-+The following table shows the templates that come pre-installed with the .NET SDK.
-+The default language for the template is shown inside the brackets.
-+Click on the short name link to see the specific template options.
-+.PP
-+.TS
-+tab(@);
-+l l l l l.
-+T{
-+Templates
-+T}@T{
-+Short name
-+T}@T{
-+Language
-+T}@T{
-+Tags
-+T}@T{
-+Introduced
-+T}
-+_
-+T{
-+Console Application
-+T}@T{
-+\f[C]console\f[R]
-+T}@T{
-+[C#], F#, VB
-+T}@T{
-+Common/Console
-+T}@T{
-+1.0
-+T}
-+T{
-+Class library
-+T}@T{
-+\f[C]classlib\f[R]
-+T}@T{
-+[C#], F#, VB
-+T}@T{
-+Common/Library
-+T}@T{
-+1.0
-+T}
-+T{
-+WPF Application
-+T}@T{
-+\f[C]wpf\f[R]
-+T}@T{
-+[C#], VB
-+T}@T{
-+Common/WPF
-+T}@T{
-+3.0 (5.0 for VB)
-+T}
-+T{
-+WPF Class library
-+T}@T{
-+\f[C]wpflib\f[R]
-+T}@T{
-+[C#], VB
-+T}@T{
-+Common/WPF
-+T}@T{
-+3.0 (5.0 for VB)
-+T}
-+T{
-+WPF Custom Control Library
-+T}@T{
-+\f[C]wpfcustomcontrollib\f[R]
-+T}@T{
-+[C#], VB
-+T}@T{
-+Common/WPF
-+T}@T{
-+3.0 (5.0 for VB)
-+T}
-+T{
-+WPF User Control Library
-+T}@T{
-+\f[C]wpfusercontrollib\f[R]
-+T}@T{
-+[C#], VB
-+T}@T{
-+Common/WPF
-+T}@T{
-+3.0 (5.0 for VB)
-+T}
-+T{
-+Windows Forms (WinForms) Application
-+T}@T{
-+\f[C]winforms\f[R]
-+T}@T{
-+[C#], VB
-+T}@T{
-+Common/WinForms
-+T}@T{
-+3.0 (5.0 for VB)
-+T}
-+T{
-+Windows Forms (WinForms) Class library
-+T}@T{
-+\f[C]winformslib\f[R]
-+T}@T{
-+[C#], VB
-+T}@T{
-+Common/WinForms
-+T}@T{
-+3.0 (5.0 for VB)
-+T}
-+T{
-+Worker Service
-+T}@T{
-+\f[C]worker\f[R]
-+T}@T{
-+[C#]
-+T}@T{
-+Common/Worker/Web
-+T}@T{
-+3.0
-+T}
-+T{
-+Unit Test Project
-+T}@T{
-+\f[C]mstest\f[R]
-+T}@T{
-+[C#], F#, VB
-+T}@T{
-+Test/MSTest
-+T}@T{
-+1.0
-+T}
-+T{
-+NUnit 3 Test Project
-+T}@T{
-+\f[C]nunit\f[R]
-+T}@T{
-+[C#], F#, VB
-+T}@T{
-+Test/NUnit
-+T}@T{
-+2.1.400
-+T}
-+T{
-+NUnit 3 Test Item
-+T}@T{
-+\f[C]nunit-test\f[R]
-+T}@T{
-+[C#], F#, VB
-+T}@T{
-+Test/NUnit
-+T}@T{
-+2.2
-+T}
-+T{
-+xUnit Test Project
-+T}@T{
-+\f[C]xunit\f[R]
-+T}@T{
-+[C#], F#, VB
-+T}@T{
-+Test/xUnit
-+T}@T{
-+1.0
-+T}
-+T{
-+Razor Component
-+T}@T{
-+\f[C]razorcomponent\f[R]
-+T}@T{
-+[C#]
-+T}@T{
-+Web/ASP.NET
-+T}@T{
-+3.0
-+T}
-+T{
-+Razor Page
-+T}@T{
-+\f[C]page\f[R]
-+T}@T{
-+[C#]
-+T}@T{
-+Web/ASP.NET
-+T}@T{
-+2.0
-+T}
-+T{
-+MVC ViewImports
-+T}@T{
-+\f[C]viewimports\f[R]
-+T}@T{
-+[C#]
-+T}@T{
-+Web/ASP.NET
-+T}@T{
-+2.0
-+T}
-+T{
-+MVC ViewStart
-+T}@T{
-+\f[C]viewstart\f[R]
-+T}@T{
-+[C#]
-+T}@T{
-+Web/ASP.NET
-+T}@T{
-+2.0
-+T}
-+T{
-+Blazor Server App
-+T}@T{
-+\f[C]blazorserver\f[R]
-+T}@T{
-+[C#]
-+T}@T{
-+Web/Blazor
-+T}@T{
-+3.0
-+T}
-+T{
-+Blazor WebAssembly App
-+T}@T{
-+\f[C]blazorwasm\f[R]
-+T}@T{
-+[C#]
-+T}@T{
-+Web/Blazor/WebAssembly
-+T}@T{
-+3.1.300
-+T}
-+T{
-+ASP.NET Core Empty
-+T}@T{
-+\f[C]web\f[R]
-+T}@T{
-+[C#], F#
-+T}@T{
-+Web/Empty
-+T}@T{
-+1.0
-+T}
-+T{
-+ASP.NET Core Web App (Model-View-Controller)
-+T}@T{
-+\f[C]mvc\f[R]
-+T}@T{
-+[C#], F#
-+T}@T{
-+Web/MVC
-+T}@T{
-+1.0
-+T}
-+T{
-+ASP.NET Core Web App
-+T}@T{
-+\f[C]webapp, razor\f[R]
-+T}@T{
-+[C#]
-+T}@T{
-+Web/MVC/Razor Pages
-+T}@T{
-+2.2, 2.0
-+T}
-+T{
-+ASP.NET Core with Angular
-+T}@T{
-+\f[C]angular\f[R]
-+T}@T{
-+[C#]
-+T}@T{
-+Web/MVC/SPA
-+T}@T{
-+2.0
-+T}
-+T{
-+ASP.NET Core with React.js
-+T}@T{
-+\f[C]react\f[R]
-+T}@T{
-+[C#]
-+T}@T{
-+Web/MVC/SPA
-+T}@T{
-+2.0
-+T}
-+T{
-+ASP.NET Core with React.js and Redux
-+T}@T{
-+\f[C]reactredux\f[R]
-+T}@T{
-+[C#]
-+T}@T{
-+Web/MVC/SPA
-+T}@T{
-+2.0
-+T}
-+T{
-+Razor Class Library
-+T}@T{
-+\f[C]razorclasslib\f[R]
-+T}@T{
-+[C#]
-+T}@T{
-+Web/Razor/Library/Razor Class Library
-+T}@T{
-+2.1
-+T}
-+T{
-+ASP.NET Core Web API
-+T}@T{
-+\f[C]webapi\f[R]
-+T}@T{
-+[C#], F#
-+T}@T{
-+Web/WebAPI
-+T}@T{
-+1.0
-+T}
-+T{
-+ASP.NET Core gRPC Service
-+T}@T{
-+\f[C]grpc\f[R]
-+T}@T{
-+[C#]
-+T}@T{
-+Web/gRPC
-+T}@T{
-+3.0
-+T}
-+T{
-+dotnet gitignore file
-+T}@T{
-+\f[C]gitignore\f[R]
-+T}@T{
-+T}@T{
-+Config
-+T}@T{
-+3.0
-+T}
-+T{
-+global.json file
-+T}@T{
-+\f[C]globaljson\f[R]
-+T}@T{
-+T}@T{
-+Config
-+T}@T{
-+2.0
-+T}
-+T{
-+NuGet Config
-+T}@T{
-+\f[C]nugetconfig\f[R]
-+T}@T{
-+T}@T{
-+Config
-+T}@T{
-+1.0
-+T}
-+T{
-+Dotnet local tool manifest file
-+T}@T{
-+\f[C]tool-manifest\f[R]
-+T}@T{
-+T}@T{
-+Config
-+T}@T{
-+3.0
-+T}
-+T{
-+Web Config
-+T}@T{
-+\f[C]webconfig\f[R]
-+T}@T{
-+T}@T{
-+Config
-+T}@T{
-+1.0
-+T}
-+T{
-+Solution File
-+T}@T{
-+\f[C]sln\f[R]
-+T}@T{
-+T}@T{
-+Solution
-+T}@T{
-+1.0
-+T}
-+T{
-+Protocol Buffer File
-+T}@T{
-+\f[C]proto\f[R]
-+T}@T{
-+T}@T{
-+Web/gRPC
-+T}@T{
-+3.0
-+T}
-+.TE
-+.SS Template options
-+.PP
-+Each template may have additional options available.
-+The core templates have the following additional options:
-+.SS \f[C]console\f[R]
-+.IP \[bu] 2
-+\f[B]\f[CB]-f|--framework <FRAMEWORK>\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies the framework to target.
-+Available since .NET Core 3.0 SDK.
-+.PP
-+The following table lists the default values according to the SDK version number you\[cq]re using:
-+.PP
-+.TS
-+tab(@);
-+l l.
-+T{
-+SDK version
-+T}@T{
-+Default value
-+T}
-+_
-+T{
-+5.0
-+T}@T{
-+\f[C]net5.0\f[R]
-+T}
-+T{
-+3.1
-+T}@T{
-+\f[C]netcoreapp3.1\f[R]
-+T}
-+T{
-+3.0
-+T}@T{
-+\f[C]netcoreapp3.0\f[R]
-+T}
-+.TE
-+.PP
-+The ability to create a project for an earlier TFM depends on having that version of the SDK installed.
-+For example, if you have only SDK 5.0 installed, then the only value available for \f[C]--framework\f[R] is \f[C]net5.0\f[R].
-+If you install SDK 3.1, the value \f[C]netcoreapp3.1\f[R] becomes available for \f[C]--framework\f[R].
-+If you install SDK 2.1, \f[C]netcoreapp2.1\f[R] becomes available, and so on.
-+So by specifying \f[C]--framework netcoreapp2.1\f[R] you can use SDK 2.1 even while running \f[C]dotnet new\f[R] in SDK 5.0.
-+.PP
-+Alternatively, to create a project that targets a framework earlier than the SDK that you\[cq]re using, you might be able to do it by installing the NuGet package for the template.
-+Common (https://www.nuget.org/packages?q=Microsoft.DotNet.Common.ProjectTemplates), web (https://www.nuget.org/packages?q=Microsoft.DotNet.Web.ProjectTemplates), and SPA (https://www.nuget.org/packages?q=Microsoft.DotNet.Web.Spa.ProjectTemplates) project types use different packages per target framework moniker (TFM).
-+For example, to create a \f[C]console\f[R] project that targets \f[C]netcoreapp1.0\f[R], run \f[C]dotnet new --install\f[R] on \f[C]Microsoft.DotNet.Common.ProjectTemplates.1.x\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--langVersion <VERSION_NUMBER>\f[B]\f[R]
-+.RS 2
-+.PP
-+Sets the \f[C]LangVersion\f[R] property in the created project file.
-+For example, use \f[C]--langVersion 7.3\f[R] to use C# 7.3.
-+Not supported for F#.
-+Available since .NET Core 2.2 SDK.
-+.PP
-+For a list of default C# versions, see Defaults.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-restore\f[B]\f[R]
-+.RS 2
-+.PP
-+If specified, doesn\[cq]t execute an implicit restore during project creation.
-+Available since .NET Core 2.2 SDK.
-+.RE
-+.PP
-+ * * * * *
-+.SS \f[C]classlib\f[R]
-+.IP \[bu] 2
-+\f[B]\f[CB]-f|--framework <FRAMEWORK>\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies the framework to target.
-+Values: \f[C]net5.0\f[R] or \f[C]netcoreapp<version>\f[R] to create a .NET Class Library or \f[C]netstandard<version>\f[R] to create a .NET Standard Class Library.
-+The default value for .NET 5.0 SDK is \f[C]net5.0\f[R].
-+.PP
-+To create a project that targets a framework earlier than the SDK that you\[cq]re using, see \f[C]--framework\f[R] for \f[C]console\f[R] projects earlier in this article.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--langVersion <VERSION_NUMBER>\f[B]\f[R]
-+.RS 2
-+.PP
-+Sets the \f[C]LangVersion\f[R] property in the created project file.
-+For example, use \f[C]--langVersion 7.3\f[R] to use C# 7.3.
-+Not supported for F#.
-+Available since .NET Core 2.2 SDK.
-+.PP
-+For a list of default C# versions, see Defaults.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-restore\f[B]\f[R]
-+.RS 2
-+.PP
-+Doesn\[cq]t execute an implicit restore during project creation.
-+.RE
-+.PP
-+ * * * * *
-+.SS \f[C]wpf\f[R], \f[C]wpflib\f[R], \f[C]wpfcustomcontrollib\f[R], \f[C]wpfusercontrollib\f[R]
-+.IP \[bu] 2
-+\f[B]\f[CB]-f|--framework <FRAMEWORK>\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies the framework to target.
-+The default value is \f[C]net5.0\f[R].
-+Available since .NET Core 3.1 SDK.
-+.PP
-+To create a project that targets a framework earlier than the SDK that you\[cq]re using, see \f[C]--framework\f[R] for \f[C]console\f[R] projects earlier in this article.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--langVersion <VERSION_NUMBER>\f[B]\f[R]
-+.RS 2
-+.PP
-+Sets the \f[C]LangVersion\f[R] property in the created project file.
-+For example, use \f[C]--langVersion 7.3\f[R] to use C# 7.3.
-+.PP
-+For a list of default C# versions, see Defaults.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-restore\f[B]\f[R]
-+.RS 2
-+.PP
-+Doesn\[cq]t execute an implicit restore during project creation.
-+.RE
-+.PP
-+ * * * * *
-+.SS \f[C]winforms\f[R], \f[C]winformslib\f[R]
-+.IP \[bu] 2
-+\f[B]\f[CB]--langVersion <VERSION_NUMBER>\f[B]\f[R]
-+.RS 2
-+.PP
-+Sets the \f[C]LangVersion\f[R] property in the created project file.
-+For example, use \f[C]--langVersion 7.3\f[R] to use C# 7.3.
-+.PP
-+For a list of default C# versions, see Defaults.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-restore\f[B]\f[R]
-+.RS 2
-+.PP
-+Doesn\[cq]t execute an implicit restore during project creation.
-+.RE
-+.PP
-+ * * * * *
-+.SS \f[C]worker\f[R], \f[C]grpc\f[R]
-+.IP \[bu] 2
-+\f[B]\f[CB]-f|--framework <FRAMEWORK>\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies the framework to target.
-+The default value is \f[C]netcoreapp3.1\f[R].
-+Available since .NET Core 3.1 SDK.
-+.PP
-+To create a project that targets a framework earlier than the SDK that you\[cq]re using, see \f[C]--framework\f[R] for \f[C]console\f[R] projects earlier in this article.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--exclude-launch-settings\f[B]\f[R]
-+.RS 2
-+.PP
-+Excludes \f[I]launchSettings.json\f[R] from the generated template.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-restore\f[B]\f[R]
-+.RS 2
-+.PP
-+Doesn\[cq]t execute an implicit restore during project creation.
-+.RE
-+.PP
-+ * * * * *
-+.SS \f[C]mstest\f[R], \f[C]xunit\f[R]
-+.IP \[bu] 2
-+\f[B]\f[CB]-f|--framework <FRAMEWORK>\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies the framework to target.
-+Option available since .NET Core 3.0 SDK.
-+.PP
-+The following table lists the default values according to the SDK version number you\[cq]re using:
-+.PP
-+.TS
-+tab(@);
-+l l.
-+T{
-+SDK version
-+T}@T{
-+Default value
-+T}
-+_
-+T{
-+5.0
-+T}@T{
-+\f[C]net5.0\f[R]
-+T}
-+T{
-+3.1
-+T}@T{
-+\f[C]netcoreapp3.1\f[R]
-+T}
-+T{
-+3.0
-+T}@T{
-+\f[C]netcoreapp3.0\f[R]
-+T}
-+.TE
-+.PP
-+To create a project that targets a framework earlier than the SDK that you\[cq]re using, see \f[C]--framework\f[R] for \f[C]console\f[R] projects earlier in this article.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-p|--enable-pack\f[B]\f[R]
-+.RS 2
-+.PP
-+Enables packaging for the project using dotnet pack.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-restore\f[B]\f[R]
-+.RS 2
-+.PP
-+Doesn\[cq]t execute an implicit restore during project creation.
-+.RE
-+.PP
-+ * * * * *
-+.SS \f[C]nunit\f[R]
-+.IP \[bu] 2
-+\f[B]\f[CB]-f|--framework <FRAMEWORK>\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies the framework to target.
-+.PP
-+The following table lists the default values according to the SDK version number you\[cq]re using:
-+.PP
-+.TS
-+tab(@);
-+l l.
-+T{
-+SDK version
-+T}@T{
-+Default value
-+T}
-+_
-+T{
-+5.0
-+T}@T{
-+\f[C]net5.0\f[R]
-+T}
-+T{
-+3.1
-+T}@T{
-+\f[C]netcoreapp3.1\f[R]
-+T}
-+T{
-+3.0
-+T}@T{
-+\f[C]netcoreapp3.0\f[R]
-+T}
-+T{
-+2.2
-+T}@T{
-+\f[C]netcoreapp2.2\f[R]
-+T}
-+T{
-+2.1
-+T}@T{
-+\f[C]netcoreapp2.1\f[R]
-+T}
-+.TE
-+.PP
-+To create a project that targets a framework earlier than the SDK that you\[cq]re using, see \f[C]--framework\f[R] for \f[C]console\f[R] projects earlier in this article.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-p|--enable-pack\f[B]\f[R]
-+.RS 2
-+.PP
-+Enables packaging for the project using dotnet pack.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-restore\f[B]\f[R]
-+.RS 2
-+.PP
-+Doesn\[cq]t execute an implicit restore during project creation.
-+.RE
-+.PP
-+ * * * * *
-+.SS \f[C]page\f[R]
-+.IP \[bu] 2
-+\f[B]\f[CB]-na|--namespace <NAMESPACE_NAME>\f[B]\f[R]
-+.RS 2
-+.PP
-+Namespace for the generated code.
-+The default value is \f[C]MyApp.Namespace\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-np|--no-pagemodel\f[B]\f[R]
-+.RS 2
-+.PP
-+Creates the page without a PageModel.
-+.RE
-+.PP
-+ * * * * *
-+.SS \f[C]viewimports\f[R], \f[C]proto\f[R]
-+.IP \[bu] 2
-+\f[B]\f[CB]-na|--namespace <NAMESPACE_NAME>\f[B]\f[R]
-+.RS 2
-+.PP
-+Namespace for the generated code.
-+The default value is \f[C]MyApp.Namespace\f[R].
-+.RE
-+.PP
-+ * * * * *
-+.SS \f[C]blazorserver\f[R]
-+.IP \[bu] 2
-+\f[B]\f[CB]-au|--auth <AUTHENTICATION_TYPE>\f[B]\f[R]
-+.RS 2
-+.PP
-+The type of authentication to use.
-+The possible values are:
-+.IP \[bu] 2
-+\f[C]None\f[R] - No authentication (Default).
-+.IP \[bu] 2
-+\f[C]Individual\f[R] - Individual authentication.
-+.IP \[bu] 2
-+\f[C]IndividualB2C\f[R] - Individual authentication with Azure AD B2C.
-+.IP \[bu] 2
-+\f[C]SingleOrg\f[R] - Organizational authentication for a single tenant.
-+.IP \[bu] 2
-+\f[C]MultiOrg\f[R] - Organizational authentication for multiple tenants.
-+.IP \[bu] 2
-+\f[C]Windows\f[R] - Windows authentication.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--aad-b2c-instance <INSTANCE>\f[B]\f[R]
-+.RS 2
-+.PP
-+The Azure Active Directory B2C instance to connect to.
-+Use with \f[C]IndividualB2C\f[R] authentication.
-+The default value is \f[C]https://login.microsoftonline.com/tfp/\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-ssp|--susi-policy-id <ID>\f[B]\f[R]
-+.RS 2
-+.PP
-+The sign-in and sign-up policy ID for this project.
-+Use with \f[C]IndividualB2C\f[R] authentication.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-rp|--reset-password-policy-id <ID>\f[B]\f[R]
-+.RS 2
-+.PP
-+The reset password policy ID for this project.
-+Use with \f[C]IndividualB2C\f[R] authentication.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-ep|--edit-profile-policy-id <ID>\f[B]\f[R]
-+.RS 2
-+.PP
-+The edit profile policy ID for this project.
-+Use with \f[C]IndividualB2C\f[R] authentication.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--aad-instance <INSTANCE>\f[B]\f[R]
-+.RS 2
-+.PP
-+The Azure Active Directory instance to connect to.
-+Use with \f[C]SingleOrg\f[R] or \f[C]MultiOrg\f[R] authentication.
-+The default value is \f[C]https://login.microsoftonline.com/\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--client-id <ID>\f[B]\f[R]
-+.RS 2
-+.PP
-+The Client ID for this project.
-+Use with \f[C]IndividualB2C\f[R], \f[C]SingleOrg\f[R], or \f[C]MultiOrg\f[R] authentication.
-+The default value is \f[C]11111111-1111-1111-11111111111111111\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--domain <DOMAIN>\f[B]\f[R]
-+.RS 2
-+.PP
-+The domain for the directory tenant.
-+Use with \f[C]SingleOrg\f[R] or \f[C]IndividualB2C\f[R] authentication.
-+The default value is \f[C]qualified.domain.name\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--tenant-id <ID>\f[B]\f[R]
-+.RS 2
-+.PP
-+The TenantId ID of the directory to connect to.
-+Use with \f[C]SingleOrg\f[R] authentication.
-+The default value is \f[C]22222222-2222-2222-2222-222222222222\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--callback-path <PATH>\f[B]\f[R]
-+.RS 2
-+.PP
-+The request path within the application\[cq]s base path of the redirect URI.
-+Use with \f[C]SingleOrg\f[R] or \f[C]IndividualB2C\f[R] authentication.
-+The default value is \f[C]/signin-oidc\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-r|--org-read-access\f[B]\f[R]
-+.RS 2
-+.PP
-+Allows this application read-access to the directory.
-+Only applies to \f[C]SingleOrg\f[R] or \f[C]MultiOrg\f[R] authentication.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--exclude-launch-settings\f[B]\f[R]
-+.RS 2
-+.PP
-+Excludes \f[I]launchSettings.json\f[R] from the generated template.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-https\f[B]\f[R]
-+.RS 2
-+.PP
-+Turns off HTTPS.
-+This option only applies if \f[C]Individual\f[R], \f[C]IndividualB2C\f[R], \f[C]SingleOrg\f[R], or \f[C]MultiOrg\f[R] aren\[cq]t being used for \f[C]--auth\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-uld|--use-local-db\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies LocalDB should be used instead of SQLite.
-+Only applies to \f[C]Individual\f[R] or \f[C]IndividualB2C\f[R] authentication.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-restore\f[B]\f[R]
-+.RS 2
-+.PP
-+Doesn\[cq]t execute an implicit restore during project creation.
-+.RE
-+.PP
-+ * * * * *
-+.SS \f[C]blazorwasm\f[R]
-+.IP \[bu] 2
-+\f[B]\f[CB]-f|--framework <FRAMEWORK>\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies the framework to target.
-+.PP
-+The following table lists the default values according to the SDK version number you\[cq]re using:
-+.PP
-+.TS
-+tab(@);
-+l l.
-+T{
-+SDK version
-+T}@T{
-+Default value
-+T}
-+_
-+T{
-+5.0
-+T}@T{
-+\f[C]net5.0\f[R]
-+T}
-+T{
-+3.1
-+T}@T{
-+\f[C]netcoreapp3.1\f[R]
-+T}
-+.TE
-+.PP
-+To create a project that targets a framework earlier than the SDK that you\[cq]re using, see \f[C]--framework\f[R] for \f[C]console\f[R] projects earlier in this article.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-restore\f[B]\f[R]
-+.RS 2
-+.PP
-+Doesn\[cq]t execute an implicit restore during project creation.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-ho|--hosted\f[B]\f[R]
-+.RS 2
-+.PP
-+Includes an ASP.NET Core host for the Blazor WebAssembly app.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-au|--auth <AUTHENTICATION_TYPE>\f[B]\f[R]
-+.RS 2
-+.PP
-+The type of authentication to use.
-+The possible values are:
-+.IP \[bu] 2
-+\f[C]None\f[R] - No authentication (Default).
-+.IP \[bu] 2
-+\f[C]Individual\f[R] - Individual authentication.
-+.IP \[bu] 2
-+\f[C]IndividualB2C\f[R] - Individual authentication with Azure AD B2C.
-+.IP \[bu] 2
-+\f[C]SingleOrg\f[R] - Organizational authentication for a single tenant.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--authority <AUTHORITY>\f[B]\f[R]
-+.RS 2
-+.PP
-+The authority of the OIDC provider.
-+Use with \f[C]Individual\f[R] authentication.
-+The default value is \f[C]https://login.microsoftonline.com/\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--aad-b2c-instance <INSTANCE>\f[B]\f[R]
-+.RS 2
-+.PP
-+The Azure Active Directory B2C instance to connect to.
-+Use with \f[C]IndividualB2C\f[R] authentication.
-+The default value is \f[C]https://aadB2CInstance.b2clogin.com/\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-ssp|--susi-policy-id <ID>\f[B]\f[R]
-+.RS 2
-+.PP
-+The sign-in and sign-up policy ID for this project.
-+Use with \f[C]IndividualB2C\f[R] authentication.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--aad-instance <INSTANCE>\f[B]\f[R]
-+.RS 2
-+.PP
-+The Azure Active Directory instance to connect to.
-+Use with \f[C]SingleOrg\f[R] authentication.
-+The default value is \f[C]https://login.microsoftonline.com/\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--client-id <ID>\f[B]\f[R]
-+.RS 2
-+.PP
-+The Client ID for this project.
-+Use with \f[C]IndividualB2C\f[R], \f[C]SingleOrg\f[R], or \f[C]Individual\f[R] authentication in standalone scenarios.
-+The default value is \f[C]33333333-3333-3333-33333333333333333\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--domain <DOMAIN>\f[B]\f[R]
-+.RS 2
-+.PP
-+The domain for the directory tenant.
-+Use with \f[C]SingleOrg\f[R] or \f[C]IndividualB2C\f[R] authentication.
-+The default value is \f[C]qualified.domain.name\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--app-id-uri <URI>\f[B]\f[R]
-+.RS 2
-+.PP
-+The App ID Uri for the server API you want to call.
-+Use with \f[C]SingleOrg\f[R] or \f[C]IndividualB2C\f[R] authentication.
-+The default value is \f[C]api.id.uri\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--api-client-id <ID>\f[B]\f[R]
-+.RS 2
-+.PP
-+The Client ID for the API that the server hosts.
-+Use with \f[C]SingleOrg\f[R] or \f[C]IndividualB2C\f[R] authentication.
-+The default value is \f[C]11111111-1111-1111-11111111111111111\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-s|--default-scope <SCOPE>\f[B]\f[R]
-+.RS 2
-+.PP
-+The API scope the client needs to request to provision an access token.
-+Use with \f[C]SingleOrg\f[R] or \f[C]IndividualB2C\f[R] authentication.
-+The default value is \f[C]user_impersonation\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--tenant-id <ID>\f[B]\f[R]
-+.RS 2
-+.PP
-+The TenantId ID of the directory to connect to.
-+Use with \f[C]SingleOrg\f[R] authentication.
-+The default value is \f[C]22222222-2222-2222-2222-222222222222\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-r|--org-read-access\f[B]\f[R]
-+.RS 2
-+.PP
-+Allows this application read-access to the directory.
-+Only applies to \f[C]SingleOrg\f[R] authentication.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--exclude-launch-settings\f[B]\f[R]
-+.RS 2
-+.PP
-+Excludes \f[I]launchSettings.json\f[R] from the generated template.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-p|--pwa\f[B]\f[R]
-+.RS 2
-+.PP
-+produces a Progressive Web Application (PWA) supporting installation and offline use.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-https\f[B]\f[R]
-+.RS 2
-+.PP
-+Turns off HTTPS.
-+This option only applies if \f[C]Individual\f[R], \f[C]IndividualB2C\f[R], or \f[C]SingleOrg\f[R] aren\[cq]t being used for \f[C]--auth\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-uld|--use-local-db\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies LocalDB should be used instead of SQLite.
-+Only applies to \f[C]Individual\f[R] or \f[C]IndividualB2C\f[R] authentication.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--called-api-url <URL>\f[B]\f[R]
-+.RS 2
-+.PP
-+URL of the API to call from the web app.
-+Only applies to \f[C]SingleOrg\f[R] or \f[C]IndividualB2C\f[R] authentication without an ASP.NET Core host specified.
-+The default value is \f[C]https://graph.microsoft.com/v1.0/me\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--calls-graph\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies if the web app calls Microsoft Graph.
-+Only applies to \f[C]SingleOrg\f[R] authentication.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--called-api-scopes <SCOPES>\f[B]\f[R]
-+.RS 2
-+.PP
-+Scopes to request to call the API from the web app.
-+Only applies to \f[C]SingleOrg\f[R] or \f[C]IndividualB2C\f[R] authentication without an ASP.NET Core host specified.
-+The default is \f[C]user.read\f[R].
-+.RE
-+.PP
-+ * * * * *
-+.SS \f[C]web\f[R]
-+.IP \[bu] 2
-+\f[B]\f[CB]--exclude-launch-settings\f[B]\f[R]
-+.RS 2
-+.PP
-+Excludes \f[I]launchSettings.json\f[R] from the generated template.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-f|--framework <FRAMEWORK>\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies the framework to target.
-+Option not available in .NET Core 2.2 SDK.
-+.PP
-+The following table lists the default values according to the SDK version number you\[cq]re using:
-+.PP
-+.TS
-+tab(@);
-+l l.
-+T{
-+SDK version
-+T}@T{
-+Default value
-+T}
-+_
-+T{
-+5.0
-+T}@T{
-+\f[C]net5.0\f[R]
-+T}
-+T{
-+3.1
-+T}@T{
-+\f[C]netcoreapp3.1\f[R]
-+T}
-+T{
-+3.0
-+T}@T{
-+\f[C]netcoreapp3.0\f[R]
-+T}
-+T{
-+2.1
-+T}@T{
-+\f[C]netcoreapp2.1\f[R]
-+T}
-+.TE
-+.PP
-+To create a project that targets a framework earlier than the SDK that you\[cq]re using, see \f[C]--framework\f[R] for \f[C]console\f[R] projects earlier in this article.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-restore\f[B]\f[R]
-+.RS 2
-+.PP
-+Doesn\[cq]t execute an implicit restore during project creation.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-https\f[B]\f[R]
-+.RS 2
-+.PP
-+Turns off HTTPS.
-+.RE
-+.PP
-+ * * * * *
-+.SS \f[C]mvc\f[R], \f[C]webapp\f[R]
-+.IP \[bu] 2
-+\f[B]\f[CB]-au|--auth <AUTHENTICATION_TYPE>\f[B]\f[R]
-+.RS 2
-+.PP
-+The type of authentication to use.
-+The possible values are:
-+.IP \[bu] 2
-+\f[C]None\f[R] - No authentication (Default).
-+.IP \[bu] 2
-+\f[C]Individual\f[R] - Individual authentication.
-+.IP \[bu] 2
-+\f[C]IndividualB2C\f[R] - Individual authentication with Azure AD B2C.
-+.IP \[bu] 2
-+\f[C]SingleOrg\f[R] - Organizational authentication for a single tenant.
-+.IP \[bu] 2
-+\f[C]MultiOrg\f[R] - Organizational authentication for multiple tenants.
-+.IP \[bu] 2
-+\f[C]Windows\f[R] - Windows authentication.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--aad-b2c-instance <INSTANCE>\f[B]\f[R]
-+.RS 2
-+.PP
-+The Azure Active Directory B2C instance to connect to.
-+Use with \f[C]IndividualB2C\f[R] authentication.
-+The default value is \f[C]https://login.microsoftonline.com/tfp/\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-ssp|--susi-policy-id <ID>\f[B]\f[R]
-+.RS 2
-+.PP
-+The sign-in and sign-up policy ID for this project.
-+Use with \f[C]IndividualB2C\f[R] authentication.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-rp|--reset-password-policy-id <ID>\f[B]\f[R]
-+.RS 2
-+.PP
-+The reset password policy ID for this project.
-+Use with \f[C]IndividualB2C\f[R] authentication.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-ep|--edit-profile-policy-id <ID>\f[B]\f[R]
-+.RS 2
-+.PP
-+The edit profile policy ID for this project.
-+Use with \f[C]IndividualB2C\f[R] authentication.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--aad-instance <INSTANCE>\f[B]\f[R]
-+.RS 2
-+.PP
-+The Azure Active Directory instance to connect to.
-+Use with \f[C]SingleOrg\f[R] or \f[C]MultiOrg\f[R] authentication.
-+The default value is \f[C]https://login.microsoftonline.com/\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--client-id <ID>\f[B]\f[R]
-+.RS 2
-+.PP
-+The Client ID for this project.
-+Use with \f[C]IndividualB2C\f[R], \f[C]SingleOrg\f[R], or \f[C]MultiOrg\f[R] authentication.
-+The default value is \f[C]11111111-1111-1111-11111111111111111\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--domain <DOMAIN>\f[B]\f[R]
-+.RS 2
-+.PP
-+The domain for the directory tenant.
-+Use with \f[C]SingleOrg\f[R] or \f[C]IndividualB2C\f[R] authentication.
-+The default value is \f[C]qualified.domain.name\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--tenant-id <ID>\f[B]\f[R]
-+.RS 2
-+.PP
-+The TenantId ID of the directory to connect to.
-+Use with \f[C]SingleOrg\f[R] authentication.
-+The default value is \f[C]22222222-2222-2222-2222-222222222222\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--callback-path <PATH>\f[B]\f[R]
-+.RS 2
-+.PP
-+The request path within the application\[cq]s base path of the redirect URI.
-+Use with \f[C]SingleOrg\f[R] or \f[C]IndividualB2C\f[R] authentication.
-+The default value is \f[C]/signin-oidc\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-r|--org-read-access\f[B]\f[R]
-+.RS 2
-+.PP
-+Allows this application read-access to the directory.
-+Only applies to \f[C]SingleOrg\f[R] or \f[C]MultiOrg\f[R] authentication.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--exclude-launch-settings\f[B]\f[R]
-+.RS 2
-+.PP
-+Excludes \f[I]launchSettings.json\f[R] from the generated template.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-https\f[B]\f[R]
-+.RS 2
-+.PP
-+Turns off HTTPS.
-+This option only applies if \f[C]Individual\f[R], \f[C]IndividualB2C\f[R], \f[C]SingleOrg\f[R], or \f[C]MultiOrg\f[R] aren\[cq]t being used.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-uld|--use-local-db\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies LocalDB should be used instead of SQLite.
-+Only applies to \f[C]Individual\f[R] or \f[C]IndividualB2C\f[R] authentication.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-f|--framework <FRAMEWORK>\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies the framework to target.
-+Option available since .NET Core 3.0 SDK.
-+.PP
-+The following table lists the default values according to the SDK version number you\[cq]re using:
-+.PP
-+.TS
-+tab(@);
-+l l.
-+T{
-+SDK version
-+T}@T{
-+Default value
-+T}
-+_
-+T{
-+5.0
-+T}@T{
-+\f[C]net5.0\f[R]
-+T}
-+T{
-+3.1
-+T}@T{
-+\f[C]netcoreapp3.1\f[R]
-+T}
-+T{
-+3.0
-+T}@T{
-+\f[C]netcoreapp3.0\f[R]
-+T}
-+.TE
-+.PP
-+To create a project that targets a framework earlier than the SDK that you\[cq]re using, see \f[C]--framework\f[R] for \f[C]console\f[R] projects earlier in this article.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-restore\f[B]\f[R]
-+.RS 2
-+.PP
-+Doesn\[cq]t execute an implicit restore during project creation.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--use-browserlink\f[B]\f[R]
-+.RS 2
-+.PP
-+Includes BrowserLink in the project.
-+Option not available in .NET Core 2.2 and 3.1 SDK.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-rrc|--razor-runtime-compilation\f[B]\f[R]
-+.RS 2
-+.PP
-+Determines if the project is configured to use Razor runtime compilation in Debug builds.
-+Option available since .NET Core 3.1.201 SDK.
-+.RE
-+.PP
-+ * * * * *
-+.SS \f[C]angular\f[R], \f[C]react\f[R]
-+.IP \[bu] 2
-+\f[B]\f[CB]-au|--auth <AUTHENTICATION_TYPE>\f[B]\f[R]
-+.RS 2
-+.PP
-+The type of authentication to use.
-+Available since .NET Core 3.0 SDK.
-+.PP
-+The possible values are:
-+.IP \[bu] 2
-+\f[C]None\f[R] - No authentication (Default).
-+.IP \[bu] 2
-+\f[C]Individual\f[R] - Individual authentication.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--exclude-launch-settings\f[B]\f[R]
-+.RS 2
-+.PP
-+Excludes \f[I]launchSettings.json\f[R] from the generated template.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-restore\f[B]\f[R]
-+.RS 2
-+.PP
-+Doesn\[cq]t execute an implicit restore during project creation.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-https\f[B]\f[R]
-+.RS 2
-+.PP
-+Turns off HTTPS.
-+This option only applies if authentication is \f[C]None\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-uld|--use-local-db\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies LocalDB should be used instead of SQLite.
-+Only applies to \f[C]Individual\f[R] or \f[C]IndividualB2C\f[R] authentication.
-+Available since .NET Core 3.0 SDK.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-f|--framework <FRAMEWORK>\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies the framework to target.
-+Option not available in .NET Core 2.2 SDK.
-+.PP
-+The following table lists the default values according to the SDK version number you\[cq]re using:
-+.PP
-+.TS
-+tab(@);
-+l l.
-+T{
-+SDK version
-+T}@T{
-+Default value
-+T}
-+_
-+T{
-+5.0
-+T}@T{
-+\f[C]net5.0\f[R]
-+T}
-+T{
-+3.1
-+T}@T{
-+\f[C]netcoreapp3.1\f[R]
-+T}
-+T{
-+3.0
-+T}@T{
-+\f[C]netcoreapp3.0\f[R]
-+T}
-+T{
-+2.1
-+T}@T{
-+\f[C]netcoreapp2.0\f[R]
-+T}
-+.TE
-+.PP
-+To create a project that targets a framework earlier than the SDK that you\[cq]re using, see \f[C]--framework\f[R] for \f[C]console\f[R] projects earlier in this article.
-+.RE
-+.PP
-+ * * * * *
-+.SS \f[C]reactredux\f[R]
-+.IP \[bu] 2
-+\f[B]\f[CB]--exclude-launch-settings\f[B]\f[R]
-+.RS 2
-+.PP
-+Excludes \f[I]launchSettings.json\f[R] from the generated template.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-f|--framework <FRAMEWORK>\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies the framework to target.
-+Option not available in .NET Core 2.2 SDK.
-+.PP
-+The following table lists the default values according to the SDK version number you\[cq]re using:
-+.PP
-+.TS
-+tab(@);
-+l l.
-+T{
-+SDK version
-+T}@T{
-+Default value
-+T}
-+_
-+T{
-+5.0
-+T}@T{
-+\f[C]net5.0\f[R]
-+T}
-+T{
-+3.1
-+T}@T{
-+\f[C]netcoreapp3.1\f[R]
-+T}
-+T{
-+3.0
-+T}@T{
-+\f[C]netcoreapp3.0\f[R]
-+T}
-+T{
-+2.1
-+T}@T{
-+\f[C]netcoreapp2.0\f[R]
-+T}
-+.TE
-+.PP
-+To create a project that targets a framework earlier than the SDK that you\[cq]re using, see \f[C]--framework\f[R] for \f[C]console\f[R] projects earlier in this article.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-restore\f[B]\f[R]
-+.RS 2
-+.PP
-+Doesn\[cq]t execute an implicit restore during project creation.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-https\f[B]\f[R]
-+.RS 2
-+.PP
-+Turns off HTTPS.
-+.RE
-+.PP
-+ * * * * *
-+.SS \f[C]razorclasslib\f[R]
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-restore\f[B]\f[R]
-+.RS 2
-+.PP
-+Doesn\[cq]t execute an implicit restore during project creation.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-s|--support-pages-and-views\f[B]\f[R]
-+.RS 2
-+.PP
-+Supports adding traditional Razor pages and Views in addition to components to this library.
-+Available since .NET Core 3.0 SDK.
-+.RE
-+.PP
-+ * * * * *
-+.SS \f[C]webapi\f[R]
-+.IP \[bu] 2
-+\f[B]\f[CB]-au|--auth <AUTHENTICATION_TYPE>\f[B]\f[R]
-+.RS 2
-+.PP
-+The type of authentication to use.
-+The possible values are:
-+.IP \[bu] 2
-+\f[C]None\f[R] - No authentication (Default).
-+.IP \[bu] 2
-+\f[C]IndividualB2C\f[R] - Individual authentication with Azure AD B2C.
-+.IP \[bu] 2
-+\f[C]SingleOrg\f[R] - Organizational authentication for a single tenant.
-+.IP \[bu] 2
-+\f[C]Windows\f[R] - Windows authentication.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--aad-b2c-instance <INSTANCE>\f[B]\f[R]
-+.RS 2
-+.PP
-+The Azure Active Directory B2C instance to connect to.
-+Use with \f[C]IndividualB2C\f[R] authentication.
-+The default value is \f[C]https://login.microsoftonline.com/tfp/\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-ssp|--susi-policy-id <ID>\f[B]\f[R]
-+.RS 2
-+.PP
-+The sign-in and sign-up policy ID for this project.
-+Use with \f[C]IndividualB2C\f[R] authentication.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--aad-instance <INSTANCE>\f[B]\f[R]
-+.RS 2
-+.PP
-+The Azure Active Directory instance to connect to.
-+Use with \f[C]SingleOrg\f[R] authentication.
-+The default value is \f[C]https://login.microsoftonline.com/\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--client-id <ID>\f[B]\f[R]
-+.RS 2
-+.PP
-+The Client ID for this project.
-+Use with \f[C]IndividualB2C\f[R] or \f[C]SingleOrg\f[R] authentication.
-+The default value is \f[C]11111111-1111-1111-11111111111111111\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--domain <DOMAIN>\f[B]\f[R]
-+.RS 2
-+.PP
-+The domain for the directory tenant.
-+Use with \f[C]IndividualB2C\f[R] or \f[C]SingleOrg\f[R] authentication.
-+The default value is \f[C]qualified.domain.name\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--tenant-id <ID>\f[B]\f[R]
-+.RS 2
-+.PP
-+The TenantId ID of the directory to connect to.
-+Use with \f[C]SingleOrg\f[R] authentication.
-+The default value is \f[C]22222222-2222-2222-2222-222222222222\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-r|--org-read-access\f[B]\f[R]
-+.RS 2
-+.PP
-+Allows this application read-access to the directory.
-+Only applies to \f[C]SingleOrg\f[R] authentication.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--exclude-launch-settings\f[B]\f[R]
-+.RS 2
-+.PP
-+Excludes \f[I]launchSettings.json\f[R] from the generated template.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-https\f[B]\f[R]
-+.RS 2
-+.PP
-+Turns off HTTPS.
-+\f[C]app.UseHsts\f[R] and \f[C]app.UseHttpsRedirection\f[R] aren\[cq]t added to \f[C]Startup.Configure\f[R].
-+This option only applies if \f[C]IndividualB2C\f[R] or \f[C]SingleOrg\f[R] aren\[cq]t being used for authentication.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-uld|--use-local-db\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies LocalDB should be used instead of SQLite.
-+Only applies to \f[C]IndividualB2C\f[R] authentication.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-f|--framework <FRAMEWORK>\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies the framework to target.
-+Option not available in .NET Core 2.2 SDK.
-+.PP
-+The following table lists the default values according to the SDK version number you\[cq]re using:
-+.PP
-+.TS
-+tab(@);
-+l l.
-+T{
-+SDK version
-+T}@T{
-+Default value
-+T}
-+_
-+T{
-+5.0
-+T}@T{
-+\f[C]net5.0\f[R]
-+T}
-+T{
-+3.1
-+T}@T{
-+\f[C]netcoreapp3.1\f[R]
-+T}
-+T{
-+3.0
-+T}@T{
-+\f[C]netcoreapp3.0\f[R]
-+T}
-+T{
-+2.1
-+T}@T{
-+\f[C]netcoreapp2.1\f[R]
-+T}
-+.TE
-+.PP
-+To create a project that targets a framework earlier than the SDK that you\[cq]re using, see \f[C]--framework\f[R] for \f[C]console\f[R] projects earlier in this article.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-restore\f[B]\f[R]
-+.RS 2
-+.PP
-+Doesn\[cq]t execute an implicit restore during project creation.
-+.RE
-+.PP
-+ * * * * *
-+.SS \f[C]globaljson\f[R]
-+.IP \[bu] 2
-+\f[B]\f[CB]--sdk-version <VERSION_NUMBER>\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies the version of the .NET SDK to use in the \f[I]global.json\f[R] file.
-+.RE
-+.SS See also
-+.IP \[bu] 2
-+dotnet new command
-+.IP \[bu] 2
-+dotnet new \[en]list option
-+.IP \[bu] 2
-+Custom templates for dotnet new
-+.IP \[bu] 2
-+Create a custom template for dotnet new
-diff --git a/documentation/manpages/sdk/dotnet-new-search.1 b/documentation/manpages/sdk/dotnet-new-search.1
-new file mode 100644
-index 0000000000..8ae7a75e81
---- /dev/null
-+++ b/documentation/manpages/sdk/dotnet-new-search.1
-@@ -0,0 +1,149 @@
-+.\" Automatically generated by Pandoc 2.14.1
-+.\"
-+.TH "" "1" "" "" ".NET"
-+.hy
-+.SH dotnet new \[en]search option
-+.PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 5.0.300 SDK and later versions
-+.SH NAME
-+.PP
-+\f[C]dotnet new --search\f[R] - searches for the templates supported by \f[C]dotnet new\f[R] on NuGet.org.
-+.SH SYNOPSIS
-+.IP
-+.nf
-+\f[C]
-+dotnet new <TEMPLATE_NAME> --search
-+
-+dotnet new [<TEMPLATE_NAME>] --search [--author <AUTHOR>] [-lang|--language {\[dq]C#\[dq]|\[dq]F#\[dq]|VB}]
-+ [--package <PACKAGE>] [--tag <TAG>] [--type <TYPE>]
-+ [--columns <COLUMNS>] [--columns-all]
-+\f[R]
-+.fi
-+.SH DESCRIPTION
-+.PP
-+The \f[C]dotnet new --search\f[R] option searches for templates supported by \f[C]dotnet new\f[R] on NuGet.org.
-+When the is specified, searches for templates containing the specified name.
-+.SS Arguments
-+.IP \[bu] 2
-+\f[B]\f[CB]TEMPLATE_NAME\f[B]\f[R]
-+.RS 2
-+.PP
-+If the argument is specified, only templates containing \f[C]<TEMPLATE_NAME>\f[R] in the template name or short name will be shown.
-+The argument is mandatory when \f[C]--author\f[R], \f[C]--language\f[R], \f[C]--package\f[R], \f[C]--tag\f[R] or \f[C]--type\f[R] options are not specified.
-+.RE
-+.SH OPTIONS
-+.IP \[bu] 2
-+\f[B]\f[CB]--author <AUTHOR>\f[B]\f[R]
-+.RS 2
-+.PP
-+Filters templates based on template author.
-+Partial match is supported.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--columns <COLUMNS>\f[B]\f[R]
-+.RS 2
-+.PP
-+Comma-separated list of columns to display in the output.
-+The supported columns are:
-+.IP \[bu] 2
-+\f[C]language\f[R] - A comma-separated list of languages supported by the template.
-+.IP \[bu] 2
-+\f[C]tags\f[R] - The list of template tags.
-+.IP \[bu] 2
-+\f[C]author\f[R] - The template author.
-+.IP \[bu] 2
-+\f[C]type\f[R] - The template type: project or item.
-+.PP
-+The template name, short name, package name and total downloads count are always shown.
-+The default list of columns is template name, short name, author, language, package, and total downloads.
-+This list is equivalent to specifying \f[C]--columns=author,language\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--columns-all\f[B]\f[R]
-+.RS 2
-+.PP
-+Displays all columns in the output.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-lang|--language {C#|F#|VB}\f[B]\f[R]
-+.RS 2
-+.PP
-+Filters templates based on language supported by the template.
-+The language accepted varies by the template.
-+Not valid for some templates.
-+.RS
-+.PP
-+[!NOTE] Some shells interpret \f[C]#\f[R] as a special character.
-+In those cases, enclose the language parameter value in quotes.
-+For example, \f[C]dotnet new --search --language \[dq]F#\[dq]\f[R].
-+.RE
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--package <PACKAGE>\f[B]\f[R]
-+.RS 2
-+.PP
-+Filters templates based on NuGet package ID.
-+Partial match is supported.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--tag <TAG>\f[B]\f[R]
-+.RS 2
-+.PP
-+Filters templates based on template tags.
-+To be selected, a template must have at least one tag that exactly matches the criteria.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--type <TYPE>\f[B]\f[R]
-+.RS 2
-+.PP
-+Filters templates based on template type.
-+Predefined values are \f[C]project\f[R] and \f[C]item\f[R].
-+.RE
-+.SH EXAMPLES
-+.IP \[bu] 2
-+Search for all templates available on NuGet.org matching the \f[I]spa\f[R] substring.
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet new spa --search
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Search for all templates available on NuGet.org matching the \f[I]we\f[R] substring and supporting the F# language.
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet new we --search --language \[dq]F#\[dq]
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Search for item templates.
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet new --search --type item
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Search for all C# templates, showing the type and tags in the output.
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet new --search --language \[dq]C#\[dq] --columns \[dq]type,tags\[dq]
-+\f[R]
-+.fi
-+.RE
-+.SS See also
-+.IP \[bu] 2
-+dotnet new command
-+.IP \[bu] 2
-+dotnet new \[en]list option
-+.IP \[bu] 2
-+Custom templates for dotnet new
-diff --git a/documentation/manpages/sdk/dotnet-new-uninstall.1 b/documentation/manpages/sdk/dotnet-new-uninstall.1
-new file mode 100644
-index 0000000000..2374f5ed66
---- /dev/null
-+++ b/documentation/manpages/sdk/dotnet-new-uninstall.1
-@@ -0,0 +1,56 @@
-+.\" Automatically generated by Pandoc 2.14.1
-+.\"
-+.TH "" "1" "" "" ".NET"
-+.hy
-+.SH dotnet new \[en]uninstall option
-+.PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.0 SDK and later versions
-+.SH NAME
-+.PP
-+\f[C]dotnet new --uninstall\f[R] - uninstalls a template package.
-+.SH SYNOPSIS
-+.IP
-+.nf
-+\f[C]
-+dotnet new --uninstall <PATH|NUGET_ID>
-+\f[R]
-+.fi
-+.SH DESCRIPTION
-+.PP
-+The \f[C]dotnet new --uninstall\f[R] command uninstalls a template package at the \f[C]PATH\f[R] or \f[C]NUGET_ID\f[R] provided.
-+When the \f[C]<PATH|NUGET_ID>\f[R] value isn\[cq]t specified, all currently installed template packages and their associated templates are displayed.
-+When specifying \f[C]NUGET_ID\f[R], don\[cq]t include the version number.
-+If you don\[cq]t specify a parameter to this option, the command lists the installed templates and details about them.
-+> [!NOTE] > To uninstall a template using a \f[C]PATH\f[R], you need to fully qualify the path.
-+For example, \f[I]C:/Users/<USER>/Documents/Templates/GarciaSoftware.ConsoleTemplate.CSharp\f[R] will work, but \f[I]./GarciaSoftware.ConsoleTemplate.CSharp\f[R] from the containing folder will not.
-+> Don\[cq]t include a final terminating directory slash on your template path.
-+.SH EXAMPLES
-+.IP \[bu] 2
-+List the installed templates and details about them, including how to uninstall them:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet new -u
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Uninstall the SPA templates for ASP.NET Core:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet new -u Microsoft.DotNet.Web.Spa.ProjectTemplates
-+\f[R]
-+.fi
-+.RE
-+.SS See also
-+.IP \[bu] 2
-+dotnet new command
-+.IP \[bu] 2
-+dotnet new \[en]list option
-+.IP \[bu] 2
-+dotnet new \[en]search option
-+.IP \[bu] 2
-+Custom templates for dotnet new
-diff --git a/documentation/manpages/sdk/dotnet-new-update.1 b/documentation/manpages/sdk/dotnet-new-update.1
-new file mode 100644
-index 0000000000..e9f9b5e287
---- /dev/null
-+++ b/documentation/manpages/sdk/dotnet-new-update.1
-@@ -0,0 +1,34 @@
-+.\" Automatically generated by Pandoc 2.14.1
-+.\"
-+.TH "" "1" "" "" ".NET"
-+.hy
-+.SH dotnet new \[en]update-check and \[en]update-apply options
-+.PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 3.0 SDK and later versions
-+.SH NAME
-+.PP
-+\f[C]dotnet new --update-check\f[R] checks for available updates for installed template packages.
-+.PP
-+\f[C]dotnet new --update-apply\f[R] applies updates to installed template packages.
-+.SH SYNOPSIS
-+.IP
-+.nf
-+\f[C]
-+dotnet new --update-check
-+
-+dotnet new --update-apply
-+\f[R]
-+.fi
-+.SH DESCRIPTION
-+.PP
-+The \f[C]dotnet new --update-check\f[R] option checks if there are updates available for the template packs that are currently installed.
-+The \f[C]dotnet new --update-apply\f[R] option checks if there are updates available for the template packages that are currently installed and installs them.
-+.SS See also
-+.IP \[bu] 2
-+dotnet new command
-+.IP \[bu] 2
-+dotnet new \[en]search option
-+.IP \[bu] 2
-+dotnet new \[en]install option
-+.IP \[bu] 2
-+Custom templates for dotnet new
-diff --git a/documentation/manpages/sdk/dotnet-new.1 b/documentation/manpages/sdk/dotnet-new.1
-index a9e5a18885..aeb1a6672a 100644
---- a/documentation/manpages/sdk/dotnet-new.1
-+++ b/documentation/manpages/sdk/dotnet-new.1
-@@ -1,85 +1,75 @@
--.\"t
--.\" Automatically generated by Pandoc 2.7.2
-+'\" t
-+.\" Automatically generated by Pandoc 2.14.1
- .\"
--.TH "dotnet new command" "1" "" "" ".NET Core"
-+.TH "" "1" "" "" ".NET"
- .hy
- .SH dotnet new
- .PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.0 SDK and later versions
- .SH NAME
- .PP
- \f[C]dotnet new\f[R] - Creates a new project, configuration file, or solution based on the specified template.
- .SH SYNOPSIS
--.SS .NET Core 2.2
- .IP
- .nf
- \f[C]
--dotnet new <TEMPLATE> [--dry-run] [--force] [-i|--install] [-lang|--language] [-n|--name] [--nuget-source] [-o|--output] [-u|--uninstall] [Template options]
--dotnet new <TEMPLATE> [-l|--list] [--type]
--dotnet new [-h|--help]
-+dotnet new <TEMPLATE> [--dry-run] [--force] [-lang|--language {\[dq]C#\[dq]|\[dq]F#\[dq]|VB}]
-+ [-n|--name <OUTPUT_NAME>] [-o|--output <OUTPUT_DIRECTORY>] [Template options]
-+
-+dotnet new -h|--help
- \f[R]
- .fi
--.SS .NET Core 2.1
--.IP
--.nf
--\f[C]
--dotnet new <TEMPLATE> [--force] [-i|--install] [-lang|--language] [-n|--name] [--nuget-source] [-o|--output] [-u|--uninstall] [Template options]
--dotnet new <TEMPLATE> [-l|--list] [--type]
--dotnet new [-h|--help]
--\f[R]
--.fi
--.SS .NET Core 2.0
--.IP
--.nf
--\f[C]
--dotnet new <TEMPLATE> [--force] [-i|--install] [-lang|--language] [-n|--name] [-o|--output] [-u|--uninstall] [Template options]
--dotnet new <TEMPLATE> [-l|--list] [--type]
--dotnet new [-h|--help]
--\f[R]
--.fi
--.SS .NET Core 1.x
--.IP
--.nf
--\f[C]
--dotnet new <TEMPLATE> [-lang|--language] [-n|--name] [-o|--output] [-all|--show-all] [-h|--help] [Template options]
--dotnet new <TEMPLATE> [-l|--list]
--dotnet new [-all|--show-all]
--dotnet new [-h|--help]
--\f[R]
--.fi
--.PP
-- * * * * *
- .SH DESCRIPTION
- .PP
--The \f[C]dotnet new\f[R] command provides a convenient way to initialize a valid .NET Core project.
-+The \f[C]dotnet new\f[R] command creates a .NET project or other artifacts based on a template.
- .PP
--The command calls the template engine to create the artifacts on disk based on the specified template and options.
--.SS Arguments
-+The command calls the template engine (https://github.com/dotnet/templating) to create the artifacts on disk based on the specified template and options.
-+.SS Implicit restore
-+.PP
-+You don\[cq]t have to run \f[C]dotnet restore\f[R] because it\[cq]s run implicitly by all commands that require a restore to occur, such as \f[C]dotnet new\f[R], \f[C]dotnet build\f[R], \f[C]dotnet run\f[R], \f[C]dotnet test\f[R], \f[C]dotnet publish\f[R], and \f[C]dotnet pack\f[R].
-+To disable implicit restore, use the \f[C]--no-restore\f[R] option.
- .PP
--\f[C]TEMPLATE\f[R]
-+The \f[C]dotnet restore\f[R] command is still useful in certain scenarios where explicitly restoring makes sense, such as continuous integration builds in Azure DevOps Services or in build systems that need to explicitly control when the restore occurs.
-+.PP
-+For information about how to manage NuGet feeds, see the \f[C]dotnet restore\f[R] documentation.
-+.SS Arguments
-+.IP \[bu] 2
-+\f[B]\f[CB]TEMPLATE\f[B]\f[R]
-+.RS 2
- .PP
- The template to instantiate when the command is invoked.
- Each template might have specific options you can pass.
- For more information, see Template options.
- .PP
--If the \f[C]TEMPLATE\f[R] value isn\[cq]t an exact match on text in the \f[B]Templates\f[R] or \f[B]Short Name\f[R] column, a substring match is performed on those two columns.
--.SS .NET Core 2.2
-+You can run \f[C]dotnet new --list\f[R] to see a list of all installed templates.
-+.PP
-+Starting with .NET Core 3.0 SDK and ending with .NET Core 5.0.300 SDK, the CLI searches for templates in NuGet.org when you invoke the \f[C]dotnet new\f[R] command in the following conditions:
-+.IP \[bu] 2
-+If the CLI can\[cq]t find a template match when invoking \f[C]dotnet new\f[R], not even partial.
-+.IP \[bu] 2
-+If there\[cq]s a newer version of the template available.
-+In this case, the project or artifact is created but the CLI warns you about an updated version of the template.
-+.PP
-+Starting with .NET Core 5.0.300 SDK, the \f[C]--search\f[R] option should be used to search for templates in NuGet.org..
- .PP
--The command contains a default list of templates.
--Use \f[C]dotnet new -l\f[R] to obtain a list of the available templates.
--The following table shows the templates that come pre-installed with the .NET Core SDK 2.2.100.
-+The following table shows the templates that come pre-installed with the .NET SDK.
- The default language for the template is shown inside the brackets.
-+Click on the short name link to see the specific template options.
-+.RE
- .PP
- .TS
- tab(@);
--l l l l.
-+l l l l l.
- T{
- Templates
- T}@T{
--Short Name
-+Short name
- T}@T{
- Language
- T}@T{
- Tags
-+T}@T{
-+Introduced
- T}
- _
- T{
-@@ -90,6 +80,8 @@ T}@T{
- [C#], F#, VB
- T}@T{
- Common/Console
-+T}@T{
-+1.0
- T}
- T{
- Class library
-@@ -99,230 +91,140 @@ T}@T{
- [C#], F#, VB
- T}@T{
- Common/Library
--T}
--T{
--Unit Test Project
--T}@T{
--\f[C]mstest\f[R]
--T}@T{
--[C#], F#, VB
- T}@T{
--Test/MSTest
-+1.0
- T}
- T{
--NUnit 3 Test Project
--T}@T{
--\f[C]nunit\f[R]
--T}@T{
--[C#], F#, VB
-+WPF Application
- T}@T{
--Test/NUnit
--T}
--T{
--NUnit 3 Test Item
-+\f[C]wpf\f[R]
- T}@T{
--\f[C]nunit-test\f[R]
-+[C#], VB
- T}@T{
--[C#], F#, VB
-+Common/WPF
- T}@T{
--Test/NUnit
-+3.0 (5.0 for VB)
- T}
- T{
--xUnit Test Project
--T}@T{
--\f[C]xunit\f[R]
--T}@T{
--[C#], F#, VB
-+WPF Class library
- T}@T{
--Test/xUnit
--T}
--T{
--Razor Page
-+\f[C]wpflib\f[R]
- T}@T{
--\f[C]page\f[R]
-+[C#], VB
- T}@T{
--[C#]
-+Common/WPF
- T}@T{
--Web/ASP.NET
-+3.0 (5.0 for VB)
- T}
- T{
--MVC ViewImports
--T}@T{
--\f[C]viewimports\f[R]
--T}@T{
--[C#]
-+WPF Custom Control Library
- T}@T{
--Web/ASP.NET
--T}
--T{
--MVC ViewStart
-+\f[C]wpfcustomcontrollib\f[R]
- T}@T{
--\f[C]viewstart\f[R]
-+[C#], VB
- T}@T{
--[C#]
-+Common/WPF
- T}@T{
--Web/ASP.NET
-+3.0 (5.0 for VB)
- T}
- T{
--ASP.NET Core Empty
--T}@T{
--\f[C]web\f[R]
--T}@T{
--[C#], F#
-+WPF User Control Library
- T}@T{
--Web/Empty
--T}
--T{
--ASP.NET Core Web App (Model-View-Controller)
-+\f[C]wpfusercontrollib\f[R]
- T}@T{
--\f[C]mvc\f[R]
-+[C#], VB
- T}@T{
--[C#], F#
-+Common/WPF
- T}@T{
--Web/MVC
-+3.0 (5.0 for VB)
- T}
- T{
--ASP.NET Core Web App
--T}@T{
--\f[C]webapp\f[R], \f[C]razor\f[R]
--T}@T{
--[C#]
-+Windows Forms (WinForms) Application
- T}@T{
--Web/MVC/Razor Pages
--T}
--T{
--ASP.NET Core with Angular
-+\f[C]winforms\f[R]
- T}@T{
--\f[C]angular\f[R]
-+[C#], VB
- T}@T{
--[C#]
-+Common/WinForms
- T}@T{
--Web/MVC/SPA
-+3.0 (5.0 for VB)
- T}
- T{
--ASP.NET Core with React.js
-+Windows Forms (WinForms) Class library
- T}@T{
--\f[C]react\f[R]
--T}@T{
--[C#]
--T}@T{
--Web/MVC/SPA
--T}
--T{
--ASP.NET Core with React.js and Redux
-+\f[C]winformslib\f[R]
- T}@T{
--\f[C]reactredux\f[R]
-+[C#], VB
- T}@T{
--[C#]
-+Common/WinForms
- T}@T{
--Web/MVC/SPA
-+3.0 (5.0 for VB)
- T}
- T{
--Razor Class Library
-+Worker Service
- T}@T{
--\f[C]razorclasslib\f[R]
-+\f[C]worker\f[R]
- T}@T{
- [C#]
- T}@T{
--Web/Razor/Library/Razor Class Library
--T}
--T{
--ASP.NET Core Web API
--T}@T{
--\f[C]webapi\f[R]
--T}@T{
--[C#], F#
--T}@T{
--Web/WebAPI
--T}
--T{
--global.json file
--T}@T{
--\f[C]globaljson\f[R]
--T}@T{
-+Common/Worker/Web
- T}@T{
--Config
-+3.0
- T}
- T{
--NuGet Config
--T}@T{
--\f[C]nugetconfig\f[R]
--T}@T{
-+Unit Test Project
- T}@T{
--Config
--T}
--T{
--Web Config
-+\f[C]mstest\f[R]
- T}@T{
--\f[C]webconfig\f[R]
-+[C#], F#, VB
- T}@T{
-+Test/MSTest
- T}@T{
--Config
-+1.0
- T}
- T{
--Solution File
--T}@T{
--\f[C]sln\f[R]
--T}@T{
-+NUnit 3 Test Project
- T}@T{
--Solution
--T}
--.TE
--.SS .NET Core 2.1
--.PP
--The command contains a default list of templates.
--Use \f[C]dotnet new -l\f[R] to obtain a list of the available templates.
--The following table shows the templates that come pre-installed with the .NET Core SDK 2.1.300.
--The default language for the template is shown inside the brackets.
--.PP
--.TS
--tab(@);
--l l l l.
--T{
--Templates
-+\f[C]nunit\f[R]
- T}@T{
--Short Name
-+[C#], F#, VB
- T}@T{
--Language
-+Test/NUnit
- T}@T{
--Tags
-+2.1.400
- T}
--_
- T{
--Console Application
-+NUnit 3 Test Item
- T}@T{
--\f[C]console\f[R]
-+\f[C]nunit-test\f[R]
- T}@T{
- [C#], F#, VB
- T}@T{
--Common/Console
--T}
--T{
--Class library
--T}@T{
--\f[C]classlib\f[R]
--T}@T{
--[C#], F#, VB
-+Test/NUnit
- T}@T{
--Common/Library
-+2.2
- T}
- T{
--Unit Test Project
-+xUnit Test Project
- T}@T{
--\f[C]mstest\f[R]
-+\f[C]xunit\f[R]
- T}@T{
- [C#], F#, VB
- T}@T{
--Test/MSTest
-+Test/xUnit
-+T}@T{
-+1.0
- T}
- T{
--xUnit Test Project
-+Razor Component
- T}@T{
--\f[C]xunit\f[R]
-+\f[C]razorcomponent\f[R]
- T}@T{
--[C#], F#, VB
-+[C#]
- T}@T{
--Test/xUnit
-+Web/ASP.NET
-+T}@T{
-+3.0
- T}
- T{
- Razor Page
-@@ -332,6 +234,8 @@ T}@T{
- [C#]
- T}@T{
- Web/ASP.NET
-+T}@T{
-+2.0
- T}
- T{
- MVC ViewImports
-@@ -341,6 +245,8 @@ T}@T{
- [C#]
- T}@T{
- Web/ASP.NET
-+T}@T{
-+2.0
- T}
- T{
- MVC ViewStart
-@@ -350,6 +256,30 @@ T}@T{
- [C#]
- T}@T{
- Web/ASP.NET
-+T}@T{
-+2.0
-+T}
-+T{
-+Blazor Server App
-+T}@T{
-+\f[C]blazorserver\f[R]
-+T}@T{
-+[C#]
-+T}@T{
-+Web/Blazor
-+T}@T{
-+3.0
-+T}
-+T{
-+Blazor WebAssembly App
-+T}@T{
-+\f[C]blazorwasm\f[R]
-+T}@T{
-+[C#]
-+T}@T{
-+Web/Blazor/WebAssembly
-+T}@T{
-+3.1.300
- T}
- T{
- ASP.NET Core Empty
-@@ -359,6 +289,8 @@ T}@T{
- [C#], F#
- T}@T{
- Web/Empty
-+T}@T{
-+1.0
- T}
- T{
- ASP.NET Core Web App (Model-View-Controller)
-@@ -368,15 +300,19 @@ T}@T{
- [C#], F#
- T}@T{
- Web/MVC
-+T}@T{
-+1.0
- T}
- T{
- ASP.NET Core Web App
- T}@T{
--\f[C]razor\f[R]
-+\f[C]webapp, razor\f[R]
- T}@T{
- [C#]
- T}@T{
- Web/MVC/Razor Pages
-+T}@T{
-+2.2, 2.0
- T}
- T{
- ASP.NET Core with Angular
-@@ -386,6 +322,8 @@ T}@T{
- [C#]
- T}@T{
- Web/MVC/SPA
-+T}@T{
-+2.0
- T}
- T{
- ASP.NET Core with React.js
-@@ -395,6 +333,8 @@ T}@T{
- [C#]
- T}@T{
- Web/MVC/SPA
-+T}@T{
-+2.0
- T}
- T{
- ASP.NET Core with React.js and Redux
-@@ -404,6 +344,8 @@ T}@T{
- [C#]
- T}@T{
- Web/MVC/SPA
-+T}@T{
-+2.0
- T}
- T{
- Razor Class Library
-@@ -413,6 +355,8 @@ T}@T{
- [C#]
- T}@T{
- Web/Razor/Library/Razor Class Library
-+T}@T{
-+2.1
- T}
- T{
- ASP.NET Core Web API
-@@ -422,6 +366,29 @@ T}@T{
- [C#], F#
- T}@T{
- Web/WebAPI
-+T}@T{
-+1.0
-+T}
-+T{
-+ASP.NET Core gRPC Service
-+T}@T{
-+\f[C]grpc\f[R]
-+T}@T{
-+[C#]
-+T}@T{
-+Web/gRPC
-+T}@T{
-+3.0
-+T}
-+T{
-+dotnet gitignore file
-+T}@T{
-+\f[C]gitignore\f[R]
-+T}@T{
-+T}@T{
-+Config
-+T}@T{
-+3.0
- T}
- T{
- global.json file
-@@ -430,6 +397,8 @@ T}@T{
- T}@T{
- T}@T{
- Config
-+T}@T{
-+2.0
- T}
- T{
- NuGet Config
-@@ -438,6 +407,18 @@ T}@T{
- T}@T{
- T}@T{
- Config
-+T}@T{
-+1.0
-+T}
-+T{
-+Dotnet local tool manifest file
-+T}@T{
-+\f[C]tool-manifest\f[R]
-+T}@T{
-+T}@T{
-+Config
-+T}@T{
-+3.0
- T}
- T{
- Web Config
-@@ -446,6 +427,8 @@ T}@T{
- T}@T{
- T}@T{
- Config
-+T}@T{
-+1.0
- T}
- T{
- Solution File
-@@ -454,1116 +437,148 @@ T}@T{
- T}@T{
- T}@T{
- Solution
--T}
--.TE
--.SS .NET Core 2.0
--.PP
--The command contains a default list of templates.
--Use \f[C]dotnet new -l\f[R] to obtain a list of the available templates.
--The following table shows the templates that come pre-installed with the .NET Core SDK 2.0.0.
--The default language for the template is shown inside the brackets.
--.PP
--.TS
--tab(@);
--l l l l.
--T{
--Templates
--T}@T{
--Short Name
- T}@T{
--Language
--T}@T{
--Tags
-+1.0
- T}
--_
- T{
--Console Application
-+Protocol Buffer File
- T}@T{
--\f[C]console\f[R]
-+\f[C]proto\f[R]
- T}@T{
--[C#], F#, VB
- T}@T{
--Common/Console
--T}
--T{
--Class library
--T}@T{
--\f[C]classlib\f[R]
--T}@T{
--[C#], F#, VB
--T}@T{
--Common/Library
--T}
--T{
--Unit Test Project
--T}@T{
--\f[C]mstest\f[R]
--T}@T{
--[C#], F#, VB
--T}@T{
--Test/MSTest
--T}
--T{
--xUnit Test Project
--T}@T{
--\f[C]xunit\f[R]
--T}@T{
--[C#], F#, VB
--T}@T{
--Test/xUnit
--T}
--T{
--ASP.NET Core Empty
--T}@T{
--\f[C]web\f[R]
--T}@T{
--[C#], F#
--T}@T{
--Web/Empty
--T}
--T{
--ASP.NET Core Web App (Model-View-Controller)
--T}@T{
--\f[C]mvc\f[R]
--T}@T{
--[C#], F#
--T}@T{
--Web/MVC
--T}
--T{
--ASP.NET Core Web App
--T}@T{
--\f[C]razor\f[R]
--T}@T{
--[C#]
--T}@T{
--Web/MVC/Razor Pages
--T}
--T{
--ASP.NET Core with Angular
--T}@T{
--\f[C]angular\f[R]
--T}@T{
--[C#]
--T}@T{
--Web/MVC/SPA
--T}
--T{
--ASP.NET Core with React.js
--T}@T{
--\f[C]react\f[R]
--T}@T{
--[C#]
--T}@T{
--Web/MVC/SPA
--T}
--T{
--ASP.NET Core with React.js and Redux
--T}@T{
--\f[C]reactredux\f[R]
--T}@T{
--[C#]
--T}@T{
--Web/MVC/SPA
--T}
--T{
--ASP.NET Core Web API
--T}@T{
--\f[C]webapi\f[R]
--T}@T{
--[C#], F#
--T}@T{
--Web/WebAPI
--T}
--T{
--global.json file
--T}@T{
--\f[C]globaljson\f[R]
--T}@T{
--T}@T{
--Config
--T}
--T{
--Nuget Config
--T}@T{
--\f[C]nugetconfig\f[R]
--T}@T{
--T}@T{
--Config
--T}
--T{
--Web Config
--T}@T{
--\f[C]webconfig\f[R]
--T}@T{
--T}@T{
--Config
--T}
--T{
--Solution File
--T}@T{
--\f[C]sln\f[R]
--T}@T{
--T}@T{
--Solution
--T}
--T{
--Razor Page
--T}@T{
--\f[C]page\f[R]
--T}@T{
--T}@T{
--Web/ASP.NET
--T}
--T{
--MVC ViewImports
--T}@T{
--\f[C]viewimports\f[R]
--T}@T{
--T}@T{
--Web/ASP.NET
--T}
--T{
--MVC ViewStart
--T}@T{
--\f[C]viewstart\f[R]
--T}@T{
--T}@T{
--Web/ASP.NET
--T}
--.TE
--.SS .NET Core 1.x
--.PP
--The command contains a default list of templates.
--Use \f[C]dotnet new -all\f[R] to obtain a list of the available templates.
--The following table shows the templates that come pre-installed with the .NET Core SDK 1.0.1.
--The default language for the template is shown inside the brackets.
--.PP
--.TS
--tab(@);
--l l l l.
--T{
--Templates
--T}@T{
--Short Name
--T}@T{
--Language
--T}@T{
--Tags
--T}
--_
--T{
--Console Application
--T}@T{
--\f[C]console\f[R]
--T}@T{
--[C#], F#
--T}@T{
--Common/Console
--T}
--T{
--Class library
--T}@T{
--\f[C]classlib\f[R]
--T}@T{
--[C#], F#
--T}@T{
--Common/Library
--T}
--T{
--Unit Test Project
--T}@T{
--\f[C]mstest\f[R]
--T}@T{
--[C#], F#
--T}@T{
--Test/MSTest
--T}
--T{
--xUnit Test Project
--T}@T{
--\f[C]xunit\f[R]
--T}@T{
--[C#], F#
--T}@T{
--Test/xUnit
--T}
--T{
--ASP.NET Core Empty
--T}@T{
--\f[C]web\f[R]
--T}@T{
--[C#]
--T}@T{
--Web/Empty
--T}
--T{
--ASP.NET Core Web App
--T}@T{
--\f[C]mvc\f[R]
--T}@T{
--[C#], F#
--T}@T{
--Web/MVC
--T}
--T{
--ASP.NET Core Web API
--T}@T{
--\f[C]webapi\f[R]
--T}@T{
--[C#]
--T}@T{
--Web/WebAPI
--T}
--T{
--Nuget Config
--T}@T{
--\f[C]nugetconfig\f[R]
--T}@T{
--T}@T{
--Config
--T}
--T{
--Web Config
--T}@T{
--\f[C]webconfig\f[R]
--T}@T{
--T}@T{
--Config
--T}
--T{
--Solution File
--T}@T{
--\f[C]sln\f[R]
--T}@T{
--T}@T{
--Solution
--T}
--.TE
--.PP
-- * * * * *
--.SH OPTIONS
--.SS .NET Core 2.2
--.PP
--\f[C]--dry-run\f[R]
--.PP
--Displays a summary of what would happen if the given command were run if it would result in a template creation.
--.PP
--\f[C]--force\f[R]
--.PP
--Forces content to be generated even if it would change existing files.
--This is required when the output directory already contains a project.
--.PP
--\f[C]-h|--help\f[R]
--.PP
--Prints out help for the command.
--It can be invoked for the \f[C]dotnet new\f[R] command itself or for any template, such as \f[C]dotnet new mvc --help\f[R].
--.PP
--\f[C]-i|--install <PATH|NUGET_ID>\f[R]
--.PP
--Installs a source or template pack from the \f[C]PATH\f[R] or \f[C]NUGET_ID\f[R] provided.
--If you want to install a prerelease version of a template package, you need to specify the version in the format of \f[C]<package-name>::<package-version>\f[R].
--By default, \f[C]dotnet new\f[R] passes * for the version, which represents the last stable package version.
--See an example at the Examples section.
--.PP
--For information on creating custom templates, see Custom templates for dotnet new.
--.PP
--\f[C]-l|--list\f[R]
--.PP
--Lists templates containing the specified name.
--If invoked for the \f[C]dotnet new\f[R] command, it lists the possible templates available for the given directory.
--For example if the directory already contains a project, it doesn\[cq]t list all project templates.
--.PP
--\f[C]-lang|--language {C#|F#|VB}\f[R]
--.PP
--The language of the template to create.
--The language accepted varies by the template (see defaults in the arguments section).
--Not valid for some templates.
--.RS
--.PP
--[!NOTE] Some shells interpret \f[C]#\f[R] as a special character.
--In those cases, you need to enclose the language parameter value, such as \f[C]dotnet new console -lang \[dq]F#\[dq]\f[R].
--.RE
--.PP
--\f[C]-n|--name <OUTPUT_NAME>\f[R]
--.PP
--The name for the created output.
--If no name is specified, the name of the current directory is used.
--.PP
--\f[C]--nuget-source\f[R]
--.PP
--Specifies a NuGet source to use during install.
--.PP
--\f[C]-o|--output <OUTPUT_DIRECTORY>\f[R]
--.PP
--Location to place the generated output.
--The default is the current directory.
--.PP
--\f[C]--type\f[R]
--.PP
--Filters templates based on available types.
--Predefined values are \[lq]project\[rq], \[lq]item\[rq], or \[lq]other\[rq].
--.PP
--\f[C]-u|--uninstall <PATH|NUGET_ID>\f[R]
--.PP
--Uninstalls a source or template pack at the \f[C]PATH\f[R] or \f[C]NUGET_ID\f[R] provided.
--When excluding the \f[C]<PATH|NUGET_ID>\f[R] value, all currently installed template packs and their associated templates are displayed.
--.RS
--.PP
--[!NOTE] To uninstall a template using a \f[C]PATH\f[R], you need to fully qualify the path.
--For example, \f[I]C:/Users/<USER>/Documents/Templates/GarciaSoftware.ConsoleTemplate.CSharp\f[R] will work, but \f[I]./GarciaSoftware.ConsoleTemplate.CSharp\f[R] from the containing folder will not.
--Additionally, do not include a final terminating directory slash on your template path.
--.RE
--.SS .NET Core 2.1
--.PP
--\f[C]--force\f[R]
--.PP
--Forces content to be generated even if it would change existing files.
--This is required when the output directory already contains a project.
--.PP
--\f[C]-h|--help\f[R]
--.PP
--Prints out help for the command.
--It can be invoked for the \f[C]dotnet new\f[R] command itself or for any template, such as \f[C]dotnet new mvc --help\f[R].
--.PP
--\f[C]-i|--install <PATH|NUGET_ID>\f[R]
--.PP
--Installs a source or template pack from the \f[C]PATH\f[R] or \f[C]NUGET_ID\f[R] provided.
--If you want to install a prerelease version of a template package, you need to specify the version in the format of \f[C]<package-name>::<package-version>\f[R].
--By default, \f[C]dotnet new\f[R] passes * for the version, which represents the last stable package version.
--See an example at the Examples section.
--.PP
--For information on creating custom templates, see Custom templates for dotnet new.
--.PP
--\f[C]-l|--list\f[R]
--.PP
--Lists templates containing the specified name.
--If invoked for the \f[C]dotnet new\f[R] command, it lists the possible templates available for the given directory.
--For example if the directory already contains a project, it doesn\[cq]t list all project templates.
--.PP
--\f[C]-lang|--language {C#|F#|VB}\f[R]
--.PP
--The language of the template to create.
--The language accepted varies by the template (see defaults in the arguments section).
--Not valid for some templates.
--.RS
--.PP
--[!NOTE] Some shells interpret \f[C]#\f[R] as a special character.
--In those cases, you need to enclose the language parameter value, such as \f[C]dotnet new console -lang \[dq]F#\[dq]\f[R].
--.RE
--.PP
--\f[C]-n|--name <OUTPUT_NAME>\f[R]
--.PP
--The name for the created output.
--If no name is specified, the name of the current directory is used.
--.PP
--\f[C]--nuget-source\f[R]
--.PP
--Specifies a NuGet source to use during install.
--.PP
--\f[C]-o|--output <OUTPUT_DIRECTORY>\f[R]
--.PP
--Location to place the generated output.
--The default is the current directory.
--.PP
--\f[C]--type\f[R]
--.PP
--Filters templates based on available types.
--Predefined values are \[lq]project\[rq], \[lq]item\[rq] or \[lq]other\[rq].
--.PP
--\f[C]-u|--uninstall <PATH|NUGET_ID>\f[R]
--.PP
--Uninstalls a source or template pack at the \f[C]PATH\f[R] or \f[C]NUGET_ID\f[R] provided.
--.RS
--.PP
--[!NOTE] To uninstall a template using a \f[C]PATH\f[R], you need to fully qualify the path.
--For example, \f[I]C:/Users/<USER>/Documents/Templates/GarciaSoftware.ConsoleTemplate.CSharp\f[R] will work, but \f[I]./GarciaSoftware.ConsoleTemplate.CSharp\f[R] from the containing folder will not.
--Additionally, do not include a final terminating directory slash on your template path.
--.RE
--.SS .NET Core 2.0
--.PP
--\f[C]--force\f[R]
--.PP
--Forces content to be generated even if it would change existing files.
--This is required when the output directory already contains a project.
--.PP
--\f[C]-h|--help\f[R]
--.PP
--Prints out help for the command.
--It can be invoked for the \f[C]dotnet new\f[R] command itself or for any template, such as \f[C]dotnet new mvc --help\f[R].
--.PP
--\f[C]-i|--install <PATH|NUGET_ID>\f[R]
--.PP
--Installs a source or template pack from the \f[C]PATH\f[R] or \f[C]NUGET_ID\f[R] provided.
--If you want to install a prerelease version of a template package, you need to specify the version in the format of \f[C]<package-name>::<package-version>\f[R].
--By default, \f[C]dotnet new\f[R] passes * for the version, which represents the last stable package version.
--See an example at the Examples section.
--.PP
--For information on creating custom templates, see Custom templates for dotnet new.
--.PP
--\f[C]-l|--list\f[R]
--.PP
--Lists templates containing the specified name.
--If invoked for the \f[C]dotnet new\f[R] command, it lists the possible templates available for the given directory.
--For example if the directory already contains a project, it doesn\[cq]t list all project templates.
--.PP
--\f[C]-lang|--language {C#|F#|VB}\f[R]
--.PP
--The language of the template to create.
--The language accepted varies by the template (see defaults in the arguments section).
--Not valid for some templates.
--.RS
--.PP
--[!NOTE] Some shells interpret \f[C]#\f[R] as a special character.
--In those cases, you need to enclose the language parameter value, such as \f[C]dotnet new console -lang \[dq]F#\[dq]\f[R].
--.RE
--.PP
--\f[C]-n|--name <OUTPUT_NAME>\f[R]
--.PP
--The name for the created output.
--If no name is specified, the name of the current directory is used.
--.PP
--\f[C]-o|--output <OUTPUT_DIRECTORY>\f[R]
--.PP
--Location to place the generated output.
--The default is the current directory.
--.PP
--\f[C]--type\f[R]
--.PP
--Filters templates based on available types.
--Predefined values are \[lq]project\[rq], \[lq]item\[rq] or \[lq]other\[rq].
--.PP
--\f[C]-u|--uninstall <PATH|NUGET_ID>\f[R]
--.PP
--Uninstalls a source or template pack at the \f[C]PATH\f[R] or \f[C]NUGET_ID\f[R] provided.
--.RS
--.PP
--[!NOTE] To uninstall a template using a source \f[C]PATH\f[R], you need to fully qualify the path.
--For example, \f[I]C:/Users/<USER>/Documents/Templates/GarciaSoftware.ConsoleTemplate.CSharp\f[R] will work, but \f[I]./GarciaSoftware.ConsoleTemplate.CSharp\f[R] from the containing folder will not.
--Additionally, do not include a final terminating directory slash on your template path.
--.PP
--If you are unable to determine the \f[C]PATH\f[R] or \f[C]NUGET_ID\f[R] argument needed to uninstall a template, running \f[C]dotnet new --uninstall\f[R] without an argument will list all installed templates and the argument required to uninstall them.
--.RE
--.SS .NET Core 1.x
--.PP
--\f[C]-all|--show-all\f[R]
--.PP
--Shows all templates for a specific type of project when running in the context of the \f[C]dotnet new\f[R] command alone.
--When running in the context of a specific template, such as \f[C]dotnet new web -all\f[R], \f[C]-all\f[R] is interpreted as a force creation flag.
--This is required when the output directory already contains a project.
--.PP
--\f[C]-h|--help\f[R]
--.PP
--Prints out help for the command.
--It can be invoked for the \f[C]dotnet new\f[R] command itself or for any template, such as \f[C]dotnet new mvc --help\f[R].
--.PP
--\f[C]-l|--list\f[R]
--.PP
--Lists templates containing the specified name.
--If invoked for the \f[C]dotnet new\f[R] command, it lists the possible templates available for the given directory.
--For example if the directory already contains a project, it doesn\[cq]t list all project templates.
--.PP
--\f[C]-lang|--language {C#|F#}\f[R]
--.PP
--The language of the template to create.
--The language accepted varies by the template (see defaults in the arguments section).
--Not valid for some templates.
--.RS
--.PP
--[!NOTE] Some shells interpret \f[C]#\f[R] as a special character.
--In those cases, you need to enclose the language parameter value, such as \f[C]dotnet new console -lang \[dq]F#\[dq]\f[R].
--.RE
--.PP
--\f[C]-n|--name <OUTPUT_NAME>\f[R]
--.PP
--The name for the created output.
--If no name is specified, the name of the current directory is used.
--.PP
--\f[C]-o|--output <OUTPUT_DIRECTORY>\f[R]
--.PP
--Location to place the generated output.
--The default is the current directory.
--.PP
-- * * * * *
--.SS Template options
--.PP
--Each project template may have additional options available.
--The core templates have the following additional options:
--.SS .NET Core 2.2
--.PP
--\f[B]console\f[R]
--.PP
--\f[C]--langVersion <VERSION_NUMBER>\f[R] - Sets the \f[C]LangVersion\f[R] property in the created project file.
--For example, use \f[C]--langVersion 7.3\f[R] to use C# 7.3.
--Not supported for F#.
--.PP
--\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
--.PP
--\f[B]angular, react, reactredux\f[R]
--.PP
--\f[C]--exclude-launch-settings\f[R] - Exclude \f[I]launchSettings.json\f[R] from the generated template.
--.PP
--\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
--.PP
--\f[C]--no-https\f[R] - Project doesn\[cq]t require HTTPS.
--This option only applies if \f[C]IndividualAuth\f[R] or \f[C]OrganizationalAuth\f[R] are not being used.
--.PP
--\f[B]razorclasslib\f[R]
--.PP
--\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
--.PP
--\f[B]classlib\f[R]
--.PP
--\f[C]-f|--framework <FRAMEWORK>\f[R] - Specifies the framework to target.
--Values: \f[C]netcoreapp2.2\f[R] to create a .NET Core Class Library or \f[C]netstandard2.0\f[R] to create a .NET Standard Class Library.
--The default value is \f[C]netstandard2.0\f[R].
--.PP
--\f[C]--langVersion <VERSION_NUMBER>\f[R] - Sets the \f[C]LangVersion\f[R] property in the created project file.
--For example, use \f[C]--langVersion 7.3\f[R] to use C# 7.3.
--Not supported for F#.
--.PP
--\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
--.PP
--\f[B]mstest, xunit\f[R]
--.PP
--\f[C]-p|--enable-pack\f[R] - Enables packaging for the project using dotnet pack.
--.PP
--\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
--.PP
--\f[B]nunit\f[R]
--.PP
--\f[C]-f|--framework <FRAMEWORK>\f[R] - Specifies the framework to target.
--The default value is \f[C]netcoreapp2.1\f[R].
--.PP
--\f[C]-p|--enable-pack\f[R] - Enables packaging for the project using dotnet pack.
--.PP
--\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
--.PP
--\f[B]page\f[R]
--.PP
--\f[C]-na|--namespace <NAMESPACE_NAME>\f[R] - Namespace for the generated code.
--The default value is \f[C]MyApp.Namespace\f[R].
--.PP
--\f[C]-np|--no-pagemodel\f[R] - Creates the page without a PageModel.
--.PP
--\f[B]viewimports\f[R]
--.PP
--\f[C]-na|--namespace <NAMESPACE_NAME>\f[R] - Namespace for the generated code.
--The default value is \f[C]MyApp.Namespace\f[R].
--.PP
--\f[B]web\f[R]
--.PP
--\f[C]--exclude-launch-settings\f[R] - Exclude \f[I]launchSettings.json\f[R] from the generated template.
--.PP
--\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
--.PP
--\f[C]--no-https\f[R] - Project doesn\[cq]t require HTTPS.
--This option only applies if \f[C]IndividualAuth\f[R] or \f[C]OrganizationalAuth\f[R] are not being used.
--.PP
--\f[B]mvc, webapp\f[R]
--.PP
--\f[C]-au|--auth <AUTHENTICATION_TYPE>\f[R] - The type of authentication to use.
--The possible values are:
--.IP \[bu] 2
--\f[C]None\f[R] - No authentication (Default).
--.IP \[bu] 2
--\f[C]Individual\f[R] - Individual authentication.
--.IP \[bu] 2
--\f[C]IndividualB2C\f[R] - Individual authentication with Azure AD B2C.
--.IP \[bu] 2
--\f[C]SingleOrg\f[R] - Organizational authentication for a single tenant.
--.IP \[bu] 2
--\f[C]MultiOrg\f[R] - Organizational authentication for multiple tenants.
-+Web/gRPC
-+T}@T{
-+3.0
-+T}
-+.TE
-+.SH OPTIONS
- .IP \[bu] 2
--\f[C]Windows\f[R] - Windows authentication.
--.PP
--\f[C]--aad-b2c-instance <INSTANCE>\f[R] - The Azure Active Directory B2C instance to connect to.
--Use with \f[C]IndividualB2C\f[R] authentication.
--The default value is \f[C]https://login.microsoftonline.com/tfp/\f[R].
-+\f[B]\f[CB]--dry-run\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]-ssp|--susi-policy-id <ID>\f[R] - The sign-in and sign-up policy ID for this project.
--Use with \f[C]IndividualB2C\f[R] authentication.
--.PP
--\f[C]-rp|--reset-password-policy-id <ID>\f[R] - The reset password policy ID for this project.
--Use with \f[C]IndividualB2C\f[R] authentication.
--.PP
--\f[C]-ep|--edit-profile-policy-id <ID>\f[R] - The edit profile policy ID for this project.
--Use with \f[C]IndividualB2C\f[R] authentication.
--.PP
--\f[C]--aad-instance <INSTANCE>\f[R] - The Azure Active Directory instance to connect to.
--Use with \f[C]SingleOrg\f[R] or \f[C]MultiOrg\f[R] authentication.
--The default value is \f[C]https://login.microsoftonline.com/\f[R].
--.PP
--\f[C]--client-id <ID>\f[R] - The Client ID for this project.
--Use with \f[C]IndividualB2C\f[R], \f[C]SingleOrg\f[R], or \f[C]MultiOrg\f[R] authentication.
--The default value is \f[C]11111111-1111-1111-11111111111111111\f[R].
--.PP
--\f[C]--domain <DOMAIN>\f[R] - The domain for the directory tenant.
--Use with \f[C]SingleOrg\f[R] or \f[C]IndividualB2C\f[R] authentication.
--The default value is \f[C]qualified.domain.name\f[R].
--.PP
--\f[C]--tenant-id <ID>\f[R] - The TenantId ID of the directory to connect to.
--Use with \f[C]SingleOrg\f[R] authentication.
--The default value is \f[C]22222222-2222-2222-2222-222222222222\f[R].
--.PP
--\f[C]--callback-path <PATH>\f[R] - The request path within the application\[cq]s base path of the redirect URI.
--Use with \f[C]SingleOrg\f[R] or \f[C]IndividualB2C\f[R] authentication.
--The default value is \f[C]/signin-oidc\f[R].
--.PP
--\f[C]-r|--org-read-access\f[R] - Allows this application read-access to the directory.
--Only applies to \f[C]SingleOrg\f[R] or \f[C]MultiOrg\f[R] authentication.
--.PP
--\f[C]--exclude-launch-settings\f[R] - Exclude \f[I]launchSettings.json\f[R] from the generated template.
--.PP
--\f[C]--no-https\f[R] - Project doesn\[cq]t require HTTPS.
--\f[C]app.UseHsts\f[R] and \f[C]app.UseHttpsRedirection\f[R] aren\[cq]t added to \f[C]Startup.Configure\f[R].
--This option only applies if \f[C]Individual\f[R], \f[C]IndividualB2C\f[R], \f[C]SingleOrg\f[R], or \f[C]MultiOrg\f[R] aren\[cq]t being used.
--.PP
--\f[C]-uld|--use-local-db\f[R] - Specifies LocalDB should be used instead of SQLite.
--Only applies to \f[C]Individual\f[R] or \f[C]IndividualB2C\f[R] authentication.
--.PP
--\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
--.PP
--\f[B]webapi\f[R]
--.PP
--\f[C]-au|--auth <AUTHENTICATION_TYPE>\f[R] - The type of authentication to use.
--The possible values are:
--.IP \[bu] 2
--\f[C]None\f[R] - No authentication (Default).
--.IP \[bu] 2
--\f[C]IndividualB2C\f[R] - Individual authentication with Azure AD B2C.
--.IP \[bu] 2
--\f[C]SingleOrg\f[R] - Organizational authentication for a single tenant.
-+Displays a summary of what would happen if the given command were run if it would result in a template creation.
-+Available since .NET Core 2.2 SDK.
-+.RE
- .IP \[bu] 2
--\f[C]Windows\f[R] - Windows authentication.
--.PP
--\f[C]--aad-b2c-instance <INSTANCE>\f[R] - The Azure Active Directory B2C instance to connect to.
--Use with \f[C]IndividualB2C\f[R] authentication.
--The default value is \f[C]https://login.microsoftonline.com/tfp/\f[R].
--.PP
--\f[C]-ssp|--susi-policy-id <ID>\f[R] - The sign-in and sign-up policy ID for this project.
--Use with \f[C]IndividualB2C\f[R] authentication.
--.PP
--\f[C]--aad-instance <INSTANCE>\f[R] - The Azure Active Directory instance to connect to.
--Use with \f[C]SingleOrg\f[R] authentication.
--The default value is \f[C]https://login.microsoftonline.com/\f[R].
--.PP
--\f[C]--client-id <ID>\f[R] - The Client ID for this project.
--Use with \f[C]IndividualB2C\f[R] or \f[C]SingleOrg\f[R] authentication.
--The default value is \f[C]11111111-1111-1111-11111111111111111\f[R].
--.PP
--\f[C]--domain <DOMAIN>\f[R] - The domain for the directory tenant.
--Use with \f[C]SingleOrg\f[R] or \f[C]IndividualB2C\f[R] authentication.
--The default value is \f[C]qualified.domain.name\f[R].
--.PP
--\f[C]--tenant-id <ID>\f[R] - The TenantId ID of the directory to connect to.
--Use with \f[C]SingleOrg\f[R] authentication.
--The default value is \f[C]22222222-2222-2222-2222-222222222222\f[R].
--.PP
--\f[C]-r|--org-read-access\f[R] - Allows this application read-access to the directory.
--Only applies to \f[C]SingleOrg\f[R] or \f[C]MultiOrg\f[R] authentication.
--.PP
--\f[C]--exclude-launch-settings\f[R] - Exclude \f[I]launchSettings.json\f[R] from the generated template.
--.PP
--\f[C]--no-https\f[R] - Project doesn\[cq]t require HTTPS.
--\f[C]app.UseHsts\f[R] and \f[C]app.UseHttpsRedirection\f[R] aren\[cq]t added to \f[C]Startup.Configure\f[R].
--This option only applies if \f[C]Individual\f[R], \f[C]IndividualB2C\f[R], \f[C]SingleOrg\f[R], or \f[C]MultiOrg\f[R] aren\[cq]t being used.
--.PP
--\f[C]-uld|--use-local-db\f[R] - Specifies LocalDB should be used instead of SQLite.
--Only applies to \f[C]Individual\f[R] or \f[C]IndividualB2C\f[R] authentication.
--.PP
--\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
--.PP
--\f[B]globaljson\f[R]
--.PP
--\f[C]--sdk-version <VERSION_NUMBER>\f[R] - Specifies the version of the .NET Core SDK to use in the \f[I]global.json\f[R] file.
--.SS .NET Core 2.1
-+\f[B]\f[CB]--force\f[B]\f[R]
-+.RS 2
- .PP
--\f[B]console, angular, react, reactredux, razorclasslib\f[R]
--.PP
--\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
--.PP
--\f[B]classlib\f[R]
--.PP
--\f[C]-f|--framework <FRAMEWORK>\f[R] - Specifies the framework to target.
--Values: \f[C]netcoreapp2.1\f[R] to create a .NET Core Class Library or \f[C]netstandard2.0\f[R] to create a .NET Standard Class Library.
--The default value is \f[C]netstandard2.0\f[R].
--.PP
--\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
--.PP
--\f[B]mstest, xunit\f[R]
--.PP
--\f[C]-p|--enable-pack\f[R] - Enables packaging for the project using dotnet pack.
--.PP
--\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
--.PP
--\f[B]globaljson\f[R]
--.PP
--\f[C]--sdk-version <VERSION_NUMBER>\f[R] - Specifies the version of the .NET Core SDK to use in the \f[I]global.json\f[R] file.
--.PP
--\f[B]web\f[R]
--.PP
--\f[C]--exclude-launch-settings\f[R] - Exclude \f[I]launchSettings.json\f[R] from the generated template.
--.PP
--\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
--.PP
--\f[C]--no-https\f[R] - Project doesn\[cq]t require HTTPS.
--This option only applies if \f[C]IndividualAuth\f[R] or \f[C]OrganizationalAuth\f[R] are not being used.
--.PP
--\f[B]webapi\f[R]
--.PP
--\f[C]-au|--auth <AUTHENTICATION_TYPE>\f[R] - The type of authentication to use.
--The possible values are:
--.IP \[bu] 2
--\f[C]None\f[R] - No authentication (Default).
--.IP \[bu] 2
--\f[C]IndividualB2C\f[R] - Individual authentication with Azure AD B2C.
--.IP \[bu] 2
--\f[C]SingleOrg\f[R] - Organizational authentication for a single tenant.
-+Forces content to be generated even if it would change existing files.
-+This is required when the template chosen would override existing files in the output directory.
-+.RE
- .IP \[bu] 2
--\f[C]Windows\f[R] - Windows authentication.
--.PP
--\f[C]--aad-b2c-instance <INSTANCE>\f[R] - The Azure Active Directory B2C instance to connect to.
--Use with \f[C]IndividualB2C\f[R] authentication.
--The default value is \f[C]https://login.microsoftonline.com/tfp/\f[R].
--.PP
--\f[C]-ssp|--susi-policy-id <ID>\f[R] - The sign-in and sign-up policy ID for this project.
--Use with \f[C]IndividualB2C\f[R] authentication.
--.PP
--\f[C]--aad-instance <INSTANCE>\f[R] - The Azure Active Directory instance to connect to.
--Use with \f[C]SingleOrg\f[R] authentication.
--The default value is \f[C]https://login.microsoftonline.com/\f[R].
--.PP
--\f[C]--client-id <ID>\f[R] - The Client ID for this project.
--Use with \f[C]IndividualB2C\f[R] or \f[C]SingleOrg\f[R] authentication.
--The default value is \f[C]11111111-1111-1111-11111111111111111\f[R].
--.PP
--\f[C]--domain <DOMAIN>\f[R] - The domain for the directory tenant.
--Use with \f[C]SingleOrg\f[R] or \f[C]IndividualB2C\f[R] authentication.
--The default value is \f[C]qualified.domain.name\f[R].
--.PP
--\f[C]--tenant-id <ID>\f[R] - The TenantId ID of the directory to connect to.
--Use with \f[C]SingleOrg\f[R] authentication.
--The default value is \f[C]22222222-2222-2222-2222-222222222222\f[R].
--.PP
--\f[C]-r|--org-read-access\f[R] - Allows this application read-access to the directory.
--Only applies to \f[C]SingleOrg\f[R] or \f[C]MultiOrg\f[R] authentication.
--.PP
--\f[C]--exclude-launch-settings\f[R] - Exclude \f[I]launchSettings.json\f[R] from the generated template.
--.PP
--\f[C]-uld|--use-local-db\f[R] - Specifies LocalDB should be used instead of SQLite.
--Only applies to \f[C]Individual\f[R] or \f[C]IndividualB2C\f[R] authentication.
--.PP
--\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
--.PP
--\f[C]--no-https\f[R] - Project doesn\[cq]t require HTTPS.
--\f[C]app.UseHsts\f[R] and \f[C]app.UseHttpsRedirection\f[R] aren\[cq]t added to \f[C]Startup.Configure\f[R].
--This option only applies if \f[C]Individual\f[R], \f[C]IndividualB2C\f[R], \f[C]SingleOrg\f[R], or \f[C]MultiOrg\f[R] aren\[cq]t being used.
--.PP
--\f[B]mvc, razor\f[R]
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]-au|--auth <AUTHENTICATION_TYPE>\f[R] - The type of authentication to use.
--The possible values are:
--.IP \[bu] 2
--\f[C]None\f[R] - No authentication (Default).
--.IP \[bu] 2
--\f[C]Individual\f[R] - Individual authentication.
--.IP \[bu] 2
--\f[C]IndividualB2C\f[R] - Individual authentication with Azure AD B2C.
--.IP \[bu] 2
--\f[C]SingleOrg\f[R] - Organizational authentication for a single tenant.
--.IP \[bu] 2
--\f[C]MultiOrg\f[R] - Organizational authentication for multiple tenants.
-+Prints out help for the command.
-+It can be invoked for the \f[C]dotnet new\f[R] command itself or for any template.
-+For example, \f[C]dotnet new mvc --help\f[R].
-+.RE
- .IP \[bu] 2
--\f[C]Windows\f[R] - Windows authentication.
--.PP
--\f[C]--aad-b2c-instance <INSTANCE>\f[R] - The Azure Active Directory B2C instance to connect to.
--Use with \f[C]IndividualB2C\f[R] authentication.
--The default value is \f[C]https://login.microsoftonline.com/tfp/\f[R].
--.PP
--\f[C]-ssp|--susi-policy-id <ID>\f[R] - The sign-in and sign-up policy ID for this project.
--Use with \f[C]IndividualB2C\f[R] authentication.
--.PP
--\f[C]-rp|--reset-password-policy-id <ID>\f[R] - The reset password policy ID for this project.
--Use with \f[C]IndividualB2C\f[R] authentication.
--.PP
--\f[C]-ep|--edit-profile-policy-id <ID>\f[R] - The edit profile policy ID for this project.
--Use with \f[C]IndividualB2C\f[R] authentication.
--.PP
--\f[C]--aad-instance <INSTANCE>\f[R] - The Azure Active Directory instance to connect to.
--Use with \f[C]SingleOrg\f[R] or \f[C]MultiOrg\f[R] authentication.
--The default value is \f[C]https://login.microsoftonline.com/\f[R].
--.PP
--\f[C]--client-id <ID>\f[R] - The Client ID for this project.
--Use with \f[C]IndividualB2C\f[R], \f[C]SingleOrg\f[R], or \f[C]MultiOrg\f[R] authentication.
--The default value is \f[C]11111111-1111-1111-11111111111111111\f[R].
--.PP
--\f[C]--domain <DOMAIN>\f[R] - The domain for the directory tenant.
--Use with \f[C]SingleOrg\f[R] or \f[C]IndividualB2C\f[R] authentication.
--The default value is \f[C]qualified.domain.name\f[R].
--.PP
--\f[C]--tenant-id <ID>\f[R] - The TenantId ID of the directory to connect to.
--Use with \f[C]SingleOrg\f[R] authentication.
--The default value is \f[C]22222222-2222-2222-2222-222222222222\f[R].
--.PP
--\f[C]--callback-path <PATH>\f[R] - The request path within the application\[cq]s base path of the redirect URI.
--Use with \f[C]SingleOrg\f[R] or \f[C]IndividualB2C\f[R] authentication.
--The default value is \f[C]/signin-oidc\f[R].
--.PP
--\f[C]-r|--org-read-access\f[R] - Allows this application read-access to the directory.
--Only applies to \f[C]SingleOrg\f[R] or \f[C]MultiOrg\f[R] authentication.
--.PP
--\f[C]--exclude-launch-settings\f[R] - Exclude \f[I]launchSettings.json\f[R] from the generated template.
--.PP
--\f[C]--use-browserlink\f[R] - Includes BrowserLink in the project.
--.PP
--\f[C]-uld|--use-local-db\f[R] - Specifies LocalDB should be used instead of SQLite.
--Only applies to \f[C]Individual\f[R] or \f[C]IndividualB2C\f[R] authentication.
--.PP
--\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
--.PP
--\f[C]--no-https\f[R] - Project doesn\[cq]t require HTTPS.
--\f[C]app.UseHsts\f[R] and \f[C]app.UseHttpsRedirection\f[R] aren\[cq]t added to \f[C]Startup.Configure\f[R].
--This option only applies if \f[C]Individual\f[R], \f[C]IndividualB2C\f[R], \f[C]SingleOrg\f[R], or \f[C]MultiOrg\f[R] aren\[cq]t being used.
--.PP
--\f[B]page\f[R]
--.PP
--\f[C]-na|--namespace <NAMESPACE_NAME>\f[R] - Namespace for the generated code.
--The default value is \f[C]MyApp.Namespace\f[R].
--.PP
--\f[C]-np|--no-pagemodel\f[R] - Creates the page without a PageModel.
--.PP
--\f[B]viewimports\f[R]
--.PP
--\f[C]-na|--namespace <NAMESPACE_NAME>\f[R] - Namespace for the generated code.
--The default value is \f[C]MyApp.Namespace\f[R].
--.SS .NET Core 2.0
--.PP
--\f[B]console, angular, react, reactredux\f[R]
--.PP
--\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
--.PP
--\f[B]classlib\f[R]
--.PP
--\f[C]-f|--framework <FRAMEWORK>\f[R] - Specifies the framework to target.
--Values: \f[C]netcoreapp2.0\f[R] to create a .NET Core Class Library or \f[C]netstandard2.0\f[R] to create a .NET Standard Class Library.
--The default value is \f[C]netstandard2.0\f[R].
--.PP
--\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
-+\f[B]\f[CB]-lang|--language {C#|F#|VB}\f[B]\f[R]
-+.RS 2
- .PP
--\f[B]mstest, xunit\f[R]
--.PP
--\f[C]-p|--enable-pack\f[R] - Enables packaging for the project using dotnet pack.
--.PP
--\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
--.PP
--\f[B]globaljson\f[R]
--.PP
--\f[C]--sdk-version <VERSION_NUMBER>\f[R] - Specifies the version of the .NET Core SDK to use in the \f[I]global.json\f[R] file.
--.PP
--\f[B]web\f[R]
-+The language of the template to create.
-+The language accepted varies by the template (see defaults in the arguments section).
-+Not valid for some templates.
-+.RS
- .PP
--\f[C]--use-launch-settings\f[R] - Includes \f[I]launchSettings.json\f[R] in the generated template output.
-+[!NOTE] Some shells interpret \f[C]#\f[R] as a special character.
-+In those cases, enclose the language parameter value in quotes.
-+For example, \f[C]dotnet new console -lang \[dq]F#\[dq]\f[R].
-+.RE
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-n|--name <OUTPUT_NAME>\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
-+The name for the created output.
-+If no name is specified, the name of the current directory is used.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-o|--output <OUTPUT_DIRECTORY>\f[B]\f[R]
-+.RS 2
- .PP
--\f[B]webapi\f[R]
-+Location to place the generated output.
-+The default is the current directory.
-+.RE
-+.SS Template options
- .PP
--\f[C]-au|--auth <AUTHENTICATION_TYPE>\f[R] - The type of authentication to use.
--The possible values are:
-+Each template may have additional options defined.
-+For more information, see .NET default templates for \f[C]dotnet new\f[R].
-+.SH EXAMPLES
- .IP \[bu] 2
--\f[C]None\f[R] - No authentication (Default).
-+Create a C# console application project:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet new console
-+\f[R]
-+.fi
-+.RE
- .IP \[bu] 2
--\f[C]IndividualB2C\f[R] - Individual authentication with Azure AD B2C.
-+Create an F# console application project in the current directory:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet new console --language \[dq]F#\[dq]
-+\f[R]
-+.fi
-+.RE
- .IP \[bu] 2
--\f[C]SingleOrg\f[R] - Organizational authentication for a single tenant.
-+Create a .NET Standard 2.0 class library project in the specified directory:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet new classlib --framework \[dq]netstandard2.0\[dq] -o MyLibrary
-+\f[R]
-+.fi
-+.RE
- .IP \[bu] 2
--\f[C]Windows\f[R] - Windows authentication.
--.PP
--\f[C]--aad-b2c-instance <INSTANCE>\f[R] - The Azure Active Directory B2C instance to connect to.
--Use with \f[C]IndividualB2C\f[R] authentication.
--The default value is \f[C]https://login.microsoftonline.com/tfp/\f[R].
--.PP
--\f[C]-ssp|--susi-policy-id <ID>\f[R] - The sign-in and sign-up policy ID for this project.
--Use with \f[C]IndividualB2C\f[R] authentication.
--.PP
--\f[C]--aad-instance <INSTANCE>\f[R] - The Azure Active Directory instance to connect to.
--Use with \f[C]SingleOrg\f[R] authentication.
--The default value is \f[C]https://login.microsoftonline.com/\f[R].
--.PP
--\f[C]--client-id <ID>\f[R] - The Client ID for this project.
--Use with \f[C]IndividualB2C\f[R] or \f[C]SingleOrg\f[R] authentication.
--The default value is \f[C]11111111-1111-1111-11111111111111111\f[R].
--.PP
--\f[C]--domain <DOMAIN>\f[R] - The domain for the directory tenant.
--Use with \f[C]SingleOrg\f[R] or \f[C]IndividualB2C\f[R] authentication.
--The default value is \f[C]qualified.domain.name\f[R].
--.PP
--\f[C]--tenant-id <ID>\f[R] - The TenantId ID of the directory to connect to.
--Use with \f[C]SingleOrg\f[R] authentication.
--The default value is \f[C]22222222-2222-2222-2222-222222222222\f[R].
--.PP
--\f[C]-r|--org-read-access\f[R] - Allows this application read-access to the directory.
--Only applies to \f[C]SingleOrg\f[R] or \f[C]MultiOrg\f[R] authentication.
--.PP
--\f[C]--use-launch-settings\f[R] - Includes \f[I]launchSettings.json\f[R] in the generated template output.
--.PP
--\f[C]-uld|--use-local-db\f[R] - Specifies LocalDB should be used instead of SQLite.
--Only applies to \f[C]Individual\f[R] or \f[C]IndividualB2C\f[R] authentication.
--.PP
--\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
--.PP
--\f[B]mvc, razor\f[R]
--.PP
--\f[C]-au|--auth <AUTHENTICATION_TYPE>\f[R] - The type of authentication to use.
--The possible values are:
-+Create a new ASP.NET Core C# MVC project in the current directory with no authentication:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet new mvc -au None
-+\f[R]
-+.fi
-+.RE
- .IP \[bu] 2
--\f[C]None\f[R] - No authentication (Default).
-+Create a new xUnit project:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet new xunit
-+\f[R]
-+.fi
-+.RE
- .IP \[bu] 2
--\f[C]Individual\f[R] - Individual authentication.
-+Create a \f[I]global.json\f[R] in the current directory setting the SDK version to 3.1.101:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet new globaljson --sdk-version 3.1.101
-+\f[R]
-+.fi
-+.RE
-+.SS See also
- .IP \[bu] 2
--\f[C]IndividualB2C\f[R] - Individual authentication with Azure AD B2C.
-+dotnet new \[en]list option
- .IP \[bu] 2
--\f[C]SingleOrg\f[R] - Organizational authentication for a single tenant.
-+dotnet new \[en]search option
- .IP \[bu] 2
--\f[C]MultiOrg\f[R] - Organizational authentication for multiple tenants.
-+dotnet new \[en]install option
- .IP \[bu] 2
--\f[C]Windows\f[R] - Windows authentication.
--.PP
--\f[C]--aad-b2c-instance <INSTANCE>\f[R] - The Azure Active Directory B2C instance to connect to.
--Use with \f[C]IndividualB2C\f[R] authentication.
--The default value is \f[C]https://login.microsoftonline.com/tfp/\f[R].
--.PP
--\f[C]-ssp|--susi-policy-id <ID>\f[R] - The sign-in and sign-up policy ID for this project.
--Use with \f[C]IndividualB2C\f[R] authentication.
--.PP
--\f[C]-rp|--reset-password-policy-id <ID>\f[R] - The reset password policy ID for this project.
--Use with \f[C]IndividualB2C\f[R] authentication.
--.PP
--\f[C]-ep|--edit-profile-policy-id <ID>\f[R] - The edit profile policy ID for this project.
--Use with \f[C]IndividualB2C\f[R] authentication.
--.PP
--\f[C]--aad-instance <INSTANCE>\f[R] - The Azure Active Directory instance to connect to.
--Use with \f[C]SingleOrg\f[R] or \f[C]MultiOrg\f[R] authentication.
--The default value is \f[C]https://login.microsoftonline.com/\f[R].
--.PP
--\f[C]--client-id <ID>\f[R] - The Client ID for this project.
--Use with \f[C]IndividualB2C\f[R], \f[C]SingleOrg\f[R], or \f[C]MultiOrg\f[R] authentication.
--The default value is \f[C]11111111-1111-1111-11111111111111111\f[R].
--.PP
--\f[C]--domain <DOMAIN>\f[R] - The domain for the directory tenant.
--Use with \f[C]SingleOrg\f[R] or \f[C]IndividualB2C\f[R] authentication.
--The default value is \f[C]qualified.domain.name\f[R].
--.PP
--\f[C]--tenant-id <ID>\f[R] - The TenantId ID of the directory to connect to.
--Use with \f[C]SingleOrg\f[R] authentication.
--The default value is \f[C]22222222-2222-2222-2222-222222222222\f[R].
--.PP
--\f[C]--callback-path <PATH>\f[R] - The request path within the application\[cq]s base path of the redirect URI.
--Use with \f[C]SingleOrg\f[R] or \f[C]IndividualB2C\f[R] authentication.
--The default value is \f[C]/signin-oidc\f[R].
--.PP
--\f[C]-r|--org-read-access\f[R] - Allows this application read-access to the directory.
--Only applies to \f[C]SingleOrg\f[R] or \f[C]MultiOrg\f[R] authentication.
--.PP
--\f[C]--use-launch-settings\f[R] - Includes \f[I]launchSettings.json\f[R] in the generated template output.
--.PP
--\f[C]--use-browserlink\f[R] - Includes BrowserLink in the project.
--.PP
--\f[C]-uld|--use-local-db\f[R] - Specifies LocalDB should be used instead of SQLite.
--Only applies to \f[C]Individual\f[R] or \f[C]IndividualB2C\f[R] authentication.
--.PP
--\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
--.PP
--\f[B]page\f[R]
--.PP
--\f[C]-na|--namespace <NAMESPACE_NAME>\f[R]- Namespace for the generated code.
--The default value is \f[C]MyApp.Namespace\f[R].
--.PP
--\f[C]-np|--no-pagemodel\f[R] - Creates the page without a PageModel.
--.PP
--\f[B]viewimports\f[R]
--.PP
--\f[C]-na|--namespace <NAMESPACE_NAME>\f[R]- Namespace for the generated code.
--The default value is \f[C]MyApp.Namespace\f[R].
--.SS .NET Core 1.x
--.PP
--\f[B]console, xunit, mstest, web, webapi\f[R]
--.PP
--\f[C]-f|--framework <FRAMEWORK>\f[R] - Specifies the framework to target.
--Values: \f[C]netcoreapp1.0\f[R] or \f[C]netcoreapp1.1\f[R].
--The default value is \f[C]netcoreapp1.0\f[R].
--.PP
--\f[B]classlib\f[R]
--.PP
--\f[C]-f|--framework <FRAMEWORK>\f[R] - Specifies the framework to target.
--Values: \f[C]netcoreapp1.0\f[R], \f[C]netcoreapp1.1\f[R], or \f[C]netstandard1.0\f[R] to \f[C]netstandard1.6\f[R].
--The default value is \f[C]netstandard1.4\f[R].
--.PP
--\f[B]mvc\f[R]
--.PP
--\f[C]-f|--framework <FRAMEWORK>\f[R] - Specifies the framework to target.
--Values: \f[C]netcoreapp1.0\f[R] or \f[C]netcoreapp1.1\f[R].
--The default value is \f[C]netcoreapp1.0\f[R].
--.PP
--\f[C]-au|--auth <AUTHENTICATION_TYPE>\f[R] - The type of authentication to use.
--Values: \f[C]None\f[R] or \f[C]Individual\f[R].
--The default value is \f[C]None\f[R].
--.PP
--\f[C]-uld|--use-local-db\f[R] - Specifies whether or not to use LocalDB instead of SQLite.
--Values: \f[C]true\f[R] or \f[C]false\f[R].
--The default value is \f[C]false\f[R].
--.PP
-- * * * * *
--.SH EXAMPLES
--.PP
--Create a C# console application project by specifying the template name:
--.PP
--\f[C]dotnet new \[dq]Console Application\[dq]\f[R]
--.PP
--Create an F# console application project in the current directory:
--.PP
--\f[C]dotnet new console -lang F#\f[R]
--.PP
--Create a .NET Standard class library project in the specified directory (available only with .NET Core SDK 2.0 or later versions):
--.PP
--\f[C]dotnet new classlib -lang VB -o MyLibrary\f[R]
--.PP
--Create a new ASP.NET Core C# MVC project in the current directory with no authentication:
--.PP
--\f[C]dotnet new mvc -au None\f[R]
--.PP
--Create a new xUnit project:
--.PP
--\f[C]dotnet new xunit\f[R]
--.PP
--List all templates available for MVC:
--.PP
--\f[C]dotnet new mvc -l\f[R]
--.PP
--List all templates matching the \f[I]we\f[R] substring.
--No exact match is found, so substring matching runs against both the short name and name columns.
--.PP
--\f[C]dotnet new we -l\f[R]
--.PP
--Attempt to invoke the template matching \f[I]ng\f[R].
--If a single match can\[cq]t be determined, list the templates that are partial matches.
--.PP
--\f[C]dotnet new ng\f[R]
--.PP
--Install version 2.0 of the Single Page Application templates for ASP.NET Core (command option available for .NET Core SDK 1.1 and later versions only):
--.PP
--\f[C]dotnet new -i Microsoft.DotNet.Web.Spa.ProjectTemplates::2.0.0\f[R]
--.PP
--Create a \f[I]global.json\f[R] in the current directory setting the SDK version to 2.0.0 (available only with .NET Core SDK 2.0 or later versions):
--.PP
--\f[C]dotnet new globaljson --sdk-version 2.0.0\f[R]
--.SS See also
-+\&.NET default templates for dotnet new
- .IP \[bu] 2
- Custom templates for dotnet new
- .IP \[bu] 2
- Create a custom template for dotnet new
- .IP \[bu] 2
--dotnet/dotnet-template-samples GitHub repo
--.IP \[bu] 2
--Available templates for dotnet new
-+dotnet/dotnet-template-samples GitHub repo (https://github.com/dotnet/dotnet-template-samples)
-diff --git a/documentation/manpages/sdk/dotnet-nuget-add-source.1 b/documentation/manpages/sdk/dotnet-nuget-add-source.1
-new file mode 100644
-index 0000000000..30e7176ab9
---- /dev/null
-+++ b/documentation/manpages/sdk/dotnet-nuget-add-source.1
-@@ -0,0 +1,123 @@
-+.\" Automatically generated by Pandoc 2.14.1
-+.\"
-+.TH "" "1" "" "" ".NET"
-+.hy
-+.SH dotnet nuget add source
-+.PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 3.1.200 SDK and later versions
-+.SH NAME
-+.PP
-+\f[C]dotnet nuget add source\f[R] - Add a NuGet source.
-+.SH SYNOPSIS
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget add source <PACKAGE_SOURCE_PATH> [--name <SOURCE_NAME>] [--username <USER>]
-+ [--password <PASSWORD>] [--store-password-in-clear-text]
-+ [--valid-authentication-types <TYPES>] [--configfile <FILE>]
-+
-+dotnet nuget add source -h|--help
-+\f[R]
-+.fi
-+.SH DESCRIPTION
-+.PP
-+The \f[C]dotnet nuget add source\f[R] command adds a new package source to your NuGet configuration files.
-+.RS
-+.PP
-+[!WARNING] When adding multiple package sources, be careful not to introduce a dependency confusion vulnerability (https://aka.ms/pkg-sec-wp).
-+.RE
-+.SS Arguments
-+.IP \[bu] 2
-+\f[B]\f[CB]PACKAGE_SOURCE_PATH\f[B]\f[R]
-+.RS 2
-+.PP
-+Path to the package source.
-+.RE
-+.SH OPTIONS
-+.IP \[bu] 2
-+\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
-+.RS 2
-+.PP
-+The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
-+If specified, only the settings from this file will be used.
-+If not specified, the hierarchy of configuration files from the current directory will be used.
-+For more information, see Common NuGet Configurations.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-n|--name <SOURCE_NAME>\f[B]\f[R]
-+.RS 2
-+.PP
-+Name of the source.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-p|--password <PASSWORD>\f[B]\f[R]
-+.RS 2
-+.PP
-+Password to be used when connecting to an authenticated source.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--store-password-in-clear-text\f[B]\f[R]
-+.RS 2
-+.PP
-+Enables storing portable package source credentials by disabling password encryption.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-u|--username <USER>\f[B]\f[R]
-+.RS 2
-+.PP
-+Username to be used when connecting to an authenticated source.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--valid-authentication-types <TYPES>\f[B]\f[R]
-+.RS 2
-+.PP
-+Comma-separated list of valid authentication types for this source.
-+Set this to \f[C]basic\f[R] if the server advertises NTLM or Negotiate and your credentials must be sent using the Basic mechanism, for instance when using a PAT with on-premises Azure DevOps Server.
-+Other valid values include \f[C]negotiate\f[R], \f[C]kerberos\f[R], \f[C]ntlm\f[R], and \f[C]digest\f[R], but these values are unlikely to be useful.
-+.RE
-+.SH EXAMPLES
-+.IP \[bu] 2
-+Add \f[C]nuget.org\f[R] as a source:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget add source https://api.nuget.org/v3/index.json -n nuget.org
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Add \f[C]c:\[rs]packages\f[R] as a local source:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget add source c:\[rs]packages
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Add a source that needs authentication:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget add source https://someServer/myTeam -n myTeam -u myUsername -p myPassword --store-password-in-clear-text
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Add a source that needs authentication (then go install credential provider):
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget add source https://azureartifacts.microsoft.com/myTeam -n myTeam
-+\f[R]
-+.fi
-+.RE
-+.SS See also
-+.IP \[bu] 2
-+Package source sections in NuGet.config files
-+.IP \[bu] 2
-+sources command (nuget.exe)
-diff --git a/documentation/manpages/sdk/dotnet-nuget-delete.1 b/documentation/manpages/sdk/dotnet-nuget-delete.1
-index 18d1261714..931ca4ef7b 100644
---- a/documentation/manpages/sdk/dotnet-nuget-delete.1
-+++ b/documentation/manpages/sdk/dotnet-nuget-delete.1
-@@ -1,10 +1,10 @@
--.\" Automatically generated by Pandoc 2.7.2
-+.\" Automatically generated by Pandoc 2.14.1
- .\"
--.TH "dotnet nuget delete command" "1" "" "" ".NET Core"
-+.TH "" "1" "" "" ".NET"
- .hy
- .SH dotnet nuget delete
- .PP
--\f[B]This topic applies to: \[OK]\f[R] .NET Core 1.x SDK and later versions
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 1.x SDK and later versions
- .SH NAME
- .PP
- \f[C]dotnet nuget delete\f[R] - Deletes or unlists a package from the server.
-@@ -12,15 +12,17 @@
- .IP
- .nf
- \f[C]
--dotnet nuget delete [<PACKAGE_NAME> <PACKAGE_VERSION>] [--force-english-output] [--interactive] [-k|--api-key] [--no-service-endpoint]
-- [--non-interactive] [-s|--source]
--dotnet nuget delete [-h|--help]
-+dotnet nuget delete [<PACKAGE_NAME> <PACKAGE_VERSION>] [--force-english-output]
-+ [--interactive] [-k|--api-key <API_KEY>] [--no-service-endpoint]
-+ [--non-interactive] [-s|--source <SOURCE>]
-+
-+dotnet nuget delete -h|--help
- \f[R]
- .fi
- .SH DESCRIPTION
- .PP
- The \f[C]dotnet nuget delete\f[R] command deletes or unlists a package from the server.
--For nuget.org, the action is to unlist the package.
-+For nuget.org (https://www.nuget.org/), the action is to unlist the package.
- .SS Arguments
- .IP \[bu] 2
- \f[B]\f[CB]PACKAGE_NAME\f[B]\f[R]
-@@ -42,17 +44,18 @@ Version of the package to delete.
- Forces the application to run using an invariant, English-based culture.
- .RE
- .IP \[bu] 2
--\f[B]\f[CB]-h|--help\f[B]\f[R]
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
- .RS 2
- .PP
--Prints out a short help for the command.
-+Prints out a description of how to use the command.
- .RE
- .IP \[bu] 2
- \f[B]\f[CB]--interactive\f[B]\f[R]
- .RS 2
- .PP
--Allows the command to block and requires manual action for operations like authentication.
--Option available since .NET Core 2.2 SDK.
-+Allows the command to stop and wait for user input or action.
-+For example, to complete authentication.
-+Available since .NET Core 3.0 SDK.
- .RE
- .IP \[bu] 2
- \f[B]\f[CB]-k|--api-key <API_KEY>\f[B]\f[R]
-@@ -102,5 +105,3 @@ dotnet nuget delete Microsoft.AspNetCore.Mvc 1.0 --non-interactive
- \f[R]
- .fi
- .RE
--.SH AUTHORS
--karann-msft.
-diff --git a/documentation/manpages/sdk/dotnet-nuget-disable-source.1 b/documentation/manpages/sdk/dotnet-nuget-disable-source.1
-new file mode 100644
-index 0000000000..82b33e9876
---- /dev/null
-+++ b/documentation/manpages/sdk/dotnet-nuget-disable-source.1
-@@ -0,0 +1,55 @@
-+.\" Automatically generated by Pandoc 2.14.1
-+.\"
-+.TH "" "1" "" "" ".NET"
-+.hy
-+.SH dotnet nuget disable source
-+.PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 3.1.200 SDK and later versions
-+.SH NAME
-+.PP
-+\f[C]dotnet nuget disable source\f[R] - Disable a NuGet source.
-+.SH SYNOPSIS
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget disable source <NAME> [--configfile <FILE>]
-+
-+dotnet nuget disable source -h|--help
-+\f[R]
-+.fi
-+.SH DESCRIPTION
-+.PP
-+The \f[C]dotnet nuget disable source\f[R] command disables an existing source in your NuGet configuration files.
-+.SS Arguments
-+.IP \[bu] 2
-+\f[B]\f[CB]NAME\f[B]\f[R]
-+.RS 2
-+.PP
-+Name of the source.
-+.RE
-+.SH OPTIONS
-+.IP \[bu] 2
-+\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
-+.RS 2
-+.PP
-+The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
-+If specified, only the settings from this file will be used.
-+If not specified, the hierarchy of configuration files from the current directory will be used.
-+For more information, see Common NuGet Configurations.
-+.RE
-+.SH EXAMPLES
-+.IP \[bu] 2
-+Disable a source with name of \f[C]mySource\f[R]:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget disable source mySource
-+\f[R]
-+.fi
-+.RE
-+.SS See also
-+.IP \[bu] 2
-+Package source sections in NuGet.config files
-+.IP \[bu] 2
-+sources command (nuget.exe)
-diff --git a/documentation/manpages/sdk/dotnet-nuget-enable-source.1 b/documentation/manpages/sdk/dotnet-nuget-enable-source.1
-new file mode 100644
-index 0000000000..fd3703fc79
---- /dev/null
-+++ b/documentation/manpages/sdk/dotnet-nuget-enable-source.1
-@@ -0,0 +1,55 @@
-+.\" Automatically generated by Pandoc 2.14.1
-+.\"
-+.TH "" "1" "" "" ".NET"
-+.hy
-+.SH dotnet nuget enable source
-+.PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 3.1.200 SDK and later versions
-+.SH NAME
-+.PP
-+\f[C]dotnet nuget enable source\f[R] - Enable a NuGet source.
-+.SH SYNOPSIS
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget enable source <NAME> [--configfile <FILE>]
-+
-+dotnet nuget enable source -h|--help
-+\f[R]
-+.fi
-+.SH DESCRIPTION
-+.PP
-+The \f[C]dotnet nuget enable source\f[R] command enables an existing source in your NuGet configuration files.
-+.SS Arguments
-+.IP \[bu] 2
-+\f[B]\f[CB]NAME\f[B]\f[R]
-+.RS 2
-+.PP
-+Name of the source.
-+.RE
-+.SH OPTIONS
-+.IP \[bu] 2
-+\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
-+.RS 2
-+.PP
-+The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
-+If specified, only the settings from this file will be used.
-+If not specified, the hierarchy of configuration files from the current directory will be used.
-+For more information, see Common NuGet Configurations.
-+.RE
-+.SH EXAMPLES
-+.IP \[bu] 2
-+Enable a source with name of \f[C]mySource\f[R]:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget enable source mySource
-+\f[R]
-+.fi
-+.RE
-+.SS See also
-+.IP \[bu] 2
-+Package source sections in NuGet.config files
-+.IP \[bu] 2
-+sources command (nuget.exe)
-diff --git a/documentation/manpages/sdk/dotnet-nuget-list-source.1 b/documentation/manpages/sdk/dotnet-nuget-list-source.1
-new file mode 100644
-index 0000000000..4058caab9f
---- /dev/null
-+++ b/documentation/manpages/sdk/dotnet-nuget-list-source.1
-@@ -0,0 +1,54 @@
-+.\" Automatically generated by Pandoc 2.14.1
-+.\"
-+.TH "" "1" "" "" ".NET"
-+.hy
-+.SH dotnet nuget list source
-+.PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 3.1.200 SDK and later versions
-+.SH NAME
-+.PP
-+\f[C]dotnet nuget list source\f[R] - Lists all configured NuGet sources.
-+.SH SYNOPSIS
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget list source [--format [Detailed|Short]] [--configfile <FILE>]
-+
-+dotnet nuget list source -h|--help
-+\f[R]
-+.fi
-+.SH DESCRIPTION
-+.PP
-+The \f[C]dotnet nuget list source\f[R] command lists all existing sources from your NuGet configuration files.
-+.SH OPTIONS
-+.IP \[bu] 2
-+\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
-+.RS 2
-+.PP
-+The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
-+If specified, only the settings from this file will be used.
-+If not specified, the hierarchy of configuration files from the current directory will be used.
-+For more information, see Common NuGet Configurations.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--format [Detailed|Short]\f[B]\f[R]
-+.RS 2
-+.PP
-+The format of the list command output: \f[C]Detailed\f[R] (the default) and \f[C]Short\f[R].
-+.RE
-+.SH EXAMPLES
-+.IP \[bu] 2
-+List configured sources from the current directory:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget list source
-+\f[R]
-+.fi
-+.RE
-+.SS See also
-+.IP \[bu] 2
-+Package source sections in NuGet.config files
-+.IP \[bu] 2
-+sources command (nuget.exe)
-diff --git a/documentation/manpages/sdk/dotnet-nuget-locals.1 b/documentation/manpages/sdk/dotnet-nuget-locals.1
-index 99d8d9eaf1..dc77be9fc7 100644
---- a/documentation/manpages/sdk/dotnet-nuget-locals.1
-+++ b/documentation/manpages/sdk/dotnet-nuget-locals.1
-@@ -1,10 +1,10 @@
--.\" Automatically generated by Pandoc 2.7.2
-+.\" Automatically generated by Pandoc 2.14.1
- .\"
--.TH "dotnet nuget locals command" "1" "" "" ".NET Core"
-+.TH "" "1" "" "" ".NET"
- .hy
- .SH dotnet nuget locals
- .PP
--\f[B]This topic applies to: \[OK]\f[R] .NET Core 1.x SDK and later versions
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.x SDK and later versions
- .SH NAME
- .PP
- \f[C]dotnet nuget locals\f[R] - Clears or lists local NuGet resources.
-@@ -13,7 +13,8 @@
- .nf
- \f[C]
- dotnet nuget locals <CACHE_LOCATION> [(-c|--clear)|(-l|--list)] [--force-english-output]
--dotnet nuget locals [-h|--help]
-+
-+dotnet nuget locals -h|--help
- \f[R]
- .fi
- .SH DESCRIPTION
-@@ -46,10 +47,10 @@ The other cache locations aren\[cq]t affected.
- Forces the application to run using an invariant, English-based culture.
- .RE
- .IP \[bu] 2
--\f[B]\f[CB]-h|--help\f[B]\f[R]
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
- .RS 2
- .PP
--Prints out a short help for the command.
-+Prints out a description of how to use the command.
- .RE
- .IP \[bu] 2
- \f[B]\f[CB]-c|--clear\f[B]\f[R]
-@@ -73,7 +74,7 @@ Displays the paths of all the local cache directories (http-cache directory, glo
- .IP
- .nf
- \f[C]
--dotnet nuget locals \[en]l all
-+dotnet nuget locals all -l
- \f[R]
- .fi
- .RE
-@@ -83,7 +84,7 @@ Displays the path for the local http-cache directory:
- .IP
- .nf
- \f[C]
--dotnet nuget locals --list http-cache
-+dotnet nuget locals http-cache --list
- \f[R]
- .fi
- .RE
-@@ -93,7 +94,7 @@ Clears all files from all local cache directories (http-cache directory, global-
- .IP
- .nf
- \f[C]
--dotnet nuget locals --clear all
-+dotnet nuget locals all --clear
- \f[R]
- .fi
- .RE
-@@ -103,7 +104,7 @@ Clears all files in local global-packages cache directory:
- .IP
- .nf
- \f[C]
--dotnet nuget locals -c global-packages
-+dotnet nuget locals global-packages -c
- \f[R]
- .fi
- .RE
-@@ -113,12 +114,10 @@ Clears all files in local temporary cache directory:
- .IP
- .nf
- \f[C]
--dotnet nuget locals -c temp
-+dotnet nuget locals temp -c
- \f[R]
- .fi
- .RE
- .SS Troubleshooting
- .PP
- For information on common problems and errors while using the \f[C]dotnet nuget locals\f[R] command, see Managing the NuGet cache.
--.SH AUTHORS
--karann-msft.
-diff --git a/documentation/manpages/sdk/dotnet-nuget-push.1 b/documentation/manpages/sdk/dotnet-nuget-push.1
-index 000e3e567e..3727158258 100644
---- a/documentation/manpages/sdk/dotnet-nuget-push.1
-+++ b/documentation/manpages/sdk/dotnet-nuget-push.1
-@@ -1,10 +1,10 @@
--.\" Automatically generated by Pandoc 2.7.2
-+.\" Automatically generated by Pandoc 2.14.1
- .\"
--.TH "dotnet nuget push command" "1" "" "" ".NET Core"
-+.TH "" "1" "" "" ".NET"
- .hy
- .SH dotnet nuget push
- .PP
--\f[B]This topic applies to: \[OK]\f[R] .NET Core 1.x SDK and later versions
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.x SDK and later versions
- .SH NAME
- .PP
- \f[C]dotnet nuget push\f[R] - Pushes a package to the server and publishes it.
-@@ -12,9 +12,13 @@
- .IP
- .nf
- \f[C]
--dotnet nuget push [<ROOT>] [-d|--disable-buffering] [--force-english-output] [--interactive] [-k|--api-key] [-n|--no-symbols]
-- [--no-service-endpoint] [-s|--source] [-sk|--symbol-api-key] [-ss|--symbol-source] [-t|--timeout]
--dotnet nuget push [-h|--help]
-+dotnet nuget push [<ROOT>] [-d|--disable-buffering] [--force-english-output]
-+ [--interactive] [-k|--api-key <API_KEY>] [-n|--no-symbols]
-+ [--no-service-endpoint] [-s|--source <SOURCE>] [--skip-duplicate]
-+ [-sk|--symbol-api-key <API_KEY>] [-ss|--symbol-source <SOURCE>]
-+ [-t|--timeout <TIMEOUT>]
-+
-+dotnet nuget push -h|--help
- \f[R]
- .fi
- .SH DESCRIPTION
-@@ -23,6 +27,10 @@ The \f[C]dotnet nuget push\f[R] command pushes a package to the server and publi
- The push command uses server and credential details found in the system\[cq]s NuGet config file or chain of config files.
- For more information on config files, see Configuring NuGet Behavior.
- NuGet\[cq]s default configuration is obtained by loading \f[I]%AppData%.config\f[R] (Windows) or \f[I]$HOME/.local/share\f[R] (Linux/macOS), then loading any \f[I]nuget.config\f[R] or \f[I].nuget.config\f[R] starting from the root of drive and ending in the current directory.
-+.PP
-+The command pushes an existing package.
-+It doesn\[cq]t create a package.
-+To create a package, use \f[C]dotnet pack\f[R].
- .SS Arguments
- .IP \[bu] 2
- \f[B]\f[CB]ROOT\f[B]\f[R]
-@@ -44,15 +52,18 @@ Disables buffering when pushing to an HTTP(S) server to reduce memory usage.
- Forces the application to run using an invariant, English-based culture.
- .RE
- .IP \[bu] 2
--\f[B]\f[CB]-h|--help\f[B]\f[R]
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
-+.RS 2
- .PP
--Prints out a short help for the command.
-+Prints out a description of how to use the command.
-+.RE
- .IP \[bu] 2
- \f[B]\f[CB]--interactive\f[B]\f[R]
- .RS 2
- .PP
--Allows the command to block and requires manual action for operations like authentication.
--Option available since .NET Core 2.2 SDK.
-+Allows the command to stop and wait for user input or action.
-+For example, to complete authentication.
-+Available since .NET Core 3.0 SDK.
- .RE
- .IP \[bu] 2
- \f[B]\f[CB]-k|--api-key <API_KEY>\f[B]\f[R]
-@@ -78,7 +89,16 @@ Option available since .NET Core 2.1 SDK.
- .RS 2
- .PP
- Specifies the server URL.
--This option is required unless \f[C]DefaultPushSource\f[R] config value is set in the NuGet config file.
-+NuGet identifies a UNC or local folder source and simply copies the file there instead of pushing it using HTTP.
-+> [!IMPORTANT] > Starting with NuGet 3.4.2, this is a mandatory parameter unless the NuGet config file specifies a \f[C]DefaultPushSource\f[R] value.
-+For more information, see Configuring NuGet behavior.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--skip-duplicate\f[B]\f[R]
-+.RS 2
-+.PP
-+When pushing multiple packages to an HTTP(S) server, treats any 409 Conflict response as a warning so that the push can continue.
-+Available since .NET Core 3.1 SDK.
- .RE
- .IP \[bu] 2
- \f[B]\f[CB]-sk|--symbol-api-key <API_KEY>\f[B]\f[R]
-@@ -98,11 +118,11 @@ Specifies the symbol server URL.
- .PP
- Specifies the timeout for pushing to a server in seconds.
- Defaults to 300 seconds (5 minutes).
--Specifying 0 (zero seconds) applies the default value.
-+Specifying 0 applies the default value.
- .RE
- .SH EXAMPLES
- .IP \[bu] 2
--Pushes \f[I]foo.nupkg\f[R] to the default push source, specifying an API key:
-+Push \f[I]foo.nupkg\f[R] to the default push source specified in the NuGet config file, using an API key:
- .RS 2
- .IP
- .nf
-@@ -112,17 +132,25 @@ dotnet nuget push foo.nupkg -k 4003d786-cc37-4004-bfdf-c4f3e8ef9b3a
- .fi
- .RE
- .IP \[bu] 2
--Push \f[I]foo.nupkg\f[R] to the custom push source \f[C]https://customsource\f[R], specifying an API key:
-+Push \f[I]foo.nupkg\f[R] to the official NuGet server, specifying an API key:
- .RS 2
- .IP
- .nf
- \f[C]
-+dotnet nuget push foo.nupkg -k 4003d786-cc37-4004-bfdf-c4f3e8ef9b3a -s https://api.nuget.org/v3/index.json
-+\f[R]
-+.fi
-+.IP \[bu] 2
-+Push \f[I]foo.nupkg\f[R] to the custom push source \f[C]https://customsource\f[R], specifying an API key:
-+.IP
-+.nf
-+\f[C]
- dotnet nuget push foo.nupkg -k 4003d786-cc37-4004-bfdf-c4f3e8ef9b3a -s https://customsource/
- \f[R]
- .fi
- .RE
- .IP \[bu] 2
--Pushes \f[I]foo.nupkg\f[R] to the default push source:
-+Push \f[I]foo.nupkg\f[R] to the default push source specified in the NuGet config file:
- .RS 2
- .IP
- .nf
-@@ -132,7 +160,7 @@ dotnet nuget push foo.nupkg
- .fi
- .RE
- .IP \[bu] 2
--Pushes \f[I]foo.symbols.nupkg\f[R] to the default symbols source:
-+Push \f[I]foo.symbols.nupkg\f[R] to the default symbols source:
- .RS 2
- .IP
- .nf
-@@ -142,7 +170,7 @@ dotnet nuget push foo.symbols.nupkg
- .fi
- .RE
- .IP \[bu] 2
--Pushes \f[I]foo.nupkg\f[R] to the default push source, specifying a 360-second timeout:
-+Push \f[I]foo.nupkg\f[R] to the default push source specified in the NuGet config file, with a 360-second timeout:
- .RS 2
- .IP
- .nf
-@@ -152,19 +180,45 @@ dotnet nuget push foo.nupkg --timeout 360
- .fi
- .RE
- .IP \[bu] 2
--Pushes all \f[I].nupkg\f[R] files in the current directory to the default push source:
-+Push all \f[I].nupkg\f[R] files in the current directory to the default push source specified in the NuGet config file:
- .RS 2
- .IP
- .nf
- \f[C]
--dotnet nuget push *.nupkg
-+dotnet nuget push \[dq]*.nupkg\[dq]
- \f[R]
- .fi
- .RS
- .PP
- [!NOTE] If this command doesn\[cq]t work, it might be due to a bug that existed in older versions of the SDK (.NET Core 2.1 SDK and earlier versions).
--To fix this, upgrade your SDK version or run the following command instead: \f[C]dotnet nuget push **/*.nupkg\f[R]
-+To fix this, upgrade your SDK version or run the following command instead: \f[C]dotnet nuget push \[dq]**/*.nupkg\[dq]\f[R]
-+.RE
-+.RS
-+.PP
-+[!NOTE] The enclosing quotes are required for shells such as bash that perform file globbing.
-+For more information, see NuGet/Home#4393 (https://github.com/NuGet/Home/issues/4393#issuecomment-667618120).
- .RE
- .RE
--.SH AUTHORS
--karann-msft.
-+.IP \[bu] 2
-+Push all \f[I].nupkg\f[R] files to the default push source specified in the NuGet config file, even if a 409 Conflict response is returned by an HTTP(S) server:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget push \[dq]*.nupkg\[dq] --skip-duplicate
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Push all \f[I].nupkg\f[R] files in the current directory to a local feed directory:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget push \[dq]*.nupkg\[dq] -s c:\[rs]mydir
-+\f[R]
-+.fi
-+.PP
-+This command doesn\[cq]t store packages in a hierarchical folder structure, which is recommended to optimize performance.
-+For more information, see Local feeds.
-+.RE
-diff --git a/documentation/manpages/sdk/dotnet-nuget-remove-source.1 b/documentation/manpages/sdk/dotnet-nuget-remove-source.1
-new file mode 100644
-index 0000000000..1beede5e47
---- /dev/null
-+++ b/documentation/manpages/sdk/dotnet-nuget-remove-source.1
-@@ -0,0 +1,55 @@
-+.\" Automatically generated by Pandoc 2.14.1
-+.\"
-+.TH "" "1" "" "" ".NET"
-+.hy
-+.SH dotnet nuget remove source
-+.PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 3.1.200 SDK and later versions
-+.SH NAME
-+.PP
-+\f[C]dotnet nuget remove source\f[R] - Remove a NuGet source.
-+.SH SYNOPSIS
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget remove source <NAME> [--configfile <FILE>]
-+
-+dotnet nuget remove source -h|--help
-+\f[R]
-+.fi
-+.SH DESCRIPTION
-+.PP
-+The \f[C]dotnet nuget remove source\f[R] command removes an existing source from your NuGet configuration files.
-+.SS Arguments
-+.IP \[bu] 2
-+\f[B]\f[CB]NAME\f[B]\f[R]
-+.RS 2
-+.PP
-+Name of the source.
-+.RE
-+.SH OPTIONS
-+.IP \[bu] 2
-+\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
-+.RS 2
-+.PP
-+The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
-+If specified, only the settings from this file will be used.
-+If not specified, the hierarchy of configuration files from the current directory will be used.
-+For more information, see Common NuGet Configurations.
-+.RE
-+.SH EXAMPLES
-+.IP \[bu] 2
-+Remove a source with name of \f[C]mySource\f[R]:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget remove source mySource
-+\f[R]
-+.fi
-+.RE
-+.SS See also
-+.IP \[bu] 2
-+Package source sections in NuGet.config files
-+.IP \[bu] 2
-+sources command (nuget.exe)
-diff --git a/documentation/manpages/sdk/dotnet-nuget-sign.1 b/documentation/manpages/sdk/dotnet-nuget-sign.1
-new file mode 100644
-index 0000000000..7cc812ab19
---- /dev/null
-+++ b/documentation/manpages/sdk/dotnet-nuget-sign.1
-@@ -0,0 +1,242 @@
-+.\" Automatically generated by Pandoc 2.14.1
-+.\"
-+.TH "" "1" "" "" ".NET"
-+.hy
-+.SH dotnet nuget sign
-+.PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET 6.0 Preview 5 SDK and later versions
-+.SH NAME
-+.PP
-+\f[C]dotnet nuget sign\f[R] - Signs all the NuGet packages matching the first argument with a certificate.
-+.SH SYNOPSIS
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget sign [<package-path(s)>]
-+ [--certificate-path <PATH>]
-+ [--certificate-store-name <STORENAME>]
-+ [--certificate-store-location <STORELOCATION>]
-+ [--certificate-subject-name <SUBJECTNAME>]
-+ [--certificate-fingerprint <FINGERPRINT>]
-+ [--certificate-password <PASSWORD>]
-+ [--hash-algorithm <HASHALGORITHM>]
-+ [-o|--output <OUTPUT DIRECTORY>]
-+ [--overwrite]
-+ [--timestamp-hash-algorithm <HASHALGORITHM>]
-+ [--timestamper <TIMESTAMPINGSERVER>]
-+ [-v|--verbosity <LEVEL>]
-+
-+dotnet nuget sign -h|--help
-+\f[R]
-+.fi
-+.SH DESCRIPTION
-+.PP
-+The \f[C]dotnet nuget sign\f[R] command signs all the packages matching the first argument with a certificate.
-+The certificate with the private key can be obtained from a file or from a certificate installed in a certificate store by providing a subject name or a SHA-1 fingerprint.
-+.SS Arguments
-+.IP \[bu] 2
-+\f[B]\f[CB]package-path(s)\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies the file path to the package(s) to be signed.
-+Multiple arguments can be passed in to sign multiple packages.
-+.RE
-+.SH OPTIONS
-+.IP \[bu] 2
-+\f[B]\f[CB]--certificate-path <PATH>\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies the file path to the certificate to be used in signing the package.
-+.RS
-+.PP
-+[!NOTE] This option currently supports only \f[C]PKCS12 (PFX)\f[R] files that contain the certificate\[cq]s private key.
-+.RE
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--certificate-store-name <STORENAME>\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies the name of the X.509 certificate store to use to search for the certificate.
-+Defaults to :::no-loc text=\[lq]\[dq]My\[dq]\[rq]:::, the X.509 certificate store for personal certificates.
-+This option should be used when specifying the certificate via \f[C]--certificate-subject-name\f[R] or \f[C]--certificate-fingerprint\f[R] options.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--certificate-store-location <STORELOCATION>\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies the name of the X.509 certificate store use to search for the certificate.
-+Defaults to :::no-loc text=\[lq]\[dq]CurrentUser\[dq]\[rq]:::, the X.509 certificate store used by the current user.
-+This option should be used when specifying the certificate via \f[C]--certificate-subject-name\f[R] or \f[C]--certificate-fingerprint\f[R] options.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--certificate-subject-name <SUBJECTNAME>\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies the subject name of the certificate used to search a local certificate store for the certificate.
-+The search is a case-insensitive string comparison using the supplied value, which will find all certificates with the subject name containing that string, regardless of other subject values.
-+The certificate store can be specified by \f[C]--certificate-store-name\f[R] and \f[C]--certificate-store-location\f[R] options.
-+.RS
-+.PP
-+[!NOTE] This option currently supports only a single matching certificate in the result.
-+If there are multiple matching certificates in the result, or no matching certificate in the result, the sign command will fail.
-+.RE
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--certificate-fingerprint <FINGERPRINT>\f[B]\f[R]
-+.RS 2
-+.PP
-+SHA-1 fingerprint of the certificate used to search a local certificate store for the certificate.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--certificate-password <PASSWORD>\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies the certificate password, if needed.
-+If a certificate is password protected but no password is provided, the sign command will fail.
-+.RS
-+.PP
-+[!NOTE] The \f[C]sign\f[R] command only supports non-interactive mode.
-+There won\[cq]t be any prompt for a password at run time.
-+.RE
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--hash-algorithm <HASHALGORITHM>\f[B]\f[R]
-+.RS 2
-+.PP
-+Hash algorithm to be used to sign the package.
-+Defaults to SHA256.
-+Possible values are SHA256, SHA384, and SHA512.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-o|--output\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies the directory where the signed package should be saved.
-+If this option is not specified, by default the original package is overwritten by the signed package.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--overwrite\f[B]\f[R]
-+.RS 2
-+.PP
-+Indicate that the current signature should be overwritten.
-+By default the command will fail if the package already has a signature.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--timestamp-hash-algorithm <HASHALGORITHM>\f[B]\f[R]
-+.RS 2
-+.PP
-+Hash algorithm to be used by the RFC 3161 timestamp server.
-+Defaults to SHA256.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--timestamper <TIMESTAMPINGSERVER>\f[B]\f[R]
-+.RS 2
-+.PP
-+URL to an RFC 3161 timestamping server.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
-+.RS 2
-+.PP
-+Sets the verbosity level of the command.
-+Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
-+The default is \f[C]minimal\f[R].
-+For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
-+.RS 2
-+.PP
-+Prints out a description of how to use the command.
-+.RE
-+.SH EXAMPLES
-+.IP \[bu] 2
-+Sign \f[I]foo.nupkg\f[R] with certificate \f[I]cert.pfx\f[R] (not password protected):
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget sign foo.nupkg --certificate-path cert.pfx
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Sign \f[I]foo.nupkg\f[R] with certificate \f[I]cert.pfx\f[R] (password protected):
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget sign foo.nupkg --certificate-path cert.pfx --certificate-password password
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Sign \f[I]foo.nupkg\f[R] with certificate (password protected) matches with the specified SHA-1 fingerprint in the default certificate store (CurrentUser):
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget sign foo.nupkg --certificate-fingerprint 89967D1DD995010B6C66AE24FF8E66885E6E03A8 --certificate-password password
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Sign \f[I]foo.nupkg\f[R] with certificate (password protected) matches with the specified subject name :::no-loc text=\[lq]\[dq]Test certificate for testing signing\[dq]\[rq]::: in the default certificate store (CurrentUser):
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget sign foo.nupkg --certificate-subject-name \[dq]Test certificate for testing signing\[dq] --certificate-password password
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Sign \f[I]foo.nupkg\f[R] with certificate (password protected) matches with the specified SHA-1 fingerprint in the certificate store CurrentUser:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget sign foo.nupkg --certificate-fingerprint 89967D1DD995010B6C66AE24FF8E66885E6E03A8 --certificate-password password --certificate-store-location CurrentUser --certificate-store-name Root
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Sign multiple NuGet packages - \f[I]foo.nupkg\f[R] and \f[I]all .nupkg files in the directory specified\f[R] with certificate \f[I]cert.pfx\f[R] (not password protected):
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget sign foo.nupkg c:\[rs]mydir\[rs]*.nupkg --certificate-path cert.pfx
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Sign \f[I]foo.nupkg\f[R] with certificate \f[I]cert.pfx\f[R] (password protected), and timestamp with \f[C]http://timestamp.test\f[R]:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget sign foo.nupkg --certificate-path cert.pfx --certificate-password password --timestamper http://timestamp.test
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Sign \f[I]foo.nupkg\f[R] with certificate \f[I]cert.pfx\f[R] (not password protected) and save the signed package under specified directory:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget sign foo.nupkg --certificate-path cert.pfx --output c:\[rs]signed\[rs]
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Sign \f[I]foo.nupkg\f[R] with certificate \f[I]cert.pfx\f[R] (not password protected) and overwrite the current signature if the package is already signed:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget sign foo.nupkg --certificate-path cert.pfx --overwrite
-+\f[R]
-+.fi
-+.RE
-diff --git a/documentation/manpages/sdk/dotnet-nuget-trust.1 b/documentation/manpages/sdk/dotnet-nuget-trust.1
-new file mode 100644
-index 0000000000..99f3950586
---- /dev/null
-+++ b/documentation/manpages/sdk/dotnet-nuget-trust.1
-@@ -0,0 +1,468 @@
-+.\" Automatically generated by Pandoc 2.14.1
-+.\"
-+.TH "" "1" "" "" ".NET"
-+.hy
-+.SH dotnet nuget trust
-+.PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET 5.0.300 SDK and later versions
-+.SH NAME
-+.PP
-+\f[C]dotnet nuget trust\f[R] - Gets or sets trusted signers to the NuGet configuration.
-+.SH SYNOPSIS
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget trust [command] [Options]
-+
-+dotnet nuget trust -h|--help
-+\f[R]
-+.fi
-+.SH DESCRIPTION
-+.PP
-+The \f[C]dotnet nuget trust\f[R] command manages the trusted signers.
-+By default, NuGet accepts all authors and repositories.
-+These commands allow you to specify only a specific subset of signers whose signatures will be accepted, while rejecting all others.
-+For more information, see Common NuGet configurations.
-+For details on what the nuget.config schema looks like, refer to the NuGet config file reference.
-+.SH OPTIONS
-+.IP \[bu] 2
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
-+.RS 2
-+.PP
-+Prints out a description of how to use the command.
-+.RE
-+.SS Commands
-+.PP
-+If no command is specified, the command will default to \f[C]list\f[R].
-+.SS \f[C]list\f[R]
-+.PP
-+Lists all the trusted signers in the configuration.
-+This option will include all the certificates (with fingerprint and fingerprint algorithm) each signer has.
-+If a certificate has a preceding [U], it means that certificate entry has allowUntrustedRoot set as true.
-+.SS Synopsis:
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget trust list [--configfile <PATH>] [-h|--help] [-v, --verbosity <LEVEL>]
-+\f[R]
-+.fi
-+.SS Options:
-+.IP \[bu] 2
-+\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
-+.RS 2
-+.PP
-+The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
-+If specified, only the settings from this file will be used.
-+If not specified, the hierarchy of configuration files from the current directory will be used.
-+For more information, see Common NuGet Configurations.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
-+.RS 2
-+.PP
-+Prints out a description of how to use the command.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
-+.RS 2
-+.PP
-+Sets the verbosity level of the command.
-+Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
-+The default is \f[C]minimal\f[R].
-+For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
-+.RE
-+.SS \f[C]sync\f[R]
-+.PP
-+Deletes the current list of certificates and replaces them with an up-to-date list from the repository.
-+.SH SYNOPSIS
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget trust sync <NAME> [--configfile <PATH>] [-h|--help] [-v, --verbosity <LEVEL>]
-+\f[R]
-+.fi
-+.SS Arguments
-+.IP \[bu] 2
-+\f[B]\f[CB]NAME\f[B]\f[R]
-+.RS 2
-+.PP
-+The name of the existing trusted signer to sync.
-+.RE
-+.SS Options:
-+.IP \[bu] 2
-+\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
-+.RS 2
-+.PP
-+The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
-+If specified, only the settings from this file will be used.
-+If not specified, the hierarchy of configuration files from the current directory will be used.
-+For more information, see Common NuGet Configurations.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
-+.RS 2
-+.PP
-+Prints out a description of how to use the command.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
-+.RS 2
-+.PP
-+Sets the verbosity level of the command.
-+Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
-+The default is \f[C]minimal\f[R].
-+For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
-+.RE
-+.SS \f[C]remove\f[R]
-+.PP
-+Removes any trusted signers that match the given name.
-+.SH SYNOPSIS
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget trust remove <NAME> [--configfile <PATH>] [-h|--help] [-v, --verbosity <LEVEL>]
-+\f[R]
-+.fi
-+.SS Arguments
-+.IP \[bu] 2
-+\f[B]\f[CB]NAME\f[B]\f[R]
-+.RS 2
-+.PP
-+The name of the existing trusted signer to remove.
-+.RE
-+.SS Options:
-+.IP \[bu] 2
-+\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
-+.RS 2
-+.PP
-+The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
-+If specified, only the settings from this file will be used.
-+If not specified, the hierarchy of configuration files from the current directory will be used.
-+For more information, see Common NuGet Configurations.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
-+.RS 2
-+.PP
-+Prints out a description of how to use the command.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
-+.RS 2
-+.PP
-+Sets the verbosity level of the command.
-+Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
-+The default is \f[C]minimal\f[R].
-+For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
-+.RE
-+.SS \f[C]author\f[R]
-+.PP
-+Adds a trusted signer with the given name, based on the author signature of the package.
-+.SH SYNOPSIS
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget trust author <NAME> <PACKAGE> [--allow-untrusted-root] [--configfile <PATH>] [-h|--help] [-v, --verbosity <LEVEL>]
-+\f[R]
-+.fi
-+.SS Arguments
-+.IP \[bu] 2
-+\f[B]\f[CB]NAME\f[B]\f[R]
-+.RS 2
-+.PP
-+The name of the trusted signer to add.
-+If \f[C]NAME\f[R] already exists in the configuration, the signature is appended.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]PACKAGE\f[B]\f[R]
-+.RS 2
-+.PP
-+The given \f[C]PACKAGE\f[R] should be a local path to the signed \f[I].nupkg\f[R] file.
-+.RE
-+.SS Options:
-+.IP \[bu] 2
-+\f[B]\f[CB]--allow-untrusted-root\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies if the certificate for the trusted signer should be allowed to chain to an untrusted root.
-+This is not recommended.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
-+.RS 2
-+.PP
-+The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
-+If specified, only the settings from this file will be used.
-+If not specified, the hierarchy of configuration files from the current directory will be used.
-+For more information, see Common NuGet Configurations.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
-+.RS 2
-+.PP
-+Prints out a description of how to use the command.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
-+.RS 2
-+.PP
-+Sets the verbosity level of the command.
-+Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
-+The default is \f[C]minimal\f[R].
-+For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
-+.RE
-+.SS \f[C]repository\f[R]
-+.PP
-+Adds a trusted signer with the given name, based on the repository signature or countersignature of a signed package.
-+.SH SYNOPSIS
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget trust repository <NAME> <PACKAGE> [--allow-untrusted-root] [--configfile <PATH>] [-h|--help] [--owners <LIST>] [-v, --verbosity <LEVEL>]
-+\f[R]
-+.fi
-+.SS Arguments
-+.IP \[bu] 2
-+\f[B]\f[CB]NAME\f[B]\f[R]
-+.RS 2
-+.PP
-+The name of the trusted signer to add.
-+If \f[C]NAME\f[R] already exists in the configuration, the signature is appended.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]PACKAGE\f[B]\f[R]
-+.RS 2
-+.PP
-+The given \f[C]PACKAGE\f[R] should be a local path to the signed \f[I].nupkg\f[R] file.
-+.RE
-+.SS Options:
-+.IP \[bu] 2
-+\f[B]\f[CB]--allow-untrusted-root\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies if the certificate for the trusted signer should be allowed to chain to an untrusted root.
-+This is not recommended.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
-+.RS 2
-+.PP
-+The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
-+If specified, only the settings from this file will be used.
-+If not specified, the hierarchy of configuration files from the current directory will be used.
-+For more information, see Common NuGet Configurations.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
-+.RS 2
-+.PP
-+Prints out a description of how to use the command.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--owners <LIST>\f[B]\f[R]
-+.RS 2
-+.PP
-+Semicolon-separated list of trusted owners to further restrict the trust of a repository.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
-+.RS 2
-+.PP
-+Sets the verbosity level of the command.
-+Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
-+The default is \f[C]minimal\f[R].
-+For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
-+.RE
-+.SS \f[C]certificate\f[R]
-+.PP
-+Adds a trusted signer with the given name, based on a certificate fingerprint.
-+.SH SYNOPSIS
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget trust certificate <NAME> <FINGERPRINT> [--algorithm <ALGORITHM>] [--allow-untrusted-root] [--configfile <PATH>] [-h|--help] [-v, --verbosity <LEVEL>]
-+\f[R]
-+.fi
-+.SS Arguments
-+.IP \[bu] 2
-+\f[B]\f[CB]NAME\f[B]\f[R]
-+.RS 2
-+.PP
-+The name of the trusted signer to add.
-+If a trusted signer with the given name already exists, the certificate item is added to that signer.
-+Otherwise a trusted author is created with a certificate item from the given certificate information.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]FINGERPRINT\f[B]\f[R]
-+.RS 2
-+.PP
-+The fingerprint of the certificate.
-+.RE
-+.SS Options:
-+.IP \[bu] 2
-+\f[B]\f[CB]--algorithm <ALGORITHM>\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies the hash algorithm used to calculate the certificate fingerprint.
-+Defaults to SHA256.
-+Values supported are SHA256, SHA384 and SHA512.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--allow-untrusted-root\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies if the certificate for the trusted signer should be allowed to chain to an untrusted root.
-+This is not recommended.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
-+.RS 2
-+.PP
-+The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
-+If specified, only the settings from this file will be used.
-+If not specified, the hierarchy of configuration files from the current directory will be used.
-+For more information, see Common NuGet Configurations.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
-+.RS 2
-+.PP
-+Prints out a description of how to use the command.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
-+.RS 2
-+.PP
-+Sets the verbosity level of the command.
-+Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
-+The default is \f[C]minimal\f[R].
-+For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
-+.RE
-+.SS \f[C]source\f[R]
-+.PP
-+Adds a trusted signer based on a given package source.
-+.SH SYNOPSIS
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget trust source <NAME> [--configfile <PATH>] [-h|--help] [--owners <LIST>] [--source-url] [-v, --verbosity <LEVEL>]
-+\f[R]
-+.fi
-+.SS Arguments
-+.IP \[bu] 2
-+\f[B]\f[CB]NAME\f[B]\f[R]
-+.RS 2
-+.PP
-+The name of the trusted signer to add.
-+If only \f[C]<NAME>\f[R] is provided without \f[C]--<source-url>\f[R], the package source from your NuGet configuration files with the same name is added to the trusted list.
-+If \f[C]<NAME>\f[R] already exists in the configuration, the package source is appended to it.
-+.RE
-+.SS Options:
-+.IP \[bu] 2
-+\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
-+.RS 2
-+.PP
-+The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
-+If specified, only the settings from this file will be used.
-+If not specified, the hierarchy of configuration files from the current directory will be used.
-+For more information, see Common NuGet Configurations.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
-+.RS 2
-+.PP
-+Prints out a description of how to use the command.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--owners <LIST>\f[B]\f[R]
-+.RS 2
-+.PP
-+Semicolon-separated list of trusted owners to further restrict the trust of a repository.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--source-url\f[B]\f[R]
-+.RS 2
-+.PP
-+If a \f[C]source-url\f[R] is provided, it must be a v3 package source URL (like \f[C]https://api.nuget.org/v3/index.json\f[R]).
-+Other package source types are not supported.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
-+.RS 2
-+.PP
-+Sets the verbosity level of the command.
-+Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
-+The default is \f[C]minimal\f[R].
-+For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
-+.RE
-+.SH EXAMPLES
-+.IP \[bu] 2
-+List trusted signers:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget trust list
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Trust source \f[I]NuGet\f[R] in specified \f[I]nuget.config\f[R] file:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget trust source NuGet --configfile ..\[rs]nuget.config
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Trust an author from signed nupkg package file \f[I]foo.nupkg\f[R]:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget trust author PackageAuthor .\[rs]foo.nupkg
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Trust a repository from signed nupkg package file \f[I]foo.nupkg\f[R]:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget trust repository PackageRepository .\[rs]foo.nupkg
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Trust a package signing certificate using its SHA256 fingerprint:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+ dotnet nuget trust certificate MyCert F99EC8CDCE5642B380296A19E22FA8EB3AEF1C70079541A2B3D6E4A93F5E1AFD --algorithm SHA256
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Trust owners \f[I]Nuget\f[R] and \f[I]Microsoft\f[R] from the repository \f[C]https://api.nuget.org/v3/index.json\f[R]:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+ dotnet nuget trust source NuGetTrust https://api.nuget.org/v3/index.json --owners \[dq]Nuget;Microsoft\[dq]
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Remove trusted signer named \f[I]NuGet\f[R] from specified \f[I]nuget.config\f[R] file:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+ dotnet nuget trust remove NuGet --configfile ..\[rs]nuget.config
-+\f[R]
-+.fi
-+.RE
-diff --git a/documentation/manpages/sdk/dotnet-nuget-update-source.1 b/documentation/manpages/sdk/dotnet-nuget-update-source.1
-new file mode 100644
-index 0000000000..893207f325
---- /dev/null
-+++ b/documentation/manpages/sdk/dotnet-nuget-update-source.1
-@@ -0,0 +1,89 @@
-+.\" Automatically generated by Pandoc 2.14.1
-+.\"
-+.TH "" "1" "" "" ".NET"
-+.hy
-+.SH dotnet nuget update source
-+.PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 3.1.200 SDK and later versions
-+.SH NAME
-+.PP
-+\f[C]dotnet nuget update source\f[R] - Update a NuGet source.
-+.SH SYNOPSIS
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget update source <NAME> [--source <SOURCE>] [--username <USER>]
-+ [--password <PASSWORD>] [--store-password-in-clear-text]
-+ [--valid-authentication-types <TYPES>] [--configfile <FILE>]
-+
-+dotnet nuget update source -h|--help
-+\f[R]
-+.fi
-+.SH DESCRIPTION
-+.PP
-+The \f[C]dotnet nuget update source\f[R] command updates an existing source in your NuGet configuration files.
-+.SS Arguments
-+.IP \[bu] 2
-+\f[B]\f[CB]NAME\f[B]\f[R]
-+.RS 2
-+.PP
-+Name of the source.
-+.RE
-+.SH OPTIONS
-+.IP \[bu] 2
-+\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
-+.RS 2
-+.PP
-+The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
-+If specified, only the settings from this file will be used.
-+If not specified, the hierarchy of configuration files from the current directory will be used.
-+For more information, see Common NuGet Configurations.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-p|--password <PASSWORD>\f[B]\f[R]
-+.RS 2
-+.PP
-+Password to be used when connecting to an authenticated source.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-s|--source <SOURCE>\f[B]\f[R]
-+.RS 2
-+.PP
-+Path to the package source.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--store-password-in-clear-text\f[B]\f[R]
-+.RS 2
-+.PP
-+Enables storing portable package source credentials by disabling password encryption.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-u|--username <USER>\f[B]\f[R]
-+.RS 2
-+.PP
-+Username to be used when connecting to an authenticated source.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--valid-authentication-types <TYPES>\f[B]\f[R]
-+.RS 2
-+.PP
-+Comma-separated list of valid authentication types for this source.
-+Set this to \f[C]basic\f[R] if the server advertises NTLM or Negotiate and your credentials must be sent using the Basic mechanism, for instance when using a PAT with on-premises Azure DevOps Server.
-+Other valid values include \f[C]negotiate\f[R], \f[C]kerberos\f[R], \f[C]ntlm\f[R], and \f[C]digest\f[R], but these values are unlikely to be useful.
-+.RE
-+.SH EXAMPLES
-+.IP \[bu] 2
-+Update a source with name of \f[C]mySource\f[R]:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget update source mySource --source c:\[rs]packages
-+\f[R]
-+.fi
-+.RE
-+.SS See also
-+.IP \[bu] 2
-+Package source sections in NuGet.config files
-+.IP \[bu] 2
-+sources command (nuget.exe)
-diff --git a/documentation/manpages/sdk/dotnet-nuget-verify.1 b/documentation/manpages/sdk/dotnet-nuget-verify.1
-new file mode 100644
-index 0000000000..578398cd49
---- /dev/null
-+++ b/documentation/manpages/sdk/dotnet-nuget-verify.1
-@@ -0,0 +1,341 @@
-+'\" t
-+.\" Automatically generated by Pandoc 2.14.1
-+.\"
-+.TH "" "1" "" "" ".NET"
-+.hy
-+.SH dotnet nuget verify
-+.PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET 5.0.100-rc.2.x SDK and later versions
-+.SH NAME
-+.PP
-+\f[C]dotnet nuget verify\f[R] - Verifies a signed NuGet package.
-+.SH SYNOPSIS
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget verify [<package-path(s)>]
-+ [--all]
-+ [--certificate-fingerprint <FINGERPRINT>]
-+ [-v|--verbosity <LEVEL>]
-+
-+dotnet nuget verify -h|--help
-+\f[R]
-+.fi
-+.SH DESCRIPTION
-+.PP
-+The \f[C]dotnet nuget verify\f[R] command verifies a signed NuGet package.
-+.SS Arguments
-+.IP \[bu] 2
-+\f[B]\f[CB]package-path(s)\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies the file path to the package(s) to be verified.
-+Multiple position arguments can be passed in to verify multiple packages.
-+.RE
-+.SH OPTIONS
-+.IP \[bu] 2
-+\f[B]\f[CB]--all\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies that all verifications possible should be performed on the package(s).
-+By default, only \f[C]signatures\f[R] are verified.
-+.RE
-+.RS
-+.PP
-+[!NOTE] This command currently supports only \f[C]signature\f[R] verification.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--certificate-fingerprint <FINGERPRINT>\f[B]\f[R]
-+.RS 2
-+.PP
-+Verify that the signer certificate matches with one of the specified \f[C]SHA256\f[R] fingerprints.
-+This option can be supplied multiple times to provide multiple fingerprints.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
-+.RS 2
-+.PP
-+Sets the verbosity level of the command.
-+Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
-+The default is \f[C]minimal\f[R].
-+For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
-+.PP
-+The following table shows what is displayed for each verbosity level.
-+.PP
-+.TS
-+tab(@);
-+l l l l l l.
-+T{
-+\[u200B]
-+T}@T{
-+\f[C]q[uiet]\f[R]
-+T}@T{
-+\f[C]m[inimal]\f[R]
-+T}@T{
-+\f[C]n[ormal]\f[R]
-+T}@T{
-+\f[C]d[etailed]\f[R]
-+T}@T{
-+\f[C]diag[nostic]\f[R]
-+T}
-+_
-+T{
-+\f[C]Certificate chain Information\f[R]
-+T}@T{
-+\[u274C]
-+T}@T{
-+\[u274C]
-+T}@T{
-+\[u274C]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}
-+T{
-+\f[C]Path to package being verified\f[R]
-+T}@T{
-+\[u274C]
-+T}@T{
-+\[u274C]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}
-+T{
-+\f[C]Hashing algorithm used for signature\f[R]
-+T}@T{
-+\[u274C]
-+T}@T{
-+\[u274C]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}
-+T{
-+\f[C]Author/Repository Certificate -> SHA1 hash\f[R]
-+T}@T{
-+\[u274C]
-+T}@T{
-+\[u274C]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}
-+T{
-+\f[C]Author/Repository Certificate -> Issued By\f[R]
-+T}@T{
-+\[u274C]
-+T}@T{
-+\[u274C]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}
-+T{
-+\f[C]Timestamp Certificate -> Issued By\f[R]
-+T}@T{
-+\[u274C]
-+T}@T{
-+\[u274C]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}
-+T{
-+\f[C]Timestamp Certificate -> SHA-256 hash\f[R]
-+T}@T{
-+\[u274C]
-+T}@T{
-+\[u274C]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}
-+T{
-+\f[C]Timestamp Certificate -> Validity period\f[R]
-+T}@T{
-+\[u274C]
-+T}@T{
-+\[u274C]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}
-+T{
-+\f[C]Timestamp Certificate -> SHA1 hash\f[R]
-+T}@T{
-+\[u274C]
-+T}@T{
-+\[u274C]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}
-+T{
-+\f[C]Timestamp Certificate -> Subject name\f[R]
-+T}@T{
-+\[u274C]
-+T}@T{
-+\[u274C]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}
-+T{
-+\f[C]Author/Repository Certificate -> Subject name\f[R]
-+T}@T{
-+\[u274C]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}
-+T{
-+\f[C]Author/Repository Certificate -> SHA-256 hash\f[R]
-+T}@T{
-+\[u274C]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}
-+T{
-+\f[C]Author/Repository Certificate -> Validity period\f[R]
-+T}@T{
-+\[u274C]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}
-+T{
-+\f[C]Author/Repository Certificate -> Service index URL (If applicable)\f[R]
-+T}@T{
-+\[u274C]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}
-+T{
-+\f[C]Package name being verified\f[R]
-+T}@T{
-+\[u274C]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}
-+T{
-+\f[C]Type of signature (author or repository)\f[R]
-+T}@T{
-+\[u274C]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}@T{
-+\[u2714]\[uFE0F]
-+T}
-+.TE
-+.PP
-+\[u274C] indicates details that are \f[B]not\f[R] displayed.
-+\[u2714]\[uFE0F] indicates details that are displayed.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
-+.RS 2
-+.PP
-+Prints out a description of how to use the command.
-+.RE
-+.SH EXAMPLES
-+.IP \[bu] 2
-+Verify \f[I]foo.nupkg\f[R]:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget verify foo.nupkg
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Verify multiple NuGet packages - \f[I]foo.nupkg\f[R] and \f[I]all .nupkg files in the directory specified\f[R]:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget verify foo.nupkg c:\[rs]mydir\[rs]*.nupkg
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Verify \f[I]foo.nupkg\f[R] signature matches with the specified certificate fingerprint:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget verify foo.nupkg --certificate-fingerprint CE40881FF5F0AD3E58965DA20A9F571EF1651A56933748E1BF1C99E537C4E039
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Verify \f[I]foo.nupkg\f[R] signature matches with one of the specified certificate fingerprints:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet nuget verify foo.nupkg --certificate-fingerprint CE40881FF5F0AD3E58965DA20A9F571EF1651A56933748E1BF1C99E537C4E039 --certificate-fingerprint EC10992GG5F0AD3E58965DA20A9F571EF1651A56933748E1BF1C99E537C4E027
-+\f[R]
-+.fi
-+.RE
-diff --git a/documentation/manpages/sdk/dotnet-pack.1 b/documentation/manpages/sdk/dotnet-pack.1
-index 14f617aa93..0967ed5afc 100644
---- a/documentation/manpages/sdk/dotnet-pack.1
-+++ b/documentation/manpages/sdk/dotnet-pack.1
-@@ -1,10 +1,11 @@
--.\" Automatically generated by Pandoc 2.7.2
-+'\" t
-+.\" Automatically generated by Pandoc 2.14.1
- .\"
--.TH "dotnet pack command" "1" "" "" ".NET Core"
-+.TH "" "1" "" "" ".NET"
- .hy
- .SH dotnet pack
- .PP
--\f[B]This topic applies to: \[OK]\f[R] .NET Core 1.x SDK and later versions
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.x SDK and later versions
- .SH NAME
- .PP
- \f[C]dotnet pack\f[R] - Packs the code into a NuGet package.
-@@ -12,10 +13,14 @@
- .IP
- .nf
- \f[C]
--dotnet pack [<PROJECT>|<SOLUTION>] [-c|--configuration] [--force] [--include-source] [--include-symbols] [--interactive]
-- [--no-build] [--no-dependencies] [--no-restore] [--nologo] [-o|--output] [--runtime] [-s|--serviceable]
-- [-v|--verbosity] [--version-suffix]
--dotnet pack [-h|--help]
-+dotnet pack [<PROJECT>|<SOLUTION>] [-c|--configuration <CONFIGURATION>]
-+ [--force] [--include-source] [--include-symbols] [--interactive]
-+ [--no-build] [--no-dependencies] [--no-restore] [--nologo]
-+ [-o|--output <OUTPUT_DIRECTORY>] [--runtime <RUNTIME_IDENTIFIER>]
-+ [-s|--serviceable] [-v|--verbosity <LEVEL>]
-+ [--version-suffix <VERSION_SUFFIX>]
-+
-+dotnet pack -h|--help
- \f[R]
- .fi
- .SH DESCRIPTION
-@@ -30,16 +35,22 @@ If you want to generate a package that contains the debug symbols, you have two
- \f[C]--include-source\f[R] - it creates the symbols package with a \f[C]src\f[R] folder inside containing the source files.
- .PP
- NuGet dependencies of the packed project are added to the \f[I].nuspec\f[R] file, so they\[cq]re properly resolved when the package is installed.
--Project-to-project references aren\[cq]t packaged inside the project.
-+If the packed project has references to other projects, the other projects are not included in the package.
- Currently, you must have a package per project if you have project-to-project dependencies.
- .PP
- By default, \f[C]dotnet pack\f[R] builds the project first.
- If you wish to avoid this behavior, pass the \f[C]--no-build\f[R] option.
- This option is often useful in Continuous Integration (CI) build scenarios where you know the code was previously built.
-+.RS
-+.PP
-+[!NOTE] In some cases, the implicit build cannot be performed.
-+This can occur when \f[C]GeneratePackageOnBuild\f[R] is set, to avoid a cyclic dependency between build and pack targets.
-+The build can also fail if there is a locked file or other issue.
-+.RE
- .PP
- You can provide MSBuild properties to the \f[C]dotnet pack\f[R] command for the packing process.
--For more information, see NuGet metadata properties and the MSBuild Command-Line Reference.
--The Examples section shows how to use the MSBuild -p switch for a couple of different scenarios.
-+For more information, see NuGet pack target properties and the MSBuild Command-Line Reference.
-+The Examples section shows how to use the MSBuild \f[C]-p\f[R] switch for a couple of different scenarios.
- .PP
- Web projects aren\[cq]t packable by default.
- To override the default behavior, add the following property to your \f[I].csproj\f[R] file:
-@@ -51,21 +62,36 @@ To override the default behavior, add the following property to your \f[I].cspro
- </PropertyGroup>
- \f[R]
- .fi
-+.SS Implicit restore
-+.PP
-+You don\[cq]t have to run \f[C]dotnet restore\f[R] because it\[cq]s run implicitly by all commands that require a restore to occur, such as \f[C]dotnet new\f[R], \f[C]dotnet build\f[R], \f[C]dotnet run\f[R], \f[C]dotnet test\f[R], \f[C]dotnet publish\f[R], and \f[C]dotnet pack\f[R].
-+To disable implicit restore, use the \f[C]--no-restore\f[R] option.
-+.PP
-+The \f[C]dotnet restore\f[R] command is still useful in certain scenarios where explicitly restoring makes sense, such as continuous integration builds in Azure DevOps Services or in build systems that need to explicitly control when the restore occurs.
-+.PP
-+For information about how to manage NuGet feeds, see the \f[C]dotnet restore\f[R] documentation.
-+.PP
-+This command supports the \f[C]dotnet restore\f[R] options when passed in the long form (for example, \f[C]--source\f[R]).
-+Short form options, such as \f[C]-s\f[R], are not supported.
-+.SS Workload manifest downloads
- .PP
-+When you run this command, it initiates an asynchronous background download of advertising manifests for workloads.
-+If the download is still running when this command finishes, the download is stopped.
-+For more information, see Advertising manifests.
- .SS Arguments
- .PP
- \f[C]PROJECT | SOLUTION\f[R]
- .PP
- The project or solution to pack.
--It\[cq]s either a path to a csproj file, a solution file, or to a directory.
-+It\[cq]s either a path to a csproj, vbproj, or fsproj file, or to a solution file or directory.
- If not specified, the command searches the current directory for a project or solution file.
- .SH OPTIONS
- .IP \[bu] 2
--\f[B]\f[CB]-c|--configuration {Debug|Release}\f[B]\f[R]
-+\f[B]\f[CB]-c|--configuration <CONFIGURATION>\f[B]\f[R]
- .RS 2
- .PP
- Defines the build configuration.
--The default value is \f[C]Debug\f[R].
-+The default for most projects is \f[C]Debug\f[R], but you can override the build configuration settings in your project.
- .RE
- .IP \[bu] 2
- \f[B]\f[CB]--force\f[B]\f[R]
-@@ -73,13 +99,12 @@ The default value is \f[C]Debug\f[R].
- .PP
- Forces all dependencies to be resolved even if the last restore was successful.
- Specifying this flag is the same as deleting the \f[I]project.assets.json\f[R] file.
--Option available since .NET Core 2.0 SDK.
- .RE
- .IP \[bu] 2
--\f[B]\f[CB]-h|--help\f[B]\f[R]
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
- .RS 2
- .PP
--Prints out a short help for the command.
-+Prints out a description of how to use the command.
- .RE
- .IP \[bu] 2
- \f[B]\f[CB]--include-source\f[B]\f[R]
-@@ -98,7 +123,8 @@ Includes the debug symbols NuGet packages in addition to the regular NuGet packa
- \f[B]\f[CB]--interactive\f[B]\f[R]
- .RS 2
- .PP
--Allows the command to stop and wait for user input or action (for example, to complete authentication).
-+Allows the command to stop and wait for user input or action.
-+For example, to complete authentication.
- Available since .NET Core 3.0 SDK.
- .RE
- .IP \[bu] 2
-@@ -113,14 +139,12 @@ It also implicitly sets the \f[C]--no-restore\f[R] flag.
- .RS 2
- .PP
- Ignores project-to-project references and only restores the root project.
--Option available since .NET Core 2.0 SDK.
- .RE
- .IP \[bu] 2
- \f[B]\f[CB]--no-restore\f[B]\f[R]
- .RS 2
- .PP
- Doesn\[cq]t execute an implicit restore when running the command.
--Option available since .NET Core 2.0 SDK.
- .RE
- .IP \[bu] 2
- \f[B]\f[CB]--nologo\f[B]\f[R]
-@@ -141,27 +165,69 @@ Places the built packages in the directory specified.
- .PP
- Specifies the target runtime to restore packages for.
- For a list of Runtime Identifiers (RIDs), see the RID catalog.
--Option available since .NET Core 2.0 SDK.
- .RE
- .IP \[bu] 2
- \f[B]\f[CB]-s|--serviceable\f[B]\f[R]
- .RS 2
- .PP
- Sets the serviceable flag in the package.
--For more information, see .NET Blog: .NET 4.5.1 Supports Microsoft Security Updates for .NET NuGet Libraries.
-+For more information, see .NET Blog: .NET Framework 4.5.1 Supports Microsoft Security Updates for .NET NuGet Libraries (https://aka.ms/nupkgservicing).
- .RE
- .IP \[bu] 2
--\f[B]\f[CB]--version-suffix <VERSION_SUFFIX>\f[B]\f[R]
-+\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
- .RS 2
- .PP
--Defines the value for the \f[C]$(VersionSuffix)\f[R] MSBuild property in the project.
-+Sets the verbosity level of the command.
-+Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
-+For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
- .RE
- .IP \[bu] 2
--\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
-+\f[B]\f[CB]--version-suffix <VERSION_SUFFIX>\f[B]\f[R]
- .RS 2
- .PP
--Sets the verbosity level of the command.
--Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
-+Defines the value for the \f[C]VersionSuffix\f[R] MSBuild property.
-+The effect of this property on the package version depends on the values of the \f[C]Version\f[R] and \f[C]VersionPrefix\f[R] properties, as shown in the following table:
-+.PP
-+.TS
-+tab(@);
-+l l.
-+T{
-+Properties with values
-+T}@T{
-+Package version
-+T}
-+_
-+T{
-+None
-+T}@T{
-+\f[C]1.0.0\f[R]
-+T}
-+T{
-+\f[C]Version\f[R]
-+T}@T{
-+\f[C]$(Version)\f[R]
-+T}
-+T{
-+\f[C]VersionPrefix\f[R] only
-+T}@T{
-+\f[C]$(VersionPrefix)\f[R]
-+T}
-+T{
-+\f[C]VersionSuffix\f[R] only
-+T}@T{
-+\f[C]1.0.0-$(VersionSuffix)\f[R]
-+T}
-+T{
-+\f[C]VersionPrefix\f[R] and \f[C]VersionSuffix\f[R]
-+T}@T{
-+\f[C]$(VersionPrefix)-$(VersionSuffix)\f[R]
-+T}
-+.TE
-+.PP
-+If you want to use \f[C]--version-suffix\f[R], specify \f[C]VersionPrefix\f[R] and not \f[C]Version\f[R] in the project file.
-+For example, if \f[C]VersionPrefix\f[R] is \f[C]0.1.2\f[R] and you pass \f[C]--version-suffix rc.1\f[R] to \f[C]dotnet pack\f[R], the package version will be \f[C]0.1.2-rc.1\f[R].
-+.PP
-+If \f[C]Version\f[R] has a value and you pass \f[C]--version-suffix\f[R] to \f[C]dotnet pack\f[R], the value specified for \f[C]--version-suffix\f[R] is ignored.
- .RE
- .SH EXAMPLES
- .IP \[bu] 2
-@@ -235,7 +301,7 @@ dotnet pack -p:TargetFrameworks=net45
- .fi
- .RE
- .IP \[bu] 2
--Pack the project and use a specific runtime (Windows 10) for the restore operation (.NET Core SDK 2.0 and later versions):
-+Pack the project and use a specific runtime (Windows 10) for the restore operation:
- .RS 2
- .IP
- .nf
-@@ -245,7 +311,7 @@ dotnet pack --runtime win10-x64
- .fi
- .RE
- .IP \[bu] 2
--Pack the project using a .nuspec file:
-+Pack the project using a \f[I].nuspec\f[R] file:
- .RS 2
- .IP
- .nf
-@@ -253,4 +319,12 @@ Pack the project using a .nuspec file:
- dotnet pack \[ti]/projects/app1/project.csproj -p:NuspecFile=\[ti]/projects/app1/project.nuspec -p:NuspecBasePath=\[ti]/projects/app1/nuget
- \f[R]
- .fi
-+.PP
-+For information about how to use \f[C]NuspecFile\f[R], \f[C]NuspecBasePath\f[R], and \f[C]NuspecProperties\f[R], see the following resources:
-+.IP \[bu] 2
-+Packing using a .nuspec
-+.IP \[bu] 2
-+Advanced extension points to create customized package
-+.IP \[bu] 2
-+Global properties
- .RE
-diff --git a/documentation/manpages/sdk/dotnet-publish.1 b/documentation/manpages/sdk/dotnet-publish.1
-index 0781225951..d991731e50 100644
---- a/documentation/manpages/sdk/dotnet-publish.1
-+++ b/documentation/manpages/sdk/dotnet-publish.1
-@@ -1,42 +1,30 @@
--.\" Automatically generated by Pandoc 2.7.2
-+.\" Automatically generated by Pandoc 2.14.1
- .\"
--.TH "dotnet publish command" "1" "" "" ".NET Core"
-+.TH "" "1" "" "" ".NET"
- .hy
- .SH dotnet publish
- .PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.1 SDK and later versions
- .SH NAME
- .PP
--\f[C]dotnet publish\f[R] - Packs the application and its dependencies into a folder for deployment to a hosting system.
-+\f[C]dotnet publish\f[R] - Publishes the application and its dependencies to a folder for deployment to a hosting system.
- .SH SYNOPSIS
--.SS .NET Core 2.1
- .IP
- .nf
- \f[C]
--dotnet publish [<PROJECT>] [-c|--configuration] [-f|--framework] [--force] [--manifest] [--no-build] [--no-dependencies]
-- [--no-restore] [-o|--output] [-r|--runtime] [--self-contained] [-v|--verbosity] [--version-suffix]
--dotnet publish [-h|--help]
-+dotnet publish [<PROJECT>|<SOLUTION>] [-a|--arch <ARCHITECTURE>]
-+ [-c|--configuration <CONFIGURATION>]
-+ [-f|--framework <FRAMEWORK>] [--force] [--interactive]
-+ [--manifest <PATH_TO_MANIFEST_FILE>] [--no-build] [--no-dependencies]
-+ [--no-restore] [--nologo] [-o|--output <OUTPUT_DIRECTORY>]
-+ [--os <OS>] [-r|--runtime <RUNTIME_IDENTIFIER>]
-+ [--self-contained [true|false]]
-+ [--no-self-contained] [-v|--verbosity <LEVEL>]
-+ [--version-suffix <VERSION_SUFFIX>]
-+
-+dotnet publish -h|--help
- \f[R]
- .fi
--.SS .NET Core 2.0
--.IP
--.nf
--\f[C]
--dotnet publish [<PROJECT>] [-c|--configuration] [-f|--framework] [--force] [--manifest] [--no-dependencies]
-- [--no-restore] [-o|--output] [-r|--runtime] [--self-contained] [-v|--verbosity] [--version-suffix]
--dotnet publish [-h|--help]
--\f[R]
--.fi
--.SS .NET Core 1.x
--.IP
--.nf
--\f[C]
--dotnet publish [<PROJECT>] [-c|--configuration] [-f|--framework] [-o|--output] [-r|--runtime] [-v|--verbosity]
-- [--version-suffix]
--dotnet publish [-h|--help]
--\f[R]
--.fi
--.PP
-- * * * * *
- .SH DESCRIPTION
- .PP
- \f[C]dotnet publish\f[R] compiles the application, reads through its dependencies specified in the project file, and publishes the resulting set of files to a directory.
-@@ -44,226 +32,367 @@ The output includes the following assets:
- .IP \[bu] 2
- Intermediate Language (IL) code in an assembly with a \f[I]dll\f[R] extension.
- .IP \[bu] 2
--\f[I].deps.json\f[R] file that includes all of the dependencies of the project.
-+A \f[I].deps.json\f[R] file that includes all of the dependencies of the project.
- .IP \[bu] 2
--\f[I].runtimeconfig.json\f[R] file that specifies the shared runtime that the application expects, as well as other configuration options for the runtime (for example, garbage collection type).
-+A \f[I].runtimeconfig.json\f[R] file that specifies the shared runtime that the application expects, as well as other configuration options for the runtime (for example, garbage collection type).
- .IP \[bu] 2
- The application\[cq]s dependencies, which are copied from the NuGet cache into the output folder.
- .PP
- The \f[C]dotnet publish\f[R] command\[cq]s output is ready for deployment to a hosting system (for example, a server, PC, Mac, laptop) for execution.
- It\[cq]s the only officially supported way to prepare the application for deployment.
--Depending on the type of deployment that the project specifies, the hosting system may or may not have the .NET Core shared runtime installed on it.
--For more information, see .NET Core Application Deployment.
--For the directory structure of a published application, see Directory structure.
--.PP
--.SS Arguments
--.PP
--\f[C]PROJECT\f[R]
--.PP
--The project to publish.
--It\[cq]s either the path and filename of a C#, F#, or Visual Basic project file, or the path to a directory that contains a C#, F#, or Visual Basic project file.
--If not specified, it defaults to the current directory.
--.SH OPTIONS
--.SS .NET Core 2.1
--.PP
--\f[C]-c|--configuration {Debug|Release}\f[R]
--.PP
--Defines the build configuration.
--The default value is \f[C]Debug\f[R].
--.PP
--\f[C]-f|--framework <FRAMEWORK>\f[R]
--.PP
--Publishes the application for the specified target framework.
--You must specify the target framework in the project file.
-+Depending on the type of deployment that the project specifies, the hosting system may or may not have the .NET shared runtime installed on it.
-+For more information, see Publish .NET apps with the .NET CLI.
-+.SS Implicit restore
- .PP
--\f[C]--force\f[R]
-+You don\[cq]t have to run \f[C]dotnet restore\f[R] because it\[cq]s run implicitly by all commands that require a restore to occur, such as \f[C]dotnet new\f[R], \f[C]dotnet build\f[R], \f[C]dotnet run\f[R], \f[C]dotnet test\f[R], \f[C]dotnet publish\f[R], and \f[C]dotnet pack\f[R].
-+To disable implicit restore, use the \f[C]--no-restore\f[R] option.
- .PP
--Forces all dependencies to be resolved even if the last restore was successful.
--Specifying this flag is the same as deleting the \f[I]project.assets.json\f[R] file.
-+The \f[C]dotnet restore\f[R] command is still useful in certain scenarios where explicitly restoring makes sense, such as continuous integration builds in Azure DevOps Services or in build systems that need to explicitly control when the restore occurs.
- .PP
--\f[C]-h|--help\f[R]
-+For information about how to manage NuGet feeds, see the \f[C]dotnet restore\f[R] documentation.
-+.SS MSBuild
- .PP
--Prints out a short help for the command.
-+The \f[C]dotnet publish\f[R] command calls MSBuild, which invokes the \f[C]Publish\f[R] target.
-+If the \f[C]IsPublishable\f[R] property is set to \f[C]false\f[R] for a particular project, the \f[C]Publish\f[R] target can\[cq]t be invoked, and the \f[C]dotnet publish\f[R] command only runs the implicit dotnet restore on the project.
- .PP
--\f[C]--manifest <PATH_TO_MANIFEST_FILE>\f[R]
-+Any parameters passed to \f[C]dotnet publish\f[R] are passed to MSBuild.
-+The \f[C]-c\f[R] and \f[C]-o\f[R] parameters map to MSBuild\[cq]s \f[C]Configuration\f[R] and \f[C]PublishDir\f[R] properties, respectively.
- .PP
--Specifies one or several target manifests to use to trim the set of packages published with the app.
--The manifest file is part of the output of the \f[C]dotnet store\f[R] command.
--To specify multiple manifests, add a \f[C]--manifest\f[R] option for each manifest.
--This option is available starting with .NET Core 2.0 SDK.
--.PP
--\f[C]--no-build\f[R]
--.PP
--Doesn\[cq]t build the project before publishing.
--It also implicitly sets the \f[C]--no-restore\f[R] flag.
-+The \f[C]dotnet publish\f[R] command accepts MSBuild options, such as \f[C]-p\f[R] for setting properties and \f[C]-l\f[R] to define a logger.
-+For example, you can set an MSBuild property by using the format: \f[C]-p:<NAME>=<VALUE>\f[R].
- .PP
--\f[C]--no-dependencies\f[R]
--.PP
--Ignores project-to-project references and only restores the root project.
-+You can also set publish-related properties by referring to a \f[I].pubxml\f[R] file (available since .NET Core 3.1 SDK).
-+For example:
-+.IP
-+.nf
-+\f[C]
-+dotnet publish -p:PublishProfile=FolderProfile
-+\f[R]
-+.fi
- .PP
--\f[C]--no-restore\f[R]
-+The preceding example uses the \f[I]FolderProfile.pubxml\f[R] file that is found in the \f[I]<project_folder>/Properties/PublishProfiles\f[R] folder.
-+If you specify a path and file extension when setting the \f[C]PublishProfile\f[R] property, they are ignored.
-+MSBuild by default looks in the \f[I]Properties/PublishProfiles\f[R] folder and assumes the \f[I]pubxml\f[R] file extension.
-+To specify the path and filename including extension, set the \f[C]PublishProfileFullPath\f[R] property instead of the \f[C]PublishProfile\f[R] property.
- .PP
--Doesn\[cq]t execute an implicit restore when running the command.
-+The following MSBuild properties change the output of \f[C]dotnet publish\f[R].
-+.IP \[bu] 2
-+\f[C]PublishReadyToRun\f[R]
-+.RS 2
- .PP
--\f[C]-o|--output <OUTPUT_DIRECTORY>\f[R]
-+Compiles application assemblies as ReadyToRun (R2R) format.
-+R2R is a form of ahead-of-time (AOT) compilation.
-+For more information, see ReadyToRun images.
-+Available since .NET Core 3.0 SDK.
- .PP
--Specifies the path for the output directory.
--If not specified, it defaults to \f[I]./bin/[configuration]/[framework]/publish/\f[R] for a framework-dependent deployment or \f[I]./bin/[configuration]/[framework]/[runtime]/publish/\f[R] for a self-contained deployment.
--If the path is relative, the output directory generated is relative to the project file location, not to the current working directory.
-+To see warnings about missing dependencies that could cause runtime failures, use \f[C]PublishReadyToRunShowWarnings=true\f[R].
- .PP
--\f[C]--self-contained\f[R]
-+We recommend that you specify \f[C]PublishReadyToRun\f[R] in a publish profile rather than on the command line.
-+.RE
-+.IP \[bu] 2
-+\f[C]PublishSingleFile\f[R]
-+.RS 2
- .PP
--Publishes the .NET Core runtime with your application so the runtime doesn\[cq]t need to be installed on the target machine.
--If a runtime identifier is specified, its default value is \f[C]true\f[R].
--For more information about the different deployment types, see .NET Core application deployment.
-+Packages the app into a platform-specific single-file executable.
-+For more information about single-file publishing, see the single-file bundler design document (https://github.com/dotnet/designs/blob/main/accepted/2020/single-file/des...).
-+Available since .NET Core 3.0 SDK.
- .PP
--\f[C]-r|--runtime <RUNTIME_IDENTIFIER>\f[R]
-+We recommend that you specify this option in the project file rather than on the command line.
-+.RE
-+.IP \[bu] 2
-+\f[C]PublishTrimmed\f[R]
-+.RS 2
- .PP
--Publishes the application for a given runtime.
--This is used when creating a self-contained deployment (SCD).
--For a list of Runtime Identifiers (RIDs), see the RID catalog.
--Default is to publish a framework-dependent deployment (FDD).
-+Trims unused libraries to reduce the deployment size of an app when publishing a self-contained executable.
-+For more information, see Trim self-contained deployments and executables.
-+Available since .NET Core 3.0 SDK as a preview feature.
- .PP
--\f[C]-v|--verbosity <LEVEL>\f[R]
-+We recommend that you specify this option in the project file rather than on the command line.
-+.RE
- .PP
--Sets the verbosity level of the command.
--Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
--.PP
--\f[C]--version-suffix <VERSION_SUFFIX>\f[R]
-+For more information, see the following resources:
-+.IP \[bu] 2
-+MSBuild command-line reference
-+.IP \[bu] 2
-+Visual Studio publish profiles (.pubxml) for ASP.NET Core app deployment
-+.IP \[bu] 2
-+dotnet msbuild
-+.SS Workload manifest downloads
- .PP
--Defines the version suffix to replace the asterisk (\f[C]*\f[R]) in the version field of the project file.
--.SS .NET Core 2.0
-+When you run this command, it initiates an asynchronous background download of advertising manifests for workloads.
-+If the download is still running when this command finishes, the download is stopped.
-+For more information, see Advertising manifests.
-+.SS Arguments
-+.IP \[bu] 2
-+\f[B]\f[CB]PROJECT|SOLUTION\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]-c|--configuration {Debug|Release}\f[R]
-+The project or solution to publish.
-+.IP \[bu] 2
-+\f[C]PROJECT\f[R] is the path and filename of a C#, F#, or Visual Basic project file, or the path to a directory that contains a C#, F#, or Visual Basic project file.
-+If the directory is not specified, it defaults to the current directory.
-+.IP \[bu] 2
-+\f[C]SOLUTION\f[R] is the path and filename of a solution file (\f[I].sln\f[R] extension), or the path to a directory that contains a solution file.
-+If the directory is not specified, it defaults to the current directory.
-+Available since .NET Core 3.0 SDK.
-+.RE
-+.SH OPTIONS
-+.IP \[bu] 2
-+\f[B]\f[CB]-a|--arch <ARCHITECTURE>\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies the target architecture.
-+This is a shorthand syntax for setting the Runtime Identifier (RID), where the provided value is combined with the default RID.
-+For example, on a \f[C]win-x64\f[R] machine, specifying \f[C]--arch x86\f[R] sets the RID to \f[C]win-x86\f[R].
-+If you use this option, don\[cq]t use the \f[C]-r|--runtime\f[R] option.
-+Available since .NET 6 Preview 7.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-c|--configuration <CONFIGURATION>\f[B]\f[R]
-+.RS 2
- .PP
- Defines the build configuration.
--The default value is \f[C]Debug\f[R].
--.PP
--\f[C]-f|--framework <FRAMEWORK>\f[R]
-+The default for most projects is \f[C]Debug\f[R], but you can override the build configuration settings in your project.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-f|--framework <FRAMEWORK>\f[B]\f[R]
-+.RS 2
- .PP
- Publishes the application for the specified target framework.
- You must specify the target framework in the project file.
--.PP
--\f[C]--force\f[R]
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--force\f[B]\f[R]
-+.RS 2
- .PP
- Forces all dependencies to be resolved even if the last restore was successful.
- Specifying this flag is the same as deleting the \f[I]project.assets.json\f[R] file.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]-h|--help\f[R]
--.PP
--Prints out a short help for the command.
-+Prints out a description of how to use the command.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--interactive\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]--manifest <PATH_TO_MANIFEST_FILE>\f[R]
-+Allows the command to stop and wait for user input or action.
-+For example, to complete authentication.
-+Available since .NET Core 3.0 SDK.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--manifest <PATH_TO_MANIFEST_FILE>\f[B]\f[R]
-+.RS 2
- .PP
- Specifies one or several target manifests to use to trim the set of packages published with the app.
- The manifest file is part of the output of the \f[C]dotnet store\f[R] command.
- To specify multiple manifests, add a \f[C]--manifest\f[R] option for each manifest.
--This option is available starting with .NET Core 2.0 SDK.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-build\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]--no-dependencies\f[R]
-+Doesn\[cq]t build the project before publishing.
-+It also implicitly sets the \f[C]--no-restore\f[R] flag.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-dependencies\f[B]\f[R]
-+.RS 2
- .PP
- Ignores project-to-project references and only restores the root project.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--nologo\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]--no-restore\f[R]
-+Doesn\[cq]t display the startup banner or the copyright message.
-+Available since .NET Core 3.0 SDK.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-restore\f[B]\f[R]
-+.RS 2
- .PP
- Doesn\[cq]t execute an implicit restore when running the command.
--.PP
--\f[C]-o|--output <OUTPUT_DIRECTORY>\f[R]
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-o|--output <OUTPUT_DIRECTORY>\f[B]\f[R]
-+.RS 2
- .PP
- Specifies the path for the output directory.
--If not specified, it defaults to \f[I]./bin/[configuration]/[framework]/publish/\f[R] for a framework-dependent deployment or \f[I]./bin/[configuration]/[framework]/[runtime]/publish/\f[R] for a self-contained deployment.
--If the path is relative, the output directory generated is relative to the project file location, not to the current working directory.
--.PP
--\f[C]--self-contained\f[R]
--.PP
--Publishes the .NET Core runtime with your application so the runtime doesn\[cq]t need to be installed on the target machine.
--If a runtime identifier is specified, its default value is \f[C]true\f[R].
--For more information about the different deployment types, see .NET Core application deployment.
- .PP
--\f[C]-r|--runtime <RUNTIME_IDENTIFIER>\f[R]
-+If not specified, it defaults to \f[I][project_file_folder]/bin/[configuration]/[framework]/publish/\f[R] for a framework-dependent executable and cross-platform binaries.
-+It defaults to \f[I][project_file_folder]/bin/[configuration]/[framework]/[runtime]/publish/\f[R] for a self-contained executable.
- .PP
--Publishes the application for a given runtime.
--This is used when creating a self-contained deployment (SCD).
--For a list of Runtime Identifiers (RIDs), see the RID catalog.
--Default is to publish a framework-dependent deployment (FDD).
--.PP
--\f[C]-v|--verbosity <LEVEL>\f[R]
--.PP
--Sets the verbosity level of the command.
--Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
--.PP
--\f[C]--version-suffix <VERSION_SUFFIX>\f[R]
--.PP
--Defines the version suffix to replace the asterisk (\f[C]*\f[R]) in the version field of the project file.
--.SS .NET Core 1.x
--.PP
--\f[C]-c|--configuration {Debug|Release}\f[R]
--.PP
--Defines the build configuration.
--The default value is \f[C]Debug\f[R].
--.PP
--\f[C]-f|--framework <FRAMEWORK>\f[R]
--.PP
--Publishes the application for the specified target framework.
--You must specify the target framework in the project file.
-+In a web project, if the output folder is in the project folder, successive \f[C]dotnet publish\f[R] commands result in nested output folders.
-+For example, if the project folder is \f[I]myproject\f[R], and the publish output folder is \f[I]myproject/publish\f[R], and you run \f[C]dotnet publish\f[R] twice, the second run puts content files such as \f[I].config\f[R] and \f[I].json\f[R] files in \f[I]myproject/publish/publish\f[R].
-+To avoid nesting publish folders, specify a publish folder that is not \f[B]directly\f[R] under the project folder, or exclude the publish folder from the project.
-+To exclude a publish folder named \f[I]publishoutput\f[R], add the following element to a \f[C]PropertyGroup\f[R] element in the \f[I].csproj\f[R] file:
-+.IP
-+.nf
-+\f[C]
-+<DefaultItemExcludes>$(DefaultItemExcludes);publishoutput**</DefaultItemExcludes>
-+\f[R]
-+.fi
-+.IP \[bu] 2
-+\&.NET Core 3.x SDK and later
-+.RS 2
- .PP
--\f[C]-h|--help\f[R]
-+If you specify a relative path when publishing a project, the generated output directory is relative to the current working directory, not to the project file location.
- .PP
--Prints out a short help for the command.
-+If you specify a relative path when publishing a solution, all output for all projects goes into the specified folder relative to the current working directory.
-+To make publish output go to separate folders for each project, specify a relative path by using the msbuild \f[C]PublishDir\f[R] property instead of the \f[C]--output\f[R] option.
-+For example, \f[C]dotnet publish -p:PublishDir=.\[rs]publish\f[R] sends publish output for each project to a \f[C]publish\f[R] folder under the folder that contains the project file.
-+.RE
-+.IP \[bu] 2
-+\&.NET Core 2.x SDK
-+.RS 2
- .PP
--\f[C]--manifest <PATH_TO_MANIFEST_FILE>\f[R]
-+If you specify a relative path when publishing a project, the generated output directory is relative to the project file location, not to the current working directory.
- .PP
--Specifies one or several target manifests to use to trim the set of packages published with the app.
--The manifest file is part of the output of the \f[C]dotnet store\f[R] command.
--To specify multiple manifests, add a \f[C]--manifest\f[R] option for each manifest.
--This option is available starting with .NET Core 2.0 SDK.
-+If you specify a relative path when publishing a solution, each project\[cq]s output goes into a separate folder relative to the project file location.
-+If you specify an absolute path when publishing a solution, all publish output for all projects goes into the specified folder.
-+.RE
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--os <OS>\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies the target operating system (OS).
-+This is a shorthand syntax for setting the Runtime Identifier (RID), where the provided value is combined with the default RID.
-+For example, on a \f[C]win-x64\f[R] machine, specifying \f[C]--os os\f[R] sets the RID to \f[C]os-x64\f[R].
-+If you use this option, don\[cq]t use the \f[C]-r|--runtime\f[R] option.
-+Available since .NET 6 Preview 7.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--self-contained [true|false]\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]-o|--output <OUTPUT_DIRECTORY>\f[R]
-+Publishes the .NET runtime with your application so the runtime doesn\[cq]t need to be installed on the target machine.
-+Default is \f[C]true\f[R] if a runtime identifier is specified and the project is an executable project (not a library project).
-+For more information, see .NET application publishing and Publish .NET apps with the .NET CLI.
- .PP
--Specifies the path for the output directory.
--If not specified, it defaults to \f[I]./bin/[configuration]/[framework]/publish/\f[R] for a framework-dependent deployment or \f[I]./bin/[configuration]/[framework]/[runtime]/publish/\f[R] for a self-contained deployment.
--If the path is relative, the output directory generated is relative to the project file location, not to the current working directory.
-+If this option is used without specifying \f[C]true\f[R] or \f[C]false\f[R], the default is \f[C]true\f[R].
-+In that case, don\[cq]t put the solution or project argument immediately after \f[C]--self-contained\f[R], because \f[C]true\f[R] or \f[C]false\f[R] is expected in that position.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-self-contained\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]-r|--runtime <RUNTIME_IDENTIFIER>\f[R]
-+Equivalent to \f[C]--self-contained false\f[R].
-+Available since .NET Core 3.0 SDK.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-r|--runtime <RUNTIME_IDENTIFIER>\f[B]\f[R]
-+.RS 2
- .PP
- Publishes the application for a given runtime.
--This is used when creating a self-contained deployment (SCD).
- For a list of Runtime Identifiers (RIDs), see the RID catalog.
--Default is to publish a framework-dependent deployment (FDD).
--.PP
--\f[C]-v|--verbosity <LEVEL>\f[R]
-+For more information, see .NET application publishing and Publish .NET apps with the .NET CLI.
-+If you use this option, use \f[C]--self-contained\f[R] or \f[C]--no-self-contained\f[R] also.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
-+.RS 2
- .PP
- Sets the verbosity level of the command.
- Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
--.PP
--\f[C]--version-suffix <VERSION_SUFFIX>\f[R]
-+The default is \f[C]minimal\f[R].
-+For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--version-suffix <VERSION_SUFFIX>\f[B]\f[R]
-+.RS 2
- .PP
- Defines the version suffix to replace the asterisk (\f[C]*\f[R]) in the version field of the project file.
--.PP
-- * * * * *
-+.RE
- .SH EXAMPLES
-+.IP \[bu] 2
-+Create a framework-dependent cross-platform binary for the project in the current directory:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet publish
-+\f[R]
-+.fi
- .PP
--Publish the project in the current directory:
--.PP
--\f[C]dotnet publish\f[R]
--.PP
--Publish the application using the specified project file:
--.PP
--\f[C]dotnet publish \[ti]/projects/app1/app1.csproj\f[R]
--.PP
--Publish the project in the current directory using the \f[C]netcoreapp1.1\f[R] framework:
--.PP
--\f[C]dotnet publish --framework netcoreapp1.1\f[R]
--.PP
--Publish the current application using the \f[C]netcoreapp1.1\f[R] framework and the runtime for \f[C]OS X 10.10\f[R] (you must list this RID in the project file).
--.PP
--\f[C]dotnet publish --framework netcoreapp1.1 --runtime osx.10.11-x64\f[R]
-+Starting with .NET Core 3.0 SDK, this example also creates a framework-dependent executable for the current platform.
-+.RE
-+.IP \[bu] 2
-+Create a self-contained executable for the project in the current directory, for a specific runtime:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet publish --runtime osx.10.11-x64
-+\f[R]
-+.fi
- .PP
--Publish the current application but don\[cq]t restore project-to-project (P2P) references, just the root project during the restore operation (.NET Core SDK 2.0 and later versions):
-+The RID must be in the project file.
-+.RE
-+.IP \[bu] 2
-+Create a framework-dependent executable for the project in the current directory, for a specific platform:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet publish --runtime osx.10.11-x64 --self-contained false
-+\f[R]
-+.fi
- .PP
--\f[C]dotnet publish --no-dependencies\f[R]
-+The RID must be in the project file.
-+This example applies to .NET Core 3.0 SDK and later versions.
-+.RE
-+.IP \[bu] 2
-+Publish the project in the current directory, for a specific runtime and target framework:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet publish --framework netcoreapp3.1 --runtime osx.10.11-x64
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Publish the specified project file:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet publish \[ti]/projects/app1/app1.csproj
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Publish the current application but don\[cq]t restore project-to-project (P2P) references, just the root project during the restore operation:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet publish --no-dependencies
-+\f[R]
-+.fi
-+.RE
- .SS See also
- .IP \[bu] 2
-+\&.NET application publishing overview
-+.IP \[bu] 2
-+Publish .NET apps with the .NET CLI
-+.IP \[bu] 2
- Target frameworks
- .IP \[bu] 2
--Runtime IDentifier (RID) catalog
-+Runtime Identifier (RID) catalog
-+.IP \[bu] 2
-+Working with macOS Catalina Notarization
-+.IP \[bu] 2
-+Directory structure of a published application
-+.IP \[bu] 2
-+MSBuild command-line reference
-+.IP \[bu] 2
-+Visual Studio publish profiles (.pubxml) for ASP.NET Core app deployment
-+.IP \[bu] 2
-+dotnet msbuild
-+.IP \[bu] 2
-+ILLInk.Tasks
-diff --git a/documentation/manpages/sdk/dotnet-remove-package.1 b/documentation/manpages/sdk/dotnet-remove-package.1
-index 8e49cbc581..1fa6097ee9 100644
---- a/documentation/manpages/sdk/dotnet-remove-package.1
-+++ b/documentation/manpages/sdk/dotnet-remove-package.1
-@@ -1,15 +1,22 @@
--.\" Automatically generated by Pandoc 2.7.2
-+.\" Automatically generated by Pandoc 2.14.1
- .\"
--.TH "dotnet remove package command" "1" "" "" ".NET Core"
-+.TH "" "1" "" "" ".NET"
- .hy
- .SH dotnet remove package
- .PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.x SDK and later versions
- .SH NAME
- .PP
- \f[C]dotnet remove package\f[R] - Removes package reference from a project file.
- .SH SYNOPSIS
--.PP
--\f[C]dotnet remove [<PROJECT>] package <PACKAGE_NAME> [-h|--help]\f[R]
-+.IP
-+.nf
-+\f[C]
-+dotnet remove [<PROJECT>] package <PACKAGE_NAME>
-+
-+dotnet remove package -h|--help
-+\f[R]
-+.fi
- .SH DESCRIPTION
- .PP
- The \f[C]dotnet remove package\f[R] command provides a convenient option to remove a NuGet package reference from a project.
-@@ -24,12 +31,20 @@ If not specified, the command searches the current directory for one.
- .PP
- The package reference to remove.
- .SH OPTIONS
-+.IP \[bu] 2
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]-h|--help\f[R]
--.PP
--Prints out a short help for the command.
-+Prints out a description of how to use the command.
-+.RE
- .SH EXAMPLES
--.PP
--Removes \f[C]Newtonsoft.Json\f[R] NuGet package from a project in the current directory:
--.PP
--\f[C]dotnet remove package Newtonsoft.Json\f[R]
-+.IP \[bu] 2
-+Remove \f[C]Newtonsoft.Json\f[R] NuGet package from a project in the current directory:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet remove package Newtonsoft.Json
-+\f[R]
-+.fi
-+.RE
-diff --git a/documentation/manpages/sdk/dotnet-remove-reference.1 b/documentation/manpages/sdk/dotnet-remove-reference.1
-index 57a8c0cb17..f7b4688542 100644
---- a/documentation/manpages/sdk/dotnet-remove-reference.1
-+++ b/documentation/manpages/sdk/dotnet-remove-reference.1
-@@ -1,15 +1,23 @@
--.\" Automatically generated by Pandoc 2.7.2
-+.\" Automatically generated by Pandoc 2.14.1
- .\"
--.TH "dotnet remove reference command" "1" "" "" ".NET Core"
-+.TH "" "1" "" "" ".NET"
- .hy
- .SH dotnet remove reference
- .PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.x SDK and later versions
- .SH NAME
- .PP
--\f[C]dotnet remove reference\f[R] - Removes project-to-project references.
-+\f[C]dotnet remove reference\f[R] - Removes project-to-project (P2P) references.
- .SH SYNOPSIS
--.PP
--\f[C]dotnet remove [<PROJECT>] reference [-f|--framework] <PROJECT_REFERENCES> [-h|--help]\f[R]
-+.IP
-+.nf
-+\f[C]
-+dotnet remove [<PROJECT>] reference [-f|--framework <FRAMEWORK>]
-+ <PROJECT_REFERENCES>
-+
-+dotnet remove reference -h|--help
-+\f[R]
-+.fi
- .SH DESCRIPTION
- .PP
- The \f[C]dotnet remove reference\f[R] command provides a convenient option to remove project references from a project.
-@@ -24,26 +32,48 @@ If not specified, the command searches the current directory for one.
- .PP
- Project-to-project (P2P) references to remove.
- You can specify one or multiple projects.
--Glob patterns are supported on Unix/Linux based terminals.
-+Glob patterns (https://en.wikipedia.org/wiki/Glob_(programming)) are supported on Unix/Linux based terminals.
- .SH OPTIONS
--.PP
--\f[C]-h|--help\f[R]
--.PP
--Prints out a short help for the command.
--.PP
--\f[C]-f|--framework <FRAMEWORK>\f[R]
--.PP
--Removes the reference only when targeting a specific framework.
-+.IP \[bu] 2
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
-+.RS 2
-+.PP
-+Prints out a description of how to use the command.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-f|--framework <FRAMEWORK>\f[B]\f[R]
-+.RS 2
-+.PP
-+Removes the reference only when targeting a specific framework using the TFM format.
-+.RE
- .SH EXAMPLES
--.PP
-+.IP \[bu] 2
- Remove a project reference from the specified project:
--.PP
--\f[C]dotnet remove app/app.csproj reference lib/lib.csproj\f[R]
--.PP
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet remove app/app.csproj reference lib/lib.csproj
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
- Remove multiple project references from the project in the current directory:
--.PP
--\f[C]dotnet remove reference lib1/lib1.csproj lib2/lib2.csproj\f[R]
--.PP
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet remove reference lib1/lib1.csproj lib2/lib2.csproj
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
- Remove multiple project references using a glob pattern on Unix/Linux:
--.PP
--\f[C]dotnet remove app/app.csproj reference **/*.csproj\f[R]
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet remove app/app.csproj reference **/*.csproj\[ga]
-+\f[R]
-+.fi
-+.RE
-diff --git a/documentation/manpages/sdk/dotnet-restore.1 b/documentation/manpages/sdk/dotnet-restore.1
-index ed895eb096..f40f4cd0ba 100644
---- a/documentation/manpages/sdk/dotnet-restore.1
-+++ b/documentation/manpages/sdk/dotnet-restore.1
-@@ -1,48 +1,70 @@
--.\" Automatically generated by Pandoc 2.7.2
-+.\" Automatically generated by Pandoc 2.14.1
- .\"
--.TH "dotnet restore command" "1" "" "" ".NET Core"
-+.TH "" "1" "" "" ".NET"
- .hy
- .SH dotnet restore
- .PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.1 SDK and later versions
- .SH NAME
- .PP
- \f[C]dotnet restore\f[R] - Restores the dependencies and tools of a project.
- .SH SYNOPSIS
--.SS .NET Core 2.x
- .IP
- .nf
- \f[C]
--dotnet restore [<ROOT>] [--configfile] [--disable-parallel] [--force] [--ignore-failed-sources] [--no-cache]
-- [--no-dependencies] [--packages] [-r|--runtime] [-s|--source] [-v|--verbosity] [--interactive]
--dotnet restore [-h|--help]
-+dotnet restore [<ROOT>] [--configfile <FILE>] [--disable-parallel]
-+ [-f|--force] [--force-evaluate] [--ignore-failed-sources]
-+ [--interactive] [--lock-file-path <LOCK_FILE_PATH>] [--locked-mode]
-+ [--no-cache] [--no-dependencies] [--packages <PACKAGES_DIRECTORY>]
-+ [-r|--runtime <RUNTIME_IDENTIFIER>] [-s|--source <SOURCE>]
-+ [--use-lock-file] [-v|--verbosity <LEVEL>]
-+
-+dotnet restore -h|--help
- \f[R]
- .fi
--.SS .NET Core 1.x
--.IP
--.nf
--\f[C]
--dotnet restore [<ROOT>] [--configfile] [--disable-parallel] [--ignore-failed-sources] [--no-cache]
-- [--no-dependencies] [--packages] [-r|--runtime] [-s|--source] [-v|--verbosity]
--dotnet restore [-h|--help]
--\f[R]
--.fi
--.PP
-- * * * * *
- .SH DESCRIPTION
- .PP
- The \f[C]dotnet restore\f[R] command uses NuGet to restore dependencies as well as project-specific tools that are specified in the project file.
--By default, the restoration of dependencies and tools are executed in parallel.
-+In most cases, you don\[cq]t need to explicitly use the \f[C]dotnet restore\f[R] command, since a NuGet restore is run implicitly if necessary when you run the following commands:
-+.IP \[bu] 2
-+\f[C]dotnet new\f[R]
-+.IP \[bu] 2
-+\f[C]dotnet build\f[R]
-+.IP \[bu] 2
-+\f[C]dotnet build-server\f[R]
-+.IP \[bu] 2
-+\f[C]dotnet run\f[R]
-+.IP \[bu] 2
-+\f[C]dotnet test\f[R]
-+.IP \[bu] 2
-+\f[C]dotnet publish\f[R]
-+.IP \[bu] 2
-+\f[C]dotnet pack\f[R]
- .PP
-+Sometimes, it might be inconvenient to run the implicit NuGet restore with these commands.
-+For example, some automated systems, such as build systems, need to call \f[C]dotnet restore\f[R] explicitly to control when the restore occurs so that they can control network usage.
-+To prevent the implicit NuGet restore, you can use the \f[C]--no-restore\f[R] flag with any of these commands to disable implicit restore.
-+.SS Specify feeds
- .PP
- To restore the dependencies, NuGet needs the feeds where the packages are located.
- Feeds are usually provided via the \f[I]nuget.config\f[R] configuration file.
--A default configuration file is provided when the CLI tools are installed.
--You specify additional feeds by creating your own \f[I]nuget.config\f[R] file in the project directory.
--You also specify additional feeds per invocation at a command prompt.
-+A default configuration file is provided when the .NET SDK is installed.
-+To specify additional feeds, do one of the following:
-+.IP \[bu] 2
-+Create your own \f[I]nuget.config\f[R] file in the project directory.
-+For more information, see Common NuGet configurations and nuget.config differences later in this article.
-+.IP \[bu] 2
-+Use \f[C]dotnet nuget\f[R] commands such as \f[C]dotnet nuget add source\f[R].
-+.PP
-+You can override the \f[I]nuget.config\f[R] feeds with the \f[C]-s\f[R] option.
- .PP
--For dependencies, you specify where the restored packages are placed during the restore operation using the \f[C]--packages\f[R] argument.
-+For information about how to use authenticated feeds, see Consuming packages from authenticated feeds.
-+.SS Global packages folder
-+.PP
-+For dependencies, you can specify where the restored packages are placed during the restore operation using the \f[C]--packages\f[R] argument.
- If not specified, the default NuGet package cache is used, which is found in the \f[C].nuget/packages\f[R] directory in the user\[cq]s home directory on all operating systems.
--For example, \f[I]/home/user1\f[R] on Linux or \f[I]C:1\f[R] on Windows.
-+For example, \f[I]/home/user1\f[R] on Linux or \f[I]C:\f[R] on Windows.
-+.SS Project-specific tooling
- .PP
- For project-specific tooling, \f[C]dotnet restore\f[R] first restores the package in which the tool is packed, and then proceeds to restore the tool\[cq]s dependencies as specified in its project file.
- .SS nuget.config differences
-@@ -57,176 +79,192 @@ There are three specific settings that \f[C]dotnet restore\f[R] ignores:
- bindingRedirects
- .RS 2
- .PP
--Binding redirects don\[cq]t work with \f[C]<PackageReference>\f[R] elements and .NET Core only supports \f[C]<PackageReference>\f[R] elements for NuGet packages.
-+Binding redirects don\[cq]t work with \f[C]<PackageReference>\f[R] elements and .NET only supports \f[C]<PackageReference>\f[R] elements for NuGet packages.
- .RE
- .IP \[bu] 2
- solution
- .RS 2
- .PP
--This setting is Visual Studio specific and doesn\[cq]t apply to .NET Core.
--\&.NET Core doesn\[cq]t use a \f[C]packages.config\f[R] file and instead uses \f[C]<PackageReference>\f[R] elements for NuGet packages.
-+This setting is Visual Studio specific and doesn\[cq]t apply to .NET.
-+\&.NET doesn\[cq]t use a \f[C]packages.config\f[R] file and instead uses \f[C]<PackageReference>\f[R] elements for NuGet packages.
- .RE
- .IP \[bu] 2
- trustedSigners
- .RS 2
- .PP
--This setting isn\[cq]t applicable as NuGet doesn\[cq]t yet support cross-platform verification of trusted packages.
-+Support for cross-platform package signature verification was added in the .NET 5.0.100 SDK.
- .RE
--.SS Implicit \f[C]dotnet restore\f[R]
-+.SS Workload manifest downloads
- .PP
--Starting with .NET Core 2.0, \f[C]dotnet restore\f[R] is run implicitly if necessary when you issue the following commands:
--.IP \[bu] 2
--\f[C]dotnet new\f[R]
--.IP \[bu] 2
--\f[C]dotnet build\f[R]
--.IP \[bu] 2
--\f[C]dotnet build-server\f[R]
--.IP \[bu] 2
--\f[C]dotnet run\f[R]
--.IP \[bu] 2
--\f[C]dotnet test\f[R]
--.IP \[bu] 2
--\f[C]dotnet publish\f[R]
--.IP \[bu] 2
--\f[C]dotnet pack\f[R]
--.PP
--In most cases, you no longer need to explicitly use the \f[C]dotnet restore\f[R] command.
--.PP
--Sometimes, it might be inconvenient to run \f[C]dotnet restore\f[R] implicitly.
--For example, some automated systems, such as build systems, need to call \f[C]dotnet restore\f[R] explicitly to control when the restore occurs so that they can control network usage.
--To prevent \f[C]dotnet restore\f[R] from running implicitly, you can use the \f[C]--no-restore\f[R] flag with any of these commands to disable implicit restore.
-+When you run this command, it initiates an asynchronous background download of advertising manifests for workloads.
-+If the download is still running when this command finishes, the download is stopped.
-+For more information, see Advertising manifests.
- .SS Arguments
--.PP
--\f[C]ROOT\f[R]
-+.IP \[bu] 2
-+\f[B]\f[CB]ROOT\f[B]\f[R]
-+.RS 2
- .PP
- Optional path to the project file to restore.
-+.RE
- .SH OPTIONS
--.SS .NET Core 2.x
--.PP
--\f[C]--configfile <FILE>\f[R]
--.PP
--The NuGet configuration file (\f[I]nuget.config\f[R]) to use for the restore operation.
-+.IP \[bu] 2
-+\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]--disable-parallel\f[R]
-+The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
-+If specified, only the settings from this file will be used.
-+If not specified, the hierarchy of configuration files from the current directory will be used.
-+For more information, see Common NuGet Configurations.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--disable-parallel\f[B]\f[R]
-+.RS 2
- .PP
- Disables restoring multiple projects in parallel.
--.PP
--\f[C]--force\f[R]
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--force\f[B]\f[R]
-+.RS 2
- .PP
- Forces all dependencies to be resolved even if the last restore was successful.
- Specifying this flag is the same as deleting the \f[I]project.assets.json\f[R] file.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--force-evaluate\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]-h|--help\f[R]
--.PP
--Prints out a short help for the command.
-+Forces restore to reevaluate all dependencies even if a lock file already exists.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]--ignore-failed-sources\f[R]
-+Prints out a description of how to use the command.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--ignore-failed-sources\f[B]\f[R]
-+.RS 2
- .PP
- Only warn about failed sources if there are packages meeting the version requirement.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--interactive\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]--no-cache\f[R]
--.PP
--Specifies to not cache packages and HTTP requests.
--.PP
--\f[C]--no-dependencies\f[R]
--.PP
--When restoring a project with project-to-project (P2P) references, restores the root project and not the references.
--.PP
--\f[C]--packages <PACKAGES_DIRECTORY>\f[R]
--.PP
--Specifies the directory for restored packages.
--.PP
--\f[C]-r|--runtime <RUNTIME_IDENTIFIER>\f[R]
--.PP
--Specifies a runtime for the package restore.
--This is used to restore packages for runtimes not explicitly listed in the \f[C]<RuntimeIdentifiers>\f[R] tag in the \f[I].csproj\f[R] file.
--For a list of Runtime Identifiers (RIDs), see the RID catalog.
--Provide multiple RIDs by specifying this option multiple times.
--.PP
--\f[C]-s|--source <SOURCE>\f[R]
--.PP
--Specifies a NuGet package source to use during the restore operation.
--This setting overrides all of the sources specified in the \f[I]nuget.config\f[R] files.
--Multiple sources can be provided by specifying this option multiple times.
--.PP
--\f[C]--verbosity <LEVEL>\f[R]
--.PP
--Sets the verbosity level of the command.
--Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
--Default value is \f[C]minimal\f[R].
--.PP
--\f[C]--interactive\f[R]
--.PP
--Allows the command to stop and wait for user input or action (for example to complete authentication).
--Since .NET Core 2.1.400.
--.SS .NET Core 1.x
--.PP
--\f[C]--configfile <FILE>\f[R]
--.PP
--The NuGet configuration file (\f[I]nuget.config\f[R]) to use for the restore operation.
--.PP
--\f[C]--disable-parallel\f[R]
--.PP
--Disables restoring multiple projects in parallel.
--.PP
--\f[C]-h|--help\f[R]
--.PP
--Prints out a short help for the command.
--.PP
--\f[C]--ignore-failed-sources\f[R]
--.PP
--Only warn about failed sources if there are packages meeting the version requirement.
-+Allows the command to stop and wait for user input or action.
-+For example, to complete authentication.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--lock-file-path <LOCK_FILE_PATH>\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]--no-cache\f[R]
-+Output location where project lock file is written.
-+By default, this is \f[I]PROJECT_ROOT.lock.json\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--locked-mode\f[B]\f[R]
-+.RS 2
- .PP
--Specifies to not cache packages and HTTP requests.
-+Don\[cq]t allow updating project lock file.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-cache\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]--no-dependencies\f[R]
-+Specifies to not cache HTTP requests.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-dependencies\f[B]\f[R]
-+.RS 2
- .PP
- When restoring a project with project-to-project (P2P) references, restores the root project and not the references.
--.PP
--\f[C]--packages <PACKAGES_DIRECTORY>\f[R]
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--packages <PACKAGES_DIRECTORY>\f[B]\f[R]
-+.RS 2
- .PP
- Specifies the directory for restored packages.
--.PP
--\f[C]-r|--runtime <RUNTIME_IDENTIFIER>\f[R]
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-r|--runtime <RUNTIME_IDENTIFIER>\f[B]\f[R]
-+.RS 2
- .PP
- Specifies a runtime for the package restore.
- This is used to restore packages for runtimes not explicitly listed in the \f[C]<RuntimeIdentifiers>\f[R] tag in the \f[I].csproj\f[R] file.
- For a list of Runtime Identifiers (RIDs), see the RID catalog.
- Provide multiple RIDs by specifying this option multiple times.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-s|--source <SOURCE>\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]-s|--source <SOURCE>\f[R]
--.PP
--Specifies a NuGet package source to use during the restore operation.
--This overrides all of the sources specified in the \f[I]nuget.config\f[R] files, effectively reading the \f[I]nuget.config\f[R] file as if the \f[C]<packageSource>\f[R] element was not there.
-+Specifies the URI of the NuGet package source to use during the restore operation.
-+This setting overrides all of the sources specified in the \f[I]nuget.config\f[R] files.
- Multiple sources can be provided by specifying this option multiple times.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--use-lock-file\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]--verbosity <LEVEL>\f[R]
-+Enables project lock file to be generated and used with restore.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
-+.RS 2
- .PP
- Sets the verbosity level of the command.
- Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
- The default is \f[C]minimal\f[R].
--.PP
-- * * * * *
-+For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
-+.RE
- .SH EXAMPLES
--.PP
-+.IP \[bu] 2
- Restore dependencies and tools for the project in the current directory:
--.PP
--\f[C]dotnet restore\f[R]
--.PP
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet restore
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
- Restore dependencies and tools for the \f[C]app1\f[R] project found in the given path:
--.PP
--\f[C]dotnet restore \[ti]/projects/app1/app1.csproj\f[R]
--.PP
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet restore ./projects/app1/app1.csproj
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
- Restore the dependencies and tools for the project in the current directory using the file path provided as the source:
--.PP
--\f[C]dotnet restore -s c:\[rs]packages\[rs]mypackages\f[R]
--.PP
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet restore -s c:\[rs]packages\[rs]mypackages
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
- Restore the dependencies and tools for the project in the current directory using the two file paths provided as sources:
--.PP
--\f[C]dotnet restore -s c:\[rs]packages\[rs]mypackages -s c:\[rs]packages\[rs]myotherpackages\f[R]
--.PP
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet restore -s c:\[rs]packages\[rs]mypackages -s c:\[rs]packages\[rs]myotherpackages
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
- Restore dependencies and tools for the project in the current directory showing detailed output:
--.PP
--\f[C]dotnet restore --verbosity detailed\f[R]
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet restore --verbosity detailed
-+\f[R]
-+.fi
-+.RE
-diff --git a/documentation/manpages/sdk/dotnet-run.1 b/documentation/manpages/sdk/dotnet-run.1
-index 6a27c5b83c..f1a42117ae 100644
---- a/documentation/manpages/sdk/dotnet-run.1
-+++ b/documentation/manpages/sdk/dotnet-run.1
-@@ -1,57 +1,37 @@
--.\" Automatically generated by Pandoc 2.7.2
-+.\" Automatically generated by Pandoc 2.14.1
- .\"
--.TH "dotnet run command" "1" "" "" ".NET Core"
-+.TH "" "1" "" "" ".NET"
- .hy
- .SH dotnet run
- .PP
--\f[B]This article applies to: \[OK]\f[R] .NET Core 1.x SDK and later versions
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.x SDK and later versions
- .SH NAME
- .PP
- \f[C]dotnet run\f[R] - Runs source code without any explicit compile or launch commands.
- .SH SYNOPSIS
--.SS .NET Core 3.0
- .IP
- .nf
- \f[C]
--dotnet run [-c|--configuration] [-f|--framework] [--force] [--interactive] [--launch-profile] [--no-build] [--no-dependencies]
-- [--no-launch-profile] [--no-restore] [-p|--project] [-r|--runtime] [-v|--verbosity] [[--] [application arguments]]
--dotnet run [-h|--help]
-+dotnet run [-a|--arch <ARCHITECTURE>] [-c|--configuration <CONFIGURATION>]
-+ [-f|--framework <FRAMEWORK>] [--force] [--interactive]
-+ [--launch-profile <NAME>] [--no-build]
-+ [--no-dependencies] [--no-launch-profile] [--no-restore]
-+ [--os <OS>] [--project <PATH>] [-r|--runtime <RUNTIME_IDENTIFIER>]
-+ [-v|--verbosity <LEVEL>] [[--] [application arguments]]
-+
-+dotnet run -h|--help
- \f[R]
- .fi
--.SS .NET Core 2.1
--.IP
--.nf
--\f[C]
--dotnet run [-c|--configuration] [-f|--framework] [--force] [--launch-profile] [--no-build] [--no-dependencies]
-- [--no-launch-profile] [--no-restore] [-p|--project] [--runtime] [-v|--verbosity] [[--] [application arguments]]
--dotnet run [-h|--help]
--\f[R]
--.fi
--.SS .NET Core 2.0
--.IP
--.nf
--\f[C]
--dotnet run [-c|--configuration] [-f|--framework] [--force] [--launch-profile] [--no-build] [--no-dependencies]
-- [--no-launch-profile] [--no-restore] [-p|--project] [--runtime] [[--] [application arguments]]
--dotnet run [-h|--help]
--\f[R]
--.fi
--.SS .NET Core 1.x
--.IP
--.nf
--\f[C]
--dotnet run [-c|--configuration] [-f|--framework] [-p|--project] [[--] [application arguments]]
--dotnet run [-h|--help]
--\f[R]
--.fi
--.PP
-- * * * * *
- .SH DESCRIPTION
- .PP
- The \f[C]dotnet run\f[R] command provides a convenient option to run your application from the source code with one command.
- It\[cq]s useful for fast iterative development from the command line.
- The command depends on the \f[C]dotnet build\f[R] command to build the code.
- Any requirements for the build, such as that the project must be restored first, apply to \f[C]dotnet run\f[R] as well.
-+.RS
-+.PP
-+[!NOTE] \f[C]dotnet run\f[R] doesn\[cq]t respect arguments like \f[C]/property:property=value\f[R], which are respected by \f[C]dotnet build\f[R].
-+.RE
- .PP
- Output files are written into the default location, which is \f[C]bin/<configuration>/<target>\f[R].
- For example if you have a \f[C]netcoreapp2.1\f[R] application and you run \f[C]dotnet run\f[R], the output is placed in \f[C]bin/Debug/netcoreapp2.1\f[R].
-@@ -70,248 +50,227 @@ dotnet myapp.dll
- \f[R]
- .fi
- .PP
--For more information on the \f[C]dotnet\f[R] driver, see the .NET Core Command Line Tools (CLI) topic.
-+For more information on the \f[C]dotnet\f[R] driver, see the .NET Command Line Tools (CLI) topic.
- .PP
- To run the application, the \f[C]dotnet run\f[R] command resolves the dependencies of the application that are outside of the shared runtime from the NuGet cache.
- Because it uses cached dependencies, it\[cq]s not recommended to use \f[C]dotnet run\f[R] to run applications in production.
- Instead, create a deployment using the \f[C]dotnet publish\f[R] command and deploy the published output.
-+.SS Implicit restore
- .PP
--.SH OPTIONS
--.SS .NET Core 3.0
--.PP
--\f[C]--\f[R]
--.PP
--Delimits arguments to \f[C]dotnet run\f[R] from arguments for the application being run.
--All arguments after this delimiter are passed to the application run.
--.PP
--\f[C]-c|--configuration {Debug|Release}\f[R]
--.PP
--Defines the build configuration.
--The default value for most projects is \f[C]Debug\f[R].
--.PP
--\f[C]-f|--framework <FRAMEWORK>\f[R]
--.PP
--Builds and runs the app using the specified framework.
--The framework must be specified in the project file.
--.PP
--\f[C]--force\f[R]
--.PP
--Forces all dependencies to be resolved even if the last restore was successful.
--Specifying this flag is the same as deleting the \f[I]project.assets.json\f[R] file.
--.PP
--\f[C]-h|--help\f[R]
--.PP
--Prints out a short help for the command.
--.PP
--\f[C]--interactive\f[R]
--.PP
--Allows the command to stop and wait for user input or action (for example, to complete authentication).
--.PP
--\f[C]--launch-profile <NAME>\f[R]
--.PP
--The name of the launch profile (if any) to use when launching the application.
--Launch profiles are defined in the \f[I]launchSettings.json\f[R] file and are typically called \f[C]Development\f[R], \f[C]Staging\f[R], and \f[C]Production\f[R].
--For more information, see Working with multiple environments.
--.PP
--\f[C]--no-build\f[R]
--.PP
--Doesn\[cq]t build the project before running.
--It also implicit sets the \f[C]--no-restore\f[R] flag.
--.PP
--\f[C]--no-dependencies\f[R]
--.PP
--When restoring a project with project-to-project (P2P) references, restores the root project and not the references.
--.PP
--\f[C]--no-launch-profile\f[R]
--.PP
--Doesn\[cq]t try to use \f[I]launchSettings.json\f[R] to configure the application.
--.PP
--\f[C]--no-restore\f[R]
--.PP
--Doesn\[cq]t execute an implicit restore when running the command.
--.PP
--\f[C]-p|--project <PATH>\f[R]
-+You don\[cq]t have to run \f[C]dotnet restore\f[R] because it\[cq]s run implicitly by all commands that require a restore to occur, such as \f[C]dotnet new\f[R], \f[C]dotnet build\f[R], \f[C]dotnet run\f[R], \f[C]dotnet test\f[R], \f[C]dotnet publish\f[R], and \f[C]dotnet pack\f[R].
-+To disable implicit restore, use the \f[C]--no-restore\f[R] option.
- .PP
--Specifies the path of the project file to run (folder name or full path).
--If not specified, it defaults to the current directory.
--.PP
--\f[C]--runtime <RUNTIME_IDENTIFIER>\f[R]
--.PP
--Specifies the target runtime to restore packages for.
--For a list of Runtime Identifiers (RIDs), see the RID catalog.
-+The \f[C]dotnet restore\f[R] command is still useful in certain scenarios where explicitly restoring makes sense, such as continuous integration builds in Azure DevOps Services or in build systems that need to explicitly control when the restore occurs.
- .PP
--\f[C]-v|--verbosity <LEVEL>\f[R]
-+For information about how to manage NuGet feeds, see the \f[C]dotnet restore\f[R] documentation.
- .PP
--Sets the verbosity level of the command.
--Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
--.SS .NET Core 2.1
-+This command supports the \f[C]dotnet restore\f[R] options when passed in the long form (for example, \f[C]--source\f[R]).
-+Short form options, such as \f[C]-s\f[R], are not supported.
-+.SS Workload manifest downloads
- .PP
--\f[C]--\f[R]
-+When you run this command, it initiates an asynchronous background download of advertising manifests for workloads.
-+If the download is still running when this command finishes, the download is stopped.
-+For more information, see Advertising manifests.
-+.SH OPTIONS
-+.IP \[bu] 2
-+\f[B]\f[CB]--\f[B]\f[R]
-+.RS 2
- .PP
- Delimits arguments to \f[C]dotnet run\f[R] from arguments for the application being run.
- All arguments after this delimiter are passed to the application run.
--.PP
--\f[C]-c|--configuration {Debug|Release}\f[R]
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-a|--arch <ARCHITECTURE>\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies the target architecture.
-+This is a shorthand syntax for setting the Runtime Identifier (RID), where the provided value is combined with the default RID.
-+For example, on a \f[C]win-x64\f[R] machine, specifying \f[C]--arch x86\f[R] sets the RID to \f[C]win-x86\f[R].
-+If you use this option, don\[cq]t use the \f[C]-r|--runtime\f[R] option.
-+Available since .NET 6 Preview 7.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-c|--configuration <CONFIGURATION>\f[B]\f[R]
-+.RS 2
- .PP
- Defines the build configuration.
--The default value for most projects is \f[C]Debug\f[R].
--.PP
--\f[C]-f|--framework <FRAMEWORK>\f[R]
-+The default for most projects is \f[C]Debug\f[R], but you can override the build configuration settings in your project.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-f|--framework <FRAMEWORK>\f[B]\f[R]
-+.RS 2
- .PP
- Builds and runs the app using the specified framework.
- The framework must be specified in the project file.
--.PP
--\f[C]--force\f[R]
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--force\f[B]\f[R]
-+.RS 2
- .PP
- Forces all dependencies to be resolved even if the last restore was successful.
- Specifying this flag is the same as deleting the \f[I]project.assets.json\f[R] file.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]-h|--help\f[R]
--.PP
--Prints out a short help for the command.
-+Prints out a description of how to use the command.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--interactive\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]--launch-profile <NAME>\f[R]
-+Allows the command to stop and wait for user input or action.
-+For example, to complete authentication.
-+Available since .NET Core 3.0 SDK.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--launch-profile <NAME>\f[B]\f[R]
-+.RS 2
- .PP
- The name of the launch profile (if any) to use when launching the application.
- Launch profiles are defined in the \f[I]launchSettings.json\f[R] file and are typically called \f[C]Development\f[R], \f[C]Staging\f[R], and \f[C]Production\f[R].
- For more information, see Working with multiple environments.
--.PP
--\f[C]--no-build\f[R]
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-build\f[B]\f[R]
-+.RS 2
- .PP
- Doesn\[cq]t build the project before running.
- It also implicit sets the \f[C]--no-restore\f[R] flag.
--.PP
--\f[C]--no-dependencies\f[R]
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-dependencies\f[B]\f[R]
-+.RS 2
- .PP
- When restoring a project with project-to-project (P2P) references, restores the root project and not the references.
--.PP
--\f[C]--no-launch-profile\f[R]
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-launch-profile\f[B]\f[R]
-+.RS 2
- .PP
- Doesn\[cq]t try to use \f[I]launchSettings.json\f[R] to configure the application.
--.PP
--\f[C]--no-restore\f[R]
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-restore\f[B]\f[R]
-+.RS 2
- .PP
- Doesn\[cq]t execute an implicit restore when running the command.
--.PP
--\f[C]-p|--project <PATH>\f[R]
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--os <OS>\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies the target operating system (OS).
-+This is a shorthand syntax for setting the Runtime Identifier (RID), where the provided value is combined with the default RID.
-+For example, on a \f[C]win-x64\f[R] machine, specifying \f[C]--os os\f[R] sets the RID to \f[C]os-x64\f[R].
-+If you use this option, don\[cq]t use the \f[C]-r|--runtime\f[R] option.
-+Available since .NET 6 Preview 7.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--project <PATH>\f[B]\f[R]
-+.RS 2
- .PP
- Specifies the path of the project file to run (folder name or full path).
- If not specified, it defaults to the current directory.
- .PP
--\f[C]--runtime <RUNTIME_IDENTIFIER>\f[R]
--.PP
--Specifies the target runtime to restore packages for.
--For a list of Runtime Identifiers (RIDs), see the RID catalog.
--.PP
--\f[C]-v|--verbosity <LEVEL>\f[R]
--.PP
--Sets the verbosity level of the command.
--Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
--.SS .NET Core 2.0
--.PP
--\f[C]--\f[R]
--.PP
--Delimits arguments to \f[C]dotnet run\f[R] from arguments for the application being run.
--All arguments after this delimiter are passed to the application run.
--.PP
--\f[C]-c|--configuration {Debug|Release}\f[R]
--.PP
--Defines the build configuration.
--The default for most projects value is \f[C]Debug\f[R].
--.PP
--\f[C]-f|--framework <FRAMEWORK>\f[R]
--.PP
--Builds and runs the app using the specified framework.
--The framework must be specified in the project file.
--.PP
--\f[C]--force\f[R]
--.PP
--Forces all dependencies to be resolved even if the last restore was successful.
--Specifying this flag is the same as deleting the \f[I]project.assets.json\f[R] file.
--.PP
--\f[C]-h|--help\f[R]
--.PP
--Prints out a short help for the command.
--.PP
--\f[C]--launch-profile <NAME>\f[R]
--.PP
--The name of the launch profile (if any) to use when launching the application.
--Launch profiles are defined in the \f[I]launchSettings.json\f[R] file and are typically called \f[C]Development\f[R], \f[C]Staging\f[R], and \f[C]Production\f[R].
--For more information, see Working with multiple environments.
--.PP
--\f[C]--no-build\f[R]
--.PP
--Doesn\[cq]t build the project before running.
--It also implicit sets the \f[C]--no-restore\f[R] flag.
--.PP
--\f[C]--no-dependencies\f[R]
--.PP
--When restoring a project with project-to-project (P2P) references, restores the root project and not the references.
--.PP
--\f[C]--no-launch-profile\f[R]
--.PP
--Doesn\[cq]t try to use \f[I]launchSettings.json\f[R] to configure the application.
--.PP
--\f[C]--no-restore\f[R]
--.PP
--Doesn\[cq]t execute an implicit restore when running the command.
-+The \f[C]-p\f[R] abbreviation for \f[C]--project\f[R] is deprecated starting in .NET 6 Preview SDK.
-+For a limited time starting in .NET 6 RC1 SDK, \f[C]-p\f[R] can still be used for \f[C]--project\f[R] despite the deprecation warning.
-+If the argument provided for the option doesn\[cq]t contain \f[C]=\f[R], the command accepts \f[C]-p\f[R] as short for \f[C]--project\f[R].
-+Otherwise, the command assumes that \f[C]-p\f[R] is short for \f[C]--property\f[R].
-+This flexible use of \f[C]-p\f[R] for \f[C]--project\f[R] will be phased out in .NET 7.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--property:<NAME>=<VALUE>\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]-p|--project <PATH>\f[R]
-+Sets one or more MSBuild properties.
-+Specify multiple properties delimited by semicolons or by repeating the option:
-+.IP
-+.nf
-+\f[C]
-+--property:<NAME1>=<VALUE1>;<NAME2>=<VALUE2>
-+--property:<NAME1>=<VALUE1> --property:<NAME2>=<VALUE2>
-+\f[R]
-+.fi
- .PP
--Specifies the path of the project file to run (folder name or full path).
--If not specified, it defaults to the current directory.
-+The short form \f[C]-p\f[R] can be used for \f[C]--property\f[R].
-+If the argument provided for the option contains \f[C]=\f[R], \f[C]-p\f[R] is accepted as short for \f[C]--property\f[R].
-+Otherwise, the command assumes that \f[C]-p\f[R] is short for \f[C]--project\f[R].
- .PP
--\f[C]--runtime <RUNTIME_IDENTIFIER>\f[R]
-+To pass \f[C]--property\f[R] to the application rather than set an MSBuild property, provide the option after the \f[C]--\f[R] syntax separator, for example:
-+.IP
-+.nf
-+\f[C]
-+dotnet run -- --property name=value
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-r|--runtime <RUNTIME_IDENTIFIER>\f[B]\f[R]
-+.RS 2
- .PP
- Specifies the target runtime to restore packages for.
- For a list of Runtime Identifiers (RIDs), see the RID catalog.
--.SS .NET Core 1.x
--.PP
--\f[C]--\f[R]
--.PP
--Delimits arguments to \f[C]dotnet run\f[R] from arguments for the application being run.
--All arguments after this delimiter are passed to the application run.
--.PP
--\f[C]-c|--configuration {Debug|Release}\f[R]
--.PP
--Defines the build configuration.
--The default value for most projects is \f[C]Debug\f[R].
--.PP
--\f[C]-f|--framework <FRAMEWORK>\f[R]
--.PP
--Builds and runs the app using the specified framework.
--The framework must be specified in the project file.
--.PP
--\f[C]-h|--help\f[R]
--.PP
--Prints out a short help for the command.
--.PP
--\f[C]-p|--project <PATH/PROJECT.csproj>\f[R]
--.PP
--Specifies the path and name of the project file.
--(See the NOTE.) If not specified, it defaults to the current directory.
--.RS
--.PP
--[!NOTE] Use the path and name of the project file with the \f[C]-p|--project\f[R] option.
--A regression in the CLI prevents providing a folder path with .NET Core SDK 1.x.
--For more information about this issue, see dotnet run -p, can not start a project (dotnet/cli #5992).
-+\f[C]-r\f[R] short option available since .NET Core 3.0 SDK.
- .RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
-+.RS 2
- .PP
-- * * * * *
-+Sets the verbosity level of the command.
-+Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
-+The default is \f[C]minimal\f[R].
-+For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
-+.RE
- .SH EXAMPLES
--.PP
-+.IP \[bu] 2
- Run the project in the current directory:
--.PP
--\f[C]dotnet run\f[R]
--.PP
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet run
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
- Run the specified project:
--.PP
--\f[C]dotnet run --project ./projects/proj1/proj1.csproj\f[R]
--.PP
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet run --project ./projects/proj1/proj1.csproj
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Run the project in the current directory, specifying Release configuration:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet run --property:Configuration=Release
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
- Run the project in the current directory (the \f[C]--help\f[R] argument in this example is passed to the application, since the blank \f[C]--\f[R] option is used):
--.PP
--\f[C]dotnet run --configuration Release -- --help\f[R]
--.PP
--Restore dependencies and tools for the project in the current directory only showing minimal output and then run the project: (.NET Core SDK 2.0 and later versions):
--.PP
--\f[C]dotnet run --verbosity m\f[R]
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet run --configuration Release -- --help
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Restore dependencies and tools for the project in the current directory only showing minimal output and then run the project:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet run --verbosity m
-+\f[R]
-+.fi
-+.RE
-diff --git a/documentation/manpages/sdk/dotnet-sdk-check.1 b/documentation/manpages/sdk/dotnet-sdk-check.1
-new file mode 100644
-index 0000000000..b1371b2804
---- /dev/null
-+++ b/documentation/manpages/sdk/dotnet-sdk-check.1
-@@ -0,0 +1,76 @@
-+.\" Automatically generated by Pandoc 2.14.1
-+.\"
-+.TH "" "1" "" "" ".NET"
-+.hy
-+.SH dotnet sdk check
-+.PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET 6 (preview) and later versions
-+.SH NAME
-+.PP
-+\f[C]dotnet sdk check\f[R] - Lists the latest available version of the .NET SDK and .NET Runtime, for each feature band.
-+.SH SYNOPSIS
-+.IP
-+.nf
-+\f[C]
-+dotnet sdk check
-+
-+dotnet sdk check -h|--help
-+\f[R]
-+.fi
-+.SH DESCRIPTION
-+.PP
-+The \f[C]dotnet sdk check\f[R] command makes it easier to track when new versions of the SDK and Runtimes are available.
-+Within each feature band it tells you:
-+.IP \[bu] 2
-+The latest available version of the .NET SDK and .NET Runtime.
-+.IP \[bu] 2
-+Whether your installed versions are up-to-date or out of support.
-+.PP
-+Here\[cq]s an example of output from the command:
-+.IP
-+.nf
-+\f[C]
-+\&.NET SDKs:
-+Version Status
-+-----------------------------------------------------------
-+2.1.816 Up to date.
-+2.2.401 .NET 2.2 is out of support.
-+3.1.410 Up to date.
-+5.0.204 Up to date.
-+5.0.301 Up to date.
-+
-+\&.NET Runtimes:
-+Name Version Status
-+-------------------------------------------------------------------------------------------
-+Microsoft.AspNetCore.All 2.1.28 Up to date.
-+Microsoft.AspNetCore.App 2.1.28 Up to date.
-+Microsoft.NETCore.App 2.1.28 Up to date.
-+Microsoft.AspNetCore.All 2.2.6 .NET 2.2 is out of support.
-+Microsoft.AspNetCore.App 2.2.6 .NET 2.2 is out of support.
-+Microsoft.NETCore.App 2.2.6 .NET 2.2 is out of support.
-+Microsoft.AspNetCore.App 3.1.16 Up to date.
-+Microsoft.NETCore.App 3.1.16 Up to date.
-+Microsoft.WindowsDesktop.App 3.1.16 Up to date.
-+Microsoft.AspNetCore.App 5.0.7 Up to date.
-+Microsoft.NETCore.App 5.0.7 Up to date.
-+Microsoft.WindowsDesktop.App 5.0.7 Up to date.
-+\f[R]
-+.fi
-+.SH OPTIONS
-+.IP \[bu] 2
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
-+.RS 2
-+.PP
-+Prints out a description of how to use the command.
-+.RE
-+.SH EXAMPLES
-+.IP \[bu] 2
-+Show up-to-date status of installed .NET SDKs and .NET Runtimes.
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet sdk check
-+\f[R]
-+.fi
-+.RE
-diff --git a/documentation/manpages/sdk/dotnet-sln.1 b/documentation/manpages/sdk/dotnet-sln.1
-index 43479d67a9..72e4fafacf 100644
---- a/documentation/manpages/sdk/dotnet-sln.1
-+++ b/documentation/manpages/sdk/dotnet-sln.1
-@@ -1,26 +1,28 @@
--.\" Automatically generated by Pandoc 2.7.2
-+.\" Automatically generated by Pandoc 2.14.1
- .\"
--.TH "dotnet sln command" "1" "" "" ".NET Core"
-+.TH "" "1" "" "" ".NET"
- .hy
- .SH dotnet sln
- .PP
--\f[B]This article applies to: \[OK]\f[R] .NET Core 1.x SDK and later versions
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.x SDK and later versions
- .SH NAME
- .PP
--\f[C]dotnet sln\f[R] - Modifies a .NET Core solution file.
-+\f[C]dotnet sln\f[R] - Lists or modifies the projects in a .NET solution file.
- .SH SYNOPSIS
- .IP
- .nf
- \f[C]
--dotnet sln [<SOLUTION_FILE>] [command] [-h|--help]
-+dotnet sln [<SOLUTION_FILE>] [command]
-+
-+dotnet sln [command] -h|--help
- \f[R]
- .fi
- .SH DESCRIPTION
- .PP
--The \f[C]dotnet sln\f[R] command provides a convenient way to add, remove, and list projects in a solution file.
-+The \f[C]dotnet sln\f[R] command provides a convenient way to list and modify projects in a solution file.
- .PP
- To use the \f[C]dotnet sln\f[R] command, the solution file must already exist.
--If you need to create one, use the dotnet new command, like in the following example:
-+If you need to create one, use the dotnet new command, as in the following example:
- .IP
- .nf
- \f[C]
-@@ -33,25 +35,51 @@ dotnet new sln
- .RS 2
- .PP
- The solution file to use.
--If not specified, the command searches the current directory for one.
--If there are multiple solution files in the directory, one must be specified.
-+If this argument is omitted, the command searches the current directory for one.
-+If it finds no solution file or multiple solution files, the command fails.
- .RE
- .SH OPTIONS
- .IP \[bu] 2
--\f[B]\f[CB]-h|--help\f[B]\f[R]
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
- .RS 2
- .PP
--Prints out a short help for the command.
-+Prints out a description of how to use the command.
- .RE
- .SS Commands
-+.SS \f[C]list\f[R]
-+.PP
-+Lists all projects in a solution file.
-+.SH SYNOPSIS
-+.IP
-+.nf
-+\f[C]
-+dotnet sln list [-h|--help]
-+\f[R]
-+.fi
-+.SS Arguments
-+.IP \[bu] 2
-+\f[B]\f[CB]SOLUTION_FILE\f[B]\f[R]
-+.RS 2
-+.PP
-+The solution file to use.
-+If this argument is omitted, the command searches the current directory for one.
-+If it finds no solution file or multiple solution files, the command fails.
-+.RE
-+.SH OPTIONS
-+.IP \[bu] 2
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
-+.RS 2
-+.PP
-+Prints out a description of how to use the command.
-+.RE
- .SS \f[C]add\f[R]
- .PP
--Adds a project or multiple projects to the solution file.
-+Adds one or more projects to the solution file.
- .SH SYNOPSIS
- .IP
- .nf
- \f[C]
--dotnet sln [<SOLUTION_FILE>] add [--in-root] [-s|--solution-folder] <PROJECT_PATH>
-+dotnet sln [<SOLUTION_FILE>] add [--in-root] [-s|--solution-folder <PATH>] <PROJECT_PATH> [<PROJECT_PATH>...]
- dotnet sln add [-h|--help]
- \f[R]
- .fi
-@@ -61,36 +89,49 @@ dotnet sln add [-h|--help]
- .RS 2
- .PP
- The solution file to use.
--If not specified, the command searches the current directory for one.
--If there are multiple solution files in the directory, one must be specified.
-+If it is unspecified, the command searches the current directory for one and fails if there are multiple solution files.
- .RE
- .IP \[bu] 2
- \f[B]\f[CB]PROJECT_PATH\f[B]\f[R]
- .RS 2
- .PP
--The path to the project to add to the solution.
--Add multiple projects by adding one after the other separated by spaces.
--Unix/Linux shell globbing pattern expansions are processed correctly by the \f[C]dotnet sln\f[R] command.
-+The path to the project or projects to add to the solution.
-+Unix/Linux shell globbing pattern (https://en.wikipedia.org/wiki/Glob_(programming)) expansions are processed correctly by the \f[C]dotnet sln\f[R] command.
-+.PP
-+If \f[C]PROJECT_PATH\f[R] includes folders that contain the project folder, that portion of the path is used to create solution folders.
-+For example, the following commands create a solution with \f[C]myapp\f[R] in solution folder \f[C]folder1/folder2\f[R]:
-+.IP
-+.nf
-+\f[C]
-+dotnet new sln
-+dotnet new console --output folder1/folder2/myapp
-+dotnet sln add folder1/folder2/myapp
-+\f[R]
-+.fi
-+.PP
-+You can override this default behavior by using the \f[C]--in-root\f[R] or the \f[C]-s|--solution-folder <PATH>\f[R] option.
- .RE
- .SH OPTIONS
- .IP \[bu] 2
--\f[B]\f[CB]-h|--help\f[B]\f[R]
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
- .RS 2
- .PP
--Prints out a short help for the command.
-+Prints out a description of how to use the command.
- .RE
- .IP \[bu] 2
- \f[B]\f[CB]--in-root\f[B]\f[R]
- .RS 2
- .PP
- Places the projects in the root of the solution, rather than creating a solution folder.
-+Can\[cq]t be used with \f[C]-s|--solution-folder\f[R].
- Available since .NET Core 3.0 SDK.
- .RE
- .IP \[bu] 2
--\f[B]\f[CB]-s|--solution-folder\f[B]\f[R]
-+\f[B]\f[CB]-s|--solution-folder <PATH>\f[B]\f[R]
- .RS 2
- .PP
- The destination solution folder path to add the projects to.
-+Can\[cq]t be used with \f[C]--in-root\f[R].
- Available since .NET Core 3.0 SDK.
- .RE
- .SS \f[C]remove\f[R]
-@@ -100,7 +141,7 @@ Removes a project or multiple projects from the solution file.
- .IP
- .nf
- \f[C]
--dotnet sln [<SOLUTION_FILE>] remove <PROJECT_PATH>
-+dotnet sln [<SOLUTION_FILE>] remove <PROJECT_PATH> [<PROJECT_PATH>...]
- dotnet sln [<SOLUTION_FILE>] remove [-h|--help]
- \f[R]
- .fi
-@@ -110,96 +151,144 @@ dotnet sln [<SOLUTION_FILE>] remove [-h|--help]
- .RS 2
- .PP
- The solution file to use.
--If not specified, the command searches the current directory for one.
--If there are multiple solution files in the directory, one must be specified.
-+If is left unspecified, the command searches the current directory for one and fails if there are multiple solution files.
- .RE
- .IP \[bu] 2
- \f[B]\f[CB]PROJECT_PATH\f[B]\f[R]
- .RS 2
- .PP
--The path to the project to remove from the solution.
--Remove multiple projects by adding one after the other separated by spaces.
--Unix/Linux shell globbing pattern expansions are processed correctly by the \f[C]dotnet sln\f[R] command.
-+The path to the project or projects to remove from the solution.
-+Unix/Linux shell globbing pattern (https://en.wikipedia.org/wiki/Glob_(programming)) expansions are processed correctly by the \f[C]dotnet sln\f[R] command.
- .RE
- .SH OPTIONS
- .IP \[bu] 2
--\f[B]\f[CB]-h|--help\f[B]\f[R]
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
- .RS 2
- .PP
--Prints out a short help for the command.
-+Prints out a description of how to use the command.
- .RE
--.SS \f[C]list\f[R]
--.PP
--Lists all projects in a solution file.
--.SH SYNOPSIS
-+.SH EXAMPLES
-+.IP \[bu] 2
-+List the projects in a solution:
-+.RS 2
- .IP
- .nf
- \f[C]
--dotnet sln list [-h|--help]
-+dotnet sln todo.sln list
- \f[R]
- .fi
--.SS Arguments
-+.RE
- .IP \[bu] 2
--\f[B]\f[CB]SOLUTION_FILE\f[B]\f[R]
-+Add a C# project to a solution:
- .RS 2
--.PP
--The solution file to use.
--If not specified, the command searches the current directory for one.
--If there are multiple solution files in the directory, one must be specified.
-+.IP
-+.nf
-+\f[C]
-+dotnet sln add todo-app/todo-app.csproj
-+\f[R]
-+.fi
- .RE
--.SH OPTIONS
- .IP \[bu] 2
--\f[B]\f[CB]-h|--help\f[B]\f[R]
-+Remove a C# project from a solution:
- .RS 2
--.PP
--Prints out a short help for the command.
--.RE
--.SH EXAMPLES
--.PP
--Add a C# project to a solution:
- .IP
- .nf
- \f[C]
--dotnet sln todo.sln add todo-app/todo-app.csproj
-+dotnet sln remove todo-app/todo-app.csproj
- \f[R]
- .fi
--.PP
--Remove a C# project from a solution:
-+.RE
-+.IP \[bu] 2
-+Add multiple C# projects to the root of a solution:
-+.RS 2
- .IP
- .nf
- \f[C]
--dotnet sln todo.sln remove todo-app/todo-app.csproj
-+dotnet sln todo.sln add todo-app/todo-app.csproj back-end/back-end.csproj --in-root
- \f[R]
- .fi
--.PP
-+.RE
-+.IP \[bu] 2
- Add multiple C# projects to a solution:
-+.RS 2
- .IP
- .nf
- \f[C]
- dotnet sln todo.sln add todo-app/todo-app.csproj back-end/back-end.csproj
- \f[R]
- .fi
--.PP
-+.RE
-+.IP \[bu] 2
- Remove multiple C# projects from a solution:
-+.RS 2
- .IP
- .nf
- \f[C]
- dotnet sln todo.sln remove todo-app/todo-app.csproj back-end/back-end.csproj
- \f[R]
- .fi
--.PP
-+.RE
-+.IP \[bu] 2
- Add multiple C# projects to a solution using a globbing pattern (Unix/Linux only):
-+.RS 2
- .IP
- .nf
- \f[C]
- dotnet sln todo.sln add **/*.csproj
- \f[R]
- .fi
--.PP
-+.RE
-+.IP \[bu] 2
-+Add multiple C# projects to a solution using a globbing pattern (Windows PowerShell only):
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet sln todo.sln add (ls -r **/*.csproj)
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
- Remove multiple C# projects from a solution using a globbing pattern (Unix/Linux only):
-+.RS 2
- .IP
- .nf
- \f[C]
- dotnet sln todo.sln remove **/*.csproj
- \f[R]
- .fi
-+.RE
-+.IP \[bu] 2
-+Remove multiple C# projects from a solution using a globbing pattern (Windows PowerShell only):
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet sln todo.sln remove (ls -r **/*.csproj)
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Create a solution, a console app, and two class libraries.
-+Add the projects to the solution, and use the \f[C]--solution-folder\f[R] option of \f[C]dotnet sln\f[R] to organize the class libraries into a solution folder.
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet new sln -n mysolution
-+dotnet new console -o myapp
-+dotnet new classlib -o mylib1
-+dotnet new classlib -o mylib2
-+dotnet sln mysolution.sln add myapp\[rs]myapp.csproj
-+dotnet sln mysolution.sln add mylib1\[rs]mylib1.csproj --solution-folder mylibs
-+dotnet sln mysolution.sln add mylib2\[rs]mylib2.csproj --solution-folder mylibs
-+\f[R]
-+.fi
-+.PP
-+The following screenshot shows the result in Visual Studio 2019 \f[B]Solution Explorer\f[R]:
-+.PP
-+:::image type=\[lq]content\[rq] source=\[lq]media/dotnet-sln/dotnet-sln-solution-folder.png\[rq] alt-text=\[lq]Solution Explorer showing class library projects grouped into a solution folder.\[rq]:::
-+.RE
-+.SS See also
-+.IP \[bu] 2
-+dotnet/sdk GitHub repo (https://github.com/dotnet/sdk) (.NET CLI source)
-diff --git a/documentation/manpages/sdk/dotnet-store.1 b/documentation/manpages/sdk/dotnet-store.1
-index fae60ac05c..896ce7573d 100644
---- a/documentation/manpages/sdk/dotnet-store.1
-+++ b/documentation/manpages/sdk/dotnet-store.1
-@@ -1,82 +1,125 @@
--.\" Automatically generated by Pandoc 2.7.2
-+.\" Automatically generated by Pandoc 2.14.1
- .\"
--.TH "dotnet store command" "1" "" "" ".NET Core"
-+.TH "" "1" "" "" ".NET"
- .hy
- .SH dotnet store
- .PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.x SDK and later versions
- .SH NAME
- .PP
- \f[C]dotnet store\f[R] - Stores the specified assemblies in the runtime package store.
- .SH SYNOPSIS
--.PP
--\f[C]dotnet store -m|--manifest -f|--framework -r|--runtime [--framework-version] [-h|--help] [--output] [--skip-optimization] [--skip-symbols] [-v|--verbosity] [--working-dir]\f[R]
-+.IP
-+.nf
-+\f[C]
-+dotnet store -m|--manifest <PATH_TO_MANIFEST_FILE>
-+ -f|--framework <FRAMEWORK_VERSION> -r|--runtime <RUNTIME_IDENTIFIER>
-+ [--framework-version <FRAMEWORK_VERSION>] [--output <OUTPUT_DIRECTORY>]
-+ [--skip-optimization] [--skip-symbols] [-v|--verbosity <LEVEL>]
-+ [--working-dir <WORKING_DIRECTORY>]
-+
-+dotnet store -h|--help
-+\f[R]
-+.fi
- .SH DESCRIPTION
- .PP
- \f[C]dotnet store\f[R] stores the specified assemblies in the runtime package store.
- By default, assemblies are optimized for the target runtime and framework.
- For more information, see the runtime package store topic.
- .SS Required options
--.PP
--\f[C]-f|--framework <FRAMEWORK>\f[R]
-+.IP \[bu] 2
-+\f[B]\f[CB]-f|--framework <FRAMEWORK>\f[B]\f[R]
-+.RS 2
- .PP
- Specifies the target framework.
--.PP
--\f[C]-m|--manifest <PATH_TO_MANIFEST_FILE>\f[R]
-+The target framework has to be specified in the project file.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-m|--manifest <PATH_TO_MANIFEST_FILE>\f[B]\f[R]
-+.RS 2
- .PP
- The \f[I]package store manifest file\f[R] is an XML file that contains the list of packages to store.
- The format of the manifest file is compatible with the SDK-style project format.
- So, a project file that references the desired packages can be used with the \f[C]-m|--manifest\f[R] option to store assemblies in the runtime package store.
- To specify multiple manifest files, repeat the option and path for each file.
- For example: \f[C]--manifest packages1.csproj --manifest packages2.csproj\f[R].
--.PP
--\f[C]-r|--runtime <RUNTIME_IDENTIFIER>\f[R]
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-r|--runtime <RUNTIME_IDENTIFIER>\f[B]\f[R]
-+.RS 2
- .PP
- The runtime identifier to target.
-+.RE
- .SS Optional options
-+.IP \[bu] 2
-+\f[B]\f[CB]--framework-version <FRAMEWORK_VERSION>\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]--framework-version <FRAMEWORK_VERSION>\f[R]
--.PP
--Specifies the .NET Core SDK version.
-+Specifies the .NET SDK version.
- This option enables you to select a specific framework version beyond the framework specified by the \f[C]-f|--framework\f[R] option.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]-h|--help\f[R]
--.PP
--Shows help information.
--.PP
--\f[C]-o|--output <OUTPUT_DIRECTORY>\f[R]
-+Prints out a description of how to use the command.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-o|--output <OUTPUT_DIRECTORY>\f[B]\f[R]
-+.RS 2
- .PP
- Specifies the path to the runtime package store.
--If not specified, it defaults to the \f[I]store\f[R] subdirectory of the user profile .NET Core installation directory.
--.PP
--\f[C]--skip-optimization\f[R]
-+If not specified, it defaults to the \f[I]store\f[R] subdirectory of the user profile .NET installation directory.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--skip-optimization\f[B]\f[R]
-+.RS 2
- .PP
- Skips the optimization phase.
--.PP
--\f[C]--skip-symbols\f[R]
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--skip-symbols\f[B]\f[R]
-+.RS 2
- .PP
- Skips symbol generation.
- Currently, you can only generate symbols on Windows and Linux.
--.PP
--\f[C]-v|--verbosity <LEVEL>\f[R]
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
-+.RS 2
- .PP
- Sets the verbosity level of the command.
- Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
--.PP
--\f[C]-w|--working-dir <INTERMEDIATE_WORKING_DIRECTORY>\f[R]
-+For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-w|--working-dir <WORKING_DIRECTORY>\f[B]\f[R]
-+.RS 2
- .PP
- The working directory used by the command.
- If not specified, it uses the \f[I]obj\f[R] subdirectory of the current directory.
-+.RE
- .SH EXAMPLES
--.PP
-+.IP \[bu] 2
- Store the packages specified in the \f[I]packages.csproj\f[R] project file for .NET Core 2.0.0:
--.PP
--\f[C]dotnet store --manifest packages.csproj --framework-version 2.0.0\f[R]
--.PP
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet store --manifest packages.csproj --framework-version 2.0.0
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
- Store the packages specified in the \f[I]packages.csproj\f[R] without optimization:
--.PP
--\f[C]dotnet store --manifest packages.csproj --skip-optimization\f[R]
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet store --manifest packages.csproj --skip-optimization
-+\f[R]
-+.fi
-+.RE
- .SS See also
- .IP \[bu] 2
- Runtime package store
--.SH AUTHORS
--bleroy.
-diff --git a/documentation/manpages/sdk/dotnet-test.1 b/documentation/manpages/sdk/dotnet-test.1
-index e3ef50e5b0..f75e6d445d 100644
---- a/documentation/manpages/sdk/dotnet-test.1
-+++ b/documentation/manpages/sdk/dotnet-test.1
-@@ -1,287 +1,408 @@
--.\"t
--.\" Automatically generated by Pandoc 2.7.2
-+'\" t
-+.\" Automatically generated by Pandoc 2.14.1
- .\"
--.TH "dotnet test command" "1" "" "" ".NET Core"
-+.TH "" "1" "" "" ".NET"
- .hy
- .SH dotnet test
- .PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.1 SDK and later versions
- .SH NAME
- .PP
- \f[C]dotnet test\f[R] - .NET test driver used to execute unit tests.
- .SH SYNOPSIS
--.SS .NET Core 2.1
- .IP
- .nf
- \f[C]
--dotnet test [<PROJECT>] [-a|--test-adapter-path] [--blame] [-c|--configuration] [--collect] [-d|--diag] [-f|--framework] [--filter]
-- [-l|--logger] [--no-build] [--no-restore] [-o|--output] [-r|--results-directory] [-s|--settings] [-t|--list-tests]
-- [-v|--verbosity] [-- <RunSettings arguments>]
-+dotnet test [<PROJECT> | <SOLUTION> | <DIRECTORY> | <DLL>]
-+ [-a|--test-adapter-path <ADAPTER_PATH>] [--arch <ARCHITECTURE>]
-+ [--blame] [--blame-crash]
-+ [--blame-crash-dump-type <DUMP_TYPE>] [--blame-crash-collect-always]
-+ [--blame-hang] [--blame-hang-dump-type <DUMP_TYPE>]
-+ [--blame-hang-timeout <TIMESPAN>]
-+ [-c|--configuration <CONFIGURATION>]
-+ [--collect <DATA_COLLECTOR_NAME>]
-+ [-d|--diag <LOG_FILE>] [-f|--framework <FRAMEWORK>]
-+ [--filter <EXPRESSION>] [--interactive]
-+ [-l|--logger <LOGGER>] [--no-build]
-+ [--nologo] [--no-restore] [-o|--output <OUTPUT_DIRECTORY>] [--os <OS>]
-+ [-r|--results-directory <RESULTS_DIR>] [--runtime <RUNTIME_IDENTIFIER>]
-+ [-s|--settings <SETTINGS_FILE>] [-t|--list-tests]
-+ [-v|--verbosity <LEVEL>] [[--] <RunSettings arguments>]
-
--dotnet test [-h|--help]
-+dotnet test -h|--help
- \f[R]
- .fi
--.SS .NET Core 2.0
--.IP
--.nf
--\f[C]
--dotnet test [<PROJECT>] [-a|--test-adapter-path] [-c|--configuration] [--collect] [-d|--diag] [-f|--framework] [--filter]
-- [-l|--logger] [--no-build] [--no-restore] [-o|--output] [-r|--results-directory] [-s|--settings] [-t|--list-tests] [-v|--verbosity]
--
--dotnet test [-h|--help]
--\f[R]
--.fi
--.SS .NET Core 1.x
--.IP
--.nf
--\f[C]
--dotnet test [<PROJECT>] [-a|--test-adapter-path] [-c|--configuration] [-d|--diag] [-f|--framework] [--filter] [-l|--logger] [--no-build] [-o|--output] [-s|--settings] [-t|--list-tests] [-v|--verbosity]
--
--dotnet test [-h|--help]
--\f[R]
--.fi
--.PP
-- * * * * *
- .SH DESCRIPTION
- .PP
--The \f[C]dotnet test\f[R] command is used to execute unit tests in a given project.
--The \f[C]dotnet test\f[R] command launches the test runner console application specified for a project.
--The test runner executes the tests defined for a unit test framework (for example, MSTest, NUnit, or xUnit) and reports the success or failure of each test.
-+The \f[C]dotnet test\f[R] command is used to execute unit tests in a given solution.
-+The \f[C]dotnet test\f[R] command builds the solution and runs a test host application for each test project in the solution.
-+The test host executes tests in the given project using a test framework, for example: MSTest, NUnit, or xUnit, and reports the success or failure of each test.
- If all tests are successful, the test runner returns 0 as an exit code; otherwise if any test fails, it returns 1.
--The test runner and the unit test library are packaged as NuGet packages and are restored as ordinary dependencies for the project.
-+.PP
-+For multi-targeted projects, tests are run for each targeted framework.
-+The test host and the unit test framework are packaged as NuGet packages and are restored as ordinary dependencies for the project.
- .PP
- Test projects specify the test runner using an ordinary \f[C]<PackageReference>\f[R] element, as seen in the following sample project file:
- .PP
- [!code-xmlXUnit Basic Template]
--.SS Arguments
--.PP
--\f[C]PROJECT\f[R]
--.PP
--Path to the test project.
--If not specified, it defaults to current directory.
--.SH OPTIONS
--.SS .NET Core 2.1
--.PP
--\f[C]-a|--test-adapter-path <PATH_TO_ADAPTER>\f[R]
--.PP
--Use the custom test adapters from the specified path in the test run.
--.PP
--\f[C]--blame\f[R]
--.PP
--Runs the tests in blame mode.
--This option is helpful in isolating the problematic tests causing test host to crash.
--It creates an output file in the current directory as \f[I]Sequence.xml\f[R] that captures the order of tests execution before the crash.
--.PP
--\f[C]-c|--configuration {Debug|Release}\f[R]
--.PP
--Defines the build configuration.
--The default value is \f[C]Debug\f[R], but your project\[cq]s configuration could override this default SDK setting.
- .PP
--\f[C]--collect <DATA_COLLECTOR_FRIENDLY_NAME>\f[R]
-+Where \f[C]Microsoft.NET.Test.Sdk\f[R] is the test host, \f[C]xunit\f[R] is the test framework.
-+And \f[C]xunit.runner.visualstudio\f[R] is a test adapter, which allows the xUnit framework to work with the test host.
-+.SS Implicit restore
- .PP
--Enables data collector for the test run.
--For more information, see Monitor and analyze test run.
--.PP
--\f[C]-d|--diag <PATH_TO_DIAGNOSTICS_FILE>\f[R]
--.PP
--Enables diagnostic mode for the test platform and write diagnostic messages to the specified file.
--.PP
--\f[C]-f|--framework <FRAMEWORK>\f[R]
--.PP
--Looks for test binaries for a specific framework.
--.PP
--\f[C]--filter <EXPRESSION>\f[R]
--.PP
--Filters out tests in the current project using the given expression.
--For more information, see the Filter option details section.
--For more information and examples on how to use selective unit test filtering, see Running selective unit tests.
--.PP
--\f[C]-h|--help\f[R]
--.PP
--Prints out a short help for the command.
--.PP
--\f[C]-l|--logger <LoggerUri/FriendlyName>\f[R]
-+You don\[cq]t have to run \f[C]dotnet restore\f[R] because it\[cq]s run implicitly by all commands that require a restore to occur, such as \f[C]dotnet new\f[R], \f[C]dotnet build\f[R], \f[C]dotnet run\f[R], \f[C]dotnet test\f[R], \f[C]dotnet publish\f[R], and \f[C]dotnet pack\f[R].
-+To disable implicit restore, use the \f[C]--no-restore\f[R] option.
- .PP
--Specifies a logger for test results.
--.PP
--\f[C]--no-build\f[R]
--.PP
--Doesn\[cq]t build the test project before running it.
--It also implicit sets the \f[C]--no-restore\f[R] flag.
--.PP
--\f[C]--no-restore\f[R]
--.PP
--Doesn\[cq]t execute an implicit restore when running the command.
--.PP
--\f[C]-o|--output <OUTPUT_DIRECTORY>\f[R]
--.PP
--Directory in which to find the binaries to run.
--.PP
--\f[C]-r|--results-directory <PATH>\f[R]
--.PP
--The directory where the test results are going to be placed.
--If the specified directory doesn\[cq]t exist, it\[cq]s created.
-+The \f[C]dotnet restore\f[R] command is still useful in certain scenarios where explicitly restoring makes sense, such as continuous integration builds in Azure DevOps Services or in build systems that need to explicitly control when the restore occurs.
- .PP
--\f[C]-s|--settings <SETTINGS_FILE>\f[R]
-+For information about how to manage NuGet feeds, see the \f[C]dotnet restore\f[R] documentation.
-+.SS Workload manifest downloads
- .PP
--The \f[C].runsettings\f[R] file to use for running the tests.
--Configure unit tests by using a \f[C].runsettings\f[R] file.
-+When you run this command, it initiates an asynchronous background download of advertising manifests for workloads.
-+If the download is still running when this command finishes, the download is stopped.
-+For more information, see Advertising manifests.
-+.SS Arguments
-+.IP \[bu] 2
-+\f[B]\f[CB]PROJECT | SOLUTION | DIRECTORY | DLL\f[B]\f[R]
-+.RS 2
-+.IP \[bu] 2
-+Path to the test project.
-+.IP \[bu] 2
-+Path to the solution.
-+.IP \[bu] 2
-+Path to a directory that contains a project or a solution.
-+.IP \[bu] 2
-+Path to a test project \f[I].dll\f[R] file.
- .PP
--\f[C]-t|--list-tests\f[R]
-+If not specified, it searches for a project or a solution in the current directory.
-+.RE
-+.SH OPTIONS
-+.IP \[bu] 2
-+\f[B]\f[CB]-a|--test-adapter-path <ADAPTER_PATH>\f[B]\f[R]
-+.RS 2
- .PP
--List all of the discovered tests in the current project.
-+Path to a directory to be searched for additional test adapters.
-+Only \f[I].dll\f[R] files with suffix \f[C].TestAdapter.dll\f[R] are inspected.
-+If not specified, the directory of the test \f[I].dll\f[R] is searched.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--arch <ARCHITECTURE>\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies the target architecture.
-+This is a shorthand syntax for setting the Runtime Identifier (RID), where the provided value is combined with the default RID.
-+For example, on a \f[C]win-x64\f[R] machine, specifying \f[C]--arch x86\f[R] sets the RID to \f[C]win-x86\f[R].
-+If you use this option, don\[cq]t use the \f[C]-r|--runtime\f[R] option.
-+Available since .NET 6 Preview 7.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--blame\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]-v|--verbosity <LEVEL>\f[R]
-+Runs the tests in blame mode.
-+This option is helpful in isolating problematic tests that cause the test host to crash.
-+When a crash is detected, it creates a sequence file in \f[C]TestResults/<Guid>/<Guid>_Sequence.xml\f[R] that captures the order of tests that were run before the crash.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--blame-crash\f[B]\f[R] (Available since .NET 5.0 preview SDK)
-+.RS 2
- .PP
--Sets the verbosity level of the command.
--Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
-+Runs the tests in blame mode and collects a crash dump when the test host exits unexpectedly.
-+This option depends on the version of .NET used, the type of error, and the operating system.
- .PP
--\f[C]RunSettings arguments\f[R]
-+For exceptions in managed code, a dump will be automatically collected on .NET 5.0 and later versions.
-+It will generate a dump for testhost or any child process that also ran on .NET 5.0 and crashed.
-+Crashes in native code will not generate a dump.
-+This option works on Windows, macOS, and Linux.
- .PP
--Arguments passed as RunSettings configurations for the test.
--Arguments are specified as \f[C][name]=[value]\f[R] pairs after \[lq]\[en]\[rq] (note the space after \[en]).
--A space is used to separate multiple \f[C][name]=[value]\f[R] pairs.
-+Crash dumps in native code, or when using .NET Core 3.1 or earlier versions, can only be collected on Windows, by using Procdump.
-+A directory that contains \f[I]procdump.exe\f[R] and \f[I]procdump64.exe\f[R] must be in the PATH or PROCDUMP_PATH environment variable.
-+Download the tools.
-+Implies \f[C]--blame\f[R].
- .PP
--Example: \f[C]dotnet test -- MSTest.DeploymentEnabled=false MSTest.MapInconclusiveToFailed=True\f[R]
-+To collect a crash dump from a native application running on .NET 5.0 or later, the usage of Procdump can be forced by setting the \f[C]VSTEST_DUMP_FORCEPROCDUMP\f[R] environment variable to \f[C]1\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--blame-crash-dump-type <DUMP_TYPE>\f[B]\f[R] (Available since .NET 5.0 preview SDK)
-+.RS 2
- .PP
--For more information about RunSettings, see vstest.console.exe: Passing RunSettings args.
--.SS .NET Core 2.0
-+The type of crash dump to be collected.
-+Implies \f[C]--blame-crash\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--blame-crash-collect-always\f[B]\f[R] (Available since .NET 5.0 preview SDK)
-+.RS 2
- .PP
--\f[C]-a|--test-adapter-path <PATH_TO_ADAPTER>\f[R]
-+Collects a crash dump on expected as well as unexpected test host exit.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--blame-hang\f[B]\f[R] (Available since .NET 5.0 preview SDK)
-+.RS 2
- .PP
--Use the custom test adapters from the specified path in the test run.
-+Run the tests in blame mode and collects a hang dump when a test exceeds the given timeout.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--blame-hang-dump-type <DUMP_TYPE>\f[B]\f[R] (Available since .NET 5.0 preview SDK)
-+.RS 2
-+.PP
-+The type of crash dump to be collected.
-+It should be \f[C]full\f[R], \f[C]mini\f[R], or \f[C]none\f[R].
-+When \f[C]none\f[R] is specified, test host is terminated on timeout, but no dump is collected.
-+Implies \f[C]--blame-hang\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--blame-hang-timeout <TIMESPAN>\f[B]\f[R] (Available since .NET 5.0 preview SDK)
-+.RS 2
- .PP
--\f[C]-c|--configuration {Debug|Release}\f[R]
-+Per-test timeout, after which a hang dump is triggered and the test host process and all of its child processes are dumped and terminated.
-+The timeout value is specified in one of the following formats:
-+.IP \[bu] 2
-+1.5h, 1.5hour, 1.5hours
-+.IP \[bu] 2
-+90m, 90min, 90minute, 90minutes
-+.IP \[bu] 2
-+5400s, 5400sec, 5400second, 5400seconds
-+.IP \[bu] 2
-+5400000ms, 5400000mil, 5400000millisecond, 5400000milliseconds
-+.PP
-+When no unit is used (for example, 5400000), the value is assumed to be in milliseconds.
-+When used together with data driven tests, the timeout behavior depends on the test adapter used.
-+For xUnit and NUnit the timeout is renewed after every test case.
-+For MSTest, the timeout is used for all test cases.
-+This option is supported on Windows with netcoreapp2.1 and later, on Linux with netcoreapp3.1 and later, and on macOS with net5.0 or later.
-+Implies \f[C]--blame\f[R] and \f[C]--blame-hang\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-c|--configuration <CONFIGURATION>\f[B]\f[R]
-+.RS 2
- .PP
- Defines the build configuration.
--The default value is \f[C]Debug\f[R], but your project\[cq]s configuration could override this default SDK setting.
--.PP
--\f[C]--collect <DATA_COLLECTOR_FRIENDLY_NAME>\f[R]
-+The default for most projects is \f[C]Debug\f[R], but you can override the build configuration settings in your project.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--collect <DATA_COLLECTOR_NAME>\f[B]\f[R]
-+.RS 2
- .PP
- Enables data collector for the test run.
--For more information, see Monitor and analyze test run.
--.PP
--\f[C]-d|--diag <PATH_TO_DIAGNOSTICS_FILE>\f[R]
--.PP
--Enables diagnostic mode for the test platform and write diagnostic messages to the specified file.
-+For more information, see Monitor and analyze test run (https://aka.ms/vstest-collect).
- .PP
--\f[C]-f|--framework <FRAMEWORK>\f[R]
-+To collect code coverage on any platform that is supported by .NET Core, install Coverlet (https://github.com/coverlet-coverage/coverlet/blob/master/README.md) and use the \f[C]--collect:\[dq]XPlat Code Coverage\[dq]\f[R] option.
- .PP
--Looks for test binaries for a specific framework.
-+On Windows, you can collect code coverage by using the \f[C]--collect \[dq]Code Coverage\[dq]\f[R] option.
-+This option generates a \f[I].coverage\f[R] file, which can be opened in Visual Studio 2019 Enterprise.
-+For more information, see Use code coverage and Customize code coverage analysis.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-d|--diag <LOG_FILE>\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]--filter <EXPRESSION>\f[R]
-+Enables diagnostic mode for the test platform and writes diagnostic messages to the specified file and to files next to it.
-+The process that is logging the messages determines which files are created, such as \f[C]*.host_<date>.txt\f[R] for test host log, and \f[C]*.datacollector_<date>.txt\f[R] for data collector log.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-f|--framework <FRAMEWORK>\f[B]\f[R]
-+.RS 2
-+.PP
-+Forces the use of \f[C]dotnet\f[R] or .NET Framework test host for the test binaries.
-+This option only determines which type of host to use.
-+The actual framework version to be used is determined by the \f[I]runtimeconfig.json\f[R] of the test project.
-+When not specified, the TargetFramework assembly attribute is used to determine the type of host.
-+When that attribute is stripped from the \f[I].dll\f[R], the .NET Framework host is used.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--filter <EXPRESSION>\f[B]\f[R]
-+.RS 2
- .PP
- Filters out tests in the current project using the given expression.
- For more information, see the Filter option details section.
- For more information and examples on how to use selective unit test filtering, see Running selective unit tests.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]-h|--help\f[R]
--.PP
--Prints out a short help for the command.
-+Prints out a description of how to use the command.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--interactive\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]-l|--logger <LoggerUri/FriendlyName>\f[R]
-+Allows the command to stop and wait for user input or action.
-+For example, to complete authentication.
-+Available since .NET Core 3.0 SDK.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-l|--logger <LOGGER>\f[B]\f[R]
-+.RS 2
- .PP
- Specifies a logger for test results.
--.PP
--\f[C]--no-build\f[R]
-+Unlike MSBuild, dotnet test doesn\[cq]t accept abbreviations: instead of \f[C]-l \[dq]console;v=d\[dq]\f[R] use \f[C]-l \[dq]console;verbosity=detailed\[dq]\f[R].
-+Specify the parameter multiple times to enable multiple loggers.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-build\f[B]\f[R]
-+.RS 2
- .PP
- Doesn\[cq]t build the test project before running it.
--It also implicit sets the \f[C]--no-restore\f[R] flag.
-+It also implicitly sets the - \f[C]--no-restore\f[R] flag.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--nologo\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]--no-restore\f[R]
-+Run tests without displaying the Microsoft TestPlatform banner.
-+Available since .NET Core 3.0 SDK.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-restore\f[B]\f[R]
-+.RS 2
- .PP
- Doesn\[cq]t execute an implicit restore when running the command.
--.PP
--\f[C]-o|--output <OUTPUT_DIRECTORY>\f[R]
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-o|--output <OUTPUT_DIRECTORY>\f[B]\f[R]
-+.RS 2
- .PP
- Directory in which to find the binaries to run.
--.PP
--\f[C]-r|--results-directory <PATH>\f[R]
-+If not specified, the default path is \f[C]./bin/<configuration>/<framework>/\f[R].
-+For projects with multiple target frameworks (via the \f[C]TargetFrameworks\f[R] property), you also need to define \f[C]--framework\f[R] when you specify this option.
-+\f[C]dotnet test\f[R] always runs tests from the output directory.
-+You can use <xref:System.AppDomain.BaseDirectory%2A?displayProperty=nameWithType> to consume test assets in the output directory.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--os <OS>\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies the target operating system (OS).
-+This is a shorthand syntax for setting the Runtime Identifier (RID), where the provided value is combined with the default RID.
-+For example, on a \f[C]win-x64\f[R] machine, specifying \f[C]--os os\f[R] sets the RID to \f[C]os-x64\f[R].
-+If you use this option, don\[cq]t use the \f[C]-r|--runtime\f[R] option.
-+Available since .NET 6 Preview 7.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-r|--results-directory <RESULTS_DIR>\f[B]\f[R]
-+.RS 2
- .PP
- The directory where the test results are going to be placed.
- If the specified directory doesn\[cq]t exist, it\[cq]s created.
-+The default is \f[C]TestResults\f[R] in the directory that contains the project file.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--runtime <RUNTIME_IDENTIFIER>\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]-s|--settings <SETTINGS_FILE>\f[R]
-+The target runtime to test for.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-s|--settings <SETTINGS_FILE>\f[B]\f[R]
-+.RS 2
- .PP
- The \f[C].runsettings\f[R] file to use for running the tests.
-+The \f[C]TargetPlatform\f[R] element (x86|x64) has no effect for \f[C]dotnet test\f[R].
-+To run tests that target x86, install the x86 version of .NET Core.
-+The bitness of the \f[I]dotnet.exe\f[R] that is on the path is what will be used for running tests.
-+For more information, see the following resources:
-+.IP \[bu] 2
- Configure unit tests by using a \f[C].runsettings\f[R] file.
-+.IP \[bu] 2
-+Configure a test run (https://github.com/Microsoft/vstest-docs/blob/master/docs/configure.md)
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-t|--list-tests\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]-t|--list-tests\f[R]
--.PP
--List all of the discovered tests in the current project.
--.PP
--\f[C]-v|--verbosity <LEVEL>\f[R]
-+List the discovered tests instead of running the tests.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
-+.RS 2
- .PP
- Sets the verbosity level of the command.
- Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
--.SS .NET Core 1.x
--.PP
--\f[C]-a|--test-adapter-path <PATH_TO_ADAPTER>\f[R]
--.PP
--Use the custom test adapters from the specified path in the test run.
--.PP
--\f[C]-c|--configuration {Debug|Release}\f[R]
--.PP
--Defines the build configuration.
--The default value is \f[C]Debug\f[R], but your project\[cq]s configuration could override this default SDK setting.
--.PP
--\f[C]-d|--diag <PATH_TO_DIAGNOSTICS_FILE>\f[R]
--.PP
--Enables diagnostic mode for the test platform and write diagnostic messages to the specified file.
--.PP
--\f[C]-f|--framework <FRAMEWORK>\f[R]
--.PP
--Looks for test binaries for a specific framework.
--.PP
--\f[C]--filter <EXPRESSION>\f[R]
--.PP
--Filters out tests in the current project using the given expression.
--For more information, see the Filter option details section.
--For more information and examples on how to use selective unit test filtering, see Running selective unit tests.
--.PP
--\f[C]-h|--help\f[R]
--.PP
--Prints out a short help for the command.
--.PP
--\f[C]-l|--logger <LoggerUri/FriendlyName>\f[R]
--.PP
--Specifies a logger for test results.
--.PP
--\f[C]--no-build\f[R]
--.PP
--Doesn\[cq]t build the test project before running it.
--.PP
--\f[C]-o|--output <OUTPUT_DIRECTORY>\f[R]
--.PP
--Directory in which to find the binaries to run.
--.PP
--\f[C]-s|--settings <SETTINGS_FILE>\f[R]
--.PP
--The \f[C].runsettings\f[R] file to use for running the tests.
--Configure unit tests by using a \f[C].runsettings\f[R] file.
--.PP
--\f[C]-t|--list-tests\f[R]
--.PP
--List all of the discovered tests in the current project.
-+The default is \f[C]minimal\f[R].
-+For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]RunSettings\f[B]\f[R] arguments
- .PP
--\f[C]-v|--verbosity <LEVEL>\f[R]
-+Inline \f[C]RunSettings\f[R] are passed as the last arguments on the command line after \[lq]\[en]\[rq] (note the space after \[en]).
-+Inline \f[C]RunSettings\f[R] are specified as \f[C][name]=[value]\f[R] pairs.
-+A space is used to separate multiple \f[C][name]=[value]\f[R] pairs.
- .PP
--Sets the verbosity level of the command.
--Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
-+Example: \f[C]dotnet test -- MSTest.DeploymentEnabled=false MSTest.MapInconclusiveToFailed=True\f[R]
- .PP
-- * * * * *
-+For more information, see Passing RunSettings arguments through command line (https://github.com/Microsoft/vstest-docs/blob/master/docs/RunSettingsArgu...).
- .SH EXAMPLES
--.PP
-+.IP \[bu] 2
- Run the tests in the project in the current directory:
--.PP
--\f[C]dotnet test\f[R]
--.PP
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet test
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
- Run the tests in the \f[C]test1\f[R] project:
--.PP
--\f[C]dotnet test \[ti]/projects/test1/test1.csproj\f[R]
--.PP
--Run the tests in the project in the current directory and generate a test results file in the trx format:
--.PP
--\f[C]dotnet test --logger trx\f[R]
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet test \[ti]/projects/test1/test1.csproj
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Run the tests in the project in the current directory, and generate a test results file in the trx format:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet test --logger trx
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Run the tests in the project in the current directory, and generate a code coverage file (after installing Coverlet (https://github.com/coverlet-coverage/coverlet/blob/master/Documentation/V...) collectors integration):
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet test --collect:\[dq]XPlat Code Coverage\[dq]
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Run the tests in the project in the current directory, and generate a code coverage file (Windows only):
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet test --collect \[dq]Code Coverage\[dq]
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Run the tests in the project in the current directory, and log with detailed verbosity to the console:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet test --logger \[dq]console;verbosity=detailed\[dq]
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Run the tests in the project in the current directory, and report tests that were in progress when the test host crashed:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet test --blame
-+\f[R]
-+.fi
-+.RE
- .SS Filter option details
- .PP
- \f[C]--filter <EXPRESSION>\f[R]
-@@ -300,23 +421,19 @@ T}@T{
- Supported properties
- T}
- _
-+T{
-+MSTest
-+T}@T{
-+T}
-+T{
-+xUnit
-+T}@T{
-+T}
-+T{
-+NUnit
-+T}@T{
-+T}
- .TE
--| MSTest |
--FullyQualifiedName
--Name
--ClassName
--Priority
--TestCategory
--| | xUnit |
--FullyQualifiedName
--DisplayName
--Traits
--.IP
--.nf
--\f[C]
-- |
--\f[R]
--.fi
- .PP
- The \f[C]<operator>\f[R] describes the relationship between the property and the value:
- .PP
-@@ -344,6 +461,11 @@ T{
- T}@T{
- Contains
- T}
-+T{
-+\f[C]!\[ti]\f[R]
-+T}@T{
-+Not contains
-+T}
- .TE
- .PP
- \f[C]<value>\f[R] is a string.
-@@ -381,4 +503,6 @@ For more information and examples on how to use selective unit test filtering, s
- .IP \[bu] 2
- Frameworks and Targets
- .IP \[bu] 2
--\&.NET Core Runtime IDentifier (RID) catalog
-+\&.NET Runtime Identifier (RID) catalog
-+.IP \[bu] 2
-+Passing runsettings arguments through commandline (https://github.com/Microsoft/vstest-docs/blob/master/docs/RunSettingsArgu...)
-diff --git a/documentation/manpages/sdk/dotnet-tool-install.1 b/documentation/manpages/sdk/dotnet-tool-install.1
-index 3725f3ed7a..190b86765c 100644
---- a/documentation/manpages/sdk/dotnet-tool-install.1
-+++ b/documentation/manpages/sdk/dotnet-tool-install.1
-@@ -1,28 +1,53 @@
--.\"t
--.\" Automatically generated by Pandoc 2.7.2
-+'\" t
-+.\" Automatically generated by Pandoc 2.14.1
- .\"
--.TH "dotnet tool install command" "1" "" "" ".NET Core"
-+.TH "" "1" "" "" ".NET"
- .hy
- .SH dotnet tool install
- .PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.1 SDK and later versions
- .SH NAME
- .PP
--\f[C]dotnet tool install\f[R] - Installs the specified .NET Core Global Tool on your machine.
-+\f[C]dotnet tool install\f[R] - Installs the specified .NET tool on your machine.
- .SH SYNOPSIS
- .IP
- .nf
- \f[C]
--dotnet tool install <PACKAGE_NAME> <-g|--global> [--add-source] [--configfile] [--framework] [-v|--verbosity] [--version]
--dotnet tool install <PACKAGE_NAME> <--tool-path> [--add-source] [--configfile] [--framework] [-v|--verbosity] [--version]
--dotnet tool install <-h|--help>
-+dotnet tool install <PACKAGE_NAME> -g|--global
-+ [--add-source <SOURCE>] [--configfile <FILE>] [--disable-parallel]
-+ [--framework <FRAMEWORK>] [--ignore-failed-sources] [--interactive]
-+ [--no-cache] [--tool-manifest <PATH>] [-v|--verbosity <LEVEL>]
-+ [--version <VERSION_NUMBER>]
-+
-+dotnet tool install <PACKAGE_NAME> --tool-path <PATH>
-+ [--add-source <SOURCE>] [--configfile <FILE>] [--disable-parallel]
-+ [--framework <FRAMEWORK>] [--ignore-failed-sources] [--interactive]
-+ [--no-cache] [--tool-manifest <PATH>] [-v|--verbosity <LEVEL>]
-+ [--version <VERSION_NUMBER>]
-+
-+dotnet tool install <PACKAGE_NAME> [--local]
-+ [--add-source <SOURCE>] [--configfile <FILE>] [--disable-parallel]
-+ [--framework <FRAMEWORK>] [--ignore-failed-sources] [--interactive]
-+ [--no-cache] [--tool-manifest <PATH>] [-v|--verbosity <LEVEL>]
-+ [--version <VERSION_NUMBER>]
-+
-+dotnet tool install -h|--help
- \f[R]
- .fi
- .SH DESCRIPTION
- .PP
--The \f[C]dotnet tool install\f[R] command provides a way for you to install .NET Core Global Tools on your machine.
--To use the command, you either have to specify that you want a user-wide installation using the \f[C]--global\f[R] option or you specify a path to install it using the \f[C]--tool-path\f[R] option.
-+The \f[C]dotnet tool install\f[R] command provides a way for you to install .NET tools on your machine.
-+To use the command, you specify one of the following installation options:
-+.IP \[bu] 2
-+To install a global tool in the default location, use the \f[C]--global\f[R] option.
-+.IP \[bu] 2
-+To install a global tool in a custom location, use the \f[C]--tool-path\f[R] option.
-+.IP \[bu] 2
-+To install a local tool, omit the \f[C]--global\f[R] and \f[C]--tool-path\f[R] options.
- .PP
--Global Tools are installed in the following directories by default when you specify the \f[C]-g\f[R] (or \f[C]--global\f[R]) option:
-+\f[B]Local tools are available starting with .NET Core SDK 3.0.\f[R]
-+.PP
-+Global tools are installed in the following directories by default when you specify the \f[C]-g\f[R] or \f[C]--global\f[R] option:
- .PP
- .TS
- tab(@);
-@@ -44,71 +69,162 @@ T}@T{
- \f[C]%USERPROFILE%\[rs].dotnet\[rs]tools\f[R]
- T}
- .TE
--.SS Arguments
- .PP
--\f[C]PACKAGE_NAME\f[R]
-+Local tools are added to a \f[I]dotnet-tools.json\f[R] file in a \f[I].config\f[R] directory under the current directory.
-+If a manifest file doesn\[cq]t exist yet, create it by running the following command:
-+.IP
-+.nf
-+\f[C]
-+dotnet new tool-manifest
-+\f[R]
-+.fi
- .PP
--Name/ID of the NuGet package that contains the .NET Core Global Tool to install.
--.SH OPTIONS
-+For more information, see Install a local tool.
-+.SS Arguments
-+.IP \[bu] 2
-+\f[B]\f[CB]PACKAGE_NAME\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]--add-source <SOURCE>\f[R]
-+Name/ID of the NuGet package that contains the .NET tool to install.
-+.RE
-+.SH OPTIONS
-+.IP \[bu] 2
-+\f[B]\f[CB]--add-source <SOURCE>\f[B]\f[R]
-+.RS 2
- .PP
- Adds an additional NuGet package source to use during installation.
-+Feeds are accessed in parallel, not sequentially in some order of precedence.
-+If the same package and version is in multiple feeds, the fastest feed wins.
-+For more information, see What happens when a NuGet package is installed?.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
-+.RS 2
-+.PP
-+The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
-+If specified, only the settings from this file will be used.
-+If not specified, the hierarchy of configuration files from the current directory will be used.
-+For more information, see Common NuGet Configurations.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--disable-parallel\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]--configfile <FILE>\f[R]
--.PP
--The NuGet configuration (\f[I]nuget.config\f[R]) file to use.
--.PP
--\f[C]--framework <FRAMEWORK>\f[R]
-+Prevent restoring multiple projects in parallel.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--framework <FRAMEWORK>\f[B]\f[R]
-+.RS 2
- .PP
- Specifies the target framework to install the tool for.
--By default, the .NET Core SDK tries to choose the most appropriate target framework.
--.PP
--\f[C]-g|--global\f[R]
-+By default, the .NET SDK tries to choose the most appropriate target framework.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-g|--global\f[B]\f[R]
-+.RS 2
- .PP
- Specifies that the installation is user wide.
- Can\[cq]t be combined with the \f[C]--tool-path\f[R] option.
--If you don\[cq]t specify this option, you must specify the \f[C]--tool-path\f[R] option.
-+Omitting both \f[C]--global\f[R] and \f[C]--tool-path\f[R] specifies a local tool installation.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]-h|--help\f[R]
-+Prints out a description of how to use the command.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--ignore-failed-sources\f[B]\f[R]
-+.RS 2
-+.PP
-+Treat package source failures as warnings.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--interactive\f[B]\f[R]
-+.RS 2
-+.PP
-+Allows the command to stop and wait for user input or action.
-+For example, to complete authentication.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--local\f[B]\f[R]
-+.RS 2
-+.PP
-+Update the tool and the local tool manifest.
-+Can\[cq]t be combined with the \f[C]--global\f[R] option or the \f[C]--tool-path\f[R] option.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-cache\f[B]\f[R]
-+.RS 2
- .PP
--Prints out a short help for the command.
-+Do not cache packages and HTTP requests.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--tool-manifest <PATH>\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]--tool-path <PATH>\f[R]
-+Path to the manifest file.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--tool-path <PATH>\f[B]\f[R]
-+.RS 2
- .PP
- Specifies the location where to install the Global Tool.
- PATH can be absolute or relative.
- If PATH doesn\[cq]t exist, the command tries to create it.
--Can\[cq]t be combined with the \f[C]--global\f[R] option.
--If you don\[cq]t specify this option, you must specify the \f[C]--global\f[R] option.
--.PP
--\f[C]-v|--verbosity <LEVEL>\f[R]
-+Omitting both \f[C]--global\f[R] and \f[C]--tool-path\f[R] specifies a local tool installation.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
-+.RS 2
- .PP
- Sets the verbosity level of the command.
- Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
--.PP
--\f[C]--version <VERSION_NUMBER>\f[R]
-+For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--version <VERSION_NUMBER>\f[B]\f[R]
-+.RS 2
- .PP
- The version of the tool to install.
- By default, the latest stable package version is installed.
- Use this option to install preview or older versions of the tool.
-+.RE
- .SH EXAMPLES
-+.IP \[bu] 2
-+\f[B]\f[CB]dotnet tool install -g dotnetsay\f[B]\f[R]
-+.RS 2
- .PP
--Installs the dotnetsay Global Tool in the default location:
--.PP
--\f[C]dotnet tool install -g dotnetsay\f[R]
--.PP
--Installs the dotnetsay Global Tool on a specific Windows folder:
--.PP
--\f[C]dotnet tool install dotnetsay --tool-path c:\[rs]global-tools\f[R]
-+Installs dotnetsay (https://www.nuget.org/packages/dotnetsay/) as a global tool in the default location.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]dotnet tool install dotnetsay --tool-path c:\[rs]global-tools\f[B]\f[R]
-+.RS 2
- .PP
--Installs the dotnetsay Global Tool on a specific Linux/macOS folder:
-+Installs dotnetsay (https://www.nuget.org/packages/dotnetsay/) as a global tool in a specific Windows directory.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]dotnet tool install dotnetsay --tool-path \[ti]/bin\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]dotnet tool install dotnetsay --tool-path \[ti]/bin\f[R]
-+Installs dotnetsay (https://www.nuget.org/packages/dotnetsay/) as a global tool in a specific Linux/macOS directory.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]dotnet tool install -g dotnetsay --version 2.0.0\f[B]\f[R]
-+.RS 2
- .PP
--Installs version 2.0.0 of the dotnetsay Global Tool:
-+Installs version 2.0.0 of dotnetsay (https://www.nuget.org/packages/dotnetsay/) as a global tool.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]dotnet tool install dotnetsay\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]dotnet tool install -g dotnetsay --version 2.0.0\f[R]
-+Installs dotnetsay (https://www.nuget.org/packages/dotnetsay/) as a local tool for the current directory.
-+.RE
- .SS See also
- .IP \[bu] 2
--\&.NET Core Global Tools
-+\&.NET tools
-+.IP \[bu] 2
-+Tutorial: Install and use a .NET global tool using the .NET CLI
-+.IP \[bu] 2
-+Tutorial: Install and use a .NET local tool using the .NET CLI
-diff --git a/documentation/manpages/sdk/dotnet-tool-list.1 b/documentation/manpages/sdk/dotnet-tool-list.1
-index a2f2534d77..7ae8c785d3 100644
---- a/documentation/manpages/sdk/dotnet-tool-list.1
-+++ b/documentation/manpages/sdk/dotnet-tool-list.1
-@@ -1,57 +1,102 @@
--.\" Automatically generated by Pandoc 2.7.2
-+.\" Automatically generated by Pandoc 2.14.1
- .\"
--.TH "dotnet tool list command" "1" "" "" ".NET Core"
-+.TH "" "1" "" "" ".NET"
- .hy
- .SH dotnet tool list
- .PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.1 SDK and later versions
- .SH NAME
- .PP
--\f[C]dotnet tool list\f[R] - Lists all .NET Core Global Tools currently installed in the default directory on your machine or in the specified path.
-+\f[C]dotnet tool list\f[R] - Lists all .NET tools of the specified type currently installed on your machine.
- .SH SYNOPSIS
- .IP
- .nf
- \f[C]
--dotnet tool list <-g|--global>
--dotnet tool list <--tool-path>
--dotnet tool list <-h|--help>
-+dotnet tool list -g|--global
-+
-+dotnet tool list --tool-path <PATH>
-+
-+dotnet tool list --local
-+
-+dotnet tool list
-+
-+dotnet tool list -h|--help
- \f[R]
- .fi
- .SH DESCRIPTION
- .PP
--The \f[C]dotnet tool list\f[R] command provides a way for you to list all .NET Core Global Tools installed user-wide on your machine (current user profile) or in the specified path.
--The command lists the package name, version installed, and the Global Tool command.
--To use the list command, you either have to specify that you want to see all user-wide tools using the \f[C]--global\f[R] option or specify a custom path using the \f[C]--tool-path\f[R] option.
--.SH OPTIONS
-+The \f[C]dotnet tool list\f[R] command provides a way for you to list all .NET global, tool-path, or local tools installed on your machine.
-+The command lists the package name, version installed, and the tool command.
-+To use the command, you specify one of the following:
-+.IP \[bu] 2
-+To list global tools installed in the default location, use the \f[C]--global\f[R] option
-+.IP \[bu] 2
-+To list global tools installed in a custom location, use the \f[C]--tool-path\f[R] option.
-+.IP \[bu] 2
-+To list local tools, use the \f[C]--local\f[R] option or omit the \f[C]--global\f[R], \f[C]--tool-path\f[R], and \f[C]--local\f[R] options.
- .PP
--\f[C]-g|--global\f[R]
-+\f[B]Local tools are available starting with .NET Core SDK 3.0.\f[R]
-+.SH OPTIONS
-+.IP \[bu] 2
-+\f[B]\f[CB]-g|--global\f[B]\f[R]
-+.RS 2
- .PP
--Lists user-wide Global Tools.
-+Lists user-wide global tools.
- Can\[cq]t be combined with the \f[C]--tool-path\f[R] option.
--If you don\[cq]t specify this option, you must specify the \f[C]--tool-path\f[R] option.
--.PP
--\f[C]-h|--help\f[R]
-+Omitting both \f[C]--global\f[R] and \f[C]--tool-path\f[R] lists local tools.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
-+.RS 2
- .PP
--Prints out a short help for the command.
-+Prints out a description of how to use the command.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--local\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]--tool-path <PATH>\f[R]
-+Lists local tools for the current directory.
-+Can\[cq]t be combined with the \f[C]--global\f[R] or \f[C]--tool-path\f[R] options.
-+Omitting both \f[C]--global\f[R] and \f[C]--tool-path\f[R] lists local tools even if \f[C]--local\f[R] is not specified.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--tool-path <PATH>\f[B]\f[R]
-+.RS 2
- .PP
--Specifies a custom location where to find Global Tools.
-+Specifies a custom location where to find global tools.
- PATH can be absolute or relative.
- Can\[cq]t be combined with the \f[C]--global\f[R] option.
--If you don\[cq]t specify this option, you must specify the \f[C]--global\f[R] option.
-+Omitting both \f[C]--global\f[R] and \f[C]--tool-path\f[R] lists local tools.
-+.RE
- .SH EXAMPLES
-+.IP \[bu] 2
-+\f[B]\f[CB]dotnet tool list -g\f[B]\f[R]
-+.RS 2
- .PP
--Lists all Global Tools installed user-wide on your machine (current user profile):
--.PP
--\f[C]dotnet tool list -g\f[R]
--.PP
--Lists the Global Tools from a specific Windows folder:
-+Lists all global tools installed user-wide on your machine (current user profile).
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]dotnet tool list --tool-path c:\[rs]global-tools\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]dotnet tool list --tool-path c:\[rs]global-tools\f[R]
-+Lists the global tools from a specific Windows directory.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]dotnet tool list --tool-path \[ti]/bin\f[B]\f[R]
-+.RS 2
- .PP
--Lists the Global Tools from a specific Linux/macOS folder:
-+Lists the global tools from a specific Linux/macOS directory.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]dotnet tool list\f[B]\f[R] or \f[B]\f[CB]dotnet tool list --local\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]dotnet tool list --tool-path \[ti]/bin\f[R]
-+Lists all local tools available in the current directory.
-+.RE
- .SS See also
- .IP \[bu] 2
--\&.NET Core Global Tools
-+\&.NET tools
-+.IP \[bu] 2
-+Tutorial: Install and use a .NET global tool using the .NET CLI
-+.IP \[bu] 2
-+Tutorial: Install and use a .NET local tool using the .NET CLI
-diff --git a/documentation/manpages/sdk/dotnet-tool-restore.1 b/documentation/manpages/sdk/dotnet-tool-restore.1
-new file mode 100644
-index 0000000000..9d25fd82cc
---- /dev/null
-+++ b/documentation/manpages/sdk/dotnet-tool-restore.1
-@@ -0,0 +1,103 @@
-+.\" Automatically generated by Pandoc 2.14.1
-+.\"
-+.TH "" "1" "" "" ".NET"
-+.hy
-+.SH dotnet tool restore
-+.PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 3.0 SDK and later versions
-+.SH NAME
-+.PP
-+\f[C]dotnet tool restore\f[R] - Installs the .NET local tools that are in scope for the current directory.
-+.SH SYNOPSIS
-+.IP
-+.nf
-+\f[C]
-+dotnet tool restore
-+ [--configfile <FILE>] [--add-source <SOURCE>]
-+ [--tool-manifest <PATH_TO_MANIFEST_FILE>] [--disable-parallel]
-+ [--ignore-failed-sources] [--no-cache] [--interactive]
-+ [-v|--verbosity <LEVEL>]
-+
-+dotnet tool restore -h|--help
-+\f[R]
-+.fi
-+.SH DESCRIPTION
-+.PP
-+The \f[C]dotnet tool restore\f[R] command finds the tool manifest file that is in scope for the current directory and installs the tools that are listed in it.
-+For information about manifest files, see Install a local tool and Invoke a local tool.
-+.SH OPTIONS
-+.IP \[bu] 2
-+\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
-+.RS 2
-+.PP
-+The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
-+If specified, only the settings from this file will be used.
-+If not specified, the hierarchy of configuration files from the current directory will be used.
-+For more information, see Common NuGet Configurations.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--add-source <SOURCE>\f[B]\f[R]
-+.RS 2
-+.PP
-+Adds an additional NuGet package source to use during installation.
-+Feeds are accessed in parallel, not sequentially in some order of precedence.
-+If the same package and version is in multiple feeds, the fastest feed wins.
-+For more information, see What happens when a NuGet package is installed?.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--tool-manifest <PATH>\f[B]\f[R]
-+.RS 2
-+.PP
-+Path to the manifest file.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--disable-parallel\f[B]\f[R]
-+.RS 2
-+.PP
-+Prevent restoring multiple projects in parallel.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--ignore-failed-sources\f[B]\f[R]
-+.RS 2
-+.PP
-+Treat package source failures as warnings.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-cache\f[B]\f[R]
-+.RS 2
-+.PP
-+Do not cache packages and http requests.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--interactive\f[B]\f[R]
-+.RS 2
-+.PP
-+Allows the command to stop and wait for user input or action.
-+For example, to complete authentication.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
-+.RS 2
-+.PP
-+Prints out a description of how to use the command.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
-+.RS 2
-+.PP
-+Sets the verbosity level of the command.
-+Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
-+For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
-+.RE
-+.SS Example
-+.IP \[bu] 2
-+\f[B]\f[CB]dotnet tool restore\f[B]\f[R]
-+.RS 2
-+.PP
-+Restores local tools for the current directory.
-+.RE
-+.SS See also
-+.IP \[bu] 2
-+\&.NET tools
-+.IP \[bu] 2
-+Tutorial: Install and use a .NET local tool using the .NET CLI
-diff --git a/documentation/manpages/sdk/dotnet-tool-run.1 b/documentation/manpages/sdk/dotnet-tool-run.1
-new file mode 100644
-index 0000000000..2b3ff10392
---- /dev/null
-+++ b/documentation/manpages/sdk/dotnet-tool-run.1
-@@ -0,0 +1,50 @@
-+.\" Automatically generated by Pandoc 2.14.1
-+.\"
-+.TH "" "1" "" "" ".NET"
-+.hy
-+.SH dotnet tool run
-+.PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 3.0 SDK and later versions
-+.SH NAME
-+.PP
-+\f[C]dotnet tool run\f[R] - Invokes a local tool.
-+.SH SYNOPSIS
-+.IP
-+.nf
-+\f[C]
-+dotnet tool run <COMMAND NAME>
-+
-+dotnet tool run -h|--help
-+\f[R]
-+.fi
-+.SH DESCRIPTION
-+.PP
-+The \f[C]dotnet tool run\f[R] command searches tool manifest files that are in scope for the current directory.
-+When it finds a reference to the specified tool, it runs the tool.
-+For more information, see Invoke a local tool.
-+.SS Arguments
-+.IP \[bu] 2
-+\f[B]\f[CB]COMMAND_NAME\f[B]\f[R]
-+.RS 2
-+.PP
-+The command name of the tool to run.
-+.RE
-+.SH OPTIONS
-+.IP \[bu] 2
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
-+.RS 2
-+.PP
-+Prints out a description of how to use the command.
-+.RE
-+.SS Example
-+.IP \[bu] 2
-+\f[B]\f[CB]dotnet tool run dotnetsay\f[B]\f[R]
-+.RS 2
-+.PP
-+Runs the \f[C]dotnetsay\f[R] local tool.
-+.RE
-+.SS See also
-+.IP \[bu] 2
-+\&.NET tools
-+.IP \[bu] 2
-+Tutorial: Install and use a .NET local tool using the .NET CLI
-diff --git a/documentation/manpages/sdk/dotnet-tool-search.1 b/documentation/manpages/sdk/dotnet-tool-search.1
-new file mode 100644
-index 0000000000..84647ad4de
---- /dev/null
-+++ b/documentation/manpages/sdk/dotnet-tool-search.1
-@@ -0,0 +1,122 @@
-+.\" Automatically generated by Pandoc 2.14.1
-+.\"
-+.TH "" "1" "" "" ".NET"
-+.hy
-+.SH dotnet tool search
-+.PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET 5.0 SDK and later versions
-+.SH NAME
-+.PP
-+\f[C]dotnet tool search\f[R] - Searches all .NET tools that are published to NuGet.
-+.SH SYNOPSIS
-+.IP
-+.nf
-+\f[C]
-+dotnet tool search [--detail] [--prerelease]
-+ [--skip <NUMBER>] [--take <NUMBER>] <SEARCH TERM>
-+
-+dotnet tool search -h|--help
-+\f[R]
-+.fi
-+.SH DESCRIPTION
-+.PP
-+The \f[C]dotnet tool search\f[R] command provides a way for you to search NuGet for tools that can be used as .NET global, tool-path, or local tools.
-+The command searches the tool names and metadata such as titles, descriptions, and tags.
-+.PP
-+The command uses the NuGet Search API.
-+It filters on \f[C]packageType=dotnettool\f[R] to select only .NET tool packages.
-+.SH OPTIONS
-+.IP \[bu] 2
-+\f[B]\f[CB]--detail\f[B]\f[R]
-+.RS 2
-+.PP
-+Shows detailed results from the query.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--prerelease\f[B]\f[R]
-+.RS 2
-+.PP
-+Includes pre-release packages.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--skip <NUMBER>\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies the number of query results to skip.
-+Used for pagination.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--take <NUMBER>\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies the number of query results to show.
-+Used for pagination.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
-+.RS 2
-+.PP
-+Prints out a description of how to use the command.
-+.RE
-+.SH EXAMPLES
-+.IP \[bu] 2
-+Search NuGet.org for .NET tools that have \[lq]format\[rq] in their package name or description:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet tool search format
-+\f[R]
-+.fi
-+.PP
-+The output looks like the following example:
-+.IP
-+.nf
-+\f[C]
-+Package ID Latest Version Authors Downloads Verified
-+---------------------------------------------------------------------------------------------------------------------------------------------------------------
-+dotnet-format 4.1.131201 Microsoft 496746
-+bsoa.generator 1.0.0 Microsoft 533
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Search NuGet.org for .NET tools that have \[lq]format\[rq] in their package name or metadata, show only the first result, and show a detailed view.
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet tool search format --take 1 --detail
-+\f[R]
-+.fi
-+.PP
-+The output looks like the following example:
-+.IP
-+.nf
-+\f[C]
-+----------------
-+dotnet-format
-+Latest Version: 4.1.131201
-+Authors: Microsoft
-+Tags:
-+Downloads: 496746
-+Verified: False
-+Description: Command line tool for formatting C# and Visual Basic code files based on .editorconfig settings.
-+Versions:
-+ 3.0.2 Downloads: 1973
-+ 3.0.4 Downloads: 9064
-+ 3.1.37601 Downloads: 114730
-+ 3.2.107702 Downloads: 13423
-+ 3.3.111304 Downloads: 131195
-+ 4.0.130203 Downloads: 78610
-+ 4.1.131201 Downloads: 145927
-+\f[R]
-+.fi
-+.RE
-+.SS See also
-+.IP \[bu] 2
-+\&.NET tools
-+.IP \[bu] 2
-+Tutorial: Install and use a .NET global tool using the .NET CLI
-+.IP \[bu] 2
-+Tutorial: Install and use a .NET local tool using the .NET CLI
-diff --git a/documentation/manpages/sdk/dotnet-tool-uninstall.1 b/documentation/manpages/sdk/dotnet-tool-uninstall.1
-index d2a1da44e1..9b2ac7bae1 100644
---- a/documentation/manpages/sdk/dotnet-tool-uninstall.1
-+++ b/documentation/manpages/sdk/dotnet-tool-uninstall.1
-@@ -1,62 +1,99 @@
--.\" Automatically generated by Pandoc 2.7.2
-+.\" Automatically generated by Pandoc 2.14.1
- .\"
--.TH "dotnet tool uninstall command" "1" "" "" ".NET Core"
-+.TH "" "1" "" "" ".NET"
- .hy
- .SH dotnet tool uninstall
- .PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.1 SDK and later versions
- .SH NAME
- .PP
--\f[C]dotnet tool uninstall\f[R] - Uninstalls the specified .NET Core Global Tool from your machine.
-+\f[C]dotnet tool uninstall\f[R] - Uninstalls the specified .NET tool from your machine.
- .SH SYNOPSIS
- .IP
- .nf
- \f[C]
--dotnet tool uninstall <PACKAGE_NAME> <-g|--global>
--dotnet tool uninstall <PACKAGE_NAME> <--tool-path>
--dotnet tool uninstall <-h|--help>
-+dotnet tool uninstall <PACKAGE_NAME> -g|--global
-+
-+dotnet tool uninstall <PACKAGE_NAME> --tool-path <PATH>
-+
-+dotnet tool uninstall <PACKAGE_NAME>
-+
-+dotnet tool uninstall -h|--help
- \f[R]
- .fi
- .SH DESCRIPTION
- .PP
--The \f[C]dotnet tool uninstall\f[R] command provides a way for you to uninstall .NET Core Global Tools from your machine.
--To use the command, you either have to specify that you want to remove a user-wide tool using the \f[C]--global\f[R] option or specify a path to where the tool is installed using the \f[C]--tool-path\f[R] option.
--.SS Arguments
-+The \f[C]dotnet tool uninstall\f[R] command provides a way for you to uninstall .NET tools from your machine.
-+To use the command, you specify one of the following options:
-+.IP \[bu] 2
-+To uninstall a global tool that was installed in the default location, use the \f[C]--global\f[R] option.
-+.IP \[bu] 2
-+To uninstall a global tool that was installed in a custom location, use the \f[C]--tool-path\f[R] option.
-+.IP \[bu] 2
-+To uninstall a local tool, omit the \f[C]--global\f[R] and \f[C]--tool-path\f[R] options.
- .PP
--\f[C]PACKAGE_NAME\f[R]
-+\f[B]Local tools are available starting with .NET Core SDK 3.0.\f[R]
-+.SS Arguments
-+.IP \[bu] 2
-+\f[B]\f[CB]PACKAGE_NAME\f[B]\f[R]
-+.RS 2
- .PP
--Name/ID of the NuGet package that contains the .NET Core Global Tool to uninstall.
-+Name/ID of the NuGet package that contains the .NET tool to uninstall.
- You can find the package name using the dotnet tool list command.
-+.RE
- .SH OPTIONS
--.PP
--\f[C]-g|--global\f[R]
-+.IP \[bu] 2
-+\f[B]\f[CB]-g|--global\f[B]\f[R]
-+.RS 2
- .PP
- Specifies that the tool to be removed is from a user-wide installation.
- Can\[cq]t be combined with the \f[C]--tool-path\f[R] option.
--If you don\[cq]t specify this option, you must specify the \f[C]--tool-path\f[R] option.
--.PP
--\f[C]-h|--help\f[R]
--.PP
--Prints out a short help for the command.
-+Omitting both \f[C]--global\f[R] and \f[C]--tool-path\f[R] specifies that the tool to be removed is a local tool.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]--tool-path <PATH>\f[R]
-+Prints out a description of how to use the command.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--tool-path <PATH>\f[B]\f[R]
-+.RS 2
- .PP
--Specifies the location where to uninstall the Global Tool.
-+Specifies the location where to uninstall the tool.
- PATH can be absolute or relative.
- Can\[cq]t be combined with the \f[C]--global\f[R] option.
--If you don\[cq]t specify this option, you must specify the \f[C]--global\f[R] option.
-+Omitting both \f[C]--global\f[R] and \f[C]--tool-path\f[R] specifies that the tool to be removed is a local tool.
-+.RE
- .SH EXAMPLES
-+.IP \[bu] 2
-+\f[B]\f[CB]dotnet tool uninstall -g dotnetsay\f[B]\f[R]
-+.RS 2
- .PP
--Uninstalls the dotnetsay Global Tool:
--.PP
--\f[C]dotnet tool uninstall -g dotnetsay\f[R]
--.PP
--Uninstalls the dotnetsay Global Tool from a specific Windows folder:
-+Uninstalls the dotnetsay (https://www.nuget.org/packages/dotnetsay/) global tool.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]dotnet tool uninstall dotnetsay --tool-path c:\[rs]global-tools\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]dotnet tool uninstall dotnetsay --tool-path c:\[rs]global-tools\f[R]
-+Uninstalls the dotnetsay (https://www.nuget.org/packages/dotnetsay/) global tool from a specific Windows directory.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]dotnet tool uninstall dotnetsay --tool-path \[ti]/bin\f[B]\f[R]
-+.RS 2
- .PP
--Uninstalls the dotnetsay Global Tool from a specific Linux/macOS folder:
-+Uninstalls the dotnetsay (https://www.nuget.org/packages/dotnetsay/) global tool from a specific Linux/macOS directory.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]dotnet tool uninstall dotnetsay\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]dotnet tool uninstall dotnetsay --tool-path \[ti]/bin\f[R]
-+Uninstalls the dotnetsay (https://www.nuget.org/packages/dotnetsay/) local tool from the current directory.
-+.RE
- .SS See also
- .IP \[bu] 2
--\&.NET Core Global Tools
-+\&.NET tools
-+.IP \[bu] 2
-+Tutorial: Install and use a .NET global tool using the .NET CLI
-+.IP \[bu] 2
-+Tutorial: Install and use a .NET local tool using the .NET CLI
-diff --git a/documentation/manpages/sdk/dotnet-tool-update.1 b/documentation/manpages/sdk/dotnet-tool-update.1
-index dc7e79611d..f8316eb8bb 100644
---- a/documentation/manpages/sdk/dotnet-tool-update.1
-+++ b/documentation/manpages/sdk/dotnet-tool-update.1
-@@ -1,80 +1,205 @@
--.\" Automatically generated by Pandoc 2.7.2
-+.\" Automatically generated by Pandoc 2.14.1
- .\"
--.TH "dotnet tool update command" "1" "" "" ".NET Core"
-+.TH "" "1" "" "" ".NET"
- .hy
- .SH dotnet tool update
- .PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.1 SDK and later versions
- .SH NAME
- .PP
--\f[C]dotnet tool update\f[R] - Updates the specified .NET Core Global Tool on your machine.
-+\f[C]dotnet tool update\f[R] - Updates the specified .NET tool on your machine.
- .SH SYNOPSIS
- .IP
- .nf
- \f[C]
--dotnet tool update <PACKAGE_NAME> <-g|--global> [--configfile] [--framework] [-v|--verbosity]
--dotnet tool update <PACKAGE_NAME> <--tool-path> [--configfile] [--framework] [-v|--verbosity]
--dotnet tool update <-h|--help>
-+dotnet tool update <PACKAGE_ID> -g|--global
-+ [--add-source <SOURCE>] [--configfile <FILE>]
-+ [--disable-parallel] [--framework <FRAMEWORK>]
-+ [--ignore-failed-sources] [--interactive] [--no-cache]
-+ [-v|--verbosity <LEVEL>] [--version <VERSION>]
-+
-+dotnet tool update <PACKAGE_ID> --tool-path <PATH>
-+ [--add-source <SOURCE>] [--configfile <FILE>]
-+ [--disable-parallel] [--framework <FRAMEWORK>]
-+ [--ignore-failed-sources] [--interactive] [--no-cache]
-+ [-v|--verbosity <LEVEL>] [--version <VERSION>]
-+
-+dotnet tool update <PACKAGE_ID> --local
-+ [--add-source <SOURCE>] [--configfile <FILE>]
-+ [--disable-parallel] [--framework <FRAMEWORK>]
-+ [--ignore-failed-sources] [--interactive] [--no-cache]
-+ [--tool-manifest <PATH>]
-+ [-v|--verbosity <LEVEL>] [--version <VERSION>]
-+
-+dotnet tool update -h|--help
- \f[R]
- .fi
- .SH DESCRIPTION
- .PP
--The \f[C]dotnet tool update\f[R] command provides a way for you to update .NET Core Global Tools on your machine to the latest stable version of the package.
-+The \f[C]dotnet tool update\f[R] command provides a way for you to update .NET tools on your machine to the latest stable version of the package.
- The command uninstalls and reinstalls a tool, effectively updating it.
--To use the command, you either have to specify that you want to update a tool from a user-wide installation using the \f[C]--global\f[R] option or specify a path to where the tool is installed using the \f[C]--tool-path\f[R] option.
--.SS Arguments
-+To use the command, you specify one of the following options:
-+.IP \[bu] 2
-+To update a global tool that was installed in the default location, use the \f[C]--global\f[R] option
-+.IP \[bu] 2
-+To update a global tool that was installed in a custom location, use the \f[C]--tool-path\f[R] option.
-+.IP \[bu] 2
-+To update a local tool, use the \f[C]--local\f[R] option.
- .PP
--\f[C]PACKAGE_NAME\f[R]
-+\f[B]Local tools are available starting with .NET Core SDK 3.0.\f[R]
-+.SS Arguments
-+.IP \[bu] 2
-+\f[B]\f[CB]PACKAGE_ID\f[B]\f[R]
-+.RS 2
- .PP
--Name/ID of the NuGet package that contains the .NET Core Global Tool to update.
-+Name/ID of the NuGet package that contains the .NET global tool to update.
- You can find the package name using the dotnet tool list command.
-+.RE
- .SH OPTIONS
--.PP
--\f[C]--add-source <SOURCE>\f[R]
-+.IP \[bu] 2
-+\f[B]\f[CB]--add-source <SOURCE>\f[B]\f[R]
-+.RS 2
- .PP
- Adds an additional NuGet package source to use during installation.
-+Feeds are accessed in parallel, not sequentially in some order of precedence.
-+If the same package and version is in multiple feeds, the fastest feed wins.
-+For more information, see What happens when a NuGet package is installed?.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
-+.RS 2
-+.PP
-+The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
-+If specified, only the settings from this file will be used.
-+If not specified, the hierarchy of configuration files from the current directory will be used.
-+For more information, see Common NuGet Configurations.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--disable-parallel\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]--configfile <FILE>\f[R]
--.PP
--The NuGet configuration (\f[I]nuget.config\f[R]) file to use.
--.PP
--\f[C]--framework <FRAMEWORK>\f[R]
-+Prevent restoring multiple projects in parallel.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--framework <FRAMEWORK>\f[B]\f[R]
-+.RS 2
- .PP
- Specifies the target framework to update the tool for.
--.PP
--\f[C]-g|--global\f[R]
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-g|--global\f[B]\f[R]
-+.RS 2
- .PP
- Specifies that the update is for a user-wide tool.
- Can\[cq]t be combined with the \f[C]--tool-path\f[R] option.
--If you don\[cq]t specify this option, you must specify the \f[C]--tool-path\f[R] option.
-+Omitting both \f[C]--global\f[R] and \f[C]--tool-path\f[R] specifies that the tool to be updated is a local tool.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
-+.RS 2
-+.PP
-+Prints out a description of how to use the command.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--ignore-failed-sources\f[B]\f[R]
-+.RS 2
-+.PP
-+Treat package source failures as warnings.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--interactive\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]-h|--help\f[R]
-+Allows the command to stop and wait for user input or action.
-+For example, to complete authentication.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--local\f[B]\f[R]
-+.RS 2
- .PP
--Prints out a short help for the command.
-+Update the tool and the local tool manifest.
-+Can\[cq]t be combined with the \f[C]--global\f[R] option or the \f[C]--tool-path\f[R] option.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-cache\f[B]\f[R]
-+.RS 2
-+.PP
-+Do not cache packages and HTTP requests.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--tool-manifest <PATH>\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]--tool-path <PATH>\f[R]
-+Path to the manifest file.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--tool-path <PATH>\f[B]\f[R]
-+.RS 2
- .PP
--Specifies the location where the Global Tool is installed.
-+Specifies the location where the global tool is installed.
- PATH can be absolute or relative.
- Can\[cq]t be combined with the \f[C]--global\f[R] option.
--If you don\[cq]t specify this option, you must specify the \f[C]--global\f[R] option.
--.PP
--\f[C]-v|--verbosity <LEVEL>\f[R]
-+Omitting both \f[C]--global\f[R] and \f[C]--tool-path\f[R] specifies that the tool to be updated is a local tool.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
-+.RS 2
- .PP
- Sets the verbosity level of the command.
- Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
-+For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--version <VERSION>\f[B]\f[R]
-+.RS 2
-+.PP
-+The version range of the tool package to update to.
-+This cannot be used to downgrade versions, you must \f[C]uninstall\f[R] newer versions first.
-+.RE
- .SH EXAMPLES
-+.IP \[bu] 2
-+\f[B]\f[CB]dotnet tool update -g dotnetsay\f[B]\f[R]
-+.RS 2
- .PP
--Updates the dotnetsay Global Tool:
-+Updates the dotnetsay (https://www.nuget.org/packages/dotnetsay/) global tool.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]dotnet tool update dotnetsay --tool-path c:\[rs]global-tools\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]dotnet tool update -g dotnetsay\f[R]
-+Updates the dotnetsay (https://www.nuget.org/packages/dotnetsay/) global tool located in a specific Windows directory.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]dotnet tool update dotnetsay --tool-path \[ti]/bin\f[B]\f[R]
-+.RS 2
- .PP
--Updates the dotnetsay Global Tool located on a specific Windows folder:
-+Updates the dotnetsay (https://www.nuget.org/packages/dotnetsay/) global tool located in a specific Linux/macOS directory.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]dotnet tool update dotnetsay\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]dotnet tool update dotnetsay --tool-path c:\[rs]global-tools\f[R]
-+Updates the dotnetsay (https://www.nuget.org/packages/dotnetsay/) local tool installed for the current directory.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]dotnet tool update -g dotnetsay --version 2.0.*\f[B]\f[R]
-+.RS 2
- .PP
--Updates the dotnetsay Global Tool located on a specific Linux/macOS folder:
-+Updates the dotnetsay (https://www.nuget.org/packages/dotnetsay/) global tool to the latest patch version, with a major version of \f[C]2\f[R], and a minor version of \f[C]0\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]dotnet tool update -g dotnetsay --version (2.0.*,2.1.4)\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]dotnet tool update dotnetsay --tool-path \[ti]/bin\f[R]
-+Updates the dotnetsay (https://www.nuget.org/packages/dotnetsay/) global tool to the lowest version within the specified range \f[C](> 2.0.0 && < 2.1.4)\f[R], version \f[C]2.1.0\f[R] would be installed.
-+For more information on semantic versioning ranges, see NuGet packaging version ranges.
-+.RE
- .SS See also
- .IP \[bu] 2
--\&.NET Core Global Tools
-+\&.NET tools
-+.IP \[bu] 2
-+Semantic versioning (https://semver.org)
-+.IP \[bu] 2
-+Tutorial: Install and use a .NET global tool using the .NET CLI
-+.IP \[bu] 2
-+Tutorial: Install and use a .NET local tool using the .NET CLI
-diff --git a/documentation/manpages/sdk/dotnet-vstest.1 b/documentation/manpages/sdk/dotnet-vstest.1
-index 0e61fa8643..565f487c47 100644
---- a/documentation/manpages/sdk/dotnet-vstest.1
-+++ b/documentation/manpages/sdk/dotnet-vstest.1
-@@ -1,97 +1,85 @@
--.\" Automatically generated by Pandoc 2.7.2
-+.\" Automatically generated by Pandoc 2.14.1
- .\"
--.TH "dotnet vstest command" "1" "" "" ".NET Core"
-+.TH "" "1" "" "" ".NET"
- .hy
- .SH dotnet vstest
- .PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.1 SDK and later versions
-+.RS
-+.PP
-+[!IMPORTANT] The \f[C]dotnet vstest\f[R] command is superseded by \f[C]dotnet test\f[R], which can now be used to run assemblies.
-+See \f[C]dotnet test\f[R].
-+.RE
- .SH NAME
- .PP
--\f[C]dotnet-vstest\f[R] - Runs tests from the specified files.
-+\f[C]dotnet-vstest\f[R] - Runs tests from the specified assemblies.
- .SH SYNOPSIS
--.SS .NET Core 2.1
--.IP
--.nf
--\f[C]
--dotnet vstest [<TEST_FILE_NAMES>] [--Settings|/Settings] [--Tests|/Tests] [--TestAdapterPath|/TestAdapterPath]
-- [--Platform|/Platform] [--Framework|/Framework] [--Parallel|/Parallel] [--TestCaseFilter|/TestCaseFilter] [--logger|/logger]
-- [-lt|--ListTests|/lt|/ListTests] [--ParentProcessId|/ParentProcessId] [--Port|/Port] [--Diag|/Diag] [--Blame|/Blame] [--InIsolation|/InIsolation]
-- [[--] <args>...]] [-?|--Help|/?|/Help]
--\f[R]
--.fi
--.SS .NET Core 2.0
--.IP
--.nf
--\f[C]
--dotnet vstest [<TEST_FILE_NAMES>] [--Settings|/Settings] [--Tests|/Tests] [--TestAdapterPath|/TestAdapterPath]
-- [--Platform|/Platform] [--Framework|/Framework] [--Parallel|/Parallel] [--TestCaseFilter|/TestCaseFilter] [--logger|/logger]
-- [-lt|--ListTests|/lt|/ListTests] [--ParentProcessId|/ParentProcessId] [--Port|/Port] [--Diag|/Diag] [[--] <args>...]] [-?|--Help|/?|/Help]
--\f[R]
--.fi
--.SS .NET Core 1.x
- .IP
- .nf
- \f[C]
--dotnet vstest [<TEST_FILE_NAMES>] [--Settings|/Settings] [--Tests|/Tests] [--TestAdapterPath|/TestAdapterPath]
-- [--Platform|/Platform] [--Framework|/Framework] [--Parallel|/Parallel] [--TestCaseFilter|/TestCaseFilter] [--logger|/logger]
-- [-lt|--ListTests|/lt|/ListTests] [--ParentProcessId|/ParentProcessId] [--Port|/Port] [--Diag|/Diag] [[--] <args>...]] [-?|--Help|/?|/Help]
-+dotnet vstest [<TEST_FILE_NAMES>] [--Blame] [--Diag <PATH_TO_LOG_FILE>]
-+ [--Framework <FRAMEWORK>] [--InIsolation] [-lt|--ListTests <FILE_NAME>]
-+ [--logger <LOGGER_URI/FRIENDLY_NAME>] [--Parallel]
-+ [--ParentProcessId <PROCESS_ID>] [--Platform] <PLATFORM_TYPE>
-+ [--Port <PORT>] [--ResultsDirectory<PATH>] [--Settings <SETTINGS_FILE>]
-+ [--TestAdapterPath <PATH>] [--TestCaseFilter <EXPRESSION>]
-+ [--Tests <TEST_NAMES>] [[--] <args>...]]
-+
-+dotnet vstest -?|--Help
- \f[R]
- .fi
--.PP
-- * * * * *
- .SH DESCRIPTION
- .PP
- The \f[C]dotnet-vstest\f[R] command runs the \f[C]VSTest.Console\f[R] command-line application to run automated unit tests.
- .SS Arguments
--.PP
--\f[C]TEST_FILE_NAMES\f[R]
-+.IP \[bu] 2
-+\f[B]\f[CB]TEST_FILE_NAMES\f[B]\f[R]
-+.RS 2
- .PP
- Run tests from the specified assemblies.
- Separate multiple test assembly names with spaces.
-+Wildcards are supported.
-+.RE
- .SH OPTIONS
--.SS .NET Core 2.1
--.PP
--\f[C]--Settings|/Settings:<Settings File>\f[R]
--.PP
--Settings to use when running tests.
--.PP
--\f[C]--Tests|/Tests:<Test Names>\f[R]
--.PP
--Run tests with names that match the provided values.
--Separate multiple values with commas.
--.PP
--\f[C]--TestAdapterPath|/TestAdapterPath\f[R]
--.PP
--Use custom test adapters from a given path (if any) in the test run.
--.PP
--\f[C]--Platform|/Platform:<Platform type>\f[R]
-+.IP \[bu] 2
-+\f[B]\f[CB]--Blame\f[B]\f[R]
-+.RS 2
- .PP
--Target platform architecture used for test execution.
--Valid values are \f[C]x86\f[R], \f[C]x64\f[R], and \f[C]ARM\f[R].
-+Runs the tests in blame mode.
-+This option is helpful in isolating the problematic tests causing test host to crash.
-+It creates an output file in the current directory as \f[I]Sequence.xml\f[R] that captures the order of tests execution before the crash.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--Diag <PATH_TO_LOG_FILE>\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]--Framework|/Framework:<Framework Version>\f[R]
-+Enables verbose logs for the test platform.
-+Logs are written to the provided file.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--Framework <FRAMEWORK>\f[B]\f[R]
-+.RS 2
- .PP
- Target .NET Framework version used for test execution.
- Examples of valid values are \f[C].NETFramework,Version=v4.6\f[R] or \f[C].NETCoreApp,Version=v1.0\f[R].
- Other supported values are \f[C]Framework40\f[R], \f[C]Framework45\f[R], \f[C]FrameworkCore10\f[R], and \f[C]FrameworkUap10\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--InIsolation\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]--Parallel|/Parallel\f[R]
--.PP
--Execute tests in parallel.
--By default, all available cores on the machine are available for use.
--Specify an explicit number of cores by setting the MaxCpuCount property under the RunConfiguration node in the runsettings file.
--.PP
--\f[C]--TestCaseFilter|/TestCaseFilter:<Expression>\f[R]
--.PP
--Run tests that match the given expression.
--\f[C]<Expression>\f[R] is of the format \f[C]<property>Operator<value>[|&<Expression>]\f[R], where Operator is one of \f[C]=\f[R], \f[C]!=\f[R], or \f[C]\[ti]\f[R].
--Operator \f[C]\[ti]\f[R] has `contains' semantics and is applicable for string properties like \f[C]DisplayName\f[R].
--Parenthesis \f[C]()\f[R] are used to group sub-expressions.
--.PP
--\f[C]-?|--Help|/?|/Help\f[R]
--.PP
--Prints out a short help for the command.
-+Runs the tests in an isolated process.
-+This makes \f[I]vstest.console.exe\f[R] process less likely to be stopped on an error in the tests, but tests may run slower.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-lt|--ListTests <FILE_NAME>\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]--logger|/logger:<Logger Uri/FriendlyName>\f[R]
-+Lists all discovered tests from the given test container.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--logger <LOGGER_URI/FRIENDLY_NAME>\f[B]\f[R]
-+.RS 2
- .PP
- Specify a logger for test results.
- .IP \[bu] 2
-@@ -122,260 +110,130 @@ If \f[C]LogFileName\f[R] isn\[cq]t provided, a unique file name is created to ho
- \f[R]
- .fi
- .RE
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--Parallel\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]-lt|--ListTests|/lt|/ListTests:<File Name>\f[R]
--.PP
--Lists all discovered tests from the given test container.
--.PP
--\f[C]--ParentProcessId|/ParentProcessId:<ParentProcessId>\f[R]
-+Run tests in parallel.
-+By default, all available cores on the machine are available for use.
-+Specify an explicit number of cores by setting the \f[C]MaxCpuCount\f[R] property under the \f[C]RunConfiguration\f[R] node in the \f[I]runsettings\f[R] file.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--ParentProcessId <PROCESS_ID>\f[B]\f[R]
-+.RS 2
- .PP
- Process ID of the parent process responsible for launching the current process.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--Platform <PLATFORM_TYPE>\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]--Port|/Port:<Port>\f[R]
-+Target platform architecture used for test execution.
-+Valid values are \f[C]x86\f[R], \f[C]x64\f[R], and \f[C]ARM\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--Port <PORT>\f[B]\f[R]
-+.RS 2
- .PP
- Specifies the port for the socket connection and receiving the event messages.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--ResultsDirectory:<PATH>\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]--Diag|/Diag:<Path to log file>\f[R]
--.PP
--Enables verbose logs for the test platform.
--Logs are written to the provided file.
--.PP
--\f[C]--Blame|/Blame\f[R]
--.PP
--Runs the tests in blame mode.
--This option is helpful in isolating the problematic tests causing test host to crash.
--It creates an output file in the current directory as \f[I]Sequence.xml\f[R] that captures the order of tests execution before the crash.
--.PP
--\f[C]--InIsolation|/InIsolation\f[R]
--.PP
--Runs the tests in an isolated process.
--This makes \f[I]vstest.console.exe\f[R] process less likely to be stopped on an error in the tests, but tests may run slower.
--.PP
--\f[C]\[at]<file>\f[R]
--.PP
--Reads response file for more options.
--.PP
--\f[C]args\f[R]
--.PP
--Specifies extra arguments to pass to the adapter.
--Arguments are specified as name-value pairs of the form \f[C]<n>=<v>\f[R], where \f[C]<n>\f[R] is the argument name and \f[C]<v>\f[R] is the argument value.
--Use a space to separate multiple arguments.
--.SS .NET Core 2.0
--.PP
--\f[C]--Settings|/Settings:<Settings File>\f[R]
-+Test results directory will be created in specified path if not exists.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--Settings <SETTINGS_FILE>\f[B]\f[R]
-+.RS 2
- .PP
- Settings to use when running tests.
--.PP
--\f[C]--Tests|/Tests:<Test Names>\f[R]
--.PP
--Run tests with names that match the provided values.
--Separate multiple values with commas.
--.PP
--\f[C]--TestAdapterPath|/TestAdapterPath\f[R]
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--TestAdapterPath <PATH>\f[B]\f[R]
-+.RS 2
- .PP
- Use custom test adapters from a given path (if any) in the test run.
--.PP
--\f[C]--Platform|/Platform:<Platform type>\f[R]
--.PP
--Target platform architecture used for test execution.
--Valid values are \f[C]x86\f[R], \f[C]x64\f[R], and \f[C]ARM\f[R].
--.PP
--\f[C]--Framework|/Framework:<Framework Version>\f[R]
--.PP
--Target .NET Framework version used for test execution.
--Examples of valid values are \f[C].NETFramework,Version=v4.6\f[R] or \f[C].NETCoreApp,Version=v1.0\f[R].
--Other supported values are \f[C]Framework40\f[R], \f[C]Framework45\f[R], and \f[C]FrameworkCore10\f[R].
--.PP
--\f[C]--Parallel|/Parallel\f[R]
--.PP
--Execute tests in parallel.
--By default, all available cores on the machine are available for use.
--Specify an explicit number of cores by setting the MaxCpuCount property under the RunConfiguration node in the runsettings file.
--.PP
--\f[C]--TestCaseFilter|/TestCaseFilter:<Expression>\f[R]
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--TestCaseFilter <EXPRESSION>\f[B]\f[R]
-+.RS 2
- .PP
- Run tests that match the given expression.
--\f[C]<Expression>\f[R] is of the format \f[C]<property>Operator<value>[|&<Expression>]\f[R], where Operator is one of \f[C]=\f[R], \f[C]!=\f[R], or \f[C]\[ti]\f[R].
-+\f[C]<EXPRESSION>\f[R] is of the format \f[C]<property>Operator<value>[|&<EXPRESSION>]\f[R], where Operator is one of \f[C]=\f[R], \f[C]!=\f[R], or \f[C]\[ti]\f[R].
- Operator \f[C]\[ti]\f[R] has `contains' semantics and is applicable for string properties like \f[C]DisplayName\f[R].
--Parenthesis \f[C]()\f[R] are used to group sub-expressions.
-+Parentheses \f[C]()\f[R] are used to group subexpressions.
-+For more information, see TestCase filter (https://github.com/Microsoft/vstest-docs/blob/master/docs/filter.md).
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--Tests <TEST_NAMES>\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]-?|--Help|/?|/Help\f[R]
-+Run tests with names that match the provided values.
-+Separate multiple values with commas.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-?|--Help\f[B]\f[R]
-+.RS 2
- .PP
- Prints out a short help for the command.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]\[at]<file>\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]--logger|/logger:<Logger Uri/FriendlyName>\f[R]
--.PP
--Specify a logger for test results.
-+Reads response file for more options.
-+.RE
- .IP \[bu] 2
--To publish test results to Team Foundation Server, use the \f[C]TfsPublisher\f[R] logger provider:
-+\f[B]\f[CB]args\f[B]\f[R]
- .RS 2
-+.PP
-+Specifies extra arguments to pass to the adapter.
-+Arguments are specified as name-value pairs of the form \f[C]<n>=<v>\f[R], where \f[C]<n>\f[R] is the argument name and \f[C]<v>\f[R] is the argument value.
-+Use a space to separate multiple arguments.
-+.RE
-+.SH EXAMPLES
-+.PP
-+Run tests in \f[I]mytestproject.dll\f[R]:
- .IP
- .nf
- \f[C]
--/logger:TfsPublisher;
-- Collection=<team project collection url>;
-- BuildName=<build name>;
-- TeamProject=<team project name>
-- [;Platform=<Defaults to \[dq]Any CPU\[dq]>]
-- [;Flavor=<Defaults to \[dq]Debug\[dq]>]
-- [;RunTitle=<title>]
-+dotnet vstest mytestproject.dll
- \f[R]
- .fi
--.RE
--.IP \[bu] 2
--To log results to a Visual Studio Test Results File (TRX), use the \f[C]trx\f[R] logger provider.
--This switch creates a file in the test results directory with given log file name.
--If \f[C]LogFileName\f[R] isn\[cq]t provided, a unique file name is created to hold the test results.
--.RS 2
-+.PP
-+Run tests in \f[I]mytestproject.dll\f[R], exporting to custom folder with custom name:
- .IP
- .nf
- \f[C]
--/logger:trx [;LogFileName=<Defaults to unique file name>]
-+dotnet vstest mytestproject.dll --logger:\[dq]trx;LogFileName=custom_file_name.trx\[dq] --ResultsDirectory:custom/file/path
- \f[R]
- .fi
--.RE
--.PP
--\f[C]-lt|--ListTests|/lt|/ListTests:<File Name>\f[R]
--.PP
--Lists all discovered tests from the given test container.
--.PP
--\f[C]--ParentProcessId|/ParentProcessId:<ParentProcessId>\f[R]
--.PP
--Process ID of the parent process responsible for launching the current process.
--.PP
--\f[C]--Port|/Port:<Port>\f[R]
--.PP
--Specifies the port for the socket connection and receiving the event messages.
--.PP
--\f[C]--Diag|/Diag:<Path to log file>\f[R]
--.PP
--Enables verbose logs for the test platform.
--Logs are written to the provided file.
--.PP
--\f[C]args\f[R]
--.PP
--Specifies extra arguments to pass to the adapter.
--Arguments are specified as name-value pairs of the form \f[C]<n>=<v>\f[R], where \f[C]<n>\f[R] is the argument name and \f[C]<v>\f[R] is the argument value.
--Use a space to separate multiple arguments.
--.SS .NET Core 1.x
--.PP
--\f[C]--Settings|/Settings:<Settings File>\f[R]
--.PP
--Settings to use when running tests.
--.PP
--\f[C]--Tests|/Tests:<Test Names>\f[R]
--.PP
--Run tests with names that match the provided values.
--Separate multiple values with commas.
--.PP
--\f[C]--TestAdapterPath|/TestAdapterPath\f[R]
--.PP
--Use custom test adapters from a given path (if any) in the test run.
--.PP
--\f[C]--Platform|/Platform:<Platform type>\f[R]
--.PP
--Target platform architecture used for test execution.
--Valid values are \f[C]x86\f[R], \f[C]x64\f[R], and \f[C]ARM\f[R].
--.PP
--\f[C]--Framework|/Framework:<Framework Version>\f[R]
--.PP
--Target .NET Framework version used for test execution.
--Examples of valid values are \f[C].NETFramework,Version=v4.6\f[R] or \f[C].NETCoreApp,Version=v1.0\f[R].
--Other supported values are \f[C]Framework40\f[R], \f[C]Framework45\f[R], and \f[C]FrameworkCore10\f[R].
- .PP
--\f[C]--Parallel|/Parallel\f[R]
--.PP
--Execute tests in parallel.
--By default, all available cores on the machine are available for use.
--Specify an explicit number of cores by setting the MaxCpuCount property under the RunConfiguration node in the runsettings file.
--.PP
--\f[C]--TestCaseFilter|/TestCaseFilter:<Expression>\f[R]
--.PP
--Run tests that match the given expression.
--\f[C]<Expression>\f[R] is of the format \f[C]<property>Operator<value>[|&<Expression>]\f[R], where Operator is one of \f[C]=\f[R], \f[C]!=\f[R], or \f[C]\[ti]\f[R].
--Operator \f[C]\[ti]\f[R] has `contains' semantics and is applicable for string properties like \f[C]DisplayName\f[R].
--Parenthesis \f[C]()\f[R] are used to group sub-expressions.
--.PP
--\f[C]-?|--Help|/?|/Help\f[R]
--.PP
--Prints out a short help for the command.
--.PP
--\f[C]--logger|/logger:<Logger Uri/FriendlyName>\f[R]
--.PP
--Specify a logger for test results.
--.IP \[bu] 2
--To publish test results to Team Foundation Server, use the \f[C]TfsPublisher\f[R] logger provider:
--.RS 2
-+Run tests in \f[I]mytestproject.dll\f[R] and \f[I]myothertestproject.exe\f[R]:
- .IP
- .nf
- \f[C]
--/logger:TfsPublisher;
-- Collection=<team project collection url>;
-- BuildName=<build name>;
-- TeamProject=<team project name>
-- [;Platform=<Defaults to \[dq]Any CPU\[dq]>]
-- [;Flavor=<Defaults to \[dq]Debug\[dq]>]
-- [;RunTitle=<title>]
-+dotnet vstest mytestproject.dll myothertestproject.exe
- \f[R]
- .fi
--.RE
--.IP \[bu] 2
--To log results to a Visual Studio Test Results File (TRX), use the \f[C]trx\f[R] logger provider.
--This switch creates a file in the test results directory with given log file name.
--If \f[C]LogFileName\f[R] isn\[cq]t provided, a unique file name is created to hold the test results.
--.RS 2
-+.PP
-+Run \f[C]TestMethod1\f[R] tests:
- .IP
- .nf
- \f[C]
--/logger:trx [;LogFileName=<Defaults to unique file name>]
-+dotnet vstest /Tests:TestMethod1
- \f[R]
- .fi
--.RE
--.PP
--\f[C]-lt|--ListTests|/lt|/ListTests:<File Name>\f[R]
--.PP
--Lists all discovered tests from the given test container.
--.PP
--\f[C]--ParentProcessId|/ParentProcessId:<ParentProcessId>\f[R]
--.PP
--Process ID of the parent process responsible for launching the current process.
--.PP
--\f[C]--Port|/Port:<Port>\f[R]
--.PP
--Specifies the port for the socket connection and receiving the event messages.
--.PP
--\f[C]--Diag|/Diag:<Path to log file>\f[R]
--.PP
--Enables verbose logs for the test platform.
--Logs are written to the provided file.
--.PP
--\f[C]args\f[R]
--.PP
--Specifies extra arguments to pass to the adapter.
--Arguments are specified as name-value pairs of the form \f[C]<n>=<v>\f[R], where \f[C]<n>\f[R] is the argument name and \f[C]<v>\f[R] is the argument value.
--Use a space to separate multiple arguments.
--.PP
-- * * * * *
--.SH EXAMPLES
--.PP
--Run tests in \f[C]mytestproject.dll\f[R]:
--.PP
--\f[C]dotnet vstest mytestproject.dll\f[R]
--.PP
--Run tests in \f[C]mytestproject.dll\f[R], exporting to custom folder with custom name:
--.PP
--\f[C]dotnet vstest mytestproject.dll --logger:\[dq]trx;LogFileName=custom_file_name.trx\[dq] --ResultsDirectory:custom/file/path\f[R]
--.PP
--Run tests in \f[C]mytestproject.dll\f[R] and \f[C]myothertestproject.exe\f[R]:
--.PP
--\f[C]dotnet vstest mytestproject.dll myothertestproject.exe\f[R]
--.PP
--Run \f[C]TestMethod1\f[R] tests:
--.PP
--\f[C]dotnet vstest /Tests:TestMethod1\f[R]
- .PP
- Run \f[C]TestMethod1\f[R] and \f[C]TestMethod2\f[R] tests:
--.PP
--\f[C]dotnet vstest /Tests:TestMethod1,TestMethod2\f[R]
--.SH AUTHORS
--mairaw.
-+.IP
-+.nf
-+\f[C]
-+dotnet vstest /Tests:TestMethod1,TestMethod2
-+\f[R]
-+.fi
-+.SS See also
-+.IP \[bu] 2
-+VSTest.Console.exe command-line options
-diff --git a/documentation/manpages/sdk/dotnet-workload-install.1 b/documentation/manpages/sdk/dotnet-workload-install.1
-new file mode 100644
-index 0000000000..faa1b06aff
---- /dev/null
-+++ b/documentation/manpages/sdk/dotnet-workload-install.1
-@@ -0,0 +1,196 @@
-+.\" Automatically generated by Pandoc 2.14.1
-+.\"
-+.TH "" "1" "" "" ".NET"
-+.hy
-+.SH dotnet workload install
-+.PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET 6 Preview SDK and later versions
-+.SH NAME
-+.PP
-+\f[C]dotnet workload install\f[R] - Installs optional workloads.
-+.SH SYNOPSIS
-+.IP
-+.nf
-+\f[C]
-+dotnet workload install <WORKLOAD_ID>...
-+ [--configfile <FILE>] [--disable-parallel]
-+ [--ignore-failed-sources] [--include-previews] [--interactive]
-+ [--no-cache] [--skip-manifest-update]
-+ [--source <SOURCE>] [--temp-dir <PATH>] [-v|--verbosity <LEVEL>]
-+
-+dotnet workload install -?|-h|--help
-+\f[R]
-+.fi
-+.SH DESCRIPTION
-+.PP
-+The \f[C]dotnet workload install\f[R] command installs one or more \f[I]optional workloads\f[R].
-+Optional workloads can be installed on top of the .NET SDK to provide support for various application types, such as .NET MAUI and Blazor WebAssembly AOT (https://devblogs.microsoft.com/aspnet/asp-net-core-updates-in-net-6-previ...).
-+.PP
-+Use dotnet workload search to learn what workloads are available to install.
-+.SS When to run elevated
-+.PP
-+For macOS and Linux SDK installations that are installed to a protected directory, the command needs to run elevated (use the \f[C]sudo\f[R] command).
-+On Windows, the command doesn\[cq]t need to run elevated even if the SDK is installed to the \f[I]Program Files\f[R] directory.
-+For Windows, the command uses MSI installers for that location.
-+.SS Results vary by SDK version
-+.PP
-+The \f[C]dotnet workload\f[R] commands operate in the context of specific SDK versions.
-+Suppose you have both .NET 6.0.100 SDK and .NET 6.0.200 SDK installed.
-+The \f[C]dotnet workload\f[R] commands will give different results depending on which SDK version you select.
-+This behavior applies to major and minor version and feature band differences, not to patch version differences.
-+For example, .NET SDK 6.0.101 and 6.0.102 give the same results, whereas 6.0.100 and 6.0.200 give different results.
-+You can specify the SDK version by using the \f[I]global.json\f[R] file or the \f[C]--sdk-version\f[R] option of the \f[C]dotnet workload\f[R] commands.
-+.SS Advertising manifests
-+.PP
-+The names and versions of the assets that a workload installation requires are maintained in \f[I]manifests\f[R].
-+By default, the \f[C]dotnet workload install\f[R] command downloads the latest available manifests before it installs a workload.
-+The local copy of a manifest then provides the information needed to find and download the assets for a workload.
-+.PP
-+The \f[C]dotnet workload list\f[R] command compares the versions of installed workloads with the currently available versions.
-+When it finds that a version newer than the installed version is available, it advertises that fact in the command output.
-+These newer-version notifications in \f[C]dotnet workload list\f[R] are available starting in .NET 6 Preview 7.
-+.PP
-+To enable these notifications, the latest available versions of the manifests are downloaded and stored as \f[I]advertising manifests\f[R].
-+These downloads happen asynchronously in the background when any of the following commands are run.
-+.IP \[bu] 2
-+dotnet build
-+.IP \[bu] 2
-+dotnet pack
-+.IP \[bu] 2
-+dotnet publish
-+.IP \[bu] 2
-+dotnet restore
-+.IP \[bu] 2
-+dotnet run
-+.IP \[bu] 2
-+dotnet test
-+.PP
-+If a command finishes before the manifest download finishes, the download is stopped.
-+The download is tried again the next time one of these commands is run.
-+You can set environment variables to disable these background downloads or control their frequency.
-+By default, they don\[cq]t happen more than once a day.
-+.PP
-+You can prevent the \f[C]dotnet workload install\f[R] command from doing manifest downloads by using the \f[C]--skip-manifest-update\f[R] option.
-+.PP
-+The \f[C]dotnet workload update\f[R] command also downloads advertising manifests.
-+The downloads are required to learn if an update is available, so there is no option to prevent them from running.
-+However, you can use the \f[C]--advertising-manifests-only\f[R] option to skip workload updates and only do the manifest downloads.
-+This option is available starting in .NET 6 Preview 7.
-+.SS Arguments
-+.IP \[bu] 2
-+\f[B]\f[CB]WORKLOAD_ID\f[B]\&...\f[R]
-+.RS 2
-+.PP
-+The workload ID or multiple IDs to install.
-+Use dotnet workload search to learn what workloads are available.
-+.RE
-+.SH OPTIONS
-+.IP \[bu] 2
-+\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
-+.RS 2
-+.PP
-+The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
-+If specified, only the settings from this file will be used.
-+If not specified, the hierarchy of configuration files from the current directory will be used.
-+For more information, see Common NuGet Configurations.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--disable-parallel\f[B]\f[R]
-+.RS 2
-+.PP
-+Prevents restoring multiple projects in parallel.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
-+.RS 2
-+.PP
-+Prints out a description of how to use the command.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--ignore-failed-sources\f[B]\f[R]
-+.RS 2
-+.PP
-+Treats package source failures as warnings.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--include-previews\f[B]\f[R]
-+.RS 2
-+.PP
-+Allows prerelease workload manifests.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--interactive\f[B]\f[R]
-+.RS 2
-+.PP
-+Allows the command to stop and wait for user input or action.
-+For example, to complete authentication.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-cache\f[B]\f[R]
-+.RS 2
-+.PP
-+Prevents caching of packages and http requests.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--skip-manifest-update\f[B]\f[R]
-+.RS 2
-+.PP
-+Skip updating the workload manifests.
-+The workload manifests define what assets and versions need to be installed for each workload.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-s|--source <SOURCE>\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies the URI of the NuGet package source to use.
-+This setting overrides all of the sources specified in the \f[I]nuget.config\f[R] files.
-+Multiple sources can be provided by specifying this option multiple times.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--temp-dir <PATH>\f[B]\f[R]
-+.RS 2
-+.PP
-+Specify the temporary directory used to download and extract NuGet packages (must be secure).
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
-+.RS 2
-+.PP
-+Sets the verbosity level of the command.
-+Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
-+The default is \f[C]minimal\f[R].
-+If you specify specify \f[C]detailed\f[R] or \f[C]diagnostic\f[R] verbosity, the command displays information about the Nuget packages that it downloads.
-+.RE
-+.SH EXAMPLES
-+.IP \[bu] 2
-+Install the \f[C]maui\f[R] workload:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet workload install maui
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Install the \f[C]maui-android\f[R] and \f[C]maui-ios\f[R] workloads:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet workload install maui-android maui-ios
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Download assets needed for the \f[C]maui\f[R] workload to a cache located in the \f[I]workload-cache\f[R] directory under the current directory.
-+Then install it from the same cache location:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet workload install maui --download-to-cache ./workload-cache
-+dotnet workload install maui --from-cache ./workload-cache
-+\f[R]
-+.fi
-+.RE
-diff --git a/documentation/manpages/sdk/dotnet-workload-list.1 b/documentation/manpages/sdk/dotnet-workload-list.1
-new file mode 100644
-index 0000000000..07be8927c6
---- /dev/null
-+++ b/documentation/manpages/sdk/dotnet-workload-list.1
-@@ -0,0 +1,51 @@
-+.\" Automatically generated by Pandoc 2.14.1
-+.\"
-+.TH "" "1" "" "" ".NET"
-+.hy
-+.SH dotnet workload list
-+.PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET 6 Preview SDK and later versions
-+.SH NAME
-+.PP
-+\f[C]dotnet workload list\f[R] - Lists installed workloads.
-+.SH SYNOPSIS
-+.IP
-+.nf
-+\f[C]
-+dotnet workload list [-v|--verbosity <LEVEL>]
-+
-+dotnet workload list [-?|-h|--help]
-+\f[R]
-+.fi
-+.SH DESCRIPTION
-+.PP
-+The \f[C]dotnet workload list\f[R] command lists all installed workloads.
-+.PP
-+For more information about the \f[C]dotnet workload\f[R] commands, see the dotnet workload install command.
-+.SH OPTIONS
-+.IP \[bu] 2
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
-+.RS 2
-+.PP
-+Prints out a description of how to use the command.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
-+.RS 2
-+.PP
-+Sets the verbosity level of the command.
-+Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
-+The default is \f[C]minimal\f[R].
-+For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
-+.RE
-+.SH EXAMPLES
-+.IP \[bu] 2
-+List the installed workloads:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet workload list
-+\f[R]
-+.fi
-+.RE
-diff --git a/documentation/manpages/sdk/dotnet-workload-repair.1 b/documentation/manpages/sdk/dotnet-workload-repair.1
-new file mode 100644
-index 0000000000..40f22f8a2b
---- /dev/null
-+++ b/documentation/manpages/sdk/dotnet-workload-repair.1
-@@ -0,0 +1,118 @@
-+.\" Automatically generated by Pandoc 2.14.1
-+.\"
-+.TH "" "1" "" "" ".NET"
-+.hy
-+.SH dotnet workload repair
-+.PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET 6 Preview SDK and later versions
-+.SH NAME
-+.PP
-+\f[C]dotnet workload repair\f[R] - Repairs workloads installations.
-+.SH SYNOPSIS
-+.IP
-+.nf
-+\f[C]
-+dotnet workload repair
-+ [--configfile] [--disable-parallel] [--ignore-failed-sources]
-+ [--interactive] [--no-cache]
-+ [-s|--source <SOURCE>] [--temp-dir <PATH>]
-+ [-v|--verbosity <LEVEL>]
-+
-+dotnet workload repair -?|-h|--help
-+\f[R]
-+.fi
-+.SH DESCRIPTION
-+.PP
-+The \f[C]dotnet workload repair\f[R] command reinstalls all installed workloads.
-+Workloads are made up of multiple workload packs and it\[cq]s possible to get into a state where some installed successfully but others didn\[cq]t.
-+For example, a \f[C]dotnet workload install\f[R] command might not finish installing because of a dropped internet connection.
-+.PP
-+For more information about the \f[C]dotnet workload\f[R] commands, see the dotnet workload install command.
-+.SS Arguments
-+.IP \[bu] 2
-+\f[B]\f[CB]WORKLOAD_ID\f[B]\f[R]
-+.RS 2
-+.PP
-+The workload ID of the workload to repair.
-+.RE
-+.SH OPTIONS
-+.IP \[bu] 2
-+\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
-+.RS 2
-+.PP
-+The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
-+If specified, only the settings from this file will be used.
-+If not specified, the hierarchy of configuration files from the current directory will be used.
-+For more information, see Common NuGet Configurations.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--disable-parallel\f[B]\f[R]
-+.RS 2
-+.PP
-+Prevents restoring multiple projects in parallel.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
-+.RS 2
-+.PP
-+Prints out a description of how to use the command.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--ignore-failed-sources\f[B]\f[R]
-+.RS 2
-+.PP
-+Treats package source failures as warnings.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--include-previews\f[B]\f[R]
-+.RS 2
-+.PP
-+Allows prerelease workload manifests.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--interactive\f[B]\f[R]
-+.RS 2
-+.PP
-+Allows the command to stop and wait for user input or action.
-+For example, to complete authentication.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-cache\f[B]\f[R]
-+.RS 2
-+.PP
-+Prevents caching of packages and http requests.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-s|--source <SOURCE>\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies the URI of the NuGet package source to use.
-+This setting overrides all of the sources specified in the \f[I]nuget.config\f[R] files.
-+Multiple sources can be provided by specifying this option multiple times.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--temp-dir <PATH>\f[B]\f[R]
-+.RS 2
-+.PP
-+Specify the temporary directory used to download and extract NuGet packages (must be secure).
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
-+.RS 2
-+.PP
-+Sets the verbosity level of the command.
-+Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
-+The default is \f[C]minimal\f[R].
-+For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
-+.RE
-+.SH EXAMPLES
-+.IP \[bu] 2
-+Repair all installed workloads:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet workload repair
-+\f[R]
-+.fi
-+.RE
-diff --git a/documentation/manpages/sdk/dotnet-workload-restore.1 b/documentation/manpages/sdk/dotnet-workload-restore.1
-new file mode 100644
-index 0000000000..0281407a5c
---- /dev/null
-+++ b/documentation/manpages/sdk/dotnet-workload-restore.1
-@@ -0,0 +1,124 @@
-+.\" Automatically generated by Pandoc 2.14.1
-+.\"
-+.TH "" "1" "" "" ".NET"
-+.hy
-+.SH dotnet workload restore
-+.PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET 6 Preview SDK and later versions
-+.SH NAME
-+.PP
-+\f[C]dotnet workload restore\f[R] - Installs workloads needed for a project or a solution.
-+.SH SYNOPSIS
-+.IP
-+.nf
-+\f[C]
-+dotnet workload restore [<PROJECT | SOLUTION>]
-+ [--configfile <FILE>] [--disable-parallel]
-+ [--ignore-failed-sources] [--include-previews] [--interactive]
-+ [--no-cache] [--skip-manifest-update]
-+ [-s|--source <SOURCE>] [--temp-dir <PATH>] [-v|--verbosity <LEVEL>]
-+
-+dotnet workload restore -?|-h|--help
-+\f[R]
-+.fi
-+.SH DESCRIPTION
-+.PP
-+The \f[C]dotnet workload restore\f[R] command analyzes a project or solution to determine which workloads it needs, then installs any workloads that are missing.
-+.PP
-+For more information about the \f[C]dotnet workload\f[R] commands, see the dotnet workload install command.
-+.SS Arguments
-+.IP \[bu] 2
-+\f[B]\f[CB]PROJECT | SOLUTION\f[B]\f[R]
-+.RS 2
-+.PP
-+The project or solution file to install workloads for.
-+If a file is not specified, the command searches the current directory for one.
-+.RE
-+.SH OPTIONS
-+.IP \[bu] 2
-+\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
-+.RS 2
-+.PP
-+The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
-+If specified, only the settings from this file will be used.
-+If not specified, the hierarchy of configuration files from the current directory will be used.
-+For more information, see Common NuGet Configurations.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--disable-parallel\f[B]\f[R]
-+.RS 2
-+.PP
-+Prevents restoring multiple projects in parallel.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
-+.RS 2
-+.PP
-+Prints out a description of how to use the command.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--ignore-failed-sources\f[B]\f[R]
-+.RS 2
-+.PP
-+Treats package source failures as warnings.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--include-previews\f[B]\f[R]
-+.RS 2
-+.PP
-+Allows prerelease workload manifests.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--interactive\f[B]\f[R]
-+.RS 2
-+.PP
-+Allows the command to stop and wait for user input or action.
-+For example, to complete authentication.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-cache\f[B]\f[R]
-+.RS 2
-+.PP
-+Prevents caching of packages and http requests.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--skip-manifest-update\f[B]\f[R]
-+.RS 2
-+.PP
-+Skip updating the workload manifests.
-+The workload manifests define what assets and versions need to be installed for each workload.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-s|--source <SOURCE>\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies the URI of the NuGet package source to use.
-+This setting overrides all of the sources specified in the \f[I]nuget.config\f[R] files.
-+Multiple sources can be provided by specifying this option multiple times.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--temp-dir <PATH>\f[B]\f[R]
-+.RS 2
-+.PP
-+Specify the temporary directory used to download and extract NuGet packages (must be secure).
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
-+.RS 2
-+.PP
-+Sets the verbosity level of the command.
-+Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
-+The default is \f[C]minimal\f[R].
-+For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
-+.RE
-+.SS Example
-+.IP \[bu] 2
-+Restore workloads needed by MyApp.csproj:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet workload restore MyApp.csproj
-+\f[R]
-+.fi
-+.RE
-diff --git a/documentation/manpages/sdk/dotnet-workload-search.1 b/documentation/manpages/sdk/dotnet-workload-search.1
-new file mode 100644
-index 0000000000..ff9ffc840d
---- /dev/null
-+++ b/documentation/manpages/sdk/dotnet-workload-search.1
-@@ -0,0 +1,70 @@
-+.\" Automatically generated by Pandoc 2.14.1
-+.\"
-+.TH "" "1" "" "" ".NET"
-+.hy
-+.SH dotnet workload search
-+.PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET 6 Preview SDK and later versions
-+.SH NAME
-+.PP
-+\f[C]dotnet workload search\f[R] - Searches for optional workloads.
-+.SH SYNOPSIS
-+.IP
-+.nf
-+\f[C]
-+dotnet workload search [<SEARCH_STRING>] [-v|--verbosity <LEVEL>]
-+
-+dotnet workload search -?|-h|--help
-+\f[R]
-+.fi
-+.SH DESCRIPTION
-+.PP
-+The \f[C]dotnet workload search\f[R] command lists available workloads.
-+You can filter the list by specifying all or part of the workload ID you\[cq]re looking for.
-+.PP
-+For more information about the \f[C]dotnet workload\f[R] commands, see the dotnet workload install command.
-+.SS Arguments
-+.IP \[bu] 2
-+\f[B]\f[CB]SEARCH_STRING\f[B]\f[R]
-+.RS 2
-+.PP
-+The workload ID to search for, or part of it.
-+For example, if you specify \f[C]maui\f[R], the command lists all of the workload IDs that have \f[C]maui\f[R] in their workload ID.
-+.RE
-+.SH OPTIONS
-+.IP \[bu] 2
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
-+.RS 2
-+.PP
-+Prints out a description of how to use the command.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
-+.RS 2
-+.PP
-+Sets the verbosity level of the command.
-+Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
-+The default is \f[C]minimal\f[R].
-+For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
-+.RE
-+.SH EXAMPLES
-+.IP \[bu] 2
-+List all available workloads:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet workload search
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+List all available workloads that have \[lq]maui\[rq] in their workload ID:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet workload search maui
-+\f[R]
-+.fi
-+.RE
-diff --git a/documentation/manpages/sdk/dotnet-workload-uninstall.1 b/documentation/manpages/sdk/dotnet-workload-uninstall.1
-new file mode 100644
-index 0000000000..1bbbfcf98e
---- /dev/null
-+++ b/documentation/manpages/sdk/dotnet-workload-uninstall.1
-@@ -0,0 +1,59 @@
-+.\" Automatically generated by Pandoc 2.14.1
-+.\"
-+.TH "" "1" "" "" ".NET"
-+.hy
-+.SH dotnet workload uninstall
-+.PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET 6 Preview SDK and later versions
-+.SH NAME
-+.PP
-+\f[C]dotnet workload uninstall\f[R] - Uninstalls a specified workload.
-+.SH SYNOPSIS
-+.IP
-+.nf
-+\f[C]
-+dotnet workload uninstall <WORKLOAD_ID...>
-+
-+dotnet workload uninstall -?|-h|--help
-+\f[R]
-+.fi
-+.SH DESCRIPTION
-+.PP
-+The \f[C]dotnet workload uninstall\f[R] command uninstalls one or more workloads.
-+.PP
-+For more information about the \f[C]dotnet workload\f[R] commands, see the dotnet workload install command.
-+.SS Arguments
-+.IP \[bu] 2
-+\f[B]\f[CB]WORKLOAD_ID...\f[B]\f[R]
-+.RS 2
-+.PP
-+The workload ID or multiple IDs to uninstall.
-+.RE
-+.SH OPTIONS
-+.IP \[bu] 2
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
-+.RS 2
-+.PP
-+Prints out a description of how to use the command.
-+.RE
-+.SH EXAMPLES
-+.IP \[bu] 2
-+Uninstall the \f[C]maui\f[R] workload:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet workload uninstall maui
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Uninstall the \f[C]maui-android\f[R] and \f[C]maui-ios\f[R] workloads:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet workload uninstall maui-android maui-ios
-+\f[R]
-+.fi
-+.RE
-diff --git a/documentation/manpages/sdk/dotnet-workload-update.1 b/documentation/manpages/sdk/dotnet-workload-update.1
-new file mode 100644
-index 0000000000..7a31e5ee9e
---- /dev/null
-+++ b/documentation/manpages/sdk/dotnet-workload-update.1
-@@ -0,0 +1,137 @@
-+.\" Automatically generated by Pandoc 2.14.1
-+.\"
-+.TH "" "1" "" "" ".NET"
-+.hy
-+.SH dotnet workload update
-+.PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET 6 Preview SDK and later versions
-+.SH NAME
-+.PP
-+\f[C]dotnet workload update\f[R] - Updates installed workloads.
-+.SH SYNOPSIS
-+.IP
-+.nf
-+\f[C]
-+dotnet workload update
-+ [--advertising-manifests-only]
-+ [--configfile <FILE>] [--disable-parallel]
-+ [--from-previous-sdk] [--ignore-failed-sources]
-+ [--include-previews] [--interactive] [--no-cache]
-+ [-s|--source <SOURCE>] [--temp-dir <PATH>]
-+ [-v|--verbosity <LEVEL>]
-+
-+dotnet workload update -?|-h|--help
-+\f[R]
-+.fi
-+.SH DESCRIPTION
-+.PP
-+The \f[C]dotnet workload update\f[R] command updates all installed workloads to the newest available versions.
-+It queries Nuget.org for updated workload manifests.
-+It then updates local manifests, downloads new versions of the installed workloads, and removes all old versions of each workload.
-+.PP
-+For more information about the \f[C]dotnet workload\f[R] commands, see the dotnet workload install command.
-+.SH OPTIONS
-+.IP \[bu] 2
-+\f[B]\f[CB]--advertising-manifests-only\f[B]\f[R]
-+.RS 2
-+.PP
-+Downloads advertising manifests but doesn\[cq]t update any workloads.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
-+.RS 2
-+.PP
-+The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
-+If specified, only the settings from this file will be used.
-+If not specified, the hierarchy of configuration files from the current directory will be used.
-+For more information, see Common NuGet Configurations.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--disable-parallel\f[B]\f[R]
-+.RS 2
-+.PP
-+Prevents restoring multiple projects in parallel.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--from-previous-sdk\f[B]\f[R]
-+.RS 2
-+.PP
-+Include workloads installed with previous SDK versions in the update.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
-+.RS 2
-+.PP
-+Prints out a description of how to use the command.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--ignore-failed-sources\f[B]\f[R]
-+.RS 2
-+.PP
-+Treats package source failures as warnings.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--include-previews\f[B]\f[R]
-+.RS 2
-+.PP
-+Allows prerelease workload manifests.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--interactive\f[B]\f[R]
-+.RS 2
-+.PP
-+Allows the command to stop and wait for user input or action.
-+For example, to complete authentication.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--no-cache\f[B]\f[R]
-+.RS 2
-+.PP
-+Prevents caching of packages and http requests.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-s|--source <SOURCE>\f[B]\f[R]
-+.RS 2
-+.PP
-+Specifies the URI of the NuGet package source to use.
-+This setting overrides all of the sources specified in the \f[I]nuget.config\f[R] files.
-+Multiple sources can be provided by specifying this option multiple times.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--temp-dir <PATH>\f[B]\f[R]
-+.RS 2
-+.PP
-+Specify the temporary directory used to download and extract NuGet packages (must be secure).
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
-+.RS 2
-+.PP
-+Sets the verbosity level of the command.
-+Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
-+The default is \f[C]minimal\f[R].
-+If you specify specify \f[C]detailed\f[R] or \f[C]diagnostic\f[R] verbosity, the command displays information about the Nuget packages that it downloads.
-+.RE
-+.SH EXAMPLES
-+.IP \[bu] 2
-+Update the installed workloads:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet workload update
-+\f[R]
-+.fi
-+.RE
-+.IP \[bu] 2
-+Download the assets needed for updating installed workloads to a cache located in the \f[I]workload-cache\f[R] directory under the current directory.
-+Then update installed workloads from that cache location:
-+.RS 2
-+.IP
-+.nf
-+\f[C]
-+dotnet workload update --download-to-cache ./workload-cache
-+dotnet workload update --from-cache ./workload-cache
-+\f[R]
-+.fi
-+.RE
-diff --git a/documentation/manpages/sdk/dotnet.1 b/documentation/manpages/sdk/dotnet.1
-index 117e040c03..4fca2df5b1 100644
---- a/documentation/manpages/sdk/dotnet.1
-+++ b/documentation/manpages/sdk/dotnet.1
-@@ -1,94 +1,211 @@
--.\"t
--.\" Automatically generated by Pandoc 2.7.2
-+'\" t
-+.\" Automatically generated by Pandoc 2.14.1
- .\"
--.TH "dotnet command" "1" "" "" ".NET Core"
-+.TH "" "1" "" "" ".NET"
- .hy
- .SH dotnet command
- .PP
-+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.1 SDK and later versions
- .SH NAME
- .PP
--\f[C]dotnet\f[R] - A tool for managing .NET source code and binaries.
-+\f[C]dotnet\f[R] - The generic driver for the .NET CLI.
- .SH SYNOPSIS
--.SS .NET Core 2.1
-+.PP
-+To get information about the available commands and the environment:
- .IP
- .nf
- \f[C]
--dotnet [command] [arguments] [--additional-deps] [--additionalprobingpath] [--depsfile]
-- [-d|--diagnostics] [--fx-version] [-h|--help] [--info] [--list-runtimes] [--list-sdks] [--roll-forward-on-no-candidate-fx] [--runtimeconfig] [-v|--verbosity] [--version]
-+dotnet [--version] [--info] [--list-runtimes] [--list-sdks]
-+
-+dotnet -h|--help
- \f[R]
- .fi
--.SS .NET Core 2.0
-+.PP
-+To run a command (requires SDK installation):
- .IP
- .nf
- \f[C]
--dotnet [command] [arguments] [--additional-deps] [--additionalprobingpath] [--depsfile]
-- [-d|--diagnostics] [--fx-version] [-h|--help] [--info] [--roll-forward-on-no-candidate-fx]
-- [--runtimeconfig] [-v|--verbosity] [--version]
-+dotnet <COMMAND> [-d|--diagnostics] [-h|--help] [--verbosity <LEVEL>]
-+ [command-options] [arguments]
- \f[R]
- .fi
--.SS .NET Core 1.x
-+.PP
-+To run an application:
- .IP
- .nf
- \f[C]
--dotnet [command] [arguments] [--additionalprobingpath] [--depsfile] [-d|--diagnostics]
-- [--fx-version] [-h|--help] [--info] [--runtimeconfig] [-v|--verbosity] [--version]
-+dotnet [--additionalprobingpath <PATH>] [--additional-deps <PATH>]
-+ [--fx-version <VERSION>] [--roll-forward <SETTING>]
-+ <PATH_TO_APPLICATION> [arguments]
-+
-+dotnet exec [--additionalprobingpath] [--additional-deps <PATH>]
-+ [--fx-version <VERSION>] [--roll-forward <SETTING>]
-+ <PATH_TO_APPLICATION> [arguments]
- \f[R]
- .fi
- .PP
-- * * * * *
-+\f[C]--roll-forward\f[R] is available since .NET Core 3.x.
-+Use \f[C]--roll-forward-on-no-candidate-fx\f[R] for .NET Core 2.x.
- .SH DESCRIPTION
- .PP
--\f[C]dotnet\f[R] is a tool for managing .NET source code and binaries.
--It exposes commands that perform specific tasks, such as \f[C]dotnet build\f[R] and \f[C]dotnet run\f[R].
--Each command defines its own arguments.
--Type \f[C]--help\f[R] after each command to access brief help documentation.
-+The \f[C]dotnet\f[R] command has two functions:
-+.IP \[bu] 2
-+It provides commands for working with .NET projects.
-+.RS 2
- .PP
--\f[C]dotnet\f[R] can be used to run applications, by specifying an application DLL, such as \f[C]dotnet myapp.dll\f[R].
--See .NET Core application deployment for to learn about deployment options.
-+For example, \f[C]dotnet build\f[R] builds a project.
-+Each command defines its own options and arguments.
-+All commands support the \f[C]--help\f[R] option for printing out brief documentation about how to use the command.
-+.RE
-+.IP \[bu] 2
-+It runs .NET applications.
-+.RS 2
-+.PP
-+You specify the path to an application \f[C].dll\f[R] file to run the application.
-+To run the application means to find and execute the entry point, which in the case of console apps is the \f[C]Main\f[R] method.
-+For example, \f[C]dotnet myapp.dll\f[R] runs the \f[C]myapp\f[R] application.
-+See .NET application deployment to learn about deployment options.
-+.RE
- .SH OPTIONS
--.SS .NET Core 2.1
- .PP
--\f[C]--additional-deps <PATH>\f[R]
-+Different options are available for \f[C]dotnet\f[R] by itself, for running a command, and for running an application.
-+.SS Options for dotnet by itself
- .PP
--Path to an additional \f[I].deps.json\f[R] file.
-+The following options are for \f[C]dotnet\f[R] by itself.
-+For example, \f[C]dotnet --info\f[R].
-+They print out information about the environment.
-+.IP \[bu] 2
-+\f[B]\f[CB]--info\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]--additionalprobingpath <PATH>\f[R]
-+Prints out detailed information about a .NET installation and the machine environment, such as the current operating system, and commit SHA of the .NET version.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--version\f[B]\f[R]
- .PP
--Path containing probing policy and assemblies to probe.
-+Prints out the version of the .NET SDK used by dotnet commands.
-+Includes the effects of any global.json
-+.IP \[bu] 2
-+\f[B]\f[CB]--list-runtimes\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]--depsfile\f[R]
-+Prints out a list of the installed .NET runtimes.
-+An x86 version of the SDK lists only x86 runtimes, and an x64 version of the SDK lists only x64 runtimes.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--list-sdks\f[B]\f[R]
-+.RS 2
- .PP
--Path to a \f[I]deps.json\f[R] file.
-+Prints out a list of the installed .NET SDKs.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
-+.RS 2
- .PP
--A \f[I]deps.json\f[R] file contains a list of dependencies, compilation dependencies and version information used to address assembly conflicts.
--For more information about this file, see Runtime Configuration Files on GitHub.
-+Prints out a list of available commands.
-+.RE
-+.SS SDK options for running a command
- .PP
--\f[C]-d|--diagnostics\f[R]
-+The following options are for \f[C]dotnet\f[R] with a command.
-+For example, \f[C]dotnet build --help\f[R].
-+.IP \[bu] 2
-+\f[B]\f[CB]-d|--diagnostics\f[B]\f[R]
-+.RS 2
- .PP
- Enables diagnostic output.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]--fx-version <VERSION>\f[R]
-+Sets the verbosity level of the command.
-+Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
-+Not supported in every command.
-+See specific command page to determine if this option is available.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
-+.RS 2
- .PP
--Version of the .NET Core runtime to use to run the application.
-+Prints out documentation for a given command, such as \f[C]dotnet build --help\f[R].
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]command options\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]-h|--help\f[R]
-+Each command defines options specific to that command.
-+See specific command page for a list of available options.
-+.RE
-+.SS Runtime options
- .PP
--Prints out documentation for a given command, such as \f[C]dotnet build --help\f[R].
--\f[C]dotnet --help\f[R] prints a list of available commands.
-+The following options are available when \f[C]dotnet\f[R] runs an application.
-+For example, \f[C]dotnet myapp.dll --roll-forward Major\f[R].
-+.IP \[bu] 2
-+\f[B]\f[CB]--additionalprobingpath <PATH>\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]--info\f[R]
-+Path containing probing policy and assemblies to probe.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--additional-deps <PATH>\f[B]\f[R]
-+.RS 2
- .PP
--Prints out detailed information about a .NET Core installation and the machine environment, such as the current operating system, and commit SHA of the .NET Core version.
-+Path to an additional \f[I].deps.json\f[R] file.
-+A \f[I]deps.json\f[R] file contains a list of dependencies, compilation dependencies, and version information used to address assembly conflicts.
-+For more information, see Runtime Configuration Files (https://github.com/dotnet/sdk/blob/main/documentation/specs/runtime-confi...) on GitHub.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--depsfile <PATH_TO_DEPSFILE>\f[B]\f[R]
-+.RS 2
- .PP
--\f[C]--list-runtimes\f[R]
-+Path to the \f[I]deps.json\f[R] file.
-+A \f[I]deps.json\f[R] file is a configuration file that contains information about dependencies necessary to run the application.
-+This file is generated by the .NET SDK.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--runtimeconfig\f[B]\f[R]
-+.RS 2
- .PP
--Displays the installed .NET Core runtimes.
-+Path to a \f[I]runtimeconfig.json\f[R] file.
-+A \f[I]runtimeconfig.json\f[R] file is a configuration file that contains run-time settings.
-+For more information, see .NET runtime configuration settings.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--roll-forward <SETTING>\f[B]\f[R] \f[B]Available starting with .NET Core SDK 3.0.\f[R]
-+.RS 2
- .PP
--\f[C]--list-sdks\f[R]
-+Controls how roll forward is applied to the app.
-+The \f[C]SETTING\f[R] can be one of the following values.
-+If not specified, \f[C]Minor\f[R] is the default.
-+.IP \[bu] 2
-+\f[C]LatestPatch\f[R] - Roll forward to the highest patch version.
-+This disables minor version roll forward.
-+.IP \[bu] 2
-+\f[C]Minor\f[R] - Roll forward to the lowest higher minor version, if requested minor version is missing.
-+If the requested minor version is present, then the LatestPatch policy is used.
-+.IP \[bu] 2
-+\f[C]Major\f[R] - Roll forward to lowest higher major version, and lowest minor version, if requested major version is missing.
-+If the requested major version is present, then the Minor policy is used.
-+.IP \[bu] 2
-+\f[C]LatestMinor\f[R] - Roll forward to highest minor version, even if requested minor version is present.
-+Intended for component hosting scenarios.
-+.IP \[bu] 2
-+\f[C]LatestMajor\f[R] - Roll forward to highest major and highest minor version, even if requested major is present.
-+Intended for component hosting scenarios.
-+.IP \[bu] 2
-+\f[C]Disable\f[R] - Don\[cq]t roll forward.
-+Only bind to specified version.
-+This policy isn\[cq]t recommended for general use because it disables the ability to roll forward to the latest patches.
-+This value is only recommended for testing.
- .PP
--Displays the installed .NET Core SDKs.
-+With the exception of \f[C]Disable\f[R], all settings will use the highest available patch version.
- .PP
--\f[C]--roll-forward-on-no-candidate-fx <N>\f[R]
-+Roll forward behavior can also be configured in a project file property, a runtime configuration file property, and an environment variable.
-+For more information, see Major-version runtime roll forward.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--roll-forward-on-no-candidate-fx <N>\f[B]\f[R] \f[B]Available in .NET Core 2.x SDK.\f[R]
-+.RS 2
- .PP
- Defines behavior when the required shared framework is not available.
- \f[C]N\f[R] can be:
-@@ -102,128 +219,20 @@ This is the default behavior.
- .PP
- For more information, see Roll forward.
- .PP
--\f[C]--runtimeconfig\f[R]
--.PP
--Path to a \f[I]runtimeconfig.json\f[R] file.
--.PP
--A \f[I]runtimeconfig.json\f[R] file is a configuration file containing runtime configuration settings.
--For more information, see Runtime Configuration Files on GitHub.
--.PP
--\f[C]-v|--verbosity <LEVEL>\f[R]
--.PP
--Sets the verbosity level of the command.
--Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
--Not supported in every command; see specific command page to determine if this option is available.
--.PP
--\f[C]--version\f[R]
--.PP
--Prints out the version of the .NET Core SDK in use.
--.SS .NET Core 2.0
--.PP
--\f[C]--additional-deps <PATH>\f[R]
--.PP
--Path to an additional \f[I].deps.json\f[R] file.
--.PP
--\f[C]--additionalprobingpath <PATH>\f[R]
--.PP
--Path containing probing policy and assemblies to probe.
--.PP
--\f[C]--depsfile\f[R]
--.PP
--Path to a \f[I]deps.json\f[R] file.
--.PP
--A \f[I]deps.json\f[R] file contains a list of dependencies, compilation dependencies and version information used to address assembly conflicts.
--For more details on this file, see Runtime Configuration Files on GitHub.
--.PP
--\f[C]-d|--diagnostics\f[R]
--.PP
--Enables diagnostic output.
--.PP
--\f[C]--fx-version <VERSION>\f[R]
--.PP
--Version of the .NET Core runtime to use to run the application.
--.PP
--\f[C]-h|--help\f[R]
--.PP
--Prints out documentation for a given command, such as \f[C]dotnet build --help\f[R].
--\f[C]dotnet --help\f[R] prints a list of available commands.
--.PP
--\f[C]--info\f[R]
--.PP
--Prints out detailed information about a .NET Core installation and the machine environment, such as the current operating system, and commit SHA of the .NET Core version.
--.PP
--\f[C]--roll-forward-on-no-candidate-fx\f[R]
--.PP
--Disables minor version roll forward, if set to \f[C]0\f[R].
--For more information, see Roll forward.
--.PP
--\f[C]--runtimeconfig\f[R]
--.PP
--Path to a \f[I]runtimeconfig.json\f[R] file.
--.PP
--A \f[I]runtimeconfig.json\f[R] file is a configuration file containing runtime configuration settings.
--For more details, see Runtime Configuration Files on GitHub.
--.PP
--\f[C]-v|--verbosity <LEVEL>\f[R]
--.PP
--Sets the verbosity level of the command.
--Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
--Not supported in every command; see specific command page to determine if this option is available.
--.PP
--\f[C]--version\f[R]
--.PP
--Prints out the version of the .NET Core SDK in use.
--.SS .NET Core 1.x
--.PP
--\f[C]--additionalprobingpath <PATH>\f[R]
--.PP
--Path containing probing policy and assemblies to probe.
--.PP
--\f[C]--depsfile\f[R]
--.PP
--Path to a \f[I]deps.json\f[R] file.
--.PP
--A \f[I]deps.json\f[R] file contains a list of dependencies, compilation dependencies and version information used to address assembly conflicts.
--For more details on this file, see Runtime Configuration Files on GitHub.
--.PP
--\f[C]-d|--diagnostics\f[R]
--.PP
--Enables diagnostic output.
--.PP
--\f[C]--fx-version <VERSION>\f[R]
--.PP
--Version of the .NET Core runtime to use to run the application.
--.PP
--\f[C]-h|--help\f[R]
--.PP
--Prints out documentation for a given command, such as \f[C]dotnet build --help\f[R].
--\f[C]dotnet --help\f[R] prints a list of available commands.
--.PP
--\f[C]--info\f[R]
--.PP
--Prints out detailed information about a .NET Core installation and the machine environment, such as the current operating system, and commit SHA of the .NET Core version.
--.PP
--\f[C]--runtimeconfig\f[R]
--.PP
--Path to a \f[I]runtimeconfig.json\f[R] file.
--.PP
--A \f[I]runtimeconfig.json\f[R] file is a configuration file containing runtime configuration settings.
--For more details, see Runtime Configuration Files on GitHub.
--.PP
--\f[C]-v|--verbosity <LEVEL>\f[R]
--.PP
--Sets the verbosity level of the command.
--Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
--Not supported in every command; see specific command page to determine if this option is available.
--.PP
--\f[C]--version\f[R]
-+Starting with .NET Core 3.0, this option is superseded by \f[C]--roll-forward\f[R], and that option should be used instead.
-+.RE
-+.IP \[bu] 2
-+\f[B]\f[CB]--fx-version <VERSION>\f[B]\f[R]
-+.RS 2
- .PP
--Prints out the version of the .NET Core SDK in use.
-+Version of the .NET runtime to use to run the application.
- .PP
-- * * * * *
-+This option overrides the version of the first framework reference in the application\[cq]s \f[C].runtimeconfig.json\f[R] file.
-+This means it only works as expected if there\[cq]s just one framework reference.
-+If the application has more than one framework reference, using this option may cause errors.
-+.RE
- .SS dotnet commands
- .SS General
--.SS .NET Core 2.1
- .PP
- .TS
- tab(@);
-@@ -237,7 +246,7 @@ _
- T{
- dotnet build
- T}@T{
--Builds a .NET Core application.
-+Builds a .NET application.
- T}
- T{
- dotnet build-server
-@@ -290,6 +299,11 @@ T}@T{
- Runs the application from source.
- T}
- T{
-+dotnet sdk check
-+T}@T{
-+Shows up-to-date status of installed SDK and Runtime versions.
-+T}
-+T{
- dotnet sln
- T}@T{
- Options to add, remove, and list projects in a solution file.
-@@ -305,7 +319,7 @@ T}@T{
- Runs tests using a test runner.
- T}
- .TE
--.SS .NET Core 2.0
-+.SS Project references
- .PP
- .TS
- tab(@);
-@@ -317,72 +331,22 @@ Function
- T}
- _
- T{
--dotnet build
--T}@T{
--Builds a .NET Core application.
--T}
--T{
--dotnet clean
--T}@T{
--Clean build outputs.
--T}
--T{
--dotnet help
--T}@T{
--Shows more detailed documentation online for the command.
--T}
--T{
--dotnet migrate
--T}@T{
--Migrates a valid Preview 2 project to a .NET Core SDK 1.0 project.
--T}
--T{
--dotnet msbuild
--T}@T{
--Provides access to the MSBuild command line.
--T}
--T{
--dotnet new
--T}@T{
--Initializes a C# or F# project for a given template.
--T}
--T{
--dotnet pack
--T}@T{
--Creates a NuGet package of your code.
--T}
--T{
--dotnet publish
--T}@T{
--Publishes a .NET framework-dependent or self-contained application.
--T}
--T{
--dotnet restore
--T}@T{
--Restores the dependencies for a given application.
--T}
--T{
--dotnet run
--T}@T{
--Runs the application from source.
--T}
--T{
--dotnet sln
-+dotnet add reference
- T}@T{
--Options to add, remove, and list projects in a solution file.
-+Adds a project reference.
- T}
- T{
--dotnet store
-+dotnet list reference
- T}@T{
--Stores assemblies in the runtime package store.
-+Lists project references.
- T}
- T{
--dotnet test
-+dotnet remove reference
- T}@T{
--Runs tests using a test runner.
-+Removes a project reference.
- T}
- .TE
--.SS .NET Core 1.x
-+.SS NuGet packages
- .PP
- .TS
- tab(@);
-@@ -394,91 +358,74 @@ Function
- T}
- _
- T{
--dotnet build
--T}@T{
--Builds a .NET Core application.
--T}
--T{
--dotnet clean
--T}@T{
--Clean build outputs.
--T}
--T{
--dotnet migrate
-+dotnet add package
- T}@T{
--Migrates a valid Preview 2 project to a .NET Core SDK 1.0 project.
-+Adds a NuGet package.
- T}
- T{
--dotnet msbuild
-+dotnet remove package
- T}@T{
--Provides access to the MSBuild command line.
-+Removes a NuGet package.
- T}
-+.TE
-+.SS NuGet commands
-+.PP
-+.TS
-+tab(@);
-+l l.
- T{
--dotnet new
-+Command
- T}@T{
--Initializes a C# or F# project for a given template.
-+Function
- T}
-+_
- T{
--dotnet pack
-+dotnet nuget delete
- T}@T{
--Creates a NuGet package of your code.
-+Deletes or unlists a package from the server.
- T}
- T{
--dotnet publish
-+dotnet nuget push
- T}@T{
--Publishes a .NET framework-dependent or self-contained application.
-+Pushes a package to the server and publishes it.
- T}
- T{
--dotnet restore
-+dotnet nuget locals
- T}@T{
--Restores the dependencies for a given application.
-+Clears or lists local NuGet resources such as http-request cache, temporary cache, or machine-wide global packages folder.
- T}
- T{
--dotnet run
-+dotnet nuget add source
- T}@T{
--Runs the application from source.
-+Adds a NuGet source.
- T}
- T{
--dotnet sln
-+dotnet nuget disable source
- T}@T{
--Options to add, remove, and list projects in a solution file.
-+Disables a NuGet source.
- T}
- T{
--dotnet test
-+dotnet nuget enable source
- T}@T{
--Runs tests using a test runner.
-+Enables a NuGet source.
- T}
--.TE
--.PP
-- * * * * *
--.SS Project references
--.PP
--.TS
--tab(@);
--l l.
- T{
--Command
-+dotnet nuget list source
- T}@T{
--Function
-+Lists all configured NuGet sources.
- T}
--_
- T{
--dotnet add reference
-+dotnet nuget remove source
- T}@T{
--Adds a project reference.
-+Removes a NuGet source.
- T}
- T{
--dotnet list reference
-+dotnet nuget update source
- T}@T{
--Lists project references.
--T}
--T{
--dotnet remove reference
--T}@T{
--Removes a project reference.
-+Updates a NuGet source.
- T}
- .TE
--.SS NuGet packages
-+.SS Workload commands
- .PP
- .TS
- tab(@);
-@@ -490,46 +437,44 @@ Function
- T}
- _
- T{
--dotnet add package
-+dotnet workload install
- T}@T{
--Adds a NuGet package.
-+Installs an optional workload.
- T}
- T{
--dotnet remove package
-+dotnet workload list
- T}@T{
--Removes a NuGet package.
-+Lists all installed workloads.
- T}
--.TE
--.SS NuGet commands
--.PP
--.TS
--tab(@);
--l l.
- T{
--Command
-+dotnet workload repair
- T}@T{
--Function
-+Repairs all installed workloads.
- T}
--_
- T{
--dotnet nuget delete
-+dotnet workload search
- T}@T{
--Deletes or unlists a package from the server.
-+List selected workloads or all available workloads.
- T}
- T{
--dotnet nuget locals
-+dotnet workload uninstall
- T}@T{
--Clears or lists local NuGet resources such as http-request cache, temporary cache, or machine-wide global packages folder.
-+Uninstalls a workload.
- T}
- T{
--dotnet nuget push
-+dotnet workload update
- T}@T{
--Pushes a package to the server and publishes it.
-+Reinstalls all installed workloads.
- T}
- .TE
--.SS Global Tools commands
-+.SS Global, tool-path, and local tools commands
- .PP
--\&.NET Core Global Tools are available starting with .NET Core SDK 2.1.300:
-+Tools are console applications that are installed from NuGet packages and are invoked from the command prompt.
-+You can write tools yourself or install tools written by third parties.
-+Tools are also known as global tools, tool-path tools, and local tools.
-+For more information, see .NET tools overview.
-+Global and tool-path tools are available starting with .NET Core SDK 2.1.
-+Local tools are available starting with .NET Core SDK 3.0.
- .PP
- .TS
- tab(@);
-@@ -543,27 +488,32 @@ _
- T{
- dotnet tool install
- T}@T{
--Installs a Global Tool on your machine.
-+Installs a tool on your machine.
- T}
- T{
- dotnet tool list
- T}@T{
--Lists all Global Tools currently installed in the default directory on your machine or in the specified path.
-+Lists all global, tool-path, or local tools currently installed on your machine.
-+T}
-+T{
-+dotnet tool search
-+T}@T{
-+Searches NuGet.org for tools that have the specified search term in their name or metadata.
- T}
- T{
- dotnet tool uninstall
- T}@T{
--Uninstalls a Global Tool from your machine.
-+Uninstalls a tool from your machine.
- T}
- T{
- dotnet tool update
- T}@T{
--Updates a Global Tool on your machine.
-+Updates a tool that is installed on your machine.
- T}
- .TE
- .SS Additional tools
- .PP
--Starting with .NET Core SDK 2.1.300, a number of tools that were available only on a per project basis using \f[C]DotnetCliToolReference\f[R] are now available as part of the .NET Core SDK.
-+Starting with .NET Core SDK 2.1.300, a number of tools that were available only on a per project basis using \f[C]DotnetCliToolReference\f[R] are now available as part of the .NET SDK.
- These tools are listed in the following table:
- .PP
- .TS
-@@ -605,95 +555,33 @@ T}
- For more information about each tool, type \f[C]dotnet <tool-name> --help\f[R].
- .SH EXAMPLES
- .PP
--Creates a new .NET Core console application:
--.PP
--\f[C]dotnet new console\f[R]
--.PP
--Restore dependencies for a given application:
--.PP
--\f[C]dotnet restore\f[R]
--.PP
-+Create a new .NET console application:
-+.IP
-+.nf
-+\f[C]
-+dotnet new console
-+\f[R]
-+.fi
- .PP
- Build a project and its dependencies in a given directory:
-+.IP
-+.nf
-+\f[C]
-+dotnet build
-+\f[R]
-+.fi
- .PP
--\f[C]dotnet build\f[R]
--.PP
--Run an application DLL, such as \f[C]myapp.dll\f[R]:
--.PP
--\f[C]dotnet myapp.dll\f[R]
--.SH ENVIRONMENT VARIABLES
--.SS .NET Core 2.1
--.PP
--\f[C]DOTNET_PACKAGES\f[R]
--.PP
--The global packages folder.
--If not set, it defaults to \f[C]\[ti]/.nuget/packages\f[R] on Unix or \f[C]%userprofile%\[rs].nuget\[rs]packages\f[R] on Windows.
--.PP
--\f[C]DOTNET_SERVICING\f[R]
--.PP
--Specifies the location of the servicing index to use by the shared host when loading the runtime.
--.PP
--\f[C]DOTNET_CLI_TELEMETRY_OPTOUT\f[R]
--.PP
--Specifies whether data about the .NET Core tools usage is collected and sent to Microsoft.
--Set to \f[C]true\f[R] to opt-out of the telemetry feature (values \f[C]true\f[R], \f[C]1\f[R], or \f[C]yes\f[R] accepted).
--Otherwise, set to \f[C]false\f[R] to opt into the telemetry features (values \f[C]false\f[R], \f[C]0\f[R], or \f[C]no\f[R] accepted).
--If not set, the default is \f[C]false\f[R] and the telemetry feature is active.
--.PP
--\f[C]DOTNET_MULTILEVEL_LOOKUP\f[R]
--.PP
--Specifies whether .NET Core runtime, shared framework, or SDK are resolved from the global location.
--If not set, it defaults to \f[C]true\f[R].
--Set to \f[C]false\f[R] to not resolve from the global location and have isolated .NET Core installations (values \f[C]0\f[R] or \f[C]false\f[R] are accepted).
--For more information about multi-level lookup, see Multi-level SharedFX Lookup.
--.PP
--\f[C]DOTNET_ROLL_FORWARD_ON_NO_CANDIDATE_FX\f[R]
--.PP
--Disables minor version roll forward, if set to \f[C]0\f[R].
--For more information, see Roll forward.
--.SS .NET Core 2.0
--.PP
--\f[C]DOTNET_PACKAGES\f[R]
--.PP
--The primary package cache.
--If not set, it defaults to \f[C]$HOME/.nuget/packages\f[R] on Unix or \f[C]%userprofile%\[rs].nuget\[rs]packages\f[R] on Windows.
--.PP
--\f[C]DOTNET_SERVICING\f[R]
--.PP
--Specifies the location of the servicing index to use by the shared host when loading the runtime.
--.PP
--\f[C]DOTNET_CLI_TELEMETRY_OPTOUT\f[R]
--.PP
--Specifies whether data about the .NET Core tools usage is collected and sent to Microsoft.
--Set to \f[C]true\f[R] to opt-out of the telemetry feature (values \f[C]true\f[R], \f[C]1\f[R], or \f[C]yes\f[R] accepted).
--Otherwise, set to \f[C]false\f[R] to opt into the telemetry features (values \f[C]false\f[R], \f[C]0\f[R], or \f[C]no\f[R] accepted).
--If not set, the default is \f[C]false\f[R] and the telemetry feature is active.
--.PP
--\f[C]DOTNET_MULTILEVEL_LOOKUP\f[R]
--.PP
--Specifies whether .NET Core runtime, shared framework, or SDK are resolved from the global location.
--If not set, it defaults to \f[C]true\f[R].
--Set to \f[C]false\f[R] to not resolve from the global location and have isolated .NET Core installations (values \f[C]0\f[R] or \f[C]false\f[R] are accepted).
--For more information about multi-level lookup, see Multi-level SharedFX Lookup.
--.SS .NET Core 1.x
--.PP
--\f[C]DOTNET_PACKAGES\f[R]
--.PP
--The primary package cache.
--If not set, it defaults to \f[C]$HOME/.nuget/packages\f[R] on Unix or \f[C]%userprofile%\[rs].nuget\[rs]packages\f[R] on Windows.
--.PP
--\f[C]DOTNET_SERVICING\f[R]
--.PP
--Specifies the location of the servicing index to use by the shared host when loading the runtime.
--.PP
--\f[C]DOTNET_CLI_TELEMETRY_OPTOUT\f[R]
--.PP
--Specifies whether data about the .NET Core tools usage is collected and sent to Microsoft.
--Set to \f[C]true\f[R] to opt-out of the telemetry feature (values \f[C]true\f[R], \f[C]1\f[R], or \f[C]yes\f[R] accepted).
--Otherwise, set to \f[C]false\f[R] to opt into the telemetry features (values \f[C]false\f[R], \f[C]0\f[R], or \f[C]no\f[R] accepted).
--If not set, the default is \f[C]false\f[R] and the telemetry feature is active.
--.PP
-- * * * * *
-+Run an application:
-+.IP
-+.nf
-+\f[C]
-+dotnet myapp.dll
-+\f[R]
-+.fi
- .SS See also
- .IP \[bu] 2
--Runtime Configuration Files
-+Environment variables used by .NET SDK, .NET CLI, and .NET runtime
-+.IP \[bu] 2
-+Runtime Configuration Files (https://github.com/dotnet/sdk/blob/main/documentation/specs/runtime-confi...)
-+.IP \[bu] 2
-+\&.NET runtime configuration settings
-diff --git a/documentation/manpages/tool/Dockerfile b/documentation/manpages/tool/Dockerfile
-index 37f37771d6..44777d621e 100644
---- a/documentation/manpages/tool/Dockerfile
-+++ b/documentation/manpages/tool/Dockerfile
-@@ -1,7 +1,7 @@
--FROM pandoc/core:2.7.2
-+FROM pandoc/core:2.14.1
-
- ENTRYPOINT ["/usr/bin/env"]
-
--RUN apk add git py-pip && python -m pip install pandocfilters
-+RUN apk add git py3-pip && python3 -m pip install pandocfilters
-
- CMD /manpages/tool/update-man-pages.sh
-diff --git a/documentation/manpages/tool/man-pandoc-filter.py b/documentation/manpages/tool/man-pandoc-filter.py
-old mode 100644
-new mode 100755
-index 20740bf083..fed4bebf6e
---- a/documentation/manpages/tool/man-pandoc-filter.py
-+++ b/documentation/manpages/tool/man-pandoc-filter.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- #
- # 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.
-@@ -7,10 +7,9 @@
- import copy
- from pandocfilters import toJSONFilters, Para, Str, Header, Space
-
--def remove_includes(key, value, format, meta):
-+def fail_on_includes(key, value, format, meta):
- if key == 'Para' and value[0]['c'] == '[!INCLUDE':
-- return Para([Str("")])
-- return None
-+ assert False, 'Found an unexpected [!INCLUDE'
-
- def promote_and_capitalize_sections(key, value, format, meta):
- if key == 'Header':
-@@ -34,18 +33,11 @@ def demote_net_core_1_2(key, value, format, meta):
- return value
- return None
-
--def remove_references(key, value, format, meta):
-- if key == 'Link':
-- pass
-- return value[1]
-- return None
--
- def main():
- toJSONFilters([
-- remove_includes,
-+ fail_on_includes,
- promote_and_capitalize_sections,
- demote_net_core_1_2,
-- remove_references,
- ])
-
- if __name__ == '__main__':
-diff --git a/documentation/manpages/tool/remove-metadata-and-embed-includes.py b/documentation/manpages/tool/remove-metadata-and-embed-includes.py
-new file mode 100755
-index 0000000000..11c9bf2411
---- /dev/null
-+++ b/documentation/manpages/tool/remove-metadata-and-embed-includes.py
-@@ -0,0 +1,67 @@
-+#!/usr/bin/env python3
-+#
-+# 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 re
-+import os
-+import os.path
-+import sys
-+
-+def git_root(file):
-+ dirname = os.path.dirname(file)
-+ while True:
-+ if os.path.isdir(os.path.join(dirname, '.git')):
-+ return dirname
-+ dirname = os.path.abspath(os.path.join(dirname, '..'))
-+ if dirname == '/':
-+ assert False, 'at root directory now'
-+
-+def read_lines_document_file(this_file, original_lines):
-+ result = []
-+
-+ lines = original_lines
-+
-+ # metadata section is optional
-+ if lines[0] == '---' + os.linesep:
-+ # remove first ---
-+ lines = lines[1:]
-+
-+ # find index of second --- and remove that and everything before it
-+ for i in range(len(lines)):
-+ if lines[i] == '---' + os.linesep:
-+ lines = lines[i+1:]
-+ break
-+
-+ for line in lines:
-+ if '[!INCLUDE' in line:
-+ match = re.search(r'\[!INCLUDE *\[[^\]]+\] *\(([^)]+)\)', line)
-+ if match:
-+ relative_path = match.groups()[0]
-+ if relative_path.startswith('~/'):
-+ git_repo_root = git_root(this_file) + '/'
-+ file_to_include = os.path.join(git_repo_root, relative_path[2:])
-+ else:
-+ file_to_include = os.path.join(os.path.dirname(this_file), relative_path)
-+ with open(file_to_include) as f:
-+ lines_to_include = f.readlines()
-+ result.extend(read_lines_document_file(file_to_include, lines_to_include))
-+ else:
-+ assert False, 'Unable to parse: ' + line
-+ else:
-+ result.append(line)
-+ return result
-+
-+def main(args):
-+ filename = args[1]
-+ with open(filename) as original:
-+ lines = read_lines_document_file(filename, original.readlines())
-+ with open(filename + '.tmp', 'w') as output:
-+ for line in lines:
-+ output.write(line)
-+
-+ os.replace(filename + '.tmp', filename)
-+
-+if __name__ == '__main__':
-+ sys.exit(main(sys.argv))
-diff --git a/documentation/manpages/tool/run_docker.sh b/documentation/manpages/tool/run_docker.sh
-old mode 100644
-new mode 100755
-index c5e2a3cf56..6717892a53
---- a/documentation/manpages/tool/run_docker.sh
-+++ b/documentation/manpages/tool/run_docker.sh
-@@ -8,4 +8,4 @@ MANPAGE_TOOL_DIR=$(cd "$(dirname "$0")" || exit; pwd)
-
- docker build -t dotnet-cli-manpage-tool "$MANPAGE_TOOL_DIR"
-
--docker run --volume="$MANPAGE_TOOL_DIR"/..:/manpages dotnet-cli-manpage-tool
-+docker run --volume="$MANPAGE_TOOL_DIR"/..:/manpages:Z dotnet-cli-manpage-tool
-diff --git a/documentation/manpages/tool/update-man-pages.sh b/documentation/manpages/tool/update-man-pages.sh
-old mode 100644
-new mode 100755
-index cf2ac7cfd3..c3c389f28b
---- a/documentation/manpages/tool/update-man-pages.sh
-+++ b/documentation/manpages/tool/update-man-pages.sh
-@@ -4,6 +4,8 @@
- # Licensed under the MIT license. See LICENSE file in the project root for full license information.
- #
-
-+set -euo pipefail
-+
- MANPAGE_TOOL_DIR=$(cd "$(dirname "$0")" || exit; pwd)
-
- cd "$MANPAGE_TOOL_DIR"/../sdk || exit
-@@ -24,7 +26,8 @@ fi
- ls docs-main/docs/core/tools/dotnet*.md | while read -r line;
- do
- echo "Working on $line"
-- pandoc -s -t man -V section=1 -V header=".NET Core" --column=500 --filter "$MANPAGE_TOOL_DIR"/man-pandoc-filter.py "$line" -o "$(basename "${line%.md}".1)"
-+ "$MANPAGE_TOOL_DIR"/remove-metadata-and-embed-includes.py "$line"
-+ pandoc -s -t man -V section=1 -V header=".NET" --column=500 --filter "$MANPAGE_TOOL_DIR"/man-pandoc-filter.py "$line" -o "$(basename "${line%.md}".1)"
- done
-
- rm -rf docs-main
---
-2.33.1
-
diff --git a/sources b/sources
index fbcebe4..c956c74 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (dotnet-v6.0.101.tar.gz) = e42d85d4cf5769e38059ea4f546e20452f4975a2ba448f81999deffb8a4e517d098ef23b8576c4654ec7a3b5e35006a90e5bf5ae2808012d3ed068f9d0a7eb90
+SHA512 (dotnet-v6.0.102.tar.gz) = dcb4102b1a6c9e1889d80f8cecf30da00ad16320cbbf14de891db632ebaa0b872501865957429107ade0caef569a2f2ed5ccb70111de7772838b820997f0c36e
commit ecf6e43a6ba8765b040da9cf93575908a55bc298
Author: Omair Majid <omajid(a)redhat.com>
Date: Fri Jan 28 08:44:07 2022 -0500
Update to .NET SDK 6.0.101 and Runtime 6.0.1
diff --git a/.gitignore b/.gitignore
index 86d2c7e..5bde936 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,3 +13,4 @@
/dotnet-arm64-prebuilts-2021-10-29.tar.gz
/dotnet-s390x-prebuilts-2021-10-29.tar.gz
/dotnet-9e8b04bbff820c93c142f99a507a46b976f5c14c.tar.gz
+/dotnet-v6.0.101.tar.gz
diff --git a/aspnetcore-39471-build-all-packages.patch b/aspnetcore-39471-build-all-packages.patch
new file mode 100644
index 0000000..9007b28
--- /dev/null
+++ b/aspnetcore-39471-build-all-packages.patch
@@ -0,0 +1,29 @@
+From c5211f8557f2fb019416cf1f6c01142965270479 Mon Sep 17 00:00:00 2001
+From: Doug Bunting <6431421+dougbu(a)users.noreply.github.com>
+Date: Sun, 16 Jan 2022 22:55:10 -0800
+Subject: [PATCH] Always build App.Ref and the targeting packs - set
+ `$(IsTargetingPackBuilding)` to `true` unconditionally - leave all _use_ of
+ `$(IsTargetingPackBuilding)`
+
+See https://github.com/dotnet/aspnetcore/issues/39471 for details and backporting.
+---
+ Directory.Build.props | 6 +-----
+ 1 file changed, 1 insertion(+), 5 deletions(-)
+
+diff --git a/Directory.Build.props b/Directory.Build.props
+index e100d883e9..d71b308905 100644
+--- a/Directory.Build.props
++++ b/Directory.Build.props
+@@ -138,11 +138,7 @@
+ <TargetingPackName>Microsoft.AspNetCore.App.Ref</TargetingPackName>
+ <RuntimeInstallerBaseName>aspnetcore-runtime</RuntimeInstallerBaseName>
+ <TargetingPackInstallerBaseName>aspnetcore-targeting-pack</TargetingPackInstallerBaseName>
+-
+- <!-- This is used to produce targeting pack installers/packages once per major.minor. -->
+- <IsTargetingPackBuilding
+- Condition=" '$(IsTargetingPackBuilding)' == '' AND '$(AspNetCorePatchVersion)' != '0' ">false</IsTargetingPackBuilding>
+- <IsTargetingPackBuilding Condition=" '$(IsTargetingPackBuilding)' == '' ">true</IsTargetingPackBuilding>
++ <IsTargetingPackBuilding>true</IsTargetingPackBuilding>
+
+ <!--
+ Archives and installers using this prefix are intended for internal use only.
diff --git a/build-dotnet-tarball b/build-dotnet-tarball
index 8f15c6f..3d96924 100755
--- a/build-dotnet-tarball
+++ b/build-dotnet-tarball
@@ -122,6 +122,8 @@ if [ ! -f "${unmodified_tarball_name}.tar.gz" ]; then
pushd installer
git checkout "${tag}"
git submodule update --init --recursive
+ patch -p1 -i ../../installer-12736-no-sudo.patch
+ patch -p1 -i ../../installer-12852-fix-internal-urls.patch
clean_dotnet_cache
mkdir -p "../${unmodified_tarball_name}"
./build.sh /p:ArcadeBuildTarball=true /p:TarballDir="$(readlink -f ../"${unmodified_tarball_name}")"
diff --git a/dotnet6.0.spec b/dotnet6.0.spec
index 9d2dc27..d1e1390 100644
--- a/dotnet6.0.spec
+++ b/dotnet6.0.spec
@@ -20,10 +20,10 @@
# until that's done, disable LTO. This has to happen before setting the flags below.
%define _lto_cflags %{nil}
-%global host_version 6.0.0
-%global runtime_version 6.0.0
+%global host_version 6.0.1
+%global runtime_version 6.0.1
%global aspnetcore_runtime_version %{runtime_version}
-%global sdk_version 6.0.100
+%global sdk_version 6.0.101
%global templates_version %{runtime_version}
#%%global templates_version %%(echo %%{runtime_version} | awk 'BEGIN { FS="."; OFS="." } {print $1, $2, $3+1 }')
@@ -33,8 +33,7 @@
%global sdk_rpm_version %{sdk_version}
# upstream can update releases without revving the SDK version so these don't always match
-#%%global upstream_tag v%%{sdk_version}-SDK
-%global upstream_tag 9e8b04bbff820c93c142f99a507a46b976f5c14c
+%global upstream_tag v%{sdk_version}
%if 0%{?fedora} || 0%{?rhel} < 8
%global use_bundled_libunwind 0
@@ -86,10 +85,10 @@ Source11: dotnet.sh.in
Patch100: runtime-arm64-lld-fix.patch
# Mono still has a dependency on (now unbuildable) ILStrip which was removed from CoreCLR: https://github.com/dotnet/runtime/pull/60315
Patch101: runtime-mono-remove-ilstrip.patch
-# https://github.com/dotnet/runtime/pull/61442
-Patch102: runtime-61442-disable-werror.patch
# https://github.com/dotnet/runtime/pull/62170
-Patch103: runtime-62170-clang13.patch
+Patch102: runtime-62170-clang13.patch
+# Extracted from https://github.com/dotnet/installer/pull/13009
+Patch103: runtime-63653-build-all-packages.patch
# https://github.com/dotnet/command-line-api/pull/1401
Patch300: command-line-api-use-work-tree-with-git-apply.patch
@@ -123,15 +122,20 @@ Patch900: roslyn-analyzers-no-apphost.patch
Patch1000: msbuild-no-systemsecurity.patch
Patch1001: msbuild-no-systemconfiguration.patch
+# Extracted from https://github.com/dotnet/installer/pull/13009
+Patch1100: aspnetcore-39471-build-all-packages.patch
+
# Disable telemetry by default; make it opt-in
Patch1500: sdk-telemetry-optout.patch
# https://github.com/dotnet/sdk/pull/22373
Patch1501: sdk-22373-portablerid.patch
+# https://github.com/dotnet/sdk/pull/21557
+Patch1502: sdk-21557-man-pages.patch
# https://github.com/dotnet/installer/pull/12516
Patch1600: installer-12516-portablerid.patch
-# https://github.com/dotnet/installer/pull/12622
-Patch1601: installer-12622-fix-runtime-symbols.patch
+# https://github.com/dotnet/installer/pull/12736
+Patch1601: installer-12736-no-sudo.patch
%if 0%{?fedora} || 0%{?rhel} >= 8
@@ -457,19 +461,21 @@ pushd src/msbuild.*
popd
+pushd src/aspnetcore.*
+%patch1100 -p1
+popd
+
pushd src/sdk.*
%patch1500 -p1
%patch1501 -p1
+%patch1502 -p1
popd
pushd src/installer.*
%patch1600 -p1
+%patch1601 -p1
popd
-# We need to apply the patch to the already-built tarball's
-# repos/runtime.common.targets, not to the installer's "source" copy.
-%patch1601 -p5
-
# Disable package validation which breaks our build.
# There's no need to run validation in RPM packages anyway.
# See https://github.com/dotnet/runtime/pull/60881
@@ -485,6 +491,7 @@ cat /etc/os-release
%if %{without bootstrap}
# We need to create a copy because we will mutate this
cp -a %{_libdir}/dotnet previously-built-dotnet
+find previously-built-dotnet
%endif
%if 0%{?fedora} > 32 || 0%{?rhel} > 8
@@ -550,9 +557,11 @@ tar xf artifacts/%{runtime_arch}/Release/dotnet-sdk-%{sdk_version}-%{runtime_id}
find %{buildroot}%{_libdir}/dotnet/ -type f -name 'testhost.x86' -delete
find %{buildroot}%{_libdir}/dotnet/ -type f -name 'vstest.console' -delete
-# Install managed symbols
-tar xf artifacts/%{runtime_arch}/Release/runtime/dotnet-runtime-symbols-%{runtime_id}-%{runtime_version}.tar.gz \
- -C %{buildroot}/%{_libdir}/dotnet/shared/Microsoft.NETCore.App/%{runtime_version}/
+# Install managed symbols: disabled because they don't contain sources
+# but point to the paths the sources would have been at in the build
+# servers. The end user experience is pretty bad atm.
+# tar xf artifacts/%{runtime_arch}/Release/runtime/dotnet-runtime-symbols-%{runtime_id}-%{runtime_version}.tar.gz \
+# -C %{buildroot}/%{_libdir}/dotnet/shared/Microsoft.NETCore.App/%{runtime_version}/
# Fix executable permissions on files
find %{buildroot}%{_libdir}/dotnet/ -type f -name 'apphost' -exec chmod +x {} \;
@@ -664,6 +673,9 @@ export COMPlus_LTTng=0
%changelog
+* Fri Jan 28 2022 Omair Majid <omajid(a)redhat.com> - 6.0.101-3
+- Update to .NET SDK 6.0.101 and Runtime 6.0.1
+
* Thu Jan 20 2022 Fedora Release Engineering <releng(a)fedoraproject.org> - 6.0.100-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
diff --git a/installer-12622-fix-runtime-symbols.patch b/installer-12622-fix-runtime-symbols.patch
deleted file mode 100644
index fa2d46f..0000000
--- a/installer-12622-fix-runtime-symbols.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 7365824ddc6ed66152cfc50f4c8508368953099c Mon Sep 17 00:00:00 2001
-From: Omair Majid <omajid(a)redhat.com>
-Date: Tue, 9 Nov 2021 08:39:27 -0500
-Subject: [PATCH] Also publish non-portable RID runtime symbols tarball
-
-This fixes a regression in .NET 6 source-build compared to the .NET
-5 source-build.
-
-source-build wants to publish runtime symbols tarball for portable (eg,
-linux-x64) and non-portable (eg, fedora.33-x64) RIDs here after a build.
-Following .NET 5 conventions, I expected to see:
-
- ./artifacts/x64/Release/runtime/dotnet-runtime-symbols-fedora.34-x64-6.0.0.tar.gz
- ./artifacts/x64/Release/runtime/dotnet-runtime-symbols-linux-x64-6.0.0.tar.gz
-
-Unfortunately, only the portable RID (linux-x64) tarball is present
-after a full source-build in .NET 6.
-
-It turns out this is a bug in our build scripts. We try and copy
-binaries - including the symbol tarballs - after building each of
-runtime-portable and runtime. However, the target dependency is wrong:
-after `Build`, the intermediate package doesn't exist from the
-just-built repo.
-
-What ends up happening is that nothing is copied after building
-runtime-portable. However, after building runtime, the runtime-portable
-intermediate artifacts are found and copied over. So the end
-build has portable RID symbos, but not the non-portable ones.
-
-Fix that by changing the dependency of this target so it runs after
-intermediate packages are available.
----
- src/SourceBuild/tarball/content/repos/runtime.common.targets | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/SourceBuild/tarball/content/repos/runtime.common.targets b/src/SourceBuild/tarball/content/repos/runtime.common.targets
-index ca606b23d21..862b70dc832 100644
---- a/src/SourceBuild/tarball/content/repos/runtime.common.targets
-+++ b/src/SourceBuild/tarball/content/repos/runtime.common.targets
-@@ -23,7 +23,7 @@
- </Target>
-
- <Target Name="CopyBinariesToBinFolder"
-- AfterTargets="Build"
-+ AfterTargets="ExtractIntermediatePackages"
- Inputs="$(MSBuildProjectFullPath)"
- Outputs="$(RepoCompletedSemaphorePath)CopyBinariesToBinFolder.complete">
- <ItemGroup>
diff --git a/installer-12736-no-sudo.patch b/installer-12736-no-sudo.patch
new file mode 100644
index 0000000..34d583a
--- /dev/null
+++ b/installer-12736-no-sudo.patch
@@ -0,0 +1,39 @@
+From f8e115fadf6e8b392fa007e78d9b77fc64590cdd Mon Sep 17 00:00:00 2001
+From: Daniel Plaisted <dsplaisted(a)gmail.com>
+Date: Mon, 29 Nov 2021 20:19:30 -0800
+Subject: [PATCH] Don't set ulimit
+
+1ES pools should now have ulimit set already now
+---
+ build.sh | 4 +---
+ run-build.sh | 4 ----
+ 2 files changed, 1 insertion(+), 7 deletions(-)
+
+diff --git a/build.sh b/build.sh
+index 594a355fafa..7ff647c4060 100755
+--- a/build.sh
++++ b/build.sh
+@@ -53,7 +53,5 @@ dockerbuild()
+ if [ ! -z "$BUILD_IN_DOCKER" ]; then
+ dockerbuild $args
+ else
+- # Run under sudo so we can set ulimit
+- # See https://github.com/dotnet/core-eng/issues/14808
+- sudo -E $DIR/run-build.sh $args
++ $DIR/run-build.sh $args
+ fi
+diff --git a/run-build.sh b/run-build.sh
+index fe839eb8009..7b98aedc0be 100755
+--- a/run-build.sh
++++ b/run-build.sh
+@@ -25,10 +25,6 @@ CUSTOM_BUILD_ARGS=
+ # Set nuget package cache under the repo
+ [ -z $NUGET_PACKAGES ] && export NUGET_PACKAGES="$REPOROOT/.nuget/packages"
+
+-# Set max number of files open, helps avoid errors during NuGet restore
+-# See https://github.com/dotnet/core-eng/issues/14808
+-ulimit -n 16384
+-
+ args=( )
+
+ while [[ $# > 0 ]]; do
diff --git a/installer-12852-fix-internal-urls.patch b/installer-12852-fix-internal-urls.patch
new file mode 100644
index 0000000..410bef9
--- /dev/null
+++ b/installer-12852-fix-internal-urls.patch
@@ -0,0 +1,129 @@
+From 4582256e7ad537e315c5aa8f16bf049350d2de41 Mon Sep 17 00:00:00 2001
+From: MichaelSimons <msimons(a)microsoft.com>
+Date: Thu, 16 Dec 2021 02:29:27 +0000
+Subject: [PATCH 1/2] Add logic to convert internal repo uris in
+ version.details.xml
+
+---
+ ...ourceBuildIntermediateNupkgDependencies.cs | 38 +++++++++++++++++++
+ .../tools/SourceBuildArcadeTarball.targets | 4 +-
+ 2 files changed, 41 insertions(+), 1 deletion(-)
+
+diff --git a/src/SourceBuild/Arcade/src/Tarball_ReadSourceBuildIntermediateNupkgDependencies.cs b/src/SourceBuild/Arcade/src/Tarball_ReadSourceBuildIntermediateNupkgDependencies.cs
+index 59f7eb49919..1217d166aae 100644
+--- a/src/SourceBuild/Arcade/src/Tarball_ReadSourceBuildIntermediateNupkgDependencies.cs
++++ b/src/SourceBuild/Arcade/src/Tarball_ReadSourceBuildIntermediateNupkgDependencies.cs
+@@ -3,6 +3,7 @@
+
+ using Microsoft.Build.Framework;
+ using Microsoft.Build.Utilities;
++using System;
+ using System.Collections.Generic;
+ using System.Linq;
+ using System.Xml.Linq;
+@@ -21,6 +22,11 @@ public class Tarball_ReadSourceBuildIntermediateNupkgDependencies : Task
+ [Required]
+ public string SourceBuildIntermediateNupkgPrefix { get; set; }
+
++ /// <summary>
++ /// Convert any internal repo references to the public GitHub repos.
++ /// </summary>
++ public bool ConvertInternalRepos { get; set; }
++
+ /// <summary>
+ /// The intermediate nupkg RID to use if any RID-specific intermediate nupkgs are required.
+ /// If this parameter isn't specified, RID-specific intermediate nupkgs can't be used and
+@@ -88,6 +94,11 @@ XName CreateQualifiedName(string plainName)
+ string dependencyVersion = d.Attribute("Version")?.Value;
+
+ string uri = d.Element(CreateQualifiedName("Uri"))?.Value;
++ if (ConvertInternalRepos)
++ {
++ uri = ConvertInternalRepo(uri);
++ }
++
+ string sha = d.Element(CreateQualifiedName("Sha"))?.Value;
+ string sourceBuildRepoName = sourceBuildElement.Attribute("RepoName")?.Value;
+
+@@ -137,5 +148,32 @@ XName CreateQualifiedName(string plainName)
+
+ return !Log.HasLoggedErrors;
+ }
++
++ private string ConvertInternalRepo(string uri)
++ {
++ if (uri.StartsWith("https://dev.azure.com", StringComparison.OrdinalIgnoreCase))
++ {
++ string[] repoParts = uri.Substring(uri.LastIndexOf('/')).Split('-', 2);
++
++ if (repoParts.Length != 2)
++ {
++ Log.LogError($"Repo '{uri}' does not end with the expected <GH organization>-<GH repo> format");
++ return null;
++ }
++
++ string org = repoParts[0];
++ string repo = repoParts[1];
++
++ // The internal Nuget.Client repo has suffix which needs to be accounted for.
++ if (uri.EndsWith("-Trusted", StringComparison.OrdinalIgnoreCase))
++ {
++ repo = repo.Substring(0, repo.Length - 8);
++ }
++
++ uri = $"https://github.com/{org}/{repo}";
++ }
++
++ return uri;
++ }
+ }
+ }
+diff --git a/src/SourceBuild/Arcade/tools/SourceBuildArcadeTarball.targets b/src/SourceBuild/Arcade/tools/SourceBuildArcadeTarball.targets
+index 1717371dc87..9a49c349924 100644
+--- a/src/SourceBuild/Arcade/tools/SourceBuildArcadeTarball.targets
++++ b/src/SourceBuild/Arcade/tools/SourceBuildArcadeTarball.targets
+@@ -19,6 +19,7 @@
+ <TarballSourceDir>$(TarballRootDir)src/</TarballSourceDir>
+ <TarballGitInfoDir>$(TarballRootDir)git-info/</TarballGitInfoDir>
+ <CloneVerbosity>quiet</CloneVerbosity> <!-- Support quiet and full -->
++ <ConvertInternalRepos Condition="'$(ConvertInternalRepos)' == '' and '$(VSS_NUGET_EXTERNAL_FEED_ENDPOINTS)' == '' ">true</ConvertInternalRepos>
+ </PropertyGroup>
+
+ <Target Name="CreateSourceTarball"
+@@ -203,7 +204,8 @@
+ <Tarball_ReadSourceBuildIntermediateNupkgDependencies
+ VersionDetailsXmlFile="$([MSBuild]::NormalizePath($(TarballVersionDetailsFile)))"
+ SourceBuildIntermediateNupkgPrefix="$(SourceBuildIntermediateNupkgPrefix)"
+- SourceBuildIntermediateNupkgRid="$(SourceBuildIntermediateNupkgRid)">
++ SourceBuildIntermediateNupkgRid="$(SourceBuildIntermediateNupkgRid)"
++ ConvertInternalRepos="$(ConvertInternalRepos)">
+ <Output TaskParameter="Dependencies" ItemName="SourceBuildRepos" />
+ </Tarball_ReadSourceBuildIntermediateNupkgDependencies>
+
+
+From 6e467b43033aefd1af39ddcbf625ef30d5440e7f Mon Sep 17 00:00:00 2001
+From: MichaelSimons <msimons(a)microsoft.com>
+Date: Thu, 16 Dec 2021 18:31:15 +0000
+Subject: [PATCH 2/2] code review updates
+
+---
+ .../Tarball_ReadSourceBuildIntermediateNupkgDependencies.cs | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/src/SourceBuild/Arcade/src/Tarball_ReadSourceBuildIntermediateNupkgDependencies.cs b/src/SourceBuild/Arcade/src/Tarball_ReadSourceBuildIntermediateNupkgDependencies.cs
+index 1217d166aae..9b6365dfccd 100644
+--- a/src/SourceBuild/Arcade/src/Tarball_ReadSourceBuildIntermediateNupkgDependencies.cs
++++ b/src/SourceBuild/Arcade/src/Tarball_ReadSourceBuildIntermediateNupkgDependencies.cs
+@@ -165,9 +165,10 @@ private string ConvertInternalRepo(string uri)
+ string repo = repoParts[1];
+
+ // The internal Nuget.Client repo has suffix which needs to be accounted for.
+- if (uri.EndsWith("-Trusted", StringComparison.OrdinalIgnoreCase))
++ const string trustedSuffix = "-Trusted";
++ if (uri.EndsWith(trustedSuffix, StringComparison.OrdinalIgnoreCase))
+ {
+- repo = repo.Substring(0, repo.Length - 8);
++ repo = repo.Substring(0, repo.Length - trustedSuffix.Length);
+ }
+
+ uri = $"https://github.com/{org}/{repo}";
diff --git a/runtime-61442-disable-werror.patch b/runtime-61442-disable-werror.patch
deleted file mode 100644
index 401440c..0000000
--- a/runtime-61442-disable-werror.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From f41c06ba040adf1930156340c5b03d9864d8a1d4 Mon Sep 17 00:00:00 2001
-From: Omair Majid <omajid(a)redhat.com>
-Date: Wed, 10 Nov 2021 17:54:45 -0500
-Subject: [PATCH] The 6.0 branch is no longer pre-release
-
-This has limited affects, but it should have been set to false since 6.0
-is now stable/released.
-
-The one difference it makes is that -Werror is disabled when building
-native code.
----
- Directory.Build.props | 2 +-
- eng/native/configureplatform.cmake | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/Directory.Build.props b/Directory.Build.props
-index f19ea9208c2c..5cb87bb7c257 100644
---- a/Directory.Build.props
-+++ b/Directory.Build.props
-@@ -255,7 +255,7 @@
- <PackageReleaseNotes>https://go.microsoft.com/fwlink/?LinkID=799421</PackageReleaseNotes>
- <!-- Indicates this is not an officially supported release. Release branches should set this to false. -->
- <!-- Keep it in sync with PRERELEASE in eng/native/configureplatform.cmake -->
-- <IsPrerelease>true</IsPrerelease>
-+ <IsPrerelease>false</IsPrerelease>
- <IsPrivateAssembly>$(MSBuildProjectName.Contains('Private'))</IsPrivateAssembly>
- <!-- Private packages should not be stable -->
- <SuppressFinalPackageVersion Condition="'$(SuppressFinalPackageVersion)' == '' and $(IsPrivateAssembly)">true</SuppressFinalPackageVersion>
-diff --git a/eng/native/configureplatform.cmake b/eng/native/configureplatform.cmake
-index 519431772004..af1c88bce5b6 100644
---- a/eng/native/configureplatform.cmake
-+++ b/eng/native/configureplatform.cmake
-@@ -2,7 +2,7 @@ include(${CMAKE_CURRENT_LIST_DIR}/functions.cmake)
-
- # If set, indicates that this is not an officially supported release
- # Keep in sync with IsPrerelease in Directory.Build.props
--set(PRERELEASE 1)
-+set(PRERELEASE 0)
-
- #----------------------------------------
- # Detect and set platform variable names
diff --git a/runtime-63653-build-all-packages.patch b/runtime-63653-build-all-packages.patch
new file mode 100644
index 0000000..43c68de
--- /dev/null
+++ b/runtime-63653-build-all-packages.patch
@@ -0,0 +1,34 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Santiago Fernandez Madero <safern(a)microsoft.com>
+Date: Tue, 11 Jan 2022 13:55:22 -0800
+Subject: [PATCH] [release/6.0] Build all packages when in source-build
+
+Originating PR: https://github.com/dotnet/runtime/pull/63653
+---
+ eng/packaging.targets | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/eng/packaging.targets b/eng/packaging.targets
+index 6bcf86dc9f2..ee8e95167d9 100644
+--- a/eng/packaging.targets
++++ b/eng/packaging.targets
+@@ -34,6 +34,10 @@
+ '$(IsRIDSpecificProject)' != 'true' and
+ '$(PreReleaseVersionLabel)' == 'servicing' and
+ '$(GitHubRepositoryName)' != 'runtimelab'">false</GeneratePackageOnBuild>
++ <!-- When in source-build we need to generate all packages when building for all configurations even in servicing. -->
++ <GeneratePackageOnBuild Condition="!$(GeneratePackageOnBuild) and
++ '$(BuildAllConfigurations)' == 'true' and
++ '$(DotNetBuildFromSource)' == 'true'">true</GeneratePackageOnBuild>
+ <!-- Search for the documentation file in the intellisense package and otherwise pick up the generated one. -->
+ <LibIntellisenseDocumentationFilePath>$(XmlDocFileRoot)1033\$(AssemblyName).xml</LibIntellisenseDocumentationFilePath>
+ <UseIntellisenseDocumentationFile Condition="'$(UseIntellisenseDocumentationFile)' == '' and Exists('$(LibIntellisenseDocumentationFilePath)')">true</UseIntellisenseDocumentationFile>
+@@ -279,7 +283,7 @@
+ </Target>
+
+ <Target Name="ValidateServicingVersionIsPropertlySet"
+- Condition="'$(PreReleaseVersionLabel)' == 'servicing'"
++ Condition="'$(PreReleaseVersionLabel)' == 'servicing' and '$(DotNetBuildFromSource)' != 'true'"
+ AfterTargets="GenerateNuspec">
+ <Error Condition="'$(ServicingVersion)' == '0'" Text="ServicingVersion is set to 0 and it should be an increment of the patch version from the last released package." />
+ </Target>
diff --git a/runtime-arm64-lld-fix.patch b/runtime-arm64-lld-fix.patch
index 5972f45..db6f520 100644
--- a/runtime-arm64-lld-fix.patch
+++ b/runtime-arm64-lld-fix.patch
@@ -2,12 +2,17 @@ diff --git a/eng/native/init-compiler.sh b/eng/native/init-compiler.sh
index 567d18da474..927b3071e92 100755
--- a/eng/native/init-compiler.sh
+++ b/eng/native/init-compiler.sh
-@@ -108,7 +108,7 @@ if [[ -z "$CC" ]]; then
+@@ -108,11 +108,8 @@
fi
if [[ "$compiler" == "clang" ]]; then
- if command -v "lld$desired_version" > /dev/null; then
-+ if command -v lld || command -v "lld$desired_version" > /dev/null; then
- # Only lld version >= 9 can be considered stable
- if [[ "$majorVersion" -ge 9 ]]; then
- LDFLAGS="-fuse-ld=lld"
+- # Only lld version >= 9 can be considered stable
+- if [[ "$majorVersion" -ge 9 ]]; then
+- LDFLAGS="-fuse-ld=lld"
+- fi
++ if "$CC" -fuse-ld=lld -Wl,--version >/dev/null 2>&1; then
++ LDFLAGS="-fuse-ld=lld"
+ fi
+ fi
+
diff --git a/sdk-21557-man-pages.patch b/sdk-21557-man-pages.patch
new file mode 100644
index 0000000..26155e9
--- /dev/null
+++ b/sdk-21557-man-pages.patch
@@ -0,0 +1,14271 @@
+From e71948468d166cd5df3edf610cf225a3350c755e Mon Sep 17 00:00:00 2001
+From: Omair Majid <omajid(a)redhat.com>
+Date: Wed, 29 Sep 2021 16:50:41 -0400
+Subject: [PATCH] Update man pages
+
+The current .NET man pages were updated a long time ago and are missing
+docs for a number of components, including `dotnet format` and `dotnet
+workload install`.
+
+Please use `man ./relative/path/to/file.1` to see the rendered views.
+
+There's two major changes in this commit:
+
+1. Update the tooling and toolset to generate the man pages
+
+2. The actual changes (addition/updates) for the man pages
+
+For the first, the container has been updated to use a newer pandoc and
+python3. The pandoc filter has been updated to remove the link-removal
+since it doesn't seem necessary for this version of pandoc anymore. Also
+added another early pass over the document files: this inlines all
+!INCLUDE'd references so the manual pages are complete.
+
+Fixes: #21449
+---
+ .../manpages/sdk/dotnet-add-package.1 | 47 +-
+ .../manpages/sdk/dotnet-add-reference.1 | 30 +-
+ .../manpages/sdk/dotnet-build-server.1 | 16 +-
+ documentation/manpages/sdk/dotnet-build.1 | 97 +-
+ documentation/manpages/sdk/dotnet-clean.1 | 27 +-
+ .../sdk/dotnet-environment-variables.1 | 135 ++
+ documentation/manpages/sdk/dotnet-format.1 | 198 ++
+ documentation/manpages/sdk/dotnet-help.1 | 20 +-
+ .../manpages/sdk/dotnet-install-script.1 | 305 +++-
+ .../manpages/sdk/dotnet-list-package.1 | 72 +-
+ .../manpages/sdk/dotnet-list-reference.1 | 28 +-
+ documentation/manpages/sdk/dotnet-migrate.1 | 22 +-
+ documentation/manpages/sdk/dotnet-msbuild.1 | 32 +-
+ .../manpages/sdk/dotnet-new-install.1 | 85 +
+ documentation/manpages/sdk/dotnet-new-list.1 | 164 ++
+ .../manpages/sdk/dotnet-new-sdk-templates.1 | 1603 +++++++++++++++++
+ .../manpages/sdk/dotnet-new-search.1 | 149 ++
+ .../manpages/sdk/dotnet-new-uninstall.1 | 56 +
+ .../manpages/sdk/dotnet-new-update.1 | 34 +
+ documentation/manpages/sdk/dotnet-new.1 | 1573 +++-------------
+ .../manpages/sdk/dotnet-nuget-add-source.1 | 123 ++
+ .../manpages/sdk/dotnet-nuget-delete.1 | 27 +-
+ .../sdk/dotnet-nuget-disable-source.1 | 55 +
+ .../manpages/sdk/dotnet-nuget-enable-source.1 | 55 +
+ .../manpages/sdk/dotnet-nuget-list-source.1 | 54 +
+ .../manpages/sdk/dotnet-nuget-locals.1 | 25 +-
+ .../manpages/sdk/dotnet-nuget-push.1 | 98 +-
+ .../manpages/sdk/dotnet-nuget-remove-source.1 | 55 +
+ .../manpages/sdk/dotnet-nuget-sign.1 | 242 +++
+ .../manpages/sdk/dotnet-nuget-trust.1 | 468 +++++
+ .../manpages/sdk/dotnet-nuget-update-source.1 | 89 +
+ .../manpages/sdk/dotnet-nuget-verify.1 | 341 ++++
+ documentation/manpages/sdk/dotnet-pack.1 | 130 +-
+ documentation/manpages/sdk/dotnet-publish.1 | 485 +++--
+ .../manpages/sdk/dotnet-remove-package.1 | 37 +-
+ .../manpages/sdk/dotnet-remove-reference.1 | 76 +-
+ documentation/manpages/sdk/dotnet-restore.1 | 326 ++--
+ documentation/manpages/sdk/dotnet-run.1 | 417 ++---
+ documentation/manpages/sdk/dotnet-sdk-check.1 | 76 +
+ documentation/manpages/sdk/dotnet-sln.1 | 201 ++-
+ documentation/manpages/sdk/dotnet-store.1 | 113 +-
+ documentation/manpages/sdk/dotnet-test.1 | 574 +++---
+ .../manpages/sdk/dotnet-tool-install.1 | 206 ++-
+ documentation/manpages/sdk/dotnet-tool-list.1 | 101 +-
+ .../manpages/sdk/dotnet-tool-restore.1 | 103 ++
+ documentation/manpages/sdk/dotnet-tool-run.1 | 50 +
+ .../manpages/sdk/dotnet-tool-search.1 | 122 ++
+ .../manpages/sdk/dotnet-tool-uninstall.1 | 97 +-
+ .../manpages/sdk/dotnet-tool-update.1 | 195 +-
+ documentation/manpages/sdk/dotnet-vstest.1 | 418 ++---
+ .../manpages/sdk/dotnet-workload-install.1 | 196 ++
+ .../manpages/sdk/dotnet-workload-list.1 | 51 +
+ .../manpages/sdk/dotnet-workload-repair.1 | 118 ++
+ .../manpages/sdk/dotnet-workload-restore.1 | 124 ++
+ .../manpages/sdk/dotnet-workload-search.1 | 70 +
+ .../manpages/sdk/dotnet-workload-uninstall.1 | 59 +
+ .../manpages/sdk/dotnet-workload-update.1 | 137 ++
+ documentation/manpages/sdk/dotnet.1 | 652 +++----
+ documentation/manpages/tool/Dockerfile | 4 +-
+ .../manpages/tool/man-pandoc-filter.py | 16 +-
+ .../remove-metadata-and-embed-includes.py | 67 +
+ documentation/manpages/tool/run_docker.sh | 2 +-
+ .../manpages/tool/update-man-pages.sh | 5 +-
+ 63 files changed, 8258 insertions(+), 3295 deletions(-)
+ create mode 100644 documentation/manpages/sdk/dotnet-environment-variables.1
+ create mode 100644 documentation/manpages/sdk/dotnet-format.1
+ create mode 100644 documentation/manpages/sdk/dotnet-new-install.1
+ create mode 100644 documentation/manpages/sdk/dotnet-new-list.1
+ create mode 100644 documentation/manpages/sdk/dotnet-new-sdk-templates.1
+ create mode 100644 documentation/manpages/sdk/dotnet-new-search.1
+ create mode 100644 documentation/manpages/sdk/dotnet-new-uninstall.1
+ create mode 100644 documentation/manpages/sdk/dotnet-new-update.1
+ create mode 100644 documentation/manpages/sdk/dotnet-nuget-add-source.1
+ create mode 100644 documentation/manpages/sdk/dotnet-nuget-disable-source.1
+ create mode 100644 documentation/manpages/sdk/dotnet-nuget-enable-source.1
+ create mode 100644 documentation/manpages/sdk/dotnet-nuget-list-source.1
+ create mode 100644 documentation/manpages/sdk/dotnet-nuget-remove-source.1
+ create mode 100644 documentation/manpages/sdk/dotnet-nuget-sign.1
+ create mode 100644 documentation/manpages/sdk/dotnet-nuget-trust.1
+ create mode 100644 documentation/manpages/sdk/dotnet-nuget-update-source.1
+ create mode 100644 documentation/manpages/sdk/dotnet-nuget-verify.1
+ create mode 100644 documentation/manpages/sdk/dotnet-sdk-check.1
+ create mode 100644 documentation/manpages/sdk/dotnet-tool-restore.1
+ create mode 100644 documentation/manpages/sdk/dotnet-tool-run.1
+ create mode 100644 documentation/manpages/sdk/dotnet-tool-search.1
+ create mode 100644 documentation/manpages/sdk/dotnet-workload-install.1
+ create mode 100644 documentation/manpages/sdk/dotnet-workload-list.1
+ create mode 100644 documentation/manpages/sdk/dotnet-workload-repair.1
+ create mode 100644 documentation/manpages/sdk/dotnet-workload-restore.1
+ create mode 100644 documentation/manpages/sdk/dotnet-workload-search.1
+ create mode 100644 documentation/manpages/sdk/dotnet-workload-uninstall.1
+ create mode 100644 documentation/manpages/sdk/dotnet-workload-update.1
+ mode change 100644 => 100755 documentation/manpages/tool/man-pandoc-filter.py
+ create mode 100755 documentation/manpages/tool/remove-metadata-and-embed-includes.py
+ mode change 100644 => 100755 documentation/manpages/tool/run_docker.sh
+ mode change 100644 => 100755 documentation/manpages/tool/update-man-pages.sh
+
+diff --git a/documentation/manpages/sdk/dotnet-add-package.1 b/documentation/manpages/sdk/dotnet-add-package.1
+index deed5dd94f..6ec932214f 100644
+--- a/documentation/manpages/sdk/dotnet-add-package.1
++++ b/documentation/manpages/sdk/dotnet-add-package.1
+@@ -1,28 +1,36 @@
+-.\" Automatically generated by Pandoc 2.7.2
++.\" Automatically generated by Pandoc 2.14.1
+ .\"
+-.TH "dotnet add package command" "1" "" "" ".NET Core"
++.TH "" "1" "" "" ".NET"
+ .hy
+ .SH dotnet add package
+ .PP
+-\f[B]This article applies to: \[OK]\f[R] .NET Core 1.x SDK and later versions
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.x SDK and later versions
+ .SH NAME
+ .PP
+ \f[C]dotnet add package\f[R] - Adds a package reference to a project file.
+ .SH SYNOPSIS
+-.PP
+-\f[C]dotnet add [<PROJECT>] package <PACKAGE_NAME> [-h|--help] [-f|--framework] [--interactive] [-n|--no-restore] [--package-directory] [-s|--source] [-v|--version]\f[R]
++.IP
++.nf
++\f[C]
++dotnet add [<PROJECT>] package <PACKAGE_NAME>
++ [-f|--framework <FRAMEWORK>] [--interactive]
++ [-n|--no-restore] [--package-directory <PACKAGE_DIRECTORY>]
++ [--prerelease] [-s|--source <SOURCE>] [-v|--version <VERSION>]
++
++dotnet add package -h|--help
++\f[R]
++.fi
+ .SH DESCRIPTION
+ .PP
+ The \f[C]dotnet add package\f[R] command provides a convenient option to add a package reference to a project file.
+ After running the command, there\[cq]s a compatibility check to ensure the package is compatible with the frameworks in the project.
+ If the check passes, a \f[C]<PackageReference>\f[R] element is added to the project file and dotnet restore is run.
+ .PP
+-.PP
+ For example, adding \f[C]Newtonsoft.Json\f[R] to \f[I]ToDo.csproj\f[R] produces output similar to the following example:
+ .IP
+ .nf
+ \f[C]
+- Writing C:\[rs]Users\[rs]mairaw\[rs]AppData\[rs]Local\[rs]Temp\[rs]tmp95A8.tmp
++Writing C:\[rs]Users\[rs]me\[rs]AppData\[rs]Local\[rs]Temp\[rs]tmp95A8.tmp
+ info : Adding PackageReference for package \[aq]Newtonsoft.Json\[aq] into project \[aq]C:\[rs]projects\[rs]ToDo\[rs]ToDo.csproj\[aq].
+ log : Restoring packages for C:\[rs]Temp\[rs]projects\[rs]consoleproj\[rs]consoleproj.csproj...
+ info : GET https://api.nuget.org/v3-flatcontainer/newtonsoft.json/index.json
+@@ -42,6 +50,14 @@ The \f[I]ToDo.csproj\f[R] file now contains a \f[C]<PackageReference>\f[R] eleme
+ <PackageReference Include=\[dq]Newtonsoft.Json\[dq] Version=\[dq]12.0.1\[dq] />
+ \f[R]
+ .fi
++.SS Implicit restore
++.PP
++You don\[cq]t have to run \f[C]dotnet restore\f[R] because it\[cq]s run implicitly by all commands that require a restore to occur, such as \f[C]dotnet new\f[R], \f[C]dotnet build\f[R], \f[C]dotnet run\f[R], \f[C]dotnet test\f[R], \f[C]dotnet publish\f[R], and \f[C]dotnet pack\f[R].
++To disable implicit restore, use the \f[C]--no-restore\f[R] option.
++.PP
++The \f[C]dotnet restore\f[R] command is still useful in certain scenarios where explicitly restoring makes sense, such as continuous integration builds in Azure DevOps Services or in build systems that need to explicitly control when the restore occurs.
++.PP
++For information about how to manage NuGet feeds, see the \f[C]dotnet restore\f[R] documentation.
+ .SS Arguments
+ .IP \[bu] 2
+ \f[B]\f[CB]PROJECT\f[B]\f[R]
+@@ -64,17 +80,17 @@ The package reference to add.
+ Adds a package reference only when targeting a specific framework.
+ .RE
+ .IP \[bu] 2
+-\f[B]\f[CB]-h|--help\f[B]\f[R]
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
+ .RS 2
+ .PP
+-Prints out a short help for the command.
++Prints out a description of how to use the command.
+ .RE
+ .IP \[bu] 2
+ \f[B]\f[CB]--interactive\f[B]\f[R]
+ .RS 2
+ .PP
+-Allows the command to stop and wait for user input or action (for example, to complete authentication).
+-Available since .NET Core 2.1 SDK, version 2.1.400 or later.
++Allows the command to stop and wait for user input or action.
++For example, to complete authentication.
+ .RE
+ .IP \[bu] 2
+ \f[B]\f[CB]-n|--no-restore\f[B]\f[R]
+@@ -91,10 +107,17 @@ The default package restore location is \f[C]%userprofile%\[rs].nuget\[rs]packag
+ For more information, see Managing the global packages, cache, and temp folders in NuGet.
+ .RE
+ .IP \[bu] 2
++\f[B]\f[CB]--prerelease\f[B]\f[R]
++.RS 2
++.PP
++Allows prerelease packages to be installed.
++Available since .NET Core 5 SDK
++.RE
++.IP \[bu] 2
+ \f[B]\f[CB]-s|--source <SOURCE>\f[B]\f[R]
+ .RS 2
+ .PP
+-The NuGet package source to use during the restore operation.
++The URI of the NuGet package source to use during the restore operation.
+ .RE
+ .IP \[bu] 2
+ \f[B]\f[CB]-v|--version <VERSION>\f[B]\f[R]
+diff --git a/documentation/manpages/sdk/dotnet-add-reference.1 b/documentation/manpages/sdk/dotnet-add-reference.1
+index 5389d478ce..4ca212564a 100644
+--- a/documentation/manpages/sdk/dotnet-add-reference.1
++++ b/documentation/manpages/sdk/dotnet-add-reference.1
+@@ -1,16 +1,23 @@
+-.\" Automatically generated by Pandoc 2.7.2
++.\" Automatically generated by Pandoc 2.14.1
+ .\"
+-.TH "dotnet add reference command" "1" "" "" ".NET Core"
++.TH "" "1" "" "" ".NET"
+ .hy
+ .SH dotnet add reference
+ .PP
+-\f[B]This article applies to: \[OK]\f[R] .NET Core 1.x SDK and later versions
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.x SDK and later versions
+ .SH NAME
+ .PP
+ \f[C]dotnet add reference\f[R] - Adds project-to-project (P2P) references.
+ .SH SYNOPSIS
+-.PP
+-\f[C]dotnet add [<PROJECT>] reference [-f|--framework] <PROJECT_REFERENCES> [-h|--help] [--interactive]\f[R]
++.IP
++.nf
++\f[C]
++dotnet add [<PROJECT>] reference [-f|--framework <FRAMEWORK>]
++ [--interactive] <PROJECT_REFERENCES>
++
++dotnet add reference -h|--help
++\f[R]
++.fi
+ .SH DESCRIPTION
+ .PP
+ The \f[C]dotnet add reference\f[R] command provides a convenient option to add project references to a project.
+@@ -39,26 +46,27 @@ If not specified, the command searches the current directory for one.
+ .PP
+ Project-to-project (P2P) references to add.
+ Specify one or more projects.
+-Glob patterns are supported on Unix/Linux-based systems.
++Glob patterns (https://en.wikipedia.org/wiki/Glob_(programming)) are supported on Unix/Linux-based systems.
+ .RE
+ .SH OPTIONS
+ .IP \[bu] 2
+-\f[B]\f[CB]-h|--help\f[B]\f[R]
++\f[B]\f[CB]-f|--framework <FRAMEWORK>\f[B]\f[R]
+ .RS 2
+ .PP
+-Prints out a short help for the command.
++Adds project references only when targeting a specific framework using the TFM format.
+ .RE
+ .IP \[bu] 2
+-\f[B]\f[CB]-f|--framework <FRAMEWORK>\f[B]\f[R]
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
+ .RS 2
+ .PP
+-Adds project references only when targeting a specific framework.
++Prints out a description of how to use the command.
+ .RE
+ .IP \[bu] 2
+ \f[B]\f[CB]--interactive\f[B]\f[R]
+ .RS 2
+ .PP
+-Allows the command to stop and wait for user input or action (for example, to complete authentication).
++Allows the command to stop and wait for user input or action.
++For example, to complete authentication.
+ Available since .NET Core 3.0 SDK.
+ .RE
+ .SH EXAMPLES
+diff --git a/documentation/manpages/sdk/dotnet-build-server.1 b/documentation/manpages/sdk/dotnet-build-server.1
+index e378f13a32..e87f43a4c5 100644
+--- a/documentation/manpages/sdk/dotnet-build-server.1
++++ b/documentation/manpages/sdk/dotnet-build-server.1
+@@ -1,10 +1,10 @@
+-.\" Automatically generated by Pandoc 2.7.2
++.\" Automatically generated by Pandoc 2.14.1
+ .\"
+-.TH "dotnet build-server command" "1" "" "" ".NET Core"
++.TH "" "1" "" "" ".NET"
+ .hy
+ .SH dotnet build-server
+ .PP
+-\f[B]This article applies to: \[OK]\f[R] .NET Core 2.1 SDK and later versions
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.1 SDK and later versions
+ .SH NAME
+ .PP
+ \f[C]dotnet build-server\f[R] - Interacts with servers started by a build.
+@@ -13,8 +13,10 @@
+ .nf
+ \f[C]
+ dotnet build-server shutdown [--msbuild] [--razor] [--vbcscompiler]
+-dotnet build-server shutdown [-h|--help]
+-dotnet build-server [-h|--help]
++
++dotnet build-server shutdown -h|--help
++
++dotnet build-server -h|--help
+ \f[R]
+ .fi
+ .SS Commands
+@@ -27,10 +29,10 @@ By default, all servers are shut down.
+ .RE
+ .SH OPTIONS
+ .IP \[bu] 2
+-\f[B]\f[CB]-h|--help\f[B]\f[R]
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
+ .RS 2
+ .PP
+-Prints out a short help for the command.
++Prints out a description of how to use the command.
+ .RE
+ .IP \[bu] 2
+ \f[B]\f[CB]--msbuild\f[B]\f[R]
+diff --git a/documentation/manpages/sdk/dotnet-build.1 b/documentation/manpages/sdk/dotnet-build.1
+index 26787ebed2..8d8dc8eff0 100644
+--- a/documentation/manpages/sdk/dotnet-build.1
++++ b/documentation/manpages/sdk/dotnet-build.1
+@@ -1,10 +1,10 @@
+-.\" Automatically generated by Pandoc 2.7.2
++.\" Automatically generated by Pandoc 2.14.1
+ .\"
+-.TH "dotnet build command" "1" "" "" ".NET Core"
++.TH "" "1" "" "" ".NET"
+ .hy
+ .SH dotnet build
+ .PP
+-\f[B]This article applies to: \[OK]\f[R] .NET Core 1.x SDK and later versions
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.x SDK and later versions
+ .SH NAME
+ .PP
+ \f[C]dotnet build\f[R] - Builds a project and all of its dependencies.
+@@ -12,11 +12,15 @@
+ .IP
+ .nf
+ \f[C]
+-dotnet build [<PROJECT>|<SOLUTION>] [-c|--configuration] [-f|--framework] [--force]
+- [--interactive] [--no-dependencies] [--no-incremental] [--no-restore] [--nologo]
+- [-o|--output] [-r|--runtime] [-v|--verbosity] [--version-suffix]
++dotnet build [<PROJECT>|<SOLUTION>] [-a|--arch <ARCHITECTURE>]
++ [-c|--configuration <CONFIGURATION>] [-f|--framework <FRAMEWORK>]
++ [--force] [--interactive] [--no-dependencies] [--no-incremental]
++ [--no-restore] [--nologo] [--no-self-contained] [--os <OS>]
++ [-o|--output <OUTPUT_DIRECTORY>] [-r|--runtime <RUNTIME_IDENTIFIER>]
++ [--self-contained [true|false]] [--source <SOURCE>]
++ [-v|--verbosity <LEVEL>] [--version-suffix <VERSION_SUFFIX>]
+
+-dotnet build [-h|--help]
++dotnet build -h|--help
+ \f[R]
+ .fi
+ .SH DESCRIPTION
+@@ -39,18 +43,26 @@ For executable projects targeting versions earlier than .NET Core 3.0, library d
+ They\[cq]re resolved from the NuGet global packages folder at run time.
+ With that in mind, the product of \f[C]dotnet build\f[R] isn\[cq]t ready to be transferred to another machine to run.
+ To create a version of the application that can be deployed, you need to publish it (for example, with the dotnet publish command).
+-For more information, see .NET Core Application Deployment.
++For more information, see .NET Application Deployment.
+ .PP
+ For executable projects targeting .NET Core 3.0 and later, library dependencies are copied to the output folder.
+ This means that if there isn\[cq]t any other publish-specific logic (such as Web projects have), the build output should be deployable.
++.SS Implicit restore
+ .PP
+ Building requires the \f[I]project.assets.json\f[R] file, which lists the dependencies of your application.
+ The file is created when \f[C]dotnet restore\f[R] is executed.
+ Without the assets file in place, the tooling can\[cq]t resolve reference assemblies, which results in errors.
+-With .NET Core 1.x SDK, you needed to explicitly run \f[C]dotnet restore\f[R] before running \f[C]dotnet build\f[R].
+-Starting with .NET Core 2.0 SDK, \f[C]dotnet restore\f[R] runs implicitly when you run \f[C]dotnet build\f[R].
+-If you want to disable implicit restore when running the build command, you can pass the \f[C]--no-restore\f[R] option.
+ .PP
++You don\[cq]t have to run \f[C]dotnet restore\f[R] because it\[cq]s run implicitly by all commands that require a restore to occur, such as \f[C]dotnet new\f[R], \f[C]dotnet build\f[R], \f[C]dotnet run\f[R], \f[C]dotnet test\f[R], \f[C]dotnet publish\f[R], and \f[C]dotnet pack\f[R].
++To disable implicit restore, use the \f[C]--no-restore\f[R] option.
++.PP
++The \f[C]dotnet restore\f[R] command is still useful in certain scenarios where explicitly restoring makes sense, such as continuous integration builds in Azure DevOps Services or in build systems that need to explicitly control when the restore occurs.
++.PP
++For information about how to manage NuGet feeds, see the \f[C]dotnet restore\f[R] documentation.
++.PP
++This command supports the \f[C]dotnet restore\f[R] options when passed in the long form (for example, \f[C]--source\f[R]).
++Short form options, such as \f[C]-s\f[R], are not supported.
++.SS Executable or library output
+ .PP
+ Whether the project is executable or not is determined by the \f[C]<OutputType>\f[R] property in the project file.
+ The following example shows a project that produces executable code:
+@@ -73,8 +85,17 @@ For more information, see Incremental Builds.
+ In addition to its options, the \f[C]dotnet build\f[R] command accepts MSBuild options, such as \f[C]-p\f[R] for setting properties or \f[C]-l\f[R] to define a logger.
+ For more information about these options, see the MSBuild Command-Line Reference.
+ Or you can also use the dotnet msbuild command.
++.RS
++.PP
++[!NOTE] When \f[C]dotnet build\f[R] is run automatically by \f[C]dotnet run\f[R], arguments like \f[C]-property:property=value\f[R] aren\[cq]t respected.
++.RE
+ .PP
+ Running \f[C]dotnet build\f[R] is equivalent to running \f[C]dotnet msbuild -restore\f[R]; however, the default verbosity of the output is different.
++.SS Workload manifest downloads
++.PP
++When you run this command, it initiates an asynchronous background download of advertising manifests for workloads.
++If the download is still running when this command finishes, the download is stopped.
++For more information, see Advertising manifests.
+ .SS Arguments
+ .PP
+ \f[C]PROJECT | SOLUTION\f[R]
+@@ -83,7 +104,17 @@ The project or solution file to build.
+ If a project or solution file isn\[cq]t specified, MSBuild searches the current working directory for a file that has a file extension that ends in either \f[I]proj\f[R] or \f[I]sln\f[R] and uses that file.
+ .SH OPTIONS
+ .IP \[bu] 2
+-\f[B]\f[CB]-c|--configuration {Debug|Release}\f[B]\f[R]
++\f[B]\f[CB]-a|--arch <ARCHITECTURE>\f[B]\f[R]
++.RS 2
++.PP
++Specifies the target architecture.
++This is a shorthand syntax for setting the Runtime Identifier (RID), where the provided value is combined with the default RID.
++For example, on a \f[C]win-x64\f[R] machine, specifying \f[C]--arch x86\f[R] sets the RID to \f[C]win-x86\f[R].
++If you use this option, don\[cq]t use the \f[C]-r|--runtime\f[R] option.
++Available since .NET 6 Preview 7.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-c|--configuration <CONFIGURATION>\f[B]\f[R]
+ .RS 2
+ .PP
+ Defines the build configuration.
+@@ -102,13 +133,12 @@ The framework must be defined in the project file.
+ .PP
+ Forces all dependencies to be resolved even if the last restore was successful.
+ Specifying this flag is the same as deleting the \f[I]project.assets.json\f[R] file.
+-Available since .NET Core 2.0 SDK.
+ .RE
+ .IP \[bu] 2
+-\f[B]\f[CB]-h|--help\f[B]\f[R]
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
+ .RS 2
+ .PP
+-Prints out a short help for the command.
++Prints out a description of how to use the command.
+ .RE
+ .IP \[bu] 2
+ \f[B]\f[CB]--interactive\f[B]\f[R]
+@@ -136,7 +166,6 @@ This flag turns off incremental compilation and forces a clean rebuild of the pr
+ .RS 2
+ .PP
+ Doesn\[cq]t execute an implicit restore during build.
+-Available since .NET Core 2.0 SDK.
+ .RE
+ .IP \[bu] 2
+ \f[B]\f[CB]--nologo\f[B]\f[R]
+@@ -146,6 +175,13 @@ Doesn\[cq]t display the startup banner or the copyright message.
+ Available since .NET Core 3.0 SDK.
+ .RE
+ .IP \[bu] 2
++\f[B]\f[CB]--no-self-contained\f[B]\f[R]
++.RS 2
++.PP
++Publishes the application as a framework dependent application.
++A compatible .NET runtime must be installed on the target machine to run the application.
++.RE
++.IP \[bu] 2
+ \f[B]\f[CB]-o|--output <OUTPUT_DIRECTORY>\f[B]\f[R]
+ .RS 2
+ .PP
+@@ -154,19 +190,44 @@ If not specified, the default path is \f[C]./bin/<configuration>/<framework>/\f[
+ For projects with multiple target frameworks (via the \f[C]TargetFrameworks\f[R] property), you also need to define \f[C]--framework\f[R] when you specify this option.
+ .RE
+ .IP \[bu] 2
++\f[B]\f[CB]--os <OS>\f[B]\f[R]
++.RS 2
++.PP
++Specifies the target operating system (OS).
++This is a shorthand syntax for setting the Runtime Identifier (RID), where the provided value is combined with the default RID.
++For example, on a \f[C]win-x64\f[R] machine, specifying \f[C]--os os\f[R] sets the RID to \f[C]os-x64\f[R].
++If you use this option, don\[cq]t use the \f[C]-r|--runtime\f[R] option.
++Available since .NET 6 Preview 7.
++.RE
++.IP \[bu] 2
+ \f[B]\f[CB]-r|--runtime <RUNTIME_IDENTIFIER>\f[B]\f[R]
+ .RS 2
+ .PP
+ Specifies the target runtime.
+ For a list of Runtime Identifiers (RIDs), see the RID catalog.
++If you use this option, use \f[C]--self-contained\f[R] or \f[C]--no-self-contained\f[R] also.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--self-contained [true|false]\f[B]\f[R]
++.RS 2
++.PP
++Publishes the .NET runtime with the application so the runtime doesn\[cq]t need to be installed on the target machine.
++The default is \f[C]true\f[R] if a runtime identifier is specified.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--source <SOURCE>\f[B]\f[R]
++.RS 2
++.PP
++The URI of the NuGet package source to use during the restore operation.
+ .RE
+ .IP \[bu] 2
+ \f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
+ .RS 2
+ .PP
+-Sets the MSBuild verbosity level.
++Sets the verbosity level of the command.
+ Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
+ The default is \f[C]minimal\f[R].
++For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
+ .RE
+ .IP \[bu] 2
+ \f[B]\f[CB]--version-suffix <VERSION_SUFFIX>\f[B]\f[R]
+@@ -208,7 +269,7 @@ dotnet build --runtime ubuntu.18.04-x64
+ .fi
+ .RE
+ .IP \[bu] 2
+-Build the project and use the specified NuGet package source during the restore operation (.NET Core 2.0 SDK and later versions):
++Build the project and use the specified NuGet package source during the restore operation:
+ .RS 2
+ .IP
+ .nf
+diff --git a/documentation/manpages/sdk/dotnet-clean.1 b/documentation/manpages/sdk/dotnet-clean.1
+index 008eade6f1..2c0c8cd5d7 100644
+--- a/documentation/manpages/sdk/dotnet-clean.1
++++ b/documentation/manpages/sdk/dotnet-clean.1
+@@ -1,10 +1,10 @@
+-.\" Automatically generated by Pandoc 2.7.2
++.\" Automatically generated by Pandoc 2.14.1
+ .\"
+-.TH "dotnet clean command" "1" "" "" ".NET Core"
++.TH "" "1" "" "" ".NET"
+ .hy
+ .SH dotnet clean
+ .PP
+-\f[B]This topic applies to: \[OK]\f[R] .NET Core 1.x SDK and later versions
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.x SDK and later versions
+ .SH NAME
+ .PP
+ \f[C]dotnet clean\f[R] - Cleans the output of a project.
+@@ -12,9 +12,12 @@
+ .IP
+ .nf
+ \f[C]
+-dotnet clean [<PROJECT>|<SOLUTION>] [-c|--configuration] [-f|--framework] [--interactive]
+- [--nologo] [-o|--output] [-r|--runtime] [-v|--verbosity]
+-dotnet clean [-h|--help]
++dotnet clean [<PROJECT>|<SOLUTION>] [-c|--configuration <CONFIGURATION>]
++ [-f|--framework <FRAMEWORK>] [--interactive]
++ [--nologo] [-o|--output <OUTPUT_DIRECTORY>]
++ [-r|--runtime <RUNTIME_IDENTIFIER>] [-v|--verbosity <LEVEL>]
++
++dotnet clean -h|--help
+ \f[R]
+ .fi
+ .SH DESCRIPTION
+@@ -31,11 +34,11 @@ The MSBuild project or solution to clean.
+ If a project or solution file is not specified, MSBuild searches the current working directory for a file that has a file extension that ends in \f[I]proj\f[R] or \f[I]sln\f[R], and uses that file.
+ .SH OPTIONS
+ .IP \[bu] 2
+-\f[B]\f[CB]-c|--configuration {Debug|Release}\f[B]\f[R]
++\f[B]\f[CB]-c|--configuration <CONFIGURATION>\f[B]\f[R]
+ .RS 2
+ .PP
+ Defines the build configuration.
+-The default value is \f[C]Debug\f[R].
++The default for most projects is \f[C]Debug\f[R], but you can override the build configuration settings in your project.
+ This option is only required when cleaning if you specified it during build time.
+ .RE
+ .IP \[bu] 2
+@@ -47,10 +50,10 @@ The framework must be defined in the project file.
+ If you specified the framework at build time, you must specify the framework when cleaning.
+ .RE
+ .IP \[bu] 2
+-\f[B]\f[CB]-h|--help\f[B]\f[R]
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
+ .RS 2
+ .PP
+-Prints out a short help for the command.
++Prints out a description of how to use the command.
+ .RE
+ .IP \[bu] 2
+ \f[B]\f[CB]--interactive\f[B]\f[R]
+@@ -80,15 +83,15 @@ Specify the \f[C]-f|--framework <FRAMEWORK>\f[R] switch with the output director
+ .PP
+ Cleans the output folder of the specified runtime.
+ This is used when a self-contained deployment was created.
+-Option available since .NET Core 2.0 SDK.
+ .RE
+ .IP \[bu] 2
+ \f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
+ .RS 2
+ .PP
+-Sets the MSBuild verbosity level.
++Sets the verbosity level of the command.
+ Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
+ The default is \f[C]normal\f[R].
++For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
+ .RE
+ .SH EXAMPLES
+ .IP \[bu] 2
+diff --git a/documentation/manpages/sdk/dotnet-environment-variables.1 b/documentation/manpages/sdk/dotnet-environment-variables.1
+new file mode 100644
+index 0000000000..61dd16b4b8
+--- /dev/null
++++ b/documentation/manpages/sdk/dotnet-environment-variables.1
+@@ -0,0 +1,135 @@
++.\" Automatically generated by Pandoc 2.14.1
++.\"
++.TH "" "1" "" "" ".NET"
++.hy
++.SH Environment variables used by .NET SDK, .NET CLI, and .NET runtime
++.PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.1 SDK and later versions
++.PP
++Use the following environment variables to configure the .NET SDK, .NET CLI, and .NET runtime.
++.SS \f[C]DOTNET_ROOT\f[R], \f[C]DOTNET_ROOT(x86)\f[R]
++.PP
++Specifies the location of the .NET runtimes, if they are not installed in the default location.
++The default location on Windows is \f[C]C:\[rs]Program Files\[rs]dotnet\f[R].
++The default location on Linux and macOS is \f[C]/usr/share/dotnet\f[R].
++This environment variable is used only when running apps via generated executables (apphosts).
++\f[C]DOTNET_ROOT(x86)\f[R] is used instead when running a 32-bit executable on a 64-bit OS.
++.SS \f[C]NUGET_PACKAGES\f[R]
++.PP
++The global packages folder.
++If not set, it defaults to \f[C]\[ti]/.nuget/packages\f[R] on Unix or \f[C]%userprofile%\[rs].nuget\[rs]packages\f[R] on Windows.
++.SS \f[C]DOTNET_SERVICING\f[R]
++.PP
++Specifies the location of the servicing index to use by the shared host when loading the runtime.
++.SS \f[C]DOTNET_NOLOGO\f[R]
++.PP
++Specifies whether .NET welcome and telemetry messages are displayed on first run.
++Set to \f[C]true\f[R] to mute these messages (values \f[C]true\f[R], \f[C]1\f[R], or \f[C]yes\f[R] accepted) or set to \f[C]false\f[R] to allow (values \f[C]false\f[R], \f[C]0\f[R], or \f[C]no\f[R] accepted).
++If not set, the default is \f[C]false\f[R] and the messages will be displayed on first run.
++This flag has no effect on telemetry (see \f[C]DOTNET_CLI_TELEMETRY_OPTOUT\f[R] for opting out of sending telemetry).
++.SS \f[C]DOTNET_CLI_TELEMETRY_OPTOUT\f[R]
++.PP
++Specifies whether data about the .NET tools usage is collected and sent to Microsoft.
++Set to \f[C]true\f[R] to opt-out of the telemetry feature (values \f[C]true\f[R], \f[C]1\f[R], or \f[C]yes\f[R] accepted).
++Otherwise, set to \f[C]false\f[R] to opt into the telemetry features (values \f[C]false\f[R], \f[C]0\f[R], or \f[C]no\f[R] accepted).
++If not set, the default is \f[C]false\f[R] and the telemetry feature is active.
++.SS \f[C]DOTNET_MULTILEVEL_LOOKUP\f[R]
++.PP
++Specifies whether .NET runtime, shared framework, or SDK are resolved from the global location.
++If not set, it defaults to 1 (logical \f[C]true\f[R]).
++Set to 0 (logical \f[C]false\f[R]) to not resolve from the global location and have isolated .NET installations.
++For more information about multi-level lookup, see Multi-level SharedFX Lookup (https://github.com/dotnet/core-setup/blob/master/Documentation/design-doc...).
++.SS \f[C]DOTNET_ROLL_FORWARD\f[R]
++.PP
++Determines roll forward behavior.
++For more information, see the \f[C]--roll-forward\f[R] option earlier in this article.
++\f[B]Available starting with .NET Core 3.x.\f[R]
++.SS \f[C]DOTNET_ROLL_FORWARD_TO_PRERELEASE\f[R]
++.PP
++If set to \f[C]1\f[R] (enabled), enables rolling forward to a pre-release version from a release version.
++By default (\f[C]0\f[R] - disabled), when a release version of .NET runtime is requested, roll-forward will only consider installed release versions.
++\f[B]Available starting with .NET Core 3.x.\f[R]
++.PP
++For more information, see Roll forward.
++.SS \f[C]DOTNET_ROLL_FORWARD_ON_NO_CANDIDATE_FX\f[R]
++.PP
++Disables minor version roll forward, if set to \f[C]0\f[R].
++For more information, see Roll forward.
++.PP
++This setting is superseded in .NET Core 3.0 by \f[C]DOTNET_ROLL_FORWARD\f[R].
++The new settings should be used instead.
++.SS \f[C]DOTNET_CLI_UI_LANGUAGE\f[R]
++.PP
++Sets the language of the CLI UI using a locale value such as \f[C]en-us\f[R].
++The supported values are the same as for Visual Studio.
++For more information, see the section on changing the installer language in the Visual Studio installation documentation.
++The .NET resource manager rules apply, so you don\[cq]t have to pick an exact match\[em]you can also pick descendants in the \f[C]CultureInfo\f[R] tree.
++For example, if you set it to \f[C]fr-CA\f[R], the CLI will find and use the \f[C]fr\f[R] translations.
++If you set it to a language that is not supported, the CLI falls back to English.
++.SS \f[C]DOTNET_DISABLE_GUI_ERRORS\f[R]
++.PP
++For GUI-enabled generated executables - disables dialog popup, which normally shows for certain classes of errors.
++It only writes to \f[C]stderr\f[R] and exits in those cases.
++.SS \f[C]DOTNET_ADDITIONAL_DEPS\f[R]
++.PP
++Equivalent to CLI option \f[C]--additional-deps\f[R].
++.SS \f[C]DOTNET_RUNTIME_ID\f[R]
++.PP
++Overrides the detected RID.
++.SS \f[C]DOTNET_SHARED_STORE\f[R]
++.PP
++Location of the \[lq]shared store\[rq] which assembly resolution falls back to in some cases.
++.SS \f[C]DOTNET_STARTUP_HOOKS\f[R]
++.PP
++List of assemblies to load and execute startup hooks from.
++.SS \f[C]DOTNET_BUNDLE_EXTRACT_BASE_DIR\f[R]
++.PP
++Specifies a directory to which a single-file application is extracted before it is executed.
++\f[B]Available starting with .NET Core 3.x.\f[R]
++.PP
++For more information, see Single-file executables.
++.SS \f[C]COREHOST_TRACE\f[R]
++.PP
++Controls diagnostics tracing from the hosting components, such as \f[C]dotnet.exe\f[R], \f[C]hostfxr\f[R], and \f[C]hostpolicy\f[R].
++.IP \[bu] 2
++\f[C]COREHOST_TRACE=[0/1]\f[R] - default is \f[C]0\f[R] - tracing disabled.
++If set to \f[C]1\f[R], diagnostics tracing is enabled.
++.IP \[bu] 2
++\f[C]COREHOST_TRACEFILE=<file path>\f[R] - only has effect if tracing is enabled via \f[C]COREHOST_TRACE=1\f[R].
++When set, the tracing information is written to the specified file, otherwise the tracing information is written to \f[C]stderr\f[R].
++\f[B]Available starting with .NET Core 3.x.\f[R]
++.IP \[bu] 2
++\f[C]COREHOST_TRACE_VERBOSITY=[1/2/3/4]\f[R] - default is \f[C]4\f[R].
++The setting is used only when tracing is enabled via \f[C]COREHOST_TRACE=1\f[R].
++\f[B]Available starting with .NET Core 3.x.\f[R]
++.RS 2
++.IP \[bu] 2
++\f[C]4\f[R] - all tracing information is written
++.IP \[bu] 2
++\f[C]3\f[R] - only informational, warning and error messages are written
++.IP \[bu] 2
++\f[C]2\f[R] - only warning and error messages are written
++.IP \[bu] 2
++\f[C]1\f[R] - only error messages are written
++.RE
++.PP
++The typical way to get detailed trace information about application startup is to set \f[C]COREHOST_TRACE=1\f[R] and\f[C]COREHOST_TRACEFILE=host_trace.txt\f[R] and then run the application.
++A new file \f[C]host_trace.txt\f[R] will be created in the current directory with the detailed information.
++.SS \f[C]DOTNET_CLI_WORKLOAD_UPDATE_NOTIFY_DISABLE\f[R]
++.PP
++Disables background download of advertising manifests for workloads.
++Default is \f[C]false\f[R] - not disabled.
++If set to \f[C]true\f[R], downloading is disabled.
++For more information, see Advertising manifests.
++.SS \f[C]DOTNET_CLI_WORKLOAD_UPDATE_NOTIFY_INTERVAL_HOURS\f[R]
++.PP
++Specifies the minimum number of hours between background downloads of advertising manifests for workloads.
++Default is \f[C]24\f[R] - no more frequently than once a day.
++For more information, see Advertising manifests.
++.SS See also
++.IP \[bu] 2
++dotnet command
++.IP \[bu] 2
++Runtime Configuration Files (https://github.com/dotnet/sdk/blob/main/documentation/specs/runtime-confi...)
++.IP \[bu] 2
++\&.NET runtime configuration settings
+diff --git a/documentation/manpages/sdk/dotnet-format.1 b/documentation/manpages/sdk/dotnet-format.1
+new file mode 100644
+index 0000000000..9ca1d4e620
+--- /dev/null
++++ b/documentation/manpages/sdk/dotnet-format.1
+@@ -0,0 +1,198 @@
++.\" Automatically generated by Pandoc 2.14.1
++.\"
++.TH "" "1" "" "" ".NET"
++.hy
++.SH dotnet format
++.PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET 6.x SDK and later versions
++.SH NAME
++.PP
++\f[C]dotnet format\f[R] - Formats code to match \f[C]editorconfig\f[R] settings.
++.SH SYNOPSIS
++.IP
++.nf
++\f[C]
++dotnet format [options] [<PROJECT | SOLUTION>]
++
++dotnet format -h|--help
++\f[R]
++.fi
++.SH DESCRIPTION
++.PP
++\f[C]dotnet format\f[R] is a code formatter that applies style preferences to a project or solution.
++Preferences will be read from an \f[I].editorconfig\f[R] file, if present, otherwise a default set of preferences will be used.
++For more information, see the EditorConfig documentation.
++.SS Arguments
++.PP
++\f[C]PROJECT | SOLUTION\f[R]
++.PP
++The MSBuild project or solution to run code formatting on.
++If a project or solution file is not specified, MSBuild searches the current working directory for a file that has a file extension that ends in \f[I]proj\f[R] or \f[I]sln\f[R], and uses that file.
++.SH OPTIONS
++.PP
++None of the options below are required for the \f[C]dotnet format\f[R] command to succeed but can be used to further customize what is formatted and by which rules.
++.IP \[bu] 2
++\f[B]\f[CB]--diagnostics <DIAGNOSTICS>\f[B]\f[R]
++.RS 2
++.PP
++A space-separated list of diagnostic IDs to use as a filter when fixing code style or third party issues.
++Default value is whichever IDs are listed in the \f[I]editorconfig\f[R] file.
++For a list of built-in analyzer rule IDs that you can specify, see the list of IDs for code-analysis quality rules.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--severity\f[B]\f[R]
++.RS 2
++.PP
++The minumum severity of diagnostics to fix.
++Allowed values are \f[C]info\f[R], \f[C]warn\f[R], and \f[C]error\f[R].
++The default value is \f[C]warn\f[R]
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--no-restore\f[B]\f[R]
++.RS 2
++.PP
++Doesn\[cq]t execute an implicit restore before formatting.
++Default is to do implicit restore.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--verify-no-changes\f[B]\f[R]
++.RS 2
++.PP
++Verifies that no formatting changes would be performed.
++Terminates with a non zero exit code if any files would have been formatted.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--include <INCLUDE>\f[B]\f[R]
++.RS 2
++.PP
++A space-separated list of relative file or folder paths to include in formatting.
++All files in the solution or project are formatted if empty.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--exclude <EXCLUDE>\f[B]\f[R]
++.RS 2
++.PP
++A space-separated list of relative file or folder paths to exclude from formatting.
++The default is none.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--include-generated\f[B]\f[R]
++.RS 2
++.PP
++Formats files generated by the SDK.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
++.RS 2
++.PP
++Sets the verbosity level.
++Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
++Default value is \f[C]m[inimal]\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--binarylog <BINARY-LOG-PATH>\f[B]\f[R]
++.RS 2
++.PP
++Logs all project or solution load information to a binary log file.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--report <REPORT-PATH>\f[B]\f[R]
++.RS 2
++.PP
++Produces a JSON report in the directory specified by \f[C]<REPORT_PATH>\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-h|--help\f[B]\f[R]
++.RS 2
++.PP
++Shows help and usage information
++.RE
++.SS Subcommands
++.SS Whitespace
++.PP
++\f[C]dotnet format whitespace\f[R] - Formats code to match \f[C]editorconfig\f[R] settings for whitespace.
++.SH DESCRIPTION
++.PP
++The \f[C]dotnet format whitespace\f[R] subcommand will only run formatting rules associated with whitespace formatting.
++For a complete list of possible formatting options that you can specify in your \f[I].editorconfig\f[R] file, see the whitespace formatting documentation.
++.SS Style
++.PP
++\f[C]dotnet format style\f[R] - Formats code to match EditorConfig settings for code style.
++.SH DESCRIPTION
++.PP
++The \f[C]dotnet format style\f[R] subcommand will only run formatting rule associated with code style formatting.
++For a complete list of possible formatting options that you can specify in your \f[C]editorconfig\f[R] file see the code style documentation.
++.SH OPTIONS
++.IP \[bu] 2
++\f[B]\f[CB]--severity\f[B]\f[R]
++.RS 2
++.PP
++The minimum severity of diagnostics to fix.
++Allowed values are \f[C]info\f[R], \f[C]warn\f[R], and \f[C]error\f[R].
++The default value is \f[C]warn\f[R]
++.RE
++.SS Analyzers
++.PP
++\f[C]dotnet format analyzers\f[R] - Formats code to match \f[C]editorconfig\f[R] settings for analyzers.
++.SH DESCRIPTION
++.PP
++The \f[C]dotnet format analyzers\f[R] subcommand will only run formatting rule associated with analyzers.
++For a list of possible analyzer rules that you can specify in your \f[C]editorconfig\f[R] file see the list of ids for code-analysis quality rules.
++.SH OPTIONS
++.IP \[bu] 2
++\f[B]\f[CB]--diagnostics <DIAGNOSTICS>\f[B]\f[R]
++.RS 2
++.PP
++A space separated list of diagnostic ids to use as a filter when fixing code quality or 3rd party issues.
++Default value is whichever ids are listed in the \f[C]editorconfig\f[R] file.
++For a list of built-in analyzer rule ids that you can specify see the list of ids see the documentation of code-analysis quality rules.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--severity\f[B]\f[R]
++.RS 2
++.PP
++The minimum severity of diagnostics to fix.
++Allowed values are \f[C]info\f[R], \f[C]warn\f[R], and \f[C]error\f[R].
++The default value is \f[C]warn\f[R]
++.RE
++.SH EXAMPLES
++.IP \[bu] 2
++Format all code in the solution:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet format ./solution.sln
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Clean up all code in the application project:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet format ./src/application.csproj
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Verify that all code is correctly formatted:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet format --verify-no-changes
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Clean up all code in the \f[I]src\f[R] and \f[I]tests\f[R] directory but not in \f[I]src/submodule-a\f[R]:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet format --include ./src/ ./tests/ --exclude ./src/submodule-a/
++\f[R]
++.fi
++.RE
+diff --git a/documentation/manpages/sdk/dotnet-help.1 b/documentation/manpages/sdk/dotnet-help.1
+index c60cece94c..0fe1fe7117 100644
+--- a/documentation/manpages/sdk/dotnet-help.1
++++ b/documentation/manpages/sdk/dotnet-help.1
+@@ -1,16 +1,20 @@
+-.\" Automatically generated by Pandoc 2.7.2
++.\" Automatically generated by Pandoc 2.14.1
+ .\"
+-.TH "dotnet help command" "1" "" "" ".NET Core"
++.TH "" "1" "" "" ".NET"
+ .hy
+ .SH dotnet help reference
+ .PP
+-\f[B]This article applies to: \[OK]\f[R] .NET Core 2.0 SDK and later versions
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.0 SDK and later versions
+ .SH NAME
+ .PP
+ \f[C]dotnet help\f[R] - Shows more detailed documentation online for the specified command.
+ .SH SYNOPSIS
+-.PP
+-\f[C]dotnet help <COMMAND_NAME> [-h|--help]\f[R]
++.IP
++.nf
++\f[C]
++dotnet help <COMMAND_NAME> [-h|--help]
++\f[R]
++.fi
+ .SH DESCRIPTION
+ .PP
+ The \f[C]dotnet help\f[R] command opens up the reference page for more detailed information about the specified command at docs.microsoft.com.
+@@ -19,15 +23,15 @@ The \f[C]dotnet help\f[R] command opens up the reference page for more detailed
+ \f[B]\f[CB]COMMAND_NAME\f[B]\f[R]
+ .RS 2
+ .PP
+-Name of the .NET Core CLI command.
++Name of the .NET CLI command.
+ For a list of the valid CLI commands, see CLI commands.
+ .RE
+ .SH OPTIONS
+ .IP \[bu] 2
+-\f[B]\f[CB]-h|--help\f[B]\f[R]
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
+ .RS 2
+ .PP
+-Prints out a short help for the command.
++Prints out a description of how to use the command.
+ .RE
+ .SH EXAMPLES
+ .IP \[bu] 2
+diff --git a/documentation/manpages/sdk/dotnet-install-script.1 b/documentation/manpages/sdk/dotnet-install-script.1
+index 09d91ee3fa..5a05a02300 100644
+--- a/documentation/manpages/sdk/dotnet-install-script.1
++++ b/documentation/manpages/sdk/dotnet-install-script.1
+@@ -1,51 +1,125 @@
+-.\" Automatically generated by Pandoc 2.7.2
++.\" Automatically generated by Pandoc 2.14.1
+ .\"
+-.TH "dotnet-install scripts" "1" "" "" ".NET Core"
++.TH "" "1" "" "" ".NET"
+ .hy
+ .SH dotnet-install scripts reference
+ .SH NAME
+ .PP
+-\f[C]dotnet-install.ps1\f[R] | \f[C]dotnet-install.sh\f[R] - Script used to install the .NET Core CLI tools and the shared runtime.
++\f[C]dotnet-install.ps1\f[R] | \f[C]dotnet-install.sh\f[R] - Script used to install the .NET SDK and the shared runtime.
+ .SH SYNOPSIS
+ .PP
+ Windows:
++.IP
++.nf
++\f[C]
++dotnet-install.ps1 [-Architecture <ARCHITECTURE>] [-AzureFeed]
++ [-Channel <CHANNEL>] [-DryRun] [-FeedCredential]
++ [-InstallDir <DIRECTORY>] [-JSonFile <JSONFILE>]
++ [-NoCdn] [-NoPath] [-ProxyAddress] [-ProxyBypassList <LIST_OF_URLS>]
++ [-ProxyUseDefaultCredentials] [-Quality <QUALITY>] [-Runtime <RUNTIME>]
++ [-SkipNonVersionedFiles] [-UncachedFeed] [-Verbose]
++ [-Version <VERSION>]
++
++Get-Help ./dotnet-install.ps1
++\f[R]
++.fi
+ .PP
+-\f[C]dotnet-install.ps1 [-Channel] [-Version] [-InstallDir] [-Architecture] [-SharedRuntime] [-Runtime] [-DryRun] [-NoPath] [-Verbose] [-AzureFeed] [-UncachedFeed] [-NoCdn] [-FeedCredential] [-ProxyAddress] [-ProxyUseDefaultCredentials] [-SkipNonVersionedFiles] [-Help]\f[R]
+-.PP
+-macOS/Linux:
++Linux/macOS:
++.IP
++.nf
++\f[C]
++dotnet-install.sh [--architecture <ARCHITECTURE>] [--azure-feed]
++ [--channel <CHANNEL>] [--dry-run] [--feed-credential]
++ [--install-dir <DIRECTORY>] [--jsonfile <JSONFILE>]
++ [--no-cdn] [--no-path] [--quality <QUALITY>]
++ [--runtime <RUNTIME>] [--runtime-id <RID>]
++ [--skip-non-versioned-files] [--uncached-feed] [--verbose]
++ [--version <VERSION>]
++
++dotnet-install.sh --help
++\f[R]
++.fi
+ .PP
+-\f[C]dotnet-install.sh [--channel] [--version] [--install-dir] [--architecture] [--runtime] [--dry-run] [--no-path] [--verbose] [--azure-feed] [--uncached-feed] [--no-cdn] [--feed-credential] [--runtime-id] [--skip-non-versioned-files] [--help]\f[R]
++The bash script also reads PowerShell switches, so you can use PowerShell switches with the script on Linux/macOS systems.
+ .SH DESCRIPTION
+ .PP
+-The \f[C]dotnet-install\f[R] scripts are used to perform a non-admin installation of the .NET Core SDK, which includes the .NET Core CLI tools and the shared runtime.
++The \f[C]dotnet-install\f[R] scripts perform a non-admin installation of the .NET SDK, which includes the .NET CLI and the shared runtime.
++There are two scripts:
++.IP \[bu] 2
++A PowerShell script that works on Windows.
++.IP \[bu] 2
++A bash script that works on Linux/macOS.
++.RS
+ .PP
+-We recommend that you use the stable version that is hosted on .NET Core main website.
+-The direct paths to the scripts are:
++[!NOTE] .NET collects telemetry data.
++To learn more and how to opt out, see .NET SDK telemetry.
++.RE
++.SS Purpose
++.PP
++The intended use of the scripts is for Continuous Integration (CI) scenarios, where:
++.IP \[bu] 2
++The SDK needs to be installed without user interaction and without admin rights.
++.IP \[bu] 2
++The SDK installation doesn\[cq]t need to persist across multiple CI runs.
++.RS 2
++.PP
++The typical sequence of events:
++.IP \[bu] 2
++CI is triggered.
++.IP \[bu] 2
++CI installs the SDK using one of these scripts.
++.IP \[bu] 2
++CI finishes its work and clears temporary data including the SDK installation.
++.RE
++.PP
++To set up a development environment or to run apps, use the installers rather than these scripts.
++.SS Recommended version
++.PP
++We recommend that you use the stable version of the scripts:
+ .IP \[bu] 2
+-https://dot.net/v1/dotnet-install.sh (bash, UNIX)
++Bash (Linux/macOS): <https://dot.net/v1/dotnet-install.sh>
+ .IP \[bu] 2
+-https://dot.net/v1/dotnet-install.ps1 (Powershell, Windows)
++PowerShell (Windows): <https://dot.net/v1/dotnet-install.ps1>
++.SS Script behavior
+ .PP
+-The main usefulness of these scripts is in automation scenarios and non-admin installations.
+-There are two scripts: one is a PowerShell script that works on Windows, and the other is a bash script that works on Linux/macOS.
+ Both scripts have the same behavior.
+-The bash script also reads PowerShell switches, so you can use PowerShell switches with the script on Linux/macOS systems.
++They download the ZIP/tarball file from the CLI build drops and proceed to install it in either the default location or in a location specified by \f[C]-InstallDir|--install-dir\f[R].
+ .PP
+-The installation scripts download the ZIP/tarball file from the CLI build drops and proceed to install it in either the default location or in a location specified by \f[C]-InstallDir|--install-dir\f[R].
+ By default, the installation scripts download the SDK and install it.
+-If you wish to only obtain the shared runtime, specify the \f[C]--runtime\f[R] argument.
++If you wish to only obtain the shared runtime, specify the \f[C]-Runtime|--runtime\f[R] argument.
+ .PP
+ By default, the script adds the install location to the $PATH for the current session.
+-Override this default behavior by specifying the \f[C]--no-path\f[R] argument.
++Override this default behavior by specifying the \f[C]-NoPath|--no-path\f[R] argument.
++The script doesn\[cq]t set the \f[C]DOTNET_ROOT\f[R] environment variable.
+ .PP
+ Before running the script, install the required dependencies.
+ .PP
+-You can install a specific version using the \f[C]--version\f[R] argument.
+-The version must be specified as a three-part version (for example, 1.0.0-13232).
+-If not provided, it uses the \f[C]latest\f[R] version.
++You can install a specific version using the \f[C]-Version|--version\f[R] argument.
++The version must be specified as a three-part version number, such as \f[C]2.1.0\f[R].
++If the version isn\[cq]t specified, the script installs the \f[C]latest\f[R] version.
++.PP
++The install scripts do not update the registry on Windows.
++They just download the zipped binaries and copy them to a folder.
++If you want registry key values to be updated, use the .NET installers.
+ .SH OPTIONS
+ .IP \[bu] 2
+-\f[B]\f[CB]-Channel <CHANNEL>\f[B]\f[R]
++\f[B]\f[CB]-Architecture|--architecture <ARCHITECTURE>\f[B]\f[R]
++.RS 2
++.PP
++Architecture of the .NET binaries to install.
++Possible values are \f[C]<auto>\f[R], \f[C]amd64\f[R], \f[C]x64\f[R], \f[C]x86\f[R], \f[C]arm64\f[R], and \f[C]arm\f[R].
++The default value is \f[C]<auto>\f[R], which represents the currently running OS architecture.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-AzureFeed|--azure-feed\f[B]\f[R]
++.RS 2
++.PP
++Specifies the URL for the Azure feed to the installer.
++We recommended that you don\[cq]t change this value.
++The default value is \f[C]https://dotnetcli.azureedge.net/dotnet\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-Channel|--channel <CHANNEL>\f[B]\f[R]
+ .RS 2
+ .PP
+ Specifies the source channel for the installation.
+@@ -55,145 +129,179 @@ The possible values are:
+ .IP \[bu] 2
+ \f[C]LTS\f[R] - Long-Term Support channel (most current supported release).
+ .IP \[bu] 2
+-Two-part version in X.Y format representing a specific release (for example, \f[C]2.0\f[R] or \f[C]1.0\f[R]).
++Two-part version in A.B format, representing a specific release (for example, \f[C]2.1\f[R] or \f[C]3.0\f[R]).
+ .IP \[bu] 2
+-Branch name.
+-For example, \f[C]release/2.0.0\f[R], \f[C]release/2.0.0-preview2\f[R], or \f[C]main\f[R] (for nightly releases).
++Three-part version in A.B.Cxx format, representing a specific SDK release (for example, 5.0.1xx or 5.0.2xx).
++Available since the 5.0 release.
++.PP
++The \f[C]version\f[R] parameter overrides the \f[C]channel\f[R] parameter when any version other than \f[C]latest\f[R] is used.
+ .PP
+ The default value is \f[C]LTS\f[R].
+-For more information on .NET support channels, see the .NET Support Policy page.
++For more information on .NET support channels, see the .NET Support Policy (https://dotnet.microsoft.com/platform/support/policy/dotnet-core) page.
+ .RE
+ .IP \[bu] 2
+-\f[B]\f[CB]-Version <VERSION>\f[B]\f[R]
++\f[B]\f[CB]-DryRun|--dry-run\f[B]\f[R]
+ .RS 2
+ .PP
+-Represents a specific build version.
+-The possible values are:
+-.IP \[bu] 2
+-\f[C]latest\f[R] - Latest build on the channel (used with the \f[C]-Channel\f[R] option).
++If set, the script won\[cq]t perform the installation.
++Instead, it displays what command line to use to consistently install the currently requested version of the .NET CLI.
++For example, if you specify version \f[C]latest\f[R], it displays a link with the specific version so that this command can be used deterministically in a build script.
++It also displays the binary\[cq]s location if you prefer to install or download it yourself.
++.RE
+ .IP \[bu] 2
+-\f[C]coherent\f[R] - Latest coherent build on the channel; uses the latest stable package combination (used with Branch name \f[C]-Channel\f[R] options).
++\f[B]\f[CB]-FeedCredential|--feed-credential\f[B]\f[R]
++.RS 2
++.PP
++Used as a query string to append to the Azure feed.
++It allows changing the URL to use non-public blob storage accounts.
++.RE
+ .IP \[bu] 2
+-Three-part version in X.Y.Z format representing a specific build version; supersedes the \f[C]-Channel\f[R] option.
+-For example: \f[C]2.0.0-preview2-006120\f[R].
++\f[B]\f[CB]--help\f[B]\f[R]
++.RS 2
+ .PP
+-If not specified, \f[C]-Version\f[R] defaults to \f[C]latest\f[R].
++Prints out help for the script.
++Applies only to bash script.
++For PowerShell, use \f[C]Get-Help ./dotnet-install.ps1\f[R].
+ .RE
+ .IP \[bu] 2
+-\f[B]\f[CB]-InstallDir <DIRECTORY>\f[B]\f[R]
++\f[B]\f[CB]-InstallDir|--install-dir <DIRECTORY>\f[B]\f[R]
+ .RS 2
+ .PP
+ Specifies the installation path.
+ The directory is created if it doesn\[cq]t exist.
+-The default value is *%LocalAppData%.
++The default value is \f[I]%LocalAppData%on Windows and \f[R]/usr/share/dotnet* on Linux/macOS.
+ Binaries are placed directly in this directory.
+ .RE
+ .IP \[bu] 2
+-\f[B]\f[CB]-Architecture <ARCHITECTURE>\f[B]\f[R]
++\f[B]\f[CB]-JSonFile|--jsonfile <JSONFILE>\f[B]\f[R]
+ .RS 2
+ .PP
+-Architecture of the .NET Core binaries to install.
+-Possible values are \f[C]<auto>\f[R], \f[C]amd64\f[R], \f[C]x64\f[R], \f[C]x86\f[R], \f[C]arm64\f[R], and \f[C]arm\f[R].
+-The default value is \f[C]<auto>\f[R], which represents the currently running OS architecture.
++Specifies a path to a global.json file that will be used to determine the SDK version.
++The \f[I]global.json\f[R] file must have a value for \f[C]sdk:version\f[R].
+ .RE
+ .IP \[bu] 2
+-\f[B]\f[CB]-SharedRuntime\f[B]\f[R]
++\f[B]\f[CB]-NoCdn|--no-cdn\f[B]\f[R]
+ .RS 2
+-.RS
+ .PP
+-[!NOTE] This parameter is obsolete and may be removed in a future version of the script.
+-The recommended alternative is the \f[C]Runtime\f[R] option.
+-.RE
+-.PP
+-Installs just the shared runtime bits, not the entire SDK.
+-This is equivalent to specifying \f[C]-Runtime dotnet\f[R].
++Disables downloading from the Azure Content Delivery Network (CDN) and uses the uncached feed directly.
+ .RE
+ .IP \[bu] 2
+-\f[B]\f[CB]-Runtime <RUNTIME>\f[B]\f[R]
++\f[B]\f[CB]-NoPath|--no-path\f[B]\f[R]
+ .RS 2
+ .PP
+-Installs just the shared runtime, not the entire SDK.
+-The possible values are:
+-.IP \[bu] 2
+-\f[C]dotnet\f[R] - the \f[C]Microsoft.NETCore.App\f[R] shared runtime.
+-.IP \[bu] 2
+-\f[C]aspnetcore\f[R] - the \f[C]Microsoft.AspNetCore.App\f[R] shared runtime.
++If set, the installation folder isn\[cq]t exported to the path for the current session.
++By default, the script modifies the PATH, which makes the .NET CLI available immediately after install.
+ .RE
+ .IP \[bu] 2
+-\f[B]\f[CB]-DryRun\f[B]\f[R]
++\f[B]\f[CB]-ProxyAddress\f[B]\f[R]
+ .RS 2
+ .PP
+-If set, the script won\[cq]t perform the installation.
+-Instead, it displays what command line to use to consistently install the currently requested version of the .NET Core CLI.
+-For example, if you specify version \f[C]latest\f[R], it displays a link with the specific version so that this command can be used deterministically in a build script.
+-It also displays the binary\[cq]s location if you prefer to install or download it yourself.
++If set, the installer uses the proxy when making web requests.
++(Only valid for Windows.)
+ .RE
+ .IP \[bu] 2
+-\f[B]\f[CB]-NoPath\f[B]\f[R]
++\f[B]\f[CB]-ProxyBypassList <LIST_OF_URLS>\f[B]\f[R]
+ .RS 2
+ .PP
+-If set, the installation folder isn\[cq]t exported to the path for the current session.
+-By default, the script modifies the PATH, which makes the CLI tools available immediately after install.
++If set with \f[C]ProxyAddress\f[R], provides a list of comma-separated urls that will bypass the proxy.
++(Only valid for Windows.)
+ .RE
+ .IP \[bu] 2
+-\f[B]\f[CB]-Verbose\f[B]\f[R]
++\f[B]\f[CB]ProxyUseDefaultCredentials\f[B]\f[R]
+ .RS 2
+ .PP
+-Displays diagnostics information.
++If set, the installer uses the credentials of the current user when using proxy address.
++(Only valid for Windows.)
+ .RE
+ .IP \[bu] 2
+-\f[B]\f[CB]-AzureFeed\f[B]\f[R]
++\f[B]\f[CB]-Quality|--quality <QUALITY>\f[B]\f[R]
+ .RS 2
+ .PP
+-Specifies the URL for the Azure feed to the installer.
+-We recommended that you don\[cq]t change this value.
+-The default value is \f[C]https://dotnetcli.azureedge.net/dotnet\f[R].
++Downloads the latest build of the specified quality in the channel.
++The possible values are: \f[C]daily\f[R], \f[C]signed\f[R], \f[C]validated\f[R], \f[C]preview\f[R], \f[C]GA\f[R].
++Works only in combination with \f[C]channel\f[R].
++Not applicable for current and LTS channels and will be ignored if one of those channels is used.
++.PP
++For an SDK installation, use \f[C]channel\f[R] in \f[C]A.B\f[R] or \f[C]A.B.Cxx\f[R] format.
++For a runtime installation, use \f[C]channel\f[R] in \f[C]A.B\f[R] format.
++.PP
++The \f[C]version\f[R] parameter overrides the \f[C]channel\f[R] and \f[C]quality\f[R] parameters when any \f[C]version\f[R] other than \f[C]latest\f[R] is used.
++.PP
++Available since since the 5.0 release.
+ .RE
+ .IP \[bu] 2
+-\f[B]\f[CB]-UncachedFeed\f[B]\f[R]
++\f[B]\f[CB]-Runtime|--runtime <RUNTIME>\f[B]\f[R]
+ .RS 2
+ .PP
+-Allows changing the URL for the uncached feed used by this installer.
+-We recommended that you don\[cq]t change this value.
++Installs just the shared runtime, not the entire SDK.
++The possible values are:
++.IP \[bu] 2
++\f[C]dotnet\f[R] - the \f[C]Microsoft.NETCore.App\f[R] shared runtime.
++.IP \[bu] 2
++\f[C]aspnetcore\f[R] - the \f[C]Microsoft.AspNetCore.App\f[R] shared runtime.
++.IP \[bu] 2
++\f[C]windowsdesktop\f[R] - the \f[C]Microsoft.WindowsDesktop.App\f[R] shared runtime.
+ .RE
+ .IP \[bu] 2
+-\f[B]\f[CB]-NoCdn\f[B]\f[R]
++\f[B]\f[CB]--runtime-id <RID>\f[B] [Deprecated]\f[R]
+ .RS 2
+ .PP
+-Disables downloading from the Azure Content Delivery Network (CDN) and uses the uncached feed directly.
++Specifies the runtime identifier for which the tools are being installed.
++Use \f[C]linux-x64\f[R] for portable Linux.
++(Only valid for Linux/macOS and for versions earlier than .NET Core 2.1.)
++.PP
++\f[B]\f[CB]--os <OPERATING_SYSTEM>\f[B]\f[R]
++.PP
++Specifies the operating system for which the tools are being installed.
++Possible values are: \f[C]osx\f[R], \f[C]linux\f[R], \f[C]linux-musl\f[R], \f[C]freebsd\f[R], \f[C]rhel.6\f[R].
++(Valid for .NET Core 2.1 and later.)
++.PP
++The parameter is optional and should only be used when it\[cq]s required to override the operating system that is detected by the script.
+ .RE
+ .IP \[bu] 2
+-\f[B]\f[CB]-FeedCredential\f[B]\f[R]
++\f[B]\f[CB]-SharedRuntime|--shared-runtime\f[B]\f[R]
+ .RS 2
++.RS
+ .PP
+-Used as a query string to append to the Azure feed.
+-It allows changing the URL to use non-public blob storage accounts.
++[!NOTE] This parameter is obsolete and may be removed in a future version of the script.
++The recommended alternative is the \f[C]-Runtime|--runtime\f[R] option.
++.RE
++.PP
++Installs just the shared runtime bits, not the entire SDK.
++This option is equivalent to specifying \f[C]-Runtime|--runtime dotnet\f[R].
+ .RE
+ .IP \[bu] 2
+-\f[B]\f[CB]-ProxyAddress\f[B]\f[R]
++\f[B]\f[CB]-SkipNonVersionedFiles|--skip-non-versioned-files\f[B]\f[R]
+ .RS 2
+ .PP
+-If set, the installer uses the proxy when making web requests.
+-(Only valid for Windows)
++Skips installing non-versioned files, such as \f[I]dotnet.exe\f[R], if they already exist.
+ .RE
+ .IP \[bu] 2
+-\f[B]\f[CB]ProxyUseDefaultCredentials\f[B]\f[R]
++\f[B]\f[CB]-UncachedFeed|--uncached-feed\f[B]\f[R]
+ .RS 2
+ .PP
+-If set, the installer uses the credentials of the current user when using proxy address.
+-(Only valid for Windows)
++Allows changing the URL for the uncached feed used by this installer.
++We recommended that you don\[cq]t change this value.
+ .RE
+ .IP \[bu] 2
+-\f[B]\f[CB]-SkipNonVersionedFiles\f[B]\f[R]
++\f[B]\f[CB]-Verbose|--verbose\f[B]\f[R]
+ .RS 2
+ .PP
+-Skips installing non-versioned files, such as \f[I]dotnet.exe\f[R], if they already exist.
++Displays diagnostics information.
+ .RE
+ .IP \[bu] 2
+-\f[B]\f[CB]-Help\f[B]\f[R]
++\f[B]\f[CB]-Version|--version <VERSION>\f[B]\f[R]
+ .RS 2
+ .PP
+-Prints out help for the script.
++Represents a specific build version.
++The possible values are:
++.IP \[bu] 2
++\f[C]latest\f[R] - Latest build on the channel (used with the \f[C]-Channel\f[R] option).
++.IP \[bu] 2
++Three-part version in X.Y.Z format representing a specific build version; supersedes the \f[C]-Channel\f[R] option.
++For example: \f[C]2.0.0-preview2-006120\f[R].
++.PP
++If not specified, \f[C]-Version\f[R] defaults to \f[C]latest\f[R].
+ .RE
+ .SH EXAMPLES
+ .IP \[bu] 2
+@@ -217,14 +325,14 @@ macOS/Linux:
+ .fi
+ .RE
+ .IP \[bu] 2
+-Install the latest version from 2.0 channel to the specified location:
++Install the latest preview version of the 6.0.1xx SDK to the specified location:
+ .RS 2
+ .PP
+ Windows:
+ .IP
+ .nf
+ \f[C]
+-\&./dotnet-install.ps1 -Channel 2.0 -InstallDir C:\[rs]cli
++\&./dotnet-install.ps1 -Channel 6.0.1xx -Quality preview -InstallDir C:\[rs]cli
+ \f[R]
+ .fi
+ .PP
+@@ -232,19 +340,19 @@ macOS/Linux:
+ .IP
+ .nf
+ \f[C]
+-\&./dotnet-install.sh --channel 2.0 --install-dir \[ti]/cli
++\&./dotnet-install.sh --channel 6.0.1xx --quality preview --install-dir \[ti]/cli
+ \f[R]
+ .fi
+ .RE
+ .IP \[bu] 2
+-Install the 1.1.0 version of the shared runtime:
++Install the 3.0.0 version of the shared runtime:
+ .RS 2
+ .PP
+ Windows:
+ .IP
+ .nf
+ \f[C]
+-\&./dotnet-install.ps1 -Runtime dotnet -Version 1.1.0
++\&./dotnet-install.ps1 -Runtime dotnet -Version 3.0.0
+ \f[R]
+ .fi
+ .PP
+@@ -252,7 +360,7 @@ macOS/Linux:
+ .IP
+ .nf
+ \f[C]
+-\&./dotnet-install.sh --runtime dotnet --version 1.1.0
++\&./dotnet-install.sh --runtime dotnet --version 3.0.0
+ \f[R]
+ .fi
+ .RE
+@@ -268,14 +376,15 @@ Invoke-WebRequest \[aq]https://dot.net/v1/dotnet-install.ps1\[aq] -Proxy $env:HT
+ .fi
+ .RE
+ .IP \[bu] 2
+-Obtain script and install .NET Core CLI one-liner examples:
++Obtain script and install .NET CLI one-liner examples:
+ .RS 2
+ .PP
+ Windows:
+ .IP
+ .nf
+ \f[C]
+-\[at]powershell -NoProfile -ExecutionPolicy unrestricted -Command \[dq][Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; &([scriptblock]::Create((Invoke-WebRequest -UseBasicParsing \[aq]https://dot.net/v1/dotnet-install.ps1\[aq]))) <additional install-script args>\[dq]
++# Run a separate PowerShell process because the script calls exit, so it will end the current PowerShell session.
++&powershell -NoProfile -ExecutionPolicy unrestricted -Command \[dq][Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; &([scriptblock]::Create((Invoke-WebRequest -UseBasicParsing \[aq]https://dot.net/v1/dotnet-install.ps1\[aq]))) <additional install-script args>\[dq]
+ \f[R]
+ .fi
+ .PP
+@@ -289,6 +398,6 @@ curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin <additional ins
+ .RE
+ .SS See also
+ .IP \[bu] 2
+-\&.NET Core releases
++\&.NET releases (https://github.com/dotnet/core/releases)
+ .IP \[bu] 2
+-\&.NET Core Runtime and SDK download archive
++\&.NET Runtime and SDK download archive (https://github.com/dotnet/core/tree/main/release-notes/download-archives)
+diff --git a/documentation/manpages/sdk/dotnet-list-package.1 b/documentation/manpages/sdk/dotnet-list-package.1
+index 6adfe6e581..5bd48b770e 100644
+--- a/documentation/manpages/sdk/dotnet-list-package.1
++++ b/documentation/manpages/sdk/dotnet-list-package.1
+@@ -1,9 +1,10 @@
+-.\" Automatically generated by Pandoc 2.7.2
++.\" Automatically generated by Pandoc 2.14.1
+ .\"
+-.TH "dotnet list package command" "1" "" "" ".NET Core"
++.TH "" "1" "" "" ".NET"
+ .hy
+ .SH dotnet list package
+ .PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.2 SDK and later versions
+ .SH NAME
+ .PP
+ \f[C]dotnet list package\f[R] - Lists the package references for a project or solution.
+@@ -11,23 +12,28 @@
+ .IP
+ .nf
+ \f[C]
+-dotnet list [<PROJECT>|<SOLUTION>] package [--config] [--framework] [--highest-minor] [--highest-patch]
+- [--include-prerelease] [--include-transitive] [--interactive] [--outdated] [--source]
+-dotnet list package [-h|--help]
++dotnet list [<PROJECT>|<SOLUTION>] package [--config <SOURCE>]
++ [--deprecated]
++ [--framework <FRAMEWORK>] [--highest-minor] [--highest-patch]
++ [--include-prerelease] [--include-transitive] [--interactive]
++ [--outdated] [--source <SOURCE>] [-v|--verbosity <LEVEL>]
++ [--vulnerable]
++
++dotnet list package -h|--help
+ \f[R]
+ .fi
+ .SH DESCRIPTION
+ .PP
+ The \f[C]dotnet list package\f[R] command provides a convenient option to list all NuGet package references for a specific project or a solution.
+ You first need to build the project in order to have the assets needed for this command to process.
+-The following example shows the output of the \f[C]dotnet list package\f[R] command for the SentimentAnalysis project:
++The following example shows the output of the \f[C]dotnet list package\f[R] command for the SentimentAnalysis (https://github.com/dotnet/samples/tree/main/machine-learning/tutorials/Se...) project:
+ .IP
+ .nf
+ \f[C]
+ Project \[aq]SentimentAnalysis\[aq] has the following package references
+ [netcoreapp2.1]:
+ Top-level Package Requested Resolved
+- > Microsoft.ML 0.11.0 0.11.0
++ > Microsoft.ML 1.4.0 1.4.0
+ > Microsoft.NETCore.App (A) [2.1.0, ) 2.1.0
+
+ (A) : Auto-referenced package.
+@@ -36,7 +42,7 @@ Project \[aq]SentimentAnalysis\[aq] has the following package references
+ .PP
+ The \f[B]Requested\f[R] column refers to the package version specified in the project file and can be a range.
+ The \f[B]Resolved\f[R] column lists the version that the project is currently using and is always a single value.
+-The packages displaying an \f[C](A)\f[R] right next to their names represent implicit package references that are inferred from your project settings (\f[C]Sdk\f[R] type, \f[C]<TargetFramework>\f[R] or \f[C]<TargetFrameworks>\f[R] property, etc.)
++The packages displaying an \f[C](A)\f[R] right next to their names represent implicit package references that are inferred from your project settings (\f[C]Sdk\f[R] type, or \f[C]<TargetFramework>\f[R] or \f[C]<TargetFrameworks>\f[R] property).
+ .PP
+ Use the \f[C]--outdated\f[R] option to find out if there are newer versions available of the packages you\[cq]re using in your projects.
+ By default, \f[C]--outdated\f[R] lists the latest stable packages unless the resolved version is also a prerelease version.
+@@ -47,31 +53,25 @@ The following examples shows the output of the \f[C]dotnet list package --outdat
+ \f[C]
+ The following sources were used:
+ https://api.nuget.org/v3/index.json
++ C:\[rs]Program Files (x86)\[rs]Microsoft SDKs\[rs]NuGetPackages\[rs]
+
+ Project \[ga]SentimentAnalysis\[ga] has the following updates to its packages
+ [netcoreapp2.1]:
+ Top-level Package Requested Resolved Latest
+- > Microsoft.ML 0.11.0 0.11.0 1.0.0-preview
++ > Microsoft.ML 1.4.0 1.4.0 1.5.0-preview
+ \f[R]
+ .fi
+ .PP
+ If you need to find out whether your project has transitive dependencies, use the \f[C]--include-transitive\f[R] option.
+ Transitive dependencies occur when you add a package to your project that in turn relies on another package.
+-The following example shows the output from running the \f[C]dotnet list package --include-transitive\f[R] command for the HelloPlugin project, which displays top-level packages and the packages they depend on:
++The following example shows the output from running the \f[C]dotnet list package --include-transitive\f[R] command for the HelloPlugin (https://github.com/dotnet/samples/tree/main/core/extensions/AppWithPlugin...) project, which displays top-level packages and the packages they depend on:
+ .IP
+ .nf
+ \f[C]
+ Project \[aq]HelloPlugin\[aq] has the following package references
+ [netcoreapp3.0]:
+- Top-level Package Requested Resolved
+- > Microsoft.NETCore.Platforms (A) [3.0.0-preview3.19128.7, ) 3.0.0-preview3.19128.7
+- > Microsoft.WindowsDesktop.App (A) [3.0.0-preview3-27504-2, ) 3.0.0-preview3-27504-2
+-
+- Transitive Package Resolved
+- > Microsoft.NETCore.Targets 2.0.0
+- > PluginBase 1.0.0
+-
+-(A) : Auto-referenced package.
++ Transitive Package Resolved
++ > PluginBase 1.0.0
+ \f[R]
+ .fi
+ .SS Arguments
+@@ -90,6 +90,12 @@ The NuGet sources to use when searching for newer packages.
+ Requires the \f[C]--outdated\f[R] option.
+ .RE
+ .IP \[bu] 2
++\f[B]\f[CB]--deprecated\f[B]\f[R]
++.RS 2
++.PP
++Displays packages that have been deprecated.
++.RE
++.IP \[bu] 2
+ \f[B]\f[CB]--framework <FRAMEWORK>\f[B]\f[R]
+ .RS 2
+ .PP
+@@ -98,31 +104,31 @@ To specify multiple frameworks, repeat the option multiple times.
+ For example: \f[C]--framework netcoreapp2.2 --framework netstandard2.0\f[R].
+ .RE
+ .IP \[bu] 2
+-\f[B]\f[CB]-h|--help\f[B]\f[R]
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
+ .RS 2
+ .PP
+-Prints out a short help for the command.
++Prints out a description of how to use the command.
+ .RE
+ .IP \[bu] 2
+ \f[B]\f[CB]--highest-minor\f[B]\f[R]
+ .RS 2
+ .PP
+ Considers only the packages with a matching major version number when searching for newer packages.
+-Requires the \f[C]--outdated\f[R] option.
++Requires the \f[C]--outdated\f[R] or \f[C]--deprecated\f[R] option.
+ .RE
+ .IP \[bu] 2
+ \f[B]\f[CB]--highest-patch\f[B]\f[R]
+ .RS 2
+ .PP
+ Considers only the packages with a matching major and minor version numbers when searching for newer packages.
+-Requires the \f[C]--outdated\f[R] option.
++Requires the \f[C]--outdated\f[R] or \f[C]--deprecated\f[R] option.
+ .RE
+ .IP \[bu] 2
+ \f[B]\f[CB]--include-prerelease\f[B]\f[R]
+ .RS 2
+ .PP
+ Considers packages with prerelease versions when searching for newer packages.
+-Requires the \f[C]--outdated\f[R] option.
++Requires the \f[C]--outdated\f[R] or \f[C]--deprecated\f[R] option.
+ .RE
+ .IP \[bu] 2
+ \f[B]\f[CB]--include-transitive\f[B]\f[R]
+@@ -150,7 +156,23 @@ Lists packages that have newer versions available.
+ .RS 2
+ .PP
+ The NuGet sources to use when searching for newer packages.
+-Requires the \f[C]--outdated\f[R] option.
++Requires the \f[C]--outdated\f[R] or \f[C]--deprecated\f[R] option.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
++.RS 2
++.PP
++Sets the verbosity level of the command.
++Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
++The default is \f[C]minimal\f[R].
++For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--vulnerable\f[B]\f[R]
++.RS 2
++.PP
++Lists packages that have known vulnerabilities.
++Cannot be combined with \f[C]--deprecated\f[R] or \f[C]--outdated\f[R] options.
+ .RE
+ .SH EXAMPLES
+ .IP \[bu] 2
+diff --git a/documentation/manpages/sdk/dotnet-list-reference.1 b/documentation/manpages/sdk/dotnet-list-reference.1
+index 61056a5c0e..ef42860081 100644
+--- a/documentation/manpages/sdk/dotnet-list-reference.1
++++ b/documentation/manpages/sdk/dotnet-list-reference.1
+@@ -1,33 +1,39 @@
+-.\" Automatically generated by Pandoc 2.7.2
++.\" Automatically generated by Pandoc 2.14.1
+ .\"
+-.TH "dotnet list reference command" "1" "" "" ".NET Core"
++.TH "" "1" "" "" ".NET"
+ .hy
+ .SH dotnet list reference
+ .PP
+-\f[B]This topic applies to: \[OK]\f[R] .NET Core 1.x SDK and later versions
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.x SDK and later versions
+ .SH NAME
+ .PP
+ \f[C]dotnet list reference\f[R] - Lists project-to-project references.
+ .SH SYNOPSIS
+-.PP
+-\f[C]dotnet list [<PROJECT>|<SOLUTION>] reference [-h|--help]\f[R]
++.IP
++.nf
++\f[C]
++dotnet list [<PROJECT>] reference
++
++dotnet list -h|--help
++\f[R]
++.fi
+ .SH DESCRIPTION
+ .PP
+-The \f[C]dotnet list reference\f[R] command provides a convenient option to list project references for a given project or solution.
++The \f[C]dotnet list reference\f[R] command provides a convenient option to list project references for a given project.
+ .SS Arguments
+ .IP \[bu] 2
+-\f[B]\f[CB]PROJECT | SOLUTION\f[B]\f[R]
++\f[B]\f[CB]PROJECT\f[B]\f[R]
+ .RS 2
+ .PP
+-Specifies the project or solution file to use for listing references.
+-If not specified, the command searches the current directory for a project file.
++The project file to operate on.
++If a file is not specified, the command will search the current directory for one.
+ .RE
+ .SH OPTIONS
+ .IP \[bu] 2
+-\f[B]\f[CB]-h|--help\f[B]\f[R]
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
+ .RS 2
+ .PP
+-Prints out a short help for the command.
++Prints out a description of how to use the command.
+ .RE
+ .SH EXAMPLES
+ .IP \[bu] 2
+diff --git a/documentation/manpages/sdk/dotnet-migrate.1 b/documentation/manpages/sdk/dotnet-migrate.1
+index a6895ff5a0..453d640ba2 100644
+--- a/documentation/manpages/sdk/dotnet-migrate.1
++++ b/documentation/manpages/sdk/dotnet-migrate.1
+@@ -1,10 +1,10 @@
+-.\" Automatically generated by Pandoc 2.7.2
++.\" Automatically generated by Pandoc 2.14.1
+ .\"
+-.TH "dotnet migrate command" "1" "" "" ".NET Core"
++.TH "" "1" "" "" ".NET"
+ .hy
+ .SH dotnet migrate
+ .PP
+-\f[B]This article applies to: \[OK]\f[R] .NET Core 1.x SDK \f[B]\[OK]\f[R] .NET Core 2.x SDK
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.x SDK
+ .SH NAME
+ .PP
+ \f[C]dotnet migrate\f[R] - Migrates a Preview 2 .NET Core project to a .NET Core SDK-style project.
+@@ -12,16 +12,22 @@
+ .IP
+ .nf
+ \f[C]
+-dotnet migrate [<SOLUTION_FILE|PROJECT_DIR>] [--format-report-file-json] [-r|--report-file] [-s|--skip-project-references] [--skip-backup] [-t|--template-file] [-v|--sdk-package-version] [-x|--xproj-file]
+-dotnet migrate [-h|--help]
++dotnet migrate [<SOLUTION_FILE|PROJECT_DIR>] [--format-report-file-json <REPORT_FILE>]
++ [-r|--report-file <REPORT_FILE>] [-s|--skip-project-references [Debug|Release]]
++ [--skip-backup] [-t|--template-file <TEMPLATE_FILE>] [-v|--sdk-package-version]
++ [-x|--xproj-file]
++
++dotnet migrate -h|--help
+ \f[R]
+ .fi
+ .SH DESCRIPTION
+ .PP
+-The \f[C]dotnet migrate\f[R] command migrates a valid Preview 2 \f[I]project.json\f[R]-based project to a valid .NET Core SDK-style \f[I]csproj\f[R] project.
++This command is deprecated.
++The \f[C]dotnet migrate\f[R] command is no longer available starting with .NET Core 3.0 SDK.
++It can only migrate a Preview 2 .NET Core project to a 1.x .NET Core project, which is out of support.
+ .PP
+ By default, the command migrates the root project and any project references that the root project contains.
+-This behavior is disabled using the \f[C]--skip-project-references\f[R] option at runtime.
++This behavior is disabled using the \f[C]--skip-project-references\f[R] option at run time.
+ .PP
+ Migration can be performed on the following assets:
+ .IP \[bu] 2
+@@ -42,8 +48,6 @@ If you use the \f[C]--report-file <REPORT_FILE>\f[R] option, the output is saved
+ The \f[C]dotnet migrate\f[R] command only supports valid Preview 2 \f[I]project.json\f[R]-based projects.
+ This means that you cannot use it to migrate DNX or Preview 1 \f[I]project.json\f[R]-based projects directly to MSBuild/csproj projects.
+ You first need to manually migrate the project to a Preview 2 \f[I]project.json\f[R]-based project and then use the \f[C]dotnet migrate\f[R] command to migrate the project.
+-.PP
+-The \f[C]dotnet migrate\f[R] command is no longer available starting with .NET Core 3.0 SDK.
+ .SS Arguments
+ .PP
+ \f[C]PROJECT_JSON/GLOBAL_JSON/SOLUTION_FILE/PROJECT_DIR\f[R]
+diff --git a/documentation/manpages/sdk/dotnet-msbuild.1 b/documentation/manpages/sdk/dotnet-msbuild.1
+index a1aaf28852..63a60651c5 100644
+--- a/documentation/manpages/sdk/dotnet-msbuild.1
++++ b/documentation/manpages/sdk/dotnet-msbuild.1
+@@ -1,26 +1,33 @@
+-.\" Automatically generated by Pandoc 2.7.2
++.\" Automatically generated by Pandoc 2.14.1
+ .\"
+-.TH "dotnet msbuild command" "1" "" "" ".NET Core"
++.TH "" "1" "" "" ".NET"
+ .hy
+ .SH dotnet msbuild
+ .PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.x SDK and later versions
+ .SH NAME
+ .PP
+ \f[C]dotnet msbuild\f[R] - Builds a project and all of its dependencies.
++Note: A solution or project file may need to be specified if there are multiple.
+ .SH SYNOPSIS
+-.PP
+-\f[C]dotnet msbuild <msbuild_arguments> [-h]\f[R]
++.IP
++.nf
++\f[C]
++dotnet msbuild <MSBUILD_ARGUMENTS>
++
++dotnet msbuild -h
++\f[R]
++.fi
+ .SH DESCRIPTION
+ .PP
+ The \f[C]dotnet msbuild\f[R] command allows access to a fully functional MSBuild.
+ .PP
+-The command has the exact same capabilities as the existing MSBuild command-line client for SDK-style project only.
++The command has the exact same capabilities as the existing MSBuild command-line client for SDK-style projects only.
+ The options are all the same.
+-For more information about the available options, see the MSBuild Command-Line Reference.
++For more information about the available options, see the MSBuild command-line reference.
+ .PP
+-The dotnet build command is equivalent to \f[C]dotnet msbuild -restore -target:Build\f[R].
+-\f[C]dotnet build\f[R] is more commonly used for building projects, but \f[C]dotnet msbuild\f[R] gives you more control.
+-For example, if you have a specific target you want to run (without running the build target), you probably want to use \f[C]dotnet msbuild\f[R].
++The dotnet build command is equivalent to \f[C]dotnet msbuild -restore\f[R].
++When you don\[cq]t want to build the project and you have a specific target you want to run, use \f[C]dotnet build\f[R] or \f[C]dotnet msbuild\f[R] and specify the target.
+ .SH EXAMPLES
+ .IP \[bu] 2
+ Build a project and its dependencies:
+@@ -38,7 +45,7 @@ Build a project and its dependencies using Release configuration:
+ .IP
+ .nf
+ \f[C]
+-dotnet msbuild -p:Configuration=Release
++dotnet msbuild -property:Configuration=Release
+ \f[R]
+ .fi
+ .RE
+@@ -48,7 +55,7 @@ Run the publish target and publish for the \f[C]osx.10.11-x64\f[R] RID:
+ .IP
+ .nf
+ \f[C]
+-dotnet msbuild -t:Publish -p:RuntimeIdentifiers=osx.10.11-x64
++dotnet msbuild -target:Publish -property:RuntimeIdentifiers=osx.10.11-x64
+ \f[R]
+ .fi
+ .RE
+@@ -58,7 +65,8 @@ See the whole project with all targets included by the SDK:
+ .IP
+ .nf
+ \f[C]
+-dotnet msbuild -pp
++dotnet msbuild -preprocess
++dotnet msbuild -preprocess:<fileName>.xml
+ \f[R]
+ .fi
+ .RE
+diff --git a/documentation/manpages/sdk/dotnet-new-install.1 b/documentation/manpages/sdk/dotnet-new-install.1
+new file mode 100644
+index 0000000000..635fcb8afc
+--- /dev/null
++++ b/documentation/manpages/sdk/dotnet-new-install.1
+@@ -0,0 +1,85 @@
++.\" Automatically generated by Pandoc 2.14.1
++.\"
++.TH "" "1" "" "" ".NET"
++.hy
++.SH dotnet new \[en]install option
++.PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.0 SDK and later versions
++.SH NAME
++.PP
++\f[C]dotnet new --install\f[R] - installs a template package.
++.SH SYNOPSIS
++.IP
++.nf
++\f[C]
++dotnet new --install <PATH|NUGET_ID> [--interactive] [--nuget-source <SOURCE>]
++\f[R]
++.fi
++.SH DESCRIPTION
++.PP
++The \f[C]dotnet new --install\f[R] command installs a template package from the \f[C]PATH\f[R] or \f[C]NUGET_ID\f[R] provided.
++If you want to install a prerelease version of a template package, specify the version in the format \f[C]<package-name>::<package-version>\f[R].
++By default, \f[C]dotnet new\f[R] passes * for the version, which represents the latest stable package version.
++For more information, see the Examples section.
++.PP
++If a version of the template was already installed when you run this command, the template will be updated to the specified version, or to the latest stable version if no version was specified.
++For information on creating custom templates, see Custom templates for dotnet new.
++.SH OPTIONS
++.IP \[bu] 2
++\f[B]\f[CB]--interactive\f[B]\f[R]
++.RS 2
++.PP
++Allows the command to stop and wait for user input or action.
++For example, to complete authentication.
++Available since .NET 5.0 SDK.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--nuget-source <SOURCE>\f[B]\f[R]
++.RS 2
++.PP
++By default, \f[C]dotnet new --install\f[R] uses the hierarchy of NuGet configuration files from the current directory to determine the NuGet source the package can be installed from.
++If \f[C]--nuget-source\f[R] is specified, the source will be added to the list of sources to be checked.
++.PD 0
++.P
++.PD
++To check the configured sources for the current directory use \f[C]dotnet nuget list source\f[R].
++For more information, see Common NuGet Configurations
++.RE
++.SH EXAMPLES
++.IP \[bu] 2
++Install the latest version of SPA templates for ASP.NET Core:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet new --install Microsoft.DotNet.Web.Spa.ProjectTemplates
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Install version 2.0 of the SPA templates for ASP.NET Core:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet new --install Microsoft.DotNet.Web.Spa.ProjectTemplates::2.0.0
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Install version 2.0 of the SPA templates for ASP.NET Core from a custom NuGet source using interactive mode:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet new --install Microsoft.DotNet.Web.Spa.ProjectTemplates::2.0.0 --nuget-source \[dq]https://api.my-custom-nuget.com/v3/index.json\[dq] --interactive
++\f[R]
++.fi
++.RE
++.SS See also
++.IP \[bu] 2
++dotnet new command
++.IP \[bu] 2
++dotnet new \[en]search option
++.IP \[bu] 2
++Custom templates for dotnet new
+diff --git a/documentation/manpages/sdk/dotnet-new-list.1 b/documentation/manpages/sdk/dotnet-new-list.1
+new file mode 100644
+index 0000000000..e0bf9d3ab0
+--- /dev/null
++++ b/documentation/manpages/sdk/dotnet-new-list.1
+@@ -0,0 +1,164 @@
++.\" Automatically generated by Pandoc 2.14.1
++.\"
++.TH "" "1" "" "" ".NET"
++.hy
++.SH dotnet new \[en]list option
++.PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.0 SDK and later versions
++.SH NAME
++.PP
++\f[C]dotnet new --list\f[R] - Lists available templates to be run using \f[C]dotnet new\f[R].
++.SH SYNOPSIS
++.IP
++.nf
++\f[C]
++dotnet new [<TEMPLATE_NAME>] -l|--list [--author <AUTHOR>] [-lang|--language {\[dq]C#\[dq]|\[dq]F#\[dq]|VB}]
++ [--tag <TAG>] [--type <TYPE>] [--columns <COLUMNS>] [--columns-all]
++\f[R]
++.fi
++.SH DESCRIPTION
++.PP
++The \f[C]dotnet new --list\f[R] option lists available templates to use with \f[C]dotnet new\f[R].
++If the is specified, lists templates containing the specified name.
++This option lists only default and installed templates.
++To find templates in NuGet that you can install locally, use the \f[C]--search\f[R] option.
++.SS Arguments
++.IP \[bu] 2
++\f[B]\f[CB]TEMPLATE_NAME\f[B]\f[R]
++.RS 2
++.PP
++If the argument is specified, only the templates containing \f[C]<TEMPLATE_NAME>\f[R] in template name or short name will be shown.
++.RE
++.SH OPTIONS
++.IP \[bu] 2
++\f[B]\f[CB]--author <AUTHOR>\f[B]\f[R]
++.RS 2
++.PP
++Filters templates based on template author.
++Partial match is supported.
++Available since .NET Core 5.0.300 SDK.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--columns <COLUMNS>\f[B]\f[R]
++.RS 2
++.PP
++Comma-separated list of columns to display in the output.
++The supported columns are:
++.IP \[bu] 2
++\f[C]language\f[R] - A comma-separated list of languages supported by the template.
++.IP \[bu] 2
++\f[C]tags\f[R] - The list of template tags.
++.IP \[bu] 2
++\f[C]author\f[R] - The template author.
++.IP \[bu] 2
++\f[C]type\f[R] - The template type: project or item.
++.PP
++The template name and short name are always shown.
++The default list of columns is template name, short name, language, and tags.
++This list is equivalent to specifying \f[C]--columns=language,tags\f[R].
++Available since .NET Core 5.0.300 SDK.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--columns-all\f[B]\f[R]
++.RS 2
++.PP
++Displays all columns in the output.
++Available since .NET Core 5.0.300 SDK.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-lang|--language {C#|F#|VB}\f[B]\f[R]
++.RS 2
++.PP
++Filters templates based on language supported by the template.
++The language accepted varies by the template.
++Not valid for some templates.
++.RS
++.PP
++[!NOTE] Some shells interpret \f[C]#\f[R] as a special character.
++In those cases, enclose the language parameter value in quotes.
++For example, \f[C]dotnet new --list --language \[dq]F#\[dq]\f[R].
++.RE
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--tag <TAG>\f[B]\f[R]
++.RS 2
++.PP
++Filters templates based on template tags.
++To be selected, a template must have at least one tag that exactly matches the criteria.
++Available since .NET Core 5.0.300 SDK.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--type <TYPE>\f[B]\f[R]
++.RS 2
++.PP
++Filters templates based on template type.
++Predefined values are \f[C]project\f[R] and \f[C]item\f[R].
++.RE
++.SH EXAMPLES
++.IP \[bu] 2
++List all templates
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet new --list
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++List all Single Page Application (SPA) templates:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet new spa --list
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++List all templates matching the \f[I]we\f[R] substring.
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet new we --list
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++List all templates matching the \f[I]we\f[R] substring that support the F# language.
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet new we --list --language \[dq]F#\[dq]
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++List all item templates.
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet new --list --type item
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++List all C# templates, showing the author and the type in the output.
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet new --list --language \[dq]C#\[dq] --columns \[dq]author,type\[dq]
++\f[R]
++.fi
++.RE
++.SS See also
++.IP \[bu] 2
++dotnet new command
++.IP \[bu] 2
++dotnet new \[en]search option
++.IP \[bu] 2
++Custom templates for dotnet new
+diff --git a/documentation/manpages/sdk/dotnet-new-sdk-templates.1 b/documentation/manpages/sdk/dotnet-new-sdk-templates.1
+new file mode 100644
+index 0000000000..a84c5bbf84
+--- /dev/null
++++ b/documentation/manpages/sdk/dotnet-new-sdk-templates.1
+@@ -0,0 +1,1603 @@
++'\" t
++.\" Automatically generated by Pandoc 2.14.1
++.\"
++.TH "" "1" "" "" ".NET"
++.hy
++.SH .NET default templates for dotnet new
++.PP
++When you install the .NET SDK (https://dotnet.microsoft.com/download), you receive over a dozen built-in templates for creating projects and files, including console apps, class libraries, unit test projects, ASP.NET Core apps (including Angular (https://angular.io/) and React (https://reactjs.org/) projects), and configuration files.
++To list the built-in templates, run the \f[C]dotnet new\f[R] command with the \f[C]-l|--list\f[R] option:
++.IP
++.nf
++\f[C]
++dotnet new --list
++\f[R]
++.fi
++.PP
++The following table shows the templates that come pre-installed with the .NET SDK.
++The default language for the template is shown inside the brackets.
++Click on the short name link to see the specific template options.
++.PP
++.TS
++tab(@);
++l l l l l.
++T{
++Templates
++T}@T{
++Short name
++T}@T{
++Language
++T}@T{
++Tags
++T}@T{
++Introduced
++T}
++_
++T{
++Console Application
++T}@T{
++\f[C]console\f[R]
++T}@T{
++[C#], F#, VB
++T}@T{
++Common/Console
++T}@T{
++1.0
++T}
++T{
++Class library
++T}@T{
++\f[C]classlib\f[R]
++T}@T{
++[C#], F#, VB
++T}@T{
++Common/Library
++T}@T{
++1.0
++T}
++T{
++WPF Application
++T}@T{
++\f[C]wpf\f[R]
++T}@T{
++[C#], VB
++T}@T{
++Common/WPF
++T}@T{
++3.0 (5.0 for VB)
++T}
++T{
++WPF Class library
++T}@T{
++\f[C]wpflib\f[R]
++T}@T{
++[C#], VB
++T}@T{
++Common/WPF
++T}@T{
++3.0 (5.0 for VB)
++T}
++T{
++WPF Custom Control Library
++T}@T{
++\f[C]wpfcustomcontrollib\f[R]
++T}@T{
++[C#], VB
++T}@T{
++Common/WPF
++T}@T{
++3.0 (5.0 for VB)
++T}
++T{
++WPF User Control Library
++T}@T{
++\f[C]wpfusercontrollib\f[R]
++T}@T{
++[C#], VB
++T}@T{
++Common/WPF
++T}@T{
++3.0 (5.0 for VB)
++T}
++T{
++Windows Forms (WinForms) Application
++T}@T{
++\f[C]winforms\f[R]
++T}@T{
++[C#], VB
++T}@T{
++Common/WinForms
++T}@T{
++3.0 (5.0 for VB)
++T}
++T{
++Windows Forms (WinForms) Class library
++T}@T{
++\f[C]winformslib\f[R]
++T}@T{
++[C#], VB
++T}@T{
++Common/WinForms
++T}@T{
++3.0 (5.0 for VB)
++T}
++T{
++Worker Service
++T}@T{
++\f[C]worker\f[R]
++T}@T{
++[C#]
++T}@T{
++Common/Worker/Web
++T}@T{
++3.0
++T}
++T{
++Unit Test Project
++T}@T{
++\f[C]mstest\f[R]
++T}@T{
++[C#], F#, VB
++T}@T{
++Test/MSTest
++T}@T{
++1.0
++T}
++T{
++NUnit 3 Test Project
++T}@T{
++\f[C]nunit\f[R]
++T}@T{
++[C#], F#, VB
++T}@T{
++Test/NUnit
++T}@T{
++2.1.400
++T}
++T{
++NUnit 3 Test Item
++T}@T{
++\f[C]nunit-test\f[R]
++T}@T{
++[C#], F#, VB
++T}@T{
++Test/NUnit
++T}@T{
++2.2
++T}
++T{
++xUnit Test Project
++T}@T{
++\f[C]xunit\f[R]
++T}@T{
++[C#], F#, VB
++T}@T{
++Test/xUnit
++T}@T{
++1.0
++T}
++T{
++Razor Component
++T}@T{
++\f[C]razorcomponent\f[R]
++T}@T{
++[C#]
++T}@T{
++Web/ASP.NET
++T}@T{
++3.0
++T}
++T{
++Razor Page
++T}@T{
++\f[C]page\f[R]
++T}@T{
++[C#]
++T}@T{
++Web/ASP.NET
++T}@T{
++2.0
++T}
++T{
++MVC ViewImports
++T}@T{
++\f[C]viewimports\f[R]
++T}@T{
++[C#]
++T}@T{
++Web/ASP.NET
++T}@T{
++2.0
++T}
++T{
++MVC ViewStart
++T}@T{
++\f[C]viewstart\f[R]
++T}@T{
++[C#]
++T}@T{
++Web/ASP.NET
++T}@T{
++2.0
++T}
++T{
++Blazor Server App
++T}@T{
++\f[C]blazorserver\f[R]
++T}@T{
++[C#]
++T}@T{
++Web/Blazor
++T}@T{
++3.0
++T}
++T{
++Blazor WebAssembly App
++T}@T{
++\f[C]blazorwasm\f[R]
++T}@T{
++[C#]
++T}@T{
++Web/Blazor/WebAssembly
++T}@T{
++3.1.300
++T}
++T{
++ASP.NET Core Empty
++T}@T{
++\f[C]web\f[R]
++T}@T{
++[C#], F#
++T}@T{
++Web/Empty
++T}@T{
++1.0
++T}
++T{
++ASP.NET Core Web App (Model-View-Controller)
++T}@T{
++\f[C]mvc\f[R]
++T}@T{
++[C#], F#
++T}@T{
++Web/MVC
++T}@T{
++1.0
++T}
++T{
++ASP.NET Core Web App
++T}@T{
++\f[C]webapp, razor\f[R]
++T}@T{
++[C#]
++T}@T{
++Web/MVC/Razor Pages
++T}@T{
++2.2, 2.0
++T}
++T{
++ASP.NET Core with Angular
++T}@T{
++\f[C]angular\f[R]
++T}@T{
++[C#]
++T}@T{
++Web/MVC/SPA
++T}@T{
++2.0
++T}
++T{
++ASP.NET Core with React.js
++T}@T{
++\f[C]react\f[R]
++T}@T{
++[C#]
++T}@T{
++Web/MVC/SPA
++T}@T{
++2.0
++T}
++T{
++ASP.NET Core with React.js and Redux
++T}@T{
++\f[C]reactredux\f[R]
++T}@T{
++[C#]
++T}@T{
++Web/MVC/SPA
++T}@T{
++2.0
++T}
++T{
++Razor Class Library
++T}@T{
++\f[C]razorclasslib\f[R]
++T}@T{
++[C#]
++T}@T{
++Web/Razor/Library/Razor Class Library
++T}@T{
++2.1
++T}
++T{
++ASP.NET Core Web API
++T}@T{
++\f[C]webapi\f[R]
++T}@T{
++[C#], F#
++T}@T{
++Web/WebAPI
++T}@T{
++1.0
++T}
++T{
++ASP.NET Core gRPC Service
++T}@T{
++\f[C]grpc\f[R]
++T}@T{
++[C#]
++T}@T{
++Web/gRPC
++T}@T{
++3.0
++T}
++T{
++dotnet gitignore file
++T}@T{
++\f[C]gitignore\f[R]
++T}@T{
++T}@T{
++Config
++T}@T{
++3.0
++T}
++T{
++global.json file
++T}@T{
++\f[C]globaljson\f[R]
++T}@T{
++T}@T{
++Config
++T}@T{
++2.0
++T}
++T{
++NuGet Config
++T}@T{
++\f[C]nugetconfig\f[R]
++T}@T{
++T}@T{
++Config
++T}@T{
++1.0
++T}
++T{
++Dotnet local tool manifest file
++T}@T{
++\f[C]tool-manifest\f[R]
++T}@T{
++T}@T{
++Config
++T}@T{
++3.0
++T}
++T{
++Web Config
++T}@T{
++\f[C]webconfig\f[R]
++T}@T{
++T}@T{
++Config
++T}@T{
++1.0
++T}
++T{
++Solution File
++T}@T{
++\f[C]sln\f[R]
++T}@T{
++T}@T{
++Solution
++T}@T{
++1.0
++T}
++T{
++Protocol Buffer File
++T}@T{
++\f[C]proto\f[R]
++T}@T{
++T}@T{
++Web/gRPC
++T}@T{
++3.0
++T}
++.TE
++.SS Template options
++.PP
++Each template may have additional options available.
++The core templates have the following additional options:
++.SS \f[C]console\f[R]
++.IP \[bu] 2
++\f[B]\f[CB]-f|--framework <FRAMEWORK>\f[B]\f[R]
++.RS 2
++.PP
++Specifies the framework to target.
++Available since .NET Core 3.0 SDK.
++.PP
++The following table lists the default values according to the SDK version number you\[cq]re using:
++.PP
++.TS
++tab(@);
++l l.
++T{
++SDK version
++T}@T{
++Default value
++T}
++_
++T{
++5.0
++T}@T{
++\f[C]net5.0\f[R]
++T}
++T{
++3.1
++T}@T{
++\f[C]netcoreapp3.1\f[R]
++T}
++T{
++3.0
++T}@T{
++\f[C]netcoreapp3.0\f[R]
++T}
++.TE
++.PP
++The ability to create a project for an earlier TFM depends on having that version of the SDK installed.
++For example, if you have only SDK 5.0 installed, then the only value available for \f[C]--framework\f[R] is \f[C]net5.0\f[R].
++If you install SDK 3.1, the value \f[C]netcoreapp3.1\f[R] becomes available for \f[C]--framework\f[R].
++If you install SDK 2.1, \f[C]netcoreapp2.1\f[R] becomes available, and so on.
++So by specifying \f[C]--framework netcoreapp2.1\f[R] you can use SDK 2.1 even while running \f[C]dotnet new\f[R] in SDK 5.0.
++.PP
++Alternatively, to create a project that targets a framework earlier than the SDK that you\[cq]re using, you might be able to do it by installing the NuGet package for the template.
++Common (https://www.nuget.org/packages?q=Microsoft.DotNet.Common.ProjectTemplates), web (https://www.nuget.org/packages?q=Microsoft.DotNet.Web.ProjectTemplates), and SPA (https://www.nuget.org/packages?q=Microsoft.DotNet.Web.Spa.ProjectTemplates) project types use different packages per target framework moniker (TFM).
++For example, to create a \f[C]console\f[R] project that targets \f[C]netcoreapp1.0\f[R], run \f[C]dotnet new --install\f[R] on \f[C]Microsoft.DotNet.Common.ProjectTemplates.1.x\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--langVersion <VERSION_NUMBER>\f[B]\f[R]
++.RS 2
++.PP
++Sets the \f[C]LangVersion\f[R] property in the created project file.
++For example, use \f[C]--langVersion 7.3\f[R] to use C# 7.3.
++Not supported for F#.
++Available since .NET Core 2.2 SDK.
++.PP
++For a list of default C# versions, see Defaults.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--no-restore\f[B]\f[R]
++.RS 2
++.PP
++If specified, doesn\[cq]t execute an implicit restore during project creation.
++Available since .NET Core 2.2 SDK.
++.RE
++.PP
++ * * * * *
++.SS \f[C]classlib\f[R]
++.IP \[bu] 2
++\f[B]\f[CB]-f|--framework <FRAMEWORK>\f[B]\f[R]
++.RS 2
++.PP
++Specifies the framework to target.
++Values: \f[C]net5.0\f[R] or \f[C]netcoreapp<version>\f[R] to create a .NET Class Library or \f[C]netstandard<version>\f[R] to create a .NET Standard Class Library.
++The default value for .NET 5.0 SDK is \f[C]net5.0\f[R].
++.PP
++To create a project that targets a framework earlier than the SDK that you\[cq]re using, see \f[C]--framework\f[R] for \f[C]console\f[R] projects earlier in this article.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--langVersion <VERSION_NUMBER>\f[B]\f[R]
++.RS 2
++.PP
++Sets the \f[C]LangVersion\f[R] property in the created project file.
++For example, use \f[C]--langVersion 7.3\f[R] to use C# 7.3.
++Not supported for F#.
++Available since .NET Core 2.2 SDK.
++.PP
++For a list of default C# versions, see Defaults.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--no-restore\f[B]\f[R]
++.RS 2
++.PP
++Doesn\[cq]t execute an implicit restore during project creation.
++.RE
++.PP
++ * * * * *
++.SS \f[C]wpf\f[R], \f[C]wpflib\f[R], \f[C]wpfcustomcontrollib\f[R], \f[C]wpfusercontrollib\f[R]
++.IP \[bu] 2
++\f[B]\f[CB]-f|--framework <FRAMEWORK>\f[B]\f[R]
++.RS 2
++.PP
++Specifies the framework to target.
++The default value is \f[C]net5.0\f[R].
++Available since .NET Core 3.1 SDK.
++.PP
++To create a project that targets a framework earlier than the SDK that you\[cq]re using, see \f[C]--framework\f[R] for \f[C]console\f[R] projects earlier in this article.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--langVersion <VERSION_NUMBER>\f[B]\f[R]
++.RS 2
++.PP
++Sets the \f[C]LangVersion\f[R] property in the created project file.
++For example, use \f[C]--langVersion 7.3\f[R] to use C# 7.3.
++.PP
++For a list of default C# versions, see Defaults.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--no-restore\f[B]\f[R]
++.RS 2
++.PP
++Doesn\[cq]t execute an implicit restore during project creation.
++.RE
++.PP
++ * * * * *
++.SS \f[C]winforms\f[R], \f[C]winformslib\f[R]
++.IP \[bu] 2
++\f[B]\f[CB]--langVersion <VERSION_NUMBER>\f[B]\f[R]
++.RS 2
++.PP
++Sets the \f[C]LangVersion\f[R] property in the created project file.
++For example, use \f[C]--langVersion 7.3\f[R] to use C# 7.3.
++.PP
++For a list of default C# versions, see Defaults.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--no-restore\f[B]\f[R]
++.RS 2
++.PP
++Doesn\[cq]t execute an implicit restore during project creation.
++.RE
++.PP
++ * * * * *
++.SS \f[C]worker\f[R], \f[C]grpc\f[R]
++.IP \[bu] 2
++\f[B]\f[CB]-f|--framework <FRAMEWORK>\f[B]\f[R]
++.RS 2
++.PP
++Specifies the framework to target.
++The default value is \f[C]netcoreapp3.1\f[R].
++Available since .NET Core 3.1 SDK.
++.PP
++To create a project that targets a framework earlier than the SDK that you\[cq]re using, see \f[C]--framework\f[R] for \f[C]console\f[R] projects earlier in this article.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--exclude-launch-settings\f[B]\f[R]
++.RS 2
++.PP
++Excludes \f[I]launchSettings.json\f[R] from the generated template.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--no-restore\f[B]\f[R]
++.RS 2
++.PP
++Doesn\[cq]t execute an implicit restore during project creation.
++.RE
++.PP
++ * * * * *
++.SS \f[C]mstest\f[R], \f[C]xunit\f[R]
++.IP \[bu] 2
++\f[B]\f[CB]-f|--framework <FRAMEWORK>\f[B]\f[R]
++.RS 2
++.PP
++Specifies the framework to target.
++Option available since .NET Core 3.0 SDK.
++.PP
++The following table lists the default values according to the SDK version number you\[cq]re using:
++.PP
++.TS
++tab(@);
++l l.
++T{
++SDK version
++T}@T{
++Default value
++T}
++_
++T{
++5.0
++T}@T{
++\f[C]net5.0\f[R]
++T}
++T{
++3.1
++T}@T{
++\f[C]netcoreapp3.1\f[R]
++T}
++T{
++3.0
++T}@T{
++\f[C]netcoreapp3.0\f[R]
++T}
++.TE
++.PP
++To create a project that targets a framework earlier than the SDK that you\[cq]re using, see \f[C]--framework\f[R] for \f[C]console\f[R] projects earlier in this article.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-p|--enable-pack\f[B]\f[R]
++.RS 2
++.PP
++Enables packaging for the project using dotnet pack.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--no-restore\f[B]\f[R]
++.RS 2
++.PP
++Doesn\[cq]t execute an implicit restore during project creation.
++.RE
++.PP
++ * * * * *
++.SS \f[C]nunit\f[R]
++.IP \[bu] 2
++\f[B]\f[CB]-f|--framework <FRAMEWORK>\f[B]\f[R]
++.RS 2
++.PP
++Specifies the framework to target.
++.PP
++The following table lists the default values according to the SDK version number you\[cq]re using:
++.PP
++.TS
++tab(@);
++l l.
++T{
++SDK version
++T}@T{
++Default value
++T}
++_
++T{
++5.0
++T}@T{
++\f[C]net5.0\f[R]
++T}
++T{
++3.1
++T}@T{
++\f[C]netcoreapp3.1\f[R]
++T}
++T{
++3.0
++T}@T{
++\f[C]netcoreapp3.0\f[R]
++T}
++T{
++2.2
++T}@T{
++\f[C]netcoreapp2.2\f[R]
++T}
++T{
++2.1
++T}@T{
++\f[C]netcoreapp2.1\f[R]
++T}
++.TE
++.PP
++To create a project that targets a framework earlier than the SDK that you\[cq]re using, see \f[C]--framework\f[R] for \f[C]console\f[R] projects earlier in this article.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-p|--enable-pack\f[B]\f[R]
++.RS 2
++.PP
++Enables packaging for the project using dotnet pack.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--no-restore\f[B]\f[R]
++.RS 2
++.PP
++Doesn\[cq]t execute an implicit restore during project creation.
++.RE
++.PP
++ * * * * *
++.SS \f[C]page\f[R]
++.IP \[bu] 2
++\f[B]\f[CB]-na|--namespace <NAMESPACE_NAME>\f[B]\f[R]
++.RS 2
++.PP
++Namespace for the generated code.
++The default value is \f[C]MyApp.Namespace\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-np|--no-pagemodel\f[B]\f[R]
++.RS 2
++.PP
++Creates the page without a PageModel.
++.RE
++.PP
++ * * * * *
++.SS \f[C]viewimports\f[R], \f[C]proto\f[R]
++.IP \[bu] 2
++\f[B]\f[CB]-na|--namespace <NAMESPACE_NAME>\f[B]\f[R]
++.RS 2
++.PP
++Namespace for the generated code.
++The default value is \f[C]MyApp.Namespace\f[R].
++.RE
++.PP
++ * * * * *
++.SS \f[C]blazorserver\f[R]
++.IP \[bu] 2
++\f[B]\f[CB]-au|--auth <AUTHENTICATION_TYPE>\f[B]\f[R]
++.RS 2
++.PP
++The type of authentication to use.
++The possible values are:
++.IP \[bu] 2
++\f[C]None\f[R] - No authentication (Default).
++.IP \[bu] 2
++\f[C]Individual\f[R] - Individual authentication.
++.IP \[bu] 2
++\f[C]IndividualB2C\f[R] - Individual authentication with Azure AD B2C.
++.IP \[bu] 2
++\f[C]SingleOrg\f[R] - Organizational authentication for a single tenant.
++.IP \[bu] 2
++\f[C]MultiOrg\f[R] - Organizational authentication for multiple tenants.
++.IP \[bu] 2
++\f[C]Windows\f[R] - Windows authentication.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--aad-b2c-instance <INSTANCE>\f[B]\f[R]
++.RS 2
++.PP
++The Azure Active Directory B2C instance to connect to.
++Use with \f[C]IndividualB2C\f[R] authentication.
++The default value is \f[C]https://login.microsoftonline.com/tfp/\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-ssp|--susi-policy-id <ID>\f[B]\f[R]
++.RS 2
++.PP
++The sign-in and sign-up policy ID for this project.
++Use with \f[C]IndividualB2C\f[R] authentication.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-rp|--reset-password-policy-id <ID>\f[B]\f[R]
++.RS 2
++.PP
++The reset password policy ID for this project.
++Use with \f[C]IndividualB2C\f[R] authentication.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-ep|--edit-profile-policy-id <ID>\f[B]\f[R]
++.RS 2
++.PP
++The edit profile policy ID for this project.
++Use with \f[C]IndividualB2C\f[R] authentication.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--aad-instance <INSTANCE>\f[B]\f[R]
++.RS 2
++.PP
++The Azure Active Directory instance to connect to.
++Use with \f[C]SingleOrg\f[R] or \f[C]MultiOrg\f[R] authentication.
++The default value is \f[C]https://login.microsoftonline.com/\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--client-id <ID>\f[B]\f[R]
++.RS 2
++.PP
++The Client ID for this project.
++Use with \f[C]IndividualB2C\f[R], \f[C]SingleOrg\f[R], or \f[C]MultiOrg\f[R] authentication.
++The default value is \f[C]11111111-1111-1111-11111111111111111\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--domain <DOMAIN>\f[B]\f[R]
++.RS 2
++.PP
++The domain for the directory tenant.
++Use with \f[C]SingleOrg\f[R] or \f[C]IndividualB2C\f[R] authentication.
++The default value is \f[C]qualified.domain.name\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--tenant-id <ID>\f[B]\f[R]
++.RS 2
++.PP
++The TenantId ID of the directory to connect to.
++Use with \f[C]SingleOrg\f[R] authentication.
++The default value is \f[C]22222222-2222-2222-2222-222222222222\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--callback-path <PATH>\f[B]\f[R]
++.RS 2
++.PP
++The request path within the application\[cq]s base path of the redirect URI.
++Use with \f[C]SingleOrg\f[R] or \f[C]IndividualB2C\f[R] authentication.
++The default value is \f[C]/signin-oidc\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-r|--org-read-access\f[B]\f[R]
++.RS 2
++.PP
++Allows this application read-access to the directory.
++Only applies to \f[C]SingleOrg\f[R] or \f[C]MultiOrg\f[R] authentication.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--exclude-launch-settings\f[B]\f[R]
++.RS 2
++.PP
++Excludes \f[I]launchSettings.json\f[R] from the generated template.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--no-https\f[B]\f[R]
++.RS 2
++.PP
++Turns off HTTPS.
++This option only applies if \f[C]Individual\f[R], \f[C]IndividualB2C\f[R], \f[C]SingleOrg\f[R], or \f[C]MultiOrg\f[R] aren\[cq]t being used for \f[C]--auth\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-uld|--use-local-db\f[B]\f[R]
++.RS 2
++.PP
++Specifies LocalDB should be used instead of SQLite.
++Only applies to \f[C]Individual\f[R] or \f[C]IndividualB2C\f[R] authentication.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--no-restore\f[B]\f[R]
++.RS 2
++.PP
++Doesn\[cq]t execute an implicit restore during project creation.
++.RE
++.PP
++ * * * * *
++.SS \f[C]blazorwasm\f[R]
++.IP \[bu] 2
++\f[B]\f[CB]-f|--framework <FRAMEWORK>\f[B]\f[R]
++.RS 2
++.PP
++Specifies the framework to target.
++.PP
++The following table lists the default values according to the SDK version number you\[cq]re using:
++.PP
++.TS
++tab(@);
++l l.
++T{
++SDK version
++T}@T{
++Default value
++T}
++_
++T{
++5.0
++T}@T{
++\f[C]net5.0\f[R]
++T}
++T{
++3.1
++T}@T{
++\f[C]netcoreapp3.1\f[R]
++T}
++.TE
++.PP
++To create a project that targets a framework earlier than the SDK that you\[cq]re using, see \f[C]--framework\f[R] for \f[C]console\f[R] projects earlier in this article.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--no-restore\f[B]\f[R]
++.RS 2
++.PP
++Doesn\[cq]t execute an implicit restore during project creation.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-ho|--hosted\f[B]\f[R]
++.RS 2
++.PP
++Includes an ASP.NET Core host for the Blazor WebAssembly app.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-au|--auth <AUTHENTICATION_TYPE>\f[B]\f[R]
++.RS 2
++.PP
++The type of authentication to use.
++The possible values are:
++.IP \[bu] 2
++\f[C]None\f[R] - No authentication (Default).
++.IP \[bu] 2
++\f[C]Individual\f[R] - Individual authentication.
++.IP \[bu] 2
++\f[C]IndividualB2C\f[R] - Individual authentication with Azure AD B2C.
++.IP \[bu] 2
++\f[C]SingleOrg\f[R] - Organizational authentication for a single tenant.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--authority <AUTHORITY>\f[B]\f[R]
++.RS 2
++.PP
++The authority of the OIDC provider.
++Use with \f[C]Individual\f[R] authentication.
++The default value is \f[C]https://login.microsoftonline.com/\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--aad-b2c-instance <INSTANCE>\f[B]\f[R]
++.RS 2
++.PP
++The Azure Active Directory B2C instance to connect to.
++Use with \f[C]IndividualB2C\f[R] authentication.
++The default value is \f[C]https://aadB2CInstance.b2clogin.com/\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-ssp|--susi-policy-id <ID>\f[B]\f[R]
++.RS 2
++.PP
++The sign-in and sign-up policy ID for this project.
++Use with \f[C]IndividualB2C\f[R] authentication.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--aad-instance <INSTANCE>\f[B]\f[R]
++.RS 2
++.PP
++The Azure Active Directory instance to connect to.
++Use with \f[C]SingleOrg\f[R] authentication.
++The default value is \f[C]https://login.microsoftonline.com/\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--client-id <ID>\f[B]\f[R]
++.RS 2
++.PP
++The Client ID for this project.
++Use with \f[C]IndividualB2C\f[R], \f[C]SingleOrg\f[R], or \f[C]Individual\f[R] authentication in standalone scenarios.
++The default value is \f[C]33333333-3333-3333-33333333333333333\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--domain <DOMAIN>\f[B]\f[R]
++.RS 2
++.PP
++The domain for the directory tenant.
++Use with \f[C]SingleOrg\f[R] or \f[C]IndividualB2C\f[R] authentication.
++The default value is \f[C]qualified.domain.name\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--app-id-uri <URI>\f[B]\f[R]
++.RS 2
++.PP
++The App ID Uri for the server API you want to call.
++Use with \f[C]SingleOrg\f[R] or \f[C]IndividualB2C\f[R] authentication.
++The default value is \f[C]api.id.uri\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--api-client-id <ID>\f[B]\f[R]
++.RS 2
++.PP
++The Client ID for the API that the server hosts.
++Use with \f[C]SingleOrg\f[R] or \f[C]IndividualB2C\f[R] authentication.
++The default value is \f[C]11111111-1111-1111-11111111111111111\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-s|--default-scope <SCOPE>\f[B]\f[R]
++.RS 2
++.PP
++The API scope the client needs to request to provision an access token.
++Use with \f[C]SingleOrg\f[R] or \f[C]IndividualB2C\f[R] authentication.
++The default value is \f[C]user_impersonation\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--tenant-id <ID>\f[B]\f[R]
++.RS 2
++.PP
++The TenantId ID of the directory to connect to.
++Use with \f[C]SingleOrg\f[R] authentication.
++The default value is \f[C]22222222-2222-2222-2222-222222222222\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-r|--org-read-access\f[B]\f[R]
++.RS 2
++.PP
++Allows this application read-access to the directory.
++Only applies to \f[C]SingleOrg\f[R] authentication.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--exclude-launch-settings\f[B]\f[R]
++.RS 2
++.PP
++Excludes \f[I]launchSettings.json\f[R] from the generated template.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-p|--pwa\f[B]\f[R]
++.RS 2
++.PP
++produces a Progressive Web Application (PWA) supporting installation and offline use.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--no-https\f[B]\f[R]
++.RS 2
++.PP
++Turns off HTTPS.
++This option only applies if \f[C]Individual\f[R], \f[C]IndividualB2C\f[R], or \f[C]SingleOrg\f[R] aren\[cq]t being used for \f[C]--auth\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-uld|--use-local-db\f[B]\f[R]
++.RS 2
++.PP
++Specifies LocalDB should be used instead of SQLite.
++Only applies to \f[C]Individual\f[R] or \f[C]IndividualB2C\f[R] authentication.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--called-api-url <URL>\f[B]\f[R]
++.RS 2
++.PP
++URL of the API to call from the web app.
++Only applies to \f[C]SingleOrg\f[R] or \f[C]IndividualB2C\f[R] authentication without an ASP.NET Core host specified.
++The default value is \f[C]https://graph.microsoft.com/v1.0/me\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--calls-graph\f[B]\f[R]
++.RS 2
++.PP
++Specifies if the web app calls Microsoft Graph.
++Only applies to \f[C]SingleOrg\f[R] authentication.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--called-api-scopes <SCOPES>\f[B]\f[R]
++.RS 2
++.PP
++Scopes to request to call the API from the web app.
++Only applies to \f[C]SingleOrg\f[R] or \f[C]IndividualB2C\f[R] authentication without an ASP.NET Core host specified.
++The default is \f[C]user.read\f[R].
++.RE
++.PP
++ * * * * *
++.SS \f[C]web\f[R]
++.IP \[bu] 2
++\f[B]\f[CB]--exclude-launch-settings\f[B]\f[R]
++.RS 2
++.PP
++Excludes \f[I]launchSettings.json\f[R] from the generated template.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-f|--framework <FRAMEWORK>\f[B]\f[R]
++.RS 2
++.PP
++Specifies the framework to target.
++Option not available in .NET Core 2.2 SDK.
++.PP
++The following table lists the default values according to the SDK version number you\[cq]re using:
++.PP
++.TS
++tab(@);
++l l.
++T{
++SDK version
++T}@T{
++Default value
++T}
++_
++T{
++5.0
++T}@T{
++\f[C]net5.0\f[R]
++T}
++T{
++3.1
++T}@T{
++\f[C]netcoreapp3.1\f[R]
++T}
++T{
++3.0
++T}@T{
++\f[C]netcoreapp3.0\f[R]
++T}
++T{
++2.1
++T}@T{
++\f[C]netcoreapp2.1\f[R]
++T}
++.TE
++.PP
++To create a project that targets a framework earlier than the SDK that you\[cq]re using, see \f[C]--framework\f[R] for \f[C]console\f[R] projects earlier in this article.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--no-restore\f[B]\f[R]
++.RS 2
++.PP
++Doesn\[cq]t execute an implicit restore during project creation.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--no-https\f[B]\f[R]
++.RS 2
++.PP
++Turns off HTTPS.
++.RE
++.PP
++ * * * * *
++.SS \f[C]mvc\f[R], \f[C]webapp\f[R]
++.IP \[bu] 2
++\f[B]\f[CB]-au|--auth <AUTHENTICATION_TYPE>\f[B]\f[R]
++.RS 2
++.PP
++The type of authentication to use.
++The possible values are:
++.IP \[bu] 2
++\f[C]None\f[R] - No authentication (Default).
++.IP \[bu] 2
++\f[C]Individual\f[R] - Individual authentication.
++.IP \[bu] 2
++\f[C]IndividualB2C\f[R] - Individual authentication with Azure AD B2C.
++.IP \[bu] 2
++\f[C]SingleOrg\f[R] - Organizational authentication for a single tenant.
++.IP \[bu] 2
++\f[C]MultiOrg\f[R] - Organizational authentication for multiple tenants.
++.IP \[bu] 2
++\f[C]Windows\f[R] - Windows authentication.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--aad-b2c-instance <INSTANCE>\f[B]\f[R]
++.RS 2
++.PP
++The Azure Active Directory B2C instance to connect to.
++Use with \f[C]IndividualB2C\f[R] authentication.
++The default value is \f[C]https://login.microsoftonline.com/tfp/\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-ssp|--susi-policy-id <ID>\f[B]\f[R]
++.RS 2
++.PP
++The sign-in and sign-up policy ID for this project.
++Use with \f[C]IndividualB2C\f[R] authentication.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-rp|--reset-password-policy-id <ID>\f[B]\f[R]
++.RS 2
++.PP
++The reset password policy ID for this project.
++Use with \f[C]IndividualB2C\f[R] authentication.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-ep|--edit-profile-policy-id <ID>\f[B]\f[R]
++.RS 2
++.PP
++The edit profile policy ID for this project.
++Use with \f[C]IndividualB2C\f[R] authentication.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--aad-instance <INSTANCE>\f[B]\f[R]
++.RS 2
++.PP
++The Azure Active Directory instance to connect to.
++Use with \f[C]SingleOrg\f[R] or \f[C]MultiOrg\f[R] authentication.
++The default value is \f[C]https://login.microsoftonline.com/\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--client-id <ID>\f[B]\f[R]
++.RS 2
++.PP
++The Client ID for this project.
++Use with \f[C]IndividualB2C\f[R], \f[C]SingleOrg\f[R], or \f[C]MultiOrg\f[R] authentication.
++The default value is \f[C]11111111-1111-1111-11111111111111111\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--domain <DOMAIN>\f[B]\f[R]
++.RS 2
++.PP
++The domain for the directory tenant.
++Use with \f[C]SingleOrg\f[R] or \f[C]IndividualB2C\f[R] authentication.
++The default value is \f[C]qualified.domain.name\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--tenant-id <ID>\f[B]\f[R]
++.RS 2
++.PP
++The TenantId ID of the directory to connect to.
++Use with \f[C]SingleOrg\f[R] authentication.
++The default value is \f[C]22222222-2222-2222-2222-222222222222\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--callback-path <PATH>\f[B]\f[R]
++.RS 2
++.PP
++The request path within the application\[cq]s base path of the redirect URI.
++Use with \f[C]SingleOrg\f[R] or \f[C]IndividualB2C\f[R] authentication.
++The default value is \f[C]/signin-oidc\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-r|--org-read-access\f[B]\f[R]
++.RS 2
++.PP
++Allows this application read-access to the directory.
++Only applies to \f[C]SingleOrg\f[R] or \f[C]MultiOrg\f[R] authentication.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--exclude-launch-settings\f[B]\f[R]
++.RS 2
++.PP
++Excludes \f[I]launchSettings.json\f[R] from the generated template.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--no-https\f[B]\f[R]
++.RS 2
++.PP
++Turns off HTTPS.
++This option only applies if \f[C]Individual\f[R], \f[C]IndividualB2C\f[R], \f[C]SingleOrg\f[R], or \f[C]MultiOrg\f[R] aren\[cq]t being used.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-uld|--use-local-db\f[B]\f[R]
++.RS 2
++.PP
++Specifies LocalDB should be used instead of SQLite.
++Only applies to \f[C]Individual\f[R] or \f[C]IndividualB2C\f[R] authentication.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-f|--framework <FRAMEWORK>\f[B]\f[R]
++.RS 2
++.PP
++Specifies the framework to target.
++Option available since .NET Core 3.0 SDK.
++.PP
++The following table lists the default values according to the SDK version number you\[cq]re using:
++.PP
++.TS
++tab(@);
++l l.
++T{
++SDK version
++T}@T{
++Default value
++T}
++_
++T{
++5.0
++T}@T{
++\f[C]net5.0\f[R]
++T}
++T{
++3.1
++T}@T{
++\f[C]netcoreapp3.1\f[R]
++T}
++T{
++3.0
++T}@T{
++\f[C]netcoreapp3.0\f[R]
++T}
++.TE
++.PP
++To create a project that targets a framework earlier than the SDK that you\[cq]re using, see \f[C]--framework\f[R] for \f[C]console\f[R] projects earlier in this article.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--no-restore\f[B]\f[R]
++.RS 2
++.PP
++Doesn\[cq]t execute an implicit restore during project creation.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--use-browserlink\f[B]\f[R]
++.RS 2
++.PP
++Includes BrowserLink in the project.
++Option not available in .NET Core 2.2 and 3.1 SDK.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-rrc|--razor-runtime-compilation\f[B]\f[R]
++.RS 2
++.PP
++Determines if the project is configured to use Razor runtime compilation in Debug builds.
++Option available since .NET Core 3.1.201 SDK.
++.RE
++.PP
++ * * * * *
++.SS \f[C]angular\f[R], \f[C]react\f[R]
++.IP \[bu] 2
++\f[B]\f[CB]-au|--auth <AUTHENTICATION_TYPE>\f[B]\f[R]
++.RS 2
++.PP
++The type of authentication to use.
++Available since .NET Core 3.0 SDK.
++.PP
++The possible values are:
++.IP \[bu] 2
++\f[C]None\f[R] - No authentication (Default).
++.IP \[bu] 2
++\f[C]Individual\f[R] - Individual authentication.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--exclude-launch-settings\f[B]\f[R]
++.RS 2
++.PP
++Excludes \f[I]launchSettings.json\f[R] from the generated template.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--no-restore\f[B]\f[R]
++.RS 2
++.PP
++Doesn\[cq]t execute an implicit restore during project creation.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--no-https\f[B]\f[R]
++.RS 2
++.PP
++Turns off HTTPS.
++This option only applies if authentication is \f[C]None\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-uld|--use-local-db\f[B]\f[R]
++.RS 2
++.PP
++Specifies LocalDB should be used instead of SQLite.
++Only applies to \f[C]Individual\f[R] or \f[C]IndividualB2C\f[R] authentication.
++Available since .NET Core 3.0 SDK.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-f|--framework <FRAMEWORK>\f[B]\f[R]
++.RS 2
++.PP
++Specifies the framework to target.
++Option not available in .NET Core 2.2 SDK.
++.PP
++The following table lists the default values according to the SDK version number you\[cq]re using:
++.PP
++.TS
++tab(@);
++l l.
++T{
++SDK version
++T}@T{
++Default value
++T}
++_
++T{
++5.0
++T}@T{
++\f[C]net5.0\f[R]
++T}
++T{
++3.1
++T}@T{
++\f[C]netcoreapp3.1\f[R]
++T}
++T{
++3.0
++T}@T{
++\f[C]netcoreapp3.0\f[R]
++T}
++T{
++2.1
++T}@T{
++\f[C]netcoreapp2.0\f[R]
++T}
++.TE
++.PP
++To create a project that targets a framework earlier than the SDK that you\[cq]re using, see \f[C]--framework\f[R] for \f[C]console\f[R] projects earlier in this article.
++.RE
++.PP
++ * * * * *
++.SS \f[C]reactredux\f[R]
++.IP \[bu] 2
++\f[B]\f[CB]--exclude-launch-settings\f[B]\f[R]
++.RS 2
++.PP
++Excludes \f[I]launchSettings.json\f[R] from the generated template.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-f|--framework <FRAMEWORK>\f[B]\f[R]
++.RS 2
++.PP
++Specifies the framework to target.
++Option not available in .NET Core 2.2 SDK.
++.PP
++The following table lists the default values according to the SDK version number you\[cq]re using:
++.PP
++.TS
++tab(@);
++l l.
++T{
++SDK version
++T}@T{
++Default value
++T}
++_
++T{
++5.0
++T}@T{
++\f[C]net5.0\f[R]
++T}
++T{
++3.1
++T}@T{
++\f[C]netcoreapp3.1\f[R]
++T}
++T{
++3.0
++T}@T{
++\f[C]netcoreapp3.0\f[R]
++T}
++T{
++2.1
++T}@T{
++\f[C]netcoreapp2.0\f[R]
++T}
++.TE
++.PP
++To create a project that targets a framework earlier than the SDK that you\[cq]re using, see \f[C]--framework\f[R] for \f[C]console\f[R] projects earlier in this article.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--no-restore\f[B]\f[R]
++.RS 2
++.PP
++Doesn\[cq]t execute an implicit restore during project creation.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--no-https\f[B]\f[R]
++.RS 2
++.PP
++Turns off HTTPS.
++.RE
++.PP
++ * * * * *
++.SS \f[C]razorclasslib\f[R]
++.IP \[bu] 2
++\f[B]\f[CB]--no-restore\f[B]\f[R]
++.RS 2
++.PP
++Doesn\[cq]t execute an implicit restore during project creation.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-s|--support-pages-and-views\f[B]\f[R]
++.RS 2
++.PP
++Supports adding traditional Razor pages and Views in addition to components to this library.
++Available since .NET Core 3.0 SDK.
++.RE
++.PP
++ * * * * *
++.SS \f[C]webapi\f[R]
++.IP \[bu] 2
++\f[B]\f[CB]-au|--auth <AUTHENTICATION_TYPE>\f[B]\f[R]
++.RS 2
++.PP
++The type of authentication to use.
++The possible values are:
++.IP \[bu] 2
++\f[C]None\f[R] - No authentication (Default).
++.IP \[bu] 2
++\f[C]IndividualB2C\f[R] - Individual authentication with Azure AD B2C.
++.IP \[bu] 2
++\f[C]SingleOrg\f[R] - Organizational authentication for a single tenant.
++.IP \[bu] 2
++\f[C]Windows\f[R] - Windows authentication.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--aad-b2c-instance <INSTANCE>\f[B]\f[R]
++.RS 2
++.PP
++The Azure Active Directory B2C instance to connect to.
++Use with \f[C]IndividualB2C\f[R] authentication.
++The default value is \f[C]https://login.microsoftonline.com/tfp/\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-ssp|--susi-policy-id <ID>\f[B]\f[R]
++.RS 2
++.PP
++The sign-in and sign-up policy ID for this project.
++Use with \f[C]IndividualB2C\f[R] authentication.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--aad-instance <INSTANCE>\f[B]\f[R]
++.RS 2
++.PP
++The Azure Active Directory instance to connect to.
++Use with \f[C]SingleOrg\f[R] authentication.
++The default value is \f[C]https://login.microsoftonline.com/\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--client-id <ID>\f[B]\f[R]
++.RS 2
++.PP
++The Client ID for this project.
++Use with \f[C]IndividualB2C\f[R] or \f[C]SingleOrg\f[R] authentication.
++The default value is \f[C]11111111-1111-1111-11111111111111111\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--domain <DOMAIN>\f[B]\f[R]
++.RS 2
++.PP
++The domain for the directory tenant.
++Use with \f[C]IndividualB2C\f[R] or \f[C]SingleOrg\f[R] authentication.
++The default value is \f[C]qualified.domain.name\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--tenant-id <ID>\f[B]\f[R]
++.RS 2
++.PP
++The TenantId ID of the directory to connect to.
++Use with \f[C]SingleOrg\f[R] authentication.
++The default value is \f[C]22222222-2222-2222-2222-222222222222\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-r|--org-read-access\f[B]\f[R]
++.RS 2
++.PP
++Allows this application read-access to the directory.
++Only applies to \f[C]SingleOrg\f[R] authentication.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--exclude-launch-settings\f[B]\f[R]
++.RS 2
++.PP
++Excludes \f[I]launchSettings.json\f[R] from the generated template.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--no-https\f[B]\f[R]
++.RS 2
++.PP
++Turns off HTTPS.
++\f[C]app.UseHsts\f[R] and \f[C]app.UseHttpsRedirection\f[R] aren\[cq]t added to \f[C]Startup.Configure\f[R].
++This option only applies if \f[C]IndividualB2C\f[R] or \f[C]SingleOrg\f[R] aren\[cq]t being used for authentication.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-uld|--use-local-db\f[B]\f[R]
++.RS 2
++.PP
++Specifies LocalDB should be used instead of SQLite.
++Only applies to \f[C]IndividualB2C\f[R] authentication.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-f|--framework <FRAMEWORK>\f[B]\f[R]
++.RS 2
++.PP
++Specifies the framework to target.
++Option not available in .NET Core 2.2 SDK.
++.PP
++The following table lists the default values according to the SDK version number you\[cq]re using:
++.PP
++.TS
++tab(@);
++l l.
++T{
++SDK version
++T}@T{
++Default value
++T}
++_
++T{
++5.0
++T}@T{
++\f[C]net5.0\f[R]
++T}
++T{
++3.1
++T}@T{
++\f[C]netcoreapp3.1\f[R]
++T}
++T{
++3.0
++T}@T{
++\f[C]netcoreapp3.0\f[R]
++T}
++T{
++2.1
++T}@T{
++\f[C]netcoreapp2.1\f[R]
++T}
++.TE
++.PP
++To create a project that targets a framework earlier than the SDK that you\[cq]re using, see \f[C]--framework\f[R] for \f[C]console\f[R] projects earlier in this article.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--no-restore\f[B]\f[R]
++.RS 2
++.PP
++Doesn\[cq]t execute an implicit restore during project creation.
++.RE
++.PP
++ * * * * *
++.SS \f[C]globaljson\f[R]
++.IP \[bu] 2
++\f[B]\f[CB]--sdk-version <VERSION_NUMBER>\f[B]\f[R]
++.RS 2
++.PP
++Specifies the version of the .NET SDK to use in the \f[I]global.json\f[R] file.
++.RE
++.SS See also
++.IP \[bu] 2
++dotnet new command
++.IP \[bu] 2
++dotnet new \[en]list option
++.IP \[bu] 2
++Custom templates for dotnet new
++.IP \[bu] 2
++Create a custom template for dotnet new
+diff --git a/documentation/manpages/sdk/dotnet-new-search.1 b/documentation/manpages/sdk/dotnet-new-search.1
+new file mode 100644
+index 0000000000..8ae7a75e81
+--- /dev/null
++++ b/documentation/manpages/sdk/dotnet-new-search.1
+@@ -0,0 +1,149 @@
++.\" Automatically generated by Pandoc 2.14.1
++.\"
++.TH "" "1" "" "" ".NET"
++.hy
++.SH dotnet new \[en]search option
++.PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 5.0.300 SDK and later versions
++.SH NAME
++.PP
++\f[C]dotnet new --search\f[R] - searches for the templates supported by \f[C]dotnet new\f[R] on NuGet.org.
++.SH SYNOPSIS
++.IP
++.nf
++\f[C]
++dotnet new <TEMPLATE_NAME> --search
++
++dotnet new [<TEMPLATE_NAME>] --search [--author <AUTHOR>] [-lang|--language {\[dq]C#\[dq]|\[dq]F#\[dq]|VB}]
++ [--package <PACKAGE>] [--tag <TAG>] [--type <TYPE>]
++ [--columns <COLUMNS>] [--columns-all]
++\f[R]
++.fi
++.SH DESCRIPTION
++.PP
++The \f[C]dotnet new --search\f[R] option searches for templates supported by \f[C]dotnet new\f[R] on NuGet.org.
++When the is specified, searches for templates containing the specified name.
++.SS Arguments
++.IP \[bu] 2
++\f[B]\f[CB]TEMPLATE_NAME\f[B]\f[R]
++.RS 2
++.PP
++If the argument is specified, only templates containing \f[C]<TEMPLATE_NAME>\f[R] in the template name or short name will be shown.
++The argument is mandatory when \f[C]--author\f[R], \f[C]--language\f[R], \f[C]--package\f[R], \f[C]--tag\f[R] or \f[C]--type\f[R] options are not specified.
++.RE
++.SH OPTIONS
++.IP \[bu] 2
++\f[B]\f[CB]--author <AUTHOR>\f[B]\f[R]
++.RS 2
++.PP
++Filters templates based on template author.
++Partial match is supported.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--columns <COLUMNS>\f[B]\f[R]
++.RS 2
++.PP
++Comma-separated list of columns to display in the output.
++The supported columns are:
++.IP \[bu] 2
++\f[C]language\f[R] - A comma-separated list of languages supported by the template.
++.IP \[bu] 2
++\f[C]tags\f[R] - The list of template tags.
++.IP \[bu] 2
++\f[C]author\f[R] - The template author.
++.IP \[bu] 2
++\f[C]type\f[R] - The template type: project or item.
++.PP
++The template name, short name, package name and total downloads count are always shown.
++The default list of columns is template name, short name, author, language, package, and total downloads.
++This list is equivalent to specifying \f[C]--columns=author,language\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--columns-all\f[B]\f[R]
++.RS 2
++.PP
++Displays all columns in the output.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-lang|--language {C#|F#|VB}\f[B]\f[R]
++.RS 2
++.PP
++Filters templates based on language supported by the template.
++The language accepted varies by the template.
++Not valid for some templates.
++.RS
++.PP
++[!NOTE] Some shells interpret \f[C]#\f[R] as a special character.
++In those cases, enclose the language parameter value in quotes.
++For example, \f[C]dotnet new --search --language \[dq]F#\[dq]\f[R].
++.RE
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--package <PACKAGE>\f[B]\f[R]
++.RS 2
++.PP
++Filters templates based on NuGet package ID.
++Partial match is supported.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--tag <TAG>\f[B]\f[R]
++.RS 2
++.PP
++Filters templates based on template tags.
++To be selected, a template must have at least one tag that exactly matches the criteria.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--type <TYPE>\f[B]\f[R]
++.RS 2
++.PP
++Filters templates based on template type.
++Predefined values are \f[C]project\f[R] and \f[C]item\f[R].
++.RE
++.SH EXAMPLES
++.IP \[bu] 2
++Search for all templates available on NuGet.org matching the \f[I]spa\f[R] substring.
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet new spa --search
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Search for all templates available on NuGet.org matching the \f[I]we\f[R] substring and supporting the F# language.
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet new we --search --language \[dq]F#\[dq]
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Search for item templates.
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet new --search --type item
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Search for all C# templates, showing the type and tags in the output.
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet new --search --language \[dq]C#\[dq] --columns \[dq]type,tags\[dq]
++\f[R]
++.fi
++.RE
++.SS See also
++.IP \[bu] 2
++dotnet new command
++.IP \[bu] 2
++dotnet new \[en]list option
++.IP \[bu] 2
++Custom templates for dotnet new
+diff --git a/documentation/manpages/sdk/dotnet-new-uninstall.1 b/documentation/manpages/sdk/dotnet-new-uninstall.1
+new file mode 100644
+index 0000000000..2374f5ed66
+--- /dev/null
++++ b/documentation/manpages/sdk/dotnet-new-uninstall.1
+@@ -0,0 +1,56 @@
++.\" Automatically generated by Pandoc 2.14.1
++.\"
++.TH "" "1" "" "" ".NET"
++.hy
++.SH dotnet new \[en]uninstall option
++.PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.0 SDK and later versions
++.SH NAME
++.PP
++\f[C]dotnet new --uninstall\f[R] - uninstalls a template package.
++.SH SYNOPSIS
++.IP
++.nf
++\f[C]
++dotnet new --uninstall <PATH|NUGET_ID>
++\f[R]
++.fi
++.SH DESCRIPTION
++.PP
++The \f[C]dotnet new --uninstall\f[R] command uninstalls a template package at the \f[C]PATH\f[R] or \f[C]NUGET_ID\f[R] provided.
++When the \f[C]<PATH|NUGET_ID>\f[R] value isn\[cq]t specified, all currently installed template packages and their associated templates are displayed.
++When specifying \f[C]NUGET_ID\f[R], don\[cq]t include the version number.
++If you don\[cq]t specify a parameter to this option, the command lists the installed templates and details about them.
++> [!NOTE] > To uninstall a template using a \f[C]PATH\f[R], you need to fully qualify the path.
++For example, \f[I]C:/Users/<USER>/Documents/Templates/GarciaSoftware.ConsoleTemplate.CSharp\f[R] will work, but \f[I]./GarciaSoftware.ConsoleTemplate.CSharp\f[R] from the containing folder will not.
++> Don\[cq]t include a final terminating directory slash on your template path.
++.SH EXAMPLES
++.IP \[bu] 2
++List the installed templates and details about them, including how to uninstall them:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet new -u
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Uninstall the SPA templates for ASP.NET Core:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet new -u Microsoft.DotNet.Web.Spa.ProjectTemplates
++\f[R]
++.fi
++.RE
++.SS See also
++.IP \[bu] 2
++dotnet new command
++.IP \[bu] 2
++dotnet new \[en]list option
++.IP \[bu] 2
++dotnet new \[en]search option
++.IP \[bu] 2
++Custom templates for dotnet new
+diff --git a/documentation/manpages/sdk/dotnet-new-update.1 b/documentation/manpages/sdk/dotnet-new-update.1
+new file mode 100644
+index 0000000000..e9f9b5e287
+--- /dev/null
++++ b/documentation/manpages/sdk/dotnet-new-update.1
+@@ -0,0 +1,34 @@
++.\" Automatically generated by Pandoc 2.14.1
++.\"
++.TH "" "1" "" "" ".NET"
++.hy
++.SH dotnet new \[en]update-check and \[en]update-apply options
++.PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 3.0 SDK and later versions
++.SH NAME
++.PP
++\f[C]dotnet new --update-check\f[R] checks for available updates for installed template packages.
++.PP
++\f[C]dotnet new --update-apply\f[R] applies updates to installed template packages.
++.SH SYNOPSIS
++.IP
++.nf
++\f[C]
++dotnet new --update-check
++
++dotnet new --update-apply
++\f[R]
++.fi
++.SH DESCRIPTION
++.PP
++The \f[C]dotnet new --update-check\f[R] option checks if there are updates available for the template packs that are currently installed.
++The \f[C]dotnet new --update-apply\f[R] option checks if there are updates available for the template packages that are currently installed and installs them.
++.SS See also
++.IP \[bu] 2
++dotnet new command
++.IP \[bu] 2
++dotnet new \[en]search option
++.IP \[bu] 2
++dotnet new \[en]install option
++.IP \[bu] 2
++Custom templates for dotnet new
+diff --git a/documentation/manpages/sdk/dotnet-new.1 b/documentation/manpages/sdk/dotnet-new.1
+index a9e5a18885..aeb1a6672a 100644
+--- a/documentation/manpages/sdk/dotnet-new.1
++++ b/documentation/manpages/sdk/dotnet-new.1
+@@ -1,85 +1,75 @@
+-.\"t
+-.\" Automatically generated by Pandoc 2.7.2
++'\" t
++.\" Automatically generated by Pandoc 2.14.1
+ .\"
+-.TH "dotnet new command" "1" "" "" ".NET Core"
++.TH "" "1" "" "" ".NET"
+ .hy
+ .SH dotnet new
+ .PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.0 SDK and later versions
+ .SH NAME
+ .PP
+ \f[C]dotnet new\f[R] - Creates a new project, configuration file, or solution based on the specified template.
+ .SH SYNOPSIS
+-.SS .NET Core 2.2
+ .IP
+ .nf
+ \f[C]
+-dotnet new <TEMPLATE> [--dry-run] [--force] [-i|--install] [-lang|--language] [-n|--name] [--nuget-source] [-o|--output] [-u|--uninstall] [Template options]
+-dotnet new <TEMPLATE> [-l|--list] [--type]
+-dotnet new [-h|--help]
++dotnet new <TEMPLATE> [--dry-run] [--force] [-lang|--language {\[dq]C#\[dq]|\[dq]F#\[dq]|VB}]
++ [-n|--name <OUTPUT_NAME>] [-o|--output <OUTPUT_DIRECTORY>] [Template options]
++
++dotnet new -h|--help
+ \f[R]
+ .fi
+-.SS .NET Core 2.1
+-.IP
+-.nf
+-\f[C]
+-dotnet new <TEMPLATE> [--force] [-i|--install] [-lang|--language] [-n|--name] [--nuget-source] [-o|--output] [-u|--uninstall] [Template options]
+-dotnet new <TEMPLATE> [-l|--list] [--type]
+-dotnet new [-h|--help]
+-\f[R]
+-.fi
+-.SS .NET Core 2.0
+-.IP
+-.nf
+-\f[C]
+-dotnet new <TEMPLATE> [--force] [-i|--install] [-lang|--language] [-n|--name] [-o|--output] [-u|--uninstall] [Template options]
+-dotnet new <TEMPLATE> [-l|--list] [--type]
+-dotnet new [-h|--help]
+-\f[R]
+-.fi
+-.SS .NET Core 1.x
+-.IP
+-.nf
+-\f[C]
+-dotnet new <TEMPLATE> [-lang|--language] [-n|--name] [-o|--output] [-all|--show-all] [-h|--help] [Template options]
+-dotnet new <TEMPLATE> [-l|--list]
+-dotnet new [-all|--show-all]
+-dotnet new [-h|--help]
+-\f[R]
+-.fi
+-.PP
+- * * * * *
+ .SH DESCRIPTION
+ .PP
+-The \f[C]dotnet new\f[R] command provides a convenient way to initialize a valid .NET Core project.
++The \f[C]dotnet new\f[R] command creates a .NET project or other artifacts based on a template.
+ .PP
+-The command calls the template engine to create the artifacts on disk based on the specified template and options.
+-.SS Arguments
++The command calls the template engine (https://github.com/dotnet/templating) to create the artifacts on disk based on the specified template and options.
++.SS Implicit restore
++.PP
++You don\[cq]t have to run \f[C]dotnet restore\f[R] because it\[cq]s run implicitly by all commands that require a restore to occur, such as \f[C]dotnet new\f[R], \f[C]dotnet build\f[R], \f[C]dotnet run\f[R], \f[C]dotnet test\f[R], \f[C]dotnet publish\f[R], and \f[C]dotnet pack\f[R].
++To disable implicit restore, use the \f[C]--no-restore\f[R] option.
+ .PP
+-\f[C]TEMPLATE\f[R]
++The \f[C]dotnet restore\f[R] command is still useful in certain scenarios where explicitly restoring makes sense, such as continuous integration builds in Azure DevOps Services or in build systems that need to explicitly control when the restore occurs.
++.PP
++For information about how to manage NuGet feeds, see the \f[C]dotnet restore\f[R] documentation.
++.SS Arguments
++.IP \[bu] 2
++\f[B]\f[CB]TEMPLATE\f[B]\f[R]
++.RS 2
+ .PP
+ The template to instantiate when the command is invoked.
+ Each template might have specific options you can pass.
+ For more information, see Template options.
+ .PP
+-If the \f[C]TEMPLATE\f[R] value isn\[cq]t an exact match on text in the \f[B]Templates\f[R] or \f[B]Short Name\f[R] column, a substring match is performed on those two columns.
+-.SS .NET Core 2.2
++You can run \f[C]dotnet new --list\f[R] to see a list of all installed templates.
++.PP
++Starting with .NET Core 3.0 SDK and ending with .NET Core 5.0.300 SDK, the CLI searches for templates in NuGet.org when you invoke the \f[C]dotnet new\f[R] command in the following conditions:
++.IP \[bu] 2
++If the CLI can\[cq]t find a template match when invoking \f[C]dotnet new\f[R], not even partial.
++.IP \[bu] 2
++If there\[cq]s a newer version of the template available.
++In this case, the project or artifact is created but the CLI warns you about an updated version of the template.
++.PP
++Starting with .NET Core 5.0.300 SDK, the \f[C]--search\f[R] option should be used to search for templates in NuGet.org..
+ .PP
+-The command contains a default list of templates.
+-Use \f[C]dotnet new -l\f[R] to obtain a list of the available templates.
+-The following table shows the templates that come pre-installed with the .NET Core SDK 2.2.100.
++The following table shows the templates that come pre-installed with the .NET SDK.
+ The default language for the template is shown inside the brackets.
++Click on the short name link to see the specific template options.
++.RE
+ .PP
+ .TS
+ tab(@);
+-l l l l.
++l l l l l.
+ T{
+ Templates
+ T}@T{
+-Short Name
++Short name
+ T}@T{
+ Language
+ T}@T{
+ Tags
++T}@T{
++Introduced
+ T}
+ _
+ T{
+@@ -90,6 +80,8 @@ T}@T{
+ [C#], F#, VB
+ T}@T{
+ Common/Console
++T}@T{
++1.0
+ T}
+ T{
+ Class library
+@@ -99,230 +91,140 @@ T}@T{
+ [C#], F#, VB
+ T}@T{
+ Common/Library
+-T}
+-T{
+-Unit Test Project
+-T}@T{
+-\f[C]mstest\f[R]
+-T}@T{
+-[C#], F#, VB
+ T}@T{
+-Test/MSTest
++1.0
+ T}
+ T{
+-NUnit 3 Test Project
+-T}@T{
+-\f[C]nunit\f[R]
+-T}@T{
+-[C#], F#, VB
++WPF Application
+ T}@T{
+-Test/NUnit
+-T}
+-T{
+-NUnit 3 Test Item
++\f[C]wpf\f[R]
+ T}@T{
+-\f[C]nunit-test\f[R]
++[C#], VB
+ T}@T{
+-[C#], F#, VB
++Common/WPF
+ T}@T{
+-Test/NUnit
++3.0 (5.0 for VB)
+ T}
+ T{
+-xUnit Test Project
+-T}@T{
+-\f[C]xunit\f[R]
+-T}@T{
+-[C#], F#, VB
++WPF Class library
+ T}@T{
+-Test/xUnit
+-T}
+-T{
+-Razor Page
++\f[C]wpflib\f[R]
+ T}@T{
+-\f[C]page\f[R]
++[C#], VB
+ T}@T{
+-[C#]
++Common/WPF
+ T}@T{
+-Web/ASP.NET
++3.0 (5.0 for VB)
+ T}
+ T{
+-MVC ViewImports
+-T}@T{
+-\f[C]viewimports\f[R]
+-T}@T{
+-[C#]
++WPF Custom Control Library
+ T}@T{
+-Web/ASP.NET
+-T}
+-T{
+-MVC ViewStart
++\f[C]wpfcustomcontrollib\f[R]
+ T}@T{
+-\f[C]viewstart\f[R]
++[C#], VB
+ T}@T{
+-[C#]
++Common/WPF
+ T}@T{
+-Web/ASP.NET
++3.0 (5.0 for VB)
+ T}
+ T{
+-ASP.NET Core Empty
+-T}@T{
+-\f[C]web\f[R]
+-T}@T{
+-[C#], F#
++WPF User Control Library
+ T}@T{
+-Web/Empty
+-T}
+-T{
+-ASP.NET Core Web App (Model-View-Controller)
++\f[C]wpfusercontrollib\f[R]
+ T}@T{
+-\f[C]mvc\f[R]
++[C#], VB
+ T}@T{
+-[C#], F#
++Common/WPF
+ T}@T{
+-Web/MVC
++3.0 (5.0 for VB)
+ T}
+ T{
+-ASP.NET Core Web App
+-T}@T{
+-\f[C]webapp\f[R], \f[C]razor\f[R]
+-T}@T{
+-[C#]
++Windows Forms (WinForms) Application
+ T}@T{
+-Web/MVC/Razor Pages
+-T}
+-T{
+-ASP.NET Core with Angular
++\f[C]winforms\f[R]
+ T}@T{
+-\f[C]angular\f[R]
++[C#], VB
+ T}@T{
+-[C#]
++Common/WinForms
+ T}@T{
+-Web/MVC/SPA
++3.0 (5.0 for VB)
+ T}
+ T{
+-ASP.NET Core with React.js
++Windows Forms (WinForms) Class library
+ T}@T{
+-\f[C]react\f[R]
+-T}@T{
+-[C#]
+-T}@T{
+-Web/MVC/SPA
+-T}
+-T{
+-ASP.NET Core with React.js and Redux
++\f[C]winformslib\f[R]
+ T}@T{
+-\f[C]reactredux\f[R]
++[C#], VB
+ T}@T{
+-[C#]
++Common/WinForms
+ T}@T{
+-Web/MVC/SPA
++3.0 (5.0 for VB)
+ T}
+ T{
+-Razor Class Library
++Worker Service
+ T}@T{
+-\f[C]razorclasslib\f[R]
++\f[C]worker\f[R]
+ T}@T{
+ [C#]
+ T}@T{
+-Web/Razor/Library/Razor Class Library
+-T}
+-T{
+-ASP.NET Core Web API
+-T}@T{
+-\f[C]webapi\f[R]
+-T}@T{
+-[C#], F#
+-T}@T{
+-Web/WebAPI
+-T}
+-T{
+-global.json file
+-T}@T{
+-\f[C]globaljson\f[R]
+-T}@T{
++Common/Worker/Web
+ T}@T{
+-Config
++3.0
+ T}
+ T{
+-NuGet Config
+-T}@T{
+-\f[C]nugetconfig\f[R]
+-T}@T{
++Unit Test Project
+ T}@T{
+-Config
+-T}
+-T{
+-Web Config
++\f[C]mstest\f[R]
+ T}@T{
+-\f[C]webconfig\f[R]
++[C#], F#, VB
+ T}@T{
++Test/MSTest
+ T}@T{
+-Config
++1.0
+ T}
+ T{
+-Solution File
+-T}@T{
+-\f[C]sln\f[R]
+-T}@T{
++NUnit 3 Test Project
+ T}@T{
+-Solution
+-T}
+-.TE
+-.SS .NET Core 2.1
+-.PP
+-The command contains a default list of templates.
+-Use \f[C]dotnet new -l\f[R] to obtain a list of the available templates.
+-The following table shows the templates that come pre-installed with the .NET Core SDK 2.1.300.
+-The default language for the template is shown inside the brackets.
+-.PP
+-.TS
+-tab(@);
+-l l l l.
+-T{
+-Templates
++\f[C]nunit\f[R]
+ T}@T{
+-Short Name
++[C#], F#, VB
+ T}@T{
+-Language
++Test/NUnit
+ T}@T{
+-Tags
++2.1.400
+ T}
+-_
+ T{
+-Console Application
++NUnit 3 Test Item
+ T}@T{
+-\f[C]console\f[R]
++\f[C]nunit-test\f[R]
+ T}@T{
+ [C#], F#, VB
+ T}@T{
+-Common/Console
+-T}
+-T{
+-Class library
+-T}@T{
+-\f[C]classlib\f[R]
+-T}@T{
+-[C#], F#, VB
++Test/NUnit
+ T}@T{
+-Common/Library
++2.2
+ T}
+ T{
+-Unit Test Project
++xUnit Test Project
+ T}@T{
+-\f[C]mstest\f[R]
++\f[C]xunit\f[R]
+ T}@T{
+ [C#], F#, VB
+ T}@T{
+-Test/MSTest
++Test/xUnit
++T}@T{
++1.0
+ T}
+ T{
+-xUnit Test Project
++Razor Component
+ T}@T{
+-\f[C]xunit\f[R]
++\f[C]razorcomponent\f[R]
+ T}@T{
+-[C#], F#, VB
++[C#]
+ T}@T{
+-Test/xUnit
++Web/ASP.NET
++T}@T{
++3.0
+ T}
+ T{
+ Razor Page
+@@ -332,6 +234,8 @@ T}@T{
+ [C#]
+ T}@T{
+ Web/ASP.NET
++T}@T{
++2.0
+ T}
+ T{
+ MVC ViewImports
+@@ -341,6 +245,8 @@ T}@T{
+ [C#]
+ T}@T{
+ Web/ASP.NET
++T}@T{
++2.0
+ T}
+ T{
+ MVC ViewStart
+@@ -350,6 +256,30 @@ T}@T{
+ [C#]
+ T}@T{
+ Web/ASP.NET
++T}@T{
++2.0
++T}
++T{
++Blazor Server App
++T}@T{
++\f[C]blazorserver\f[R]
++T}@T{
++[C#]
++T}@T{
++Web/Blazor
++T}@T{
++3.0
++T}
++T{
++Blazor WebAssembly App
++T}@T{
++\f[C]blazorwasm\f[R]
++T}@T{
++[C#]
++T}@T{
++Web/Blazor/WebAssembly
++T}@T{
++3.1.300
+ T}
+ T{
+ ASP.NET Core Empty
+@@ -359,6 +289,8 @@ T}@T{
+ [C#], F#
+ T}@T{
+ Web/Empty
++T}@T{
++1.0
+ T}
+ T{
+ ASP.NET Core Web App (Model-View-Controller)
+@@ -368,15 +300,19 @@ T}@T{
+ [C#], F#
+ T}@T{
+ Web/MVC
++T}@T{
++1.0
+ T}
+ T{
+ ASP.NET Core Web App
+ T}@T{
+-\f[C]razor\f[R]
++\f[C]webapp, razor\f[R]
+ T}@T{
+ [C#]
+ T}@T{
+ Web/MVC/Razor Pages
++T}@T{
++2.2, 2.0
+ T}
+ T{
+ ASP.NET Core with Angular
+@@ -386,6 +322,8 @@ T}@T{
+ [C#]
+ T}@T{
+ Web/MVC/SPA
++T}@T{
++2.0
+ T}
+ T{
+ ASP.NET Core with React.js
+@@ -395,6 +333,8 @@ T}@T{
+ [C#]
+ T}@T{
+ Web/MVC/SPA
++T}@T{
++2.0
+ T}
+ T{
+ ASP.NET Core with React.js and Redux
+@@ -404,6 +344,8 @@ T}@T{
+ [C#]
+ T}@T{
+ Web/MVC/SPA
++T}@T{
++2.0
+ T}
+ T{
+ Razor Class Library
+@@ -413,6 +355,8 @@ T}@T{
+ [C#]
+ T}@T{
+ Web/Razor/Library/Razor Class Library
++T}@T{
++2.1
+ T}
+ T{
+ ASP.NET Core Web API
+@@ -422,6 +366,29 @@ T}@T{
+ [C#], F#
+ T}@T{
+ Web/WebAPI
++T}@T{
++1.0
++T}
++T{
++ASP.NET Core gRPC Service
++T}@T{
++\f[C]grpc\f[R]
++T}@T{
++[C#]
++T}@T{
++Web/gRPC
++T}@T{
++3.0
++T}
++T{
++dotnet gitignore file
++T}@T{
++\f[C]gitignore\f[R]
++T}@T{
++T}@T{
++Config
++T}@T{
++3.0
+ T}
+ T{
+ global.json file
+@@ -430,6 +397,8 @@ T}@T{
+ T}@T{
+ T}@T{
+ Config
++T}@T{
++2.0
+ T}
+ T{
+ NuGet Config
+@@ -438,6 +407,18 @@ T}@T{
+ T}@T{
+ T}@T{
+ Config
++T}@T{
++1.0
++T}
++T{
++Dotnet local tool manifest file
++T}@T{
++\f[C]tool-manifest\f[R]
++T}@T{
++T}@T{
++Config
++T}@T{
++3.0
+ T}
+ T{
+ Web Config
+@@ -446,6 +427,8 @@ T}@T{
+ T}@T{
+ T}@T{
+ Config
++T}@T{
++1.0
+ T}
+ T{
+ Solution File
+@@ -454,1116 +437,148 @@ T}@T{
+ T}@T{
+ T}@T{
+ Solution
+-T}
+-.TE
+-.SS .NET Core 2.0
+-.PP
+-The command contains a default list of templates.
+-Use \f[C]dotnet new -l\f[R] to obtain a list of the available templates.
+-The following table shows the templates that come pre-installed with the .NET Core SDK 2.0.0.
+-The default language for the template is shown inside the brackets.
+-.PP
+-.TS
+-tab(@);
+-l l l l.
+-T{
+-Templates
+-T}@T{
+-Short Name
+ T}@T{
+-Language
+-T}@T{
+-Tags
++1.0
+ T}
+-_
+ T{
+-Console Application
++Protocol Buffer File
+ T}@T{
+-\f[C]console\f[R]
++\f[C]proto\f[R]
+ T}@T{
+-[C#], F#, VB
+ T}@T{
+-Common/Console
+-T}
+-T{
+-Class library
+-T}@T{
+-\f[C]classlib\f[R]
+-T}@T{
+-[C#], F#, VB
+-T}@T{
+-Common/Library
+-T}
+-T{
+-Unit Test Project
+-T}@T{
+-\f[C]mstest\f[R]
+-T}@T{
+-[C#], F#, VB
+-T}@T{
+-Test/MSTest
+-T}
+-T{
+-xUnit Test Project
+-T}@T{
+-\f[C]xunit\f[R]
+-T}@T{
+-[C#], F#, VB
+-T}@T{
+-Test/xUnit
+-T}
+-T{
+-ASP.NET Core Empty
+-T}@T{
+-\f[C]web\f[R]
+-T}@T{
+-[C#], F#
+-T}@T{
+-Web/Empty
+-T}
+-T{
+-ASP.NET Core Web App (Model-View-Controller)
+-T}@T{
+-\f[C]mvc\f[R]
+-T}@T{
+-[C#], F#
+-T}@T{
+-Web/MVC
+-T}
+-T{
+-ASP.NET Core Web App
+-T}@T{
+-\f[C]razor\f[R]
+-T}@T{
+-[C#]
+-T}@T{
+-Web/MVC/Razor Pages
+-T}
+-T{
+-ASP.NET Core with Angular
+-T}@T{
+-\f[C]angular\f[R]
+-T}@T{
+-[C#]
+-T}@T{
+-Web/MVC/SPA
+-T}
+-T{
+-ASP.NET Core with React.js
+-T}@T{
+-\f[C]react\f[R]
+-T}@T{
+-[C#]
+-T}@T{
+-Web/MVC/SPA
+-T}
+-T{
+-ASP.NET Core with React.js and Redux
+-T}@T{
+-\f[C]reactredux\f[R]
+-T}@T{
+-[C#]
+-T}@T{
+-Web/MVC/SPA
+-T}
+-T{
+-ASP.NET Core Web API
+-T}@T{
+-\f[C]webapi\f[R]
+-T}@T{
+-[C#], F#
+-T}@T{
+-Web/WebAPI
+-T}
+-T{
+-global.json file
+-T}@T{
+-\f[C]globaljson\f[R]
+-T}@T{
+-T}@T{
+-Config
+-T}
+-T{
+-Nuget Config
+-T}@T{
+-\f[C]nugetconfig\f[R]
+-T}@T{
+-T}@T{
+-Config
+-T}
+-T{
+-Web Config
+-T}@T{
+-\f[C]webconfig\f[R]
+-T}@T{
+-T}@T{
+-Config
+-T}
+-T{
+-Solution File
+-T}@T{
+-\f[C]sln\f[R]
+-T}@T{
+-T}@T{
+-Solution
+-T}
+-T{
+-Razor Page
+-T}@T{
+-\f[C]page\f[R]
+-T}@T{
+-T}@T{
+-Web/ASP.NET
+-T}
+-T{
+-MVC ViewImports
+-T}@T{
+-\f[C]viewimports\f[R]
+-T}@T{
+-T}@T{
+-Web/ASP.NET
+-T}
+-T{
+-MVC ViewStart
+-T}@T{
+-\f[C]viewstart\f[R]
+-T}@T{
+-T}@T{
+-Web/ASP.NET
+-T}
+-.TE
+-.SS .NET Core 1.x
+-.PP
+-The command contains a default list of templates.
+-Use \f[C]dotnet new -all\f[R] to obtain a list of the available templates.
+-The following table shows the templates that come pre-installed with the .NET Core SDK 1.0.1.
+-The default language for the template is shown inside the brackets.
+-.PP
+-.TS
+-tab(@);
+-l l l l.
+-T{
+-Templates
+-T}@T{
+-Short Name
+-T}@T{
+-Language
+-T}@T{
+-Tags
+-T}
+-_
+-T{
+-Console Application
+-T}@T{
+-\f[C]console\f[R]
+-T}@T{
+-[C#], F#
+-T}@T{
+-Common/Console
+-T}
+-T{
+-Class library
+-T}@T{
+-\f[C]classlib\f[R]
+-T}@T{
+-[C#], F#
+-T}@T{
+-Common/Library
+-T}
+-T{
+-Unit Test Project
+-T}@T{
+-\f[C]mstest\f[R]
+-T}@T{
+-[C#], F#
+-T}@T{
+-Test/MSTest
+-T}
+-T{
+-xUnit Test Project
+-T}@T{
+-\f[C]xunit\f[R]
+-T}@T{
+-[C#], F#
+-T}@T{
+-Test/xUnit
+-T}
+-T{
+-ASP.NET Core Empty
+-T}@T{
+-\f[C]web\f[R]
+-T}@T{
+-[C#]
+-T}@T{
+-Web/Empty
+-T}
+-T{
+-ASP.NET Core Web App
+-T}@T{
+-\f[C]mvc\f[R]
+-T}@T{
+-[C#], F#
+-T}@T{
+-Web/MVC
+-T}
+-T{
+-ASP.NET Core Web API
+-T}@T{
+-\f[C]webapi\f[R]
+-T}@T{
+-[C#]
+-T}@T{
+-Web/WebAPI
+-T}
+-T{
+-Nuget Config
+-T}@T{
+-\f[C]nugetconfig\f[R]
+-T}@T{
+-T}@T{
+-Config
+-T}
+-T{
+-Web Config
+-T}@T{
+-\f[C]webconfig\f[R]
+-T}@T{
+-T}@T{
+-Config
+-T}
+-T{
+-Solution File
+-T}@T{
+-\f[C]sln\f[R]
+-T}@T{
+-T}@T{
+-Solution
+-T}
+-.TE
+-.PP
+- * * * * *
+-.SH OPTIONS
+-.SS .NET Core 2.2
+-.PP
+-\f[C]--dry-run\f[R]
+-.PP
+-Displays a summary of what would happen if the given command were run if it would result in a template creation.
+-.PP
+-\f[C]--force\f[R]
+-.PP
+-Forces content to be generated even if it would change existing files.
+-This is required when the output directory already contains a project.
+-.PP
+-\f[C]-h|--help\f[R]
+-.PP
+-Prints out help for the command.
+-It can be invoked for the \f[C]dotnet new\f[R] command itself or for any template, such as \f[C]dotnet new mvc --help\f[R].
+-.PP
+-\f[C]-i|--install <PATH|NUGET_ID>\f[R]
+-.PP
+-Installs a source or template pack from the \f[C]PATH\f[R] or \f[C]NUGET_ID\f[R] provided.
+-If you want to install a prerelease version of a template package, you need to specify the version in the format of \f[C]<package-name>::<package-version>\f[R].
+-By default, \f[C]dotnet new\f[R] passes * for the version, which represents the last stable package version.
+-See an example at the Examples section.
+-.PP
+-For information on creating custom templates, see Custom templates for dotnet new.
+-.PP
+-\f[C]-l|--list\f[R]
+-.PP
+-Lists templates containing the specified name.
+-If invoked for the \f[C]dotnet new\f[R] command, it lists the possible templates available for the given directory.
+-For example if the directory already contains a project, it doesn\[cq]t list all project templates.
+-.PP
+-\f[C]-lang|--language {C#|F#|VB}\f[R]
+-.PP
+-The language of the template to create.
+-The language accepted varies by the template (see defaults in the arguments section).
+-Not valid for some templates.
+-.RS
+-.PP
+-[!NOTE] Some shells interpret \f[C]#\f[R] as a special character.
+-In those cases, you need to enclose the language parameter value, such as \f[C]dotnet new console -lang \[dq]F#\[dq]\f[R].
+-.RE
+-.PP
+-\f[C]-n|--name <OUTPUT_NAME>\f[R]
+-.PP
+-The name for the created output.
+-If no name is specified, the name of the current directory is used.
+-.PP
+-\f[C]--nuget-source\f[R]
+-.PP
+-Specifies a NuGet source to use during install.
+-.PP
+-\f[C]-o|--output <OUTPUT_DIRECTORY>\f[R]
+-.PP
+-Location to place the generated output.
+-The default is the current directory.
+-.PP
+-\f[C]--type\f[R]
+-.PP
+-Filters templates based on available types.
+-Predefined values are \[lq]project\[rq], \[lq]item\[rq], or \[lq]other\[rq].
+-.PP
+-\f[C]-u|--uninstall <PATH|NUGET_ID>\f[R]
+-.PP
+-Uninstalls a source or template pack at the \f[C]PATH\f[R] or \f[C]NUGET_ID\f[R] provided.
+-When excluding the \f[C]<PATH|NUGET_ID>\f[R] value, all currently installed template packs and their associated templates are displayed.
+-.RS
+-.PP
+-[!NOTE] To uninstall a template using a \f[C]PATH\f[R], you need to fully qualify the path.
+-For example, \f[I]C:/Users/<USER>/Documents/Templates/GarciaSoftware.ConsoleTemplate.CSharp\f[R] will work, but \f[I]./GarciaSoftware.ConsoleTemplate.CSharp\f[R] from the containing folder will not.
+-Additionally, do not include a final terminating directory slash on your template path.
+-.RE
+-.SS .NET Core 2.1
+-.PP
+-\f[C]--force\f[R]
+-.PP
+-Forces content to be generated even if it would change existing files.
+-This is required when the output directory already contains a project.
+-.PP
+-\f[C]-h|--help\f[R]
+-.PP
+-Prints out help for the command.
+-It can be invoked for the \f[C]dotnet new\f[R] command itself or for any template, such as \f[C]dotnet new mvc --help\f[R].
+-.PP
+-\f[C]-i|--install <PATH|NUGET_ID>\f[R]
+-.PP
+-Installs a source or template pack from the \f[C]PATH\f[R] or \f[C]NUGET_ID\f[R] provided.
+-If you want to install a prerelease version of a template package, you need to specify the version in the format of \f[C]<package-name>::<package-version>\f[R].
+-By default, \f[C]dotnet new\f[R] passes * for the version, which represents the last stable package version.
+-See an example at the Examples section.
+-.PP
+-For information on creating custom templates, see Custom templates for dotnet new.
+-.PP
+-\f[C]-l|--list\f[R]
+-.PP
+-Lists templates containing the specified name.
+-If invoked for the \f[C]dotnet new\f[R] command, it lists the possible templates available for the given directory.
+-For example if the directory already contains a project, it doesn\[cq]t list all project templates.
+-.PP
+-\f[C]-lang|--language {C#|F#|VB}\f[R]
+-.PP
+-The language of the template to create.
+-The language accepted varies by the template (see defaults in the arguments section).
+-Not valid for some templates.
+-.RS
+-.PP
+-[!NOTE] Some shells interpret \f[C]#\f[R] as a special character.
+-In those cases, you need to enclose the language parameter value, such as \f[C]dotnet new console -lang \[dq]F#\[dq]\f[R].
+-.RE
+-.PP
+-\f[C]-n|--name <OUTPUT_NAME>\f[R]
+-.PP
+-The name for the created output.
+-If no name is specified, the name of the current directory is used.
+-.PP
+-\f[C]--nuget-source\f[R]
+-.PP
+-Specifies a NuGet source to use during install.
+-.PP
+-\f[C]-o|--output <OUTPUT_DIRECTORY>\f[R]
+-.PP
+-Location to place the generated output.
+-The default is the current directory.
+-.PP
+-\f[C]--type\f[R]
+-.PP
+-Filters templates based on available types.
+-Predefined values are \[lq]project\[rq], \[lq]item\[rq] or \[lq]other\[rq].
+-.PP
+-\f[C]-u|--uninstall <PATH|NUGET_ID>\f[R]
+-.PP
+-Uninstalls a source or template pack at the \f[C]PATH\f[R] or \f[C]NUGET_ID\f[R] provided.
+-.RS
+-.PP
+-[!NOTE] To uninstall a template using a \f[C]PATH\f[R], you need to fully qualify the path.
+-For example, \f[I]C:/Users/<USER>/Documents/Templates/GarciaSoftware.ConsoleTemplate.CSharp\f[R] will work, but \f[I]./GarciaSoftware.ConsoleTemplate.CSharp\f[R] from the containing folder will not.
+-Additionally, do not include a final terminating directory slash on your template path.
+-.RE
+-.SS .NET Core 2.0
+-.PP
+-\f[C]--force\f[R]
+-.PP
+-Forces content to be generated even if it would change existing files.
+-This is required when the output directory already contains a project.
+-.PP
+-\f[C]-h|--help\f[R]
+-.PP
+-Prints out help for the command.
+-It can be invoked for the \f[C]dotnet new\f[R] command itself or for any template, such as \f[C]dotnet new mvc --help\f[R].
+-.PP
+-\f[C]-i|--install <PATH|NUGET_ID>\f[R]
+-.PP
+-Installs a source or template pack from the \f[C]PATH\f[R] or \f[C]NUGET_ID\f[R] provided.
+-If you want to install a prerelease version of a template package, you need to specify the version in the format of \f[C]<package-name>::<package-version>\f[R].
+-By default, \f[C]dotnet new\f[R] passes * for the version, which represents the last stable package version.
+-See an example at the Examples section.
+-.PP
+-For information on creating custom templates, see Custom templates for dotnet new.
+-.PP
+-\f[C]-l|--list\f[R]
+-.PP
+-Lists templates containing the specified name.
+-If invoked for the \f[C]dotnet new\f[R] command, it lists the possible templates available for the given directory.
+-For example if the directory already contains a project, it doesn\[cq]t list all project templates.
+-.PP
+-\f[C]-lang|--language {C#|F#|VB}\f[R]
+-.PP
+-The language of the template to create.
+-The language accepted varies by the template (see defaults in the arguments section).
+-Not valid for some templates.
+-.RS
+-.PP
+-[!NOTE] Some shells interpret \f[C]#\f[R] as a special character.
+-In those cases, you need to enclose the language parameter value, such as \f[C]dotnet new console -lang \[dq]F#\[dq]\f[R].
+-.RE
+-.PP
+-\f[C]-n|--name <OUTPUT_NAME>\f[R]
+-.PP
+-The name for the created output.
+-If no name is specified, the name of the current directory is used.
+-.PP
+-\f[C]-o|--output <OUTPUT_DIRECTORY>\f[R]
+-.PP
+-Location to place the generated output.
+-The default is the current directory.
+-.PP
+-\f[C]--type\f[R]
+-.PP
+-Filters templates based on available types.
+-Predefined values are \[lq]project\[rq], \[lq]item\[rq] or \[lq]other\[rq].
+-.PP
+-\f[C]-u|--uninstall <PATH|NUGET_ID>\f[R]
+-.PP
+-Uninstalls a source or template pack at the \f[C]PATH\f[R] or \f[C]NUGET_ID\f[R] provided.
+-.RS
+-.PP
+-[!NOTE] To uninstall a template using a source \f[C]PATH\f[R], you need to fully qualify the path.
+-For example, \f[I]C:/Users/<USER>/Documents/Templates/GarciaSoftware.ConsoleTemplate.CSharp\f[R] will work, but \f[I]./GarciaSoftware.ConsoleTemplate.CSharp\f[R] from the containing folder will not.
+-Additionally, do not include a final terminating directory slash on your template path.
+-.PP
+-If you are unable to determine the \f[C]PATH\f[R] or \f[C]NUGET_ID\f[R] argument needed to uninstall a template, running \f[C]dotnet new --uninstall\f[R] without an argument will list all installed templates and the argument required to uninstall them.
+-.RE
+-.SS .NET Core 1.x
+-.PP
+-\f[C]-all|--show-all\f[R]
+-.PP
+-Shows all templates for a specific type of project when running in the context of the \f[C]dotnet new\f[R] command alone.
+-When running in the context of a specific template, such as \f[C]dotnet new web -all\f[R], \f[C]-all\f[R] is interpreted as a force creation flag.
+-This is required when the output directory already contains a project.
+-.PP
+-\f[C]-h|--help\f[R]
+-.PP
+-Prints out help for the command.
+-It can be invoked for the \f[C]dotnet new\f[R] command itself or for any template, such as \f[C]dotnet new mvc --help\f[R].
+-.PP
+-\f[C]-l|--list\f[R]
+-.PP
+-Lists templates containing the specified name.
+-If invoked for the \f[C]dotnet new\f[R] command, it lists the possible templates available for the given directory.
+-For example if the directory already contains a project, it doesn\[cq]t list all project templates.
+-.PP
+-\f[C]-lang|--language {C#|F#}\f[R]
+-.PP
+-The language of the template to create.
+-The language accepted varies by the template (see defaults in the arguments section).
+-Not valid for some templates.
+-.RS
+-.PP
+-[!NOTE] Some shells interpret \f[C]#\f[R] as a special character.
+-In those cases, you need to enclose the language parameter value, such as \f[C]dotnet new console -lang \[dq]F#\[dq]\f[R].
+-.RE
+-.PP
+-\f[C]-n|--name <OUTPUT_NAME>\f[R]
+-.PP
+-The name for the created output.
+-If no name is specified, the name of the current directory is used.
+-.PP
+-\f[C]-o|--output <OUTPUT_DIRECTORY>\f[R]
+-.PP
+-Location to place the generated output.
+-The default is the current directory.
+-.PP
+- * * * * *
+-.SS Template options
+-.PP
+-Each project template may have additional options available.
+-The core templates have the following additional options:
+-.SS .NET Core 2.2
+-.PP
+-\f[B]console\f[R]
+-.PP
+-\f[C]--langVersion <VERSION_NUMBER>\f[R] - Sets the \f[C]LangVersion\f[R] property in the created project file.
+-For example, use \f[C]--langVersion 7.3\f[R] to use C# 7.3.
+-Not supported for F#.
+-.PP
+-\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
+-.PP
+-\f[B]angular, react, reactredux\f[R]
+-.PP
+-\f[C]--exclude-launch-settings\f[R] - Exclude \f[I]launchSettings.json\f[R] from the generated template.
+-.PP
+-\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
+-.PP
+-\f[C]--no-https\f[R] - Project doesn\[cq]t require HTTPS.
+-This option only applies if \f[C]IndividualAuth\f[R] or \f[C]OrganizationalAuth\f[R] are not being used.
+-.PP
+-\f[B]razorclasslib\f[R]
+-.PP
+-\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
+-.PP
+-\f[B]classlib\f[R]
+-.PP
+-\f[C]-f|--framework <FRAMEWORK>\f[R] - Specifies the framework to target.
+-Values: \f[C]netcoreapp2.2\f[R] to create a .NET Core Class Library or \f[C]netstandard2.0\f[R] to create a .NET Standard Class Library.
+-The default value is \f[C]netstandard2.0\f[R].
+-.PP
+-\f[C]--langVersion <VERSION_NUMBER>\f[R] - Sets the \f[C]LangVersion\f[R] property in the created project file.
+-For example, use \f[C]--langVersion 7.3\f[R] to use C# 7.3.
+-Not supported for F#.
+-.PP
+-\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
+-.PP
+-\f[B]mstest, xunit\f[R]
+-.PP
+-\f[C]-p|--enable-pack\f[R] - Enables packaging for the project using dotnet pack.
+-.PP
+-\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
+-.PP
+-\f[B]nunit\f[R]
+-.PP
+-\f[C]-f|--framework <FRAMEWORK>\f[R] - Specifies the framework to target.
+-The default value is \f[C]netcoreapp2.1\f[R].
+-.PP
+-\f[C]-p|--enable-pack\f[R] - Enables packaging for the project using dotnet pack.
+-.PP
+-\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
+-.PP
+-\f[B]page\f[R]
+-.PP
+-\f[C]-na|--namespace <NAMESPACE_NAME>\f[R] - Namespace for the generated code.
+-The default value is \f[C]MyApp.Namespace\f[R].
+-.PP
+-\f[C]-np|--no-pagemodel\f[R] - Creates the page without a PageModel.
+-.PP
+-\f[B]viewimports\f[R]
+-.PP
+-\f[C]-na|--namespace <NAMESPACE_NAME>\f[R] - Namespace for the generated code.
+-The default value is \f[C]MyApp.Namespace\f[R].
+-.PP
+-\f[B]web\f[R]
+-.PP
+-\f[C]--exclude-launch-settings\f[R] - Exclude \f[I]launchSettings.json\f[R] from the generated template.
+-.PP
+-\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
+-.PP
+-\f[C]--no-https\f[R] - Project doesn\[cq]t require HTTPS.
+-This option only applies if \f[C]IndividualAuth\f[R] or \f[C]OrganizationalAuth\f[R] are not being used.
+-.PP
+-\f[B]mvc, webapp\f[R]
+-.PP
+-\f[C]-au|--auth <AUTHENTICATION_TYPE>\f[R] - The type of authentication to use.
+-The possible values are:
+-.IP \[bu] 2
+-\f[C]None\f[R] - No authentication (Default).
+-.IP \[bu] 2
+-\f[C]Individual\f[R] - Individual authentication.
+-.IP \[bu] 2
+-\f[C]IndividualB2C\f[R] - Individual authentication with Azure AD B2C.
+-.IP \[bu] 2
+-\f[C]SingleOrg\f[R] - Organizational authentication for a single tenant.
+-.IP \[bu] 2
+-\f[C]MultiOrg\f[R] - Organizational authentication for multiple tenants.
++Web/gRPC
++T}@T{
++3.0
++T}
++.TE
++.SH OPTIONS
+ .IP \[bu] 2
+-\f[C]Windows\f[R] - Windows authentication.
+-.PP
+-\f[C]--aad-b2c-instance <INSTANCE>\f[R] - The Azure Active Directory B2C instance to connect to.
+-Use with \f[C]IndividualB2C\f[R] authentication.
+-The default value is \f[C]https://login.microsoftonline.com/tfp/\f[R].
++\f[B]\f[CB]--dry-run\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]-ssp|--susi-policy-id <ID>\f[R] - The sign-in and sign-up policy ID for this project.
+-Use with \f[C]IndividualB2C\f[R] authentication.
+-.PP
+-\f[C]-rp|--reset-password-policy-id <ID>\f[R] - The reset password policy ID for this project.
+-Use with \f[C]IndividualB2C\f[R] authentication.
+-.PP
+-\f[C]-ep|--edit-profile-policy-id <ID>\f[R] - The edit profile policy ID for this project.
+-Use with \f[C]IndividualB2C\f[R] authentication.
+-.PP
+-\f[C]--aad-instance <INSTANCE>\f[R] - The Azure Active Directory instance to connect to.
+-Use with \f[C]SingleOrg\f[R] or \f[C]MultiOrg\f[R] authentication.
+-The default value is \f[C]https://login.microsoftonline.com/\f[R].
+-.PP
+-\f[C]--client-id <ID>\f[R] - The Client ID for this project.
+-Use with \f[C]IndividualB2C\f[R], \f[C]SingleOrg\f[R], or \f[C]MultiOrg\f[R] authentication.
+-The default value is \f[C]11111111-1111-1111-11111111111111111\f[R].
+-.PP
+-\f[C]--domain <DOMAIN>\f[R] - The domain for the directory tenant.
+-Use with \f[C]SingleOrg\f[R] or \f[C]IndividualB2C\f[R] authentication.
+-The default value is \f[C]qualified.domain.name\f[R].
+-.PP
+-\f[C]--tenant-id <ID>\f[R] - The TenantId ID of the directory to connect to.
+-Use with \f[C]SingleOrg\f[R] authentication.
+-The default value is \f[C]22222222-2222-2222-2222-222222222222\f[R].
+-.PP
+-\f[C]--callback-path <PATH>\f[R] - The request path within the application\[cq]s base path of the redirect URI.
+-Use with \f[C]SingleOrg\f[R] or \f[C]IndividualB2C\f[R] authentication.
+-The default value is \f[C]/signin-oidc\f[R].
+-.PP
+-\f[C]-r|--org-read-access\f[R] - Allows this application read-access to the directory.
+-Only applies to \f[C]SingleOrg\f[R] or \f[C]MultiOrg\f[R] authentication.
+-.PP
+-\f[C]--exclude-launch-settings\f[R] - Exclude \f[I]launchSettings.json\f[R] from the generated template.
+-.PP
+-\f[C]--no-https\f[R] - Project doesn\[cq]t require HTTPS.
+-\f[C]app.UseHsts\f[R] and \f[C]app.UseHttpsRedirection\f[R] aren\[cq]t added to \f[C]Startup.Configure\f[R].
+-This option only applies if \f[C]Individual\f[R], \f[C]IndividualB2C\f[R], \f[C]SingleOrg\f[R], or \f[C]MultiOrg\f[R] aren\[cq]t being used.
+-.PP
+-\f[C]-uld|--use-local-db\f[R] - Specifies LocalDB should be used instead of SQLite.
+-Only applies to \f[C]Individual\f[R] or \f[C]IndividualB2C\f[R] authentication.
+-.PP
+-\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
+-.PP
+-\f[B]webapi\f[R]
+-.PP
+-\f[C]-au|--auth <AUTHENTICATION_TYPE>\f[R] - The type of authentication to use.
+-The possible values are:
+-.IP \[bu] 2
+-\f[C]None\f[R] - No authentication (Default).
+-.IP \[bu] 2
+-\f[C]IndividualB2C\f[R] - Individual authentication with Azure AD B2C.
+-.IP \[bu] 2
+-\f[C]SingleOrg\f[R] - Organizational authentication for a single tenant.
++Displays a summary of what would happen if the given command were run if it would result in a template creation.
++Available since .NET Core 2.2 SDK.
++.RE
+ .IP \[bu] 2
+-\f[C]Windows\f[R] - Windows authentication.
+-.PP
+-\f[C]--aad-b2c-instance <INSTANCE>\f[R] - The Azure Active Directory B2C instance to connect to.
+-Use with \f[C]IndividualB2C\f[R] authentication.
+-The default value is \f[C]https://login.microsoftonline.com/tfp/\f[R].
+-.PP
+-\f[C]-ssp|--susi-policy-id <ID>\f[R] - The sign-in and sign-up policy ID for this project.
+-Use with \f[C]IndividualB2C\f[R] authentication.
+-.PP
+-\f[C]--aad-instance <INSTANCE>\f[R] - The Azure Active Directory instance to connect to.
+-Use with \f[C]SingleOrg\f[R] authentication.
+-The default value is \f[C]https://login.microsoftonline.com/\f[R].
+-.PP
+-\f[C]--client-id <ID>\f[R] - The Client ID for this project.
+-Use with \f[C]IndividualB2C\f[R] or \f[C]SingleOrg\f[R] authentication.
+-The default value is \f[C]11111111-1111-1111-11111111111111111\f[R].
+-.PP
+-\f[C]--domain <DOMAIN>\f[R] - The domain for the directory tenant.
+-Use with \f[C]SingleOrg\f[R] or \f[C]IndividualB2C\f[R] authentication.
+-The default value is \f[C]qualified.domain.name\f[R].
+-.PP
+-\f[C]--tenant-id <ID>\f[R] - The TenantId ID of the directory to connect to.
+-Use with \f[C]SingleOrg\f[R] authentication.
+-The default value is \f[C]22222222-2222-2222-2222-222222222222\f[R].
+-.PP
+-\f[C]-r|--org-read-access\f[R] - Allows this application read-access to the directory.
+-Only applies to \f[C]SingleOrg\f[R] or \f[C]MultiOrg\f[R] authentication.
+-.PP
+-\f[C]--exclude-launch-settings\f[R] - Exclude \f[I]launchSettings.json\f[R] from the generated template.
+-.PP
+-\f[C]--no-https\f[R] - Project doesn\[cq]t require HTTPS.
+-\f[C]app.UseHsts\f[R] and \f[C]app.UseHttpsRedirection\f[R] aren\[cq]t added to \f[C]Startup.Configure\f[R].
+-This option only applies if \f[C]Individual\f[R], \f[C]IndividualB2C\f[R], \f[C]SingleOrg\f[R], or \f[C]MultiOrg\f[R] aren\[cq]t being used.
+-.PP
+-\f[C]-uld|--use-local-db\f[R] - Specifies LocalDB should be used instead of SQLite.
+-Only applies to \f[C]Individual\f[R] or \f[C]IndividualB2C\f[R] authentication.
+-.PP
+-\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
+-.PP
+-\f[B]globaljson\f[R]
+-.PP
+-\f[C]--sdk-version <VERSION_NUMBER>\f[R] - Specifies the version of the .NET Core SDK to use in the \f[I]global.json\f[R] file.
+-.SS .NET Core 2.1
++\f[B]\f[CB]--force\f[B]\f[R]
++.RS 2
+ .PP
+-\f[B]console, angular, react, reactredux, razorclasslib\f[R]
+-.PP
+-\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
+-.PP
+-\f[B]classlib\f[R]
+-.PP
+-\f[C]-f|--framework <FRAMEWORK>\f[R] - Specifies the framework to target.
+-Values: \f[C]netcoreapp2.1\f[R] to create a .NET Core Class Library or \f[C]netstandard2.0\f[R] to create a .NET Standard Class Library.
+-The default value is \f[C]netstandard2.0\f[R].
+-.PP
+-\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
+-.PP
+-\f[B]mstest, xunit\f[R]
+-.PP
+-\f[C]-p|--enable-pack\f[R] - Enables packaging for the project using dotnet pack.
+-.PP
+-\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
+-.PP
+-\f[B]globaljson\f[R]
+-.PP
+-\f[C]--sdk-version <VERSION_NUMBER>\f[R] - Specifies the version of the .NET Core SDK to use in the \f[I]global.json\f[R] file.
+-.PP
+-\f[B]web\f[R]
+-.PP
+-\f[C]--exclude-launch-settings\f[R] - Exclude \f[I]launchSettings.json\f[R] from the generated template.
+-.PP
+-\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
+-.PP
+-\f[C]--no-https\f[R] - Project doesn\[cq]t require HTTPS.
+-This option only applies if \f[C]IndividualAuth\f[R] or \f[C]OrganizationalAuth\f[R] are not being used.
+-.PP
+-\f[B]webapi\f[R]
+-.PP
+-\f[C]-au|--auth <AUTHENTICATION_TYPE>\f[R] - The type of authentication to use.
+-The possible values are:
+-.IP \[bu] 2
+-\f[C]None\f[R] - No authentication (Default).
+-.IP \[bu] 2
+-\f[C]IndividualB2C\f[R] - Individual authentication with Azure AD B2C.
+-.IP \[bu] 2
+-\f[C]SingleOrg\f[R] - Organizational authentication for a single tenant.
++Forces content to be generated even if it would change existing files.
++This is required when the template chosen would override existing files in the output directory.
++.RE
+ .IP \[bu] 2
+-\f[C]Windows\f[R] - Windows authentication.
+-.PP
+-\f[C]--aad-b2c-instance <INSTANCE>\f[R] - The Azure Active Directory B2C instance to connect to.
+-Use with \f[C]IndividualB2C\f[R] authentication.
+-The default value is \f[C]https://login.microsoftonline.com/tfp/\f[R].
+-.PP
+-\f[C]-ssp|--susi-policy-id <ID>\f[R] - The sign-in and sign-up policy ID for this project.
+-Use with \f[C]IndividualB2C\f[R] authentication.
+-.PP
+-\f[C]--aad-instance <INSTANCE>\f[R] - The Azure Active Directory instance to connect to.
+-Use with \f[C]SingleOrg\f[R] authentication.
+-The default value is \f[C]https://login.microsoftonline.com/\f[R].
+-.PP
+-\f[C]--client-id <ID>\f[R] - The Client ID for this project.
+-Use with \f[C]IndividualB2C\f[R] or \f[C]SingleOrg\f[R] authentication.
+-The default value is \f[C]11111111-1111-1111-11111111111111111\f[R].
+-.PP
+-\f[C]--domain <DOMAIN>\f[R] - The domain for the directory tenant.
+-Use with \f[C]SingleOrg\f[R] or \f[C]IndividualB2C\f[R] authentication.
+-The default value is \f[C]qualified.domain.name\f[R].
+-.PP
+-\f[C]--tenant-id <ID>\f[R] - The TenantId ID of the directory to connect to.
+-Use with \f[C]SingleOrg\f[R] authentication.
+-The default value is \f[C]22222222-2222-2222-2222-222222222222\f[R].
+-.PP
+-\f[C]-r|--org-read-access\f[R] - Allows this application read-access to the directory.
+-Only applies to \f[C]SingleOrg\f[R] or \f[C]MultiOrg\f[R] authentication.
+-.PP
+-\f[C]--exclude-launch-settings\f[R] - Exclude \f[I]launchSettings.json\f[R] from the generated template.
+-.PP
+-\f[C]-uld|--use-local-db\f[R] - Specifies LocalDB should be used instead of SQLite.
+-Only applies to \f[C]Individual\f[R] or \f[C]IndividualB2C\f[R] authentication.
+-.PP
+-\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
+-.PP
+-\f[C]--no-https\f[R] - Project doesn\[cq]t require HTTPS.
+-\f[C]app.UseHsts\f[R] and \f[C]app.UseHttpsRedirection\f[R] aren\[cq]t added to \f[C]Startup.Configure\f[R].
+-This option only applies if \f[C]Individual\f[R], \f[C]IndividualB2C\f[R], \f[C]SingleOrg\f[R], or \f[C]MultiOrg\f[R] aren\[cq]t being used.
+-.PP
+-\f[B]mvc, razor\f[R]
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]-au|--auth <AUTHENTICATION_TYPE>\f[R] - The type of authentication to use.
+-The possible values are:
+-.IP \[bu] 2
+-\f[C]None\f[R] - No authentication (Default).
+-.IP \[bu] 2
+-\f[C]Individual\f[R] - Individual authentication.
+-.IP \[bu] 2
+-\f[C]IndividualB2C\f[R] - Individual authentication with Azure AD B2C.
+-.IP \[bu] 2
+-\f[C]SingleOrg\f[R] - Organizational authentication for a single tenant.
+-.IP \[bu] 2
+-\f[C]MultiOrg\f[R] - Organizational authentication for multiple tenants.
++Prints out help for the command.
++It can be invoked for the \f[C]dotnet new\f[R] command itself or for any template.
++For example, \f[C]dotnet new mvc --help\f[R].
++.RE
+ .IP \[bu] 2
+-\f[C]Windows\f[R] - Windows authentication.
+-.PP
+-\f[C]--aad-b2c-instance <INSTANCE>\f[R] - The Azure Active Directory B2C instance to connect to.
+-Use with \f[C]IndividualB2C\f[R] authentication.
+-The default value is \f[C]https://login.microsoftonline.com/tfp/\f[R].
+-.PP
+-\f[C]-ssp|--susi-policy-id <ID>\f[R] - The sign-in and sign-up policy ID for this project.
+-Use with \f[C]IndividualB2C\f[R] authentication.
+-.PP
+-\f[C]-rp|--reset-password-policy-id <ID>\f[R] - The reset password policy ID for this project.
+-Use with \f[C]IndividualB2C\f[R] authentication.
+-.PP
+-\f[C]-ep|--edit-profile-policy-id <ID>\f[R] - The edit profile policy ID for this project.
+-Use with \f[C]IndividualB2C\f[R] authentication.
+-.PP
+-\f[C]--aad-instance <INSTANCE>\f[R] - The Azure Active Directory instance to connect to.
+-Use with \f[C]SingleOrg\f[R] or \f[C]MultiOrg\f[R] authentication.
+-The default value is \f[C]https://login.microsoftonline.com/\f[R].
+-.PP
+-\f[C]--client-id <ID>\f[R] - The Client ID for this project.
+-Use with \f[C]IndividualB2C\f[R], \f[C]SingleOrg\f[R], or \f[C]MultiOrg\f[R] authentication.
+-The default value is \f[C]11111111-1111-1111-11111111111111111\f[R].
+-.PP
+-\f[C]--domain <DOMAIN>\f[R] - The domain for the directory tenant.
+-Use with \f[C]SingleOrg\f[R] or \f[C]IndividualB2C\f[R] authentication.
+-The default value is \f[C]qualified.domain.name\f[R].
+-.PP
+-\f[C]--tenant-id <ID>\f[R] - The TenantId ID of the directory to connect to.
+-Use with \f[C]SingleOrg\f[R] authentication.
+-The default value is \f[C]22222222-2222-2222-2222-222222222222\f[R].
+-.PP
+-\f[C]--callback-path <PATH>\f[R] - The request path within the application\[cq]s base path of the redirect URI.
+-Use with \f[C]SingleOrg\f[R] or \f[C]IndividualB2C\f[R] authentication.
+-The default value is \f[C]/signin-oidc\f[R].
+-.PP
+-\f[C]-r|--org-read-access\f[R] - Allows this application read-access to the directory.
+-Only applies to \f[C]SingleOrg\f[R] or \f[C]MultiOrg\f[R] authentication.
+-.PP
+-\f[C]--exclude-launch-settings\f[R] - Exclude \f[I]launchSettings.json\f[R] from the generated template.
+-.PP
+-\f[C]--use-browserlink\f[R] - Includes BrowserLink in the project.
+-.PP
+-\f[C]-uld|--use-local-db\f[R] - Specifies LocalDB should be used instead of SQLite.
+-Only applies to \f[C]Individual\f[R] or \f[C]IndividualB2C\f[R] authentication.
+-.PP
+-\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
+-.PP
+-\f[C]--no-https\f[R] - Project doesn\[cq]t require HTTPS.
+-\f[C]app.UseHsts\f[R] and \f[C]app.UseHttpsRedirection\f[R] aren\[cq]t added to \f[C]Startup.Configure\f[R].
+-This option only applies if \f[C]Individual\f[R], \f[C]IndividualB2C\f[R], \f[C]SingleOrg\f[R], or \f[C]MultiOrg\f[R] aren\[cq]t being used.
+-.PP
+-\f[B]page\f[R]
+-.PP
+-\f[C]-na|--namespace <NAMESPACE_NAME>\f[R] - Namespace for the generated code.
+-The default value is \f[C]MyApp.Namespace\f[R].
+-.PP
+-\f[C]-np|--no-pagemodel\f[R] - Creates the page without a PageModel.
+-.PP
+-\f[B]viewimports\f[R]
+-.PP
+-\f[C]-na|--namespace <NAMESPACE_NAME>\f[R] - Namespace for the generated code.
+-The default value is \f[C]MyApp.Namespace\f[R].
+-.SS .NET Core 2.0
+-.PP
+-\f[B]console, angular, react, reactredux\f[R]
+-.PP
+-\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
+-.PP
+-\f[B]classlib\f[R]
+-.PP
+-\f[C]-f|--framework <FRAMEWORK>\f[R] - Specifies the framework to target.
+-Values: \f[C]netcoreapp2.0\f[R] to create a .NET Core Class Library or \f[C]netstandard2.0\f[R] to create a .NET Standard Class Library.
+-The default value is \f[C]netstandard2.0\f[R].
+-.PP
+-\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
++\f[B]\f[CB]-lang|--language {C#|F#|VB}\f[B]\f[R]
++.RS 2
+ .PP
+-\f[B]mstest, xunit\f[R]
+-.PP
+-\f[C]-p|--enable-pack\f[R] - Enables packaging for the project using dotnet pack.
+-.PP
+-\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
+-.PP
+-\f[B]globaljson\f[R]
+-.PP
+-\f[C]--sdk-version <VERSION_NUMBER>\f[R] - Specifies the version of the .NET Core SDK to use in the \f[I]global.json\f[R] file.
+-.PP
+-\f[B]web\f[R]
++The language of the template to create.
++The language accepted varies by the template (see defaults in the arguments section).
++Not valid for some templates.
++.RS
+ .PP
+-\f[C]--use-launch-settings\f[R] - Includes \f[I]launchSettings.json\f[R] in the generated template output.
++[!NOTE] Some shells interpret \f[C]#\f[R] as a special character.
++In those cases, enclose the language parameter value in quotes.
++For example, \f[C]dotnet new console -lang \[dq]F#\[dq]\f[R].
++.RE
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-n|--name <OUTPUT_NAME>\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
++The name for the created output.
++If no name is specified, the name of the current directory is used.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-o|--output <OUTPUT_DIRECTORY>\f[B]\f[R]
++.RS 2
+ .PP
+-\f[B]webapi\f[R]
++Location to place the generated output.
++The default is the current directory.
++.RE
++.SS Template options
+ .PP
+-\f[C]-au|--auth <AUTHENTICATION_TYPE>\f[R] - The type of authentication to use.
+-The possible values are:
++Each template may have additional options defined.
++For more information, see .NET default templates for \f[C]dotnet new\f[R].
++.SH EXAMPLES
+ .IP \[bu] 2
+-\f[C]None\f[R] - No authentication (Default).
++Create a C# console application project:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet new console
++\f[R]
++.fi
++.RE
+ .IP \[bu] 2
+-\f[C]IndividualB2C\f[R] - Individual authentication with Azure AD B2C.
++Create an F# console application project in the current directory:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet new console --language \[dq]F#\[dq]
++\f[R]
++.fi
++.RE
+ .IP \[bu] 2
+-\f[C]SingleOrg\f[R] - Organizational authentication for a single tenant.
++Create a .NET Standard 2.0 class library project in the specified directory:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet new classlib --framework \[dq]netstandard2.0\[dq] -o MyLibrary
++\f[R]
++.fi
++.RE
+ .IP \[bu] 2
+-\f[C]Windows\f[R] - Windows authentication.
+-.PP
+-\f[C]--aad-b2c-instance <INSTANCE>\f[R] - The Azure Active Directory B2C instance to connect to.
+-Use with \f[C]IndividualB2C\f[R] authentication.
+-The default value is \f[C]https://login.microsoftonline.com/tfp/\f[R].
+-.PP
+-\f[C]-ssp|--susi-policy-id <ID>\f[R] - The sign-in and sign-up policy ID for this project.
+-Use with \f[C]IndividualB2C\f[R] authentication.
+-.PP
+-\f[C]--aad-instance <INSTANCE>\f[R] - The Azure Active Directory instance to connect to.
+-Use with \f[C]SingleOrg\f[R] authentication.
+-The default value is \f[C]https://login.microsoftonline.com/\f[R].
+-.PP
+-\f[C]--client-id <ID>\f[R] - The Client ID for this project.
+-Use with \f[C]IndividualB2C\f[R] or \f[C]SingleOrg\f[R] authentication.
+-The default value is \f[C]11111111-1111-1111-11111111111111111\f[R].
+-.PP
+-\f[C]--domain <DOMAIN>\f[R] - The domain for the directory tenant.
+-Use with \f[C]SingleOrg\f[R] or \f[C]IndividualB2C\f[R] authentication.
+-The default value is \f[C]qualified.domain.name\f[R].
+-.PP
+-\f[C]--tenant-id <ID>\f[R] - The TenantId ID of the directory to connect to.
+-Use with \f[C]SingleOrg\f[R] authentication.
+-The default value is \f[C]22222222-2222-2222-2222-222222222222\f[R].
+-.PP
+-\f[C]-r|--org-read-access\f[R] - Allows this application read-access to the directory.
+-Only applies to \f[C]SingleOrg\f[R] or \f[C]MultiOrg\f[R] authentication.
+-.PP
+-\f[C]--use-launch-settings\f[R] - Includes \f[I]launchSettings.json\f[R] in the generated template output.
+-.PP
+-\f[C]-uld|--use-local-db\f[R] - Specifies LocalDB should be used instead of SQLite.
+-Only applies to \f[C]Individual\f[R] or \f[C]IndividualB2C\f[R] authentication.
+-.PP
+-\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
+-.PP
+-\f[B]mvc, razor\f[R]
+-.PP
+-\f[C]-au|--auth <AUTHENTICATION_TYPE>\f[R] - The type of authentication to use.
+-The possible values are:
++Create a new ASP.NET Core C# MVC project in the current directory with no authentication:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet new mvc -au None
++\f[R]
++.fi
++.RE
+ .IP \[bu] 2
+-\f[C]None\f[R] - No authentication (Default).
++Create a new xUnit project:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet new xunit
++\f[R]
++.fi
++.RE
+ .IP \[bu] 2
+-\f[C]Individual\f[R] - Individual authentication.
++Create a \f[I]global.json\f[R] in the current directory setting the SDK version to 3.1.101:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet new globaljson --sdk-version 3.1.101
++\f[R]
++.fi
++.RE
++.SS See also
+ .IP \[bu] 2
+-\f[C]IndividualB2C\f[R] - Individual authentication with Azure AD B2C.
++dotnet new \[en]list option
+ .IP \[bu] 2
+-\f[C]SingleOrg\f[R] - Organizational authentication for a single tenant.
++dotnet new \[en]search option
+ .IP \[bu] 2
+-\f[C]MultiOrg\f[R] - Organizational authentication for multiple tenants.
++dotnet new \[en]install option
+ .IP \[bu] 2
+-\f[C]Windows\f[R] - Windows authentication.
+-.PP
+-\f[C]--aad-b2c-instance <INSTANCE>\f[R] - The Azure Active Directory B2C instance to connect to.
+-Use with \f[C]IndividualB2C\f[R] authentication.
+-The default value is \f[C]https://login.microsoftonline.com/tfp/\f[R].
+-.PP
+-\f[C]-ssp|--susi-policy-id <ID>\f[R] - The sign-in and sign-up policy ID for this project.
+-Use with \f[C]IndividualB2C\f[R] authentication.
+-.PP
+-\f[C]-rp|--reset-password-policy-id <ID>\f[R] - The reset password policy ID for this project.
+-Use with \f[C]IndividualB2C\f[R] authentication.
+-.PP
+-\f[C]-ep|--edit-profile-policy-id <ID>\f[R] - The edit profile policy ID for this project.
+-Use with \f[C]IndividualB2C\f[R] authentication.
+-.PP
+-\f[C]--aad-instance <INSTANCE>\f[R] - The Azure Active Directory instance to connect to.
+-Use with \f[C]SingleOrg\f[R] or \f[C]MultiOrg\f[R] authentication.
+-The default value is \f[C]https://login.microsoftonline.com/\f[R].
+-.PP
+-\f[C]--client-id <ID>\f[R] - The Client ID for this project.
+-Use with \f[C]IndividualB2C\f[R], \f[C]SingleOrg\f[R], or \f[C]MultiOrg\f[R] authentication.
+-The default value is \f[C]11111111-1111-1111-11111111111111111\f[R].
+-.PP
+-\f[C]--domain <DOMAIN>\f[R] - The domain for the directory tenant.
+-Use with \f[C]SingleOrg\f[R] or \f[C]IndividualB2C\f[R] authentication.
+-The default value is \f[C]qualified.domain.name\f[R].
+-.PP
+-\f[C]--tenant-id <ID>\f[R] - The TenantId ID of the directory to connect to.
+-Use with \f[C]SingleOrg\f[R] authentication.
+-The default value is \f[C]22222222-2222-2222-2222-222222222222\f[R].
+-.PP
+-\f[C]--callback-path <PATH>\f[R] - The request path within the application\[cq]s base path of the redirect URI.
+-Use with \f[C]SingleOrg\f[R] or \f[C]IndividualB2C\f[R] authentication.
+-The default value is \f[C]/signin-oidc\f[R].
+-.PP
+-\f[C]-r|--org-read-access\f[R] - Allows this application read-access to the directory.
+-Only applies to \f[C]SingleOrg\f[R] or \f[C]MultiOrg\f[R] authentication.
+-.PP
+-\f[C]--use-launch-settings\f[R] - Includes \f[I]launchSettings.json\f[R] in the generated template output.
+-.PP
+-\f[C]--use-browserlink\f[R] - Includes BrowserLink in the project.
+-.PP
+-\f[C]-uld|--use-local-db\f[R] - Specifies LocalDB should be used instead of SQLite.
+-Only applies to \f[C]Individual\f[R] or \f[C]IndividualB2C\f[R] authentication.
+-.PP
+-\f[C]--no-restore\f[R] - Doesn\[cq]t execute an implicit restore during project creation.
+-.PP
+-\f[B]page\f[R]
+-.PP
+-\f[C]-na|--namespace <NAMESPACE_NAME>\f[R]- Namespace for the generated code.
+-The default value is \f[C]MyApp.Namespace\f[R].
+-.PP
+-\f[C]-np|--no-pagemodel\f[R] - Creates the page without a PageModel.
+-.PP
+-\f[B]viewimports\f[R]
+-.PP
+-\f[C]-na|--namespace <NAMESPACE_NAME>\f[R]- Namespace for the generated code.
+-The default value is \f[C]MyApp.Namespace\f[R].
+-.SS .NET Core 1.x
+-.PP
+-\f[B]console, xunit, mstest, web, webapi\f[R]
+-.PP
+-\f[C]-f|--framework <FRAMEWORK>\f[R] - Specifies the framework to target.
+-Values: \f[C]netcoreapp1.0\f[R] or \f[C]netcoreapp1.1\f[R].
+-The default value is \f[C]netcoreapp1.0\f[R].
+-.PP
+-\f[B]classlib\f[R]
+-.PP
+-\f[C]-f|--framework <FRAMEWORK>\f[R] - Specifies the framework to target.
+-Values: \f[C]netcoreapp1.0\f[R], \f[C]netcoreapp1.1\f[R], or \f[C]netstandard1.0\f[R] to \f[C]netstandard1.6\f[R].
+-The default value is \f[C]netstandard1.4\f[R].
+-.PP
+-\f[B]mvc\f[R]
+-.PP
+-\f[C]-f|--framework <FRAMEWORK>\f[R] - Specifies the framework to target.
+-Values: \f[C]netcoreapp1.0\f[R] or \f[C]netcoreapp1.1\f[R].
+-The default value is \f[C]netcoreapp1.0\f[R].
+-.PP
+-\f[C]-au|--auth <AUTHENTICATION_TYPE>\f[R] - The type of authentication to use.
+-Values: \f[C]None\f[R] or \f[C]Individual\f[R].
+-The default value is \f[C]None\f[R].
+-.PP
+-\f[C]-uld|--use-local-db\f[R] - Specifies whether or not to use LocalDB instead of SQLite.
+-Values: \f[C]true\f[R] or \f[C]false\f[R].
+-The default value is \f[C]false\f[R].
+-.PP
+- * * * * *
+-.SH EXAMPLES
+-.PP
+-Create a C# console application project by specifying the template name:
+-.PP
+-\f[C]dotnet new \[dq]Console Application\[dq]\f[R]
+-.PP
+-Create an F# console application project in the current directory:
+-.PP
+-\f[C]dotnet new console -lang F#\f[R]
+-.PP
+-Create a .NET Standard class library project in the specified directory (available only with .NET Core SDK 2.0 or later versions):
+-.PP
+-\f[C]dotnet new classlib -lang VB -o MyLibrary\f[R]
+-.PP
+-Create a new ASP.NET Core C# MVC project in the current directory with no authentication:
+-.PP
+-\f[C]dotnet new mvc -au None\f[R]
+-.PP
+-Create a new xUnit project:
+-.PP
+-\f[C]dotnet new xunit\f[R]
+-.PP
+-List all templates available for MVC:
+-.PP
+-\f[C]dotnet new mvc -l\f[R]
+-.PP
+-List all templates matching the \f[I]we\f[R] substring.
+-No exact match is found, so substring matching runs against both the short name and name columns.
+-.PP
+-\f[C]dotnet new we -l\f[R]
+-.PP
+-Attempt to invoke the template matching \f[I]ng\f[R].
+-If a single match can\[cq]t be determined, list the templates that are partial matches.
+-.PP
+-\f[C]dotnet new ng\f[R]
+-.PP
+-Install version 2.0 of the Single Page Application templates for ASP.NET Core (command option available for .NET Core SDK 1.1 and later versions only):
+-.PP
+-\f[C]dotnet new -i Microsoft.DotNet.Web.Spa.ProjectTemplates::2.0.0\f[R]
+-.PP
+-Create a \f[I]global.json\f[R] in the current directory setting the SDK version to 2.0.0 (available only with .NET Core SDK 2.0 or later versions):
+-.PP
+-\f[C]dotnet new globaljson --sdk-version 2.0.0\f[R]
+-.SS See also
++\&.NET default templates for dotnet new
+ .IP \[bu] 2
+ Custom templates for dotnet new
+ .IP \[bu] 2
+ Create a custom template for dotnet new
+ .IP \[bu] 2
+-dotnet/dotnet-template-samples GitHub repo
+-.IP \[bu] 2
+-Available templates for dotnet new
++dotnet/dotnet-template-samples GitHub repo (https://github.com/dotnet/dotnet-template-samples)
+diff --git a/documentation/manpages/sdk/dotnet-nuget-add-source.1 b/documentation/manpages/sdk/dotnet-nuget-add-source.1
+new file mode 100644
+index 0000000000..30e7176ab9
+--- /dev/null
++++ b/documentation/manpages/sdk/dotnet-nuget-add-source.1
+@@ -0,0 +1,123 @@
++.\" Automatically generated by Pandoc 2.14.1
++.\"
++.TH "" "1" "" "" ".NET"
++.hy
++.SH dotnet nuget add source
++.PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 3.1.200 SDK and later versions
++.SH NAME
++.PP
++\f[C]dotnet nuget add source\f[R] - Add a NuGet source.
++.SH SYNOPSIS
++.IP
++.nf
++\f[C]
++dotnet nuget add source <PACKAGE_SOURCE_PATH> [--name <SOURCE_NAME>] [--username <USER>]
++ [--password <PASSWORD>] [--store-password-in-clear-text]
++ [--valid-authentication-types <TYPES>] [--configfile <FILE>]
++
++dotnet nuget add source -h|--help
++\f[R]
++.fi
++.SH DESCRIPTION
++.PP
++The \f[C]dotnet nuget add source\f[R] command adds a new package source to your NuGet configuration files.
++.RS
++.PP
++[!WARNING] When adding multiple package sources, be careful not to introduce a dependency confusion vulnerability (https://aka.ms/pkg-sec-wp).
++.RE
++.SS Arguments
++.IP \[bu] 2
++\f[B]\f[CB]PACKAGE_SOURCE_PATH\f[B]\f[R]
++.RS 2
++.PP
++Path to the package source.
++.RE
++.SH OPTIONS
++.IP \[bu] 2
++\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
++.RS 2
++.PP
++The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
++If specified, only the settings from this file will be used.
++If not specified, the hierarchy of configuration files from the current directory will be used.
++For more information, see Common NuGet Configurations.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-n|--name <SOURCE_NAME>\f[B]\f[R]
++.RS 2
++.PP
++Name of the source.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-p|--password <PASSWORD>\f[B]\f[R]
++.RS 2
++.PP
++Password to be used when connecting to an authenticated source.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--store-password-in-clear-text\f[B]\f[R]
++.RS 2
++.PP
++Enables storing portable package source credentials by disabling password encryption.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-u|--username <USER>\f[B]\f[R]
++.RS 2
++.PP
++Username to be used when connecting to an authenticated source.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--valid-authentication-types <TYPES>\f[B]\f[R]
++.RS 2
++.PP
++Comma-separated list of valid authentication types for this source.
++Set this to \f[C]basic\f[R] if the server advertises NTLM or Negotiate and your credentials must be sent using the Basic mechanism, for instance when using a PAT with on-premises Azure DevOps Server.
++Other valid values include \f[C]negotiate\f[R], \f[C]kerberos\f[R], \f[C]ntlm\f[R], and \f[C]digest\f[R], but these values are unlikely to be useful.
++.RE
++.SH EXAMPLES
++.IP \[bu] 2
++Add \f[C]nuget.org\f[R] as a source:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet nuget add source https://api.nuget.org/v3/index.json -n nuget.org
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Add \f[C]c:\[rs]packages\f[R] as a local source:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet nuget add source c:\[rs]packages
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Add a source that needs authentication:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet nuget add source https://someServer/myTeam -n myTeam -u myUsername -p myPassword --store-password-in-clear-text
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Add a source that needs authentication (then go install credential provider):
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet nuget add source https://azureartifacts.microsoft.com/myTeam -n myTeam
++\f[R]
++.fi
++.RE
++.SS See also
++.IP \[bu] 2
++Package source sections in NuGet.config files
++.IP \[bu] 2
++sources command (nuget.exe)
+diff --git a/documentation/manpages/sdk/dotnet-nuget-delete.1 b/documentation/manpages/sdk/dotnet-nuget-delete.1
+index 18d1261714..931ca4ef7b 100644
+--- a/documentation/manpages/sdk/dotnet-nuget-delete.1
++++ b/documentation/manpages/sdk/dotnet-nuget-delete.1
+@@ -1,10 +1,10 @@
+-.\" Automatically generated by Pandoc 2.7.2
++.\" Automatically generated by Pandoc 2.14.1
+ .\"
+-.TH "dotnet nuget delete command" "1" "" "" ".NET Core"
++.TH "" "1" "" "" ".NET"
+ .hy
+ .SH dotnet nuget delete
+ .PP
+-\f[B]This topic applies to: \[OK]\f[R] .NET Core 1.x SDK and later versions
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 1.x SDK and later versions
+ .SH NAME
+ .PP
+ \f[C]dotnet nuget delete\f[R] - Deletes or unlists a package from the server.
+@@ -12,15 +12,17 @@
+ .IP
+ .nf
+ \f[C]
+-dotnet nuget delete [<PACKAGE_NAME> <PACKAGE_VERSION>] [--force-english-output] [--interactive] [-k|--api-key] [--no-service-endpoint]
+- [--non-interactive] [-s|--source]
+-dotnet nuget delete [-h|--help]
++dotnet nuget delete [<PACKAGE_NAME> <PACKAGE_VERSION>] [--force-english-output]
++ [--interactive] [-k|--api-key <API_KEY>] [--no-service-endpoint]
++ [--non-interactive] [-s|--source <SOURCE>]
++
++dotnet nuget delete -h|--help
+ \f[R]
+ .fi
+ .SH DESCRIPTION
+ .PP
+ The \f[C]dotnet nuget delete\f[R] command deletes or unlists a package from the server.
+-For nuget.org, the action is to unlist the package.
++For nuget.org (https://www.nuget.org/), the action is to unlist the package.
+ .SS Arguments
+ .IP \[bu] 2
+ \f[B]\f[CB]PACKAGE_NAME\f[B]\f[R]
+@@ -42,17 +44,18 @@ Version of the package to delete.
+ Forces the application to run using an invariant, English-based culture.
+ .RE
+ .IP \[bu] 2
+-\f[B]\f[CB]-h|--help\f[B]\f[R]
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
+ .RS 2
+ .PP
+-Prints out a short help for the command.
++Prints out a description of how to use the command.
+ .RE
+ .IP \[bu] 2
+ \f[B]\f[CB]--interactive\f[B]\f[R]
+ .RS 2
+ .PP
+-Allows the command to block and requires manual action for operations like authentication.
+-Option available since .NET Core 2.2 SDK.
++Allows the command to stop and wait for user input or action.
++For example, to complete authentication.
++Available since .NET Core 3.0 SDK.
+ .RE
+ .IP \[bu] 2
+ \f[B]\f[CB]-k|--api-key <API_KEY>\f[B]\f[R]
+@@ -102,5 +105,3 @@ dotnet nuget delete Microsoft.AspNetCore.Mvc 1.0 --non-interactive
+ \f[R]
+ .fi
+ .RE
+-.SH AUTHORS
+-karann-msft.
+diff --git a/documentation/manpages/sdk/dotnet-nuget-disable-source.1 b/documentation/manpages/sdk/dotnet-nuget-disable-source.1
+new file mode 100644
+index 0000000000..82b33e9876
+--- /dev/null
++++ b/documentation/manpages/sdk/dotnet-nuget-disable-source.1
+@@ -0,0 +1,55 @@
++.\" Automatically generated by Pandoc 2.14.1
++.\"
++.TH "" "1" "" "" ".NET"
++.hy
++.SH dotnet nuget disable source
++.PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 3.1.200 SDK and later versions
++.SH NAME
++.PP
++\f[C]dotnet nuget disable source\f[R] - Disable a NuGet source.
++.SH SYNOPSIS
++.IP
++.nf
++\f[C]
++dotnet nuget disable source <NAME> [--configfile <FILE>]
++
++dotnet nuget disable source -h|--help
++\f[R]
++.fi
++.SH DESCRIPTION
++.PP
++The \f[C]dotnet nuget disable source\f[R] command disables an existing source in your NuGet configuration files.
++.SS Arguments
++.IP \[bu] 2
++\f[B]\f[CB]NAME\f[B]\f[R]
++.RS 2
++.PP
++Name of the source.
++.RE
++.SH OPTIONS
++.IP \[bu] 2
++\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
++.RS 2
++.PP
++The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
++If specified, only the settings from this file will be used.
++If not specified, the hierarchy of configuration files from the current directory will be used.
++For more information, see Common NuGet Configurations.
++.RE
++.SH EXAMPLES
++.IP \[bu] 2
++Disable a source with name of \f[C]mySource\f[R]:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet nuget disable source mySource
++\f[R]
++.fi
++.RE
++.SS See also
++.IP \[bu] 2
++Package source sections in NuGet.config files
++.IP \[bu] 2
++sources command (nuget.exe)
+diff --git a/documentation/manpages/sdk/dotnet-nuget-enable-source.1 b/documentation/manpages/sdk/dotnet-nuget-enable-source.1
+new file mode 100644
+index 0000000000..fd3703fc79
+--- /dev/null
++++ b/documentation/manpages/sdk/dotnet-nuget-enable-source.1
+@@ -0,0 +1,55 @@
++.\" Automatically generated by Pandoc 2.14.1
++.\"
++.TH "" "1" "" "" ".NET"
++.hy
++.SH dotnet nuget enable source
++.PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 3.1.200 SDK and later versions
++.SH NAME
++.PP
++\f[C]dotnet nuget enable source\f[R] - Enable a NuGet source.
++.SH SYNOPSIS
++.IP
++.nf
++\f[C]
++dotnet nuget enable source <NAME> [--configfile <FILE>]
++
++dotnet nuget enable source -h|--help
++\f[R]
++.fi
++.SH DESCRIPTION
++.PP
++The \f[C]dotnet nuget enable source\f[R] command enables an existing source in your NuGet configuration files.
++.SS Arguments
++.IP \[bu] 2
++\f[B]\f[CB]NAME\f[B]\f[R]
++.RS 2
++.PP
++Name of the source.
++.RE
++.SH OPTIONS
++.IP \[bu] 2
++\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
++.RS 2
++.PP
++The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
++If specified, only the settings from this file will be used.
++If not specified, the hierarchy of configuration files from the current directory will be used.
++For more information, see Common NuGet Configurations.
++.RE
++.SH EXAMPLES
++.IP \[bu] 2
++Enable a source with name of \f[C]mySource\f[R]:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet nuget enable source mySource
++\f[R]
++.fi
++.RE
++.SS See also
++.IP \[bu] 2
++Package source sections in NuGet.config files
++.IP \[bu] 2
++sources command (nuget.exe)
+diff --git a/documentation/manpages/sdk/dotnet-nuget-list-source.1 b/documentation/manpages/sdk/dotnet-nuget-list-source.1
+new file mode 100644
+index 0000000000..4058caab9f
+--- /dev/null
++++ b/documentation/manpages/sdk/dotnet-nuget-list-source.1
+@@ -0,0 +1,54 @@
++.\" Automatically generated by Pandoc 2.14.1
++.\"
++.TH "" "1" "" "" ".NET"
++.hy
++.SH dotnet nuget list source
++.PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 3.1.200 SDK and later versions
++.SH NAME
++.PP
++\f[C]dotnet nuget list source\f[R] - Lists all configured NuGet sources.
++.SH SYNOPSIS
++.IP
++.nf
++\f[C]
++dotnet nuget list source [--format [Detailed|Short]] [--configfile <FILE>]
++
++dotnet nuget list source -h|--help
++\f[R]
++.fi
++.SH DESCRIPTION
++.PP
++The \f[C]dotnet nuget list source\f[R] command lists all existing sources from your NuGet configuration files.
++.SH OPTIONS
++.IP \[bu] 2
++\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
++.RS 2
++.PP
++The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
++If specified, only the settings from this file will be used.
++If not specified, the hierarchy of configuration files from the current directory will be used.
++For more information, see Common NuGet Configurations.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--format [Detailed|Short]\f[B]\f[R]
++.RS 2
++.PP
++The format of the list command output: \f[C]Detailed\f[R] (the default) and \f[C]Short\f[R].
++.RE
++.SH EXAMPLES
++.IP \[bu] 2
++List configured sources from the current directory:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet nuget list source
++\f[R]
++.fi
++.RE
++.SS See also
++.IP \[bu] 2
++Package source sections in NuGet.config files
++.IP \[bu] 2
++sources command (nuget.exe)
+diff --git a/documentation/manpages/sdk/dotnet-nuget-locals.1 b/documentation/manpages/sdk/dotnet-nuget-locals.1
+index 99d8d9eaf1..dc77be9fc7 100644
+--- a/documentation/manpages/sdk/dotnet-nuget-locals.1
++++ b/documentation/manpages/sdk/dotnet-nuget-locals.1
+@@ -1,10 +1,10 @@
+-.\" Automatically generated by Pandoc 2.7.2
++.\" Automatically generated by Pandoc 2.14.1
+ .\"
+-.TH "dotnet nuget locals command" "1" "" "" ".NET Core"
++.TH "" "1" "" "" ".NET"
+ .hy
+ .SH dotnet nuget locals
+ .PP
+-\f[B]This topic applies to: \[OK]\f[R] .NET Core 1.x SDK and later versions
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.x SDK and later versions
+ .SH NAME
+ .PP
+ \f[C]dotnet nuget locals\f[R] - Clears or lists local NuGet resources.
+@@ -13,7 +13,8 @@
+ .nf
+ \f[C]
+ dotnet nuget locals <CACHE_LOCATION> [(-c|--clear)|(-l|--list)] [--force-english-output]
+-dotnet nuget locals [-h|--help]
++
++dotnet nuget locals -h|--help
+ \f[R]
+ .fi
+ .SH DESCRIPTION
+@@ -46,10 +47,10 @@ The other cache locations aren\[cq]t affected.
+ Forces the application to run using an invariant, English-based culture.
+ .RE
+ .IP \[bu] 2
+-\f[B]\f[CB]-h|--help\f[B]\f[R]
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
+ .RS 2
+ .PP
+-Prints out a short help for the command.
++Prints out a description of how to use the command.
+ .RE
+ .IP \[bu] 2
+ \f[B]\f[CB]-c|--clear\f[B]\f[R]
+@@ -73,7 +74,7 @@ Displays the paths of all the local cache directories (http-cache directory, glo
+ .IP
+ .nf
+ \f[C]
+-dotnet nuget locals \[en]l all
++dotnet nuget locals all -l
+ \f[R]
+ .fi
+ .RE
+@@ -83,7 +84,7 @@ Displays the path for the local http-cache directory:
+ .IP
+ .nf
+ \f[C]
+-dotnet nuget locals --list http-cache
++dotnet nuget locals http-cache --list
+ \f[R]
+ .fi
+ .RE
+@@ -93,7 +94,7 @@ Clears all files from all local cache directories (http-cache directory, global-
+ .IP
+ .nf
+ \f[C]
+-dotnet nuget locals --clear all
++dotnet nuget locals all --clear
+ \f[R]
+ .fi
+ .RE
+@@ -103,7 +104,7 @@ Clears all files in local global-packages cache directory:
+ .IP
+ .nf
+ \f[C]
+-dotnet nuget locals -c global-packages
++dotnet nuget locals global-packages -c
+ \f[R]
+ .fi
+ .RE
+@@ -113,12 +114,10 @@ Clears all files in local temporary cache directory:
+ .IP
+ .nf
+ \f[C]
+-dotnet nuget locals -c temp
++dotnet nuget locals temp -c
+ \f[R]
+ .fi
+ .RE
+ .SS Troubleshooting
+ .PP
+ For information on common problems and errors while using the \f[C]dotnet nuget locals\f[R] command, see Managing the NuGet cache.
+-.SH AUTHORS
+-karann-msft.
+diff --git a/documentation/manpages/sdk/dotnet-nuget-push.1 b/documentation/manpages/sdk/dotnet-nuget-push.1
+index 000e3e567e..3727158258 100644
+--- a/documentation/manpages/sdk/dotnet-nuget-push.1
++++ b/documentation/manpages/sdk/dotnet-nuget-push.1
+@@ -1,10 +1,10 @@
+-.\" Automatically generated by Pandoc 2.7.2
++.\" Automatically generated by Pandoc 2.14.1
+ .\"
+-.TH "dotnet nuget push command" "1" "" "" ".NET Core"
++.TH "" "1" "" "" ".NET"
+ .hy
+ .SH dotnet nuget push
+ .PP
+-\f[B]This topic applies to: \[OK]\f[R] .NET Core 1.x SDK and later versions
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.x SDK and later versions
+ .SH NAME
+ .PP
+ \f[C]dotnet nuget push\f[R] - Pushes a package to the server and publishes it.
+@@ -12,9 +12,13 @@
+ .IP
+ .nf
+ \f[C]
+-dotnet nuget push [<ROOT>] [-d|--disable-buffering] [--force-english-output] [--interactive] [-k|--api-key] [-n|--no-symbols]
+- [--no-service-endpoint] [-s|--source] [-sk|--symbol-api-key] [-ss|--symbol-source] [-t|--timeout]
+-dotnet nuget push [-h|--help]
++dotnet nuget push [<ROOT>] [-d|--disable-buffering] [--force-english-output]
++ [--interactive] [-k|--api-key <API_KEY>] [-n|--no-symbols]
++ [--no-service-endpoint] [-s|--source <SOURCE>] [--skip-duplicate]
++ [-sk|--symbol-api-key <API_KEY>] [-ss|--symbol-source <SOURCE>]
++ [-t|--timeout <TIMEOUT>]
++
++dotnet nuget push -h|--help
+ \f[R]
+ .fi
+ .SH DESCRIPTION
+@@ -23,6 +27,10 @@ The \f[C]dotnet nuget push\f[R] command pushes a package to the server and publi
+ The push command uses server and credential details found in the system\[cq]s NuGet config file or chain of config files.
+ For more information on config files, see Configuring NuGet Behavior.
+ NuGet\[cq]s default configuration is obtained by loading \f[I]%AppData%.config\f[R] (Windows) or \f[I]$HOME/.local/share\f[R] (Linux/macOS), then loading any \f[I]nuget.config\f[R] or \f[I].nuget.config\f[R] starting from the root of drive and ending in the current directory.
++.PP
++The command pushes an existing package.
++It doesn\[cq]t create a package.
++To create a package, use \f[C]dotnet pack\f[R].
+ .SS Arguments
+ .IP \[bu] 2
+ \f[B]\f[CB]ROOT\f[B]\f[R]
+@@ -44,15 +52,18 @@ Disables buffering when pushing to an HTTP(S) server to reduce memory usage.
+ Forces the application to run using an invariant, English-based culture.
+ .RE
+ .IP \[bu] 2
+-\f[B]\f[CB]-h|--help\f[B]\f[R]
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
++.RS 2
+ .PP
+-Prints out a short help for the command.
++Prints out a description of how to use the command.
++.RE
+ .IP \[bu] 2
+ \f[B]\f[CB]--interactive\f[B]\f[R]
+ .RS 2
+ .PP
+-Allows the command to block and requires manual action for operations like authentication.
+-Option available since .NET Core 2.2 SDK.
++Allows the command to stop and wait for user input or action.
++For example, to complete authentication.
++Available since .NET Core 3.0 SDK.
+ .RE
+ .IP \[bu] 2
+ \f[B]\f[CB]-k|--api-key <API_KEY>\f[B]\f[R]
+@@ -78,7 +89,16 @@ Option available since .NET Core 2.1 SDK.
+ .RS 2
+ .PP
+ Specifies the server URL.
+-This option is required unless \f[C]DefaultPushSource\f[R] config value is set in the NuGet config file.
++NuGet identifies a UNC or local folder source and simply copies the file there instead of pushing it using HTTP.
++> [!IMPORTANT] > Starting with NuGet 3.4.2, this is a mandatory parameter unless the NuGet config file specifies a \f[C]DefaultPushSource\f[R] value.
++For more information, see Configuring NuGet behavior.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--skip-duplicate\f[B]\f[R]
++.RS 2
++.PP
++When pushing multiple packages to an HTTP(S) server, treats any 409 Conflict response as a warning so that the push can continue.
++Available since .NET Core 3.1 SDK.
+ .RE
+ .IP \[bu] 2
+ \f[B]\f[CB]-sk|--symbol-api-key <API_KEY>\f[B]\f[R]
+@@ -98,11 +118,11 @@ Specifies the symbol server URL.
+ .PP
+ Specifies the timeout for pushing to a server in seconds.
+ Defaults to 300 seconds (5 minutes).
+-Specifying 0 (zero seconds) applies the default value.
++Specifying 0 applies the default value.
+ .RE
+ .SH EXAMPLES
+ .IP \[bu] 2
+-Pushes \f[I]foo.nupkg\f[R] to the default push source, specifying an API key:
++Push \f[I]foo.nupkg\f[R] to the default push source specified in the NuGet config file, using an API key:
+ .RS 2
+ .IP
+ .nf
+@@ -112,17 +132,25 @@ dotnet nuget push foo.nupkg -k 4003d786-cc37-4004-bfdf-c4f3e8ef9b3a
+ .fi
+ .RE
+ .IP \[bu] 2
+-Push \f[I]foo.nupkg\f[R] to the custom push source \f[C]https://customsource\f[R], specifying an API key:
++Push \f[I]foo.nupkg\f[R] to the official NuGet server, specifying an API key:
+ .RS 2
+ .IP
+ .nf
+ \f[C]
++dotnet nuget push foo.nupkg -k 4003d786-cc37-4004-bfdf-c4f3e8ef9b3a -s https://api.nuget.org/v3/index.json
++\f[R]
++.fi
++.IP \[bu] 2
++Push \f[I]foo.nupkg\f[R] to the custom push source \f[C]https://customsource\f[R], specifying an API key:
++.IP
++.nf
++\f[C]
+ dotnet nuget push foo.nupkg -k 4003d786-cc37-4004-bfdf-c4f3e8ef9b3a -s https://customsource/
+ \f[R]
+ .fi
+ .RE
+ .IP \[bu] 2
+-Pushes \f[I]foo.nupkg\f[R] to the default push source:
++Push \f[I]foo.nupkg\f[R] to the default push source specified in the NuGet config file:
+ .RS 2
+ .IP
+ .nf
+@@ -132,7 +160,7 @@ dotnet nuget push foo.nupkg
+ .fi
+ .RE
+ .IP \[bu] 2
+-Pushes \f[I]foo.symbols.nupkg\f[R] to the default symbols source:
++Push \f[I]foo.symbols.nupkg\f[R] to the default symbols source:
+ .RS 2
+ .IP
+ .nf
+@@ -142,7 +170,7 @@ dotnet nuget push foo.symbols.nupkg
+ .fi
+ .RE
+ .IP \[bu] 2
+-Pushes \f[I]foo.nupkg\f[R] to the default push source, specifying a 360-second timeout:
++Push \f[I]foo.nupkg\f[R] to the default push source specified in the NuGet config file, with a 360-second timeout:
+ .RS 2
+ .IP
+ .nf
+@@ -152,19 +180,45 @@ dotnet nuget push foo.nupkg --timeout 360
+ .fi
+ .RE
+ .IP \[bu] 2
+-Pushes all \f[I].nupkg\f[R] files in the current directory to the default push source:
++Push all \f[I].nupkg\f[R] files in the current directory to the default push source specified in the NuGet config file:
+ .RS 2
+ .IP
+ .nf
+ \f[C]
+-dotnet nuget push *.nupkg
++dotnet nuget push \[dq]*.nupkg\[dq]
+ \f[R]
+ .fi
+ .RS
+ .PP
+ [!NOTE] If this command doesn\[cq]t work, it might be due to a bug that existed in older versions of the SDK (.NET Core 2.1 SDK and earlier versions).
+-To fix this, upgrade your SDK version or run the following command instead: \f[C]dotnet nuget push **/*.nupkg\f[R]
++To fix this, upgrade your SDK version or run the following command instead: \f[C]dotnet nuget push \[dq]**/*.nupkg\[dq]\f[R]
++.RE
++.RS
++.PP
++[!NOTE] The enclosing quotes are required for shells such as bash that perform file globbing.
++For more information, see NuGet/Home#4393 (https://github.com/NuGet/Home/issues/4393#issuecomment-667618120).
+ .RE
+ .RE
+-.SH AUTHORS
+-karann-msft.
++.IP \[bu] 2
++Push all \f[I].nupkg\f[R] files to the default push source specified in the NuGet config file, even if a 409 Conflict response is returned by an HTTP(S) server:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet nuget push \[dq]*.nupkg\[dq] --skip-duplicate
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Push all \f[I].nupkg\f[R] files in the current directory to a local feed directory:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet nuget push \[dq]*.nupkg\[dq] -s c:\[rs]mydir
++\f[R]
++.fi
++.PP
++This command doesn\[cq]t store packages in a hierarchical folder structure, which is recommended to optimize performance.
++For more information, see Local feeds.
++.RE
+diff --git a/documentation/manpages/sdk/dotnet-nuget-remove-source.1 b/documentation/manpages/sdk/dotnet-nuget-remove-source.1
+new file mode 100644
+index 0000000000..1beede5e47
+--- /dev/null
++++ b/documentation/manpages/sdk/dotnet-nuget-remove-source.1
+@@ -0,0 +1,55 @@
++.\" Automatically generated by Pandoc 2.14.1
++.\"
++.TH "" "1" "" "" ".NET"
++.hy
++.SH dotnet nuget remove source
++.PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 3.1.200 SDK and later versions
++.SH NAME
++.PP
++\f[C]dotnet nuget remove source\f[R] - Remove a NuGet source.
++.SH SYNOPSIS
++.IP
++.nf
++\f[C]
++dotnet nuget remove source <NAME> [--configfile <FILE>]
++
++dotnet nuget remove source -h|--help
++\f[R]
++.fi
++.SH DESCRIPTION
++.PP
++The \f[C]dotnet nuget remove source\f[R] command removes an existing source from your NuGet configuration files.
++.SS Arguments
++.IP \[bu] 2
++\f[B]\f[CB]NAME\f[B]\f[R]
++.RS 2
++.PP
++Name of the source.
++.RE
++.SH OPTIONS
++.IP \[bu] 2
++\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
++.RS 2
++.PP
++The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
++If specified, only the settings from this file will be used.
++If not specified, the hierarchy of configuration files from the current directory will be used.
++For more information, see Common NuGet Configurations.
++.RE
++.SH EXAMPLES
++.IP \[bu] 2
++Remove a source with name of \f[C]mySource\f[R]:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet nuget remove source mySource
++\f[R]
++.fi
++.RE
++.SS See also
++.IP \[bu] 2
++Package source sections in NuGet.config files
++.IP \[bu] 2
++sources command (nuget.exe)
+diff --git a/documentation/manpages/sdk/dotnet-nuget-sign.1 b/documentation/manpages/sdk/dotnet-nuget-sign.1
+new file mode 100644
+index 0000000000..7cc812ab19
+--- /dev/null
++++ b/documentation/manpages/sdk/dotnet-nuget-sign.1
+@@ -0,0 +1,242 @@
++.\" Automatically generated by Pandoc 2.14.1
++.\"
++.TH "" "1" "" "" ".NET"
++.hy
++.SH dotnet nuget sign
++.PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET 6.0 Preview 5 SDK and later versions
++.SH NAME
++.PP
++\f[C]dotnet nuget sign\f[R] - Signs all the NuGet packages matching the first argument with a certificate.
++.SH SYNOPSIS
++.IP
++.nf
++\f[C]
++dotnet nuget sign [<package-path(s)>]
++ [--certificate-path <PATH>]
++ [--certificate-store-name <STORENAME>]
++ [--certificate-store-location <STORELOCATION>]
++ [--certificate-subject-name <SUBJECTNAME>]
++ [--certificate-fingerprint <FINGERPRINT>]
++ [--certificate-password <PASSWORD>]
++ [--hash-algorithm <HASHALGORITHM>]
++ [-o|--output <OUTPUT DIRECTORY>]
++ [--overwrite]
++ [--timestamp-hash-algorithm <HASHALGORITHM>]
++ [--timestamper <TIMESTAMPINGSERVER>]
++ [-v|--verbosity <LEVEL>]
++
++dotnet nuget sign -h|--help
++\f[R]
++.fi
++.SH DESCRIPTION
++.PP
++The \f[C]dotnet nuget sign\f[R] command signs all the packages matching the first argument with a certificate.
++The certificate with the private key can be obtained from a file or from a certificate installed in a certificate store by providing a subject name or a SHA-1 fingerprint.
++.SS Arguments
++.IP \[bu] 2
++\f[B]\f[CB]package-path(s)\f[B]\f[R]
++.RS 2
++.PP
++Specifies the file path to the package(s) to be signed.
++Multiple arguments can be passed in to sign multiple packages.
++.RE
++.SH OPTIONS
++.IP \[bu] 2
++\f[B]\f[CB]--certificate-path <PATH>\f[B]\f[R]
++.RS 2
++.PP
++Specifies the file path to the certificate to be used in signing the package.
++.RS
++.PP
++[!NOTE] This option currently supports only \f[C]PKCS12 (PFX)\f[R] files that contain the certificate\[cq]s private key.
++.RE
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--certificate-store-name <STORENAME>\f[B]\f[R]
++.RS 2
++.PP
++Specifies the name of the X.509 certificate store to use to search for the certificate.
++Defaults to :::no-loc text=\[lq]\[dq]My\[dq]\[rq]:::, the X.509 certificate store for personal certificates.
++This option should be used when specifying the certificate via \f[C]--certificate-subject-name\f[R] or \f[C]--certificate-fingerprint\f[R] options.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--certificate-store-location <STORELOCATION>\f[B]\f[R]
++.RS 2
++.PP
++Specifies the name of the X.509 certificate store use to search for the certificate.
++Defaults to :::no-loc text=\[lq]\[dq]CurrentUser\[dq]\[rq]:::, the X.509 certificate store used by the current user.
++This option should be used when specifying the certificate via \f[C]--certificate-subject-name\f[R] or \f[C]--certificate-fingerprint\f[R] options.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--certificate-subject-name <SUBJECTNAME>\f[B]\f[R]
++.RS 2
++.PP
++Specifies the subject name of the certificate used to search a local certificate store for the certificate.
++The search is a case-insensitive string comparison using the supplied value, which will find all certificates with the subject name containing that string, regardless of other subject values.
++The certificate store can be specified by \f[C]--certificate-store-name\f[R] and \f[C]--certificate-store-location\f[R] options.
++.RS
++.PP
++[!NOTE] This option currently supports only a single matching certificate in the result.
++If there are multiple matching certificates in the result, or no matching certificate in the result, the sign command will fail.
++.RE
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--certificate-fingerprint <FINGERPRINT>\f[B]\f[R]
++.RS 2
++.PP
++SHA-1 fingerprint of the certificate used to search a local certificate store for the certificate.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--certificate-password <PASSWORD>\f[B]\f[R]
++.RS 2
++.PP
++Specifies the certificate password, if needed.
++If a certificate is password protected but no password is provided, the sign command will fail.
++.RS
++.PP
++[!NOTE] The \f[C]sign\f[R] command only supports non-interactive mode.
++There won\[cq]t be any prompt for a password at run time.
++.RE
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--hash-algorithm <HASHALGORITHM>\f[B]\f[R]
++.RS 2
++.PP
++Hash algorithm to be used to sign the package.
++Defaults to SHA256.
++Possible values are SHA256, SHA384, and SHA512.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-o|--output\f[B]\f[R]
++.RS 2
++.PP
++Specifies the directory where the signed package should be saved.
++If this option is not specified, by default the original package is overwritten by the signed package.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--overwrite\f[B]\f[R]
++.RS 2
++.PP
++Indicate that the current signature should be overwritten.
++By default the command will fail if the package already has a signature.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--timestamp-hash-algorithm <HASHALGORITHM>\f[B]\f[R]
++.RS 2
++.PP
++Hash algorithm to be used by the RFC 3161 timestamp server.
++Defaults to SHA256.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--timestamper <TIMESTAMPINGSERVER>\f[B]\f[R]
++.RS 2
++.PP
++URL to an RFC 3161 timestamping server.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
++.RS 2
++.PP
++Sets the verbosity level of the command.
++Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
++The default is \f[C]minimal\f[R].
++For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
++.RS 2
++.PP
++Prints out a description of how to use the command.
++.RE
++.SH EXAMPLES
++.IP \[bu] 2
++Sign \f[I]foo.nupkg\f[R] with certificate \f[I]cert.pfx\f[R] (not password protected):
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet nuget sign foo.nupkg --certificate-path cert.pfx
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Sign \f[I]foo.nupkg\f[R] with certificate \f[I]cert.pfx\f[R] (password protected):
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet nuget sign foo.nupkg --certificate-path cert.pfx --certificate-password password
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Sign \f[I]foo.nupkg\f[R] with certificate (password protected) matches with the specified SHA-1 fingerprint in the default certificate store (CurrentUser):
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet nuget sign foo.nupkg --certificate-fingerprint 89967D1DD995010B6C66AE24FF8E66885E6E03A8 --certificate-password password
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Sign \f[I]foo.nupkg\f[R] with certificate (password protected) matches with the specified subject name :::no-loc text=\[lq]\[dq]Test certificate for testing signing\[dq]\[rq]::: in the default certificate store (CurrentUser):
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet nuget sign foo.nupkg --certificate-subject-name \[dq]Test certificate for testing signing\[dq] --certificate-password password
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Sign \f[I]foo.nupkg\f[R] with certificate (password protected) matches with the specified SHA-1 fingerprint in the certificate store CurrentUser:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet nuget sign foo.nupkg --certificate-fingerprint 89967D1DD995010B6C66AE24FF8E66885E6E03A8 --certificate-password password --certificate-store-location CurrentUser --certificate-store-name Root
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Sign multiple NuGet packages - \f[I]foo.nupkg\f[R] and \f[I]all .nupkg files in the directory specified\f[R] with certificate \f[I]cert.pfx\f[R] (not password protected):
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet nuget sign foo.nupkg c:\[rs]mydir\[rs]*.nupkg --certificate-path cert.pfx
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Sign \f[I]foo.nupkg\f[R] with certificate \f[I]cert.pfx\f[R] (password protected), and timestamp with \f[C]http://timestamp.test\f[R]:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet nuget sign foo.nupkg --certificate-path cert.pfx --certificate-password password --timestamper http://timestamp.test
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Sign \f[I]foo.nupkg\f[R] with certificate \f[I]cert.pfx\f[R] (not password protected) and save the signed package under specified directory:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet nuget sign foo.nupkg --certificate-path cert.pfx --output c:\[rs]signed\[rs]
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Sign \f[I]foo.nupkg\f[R] with certificate \f[I]cert.pfx\f[R] (not password protected) and overwrite the current signature if the package is already signed:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet nuget sign foo.nupkg --certificate-path cert.pfx --overwrite
++\f[R]
++.fi
++.RE
+diff --git a/documentation/manpages/sdk/dotnet-nuget-trust.1 b/documentation/manpages/sdk/dotnet-nuget-trust.1
+new file mode 100644
+index 0000000000..99f3950586
+--- /dev/null
++++ b/documentation/manpages/sdk/dotnet-nuget-trust.1
+@@ -0,0 +1,468 @@
++.\" Automatically generated by Pandoc 2.14.1
++.\"
++.TH "" "1" "" "" ".NET"
++.hy
++.SH dotnet nuget trust
++.PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET 5.0.300 SDK and later versions
++.SH NAME
++.PP
++\f[C]dotnet nuget trust\f[R] - Gets or sets trusted signers to the NuGet configuration.
++.SH SYNOPSIS
++.IP
++.nf
++\f[C]
++dotnet nuget trust [command] [Options]
++
++dotnet nuget trust -h|--help
++\f[R]
++.fi
++.SH DESCRIPTION
++.PP
++The \f[C]dotnet nuget trust\f[R] command manages the trusted signers.
++By default, NuGet accepts all authors and repositories.
++These commands allow you to specify only a specific subset of signers whose signatures will be accepted, while rejecting all others.
++For more information, see Common NuGet configurations.
++For details on what the nuget.config schema looks like, refer to the NuGet config file reference.
++.SH OPTIONS
++.IP \[bu] 2
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
++.RS 2
++.PP
++Prints out a description of how to use the command.
++.RE
++.SS Commands
++.PP
++If no command is specified, the command will default to \f[C]list\f[R].
++.SS \f[C]list\f[R]
++.PP
++Lists all the trusted signers in the configuration.
++This option will include all the certificates (with fingerprint and fingerprint algorithm) each signer has.
++If a certificate has a preceding [U], it means that certificate entry has allowUntrustedRoot set as true.
++.SS Synopsis:
++.IP
++.nf
++\f[C]
++dotnet nuget trust list [--configfile <PATH>] [-h|--help] [-v, --verbosity <LEVEL>]
++\f[R]
++.fi
++.SS Options:
++.IP \[bu] 2
++\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
++.RS 2
++.PP
++The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
++If specified, only the settings from this file will be used.
++If not specified, the hierarchy of configuration files from the current directory will be used.
++For more information, see Common NuGet Configurations.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
++.RS 2
++.PP
++Prints out a description of how to use the command.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
++.RS 2
++.PP
++Sets the verbosity level of the command.
++Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
++The default is \f[C]minimal\f[R].
++For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
++.RE
++.SS \f[C]sync\f[R]
++.PP
++Deletes the current list of certificates and replaces them with an up-to-date list from the repository.
++.SH SYNOPSIS
++.IP
++.nf
++\f[C]
++dotnet nuget trust sync <NAME> [--configfile <PATH>] [-h|--help] [-v, --verbosity <LEVEL>]
++\f[R]
++.fi
++.SS Arguments
++.IP \[bu] 2
++\f[B]\f[CB]NAME\f[B]\f[R]
++.RS 2
++.PP
++The name of the existing trusted signer to sync.
++.RE
++.SS Options:
++.IP \[bu] 2
++\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
++.RS 2
++.PP
++The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
++If specified, only the settings from this file will be used.
++If not specified, the hierarchy of configuration files from the current directory will be used.
++For more information, see Common NuGet Configurations.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
++.RS 2
++.PP
++Prints out a description of how to use the command.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
++.RS 2
++.PP
++Sets the verbosity level of the command.
++Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
++The default is \f[C]minimal\f[R].
++For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
++.RE
++.SS \f[C]remove\f[R]
++.PP
++Removes any trusted signers that match the given name.
++.SH SYNOPSIS
++.IP
++.nf
++\f[C]
++dotnet nuget trust remove <NAME> [--configfile <PATH>] [-h|--help] [-v, --verbosity <LEVEL>]
++\f[R]
++.fi
++.SS Arguments
++.IP \[bu] 2
++\f[B]\f[CB]NAME\f[B]\f[R]
++.RS 2
++.PP
++The name of the existing trusted signer to remove.
++.RE
++.SS Options:
++.IP \[bu] 2
++\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
++.RS 2
++.PP
++The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
++If specified, only the settings from this file will be used.
++If not specified, the hierarchy of configuration files from the current directory will be used.
++For more information, see Common NuGet Configurations.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
++.RS 2
++.PP
++Prints out a description of how to use the command.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
++.RS 2
++.PP
++Sets the verbosity level of the command.
++Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
++The default is \f[C]minimal\f[R].
++For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
++.RE
++.SS \f[C]author\f[R]
++.PP
++Adds a trusted signer with the given name, based on the author signature of the package.
++.SH SYNOPSIS
++.IP
++.nf
++\f[C]
++dotnet nuget trust author <NAME> <PACKAGE> [--allow-untrusted-root] [--configfile <PATH>] [-h|--help] [-v, --verbosity <LEVEL>]
++\f[R]
++.fi
++.SS Arguments
++.IP \[bu] 2
++\f[B]\f[CB]NAME\f[B]\f[R]
++.RS 2
++.PP
++The name of the trusted signer to add.
++If \f[C]NAME\f[R] already exists in the configuration, the signature is appended.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]PACKAGE\f[B]\f[R]
++.RS 2
++.PP
++The given \f[C]PACKAGE\f[R] should be a local path to the signed \f[I].nupkg\f[R] file.
++.RE
++.SS Options:
++.IP \[bu] 2
++\f[B]\f[CB]--allow-untrusted-root\f[B]\f[R]
++.RS 2
++.PP
++Specifies if the certificate for the trusted signer should be allowed to chain to an untrusted root.
++This is not recommended.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
++.RS 2
++.PP
++The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
++If specified, only the settings from this file will be used.
++If not specified, the hierarchy of configuration files from the current directory will be used.
++For more information, see Common NuGet Configurations.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
++.RS 2
++.PP
++Prints out a description of how to use the command.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
++.RS 2
++.PP
++Sets the verbosity level of the command.
++Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
++The default is \f[C]minimal\f[R].
++For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
++.RE
++.SS \f[C]repository\f[R]
++.PP
++Adds a trusted signer with the given name, based on the repository signature or countersignature of a signed package.
++.SH SYNOPSIS
++.IP
++.nf
++\f[C]
++dotnet nuget trust repository <NAME> <PACKAGE> [--allow-untrusted-root] [--configfile <PATH>] [-h|--help] [--owners <LIST>] [-v, --verbosity <LEVEL>]
++\f[R]
++.fi
++.SS Arguments
++.IP \[bu] 2
++\f[B]\f[CB]NAME\f[B]\f[R]
++.RS 2
++.PP
++The name of the trusted signer to add.
++If \f[C]NAME\f[R] already exists in the configuration, the signature is appended.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]PACKAGE\f[B]\f[R]
++.RS 2
++.PP
++The given \f[C]PACKAGE\f[R] should be a local path to the signed \f[I].nupkg\f[R] file.
++.RE
++.SS Options:
++.IP \[bu] 2
++\f[B]\f[CB]--allow-untrusted-root\f[B]\f[R]
++.RS 2
++.PP
++Specifies if the certificate for the trusted signer should be allowed to chain to an untrusted root.
++This is not recommended.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
++.RS 2
++.PP
++The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
++If specified, only the settings from this file will be used.
++If not specified, the hierarchy of configuration files from the current directory will be used.
++For more information, see Common NuGet Configurations.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
++.RS 2
++.PP
++Prints out a description of how to use the command.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--owners <LIST>\f[B]\f[R]
++.RS 2
++.PP
++Semicolon-separated list of trusted owners to further restrict the trust of a repository.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
++.RS 2
++.PP
++Sets the verbosity level of the command.
++Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
++The default is \f[C]minimal\f[R].
++For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
++.RE
++.SS \f[C]certificate\f[R]
++.PP
++Adds a trusted signer with the given name, based on a certificate fingerprint.
++.SH SYNOPSIS
++.IP
++.nf
++\f[C]
++dotnet nuget trust certificate <NAME> <FINGERPRINT> [--algorithm <ALGORITHM>] [--allow-untrusted-root] [--configfile <PATH>] [-h|--help] [-v, --verbosity <LEVEL>]
++\f[R]
++.fi
++.SS Arguments
++.IP \[bu] 2
++\f[B]\f[CB]NAME\f[B]\f[R]
++.RS 2
++.PP
++The name of the trusted signer to add.
++If a trusted signer with the given name already exists, the certificate item is added to that signer.
++Otherwise a trusted author is created with a certificate item from the given certificate information.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]FINGERPRINT\f[B]\f[R]
++.RS 2
++.PP
++The fingerprint of the certificate.
++.RE
++.SS Options:
++.IP \[bu] 2
++\f[B]\f[CB]--algorithm <ALGORITHM>\f[B]\f[R]
++.RS 2
++.PP
++Specifies the hash algorithm used to calculate the certificate fingerprint.
++Defaults to SHA256.
++Values supported are SHA256, SHA384 and SHA512.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--allow-untrusted-root\f[B]\f[R]
++.RS 2
++.PP
++Specifies if the certificate for the trusted signer should be allowed to chain to an untrusted root.
++This is not recommended.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
++.RS 2
++.PP
++The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
++If specified, only the settings from this file will be used.
++If not specified, the hierarchy of configuration files from the current directory will be used.
++For more information, see Common NuGet Configurations.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
++.RS 2
++.PP
++Prints out a description of how to use the command.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
++.RS 2
++.PP
++Sets the verbosity level of the command.
++Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
++The default is \f[C]minimal\f[R].
++For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
++.RE
++.SS \f[C]source\f[R]
++.PP
++Adds a trusted signer based on a given package source.
++.SH SYNOPSIS
++.IP
++.nf
++\f[C]
++dotnet nuget trust source <NAME> [--configfile <PATH>] [-h|--help] [--owners <LIST>] [--source-url] [-v, --verbosity <LEVEL>]
++\f[R]
++.fi
++.SS Arguments
++.IP \[bu] 2
++\f[B]\f[CB]NAME\f[B]\f[R]
++.RS 2
++.PP
++The name of the trusted signer to add.
++If only \f[C]<NAME>\f[R] is provided without \f[C]--<source-url>\f[R], the package source from your NuGet configuration files with the same name is added to the trusted list.
++If \f[C]<NAME>\f[R] already exists in the configuration, the package source is appended to it.
++.RE
++.SS Options:
++.IP \[bu] 2
++\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
++.RS 2
++.PP
++The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
++If specified, only the settings from this file will be used.
++If not specified, the hierarchy of configuration files from the current directory will be used.
++For more information, see Common NuGet Configurations.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
++.RS 2
++.PP
++Prints out a description of how to use the command.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--owners <LIST>\f[B]\f[R]
++.RS 2
++.PP
++Semicolon-separated list of trusted owners to further restrict the trust of a repository.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--source-url\f[B]\f[R]
++.RS 2
++.PP
++If a \f[C]source-url\f[R] is provided, it must be a v3 package source URL (like \f[C]https://api.nuget.org/v3/index.json\f[R]).
++Other package source types are not supported.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
++.RS 2
++.PP
++Sets the verbosity level of the command.
++Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
++The default is \f[C]minimal\f[R].
++For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
++.RE
++.SH EXAMPLES
++.IP \[bu] 2
++List trusted signers:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet nuget trust list
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Trust source \f[I]NuGet\f[R] in specified \f[I]nuget.config\f[R] file:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet nuget trust source NuGet --configfile ..\[rs]nuget.config
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Trust an author from signed nupkg package file \f[I]foo.nupkg\f[R]:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet nuget trust author PackageAuthor .\[rs]foo.nupkg
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Trust a repository from signed nupkg package file \f[I]foo.nupkg\f[R]:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet nuget trust repository PackageRepository .\[rs]foo.nupkg
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Trust a package signing certificate using its SHA256 fingerprint:
++.RS 2
++.IP
++.nf
++\f[C]
++ dotnet nuget trust certificate MyCert F99EC8CDCE5642B380296A19E22FA8EB3AEF1C70079541A2B3D6E4A93F5E1AFD --algorithm SHA256
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Trust owners \f[I]Nuget\f[R] and \f[I]Microsoft\f[R] from the repository \f[C]https://api.nuget.org/v3/index.json\f[R]:
++.RS 2
++.IP
++.nf
++\f[C]
++ dotnet nuget trust source NuGetTrust https://api.nuget.org/v3/index.json --owners \[dq]Nuget;Microsoft\[dq]
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Remove trusted signer named \f[I]NuGet\f[R] from specified \f[I]nuget.config\f[R] file:
++.RS 2
++.IP
++.nf
++\f[C]
++ dotnet nuget trust remove NuGet --configfile ..\[rs]nuget.config
++\f[R]
++.fi
++.RE
+diff --git a/documentation/manpages/sdk/dotnet-nuget-update-source.1 b/documentation/manpages/sdk/dotnet-nuget-update-source.1
+new file mode 100644
+index 0000000000..893207f325
+--- /dev/null
++++ b/documentation/manpages/sdk/dotnet-nuget-update-source.1
+@@ -0,0 +1,89 @@
++.\" Automatically generated by Pandoc 2.14.1
++.\"
++.TH "" "1" "" "" ".NET"
++.hy
++.SH dotnet nuget update source
++.PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 3.1.200 SDK and later versions
++.SH NAME
++.PP
++\f[C]dotnet nuget update source\f[R] - Update a NuGet source.
++.SH SYNOPSIS
++.IP
++.nf
++\f[C]
++dotnet nuget update source <NAME> [--source <SOURCE>] [--username <USER>]
++ [--password <PASSWORD>] [--store-password-in-clear-text]
++ [--valid-authentication-types <TYPES>] [--configfile <FILE>]
++
++dotnet nuget update source -h|--help
++\f[R]
++.fi
++.SH DESCRIPTION
++.PP
++The \f[C]dotnet nuget update source\f[R] command updates an existing source in your NuGet configuration files.
++.SS Arguments
++.IP \[bu] 2
++\f[B]\f[CB]NAME\f[B]\f[R]
++.RS 2
++.PP
++Name of the source.
++.RE
++.SH OPTIONS
++.IP \[bu] 2
++\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
++.RS 2
++.PP
++The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
++If specified, only the settings from this file will be used.
++If not specified, the hierarchy of configuration files from the current directory will be used.
++For more information, see Common NuGet Configurations.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-p|--password <PASSWORD>\f[B]\f[R]
++.RS 2
++.PP
++Password to be used when connecting to an authenticated source.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-s|--source <SOURCE>\f[B]\f[R]
++.RS 2
++.PP
++Path to the package source.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--store-password-in-clear-text\f[B]\f[R]
++.RS 2
++.PP
++Enables storing portable package source credentials by disabling password encryption.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-u|--username <USER>\f[B]\f[R]
++.RS 2
++.PP
++Username to be used when connecting to an authenticated source.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--valid-authentication-types <TYPES>\f[B]\f[R]
++.RS 2
++.PP
++Comma-separated list of valid authentication types for this source.
++Set this to \f[C]basic\f[R] if the server advertises NTLM or Negotiate and your credentials must be sent using the Basic mechanism, for instance when using a PAT with on-premises Azure DevOps Server.
++Other valid values include \f[C]negotiate\f[R], \f[C]kerberos\f[R], \f[C]ntlm\f[R], and \f[C]digest\f[R], but these values are unlikely to be useful.
++.RE
++.SH EXAMPLES
++.IP \[bu] 2
++Update a source with name of \f[C]mySource\f[R]:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet nuget update source mySource --source c:\[rs]packages
++\f[R]
++.fi
++.RE
++.SS See also
++.IP \[bu] 2
++Package source sections in NuGet.config files
++.IP \[bu] 2
++sources command (nuget.exe)
+diff --git a/documentation/manpages/sdk/dotnet-nuget-verify.1 b/documentation/manpages/sdk/dotnet-nuget-verify.1
+new file mode 100644
+index 0000000000..578398cd49
+--- /dev/null
++++ b/documentation/manpages/sdk/dotnet-nuget-verify.1
+@@ -0,0 +1,341 @@
++'\" t
++.\" Automatically generated by Pandoc 2.14.1
++.\"
++.TH "" "1" "" "" ".NET"
++.hy
++.SH dotnet nuget verify
++.PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET 5.0.100-rc.2.x SDK and later versions
++.SH NAME
++.PP
++\f[C]dotnet nuget verify\f[R] - Verifies a signed NuGet package.
++.SH SYNOPSIS
++.IP
++.nf
++\f[C]
++dotnet nuget verify [<package-path(s)>]
++ [--all]
++ [--certificate-fingerprint <FINGERPRINT>]
++ [-v|--verbosity <LEVEL>]
++
++dotnet nuget verify -h|--help
++\f[R]
++.fi
++.SH DESCRIPTION
++.PP
++The \f[C]dotnet nuget verify\f[R] command verifies a signed NuGet package.
++.SS Arguments
++.IP \[bu] 2
++\f[B]\f[CB]package-path(s)\f[B]\f[R]
++.RS 2
++.PP
++Specifies the file path to the package(s) to be verified.
++Multiple position arguments can be passed in to verify multiple packages.
++.RE
++.SH OPTIONS
++.IP \[bu] 2
++\f[B]\f[CB]--all\f[B]\f[R]
++.RS 2
++.PP
++Specifies that all verifications possible should be performed on the package(s).
++By default, only \f[C]signatures\f[R] are verified.
++.RE
++.RS
++.PP
++[!NOTE] This command currently supports only \f[C]signature\f[R] verification.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--certificate-fingerprint <FINGERPRINT>\f[B]\f[R]
++.RS 2
++.PP
++Verify that the signer certificate matches with one of the specified \f[C]SHA256\f[R] fingerprints.
++This option can be supplied multiple times to provide multiple fingerprints.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
++.RS 2
++.PP
++Sets the verbosity level of the command.
++Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
++The default is \f[C]minimal\f[R].
++For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
++.PP
++The following table shows what is displayed for each verbosity level.
++.PP
++.TS
++tab(@);
++l l l l l l.
++T{
++\[u200B]
++T}@T{
++\f[C]q[uiet]\f[R]
++T}@T{
++\f[C]m[inimal]\f[R]
++T}@T{
++\f[C]n[ormal]\f[R]
++T}@T{
++\f[C]d[etailed]\f[R]
++T}@T{
++\f[C]diag[nostic]\f[R]
++T}
++_
++T{
++\f[C]Certificate chain Information\f[R]
++T}@T{
++\[u274C]
++T}@T{
++\[u274C]
++T}@T{
++\[u274C]
++T}@T{
++\[u2714]\[uFE0F]
++T}@T{
++\[u2714]\[uFE0F]
++T}
++T{
++\f[C]Path to package being verified\f[R]
++T}@T{
++\[u274C]
++T}@T{
++\[u274C]
++T}@T{
++\[u2714]\[uFE0F]
++T}@T{
++\[u2714]\[uFE0F]
++T}@T{
++\[u2714]\[uFE0F]
++T}
++T{
++\f[C]Hashing algorithm used for signature\f[R]
++T}@T{
++\[u274C]
++T}@T{
++\[u274C]
++T}@T{
++\[u2714]\[uFE0F]
++T}@T{
++\[u2714]\[uFE0F]
++T}@T{
++\[u2714]\[uFE0F]
++T}
++T{
++\f[C]Author/Repository Certificate -> SHA1 hash\f[R]
++T}@T{
++\[u274C]
++T}@T{
++\[u274C]
++T}@T{
++\[u2714]\[uFE0F]
++T}@T{
++\[u2714]\[uFE0F]
++T}@T{
++\[u2714]\[uFE0F]
++T}
++T{
++\f[C]Author/Repository Certificate -> Issued By\f[R]
++T}@T{
++\[u274C]
++T}@T{
++\[u274C]
++T}@T{
++\[u2714]\[uFE0F]
++T}@T{
++\[u2714]\[uFE0F]
++T}@T{
++\[u2714]\[uFE0F]
++T}
++T{
++\f[C]Timestamp Certificate -> Issued By\f[R]
++T}@T{
++\[u274C]
++T}@T{
++\[u274C]
++T}@T{
++\[u2714]\[uFE0F]
++T}@T{
++\[u2714]\[uFE0F]
++T}@T{
++\[u2714]\[uFE0F]
++T}
++T{
++\f[C]Timestamp Certificate -> SHA-256 hash\f[R]
++T}@T{
++\[u274C]
++T}@T{
++\[u274C]
++T}@T{
++\[u2714]\[uFE0F]
++T}@T{
++\[u2714]\[uFE0F]
++T}@T{
++\[u2714]\[uFE0F]
++T}
++T{
++\f[C]Timestamp Certificate -> Validity period\f[R]
++T}@T{
++\[u274C]
++T}@T{
++\[u274C]
++T}@T{
++\[u2714]\[uFE0F]
++T}@T{
++\[u2714]\[uFE0F]
++T}@T{
++\[u2714]\[uFE0F]
++T}
++T{
++\f[C]Timestamp Certificate -> SHA1 hash\f[R]
++T}@T{
++\[u274C]
++T}@T{
++\[u274C]
++T}@T{
++\[u2714]\[uFE0F]
++T}@T{
++\[u2714]\[uFE0F]
++T}@T{
++\[u2714]\[uFE0F]
++T}
++T{
++\f[C]Timestamp Certificate -> Subject name\f[R]
++T}@T{
++\[u274C]
++T}@T{
++\[u274C]
++T}@T{
++\[u2714]\[uFE0F]
++T}@T{
++\[u2714]\[uFE0F]
++T}@T{
++\[u2714]\[uFE0F]
++T}
++T{
++\f[C]Author/Repository Certificate -> Subject name\f[R]
++T}@T{
++\[u274C]
++T}@T{
++\[u2714]\[uFE0F]
++T}@T{
++\[u2714]\[uFE0F]
++T}@T{
++\[u2714]\[uFE0F]
++T}@T{
++\[u2714]\[uFE0F]
++T}
++T{
++\f[C]Author/Repository Certificate -> SHA-256 hash\f[R]
++T}@T{
++\[u274C]
++T}@T{
++\[u2714]\[uFE0F]
++T}@T{
++\[u2714]\[uFE0F]
++T}@T{
++\[u2714]\[uFE0F]
++T}@T{
++\[u2714]\[uFE0F]
++T}
++T{
++\f[C]Author/Repository Certificate -> Validity period\f[R]
++T}@T{
++\[u274C]
++T}@T{
++\[u2714]\[uFE0F]
++T}@T{
++\[u2714]\[uFE0F]
++T}@T{
++\[u2714]\[uFE0F]
++T}@T{
++\[u2714]\[uFE0F]
++T}
++T{
++\f[C]Author/Repository Certificate -> Service index URL (If applicable)\f[R]
++T}@T{
++\[u274C]
++T}@T{
++\[u2714]\[uFE0F]
++T}@T{
++\[u2714]\[uFE0F]
++T}@T{
++\[u2714]\[uFE0F]
++T}@T{
++\[u2714]\[uFE0F]
++T}
++T{
++\f[C]Package name being verified\f[R]
++T}@T{
++\[u274C]
++T}@T{
++\[u2714]\[uFE0F]
++T}@T{
++\[u2714]\[uFE0F]
++T}@T{
++\[u2714]\[uFE0F]
++T}@T{
++\[u2714]\[uFE0F]
++T}
++T{
++\f[C]Type of signature (author or repository)\f[R]
++T}@T{
++\[u274C]
++T}@T{
++\[u2714]\[uFE0F]
++T}@T{
++\[u2714]\[uFE0F]
++T}@T{
++\[u2714]\[uFE0F]
++T}@T{
++\[u2714]\[uFE0F]
++T}
++.TE
++.PP
++\[u274C] indicates details that are \f[B]not\f[R] displayed.
++\[u2714]\[uFE0F] indicates details that are displayed.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
++.RS 2
++.PP
++Prints out a description of how to use the command.
++.RE
++.SH EXAMPLES
++.IP \[bu] 2
++Verify \f[I]foo.nupkg\f[R]:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet nuget verify foo.nupkg
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Verify multiple NuGet packages - \f[I]foo.nupkg\f[R] and \f[I]all .nupkg files in the directory specified\f[R]:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet nuget verify foo.nupkg c:\[rs]mydir\[rs]*.nupkg
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Verify \f[I]foo.nupkg\f[R] signature matches with the specified certificate fingerprint:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet nuget verify foo.nupkg --certificate-fingerprint CE40881FF5F0AD3E58965DA20A9F571EF1651A56933748E1BF1C99E537C4E039
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Verify \f[I]foo.nupkg\f[R] signature matches with one of the specified certificate fingerprints:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet nuget verify foo.nupkg --certificate-fingerprint CE40881FF5F0AD3E58965DA20A9F571EF1651A56933748E1BF1C99E537C4E039 --certificate-fingerprint EC10992GG5F0AD3E58965DA20A9F571EF1651A56933748E1BF1C99E537C4E027
++\f[R]
++.fi
++.RE
+diff --git a/documentation/manpages/sdk/dotnet-pack.1 b/documentation/manpages/sdk/dotnet-pack.1
+index 14f617aa93..0967ed5afc 100644
+--- a/documentation/manpages/sdk/dotnet-pack.1
++++ b/documentation/manpages/sdk/dotnet-pack.1
+@@ -1,10 +1,11 @@
+-.\" Automatically generated by Pandoc 2.7.2
++'\" t
++.\" Automatically generated by Pandoc 2.14.1
+ .\"
+-.TH "dotnet pack command" "1" "" "" ".NET Core"
++.TH "" "1" "" "" ".NET"
+ .hy
+ .SH dotnet pack
+ .PP
+-\f[B]This topic applies to: \[OK]\f[R] .NET Core 1.x SDK and later versions
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.x SDK and later versions
+ .SH NAME
+ .PP
+ \f[C]dotnet pack\f[R] - Packs the code into a NuGet package.
+@@ -12,10 +13,14 @@
+ .IP
+ .nf
+ \f[C]
+-dotnet pack [<PROJECT>|<SOLUTION>] [-c|--configuration] [--force] [--include-source] [--include-symbols] [--interactive]
+- [--no-build] [--no-dependencies] [--no-restore] [--nologo] [-o|--output] [--runtime] [-s|--serviceable]
+- [-v|--verbosity] [--version-suffix]
+-dotnet pack [-h|--help]
++dotnet pack [<PROJECT>|<SOLUTION>] [-c|--configuration <CONFIGURATION>]
++ [--force] [--include-source] [--include-symbols] [--interactive]
++ [--no-build] [--no-dependencies] [--no-restore] [--nologo]
++ [-o|--output <OUTPUT_DIRECTORY>] [--runtime <RUNTIME_IDENTIFIER>]
++ [-s|--serviceable] [-v|--verbosity <LEVEL>]
++ [--version-suffix <VERSION_SUFFIX>]
++
++dotnet pack -h|--help
+ \f[R]
+ .fi
+ .SH DESCRIPTION
+@@ -30,16 +35,22 @@ If you want to generate a package that contains the debug symbols, you have two
+ \f[C]--include-source\f[R] - it creates the symbols package with a \f[C]src\f[R] folder inside containing the source files.
+ .PP
+ NuGet dependencies of the packed project are added to the \f[I].nuspec\f[R] file, so they\[cq]re properly resolved when the package is installed.
+-Project-to-project references aren\[cq]t packaged inside the project.
++If the packed project has references to other projects, the other projects are not included in the package.
+ Currently, you must have a package per project if you have project-to-project dependencies.
+ .PP
+ By default, \f[C]dotnet pack\f[R] builds the project first.
+ If you wish to avoid this behavior, pass the \f[C]--no-build\f[R] option.
+ This option is often useful in Continuous Integration (CI) build scenarios where you know the code was previously built.
++.RS
++.PP
++[!NOTE] In some cases, the implicit build cannot be performed.
++This can occur when \f[C]GeneratePackageOnBuild\f[R] is set, to avoid a cyclic dependency between build and pack targets.
++The build can also fail if there is a locked file or other issue.
++.RE
+ .PP
+ You can provide MSBuild properties to the \f[C]dotnet pack\f[R] command for the packing process.
+-For more information, see NuGet metadata properties and the MSBuild Command-Line Reference.
+-The Examples section shows how to use the MSBuild -p switch for a couple of different scenarios.
++For more information, see NuGet pack target properties and the MSBuild Command-Line Reference.
++The Examples section shows how to use the MSBuild \f[C]-p\f[R] switch for a couple of different scenarios.
+ .PP
+ Web projects aren\[cq]t packable by default.
+ To override the default behavior, add the following property to your \f[I].csproj\f[R] file:
+@@ -51,21 +62,36 @@ To override the default behavior, add the following property to your \f[I].cspro
+ </PropertyGroup>
+ \f[R]
+ .fi
++.SS Implicit restore
++.PP
++You don\[cq]t have to run \f[C]dotnet restore\f[R] because it\[cq]s run implicitly by all commands that require a restore to occur, such as \f[C]dotnet new\f[R], \f[C]dotnet build\f[R], \f[C]dotnet run\f[R], \f[C]dotnet test\f[R], \f[C]dotnet publish\f[R], and \f[C]dotnet pack\f[R].
++To disable implicit restore, use the \f[C]--no-restore\f[R] option.
++.PP
++The \f[C]dotnet restore\f[R] command is still useful in certain scenarios where explicitly restoring makes sense, such as continuous integration builds in Azure DevOps Services or in build systems that need to explicitly control when the restore occurs.
++.PP
++For information about how to manage NuGet feeds, see the \f[C]dotnet restore\f[R] documentation.
++.PP
++This command supports the \f[C]dotnet restore\f[R] options when passed in the long form (for example, \f[C]--source\f[R]).
++Short form options, such as \f[C]-s\f[R], are not supported.
++.SS Workload manifest downloads
+ .PP
++When you run this command, it initiates an asynchronous background download of advertising manifests for workloads.
++If the download is still running when this command finishes, the download is stopped.
++For more information, see Advertising manifests.
+ .SS Arguments
+ .PP
+ \f[C]PROJECT | SOLUTION\f[R]
+ .PP
+ The project or solution to pack.
+-It\[cq]s either a path to a csproj file, a solution file, or to a directory.
++It\[cq]s either a path to a csproj, vbproj, or fsproj file, or to a solution file or directory.
+ If not specified, the command searches the current directory for a project or solution file.
+ .SH OPTIONS
+ .IP \[bu] 2
+-\f[B]\f[CB]-c|--configuration {Debug|Release}\f[B]\f[R]
++\f[B]\f[CB]-c|--configuration <CONFIGURATION>\f[B]\f[R]
+ .RS 2
+ .PP
+ Defines the build configuration.
+-The default value is \f[C]Debug\f[R].
++The default for most projects is \f[C]Debug\f[R], but you can override the build configuration settings in your project.
+ .RE
+ .IP \[bu] 2
+ \f[B]\f[CB]--force\f[B]\f[R]
+@@ -73,13 +99,12 @@ The default value is \f[C]Debug\f[R].
+ .PP
+ Forces all dependencies to be resolved even if the last restore was successful.
+ Specifying this flag is the same as deleting the \f[I]project.assets.json\f[R] file.
+-Option available since .NET Core 2.0 SDK.
+ .RE
+ .IP \[bu] 2
+-\f[B]\f[CB]-h|--help\f[B]\f[R]
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
+ .RS 2
+ .PP
+-Prints out a short help for the command.
++Prints out a description of how to use the command.
+ .RE
+ .IP \[bu] 2
+ \f[B]\f[CB]--include-source\f[B]\f[R]
+@@ -98,7 +123,8 @@ Includes the debug symbols NuGet packages in addition to the regular NuGet packa
+ \f[B]\f[CB]--interactive\f[B]\f[R]
+ .RS 2
+ .PP
+-Allows the command to stop and wait for user input or action (for example, to complete authentication).
++Allows the command to stop and wait for user input or action.
++For example, to complete authentication.
+ Available since .NET Core 3.0 SDK.
+ .RE
+ .IP \[bu] 2
+@@ -113,14 +139,12 @@ It also implicitly sets the \f[C]--no-restore\f[R] flag.
+ .RS 2
+ .PP
+ Ignores project-to-project references and only restores the root project.
+-Option available since .NET Core 2.0 SDK.
+ .RE
+ .IP \[bu] 2
+ \f[B]\f[CB]--no-restore\f[B]\f[R]
+ .RS 2
+ .PP
+ Doesn\[cq]t execute an implicit restore when running the command.
+-Option available since .NET Core 2.0 SDK.
+ .RE
+ .IP \[bu] 2
+ \f[B]\f[CB]--nologo\f[B]\f[R]
+@@ -141,27 +165,69 @@ Places the built packages in the directory specified.
+ .PP
+ Specifies the target runtime to restore packages for.
+ For a list of Runtime Identifiers (RIDs), see the RID catalog.
+-Option available since .NET Core 2.0 SDK.
+ .RE
+ .IP \[bu] 2
+ \f[B]\f[CB]-s|--serviceable\f[B]\f[R]
+ .RS 2
+ .PP
+ Sets the serviceable flag in the package.
+-For more information, see .NET Blog: .NET 4.5.1 Supports Microsoft Security Updates for .NET NuGet Libraries.
++For more information, see .NET Blog: .NET Framework 4.5.1 Supports Microsoft Security Updates for .NET NuGet Libraries (https://aka.ms/nupkgservicing).
+ .RE
+ .IP \[bu] 2
+-\f[B]\f[CB]--version-suffix <VERSION_SUFFIX>\f[B]\f[R]
++\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
+ .RS 2
+ .PP
+-Defines the value for the \f[C]$(VersionSuffix)\f[R] MSBuild property in the project.
++Sets the verbosity level of the command.
++Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
++For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
+ .RE
+ .IP \[bu] 2
+-\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
++\f[B]\f[CB]--version-suffix <VERSION_SUFFIX>\f[B]\f[R]
+ .RS 2
+ .PP
+-Sets the verbosity level of the command.
+-Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
++Defines the value for the \f[C]VersionSuffix\f[R] MSBuild property.
++The effect of this property on the package version depends on the values of the \f[C]Version\f[R] and \f[C]VersionPrefix\f[R] properties, as shown in the following table:
++.PP
++.TS
++tab(@);
++l l.
++T{
++Properties with values
++T}@T{
++Package version
++T}
++_
++T{
++None
++T}@T{
++\f[C]1.0.0\f[R]
++T}
++T{
++\f[C]Version\f[R]
++T}@T{
++\f[C]$(Version)\f[R]
++T}
++T{
++\f[C]VersionPrefix\f[R] only
++T}@T{
++\f[C]$(VersionPrefix)\f[R]
++T}
++T{
++\f[C]VersionSuffix\f[R] only
++T}@T{
++\f[C]1.0.0-$(VersionSuffix)\f[R]
++T}
++T{
++\f[C]VersionPrefix\f[R] and \f[C]VersionSuffix\f[R]
++T}@T{
++\f[C]$(VersionPrefix)-$(VersionSuffix)\f[R]
++T}
++.TE
++.PP
++If you want to use \f[C]--version-suffix\f[R], specify \f[C]VersionPrefix\f[R] and not \f[C]Version\f[R] in the project file.
++For example, if \f[C]VersionPrefix\f[R] is \f[C]0.1.2\f[R] and you pass \f[C]--version-suffix rc.1\f[R] to \f[C]dotnet pack\f[R], the package version will be \f[C]0.1.2-rc.1\f[R].
++.PP
++If \f[C]Version\f[R] has a value and you pass \f[C]--version-suffix\f[R] to \f[C]dotnet pack\f[R], the value specified for \f[C]--version-suffix\f[R] is ignored.
+ .RE
+ .SH EXAMPLES
+ .IP \[bu] 2
+@@ -235,7 +301,7 @@ dotnet pack -p:TargetFrameworks=net45
+ .fi
+ .RE
+ .IP \[bu] 2
+-Pack the project and use a specific runtime (Windows 10) for the restore operation (.NET Core SDK 2.0 and later versions):
++Pack the project and use a specific runtime (Windows 10) for the restore operation:
+ .RS 2
+ .IP
+ .nf
+@@ -245,7 +311,7 @@ dotnet pack --runtime win10-x64
+ .fi
+ .RE
+ .IP \[bu] 2
+-Pack the project using a .nuspec file:
++Pack the project using a \f[I].nuspec\f[R] file:
+ .RS 2
+ .IP
+ .nf
+@@ -253,4 +319,12 @@ Pack the project using a .nuspec file:
+ dotnet pack \[ti]/projects/app1/project.csproj -p:NuspecFile=\[ti]/projects/app1/project.nuspec -p:NuspecBasePath=\[ti]/projects/app1/nuget
+ \f[R]
+ .fi
++.PP
++For information about how to use \f[C]NuspecFile\f[R], \f[C]NuspecBasePath\f[R], and \f[C]NuspecProperties\f[R], see the following resources:
++.IP \[bu] 2
++Packing using a .nuspec
++.IP \[bu] 2
++Advanced extension points to create customized package
++.IP \[bu] 2
++Global properties
+ .RE
+diff --git a/documentation/manpages/sdk/dotnet-publish.1 b/documentation/manpages/sdk/dotnet-publish.1
+index 0781225951..d991731e50 100644
+--- a/documentation/manpages/sdk/dotnet-publish.1
++++ b/documentation/manpages/sdk/dotnet-publish.1
+@@ -1,42 +1,30 @@
+-.\" Automatically generated by Pandoc 2.7.2
++.\" Automatically generated by Pandoc 2.14.1
+ .\"
+-.TH "dotnet publish command" "1" "" "" ".NET Core"
++.TH "" "1" "" "" ".NET"
+ .hy
+ .SH dotnet publish
+ .PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.1 SDK and later versions
+ .SH NAME
+ .PP
+-\f[C]dotnet publish\f[R] - Packs the application and its dependencies into a folder for deployment to a hosting system.
++\f[C]dotnet publish\f[R] - Publishes the application and its dependencies to a folder for deployment to a hosting system.
+ .SH SYNOPSIS
+-.SS .NET Core 2.1
+ .IP
+ .nf
+ \f[C]
+-dotnet publish [<PROJECT>] [-c|--configuration] [-f|--framework] [--force] [--manifest] [--no-build] [--no-dependencies]
+- [--no-restore] [-o|--output] [-r|--runtime] [--self-contained] [-v|--verbosity] [--version-suffix]
+-dotnet publish [-h|--help]
++dotnet publish [<PROJECT>|<SOLUTION>] [-a|--arch <ARCHITECTURE>]
++ [-c|--configuration <CONFIGURATION>]
++ [-f|--framework <FRAMEWORK>] [--force] [--interactive]
++ [--manifest <PATH_TO_MANIFEST_FILE>] [--no-build] [--no-dependencies]
++ [--no-restore] [--nologo] [-o|--output <OUTPUT_DIRECTORY>]
++ [--os <OS>] [-r|--runtime <RUNTIME_IDENTIFIER>]
++ [--self-contained [true|false]]
++ [--no-self-contained] [-v|--verbosity <LEVEL>]
++ [--version-suffix <VERSION_SUFFIX>]
++
++dotnet publish -h|--help
+ \f[R]
+ .fi
+-.SS .NET Core 2.0
+-.IP
+-.nf
+-\f[C]
+-dotnet publish [<PROJECT>] [-c|--configuration] [-f|--framework] [--force] [--manifest] [--no-dependencies]
+- [--no-restore] [-o|--output] [-r|--runtime] [--self-contained] [-v|--verbosity] [--version-suffix]
+-dotnet publish [-h|--help]
+-\f[R]
+-.fi
+-.SS .NET Core 1.x
+-.IP
+-.nf
+-\f[C]
+-dotnet publish [<PROJECT>] [-c|--configuration] [-f|--framework] [-o|--output] [-r|--runtime] [-v|--verbosity]
+- [--version-suffix]
+-dotnet publish [-h|--help]
+-\f[R]
+-.fi
+-.PP
+- * * * * *
+ .SH DESCRIPTION
+ .PP
+ \f[C]dotnet publish\f[R] compiles the application, reads through its dependencies specified in the project file, and publishes the resulting set of files to a directory.
+@@ -44,226 +32,367 @@ The output includes the following assets:
+ .IP \[bu] 2
+ Intermediate Language (IL) code in an assembly with a \f[I]dll\f[R] extension.
+ .IP \[bu] 2
+-\f[I].deps.json\f[R] file that includes all of the dependencies of the project.
++A \f[I].deps.json\f[R] file that includes all of the dependencies of the project.
+ .IP \[bu] 2
+-\f[I].runtimeconfig.json\f[R] file that specifies the shared runtime that the application expects, as well as other configuration options for the runtime (for example, garbage collection type).
++A \f[I].runtimeconfig.json\f[R] file that specifies the shared runtime that the application expects, as well as other configuration options for the runtime (for example, garbage collection type).
+ .IP \[bu] 2
+ The application\[cq]s dependencies, which are copied from the NuGet cache into the output folder.
+ .PP
+ The \f[C]dotnet publish\f[R] command\[cq]s output is ready for deployment to a hosting system (for example, a server, PC, Mac, laptop) for execution.
+ It\[cq]s the only officially supported way to prepare the application for deployment.
+-Depending on the type of deployment that the project specifies, the hosting system may or may not have the .NET Core shared runtime installed on it.
+-For more information, see .NET Core Application Deployment.
+-For the directory structure of a published application, see Directory structure.
+-.PP
+-.SS Arguments
+-.PP
+-\f[C]PROJECT\f[R]
+-.PP
+-The project to publish.
+-It\[cq]s either the path and filename of a C#, F#, or Visual Basic project file, or the path to a directory that contains a C#, F#, or Visual Basic project file.
+-If not specified, it defaults to the current directory.
+-.SH OPTIONS
+-.SS .NET Core 2.1
+-.PP
+-\f[C]-c|--configuration {Debug|Release}\f[R]
+-.PP
+-Defines the build configuration.
+-The default value is \f[C]Debug\f[R].
+-.PP
+-\f[C]-f|--framework <FRAMEWORK>\f[R]
+-.PP
+-Publishes the application for the specified target framework.
+-You must specify the target framework in the project file.
++Depending on the type of deployment that the project specifies, the hosting system may or may not have the .NET shared runtime installed on it.
++For more information, see Publish .NET apps with the .NET CLI.
++.SS Implicit restore
+ .PP
+-\f[C]--force\f[R]
++You don\[cq]t have to run \f[C]dotnet restore\f[R] because it\[cq]s run implicitly by all commands that require a restore to occur, such as \f[C]dotnet new\f[R], \f[C]dotnet build\f[R], \f[C]dotnet run\f[R], \f[C]dotnet test\f[R], \f[C]dotnet publish\f[R], and \f[C]dotnet pack\f[R].
++To disable implicit restore, use the \f[C]--no-restore\f[R] option.
+ .PP
+-Forces all dependencies to be resolved even if the last restore was successful.
+-Specifying this flag is the same as deleting the \f[I]project.assets.json\f[R] file.
++The \f[C]dotnet restore\f[R] command is still useful in certain scenarios where explicitly restoring makes sense, such as continuous integration builds in Azure DevOps Services or in build systems that need to explicitly control when the restore occurs.
+ .PP
+-\f[C]-h|--help\f[R]
++For information about how to manage NuGet feeds, see the \f[C]dotnet restore\f[R] documentation.
++.SS MSBuild
+ .PP
+-Prints out a short help for the command.
++The \f[C]dotnet publish\f[R] command calls MSBuild, which invokes the \f[C]Publish\f[R] target.
++If the \f[C]IsPublishable\f[R] property is set to \f[C]false\f[R] for a particular project, the \f[C]Publish\f[R] target can\[cq]t be invoked, and the \f[C]dotnet publish\f[R] command only runs the implicit dotnet restore on the project.
+ .PP
+-\f[C]--manifest <PATH_TO_MANIFEST_FILE>\f[R]
++Any parameters passed to \f[C]dotnet publish\f[R] are passed to MSBuild.
++The \f[C]-c\f[R] and \f[C]-o\f[R] parameters map to MSBuild\[cq]s \f[C]Configuration\f[R] and \f[C]PublishDir\f[R] properties, respectively.
+ .PP
+-Specifies one or several target manifests to use to trim the set of packages published with the app.
+-The manifest file is part of the output of the \f[C]dotnet store\f[R] command.
+-To specify multiple manifests, add a \f[C]--manifest\f[R] option for each manifest.
+-This option is available starting with .NET Core 2.0 SDK.
+-.PP
+-\f[C]--no-build\f[R]
+-.PP
+-Doesn\[cq]t build the project before publishing.
+-It also implicitly sets the \f[C]--no-restore\f[R] flag.
++The \f[C]dotnet publish\f[R] command accepts MSBuild options, such as \f[C]-p\f[R] for setting properties and \f[C]-l\f[R] to define a logger.
++For example, you can set an MSBuild property by using the format: \f[C]-p:<NAME>=<VALUE>\f[R].
+ .PP
+-\f[C]--no-dependencies\f[R]
+-.PP
+-Ignores project-to-project references and only restores the root project.
++You can also set publish-related properties by referring to a \f[I].pubxml\f[R] file (available since .NET Core 3.1 SDK).
++For example:
++.IP
++.nf
++\f[C]
++dotnet publish -p:PublishProfile=FolderProfile
++\f[R]
++.fi
+ .PP
+-\f[C]--no-restore\f[R]
++The preceding example uses the \f[I]FolderProfile.pubxml\f[R] file that is found in the \f[I]<project_folder>/Properties/PublishProfiles\f[R] folder.
++If you specify a path and file extension when setting the \f[C]PublishProfile\f[R] property, they are ignored.
++MSBuild by default looks in the \f[I]Properties/PublishProfiles\f[R] folder and assumes the \f[I]pubxml\f[R] file extension.
++To specify the path and filename including extension, set the \f[C]PublishProfileFullPath\f[R] property instead of the \f[C]PublishProfile\f[R] property.
+ .PP
+-Doesn\[cq]t execute an implicit restore when running the command.
++The following MSBuild properties change the output of \f[C]dotnet publish\f[R].
++.IP \[bu] 2
++\f[C]PublishReadyToRun\f[R]
++.RS 2
+ .PP
+-\f[C]-o|--output <OUTPUT_DIRECTORY>\f[R]
++Compiles application assemblies as ReadyToRun (R2R) format.
++R2R is a form of ahead-of-time (AOT) compilation.
++For more information, see ReadyToRun images.
++Available since .NET Core 3.0 SDK.
+ .PP
+-Specifies the path for the output directory.
+-If not specified, it defaults to \f[I]./bin/[configuration]/[framework]/publish/\f[R] for a framework-dependent deployment or \f[I]./bin/[configuration]/[framework]/[runtime]/publish/\f[R] for a self-contained deployment.
+-If the path is relative, the output directory generated is relative to the project file location, not to the current working directory.
++To see warnings about missing dependencies that could cause runtime failures, use \f[C]PublishReadyToRunShowWarnings=true\f[R].
+ .PP
+-\f[C]--self-contained\f[R]
++We recommend that you specify \f[C]PublishReadyToRun\f[R] in a publish profile rather than on the command line.
++.RE
++.IP \[bu] 2
++\f[C]PublishSingleFile\f[R]
++.RS 2
+ .PP
+-Publishes the .NET Core runtime with your application so the runtime doesn\[cq]t need to be installed on the target machine.
+-If a runtime identifier is specified, its default value is \f[C]true\f[R].
+-For more information about the different deployment types, see .NET Core application deployment.
++Packages the app into a platform-specific single-file executable.
++For more information about single-file publishing, see the single-file bundler design document (https://github.com/dotnet/designs/blob/main/accepted/2020/single-file/des...).
++Available since .NET Core 3.0 SDK.
+ .PP
+-\f[C]-r|--runtime <RUNTIME_IDENTIFIER>\f[R]
++We recommend that you specify this option in the project file rather than on the command line.
++.RE
++.IP \[bu] 2
++\f[C]PublishTrimmed\f[R]
++.RS 2
+ .PP
+-Publishes the application for a given runtime.
+-This is used when creating a self-contained deployment (SCD).
+-For a list of Runtime Identifiers (RIDs), see the RID catalog.
+-Default is to publish a framework-dependent deployment (FDD).
++Trims unused libraries to reduce the deployment size of an app when publishing a self-contained executable.
++For more information, see Trim self-contained deployments and executables.
++Available since .NET Core 3.0 SDK as a preview feature.
+ .PP
+-\f[C]-v|--verbosity <LEVEL>\f[R]
++We recommend that you specify this option in the project file rather than on the command line.
++.RE
+ .PP
+-Sets the verbosity level of the command.
+-Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
+-.PP
+-\f[C]--version-suffix <VERSION_SUFFIX>\f[R]
++For more information, see the following resources:
++.IP \[bu] 2
++MSBuild command-line reference
++.IP \[bu] 2
++Visual Studio publish profiles (.pubxml) for ASP.NET Core app deployment
++.IP \[bu] 2
++dotnet msbuild
++.SS Workload manifest downloads
+ .PP
+-Defines the version suffix to replace the asterisk (\f[C]*\f[R]) in the version field of the project file.
+-.SS .NET Core 2.0
++When you run this command, it initiates an asynchronous background download of advertising manifests for workloads.
++If the download is still running when this command finishes, the download is stopped.
++For more information, see Advertising manifests.
++.SS Arguments
++.IP \[bu] 2
++\f[B]\f[CB]PROJECT|SOLUTION\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]-c|--configuration {Debug|Release}\f[R]
++The project or solution to publish.
++.IP \[bu] 2
++\f[C]PROJECT\f[R] is the path and filename of a C#, F#, or Visual Basic project file, or the path to a directory that contains a C#, F#, or Visual Basic project file.
++If the directory is not specified, it defaults to the current directory.
++.IP \[bu] 2
++\f[C]SOLUTION\f[R] is the path and filename of a solution file (\f[I].sln\f[R] extension), or the path to a directory that contains a solution file.
++If the directory is not specified, it defaults to the current directory.
++Available since .NET Core 3.0 SDK.
++.RE
++.SH OPTIONS
++.IP \[bu] 2
++\f[B]\f[CB]-a|--arch <ARCHITECTURE>\f[B]\f[R]
++.RS 2
++.PP
++Specifies the target architecture.
++This is a shorthand syntax for setting the Runtime Identifier (RID), where the provided value is combined with the default RID.
++For example, on a \f[C]win-x64\f[R] machine, specifying \f[C]--arch x86\f[R] sets the RID to \f[C]win-x86\f[R].
++If you use this option, don\[cq]t use the \f[C]-r|--runtime\f[R] option.
++Available since .NET 6 Preview 7.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-c|--configuration <CONFIGURATION>\f[B]\f[R]
++.RS 2
+ .PP
+ Defines the build configuration.
+-The default value is \f[C]Debug\f[R].
+-.PP
+-\f[C]-f|--framework <FRAMEWORK>\f[R]
++The default for most projects is \f[C]Debug\f[R], but you can override the build configuration settings in your project.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-f|--framework <FRAMEWORK>\f[B]\f[R]
++.RS 2
+ .PP
+ Publishes the application for the specified target framework.
+ You must specify the target framework in the project file.
+-.PP
+-\f[C]--force\f[R]
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--force\f[B]\f[R]
++.RS 2
+ .PP
+ Forces all dependencies to be resolved even if the last restore was successful.
+ Specifying this flag is the same as deleting the \f[I]project.assets.json\f[R] file.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]-h|--help\f[R]
+-.PP
+-Prints out a short help for the command.
++Prints out a description of how to use the command.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--interactive\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]--manifest <PATH_TO_MANIFEST_FILE>\f[R]
++Allows the command to stop and wait for user input or action.
++For example, to complete authentication.
++Available since .NET Core 3.0 SDK.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--manifest <PATH_TO_MANIFEST_FILE>\f[B]\f[R]
++.RS 2
+ .PP
+ Specifies one or several target manifests to use to trim the set of packages published with the app.
+ The manifest file is part of the output of the \f[C]dotnet store\f[R] command.
+ To specify multiple manifests, add a \f[C]--manifest\f[R] option for each manifest.
+-This option is available starting with .NET Core 2.0 SDK.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--no-build\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]--no-dependencies\f[R]
++Doesn\[cq]t build the project before publishing.
++It also implicitly sets the \f[C]--no-restore\f[R] flag.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--no-dependencies\f[B]\f[R]
++.RS 2
+ .PP
+ Ignores project-to-project references and only restores the root project.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--nologo\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]--no-restore\f[R]
++Doesn\[cq]t display the startup banner or the copyright message.
++Available since .NET Core 3.0 SDK.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--no-restore\f[B]\f[R]
++.RS 2
+ .PP
+ Doesn\[cq]t execute an implicit restore when running the command.
+-.PP
+-\f[C]-o|--output <OUTPUT_DIRECTORY>\f[R]
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-o|--output <OUTPUT_DIRECTORY>\f[B]\f[R]
++.RS 2
+ .PP
+ Specifies the path for the output directory.
+-If not specified, it defaults to \f[I]./bin/[configuration]/[framework]/publish/\f[R] for a framework-dependent deployment or \f[I]./bin/[configuration]/[framework]/[runtime]/publish/\f[R] for a self-contained deployment.
+-If the path is relative, the output directory generated is relative to the project file location, not to the current working directory.
+-.PP
+-\f[C]--self-contained\f[R]
+-.PP
+-Publishes the .NET Core runtime with your application so the runtime doesn\[cq]t need to be installed on the target machine.
+-If a runtime identifier is specified, its default value is \f[C]true\f[R].
+-For more information about the different deployment types, see .NET Core application deployment.
+ .PP
+-\f[C]-r|--runtime <RUNTIME_IDENTIFIER>\f[R]
++If not specified, it defaults to \f[I][project_file_folder]/bin/[configuration]/[framework]/publish/\f[R] for a framework-dependent executable and cross-platform binaries.
++It defaults to \f[I][project_file_folder]/bin/[configuration]/[framework]/[runtime]/publish/\f[R] for a self-contained executable.
+ .PP
+-Publishes the application for a given runtime.
+-This is used when creating a self-contained deployment (SCD).
+-For a list of Runtime Identifiers (RIDs), see the RID catalog.
+-Default is to publish a framework-dependent deployment (FDD).
+-.PP
+-\f[C]-v|--verbosity <LEVEL>\f[R]
+-.PP
+-Sets the verbosity level of the command.
+-Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
+-.PP
+-\f[C]--version-suffix <VERSION_SUFFIX>\f[R]
+-.PP
+-Defines the version suffix to replace the asterisk (\f[C]*\f[R]) in the version field of the project file.
+-.SS .NET Core 1.x
+-.PP
+-\f[C]-c|--configuration {Debug|Release}\f[R]
+-.PP
+-Defines the build configuration.
+-The default value is \f[C]Debug\f[R].
+-.PP
+-\f[C]-f|--framework <FRAMEWORK>\f[R]
+-.PP
+-Publishes the application for the specified target framework.
+-You must specify the target framework in the project file.
++In a web project, if the output folder is in the project folder, successive \f[C]dotnet publish\f[R] commands result in nested output folders.
++For example, if the project folder is \f[I]myproject\f[R], and the publish output folder is \f[I]myproject/publish\f[R], and you run \f[C]dotnet publish\f[R] twice, the second run puts content files such as \f[I].config\f[R] and \f[I].json\f[R] files in \f[I]myproject/publish/publish\f[R].
++To avoid nesting publish folders, specify a publish folder that is not \f[B]directly\f[R] under the project folder, or exclude the publish folder from the project.
++To exclude a publish folder named \f[I]publishoutput\f[R], add the following element to a \f[C]PropertyGroup\f[R] element in the \f[I].csproj\f[R] file:
++.IP
++.nf
++\f[C]
++<DefaultItemExcludes>$(DefaultItemExcludes);publishoutput**</DefaultItemExcludes>
++\f[R]
++.fi
++.IP \[bu] 2
++\&.NET Core 3.x SDK and later
++.RS 2
+ .PP
+-\f[C]-h|--help\f[R]
++If you specify a relative path when publishing a project, the generated output directory is relative to the current working directory, not to the project file location.
+ .PP
+-Prints out a short help for the command.
++If you specify a relative path when publishing a solution, all output for all projects goes into the specified folder relative to the current working directory.
++To make publish output go to separate folders for each project, specify a relative path by using the msbuild \f[C]PublishDir\f[R] property instead of the \f[C]--output\f[R] option.
++For example, \f[C]dotnet publish -p:PublishDir=.\[rs]publish\f[R] sends publish output for each project to a \f[C]publish\f[R] folder under the folder that contains the project file.
++.RE
++.IP \[bu] 2
++\&.NET Core 2.x SDK
++.RS 2
+ .PP
+-\f[C]--manifest <PATH_TO_MANIFEST_FILE>\f[R]
++If you specify a relative path when publishing a project, the generated output directory is relative to the project file location, not to the current working directory.
+ .PP
+-Specifies one or several target manifests to use to trim the set of packages published with the app.
+-The manifest file is part of the output of the \f[C]dotnet store\f[R] command.
+-To specify multiple manifests, add a \f[C]--manifest\f[R] option for each manifest.
+-This option is available starting with .NET Core 2.0 SDK.
++If you specify a relative path when publishing a solution, each project\[cq]s output goes into a separate folder relative to the project file location.
++If you specify an absolute path when publishing a solution, all publish output for all projects goes into the specified folder.
++.RE
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--os <OS>\f[B]\f[R]
++.RS 2
++.PP
++Specifies the target operating system (OS).
++This is a shorthand syntax for setting the Runtime Identifier (RID), where the provided value is combined with the default RID.
++For example, on a \f[C]win-x64\f[R] machine, specifying \f[C]--os os\f[R] sets the RID to \f[C]os-x64\f[R].
++If you use this option, don\[cq]t use the \f[C]-r|--runtime\f[R] option.
++Available since .NET 6 Preview 7.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--self-contained [true|false]\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]-o|--output <OUTPUT_DIRECTORY>\f[R]
++Publishes the .NET runtime with your application so the runtime doesn\[cq]t need to be installed on the target machine.
++Default is \f[C]true\f[R] if a runtime identifier is specified and the project is an executable project (not a library project).
++For more information, see .NET application publishing and Publish .NET apps with the .NET CLI.
+ .PP
+-Specifies the path for the output directory.
+-If not specified, it defaults to \f[I]./bin/[configuration]/[framework]/publish/\f[R] for a framework-dependent deployment or \f[I]./bin/[configuration]/[framework]/[runtime]/publish/\f[R] for a self-contained deployment.
+-If the path is relative, the output directory generated is relative to the project file location, not to the current working directory.
++If this option is used without specifying \f[C]true\f[R] or \f[C]false\f[R], the default is \f[C]true\f[R].
++In that case, don\[cq]t put the solution or project argument immediately after \f[C]--self-contained\f[R], because \f[C]true\f[R] or \f[C]false\f[R] is expected in that position.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--no-self-contained\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]-r|--runtime <RUNTIME_IDENTIFIER>\f[R]
++Equivalent to \f[C]--self-contained false\f[R].
++Available since .NET Core 3.0 SDK.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-r|--runtime <RUNTIME_IDENTIFIER>\f[B]\f[R]
++.RS 2
+ .PP
+ Publishes the application for a given runtime.
+-This is used when creating a self-contained deployment (SCD).
+ For a list of Runtime Identifiers (RIDs), see the RID catalog.
+-Default is to publish a framework-dependent deployment (FDD).
+-.PP
+-\f[C]-v|--verbosity <LEVEL>\f[R]
++For more information, see .NET application publishing and Publish .NET apps with the .NET CLI.
++If you use this option, use \f[C]--self-contained\f[R] or \f[C]--no-self-contained\f[R] also.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
++.RS 2
+ .PP
+ Sets the verbosity level of the command.
+ Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
+-.PP
+-\f[C]--version-suffix <VERSION_SUFFIX>\f[R]
++The default is \f[C]minimal\f[R].
++For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--version-suffix <VERSION_SUFFIX>\f[B]\f[R]
++.RS 2
+ .PP
+ Defines the version suffix to replace the asterisk (\f[C]*\f[R]) in the version field of the project file.
+-.PP
+- * * * * *
++.RE
+ .SH EXAMPLES
++.IP \[bu] 2
++Create a framework-dependent cross-platform binary for the project in the current directory:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet publish
++\f[R]
++.fi
+ .PP
+-Publish the project in the current directory:
+-.PP
+-\f[C]dotnet publish\f[R]
+-.PP
+-Publish the application using the specified project file:
+-.PP
+-\f[C]dotnet publish \[ti]/projects/app1/app1.csproj\f[R]
+-.PP
+-Publish the project in the current directory using the \f[C]netcoreapp1.1\f[R] framework:
+-.PP
+-\f[C]dotnet publish --framework netcoreapp1.1\f[R]
+-.PP
+-Publish the current application using the \f[C]netcoreapp1.1\f[R] framework and the runtime for \f[C]OS X 10.10\f[R] (you must list this RID in the project file).
+-.PP
+-\f[C]dotnet publish --framework netcoreapp1.1 --runtime osx.10.11-x64\f[R]
++Starting with .NET Core 3.0 SDK, this example also creates a framework-dependent executable for the current platform.
++.RE
++.IP \[bu] 2
++Create a self-contained executable for the project in the current directory, for a specific runtime:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet publish --runtime osx.10.11-x64
++\f[R]
++.fi
+ .PP
+-Publish the current application but don\[cq]t restore project-to-project (P2P) references, just the root project during the restore operation (.NET Core SDK 2.0 and later versions):
++The RID must be in the project file.
++.RE
++.IP \[bu] 2
++Create a framework-dependent executable for the project in the current directory, for a specific platform:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet publish --runtime osx.10.11-x64 --self-contained false
++\f[R]
++.fi
+ .PP
+-\f[C]dotnet publish --no-dependencies\f[R]
++The RID must be in the project file.
++This example applies to .NET Core 3.0 SDK and later versions.
++.RE
++.IP \[bu] 2
++Publish the project in the current directory, for a specific runtime and target framework:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet publish --framework netcoreapp3.1 --runtime osx.10.11-x64
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Publish the specified project file:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet publish \[ti]/projects/app1/app1.csproj
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Publish the current application but don\[cq]t restore project-to-project (P2P) references, just the root project during the restore operation:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet publish --no-dependencies
++\f[R]
++.fi
++.RE
+ .SS See also
+ .IP \[bu] 2
++\&.NET application publishing overview
++.IP \[bu] 2
++Publish .NET apps with the .NET CLI
++.IP \[bu] 2
+ Target frameworks
+ .IP \[bu] 2
+-Runtime IDentifier (RID) catalog
++Runtime Identifier (RID) catalog
++.IP \[bu] 2
++Working with macOS Catalina Notarization
++.IP \[bu] 2
++Directory structure of a published application
++.IP \[bu] 2
++MSBuild command-line reference
++.IP \[bu] 2
++Visual Studio publish profiles (.pubxml) for ASP.NET Core app deployment
++.IP \[bu] 2
++dotnet msbuild
++.IP \[bu] 2
++ILLInk.Tasks
+diff --git a/documentation/manpages/sdk/dotnet-remove-package.1 b/documentation/manpages/sdk/dotnet-remove-package.1
+index 8e49cbc581..1fa6097ee9 100644
+--- a/documentation/manpages/sdk/dotnet-remove-package.1
++++ b/documentation/manpages/sdk/dotnet-remove-package.1
+@@ -1,15 +1,22 @@
+-.\" Automatically generated by Pandoc 2.7.2
++.\" Automatically generated by Pandoc 2.14.1
+ .\"
+-.TH "dotnet remove package command" "1" "" "" ".NET Core"
++.TH "" "1" "" "" ".NET"
+ .hy
+ .SH dotnet remove package
+ .PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.x SDK and later versions
+ .SH NAME
+ .PP
+ \f[C]dotnet remove package\f[R] - Removes package reference from a project file.
+ .SH SYNOPSIS
+-.PP
+-\f[C]dotnet remove [<PROJECT>] package <PACKAGE_NAME> [-h|--help]\f[R]
++.IP
++.nf
++\f[C]
++dotnet remove [<PROJECT>] package <PACKAGE_NAME>
++
++dotnet remove package -h|--help
++\f[R]
++.fi
+ .SH DESCRIPTION
+ .PP
+ The \f[C]dotnet remove package\f[R] command provides a convenient option to remove a NuGet package reference from a project.
+@@ -24,12 +31,20 @@ If not specified, the command searches the current directory for one.
+ .PP
+ The package reference to remove.
+ .SH OPTIONS
++.IP \[bu] 2
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]-h|--help\f[R]
+-.PP
+-Prints out a short help for the command.
++Prints out a description of how to use the command.
++.RE
+ .SH EXAMPLES
+-.PP
+-Removes \f[C]Newtonsoft.Json\f[R] NuGet package from a project in the current directory:
+-.PP
+-\f[C]dotnet remove package Newtonsoft.Json\f[R]
++.IP \[bu] 2
++Remove \f[C]Newtonsoft.Json\f[R] NuGet package from a project in the current directory:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet remove package Newtonsoft.Json
++\f[R]
++.fi
++.RE
+diff --git a/documentation/manpages/sdk/dotnet-remove-reference.1 b/documentation/manpages/sdk/dotnet-remove-reference.1
+index 57a8c0cb17..f7b4688542 100644
+--- a/documentation/manpages/sdk/dotnet-remove-reference.1
++++ b/documentation/manpages/sdk/dotnet-remove-reference.1
+@@ -1,15 +1,23 @@
+-.\" Automatically generated by Pandoc 2.7.2
++.\" Automatically generated by Pandoc 2.14.1
+ .\"
+-.TH "dotnet remove reference command" "1" "" "" ".NET Core"
++.TH "" "1" "" "" ".NET"
+ .hy
+ .SH dotnet remove reference
+ .PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.x SDK and later versions
+ .SH NAME
+ .PP
+-\f[C]dotnet remove reference\f[R] - Removes project-to-project references.
++\f[C]dotnet remove reference\f[R] - Removes project-to-project (P2P) references.
+ .SH SYNOPSIS
+-.PP
+-\f[C]dotnet remove [<PROJECT>] reference [-f|--framework] <PROJECT_REFERENCES> [-h|--help]\f[R]
++.IP
++.nf
++\f[C]
++dotnet remove [<PROJECT>] reference [-f|--framework <FRAMEWORK>]
++ <PROJECT_REFERENCES>
++
++dotnet remove reference -h|--help
++\f[R]
++.fi
+ .SH DESCRIPTION
+ .PP
+ The \f[C]dotnet remove reference\f[R] command provides a convenient option to remove project references from a project.
+@@ -24,26 +32,48 @@ If not specified, the command searches the current directory for one.
+ .PP
+ Project-to-project (P2P) references to remove.
+ You can specify one or multiple projects.
+-Glob patterns are supported on Unix/Linux based terminals.
++Glob patterns (https://en.wikipedia.org/wiki/Glob_(programming)) are supported on Unix/Linux based terminals.
+ .SH OPTIONS
+-.PP
+-\f[C]-h|--help\f[R]
+-.PP
+-Prints out a short help for the command.
+-.PP
+-\f[C]-f|--framework <FRAMEWORK>\f[R]
+-.PP
+-Removes the reference only when targeting a specific framework.
++.IP \[bu] 2
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
++.RS 2
++.PP
++Prints out a description of how to use the command.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-f|--framework <FRAMEWORK>\f[B]\f[R]
++.RS 2
++.PP
++Removes the reference only when targeting a specific framework using the TFM format.
++.RE
+ .SH EXAMPLES
+-.PP
++.IP \[bu] 2
+ Remove a project reference from the specified project:
+-.PP
+-\f[C]dotnet remove app/app.csproj reference lib/lib.csproj\f[R]
+-.PP
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet remove app/app.csproj reference lib/lib.csproj
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
+ Remove multiple project references from the project in the current directory:
+-.PP
+-\f[C]dotnet remove reference lib1/lib1.csproj lib2/lib2.csproj\f[R]
+-.PP
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet remove reference lib1/lib1.csproj lib2/lib2.csproj
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
+ Remove multiple project references using a glob pattern on Unix/Linux:
+-.PP
+-\f[C]dotnet remove app/app.csproj reference **/*.csproj\f[R]
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet remove app/app.csproj reference **/*.csproj\[ga]
++\f[R]
++.fi
++.RE
+diff --git a/documentation/manpages/sdk/dotnet-restore.1 b/documentation/manpages/sdk/dotnet-restore.1
+index ed895eb096..f40f4cd0ba 100644
+--- a/documentation/manpages/sdk/dotnet-restore.1
++++ b/documentation/manpages/sdk/dotnet-restore.1
+@@ -1,48 +1,70 @@
+-.\" Automatically generated by Pandoc 2.7.2
++.\" Automatically generated by Pandoc 2.14.1
+ .\"
+-.TH "dotnet restore command" "1" "" "" ".NET Core"
++.TH "" "1" "" "" ".NET"
+ .hy
+ .SH dotnet restore
+ .PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.1 SDK and later versions
+ .SH NAME
+ .PP
+ \f[C]dotnet restore\f[R] - Restores the dependencies and tools of a project.
+ .SH SYNOPSIS
+-.SS .NET Core 2.x
+ .IP
+ .nf
+ \f[C]
+-dotnet restore [<ROOT>] [--configfile] [--disable-parallel] [--force] [--ignore-failed-sources] [--no-cache]
+- [--no-dependencies] [--packages] [-r|--runtime] [-s|--source] [-v|--verbosity] [--interactive]
+-dotnet restore [-h|--help]
++dotnet restore [<ROOT>] [--configfile <FILE>] [--disable-parallel]
++ [-f|--force] [--force-evaluate] [--ignore-failed-sources]
++ [--interactive] [--lock-file-path <LOCK_FILE_PATH>] [--locked-mode]
++ [--no-cache] [--no-dependencies] [--packages <PACKAGES_DIRECTORY>]
++ [-r|--runtime <RUNTIME_IDENTIFIER>] [-s|--source <SOURCE>]
++ [--use-lock-file] [-v|--verbosity <LEVEL>]
++
++dotnet restore -h|--help
+ \f[R]
+ .fi
+-.SS .NET Core 1.x
+-.IP
+-.nf
+-\f[C]
+-dotnet restore [<ROOT>] [--configfile] [--disable-parallel] [--ignore-failed-sources] [--no-cache]
+- [--no-dependencies] [--packages] [-r|--runtime] [-s|--source] [-v|--verbosity]
+-dotnet restore [-h|--help]
+-\f[R]
+-.fi
+-.PP
+- * * * * *
+ .SH DESCRIPTION
+ .PP
+ The \f[C]dotnet restore\f[R] command uses NuGet to restore dependencies as well as project-specific tools that are specified in the project file.
+-By default, the restoration of dependencies and tools are executed in parallel.
++In most cases, you don\[cq]t need to explicitly use the \f[C]dotnet restore\f[R] command, since a NuGet restore is run implicitly if necessary when you run the following commands:
++.IP \[bu] 2
++\f[C]dotnet new\f[R]
++.IP \[bu] 2
++\f[C]dotnet build\f[R]
++.IP \[bu] 2
++\f[C]dotnet build-server\f[R]
++.IP \[bu] 2
++\f[C]dotnet run\f[R]
++.IP \[bu] 2
++\f[C]dotnet test\f[R]
++.IP \[bu] 2
++\f[C]dotnet publish\f[R]
++.IP \[bu] 2
++\f[C]dotnet pack\f[R]
+ .PP
++Sometimes, it might be inconvenient to run the implicit NuGet restore with these commands.
++For example, some automated systems, such as build systems, need to call \f[C]dotnet restore\f[R] explicitly to control when the restore occurs so that they can control network usage.
++To prevent the implicit NuGet restore, you can use the \f[C]--no-restore\f[R] flag with any of these commands to disable implicit restore.
++.SS Specify feeds
+ .PP
+ To restore the dependencies, NuGet needs the feeds where the packages are located.
+ Feeds are usually provided via the \f[I]nuget.config\f[R] configuration file.
+-A default configuration file is provided when the CLI tools are installed.
+-You specify additional feeds by creating your own \f[I]nuget.config\f[R] file in the project directory.
+-You also specify additional feeds per invocation at a command prompt.
++A default configuration file is provided when the .NET SDK is installed.
++To specify additional feeds, do one of the following:
++.IP \[bu] 2
++Create your own \f[I]nuget.config\f[R] file in the project directory.
++For more information, see Common NuGet configurations and nuget.config differences later in this article.
++.IP \[bu] 2
++Use \f[C]dotnet nuget\f[R] commands such as \f[C]dotnet nuget add source\f[R].
++.PP
++You can override the \f[I]nuget.config\f[R] feeds with the \f[C]-s\f[R] option.
+ .PP
+-For dependencies, you specify where the restored packages are placed during the restore operation using the \f[C]--packages\f[R] argument.
++For information about how to use authenticated feeds, see Consuming packages from authenticated feeds.
++.SS Global packages folder
++.PP
++For dependencies, you can specify where the restored packages are placed during the restore operation using the \f[C]--packages\f[R] argument.
+ If not specified, the default NuGet package cache is used, which is found in the \f[C].nuget/packages\f[R] directory in the user\[cq]s home directory on all operating systems.
+-For example, \f[I]/home/user1\f[R] on Linux or \f[I]C:1\f[R] on Windows.
++For example, \f[I]/home/user1\f[R] on Linux or \f[I]C:\f[R] on Windows.
++.SS Project-specific tooling
+ .PP
+ For project-specific tooling, \f[C]dotnet restore\f[R] first restores the package in which the tool is packed, and then proceeds to restore the tool\[cq]s dependencies as specified in its project file.
+ .SS nuget.config differences
+@@ -57,176 +79,192 @@ There are three specific settings that \f[C]dotnet restore\f[R] ignores:
+ bindingRedirects
+ .RS 2
+ .PP
+-Binding redirects don\[cq]t work with \f[C]<PackageReference>\f[R] elements and .NET Core only supports \f[C]<PackageReference>\f[R] elements for NuGet packages.
++Binding redirects don\[cq]t work with \f[C]<PackageReference>\f[R] elements and .NET only supports \f[C]<PackageReference>\f[R] elements for NuGet packages.
+ .RE
+ .IP \[bu] 2
+ solution
+ .RS 2
+ .PP
+-This setting is Visual Studio specific and doesn\[cq]t apply to .NET Core.
+-\&.NET Core doesn\[cq]t use a \f[C]packages.config\f[R] file and instead uses \f[C]<PackageReference>\f[R] elements for NuGet packages.
++This setting is Visual Studio specific and doesn\[cq]t apply to .NET.
++\&.NET doesn\[cq]t use a \f[C]packages.config\f[R] file and instead uses \f[C]<PackageReference>\f[R] elements for NuGet packages.
+ .RE
+ .IP \[bu] 2
+ trustedSigners
+ .RS 2
+ .PP
+-This setting isn\[cq]t applicable as NuGet doesn\[cq]t yet support cross-platform verification of trusted packages.
++Support for cross-platform package signature verification was added in the .NET 5.0.100 SDK.
+ .RE
+-.SS Implicit \f[C]dotnet restore\f[R]
++.SS Workload manifest downloads
+ .PP
+-Starting with .NET Core 2.0, \f[C]dotnet restore\f[R] is run implicitly if necessary when you issue the following commands:
+-.IP \[bu] 2
+-\f[C]dotnet new\f[R]
+-.IP \[bu] 2
+-\f[C]dotnet build\f[R]
+-.IP \[bu] 2
+-\f[C]dotnet build-server\f[R]
+-.IP \[bu] 2
+-\f[C]dotnet run\f[R]
+-.IP \[bu] 2
+-\f[C]dotnet test\f[R]
+-.IP \[bu] 2
+-\f[C]dotnet publish\f[R]
+-.IP \[bu] 2
+-\f[C]dotnet pack\f[R]
+-.PP
+-In most cases, you no longer need to explicitly use the \f[C]dotnet restore\f[R] command.
+-.PP
+-Sometimes, it might be inconvenient to run \f[C]dotnet restore\f[R] implicitly.
+-For example, some automated systems, such as build systems, need to call \f[C]dotnet restore\f[R] explicitly to control when the restore occurs so that they can control network usage.
+-To prevent \f[C]dotnet restore\f[R] from running implicitly, you can use the \f[C]--no-restore\f[R] flag with any of these commands to disable implicit restore.
++When you run this command, it initiates an asynchronous background download of advertising manifests for workloads.
++If the download is still running when this command finishes, the download is stopped.
++For more information, see Advertising manifests.
+ .SS Arguments
+-.PP
+-\f[C]ROOT\f[R]
++.IP \[bu] 2
++\f[B]\f[CB]ROOT\f[B]\f[R]
++.RS 2
+ .PP
+ Optional path to the project file to restore.
++.RE
+ .SH OPTIONS
+-.SS .NET Core 2.x
+-.PP
+-\f[C]--configfile <FILE>\f[R]
+-.PP
+-The NuGet configuration file (\f[I]nuget.config\f[R]) to use for the restore operation.
++.IP \[bu] 2
++\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]--disable-parallel\f[R]
++The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
++If specified, only the settings from this file will be used.
++If not specified, the hierarchy of configuration files from the current directory will be used.
++For more information, see Common NuGet Configurations.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--disable-parallel\f[B]\f[R]
++.RS 2
+ .PP
+ Disables restoring multiple projects in parallel.
+-.PP
+-\f[C]--force\f[R]
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--force\f[B]\f[R]
++.RS 2
+ .PP
+ Forces all dependencies to be resolved even if the last restore was successful.
+ Specifying this flag is the same as deleting the \f[I]project.assets.json\f[R] file.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--force-evaluate\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]-h|--help\f[R]
+-.PP
+-Prints out a short help for the command.
++Forces restore to reevaluate all dependencies even if a lock file already exists.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]--ignore-failed-sources\f[R]
++Prints out a description of how to use the command.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--ignore-failed-sources\f[B]\f[R]
++.RS 2
+ .PP
+ Only warn about failed sources if there are packages meeting the version requirement.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--interactive\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]--no-cache\f[R]
+-.PP
+-Specifies to not cache packages and HTTP requests.
+-.PP
+-\f[C]--no-dependencies\f[R]
+-.PP
+-When restoring a project with project-to-project (P2P) references, restores the root project and not the references.
+-.PP
+-\f[C]--packages <PACKAGES_DIRECTORY>\f[R]
+-.PP
+-Specifies the directory for restored packages.
+-.PP
+-\f[C]-r|--runtime <RUNTIME_IDENTIFIER>\f[R]
+-.PP
+-Specifies a runtime for the package restore.
+-This is used to restore packages for runtimes not explicitly listed in the \f[C]<RuntimeIdentifiers>\f[R] tag in the \f[I].csproj\f[R] file.
+-For a list of Runtime Identifiers (RIDs), see the RID catalog.
+-Provide multiple RIDs by specifying this option multiple times.
+-.PP
+-\f[C]-s|--source <SOURCE>\f[R]
+-.PP
+-Specifies a NuGet package source to use during the restore operation.
+-This setting overrides all of the sources specified in the \f[I]nuget.config\f[R] files.
+-Multiple sources can be provided by specifying this option multiple times.
+-.PP
+-\f[C]--verbosity <LEVEL>\f[R]
+-.PP
+-Sets the verbosity level of the command.
+-Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
+-Default value is \f[C]minimal\f[R].
+-.PP
+-\f[C]--interactive\f[R]
+-.PP
+-Allows the command to stop and wait for user input or action (for example to complete authentication).
+-Since .NET Core 2.1.400.
+-.SS .NET Core 1.x
+-.PP
+-\f[C]--configfile <FILE>\f[R]
+-.PP
+-The NuGet configuration file (\f[I]nuget.config\f[R]) to use for the restore operation.
+-.PP
+-\f[C]--disable-parallel\f[R]
+-.PP
+-Disables restoring multiple projects in parallel.
+-.PP
+-\f[C]-h|--help\f[R]
+-.PP
+-Prints out a short help for the command.
+-.PP
+-\f[C]--ignore-failed-sources\f[R]
+-.PP
+-Only warn about failed sources if there are packages meeting the version requirement.
++Allows the command to stop and wait for user input or action.
++For example, to complete authentication.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--lock-file-path <LOCK_FILE_PATH>\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]--no-cache\f[R]
++Output location where project lock file is written.
++By default, this is \f[I]PROJECT_ROOT.lock.json\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--locked-mode\f[B]\f[R]
++.RS 2
+ .PP
+-Specifies to not cache packages and HTTP requests.
++Don\[cq]t allow updating project lock file.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--no-cache\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]--no-dependencies\f[R]
++Specifies to not cache HTTP requests.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--no-dependencies\f[B]\f[R]
++.RS 2
+ .PP
+ When restoring a project with project-to-project (P2P) references, restores the root project and not the references.
+-.PP
+-\f[C]--packages <PACKAGES_DIRECTORY>\f[R]
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--packages <PACKAGES_DIRECTORY>\f[B]\f[R]
++.RS 2
+ .PP
+ Specifies the directory for restored packages.
+-.PP
+-\f[C]-r|--runtime <RUNTIME_IDENTIFIER>\f[R]
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-r|--runtime <RUNTIME_IDENTIFIER>\f[B]\f[R]
++.RS 2
+ .PP
+ Specifies a runtime for the package restore.
+ This is used to restore packages for runtimes not explicitly listed in the \f[C]<RuntimeIdentifiers>\f[R] tag in the \f[I].csproj\f[R] file.
+ For a list of Runtime Identifiers (RIDs), see the RID catalog.
+ Provide multiple RIDs by specifying this option multiple times.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-s|--source <SOURCE>\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]-s|--source <SOURCE>\f[R]
+-.PP
+-Specifies a NuGet package source to use during the restore operation.
+-This overrides all of the sources specified in the \f[I]nuget.config\f[R] files, effectively reading the \f[I]nuget.config\f[R] file as if the \f[C]<packageSource>\f[R] element was not there.
++Specifies the URI of the NuGet package source to use during the restore operation.
++This setting overrides all of the sources specified in the \f[I]nuget.config\f[R] files.
+ Multiple sources can be provided by specifying this option multiple times.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--use-lock-file\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]--verbosity <LEVEL>\f[R]
++Enables project lock file to be generated and used with restore.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
++.RS 2
+ .PP
+ Sets the verbosity level of the command.
+ Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
+ The default is \f[C]minimal\f[R].
+-.PP
+- * * * * *
++For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
++.RE
+ .SH EXAMPLES
+-.PP
++.IP \[bu] 2
+ Restore dependencies and tools for the project in the current directory:
+-.PP
+-\f[C]dotnet restore\f[R]
+-.PP
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet restore
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
+ Restore dependencies and tools for the \f[C]app1\f[R] project found in the given path:
+-.PP
+-\f[C]dotnet restore \[ti]/projects/app1/app1.csproj\f[R]
+-.PP
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet restore ./projects/app1/app1.csproj
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
+ Restore the dependencies and tools for the project in the current directory using the file path provided as the source:
+-.PP
+-\f[C]dotnet restore -s c:\[rs]packages\[rs]mypackages\f[R]
+-.PP
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet restore -s c:\[rs]packages\[rs]mypackages
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
+ Restore the dependencies and tools for the project in the current directory using the two file paths provided as sources:
+-.PP
+-\f[C]dotnet restore -s c:\[rs]packages\[rs]mypackages -s c:\[rs]packages\[rs]myotherpackages\f[R]
+-.PP
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet restore -s c:\[rs]packages\[rs]mypackages -s c:\[rs]packages\[rs]myotherpackages
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
+ Restore dependencies and tools for the project in the current directory showing detailed output:
+-.PP
+-\f[C]dotnet restore --verbosity detailed\f[R]
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet restore --verbosity detailed
++\f[R]
++.fi
++.RE
+diff --git a/documentation/manpages/sdk/dotnet-run.1 b/documentation/manpages/sdk/dotnet-run.1
+index 6a27c5b83c..f1a42117ae 100644
+--- a/documentation/manpages/sdk/dotnet-run.1
++++ b/documentation/manpages/sdk/dotnet-run.1
+@@ -1,57 +1,37 @@
+-.\" Automatically generated by Pandoc 2.7.2
++.\" Automatically generated by Pandoc 2.14.1
+ .\"
+-.TH "dotnet run command" "1" "" "" ".NET Core"
++.TH "" "1" "" "" ".NET"
+ .hy
+ .SH dotnet run
+ .PP
+-\f[B]This article applies to: \[OK]\f[R] .NET Core 1.x SDK and later versions
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.x SDK and later versions
+ .SH NAME
+ .PP
+ \f[C]dotnet run\f[R] - Runs source code without any explicit compile or launch commands.
+ .SH SYNOPSIS
+-.SS .NET Core 3.0
+ .IP
+ .nf
+ \f[C]
+-dotnet run [-c|--configuration] [-f|--framework] [--force] [--interactive] [--launch-profile] [--no-build] [--no-dependencies]
+- [--no-launch-profile] [--no-restore] [-p|--project] [-r|--runtime] [-v|--verbosity] [[--] [application arguments]]
+-dotnet run [-h|--help]
++dotnet run [-a|--arch <ARCHITECTURE>] [-c|--configuration <CONFIGURATION>]
++ [-f|--framework <FRAMEWORK>] [--force] [--interactive]
++ [--launch-profile <NAME>] [--no-build]
++ [--no-dependencies] [--no-launch-profile] [--no-restore]
++ [--os <OS>] [--project <PATH>] [-r|--runtime <RUNTIME_IDENTIFIER>]
++ [-v|--verbosity <LEVEL>] [[--] [application arguments]]
++
++dotnet run -h|--help
+ \f[R]
+ .fi
+-.SS .NET Core 2.1
+-.IP
+-.nf
+-\f[C]
+-dotnet run [-c|--configuration] [-f|--framework] [--force] [--launch-profile] [--no-build] [--no-dependencies]
+- [--no-launch-profile] [--no-restore] [-p|--project] [--runtime] [-v|--verbosity] [[--] [application arguments]]
+-dotnet run [-h|--help]
+-\f[R]
+-.fi
+-.SS .NET Core 2.0
+-.IP
+-.nf
+-\f[C]
+-dotnet run [-c|--configuration] [-f|--framework] [--force] [--launch-profile] [--no-build] [--no-dependencies]
+- [--no-launch-profile] [--no-restore] [-p|--project] [--runtime] [[--] [application arguments]]
+-dotnet run [-h|--help]
+-\f[R]
+-.fi
+-.SS .NET Core 1.x
+-.IP
+-.nf
+-\f[C]
+-dotnet run [-c|--configuration] [-f|--framework] [-p|--project] [[--] [application arguments]]
+-dotnet run [-h|--help]
+-\f[R]
+-.fi
+-.PP
+- * * * * *
+ .SH DESCRIPTION
+ .PP
+ The \f[C]dotnet run\f[R] command provides a convenient option to run your application from the source code with one command.
+ It\[cq]s useful for fast iterative development from the command line.
+ The command depends on the \f[C]dotnet build\f[R] command to build the code.
+ Any requirements for the build, such as that the project must be restored first, apply to \f[C]dotnet run\f[R] as well.
++.RS
++.PP
++[!NOTE] \f[C]dotnet run\f[R] doesn\[cq]t respect arguments like \f[C]/property:property=value\f[R], which are respected by \f[C]dotnet build\f[R].
++.RE
+ .PP
+ Output files are written into the default location, which is \f[C]bin/<configuration>/<target>\f[R].
+ For example if you have a \f[C]netcoreapp2.1\f[R] application and you run \f[C]dotnet run\f[R], the output is placed in \f[C]bin/Debug/netcoreapp2.1\f[R].
+@@ -70,248 +50,227 @@ dotnet myapp.dll
+ \f[R]
+ .fi
+ .PP
+-For more information on the \f[C]dotnet\f[R] driver, see the .NET Core Command Line Tools (CLI) topic.
++For more information on the \f[C]dotnet\f[R] driver, see the .NET Command Line Tools (CLI) topic.
+ .PP
+ To run the application, the \f[C]dotnet run\f[R] command resolves the dependencies of the application that are outside of the shared runtime from the NuGet cache.
+ Because it uses cached dependencies, it\[cq]s not recommended to use \f[C]dotnet run\f[R] to run applications in production.
+ Instead, create a deployment using the \f[C]dotnet publish\f[R] command and deploy the published output.
++.SS Implicit restore
+ .PP
+-.SH OPTIONS
+-.SS .NET Core 3.0
+-.PP
+-\f[C]--\f[R]
+-.PP
+-Delimits arguments to \f[C]dotnet run\f[R] from arguments for the application being run.
+-All arguments after this delimiter are passed to the application run.
+-.PP
+-\f[C]-c|--configuration {Debug|Release}\f[R]
+-.PP
+-Defines the build configuration.
+-The default value for most projects is \f[C]Debug\f[R].
+-.PP
+-\f[C]-f|--framework <FRAMEWORK>\f[R]
+-.PP
+-Builds and runs the app using the specified framework.
+-The framework must be specified in the project file.
+-.PP
+-\f[C]--force\f[R]
+-.PP
+-Forces all dependencies to be resolved even if the last restore was successful.
+-Specifying this flag is the same as deleting the \f[I]project.assets.json\f[R] file.
+-.PP
+-\f[C]-h|--help\f[R]
+-.PP
+-Prints out a short help for the command.
+-.PP
+-\f[C]--interactive\f[R]
+-.PP
+-Allows the command to stop and wait for user input or action (for example, to complete authentication).
+-.PP
+-\f[C]--launch-profile <NAME>\f[R]
+-.PP
+-The name of the launch profile (if any) to use when launching the application.
+-Launch profiles are defined in the \f[I]launchSettings.json\f[R] file and are typically called \f[C]Development\f[R], \f[C]Staging\f[R], and \f[C]Production\f[R].
+-For more information, see Working with multiple environments.
+-.PP
+-\f[C]--no-build\f[R]
+-.PP
+-Doesn\[cq]t build the project before running.
+-It also implicit sets the \f[C]--no-restore\f[R] flag.
+-.PP
+-\f[C]--no-dependencies\f[R]
+-.PP
+-When restoring a project with project-to-project (P2P) references, restores the root project and not the references.
+-.PP
+-\f[C]--no-launch-profile\f[R]
+-.PP
+-Doesn\[cq]t try to use \f[I]launchSettings.json\f[R] to configure the application.
+-.PP
+-\f[C]--no-restore\f[R]
+-.PP
+-Doesn\[cq]t execute an implicit restore when running the command.
+-.PP
+-\f[C]-p|--project <PATH>\f[R]
++You don\[cq]t have to run \f[C]dotnet restore\f[R] because it\[cq]s run implicitly by all commands that require a restore to occur, such as \f[C]dotnet new\f[R], \f[C]dotnet build\f[R], \f[C]dotnet run\f[R], \f[C]dotnet test\f[R], \f[C]dotnet publish\f[R], and \f[C]dotnet pack\f[R].
++To disable implicit restore, use the \f[C]--no-restore\f[R] option.
+ .PP
+-Specifies the path of the project file to run (folder name or full path).
+-If not specified, it defaults to the current directory.
+-.PP
+-\f[C]--runtime <RUNTIME_IDENTIFIER>\f[R]
+-.PP
+-Specifies the target runtime to restore packages for.
+-For a list of Runtime Identifiers (RIDs), see the RID catalog.
++The \f[C]dotnet restore\f[R] command is still useful in certain scenarios where explicitly restoring makes sense, such as continuous integration builds in Azure DevOps Services or in build systems that need to explicitly control when the restore occurs.
+ .PP
+-\f[C]-v|--verbosity <LEVEL>\f[R]
++For information about how to manage NuGet feeds, see the \f[C]dotnet restore\f[R] documentation.
+ .PP
+-Sets the verbosity level of the command.
+-Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
+-.SS .NET Core 2.1
++This command supports the \f[C]dotnet restore\f[R] options when passed in the long form (for example, \f[C]--source\f[R]).
++Short form options, such as \f[C]-s\f[R], are not supported.
++.SS Workload manifest downloads
+ .PP
+-\f[C]--\f[R]
++When you run this command, it initiates an asynchronous background download of advertising manifests for workloads.
++If the download is still running when this command finishes, the download is stopped.
++For more information, see Advertising manifests.
++.SH OPTIONS
++.IP \[bu] 2
++\f[B]\f[CB]--\f[B]\f[R]
++.RS 2
+ .PP
+ Delimits arguments to \f[C]dotnet run\f[R] from arguments for the application being run.
+ All arguments after this delimiter are passed to the application run.
+-.PP
+-\f[C]-c|--configuration {Debug|Release}\f[R]
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-a|--arch <ARCHITECTURE>\f[B]\f[R]
++.RS 2
++.PP
++Specifies the target architecture.
++This is a shorthand syntax for setting the Runtime Identifier (RID), where the provided value is combined with the default RID.
++For example, on a \f[C]win-x64\f[R] machine, specifying \f[C]--arch x86\f[R] sets the RID to \f[C]win-x86\f[R].
++If you use this option, don\[cq]t use the \f[C]-r|--runtime\f[R] option.
++Available since .NET 6 Preview 7.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-c|--configuration <CONFIGURATION>\f[B]\f[R]
++.RS 2
+ .PP
+ Defines the build configuration.
+-The default value for most projects is \f[C]Debug\f[R].
+-.PP
+-\f[C]-f|--framework <FRAMEWORK>\f[R]
++The default for most projects is \f[C]Debug\f[R], but you can override the build configuration settings in your project.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-f|--framework <FRAMEWORK>\f[B]\f[R]
++.RS 2
+ .PP
+ Builds and runs the app using the specified framework.
+ The framework must be specified in the project file.
+-.PP
+-\f[C]--force\f[R]
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--force\f[B]\f[R]
++.RS 2
+ .PP
+ Forces all dependencies to be resolved even if the last restore was successful.
+ Specifying this flag is the same as deleting the \f[I]project.assets.json\f[R] file.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]-h|--help\f[R]
+-.PP
+-Prints out a short help for the command.
++Prints out a description of how to use the command.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--interactive\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]--launch-profile <NAME>\f[R]
++Allows the command to stop and wait for user input or action.
++For example, to complete authentication.
++Available since .NET Core 3.0 SDK.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--launch-profile <NAME>\f[B]\f[R]
++.RS 2
+ .PP
+ The name of the launch profile (if any) to use when launching the application.
+ Launch profiles are defined in the \f[I]launchSettings.json\f[R] file and are typically called \f[C]Development\f[R], \f[C]Staging\f[R], and \f[C]Production\f[R].
+ For more information, see Working with multiple environments.
+-.PP
+-\f[C]--no-build\f[R]
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--no-build\f[B]\f[R]
++.RS 2
+ .PP
+ Doesn\[cq]t build the project before running.
+ It also implicit sets the \f[C]--no-restore\f[R] flag.
+-.PP
+-\f[C]--no-dependencies\f[R]
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--no-dependencies\f[B]\f[R]
++.RS 2
+ .PP
+ When restoring a project with project-to-project (P2P) references, restores the root project and not the references.
+-.PP
+-\f[C]--no-launch-profile\f[R]
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--no-launch-profile\f[B]\f[R]
++.RS 2
+ .PP
+ Doesn\[cq]t try to use \f[I]launchSettings.json\f[R] to configure the application.
+-.PP
+-\f[C]--no-restore\f[R]
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--no-restore\f[B]\f[R]
++.RS 2
+ .PP
+ Doesn\[cq]t execute an implicit restore when running the command.
+-.PP
+-\f[C]-p|--project <PATH>\f[R]
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--os <OS>\f[B]\f[R]
++.RS 2
++.PP
++Specifies the target operating system (OS).
++This is a shorthand syntax for setting the Runtime Identifier (RID), where the provided value is combined with the default RID.
++For example, on a \f[C]win-x64\f[R] machine, specifying \f[C]--os os\f[R] sets the RID to \f[C]os-x64\f[R].
++If you use this option, don\[cq]t use the \f[C]-r|--runtime\f[R] option.
++Available since .NET 6 Preview 7.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--project <PATH>\f[B]\f[R]
++.RS 2
+ .PP
+ Specifies the path of the project file to run (folder name or full path).
+ If not specified, it defaults to the current directory.
+ .PP
+-\f[C]--runtime <RUNTIME_IDENTIFIER>\f[R]
+-.PP
+-Specifies the target runtime to restore packages for.
+-For a list of Runtime Identifiers (RIDs), see the RID catalog.
+-.PP
+-\f[C]-v|--verbosity <LEVEL>\f[R]
+-.PP
+-Sets the verbosity level of the command.
+-Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
+-.SS .NET Core 2.0
+-.PP
+-\f[C]--\f[R]
+-.PP
+-Delimits arguments to \f[C]dotnet run\f[R] from arguments for the application being run.
+-All arguments after this delimiter are passed to the application run.
+-.PP
+-\f[C]-c|--configuration {Debug|Release}\f[R]
+-.PP
+-Defines the build configuration.
+-The default for most projects value is \f[C]Debug\f[R].
+-.PP
+-\f[C]-f|--framework <FRAMEWORK>\f[R]
+-.PP
+-Builds and runs the app using the specified framework.
+-The framework must be specified in the project file.
+-.PP
+-\f[C]--force\f[R]
+-.PP
+-Forces all dependencies to be resolved even if the last restore was successful.
+-Specifying this flag is the same as deleting the \f[I]project.assets.json\f[R] file.
+-.PP
+-\f[C]-h|--help\f[R]
+-.PP
+-Prints out a short help for the command.
+-.PP
+-\f[C]--launch-profile <NAME>\f[R]
+-.PP
+-The name of the launch profile (if any) to use when launching the application.
+-Launch profiles are defined in the \f[I]launchSettings.json\f[R] file and are typically called \f[C]Development\f[R], \f[C]Staging\f[R], and \f[C]Production\f[R].
+-For more information, see Working with multiple environments.
+-.PP
+-\f[C]--no-build\f[R]
+-.PP
+-Doesn\[cq]t build the project before running.
+-It also implicit sets the \f[C]--no-restore\f[R] flag.
+-.PP
+-\f[C]--no-dependencies\f[R]
+-.PP
+-When restoring a project with project-to-project (P2P) references, restores the root project and not the references.
+-.PP
+-\f[C]--no-launch-profile\f[R]
+-.PP
+-Doesn\[cq]t try to use \f[I]launchSettings.json\f[R] to configure the application.
+-.PP
+-\f[C]--no-restore\f[R]
+-.PP
+-Doesn\[cq]t execute an implicit restore when running the command.
++The \f[C]-p\f[R] abbreviation for \f[C]--project\f[R] is deprecated starting in .NET 6 Preview SDK.
++For a limited time starting in .NET 6 RC1 SDK, \f[C]-p\f[R] can still be used for \f[C]--project\f[R] despite the deprecation warning.
++If the argument provided for the option doesn\[cq]t contain \f[C]=\f[R], the command accepts \f[C]-p\f[R] as short for \f[C]--project\f[R].
++Otherwise, the command assumes that \f[C]-p\f[R] is short for \f[C]--property\f[R].
++This flexible use of \f[C]-p\f[R] for \f[C]--project\f[R] will be phased out in .NET 7.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--property:<NAME>=<VALUE>\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]-p|--project <PATH>\f[R]
++Sets one or more MSBuild properties.
++Specify multiple properties delimited by semicolons or by repeating the option:
++.IP
++.nf
++\f[C]
++--property:<NAME1>=<VALUE1>;<NAME2>=<VALUE2>
++--property:<NAME1>=<VALUE1> --property:<NAME2>=<VALUE2>
++\f[R]
++.fi
+ .PP
+-Specifies the path of the project file to run (folder name or full path).
+-If not specified, it defaults to the current directory.
++The short form \f[C]-p\f[R] can be used for \f[C]--property\f[R].
++If the argument provided for the option contains \f[C]=\f[R], \f[C]-p\f[R] is accepted as short for \f[C]--property\f[R].
++Otherwise, the command assumes that \f[C]-p\f[R] is short for \f[C]--project\f[R].
+ .PP
+-\f[C]--runtime <RUNTIME_IDENTIFIER>\f[R]
++To pass \f[C]--property\f[R] to the application rather than set an MSBuild property, provide the option after the \f[C]--\f[R] syntax separator, for example:
++.IP
++.nf
++\f[C]
++dotnet run -- --property name=value
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-r|--runtime <RUNTIME_IDENTIFIER>\f[B]\f[R]
++.RS 2
+ .PP
+ Specifies the target runtime to restore packages for.
+ For a list of Runtime Identifiers (RIDs), see the RID catalog.
+-.SS .NET Core 1.x
+-.PP
+-\f[C]--\f[R]
+-.PP
+-Delimits arguments to \f[C]dotnet run\f[R] from arguments for the application being run.
+-All arguments after this delimiter are passed to the application run.
+-.PP
+-\f[C]-c|--configuration {Debug|Release}\f[R]
+-.PP
+-Defines the build configuration.
+-The default value for most projects is \f[C]Debug\f[R].
+-.PP
+-\f[C]-f|--framework <FRAMEWORK>\f[R]
+-.PP
+-Builds and runs the app using the specified framework.
+-The framework must be specified in the project file.
+-.PP
+-\f[C]-h|--help\f[R]
+-.PP
+-Prints out a short help for the command.
+-.PP
+-\f[C]-p|--project <PATH/PROJECT.csproj>\f[R]
+-.PP
+-Specifies the path and name of the project file.
+-(See the NOTE.) If not specified, it defaults to the current directory.
+-.RS
+-.PP
+-[!NOTE] Use the path and name of the project file with the \f[C]-p|--project\f[R] option.
+-A regression in the CLI prevents providing a folder path with .NET Core SDK 1.x.
+-For more information about this issue, see dotnet run -p, can not start a project (dotnet/cli #5992).
++\f[C]-r\f[R] short option available since .NET Core 3.0 SDK.
+ .RE
++.IP \[bu] 2
++\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
++.RS 2
+ .PP
+- * * * * *
++Sets the verbosity level of the command.
++Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
++The default is \f[C]minimal\f[R].
++For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
++.RE
+ .SH EXAMPLES
+-.PP
++.IP \[bu] 2
+ Run the project in the current directory:
+-.PP
+-\f[C]dotnet run\f[R]
+-.PP
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet run
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
+ Run the specified project:
+-.PP
+-\f[C]dotnet run --project ./projects/proj1/proj1.csproj\f[R]
+-.PP
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet run --project ./projects/proj1/proj1.csproj
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Run the project in the current directory, specifying Release configuration:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet run --property:Configuration=Release
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
+ Run the project in the current directory (the \f[C]--help\f[R] argument in this example is passed to the application, since the blank \f[C]--\f[R] option is used):
+-.PP
+-\f[C]dotnet run --configuration Release -- --help\f[R]
+-.PP
+-Restore dependencies and tools for the project in the current directory only showing minimal output and then run the project: (.NET Core SDK 2.0 and later versions):
+-.PP
+-\f[C]dotnet run --verbosity m\f[R]
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet run --configuration Release -- --help
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Restore dependencies and tools for the project in the current directory only showing minimal output and then run the project:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet run --verbosity m
++\f[R]
++.fi
++.RE
+diff --git a/documentation/manpages/sdk/dotnet-sdk-check.1 b/documentation/manpages/sdk/dotnet-sdk-check.1
+new file mode 100644
+index 0000000000..b1371b2804
+--- /dev/null
++++ b/documentation/manpages/sdk/dotnet-sdk-check.1
+@@ -0,0 +1,76 @@
++.\" Automatically generated by Pandoc 2.14.1
++.\"
++.TH "" "1" "" "" ".NET"
++.hy
++.SH dotnet sdk check
++.PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET 6 (preview) and later versions
++.SH NAME
++.PP
++\f[C]dotnet sdk check\f[R] - Lists the latest available version of the .NET SDK and .NET Runtime, for each feature band.
++.SH SYNOPSIS
++.IP
++.nf
++\f[C]
++dotnet sdk check
++
++dotnet sdk check -h|--help
++\f[R]
++.fi
++.SH DESCRIPTION
++.PP
++The \f[C]dotnet sdk check\f[R] command makes it easier to track when new versions of the SDK and Runtimes are available.
++Within each feature band it tells you:
++.IP \[bu] 2
++The latest available version of the .NET SDK and .NET Runtime.
++.IP \[bu] 2
++Whether your installed versions are up-to-date or out of support.
++.PP
++Here\[cq]s an example of output from the command:
++.IP
++.nf
++\f[C]
++\&.NET SDKs:
++Version Status
++-----------------------------------------------------------
++2.1.816 Up to date.
++2.2.401 .NET 2.2 is out of support.
++3.1.410 Up to date.
++5.0.204 Up to date.
++5.0.301 Up to date.
++
++\&.NET Runtimes:
++Name Version Status
++-------------------------------------------------------------------------------------------
++Microsoft.AspNetCore.All 2.1.28 Up to date.
++Microsoft.AspNetCore.App 2.1.28 Up to date.
++Microsoft.NETCore.App 2.1.28 Up to date.
++Microsoft.AspNetCore.All 2.2.6 .NET 2.2 is out of support.
++Microsoft.AspNetCore.App 2.2.6 .NET 2.2 is out of support.
++Microsoft.NETCore.App 2.2.6 .NET 2.2 is out of support.
++Microsoft.AspNetCore.App 3.1.16 Up to date.
++Microsoft.NETCore.App 3.1.16 Up to date.
++Microsoft.WindowsDesktop.App 3.1.16 Up to date.
++Microsoft.AspNetCore.App 5.0.7 Up to date.
++Microsoft.NETCore.App 5.0.7 Up to date.
++Microsoft.WindowsDesktop.App 5.0.7 Up to date.
++\f[R]
++.fi
++.SH OPTIONS
++.IP \[bu] 2
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
++.RS 2
++.PP
++Prints out a description of how to use the command.
++.RE
++.SH EXAMPLES
++.IP \[bu] 2
++Show up-to-date status of installed .NET SDKs and .NET Runtimes.
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet sdk check
++\f[R]
++.fi
++.RE
+diff --git a/documentation/manpages/sdk/dotnet-sln.1 b/documentation/manpages/sdk/dotnet-sln.1
+index 43479d67a9..72e4fafacf 100644
+--- a/documentation/manpages/sdk/dotnet-sln.1
++++ b/documentation/manpages/sdk/dotnet-sln.1
+@@ -1,26 +1,28 @@
+-.\" Automatically generated by Pandoc 2.7.2
++.\" Automatically generated by Pandoc 2.14.1
+ .\"
+-.TH "dotnet sln command" "1" "" "" ".NET Core"
++.TH "" "1" "" "" ".NET"
+ .hy
+ .SH dotnet sln
+ .PP
+-\f[B]This article applies to: \[OK]\f[R] .NET Core 1.x SDK and later versions
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.x SDK and later versions
+ .SH NAME
+ .PP
+-\f[C]dotnet sln\f[R] - Modifies a .NET Core solution file.
++\f[C]dotnet sln\f[R] - Lists or modifies the projects in a .NET solution file.
+ .SH SYNOPSIS
+ .IP
+ .nf
+ \f[C]
+-dotnet sln [<SOLUTION_FILE>] [command] [-h|--help]
++dotnet sln [<SOLUTION_FILE>] [command]
++
++dotnet sln [command] -h|--help
+ \f[R]
+ .fi
+ .SH DESCRIPTION
+ .PP
+-The \f[C]dotnet sln\f[R] command provides a convenient way to add, remove, and list projects in a solution file.
++The \f[C]dotnet sln\f[R] command provides a convenient way to list and modify projects in a solution file.
+ .PP
+ To use the \f[C]dotnet sln\f[R] command, the solution file must already exist.
+-If you need to create one, use the dotnet new command, like in the following example:
++If you need to create one, use the dotnet new command, as in the following example:
+ .IP
+ .nf
+ \f[C]
+@@ -33,25 +35,51 @@ dotnet new sln
+ .RS 2
+ .PP
+ The solution file to use.
+-If not specified, the command searches the current directory for one.
+-If there are multiple solution files in the directory, one must be specified.
++If this argument is omitted, the command searches the current directory for one.
++If it finds no solution file or multiple solution files, the command fails.
+ .RE
+ .SH OPTIONS
+ .IP \[bu] 2
+-\f[B]\f[CB]-h|--help\f[B]\f[R]
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
+ .RS 2
+ .PP
+-Prints out a short help for the command.
++Prints out a description of how to use the command.
+ .RE
+ .SS Commands
++.SS \f[C]list\f[R]
++.PP
++Lists all projects in a solution file.
++.SH SYNOPSIS
++.IP
++.nf
++\f[C]
++dotnet sln list [-h|--help]
++\f[R]
++.fi
++.SS Arguments
++.IP \[bu] 2
++\f[B]\f[CB]SOLUTION_FILE\f[B]\f[R]
++.RS 2
++.PP
++The solution file to use.
++If this argument is omitted, the command searches the current directory for one.
++If it finds no solution file or multiple solution files, the command fails.
++.RE
++.SH OPTIONS
++.IP \[bu] 2
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
++.RS 2
++.PP
++Prints out a description of how to use the command.
++.RE
+ .SS \f[C]add\f[R]
+ .PP
+-Adds a project or multiple projects to the solution file.
++Adds one or more projects to the solution file.
+ .SH SYNOPSIS
+ .IP
+ .nf
+ \f[C]
+-dotnet sln [<SOLUTION_FILE>] add [--in-root] [-s|--solution-folder] <PROJECT_PATH>
++dotnet sln [<SOLUTION_FILE>] add [--in-root] [-s|--solution-folder <PATH>] <PROJECT_PATH> [<PROJECT_PATH>...]
+ dotnet sln add [-h|--help]
+ \f[R]
+ .fi
+@@ -61,36 +89,49 @@ dotnet sln add [-h|--help]
+ .RS 2
+ .PP
+ The solution file to use.
+-If not specified, the command searches the current directory for one.
+-If there are multiple solution files in the directory, one must be specified.
++If it is unspecified, the command searches the current directory for one and fails if there are multiple solution files.
+ .RE
+ .IP \[bu] 2
+ \f[B]\f[CB]PROJECT_PATH\f[B]\f[R]
+ .RS 2
+ .PP
+-The path to the project to add to the solution.
+-Add multiple projects by adding one after the other separated by spaces.
+-Unix/Linux shell globbing pattern expansions are processed correctly by the \f[C]dotnet sln\f[R] command.
++The path to the project or projects to add to the solution.
++Unix/Linux shell globbing pattern (https://en.wikipedia.org/wiki/Glob_(programming)) expansions are processed correctly by the \f[C]dotnet sln\f[R] command.
++.PP
++If \f[C]PROJECT_PATH\f[R] includes folders that contain the project folder, that portion of the path is used to create solution folders.
++For example, the following commands create a solution with \f[C]myapp\f[R] in solution folder \f[C]folder1/folder2\f[R]:
++.IP
++.nf
++\f[C]
++dotnet new sln
++dotnet new console --output folder1/folder2/myapp
++dotnet sln add folder1/folder2/myapp
++\f[R]
++.fi
++.PP
++You can override this default behavior by using the \f[C]--in-root\f[R] or the \f[C]-s|--solution-folder <PATH>\f[R] option.
+ .RE
+ .SH OPTIONS
+ .IP \[bu] 2
+-\f[B]\f[CB]-h|--help\f[B]\f[R]
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
+ .RS 2
+ .PP
+-Prints out a short help for the command.
++Prints out a description of how to use the command.
+ .RE
+ .IP \[bu] 2
+ \f[B]\f[CB]--in-root\f[B]\f[R]
+ .RS 2
+ .PP
+ Places the projects in the root of the solution, rather than creating a solution folder.
++Can\[cq]t be used with \f[C]-s|--solution-folder\f[R].
+ Available since .NET Core 3.0 SDK.
+ .RE
+ .IP \[bu] 2
+-\f[B]\f[CB]-s|--solution-folder\f[B]\f[R]
++\f[B]\f[CB]-s|--solution-folder <PATH>\f[B]\f[R]
+ .RS 2
+ .PP
+ The destination solution folder path to add the projects to.
++Can\[cq]t be used with \f[C]--in-root\f[R].
+ Available since .NET Core 3.0 SDK.
+ .RE
+ .SS \f[C]remove\f[R]
+@@ -100,7 +141,7 @@ Removes a project or multiple projects from the solution file.
+ .IP
+ .nf
+ \f[C]
+-dotnet sln [<SOLUTION_FILE>] remove <PROJECT_PATH>
++dotnet sln [<SOLUTION_FILE>] remove <PROJECT_PATH> [<PROJECT_PATH>...]
+ dotnet sln [<SOLUTION_FILE>] remove [-h|--help]
+ \f[R]
+ .fi
+@@ -110,96 +151,144 @@ dotnet sln [<SOLUTION_FILE>] remove [-h|--help]
+ .RS 2
+ .PP
+ The solution file to use.
+-If not specified, the command searches the current directory for one.
+-If there are multiple solution files in the directory, one must be specified.
++If is left unspecified, the command searches the current directory for one and fails if there are multiple solution files.
+ .RE
+ .IP \[bu] 2
+ \f[B]\f[CB]PROJECT_PATH\f[B]\f[R]
+ .RS 2
+ .PP
+-The path to the project to remove from the solution.
+-Remove multiple projects by adding one after the other separated by spaces.
+-Unix/Linux shell globbing pattern expansions are processed correctly by the \f[C]dotnet sln\f[R] command.
++The path to the project or projects to remove from the solution.
++Unix/Linux shell globbing pattern (https://en.wikipedia.org/wiki/Glob_(programming)) expansions are processed correctly by the \f[C]dotnet sln\f[R] command.
+ .RE
+ .SH OPTIONS
+ .IP \[bu] 2
+-\f[B]\f[CB]-h|--help\f[B]\f[R]
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
+ .RS 2
+ .PP
+-Prints out a short help for the command.
++Prints out a description of how to use the command.
+ .RE
+-.SS \f[C]list\f[R]
+-.PP
+-Lists all projects in a solution file.
+-.SH SYNOPSIS
++.SH EXAMPLES
++.IP \[bu] 2
++List the projects in a solution:
++.RS 2
+ .IP
+ .nf
+ \f[C]
+-dotnet sln list [-h|--help]
++dotnet sln todo.sln list
+ \f[R]
+ .fi
+-.SS Arguments
++.RE
+ .IP \[bu] 2
+-\f[B]\f[CB]SOLUTION_FILE\f[B]\f[R]
++Add a C# project to a solution:
+ .RS 2
+-.PP
+-The solution file to use.
+-If not specified, the command searches the current directory for one.
+-If there are multiple solution files in the directory, one must be specified.
++.IP
++.nf
++\f[C]
++dotnet sln add todo-app/todo-app.csproj
++\f[R]
++.fi
+ .RE
+-.SH OPTIONS
+ .IP \[bu] 2
+-\f[B]\f[CB]-h|--help\f[B]\f[R]
++Remove a C# project from a solution:
+ .RS 2
+-.PP
+-Prints out a short help for the command.
+-.RE
+-.SH EXAMPLES
+-.PP
+-Add a C# project to a solution:
+ .IP
+ .nf
+ \f[C]
+-dotnet sln todo.sln add todo-app/todo-app.csproj
++dotnet sln remove todo-app/todo-app.csproj
+ \f[R]
+ .fi
+-.PP
+-Remove a C# project from a solution:
++.RE
++.IP \[bu] 2
++Add multiple C# projects to the root of a solution:
++.RS 2
+ .IP
+ .nf
+ \f[C]
+-dotnet sln todo.sln remove todo-app/todo-app.csproj
++dotnet sln todo.sln add todo-app/todo-app.csproj back-end/back-end.csproj --in-root
+ \f[R]
+ .fi
+-.PP
++.RE
++.IP \[bu] 2
+ Add multiple C# projects to a solution:
++.RS 2
+ .IP
+ .nf
+ \f[C]
+ dotnet sln todo.sln add todo-app/todo-app.csproj back-end/back-end.csproj
+ \f[R]
+ .fi
+-.PP
++.RE
++.IP \[bu] 2
+ Remove multiple C# projects from a solution:
++.RS 2
+ .IP
+ .nf
+ \f[C]
+ dotnet sln todo.sln remove todo-app/todo-app.csproj back-end/back-end.csproj
+ \f[R]
+ .fi
+-.PP
++.RE
++.IP \[bu] 2
+ Add multiple C# projects to a solution using a globbing pattern (Unix/Linux only):
++.RS 2
+ .IP
+ .nf
+ \f[C]
+ dotnet sln todo.sln add **/*.csproj
+ \f[R]
+ .fi
+-.PP
++.RE
++.IP \[bu] 2
++Add multiple C# projects to a solution using a globbing pattern (Windows PowerShell only):
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet sln todo.sln add (ls -r **/*.csproj)
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
+ Remove multiple C# projects from a solution using a globbing pattern (Unix/Linux only):
++.RS 2
+ .IP
+ .nf
+ \f[C]
+ dotnet sln todo.sln remove **/*.csproj
+ \f[R]
+ .fi
++.RE
++.IP \[bu] 2
++Remove multiple C# projects from a solution using a globbing pattern (Windows PowerShell only):
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet sln todo.sln remove (ls -r **/*.csproj)
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Create a solution, a console app, and two class libraries.
++Add the projects to the solution, and use the \f[C]--solution-folder\f[R] option of \f[C]dotnet sln\f[R] to organize the class libraries into a solution folder.
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet new sln -n mysolution
++dotnet new console -o myapp
++dotnet new classlib -o mylib1
++dotnet new classlib -o mylib2
++dotnet sln mysolution.sln add myapp\[rs]myapp.csproj
++dotnet sln mysolution.sln add mylib1\[rs]mylib1.csproj --solution-folder mylibs
++dotnet sln mysolution.sln add mylib2\[rs]mylib2.csproj --solution-folder mylibs
++\f[R]
++.fi
++.PP
++The following screenshot shows the result in Visual Studio 2019 \f[B]Solution Explorer\f[R]:
++.PP
++:::image type=\[lq]content\[rq] source=\[lq]media/dotnet-sln/dotnet-sln-solution-folder.png\[rq] alt-text=\[lq]Solution Explorer showing class library projects grouped into a solution folder.\[rq]:::
++.RE
++.SS See also
++.IP \[bu] 2
++dotnet/sdk GitHub repo (https://github.com/dotnet/sdk) (.NET CLI source)
+diff --git a/documentation/manpages/sdk/dotnet-store.1 b/documentation/manpages/sdk/dotnet-store.1
+index fae60ac05c..896ce7573d 100644
+--- a/documentation/manpages/sdk/dotnet-store.1
++++ b/documentation/manpages/sdk/dotnet-store.1
+@@ -1,82 +1,125 @@
+-.\" Automatically generated by Pandoc 2.7.2
++.\" Automatically generated by Pandoc 2.14.1
+ .\"
+-.TH "dotnet store command" "1" "" "" ".NET Core"
++.TH "" "1" "" "" ".NET"
+ .hy
+ .SH dotnet store
+ .PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.x SDK and later versions
+ .SH NAME
+ .PP
+ \f[C]dotnet store\f[R] - Stores the specified assemblies in the runtime package store.
+ .SH SYNOPSIS
+-.PP
+-\f[C]dotnet store -m|--manifest -f|--framework -r|--runtime [--framework-version] [-h|--help] [--output] [--skip-optimization] [--skip-symbols] [-v|--verbosity] [--working-dir]\f[R]
++.IP
++.nf
++\f[C]
++dotnet store -m|--manifest <PATH_TO_MANIFEST_FILE>
++ -f|--framework <FRAMEWORK_VERSION> -r|--runtime <RUNTIME_IDENTIFIER>
++ [--framework-version <FRAMEWORK_VERSION>] [--output <OUTPUT_DIRECTORY>]
++ [--skip-optimization] [--skip-symbols] [-v|--verbosity <LEVEL>]
++ [--working-dir <WORKING_DIRECTORY>]
++
++dotnet store -h|--help
++\f[R]
++.fi
+ .SH DESCRIPTION
+ .PP
+ \f[C]dotnet store\f[R] stores the specified assemblies in the runtime package store.
+ By default, assemblies are optimized for the target runtime and framework.
+ For more information, see the runtime package store topic.
+ .SS Required options
+-.PP
+-\f[C]-f|--framework <FRAMEWORK>\f[R]
++.IP \[bu] 2
++\f[B]\f[CB]-f|--framework <FRAMEWORK>\f[B]\f[R]
++.RS 2
+ .PP
+ Specifies the target framework.
+-.PP
+-\f[C]-m|--manifest <PATH_TO_MANIFEST_FILE>\f[R]
++The target framework has to be specified in the project file.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-m|--manifest <PATH_TO_MANIFEST_FILE>\f[B]\f[R]
++.RS 2
+ .PP
+ The \f[I]package store manifest file\f[R] is an XML file that contains the list of packages to store.
+ The format of the manifest file is compatible with the SDK-style project format.
+ So, a project file that references the desired packages can be used with the \f[C]-m|--manifest\f[R] option to store assemblies in the runtime package store.
+ To specify multiple manifest files, repeat the option and path for each file.
+ For example: \f[C]--manifest packages1.csproj --manifest packages2.csproj\f[R].
+-.PP
+-\f[C]-r|--runtime <RUNTIME_IDENTIFIER>\f[R]
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-r|--runtime <RUNTIME_IDENTIFIER>\f[B]\f[R]
++.RS 2
+ .PP
+ The runtime identifier to target.
++.RE
+ .SS Optional options
++.IP \[bu] 2
++\f[B]\f[CB]--framework-version <FRAMEWORK_VERSION>\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]--framework-version <FRAMEWORK_VERSION>\f[R]
+-.PP
+-Specifies the .NET Core SDK version.
++Specifies the .NET SDK version.
+ This option enables you to select a specific framework version beyond the framework specified by the \f[C]-f|--framework\f[R] option.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]-h|--help\f[R]
+-.PP
+-Shows help information.
+-.PP
+-\f[C]-o|--output <OUTPUT_DIRECTORY>\f[R]
++Prints out a description of how to use the command.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-o|--output <OUTPUT_DIRECTORY>\f[B]\f[R]
++.RS 2
+ .PP
+ Specifies the path to the runtime package store.
+-If not specified, it defaults to the \f[I]store\f[R] subdirectory of the user profile .NET Core installation directory.
+-.PP
+-\f[C]--skip-optimization\f[R]
++If not specified, it defaults to the \f[I]store\f[R] subdirectory of the user profile .NET installation directory.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--skip-optimization\f[B]\f[R]
++.RS 2
+ .PP
+ Skips the optimization phase.
+-.PP
+-\f[C]--skip-symbols\f[R]
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--skip-symbols\f[B]\f[R]
++.RS 2
+ .PP
+ Skips symbol generation.
+ Currently, you can only generate symbols on Windows and Linux.
+-.PP
+-\f[C]-v|--verbosity <LEVEL>\f[R]
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
++.RS 2
+ .PP
+ Sets the verbosity level of the command.
+ Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
+-.PP
+-\f[C]-w|--working-dir <INTERMEDIATE_WORKING_DIRECTORY>\f[R]
++For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-w|--working-dir <WORKING_DIRECTORY>\f[B]\f[R]
++.RS 2
+ .PP
+ The working directory used by the command.
+ If not specified, it uses the \f[I]obj\f[R] subdirectory of the current directory.
++.RE
+ .SH EXAMPLES
+-.PP
++.IP \[bu] 2
+ Store the packages specified in the \f[I]packages.csproj\f[R] project file for .NET Core 2.0.0:
+-.PP
+-\f[C]dotnet store --manifest packages.csproj --framework-version 2.0.0\f[R]
+-.PP
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet store --manifest packages.csproj --framework-version 2.0.0
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
+ Store the packages specified in the \f[I]packages.csproj\f[R] without optimization:
+-.PP
+-\f[C]dotnet store --manifest packages.csproj --skip-optimization\f[R]
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet store --manifest packages.csproj --skip-optimization
++\f[R]
++.fi
++.RE
+ .SS See also
+ .IP \[bu] 2
+ Runtime package store
+-.SH AUTHORS
+-bleroy.
+diff --git a/documentation/manpages/sdk/dotnet-test.1 b/documentation/manpages/sdk/dotnet-test.1
+index e3ef50e5b0..f75e6d445d 100644
+--- a/documentation/manpages/sdk/dotnet-test.1
++++ b/documentation/manpages/sdk/dotnet-test.1
+@@ -1,287 +1,408 @@
+-.\"t
+-.\" Automatically generated by Pandoc 2.7.2
++'\" t
++.\" Automatically generated by Pandoc 2.14.1
+ .\"
+-.TH "dotnet test command" "1" "" "" ".NET Core"
++.TH "" "1" "" "" ".NET"
+ .hy
+ .SH dotnet test
+ .PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.1 SDK and later versions
+ .SH NAME
+ .PP
+ \f[C]dotnet test\f[R] - .NET test driver used to execute unit tests.
+ .SH SYNOPSIS
+-.SS .NET Core 2.1
+ .IP
+ .nf
+ \f[C]
+-dotnet test [<PROJECT>] [-a|--test-adapter-path] [--blame] [-c|--configuration] [--collect] [-d|--diag] [-f|--framework] [--filter]
+- [-l|--logger] [--no-build] [--no-restore] [-o|--output] [-r|--results-directory] [-s|--settings] [-t|--list-tests]
+- [-v|--verbosity] [-- <RunSettings arguments>]
++dotnet test [<PROJECT> | <SOLUTION> | <DIRECTORY> | <DLL>]
++ [-a|--test-adapter-path <ADAPTER_PATH>] [--arch <ARCHITECTURE>]
++ [--blame] [--blame-crash]
++ [--blame-crash-dump-type <DUMP_TYPE>] [--blame-crash-collect-always]
++ [--blame-hang] [--blame-hang-dump-type <DUMP_TYPE>]
++ [--blame-hang-timeout <TIMESPAN>]
++ [-c|--configuration <CONFIGURATION>]
++ [--collect <DATA_COLLECTOR_NAME>]
++ [-d|--diag <LOG_FILE>] [-f|--framework <FRAMEWORK>]
++ [--filter <EXPRESSION>] [--interactive]
++ [-l|--logger <LOGGER>] [--no-build]
++ [--nologo] [--no-restore] [-o|--output <OUTPUT_DIRECTORY>] [--os <OS>]
++ [-r|--results-directory <RESULTS_DIR>] [--runtime <RUNTIME_IDENTIFIER>]
++ [-s|--settings <SETTINGS_FILE>] [-t|--list-tests]
++ [-v|--verbosity <LEVEL>] [[--] <RunSettings arguments>]
+
+-dotnet test [-h|--help]
++dotnet test -h|--help
+ \f[R]
+ .fi
+-.SS .NET Core 2.0
+-.IP
+-.nf
+-\f[C]
+-dotnet test [<PROJECT>] [-a|--test-adapter-path] [-c|--configuration] [--collect] [-d|--diag] [-f|--framework] [--filter]
+- [-l|--logger] [--no-build] [--no-restore] [-o|--output] [-r|--results-directory] [-s|--settings] [-t|--list-tests] [-v|--verbosity]
+-
+-dotnet test [-h|--help]
+-\f[R]
+-.fi
+-.SS .NET Core 1.x
+-.IP
+-.nf
+-\f[C]
+-dotnet test [<PROJECT>] [-a|--test-adapter-path] [-c|--configuration] [-d|--diag] [-f|--framework] [--filter] [-l|--logger] [--no-build] [-o|--output] [-s|--settings] [-t|--list-tests] [-v|--verbosity]
+-
+-dotnet test [-h|--help]
+-\f[R]
+-.fi
+-.PP
+- * * * * *
+ .SH DESCRIPTION
+ .PP
+-The \f[C]dotnet test\f[R] command is used to execute unit tests in a given project.
+-The \f[C]dotnet test\f[R] command launches the test runner console application specified for a project.
+-The test runner executes the tests defined for a unit test framework (for example, MSTest, NUnit, or xUnit) and reports the success or failure of each test.
++The \f[C]dotnet test\f[R] command is used to execute unit tests in a given solution.
++The \f[C]dotnet test\f[R] command builds the solution and runs a test host application for each test project in the solution.
++The test host executes tests in the given project using a test framework, for example: MSTest, NUnit, or xUnit, and reports the success or failure of each test.
+ If all tests are successful, the test runner returns 0 as an exit code; otherwise if any test fails, it returns 1.
+-The test runner and the unit test library are packaged as NuGet packages and are restored as ordinary dependencies for the project.
++.PP
++For multi-targeted projects, tests are run for each targeted framework.
++The test host and the unit test framework are packaged as NuGet packages and are restored as ordinary dependencies for the project.
+ .PP
+ Test projects specify the test runner using an ordinary \f[C]<PackageReference>\f[R] element, as seen in the following sample project file:
+ .PP
+ [!code-xmlXUnit Basic Template]
+-.SS Arguments
+-.PP
+-\f[C]PROJECT\f[R]
+-.PP
+-Path to the test project.
+-If not specified, it defaults to current directory.
+-.SH OPTIONS
+-.SS .NET Core 2.1
+-.PP
+-\f[C]-a|--test-adapter-path <PATH_TO_ADAPTER>\f[R]
+-.PP
+-Use the custom test adapters from the specified path in the test run.
+-.PP
+-\f[C]--blame\f[R]
+-.PP
+-Runs the tests in blame mode.
+-This option is helpful in isolating the problematic tests causing test host to crash.
+-It creates an output file in the current directory as \f[I]Sequence.xml\f[R] that captures the order of tests execution before the crash.
+-.PP
+-\f[C]-c|--configuration {Debug|Release}\f[R]
+-.PP
+-Defines the build configuration.
+-The default value is \f[C]Debug\f[R], but your project\[cq]s configuration could override this default SDK setting.
+ .PP
+-\f[C]--collect <DATA_COLLECTOR_FRIENDLY_NAME>\f[R]
++Where \f[C]Microsoft.NET.Test.Sdk\f[R] is the test host, \f[C]xunit\f[R] is the test framework.
++And \f[C]xunit.runner.visualstudio\f[R] is a test adapter, which allows the xUnit framework to work with the test host.
++.SS Implicit restore
+ .PP
+-Enables data collector for the test run.
+-For more information, see Monitor and analyze test run.
+-.PP
+-\f[C]-d|--diag <PATH_TO_DIAGNOSTICS_FILE>\f[R]
+-.PP
+-Enables diagnostic mode for the test platform and write diagnostic messages to the specified file.
+-.PP
+-\f[C]-f|--framework <FRAMEWORK>\f[R]
+-.PP
+-Looks for test binaries for a specific framework.
+-.PP
+-\f[C]--filter <EXPRESSION>\f[R]
+-.PP
+-Filters out tests in the current project using the given expression.
+-For more information, see the Filter option details section.
+-For more information and examples on how to use selective unit test filtering, see Running selective unit tests.
+-.PP
+-\f[C]-h|--help\f[R]
+-.PP
+-Prints out a short help for the command.
+-.PP
+-\f[C]-l|--logger <LoggerUri/FriendlyName>\f[R]
++You don\[cq]t have to run \f[C]dotnet restore\f[R] because it\[cq]s run implicitly by all commands that require a restore to occur, such as \f[C]dotnet new\f[R], \f[C]dotnet build\f[R], \f[C]dotnet run\f[R], \f[C]dotnet test\f[R], \f[C]dotnet publish\f[R], and \f[C]dotnet pack\f[R].
++To disable implicit restore, use the \f[C]--no-restore\f[R] option.
+ .PP
+-Specifies a logger for test results.
+-.PP
+-\f[C]--no-build\f[R]
+-.PP
+-Doesn\[cq]t build the test project before running it.
+-It also implicit sets the \f[C]--no-restore\f[R] flag.
+-.PP
+-\f[C]--no-restore\f[R]
+-.PP
+-Doesn\[cq]t execute an implicit restore when running the command.
+-.PP
+-\f[C]-o|--output <OUTPUT_DIRECTORY>\f[R]
+-.PP
+-Directory in which to find the binaries to run.
+-.PP
+-\f[C]-r|--results-directory <PATH>\f[R]
+-.PP
+-The directory where the test results are going to be placed.
+-If the specified directory doesn\[cq]t exist, it\[cq]s created.
++The \f[C]dotnet restore\f[R] command is still useful in certain scenarios where explicitly restoring makes sense, such as continuous integration builds in Azure DevOps Services or in build systems that need to explicitly control when the restore occurs.
+ .PP
+-\f[C]-s|--settings <SETTINGS_FILE>\f[R]
++For information about how to manage NuGet feeds, see the \f[C]dotnet restore\f[R] documentation.
++.SS Workload manifest downloads
+ .PP
+-The \f[C].runsettings\f[R] file to use for running the tests.
+-Configure unit tests by using a \f[C].runsettings\f[R] file.
++When you run this command, it initiates an asynchronous background download of advertising manifests for workloads.
++If the download is still running when this command finishes, the download is stopped.
++For more information, see Advertising manifests.
++.SS Arguments
++.IP \[bu] 2
++\f[B]\f[CB]PROJECT | SOLUTION | DIRECTORY | DLL\f[B]\f[R]
++.RS 2
++.IP \[bu] 2
++Path to the test project.
++.IP \[bu] 2
++Path to the solution.
++.IP \[bu] 2
++Path to a directory that contains a project or a solution.
++.IP \[bu] 2
++Path to a test project \f[I].dll\f[R] file.
+ .PP
+-\f[C]-t|--list-tests\f[R]
++If not specified, it searches for a project or a solution in the current directory.
++.RE
++.SH OPTIONS
++.IP \[bu] 2
++\f[B]\f[CB]-a|--test-adapter-path <ADAPTER_PATH>\f[B]\f[R]
++.RS 2
+ .PP
+-List all of the discovered tests in the current project.
++Path to a directory to be searched for additional test adapters.
++Only \f[I].dll\f[R] files with suffix \f[C].TestAdapter.dll\f[R] are inspected.
++If not specified, the directory of the test \f[I].dll\f[R] is searched.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--arch <ARCHITECTURE>\f[B]\f[R]
++.RS 2
++.PP
++Specifies the target architecture.
++This is a shorthand syntax for setting the Runtime Identifier (RID), where the provided value is combined with the default RID.
++For example, on a \f[C]win-x64\f[R] machine, specifying \f[C]--arch x86\f[R] sets the RID to \f[C]win-x86\f[R].
++If you use this option, don\[cq]t use the \f[C]-r|--runtime\f[R] option.
++Available since .NET 6 Preview 7.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--blame\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]-v|--verbosity <LEVEL>\f[R]
++Runs the tests in blame mode.
++This option is helpful in isolating problematic tests that cause the test host to crash.
++When a crash is detected, it creates a sequence file in \f[C]TestResults/<Guid>/<Guid>_Sequence.xml\f[R] that captures the order of tests that were run before the crash.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--blame-crash\f[B]\f[R] (Available since .NET 5.0 preview SDK)
++.RS 2
+ .PP
+-Sets the verbosity level of the command.
+-Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
++Runs the tests in blame mode and collects a crash dump when the test host exits unexpectedly.
++This option depends on the version of .NET used, the type of error, and the operating system.
+ .PP
+-\f[C]RunSettings arguments\f[R]
++For exceptions in managed code, a dump will be automatically collected on .NET 5.0 and later versions.
++It will generate a dump for testhost or any child process that also ran on .NET 5.0 and crashed.
++Crashes in native code will not generate a dump.
++This option works on Windows, macOS, and Linux.
+ .PP
+-Arguments passed as RunSettings configurations for the test.
+-Arguments are specified as \f[C][name]=[value]\f[R] pairs after \[lq]\[en]\[rq] (note the space after \[en]).
+-A space is used to separate multiple \f[C][name]=[value]\f[R] pairs.
++Crash dumps in native code, or when using .NET Core 3.1 or earlier versions, can only be collected on Windows, by using Procdump.
++A directory that contains \f[I]procdump.exe\f[R] and \f[I]procdump64.exe\f[R] must be in the PATH or PROCDUMP_PATH environment variable.
++Download the tools.
++Implies \f[C]--blame\f[R].
+ .PP
+-Example: \f[C]dotnet test -- MSTest.DeploymentEnabled=false MSTest.MapInconclusiveToFailed=True\f[R]
++To collect a crash dump from a native application running on .NET 5.0 or later, the usage of Procdump can be forced by setting the \f[C]VSTEST_DUMP_FORCEPROCDUMP\f[R] environment variable to \f[C]1\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--blame-crash-dump-type <DUMP_TYPE>\f[B]\f[R] (Available since .NET 5.0 preview SDK)
++.RS 2
+ .PP
+-For more information about RunSettings, see vstest.console.exe: Passing RunSettings args.
+-.SS .NET Core 2.0
++The type of crash dump to be collected.
++Implies \f[C]--blame-crash\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--blame-crash-collect-always\f[B]\f[R] (Available since .NET 5.0 preview SDK)
++.RS 2
+ .PP
+-\f[C]-a|--test-adapter-path <PATH_TO_ADAPTER>\f[R]
++Collects a crash dump on expected as well as unexpected test host exit.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--blame-hang\f[B]\f[R] (Available since .NET 5.0 preview SDK)
++.RS 2
+ .PP
+-Use the custom test adapters from the specified path in the test run.
++Run the tests in blame mode and collects a hang dump when a test exceeds the given timeout.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--blame-hang-dump-type <DUMP_TYPE>\f[B]\f[R] (Available since .NET 5.0 preview SDK)
++.RS 2
++.PP
++The type of crash dump to be collected.
++It should be \f[C]full\f[R], \f[C]mini\f[R], or \f[C]none\f[R].
++When \f[C]none\f[R] is specified, test host is terminated on timeout, but no dump is collected.
++Implies \f[C]--blame-hang\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--blame-hang-timeout <TIMESPAN>\f[B]\f[R] (Available since .NET 5.0 preview SDK)
++.RS 2
+ .PP
+-\f[C]-c|--configuration {Debug|Release}\f[R]
++Per-test timeout, after which a hang dump is triggered and the test host process and all of its child processes are dumped and terminated.
++The timeout value is specified in one of the following formats:
++.IP \[bu] 2
++1.5h, 1.5hour, 1.5hours
++.IP \[bu] 2
++90m, 90min, 90minute, 90minutes
++.IP \[bu] 2
++5400s, 5400sec, 5400second, 5400seconds
++.IP \[bu] 2
++5400000ms, 5400000mil, 5400000millisecond, 5400000milliseconds
++.PP
++When no unit is used (for example, 5400000), the value is assumed to be in milliseconds.
++When used together with data driven tests, the timeout behavior depends on the test adapter used.
++For xUnit and NUnit the timeout is renewed after every test case.
++For MSTest, the timeout is used for all test cases.
++This option is supported on Windows with netcoreapp2.1 and later, on Linux with netcoreapp3.1 and later, and on macOS with net5.0 or later.
++Implies \f[C]--blame\f[R] and \f[C]--blame-hang\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-c|--configuration <CONFIGURATION>\f[B]\f[R]
++.RS 2
+ .PP
+ Defines the build configuration.
+-The default value is \f[C]Debug\f[R], but your project\[cq]s configuration could override this default SDK setting.
+-.PP
+-\f[C]--collect <DATA_COLLECTOR_FRIENDLY_NAME>\f[R]
++The default for most projects is \f[C]Debug\f[R], but you can override the build configuration settings in your project.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--collect <DATA_COLLECTOR_NAME>\f[B]\f[R]
++.RS 2
+ .PP
+ Enables data collector for the test run.
+-For more information, see Monitor and analyze test run.
+-.PP
+-\f[C]-d|--diag <PATH_TO_DIAGNOSTICS_FILE>\f[R]
+-.PP
+-Enables diagnostic mode for the test platform and write diagnostic messages to the specified file.
++For more information, see Monitor and analyze test run (https://aka.ms/vstest-collect).
+ .PP
+-\f[C]-f|--framework <FRAMEWORK>\f[R]
++To collect code coverage on any platform that is supported by .NET Core, install Coverlet (https://github.com/coverlet-coverage/coverlet/blob/master/README.md) and use the \f[C]--collect:\[dq]XPlat Code Coverage\[dq]\f[R] option.
+ .PP
+-Looks for test binaries for a specific framework.
++On Windows, you can collect code coverage by using the \f[C]--collect \[dq]Code Coverage\[dq]\f[R] option.
++This option generates a \f[I].coverage\f[R] file, which can be opened in Visual Studio 2019 Enterprise.
++For more information, see Use code coverage and Customize code coverage analysis.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-d|--diag <LOG_FILE>\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]--filter <EXPRESSION>\f[R]
++Enables diagnostic mode for the test platform and writes diagnostic messages to the specified file and to files next to it.
++The process that is logging the messages determines which files are created, such as \f[C]*.host_<date>.txt\f[R] for test host log, and \f[C]*.datacollector_<date>.txt\f[R] for data collector log.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-f|--framework <FRAMEWORK>\f[B]\f[R]
++.RS 2
++.PP
++Forces the use of \f[C]dotnet\f[R] or .NET Framework test host for the test binaries.
++This option only determines which type of host to use.
++The actual framework version to be used is determined by the \f[I]runtimeconfig.json\f[R] of the test project.
++When not specified, the TargetFramework assembly attribute is used to determine the type of host.
++When that attribute is stripped from the \f[I].dll\f[R], the .NET Framework host is used.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--filter <EXPRESSION>\f[B]\f[R]
++.RS 2
+ .PP
+ Filters out tests in the current project using the given expression.
+ For more information, see the Filter option details section.
+ For more information and examples on how to use selective unit test filtering, see Running selective unit tests.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]-h|--help\f[R]
+-.PP
+-Prints out a short help for the command.
++Prints out a description of how to use the command.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--interactive\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]-l|--logger <LoggerUri/FriendlyName>\f[R]
++Allows the command to stop and wait for user input or action.
++For example, to complete authentication.
++Available since .NET Core 3.0 SDK.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-l|--logger <LOGGER>\f[B]\f[R]
++.RS 2
+ .PP
+ Specifies a logger for test results.
+-.PP
+-\f[C]--no-build\f[R]
++Unlike MSBuild, dotnet test doesn\[cq]t accept abbreviations: instead of \f[C]-l \[dq]console;v=d\[dq]\f[R] use \f[C]-l \[dq]console;verbosity=detailed\[dq]\f[R].
++Specify the parameter multiple times to enable multiple loggers.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--no-build\f[B]\f[R]
++.RS 2
+ .PP
+ Doesn\[cq]t build the test project before running it.
+-It also implicit sets the \f[C]--no-restore\f[R] flag.
++It also implicitly sets the - \f[C]--no-restore\f[R] flag.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--nologo\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]--no-restore\f[R]
++Run tests without displaying the Microsoft TestPlatform banner.
++Available since .NET Core 3.0 SDK.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--no-restore\f[B]\f[R]
++.RS 2
+ .PP
+ Doesn\[cq]t execute an implicit restore when running the command.
+-.PP
+-\f[C]-o|--output <OUTPUT_DIRECTORY>\f[R]
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-o|--output <OUTPUT_DIRECTORY>\f[B]\f[R]
++.RS 2
+ .PP
+ Directory in which to find the binaries to run.
+-.PP
+-\f[C]-r|--results-directory <PATH>\f[R]
++If not specified, the default path is \f[C]./bin/<configuration>/<framework>/\f[R].
++For projects with multiple target frameworks (via the \f[C]TargetFrameworks\f[R] property), you also need to define \f[C]--framework\f[R] when you specify this option.
++\f[C]dotnet test\f[R] always runs tests from the output directory.
++You can use <xref:System.AppDomain.BaseDirectory%2A?displayProperty=nameWithType> to consume test assets in the output directory.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--os <OS>\f[B]\f[R]
++.RS 2
++.PP
++Specifies the target operating system (OS).
++This is a shorthand syntax for setting the Runtime Identifier (RID), where the provided value is combined with the default RID.
++For example, on a \f[C]win-x64\f[R] machine, specifying \f[C]--os os\f[R] sets the RID to \f[C]os-x64\f[R].
++If you use this option, don\[cq]t use the \f[C]-r|--runtime\f[R] option.
++Available since .NET 6 Preview 7.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-r|--results-directory <RESULTS_DIR>\f[B]\f[R]
++.RS 2
+ .PP
+ The directory where the test results are going to be placed.
+ If the specified directory doesn\[cq]t exist, it\[cq]s created.
++The default is \f[C]TestResults\f[R] in the directory that contains the project file.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--runtime <RUNTIME_IDENTIFIER>\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]-s|--settings <SETTINGS_FILE>\f[R]
++The target runtime to test for.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-s|--settings <SETTINGS_FILE>\f[B]\f[R]
++.RS 2
+ .PP
+ The \f[C].runsettings\f[R] file to use for running the tests.
++The \f[C]TargetPlatform\f[R] element (x86|x64) has no effect for \f[C]dotnet test\f[R].
++To run tests that target x86, install the x86 version of .NET Core.
++The bitness of the \f[I]dotnet.exe\f[R] that is on the path is what will be used for running tests.
++For more information, see the following resources:
++.IP \[bu] 2
+ Configure unit tests by using a \f[C].runsettings\f[R] file.
++.IP \[bu] 2
++Configure a test run (https://github.com/Microsoft/vstest-docs/blob/master/docs/configure.md)
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-t|--list-tests\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]-t|--list-tests\f[R]
+-.PP
+-List all of the discovered tests in the current project.
+-.PP
+-\f[C]-v|--verbosity <LEVEL>\f[R]
++List the discovered tests instead of running the tests.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
++.RS 2
+ .PP
+ Sets the verbosity level of the command.
+ Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
+-.SS .NET Core 1.x
+-.PP
+-\f[C]-a|--test-adapter-path <PATH_TO_ADAPTER>\f[R]
+-.PP
+-Use the custom test adapters from the specified path in the test run.
+-.PP
+-\f[C]-c|--configuration {Debug|Release}\f[R]
+-.PP
+-Defines the build configuration.
+-The default value is \f[C]Debug\f[R], but your project\[cq]s configuration could override this default SDK setting.
+-.PP
+-\f[C]-d|--diag <PATH_TO_DIAGNOSTICS_FILE>\f[R]
+-.PP
+-Enables diagnostic mode for the test platform and write diagnostic messages to the specified file.
+-.PP
+-\f[C]-f|--framework <FRAMEWORK>\f[R]
+-.PP
+-Looks for test binaries for a specific framework.
+-.PP
+-\f[C]--filter <EXPRESSION>\f[R]
+-.PP
+-Filters out tests in the current project using the given expression.
+-For more information, see the Filter option details section.
+-For more information and examples on how to use selective unit test filtering, see Running selective unit tests.
+-.PP
+-\f[C]-h|--help\f[R]
+-.PP
+-Prints out a short help for the command.
+-.PP
+-\f[C]-l|--logger <LoggerUri/FriendlyName>\f[R]
+-.PP
+-Specifies a logger for test results.
+-.PP
+-\f[C]--no-build\f[R]
+-.PP
+-Doesn\[cq]t build the test project before running it.
+-.PP
+-\f[C]-o|--output <OUTPUT_DIRECTORY>\f[R]
+-.PP
+-Directory in which to find the binaries to run.
+-.PP
+-\f[C]-s|--settings <SETTINGS_FILE>\f[R]
+-.PP
+-The \f[C].runsettings\f[R] file to use for running the tests.
+-Configure unit tests by using a \f[C].runsettings\f[R] file.
+-.PP
+-\f[C]-t|--list-tests\f[R]
+-.PP
+-List all of the discovered tests in the current project.
++The default is \f[C]minimal\f[R].
++For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]RunSettings\f[B]\f[R] arguments
+ .PP
+-\f[C]-v|--verbosity <LEVEL>\f[R]
++Inline \f[C]RunSettings\f[R] are passed as the last arguments on the command line after \[lq]\[en]\[rq] (note the space after \[en]).
++Inline \f[C]RunSettings\f[R] are specified as \f[C][name]=[value]\f[R] pairs.
++A space is used to separate multiple \f[C][name]=[value]\f[R] pairs.
+ .PP
+-Sets the verbosity level of the command.
+-Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
++Example: \f[C]dotnet test -- MSTest.DeploymentEnabled=false MSTest.MapInconclusiveToFailed=True\f[R]
+ .PP
+- * * * * *
++For more information, see Passing RunSettings arguments through command line (https://github.com/Microsoft/vstest-docs/blob/master/docs/RunSettingsArgu...).
+ .SH EXAMPLES
+-.PP
++.IP \[bu] 2
+ Run the tests in the project in the current directory:
+-.PP
+-\f[C]dotnet test\f[R]
+-.PP
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet test
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
+ Run the tests in the \f[C]test1\f[R] project:
+-.PP
+-\f[C]dotnet test \[ti]/projects/test1/test1.csproj\f[R]
+-.PP
+-Run the tests in the project in the current directory and generate a test results file in the trx format:
+-.PP
+-\f[C]dotnet test --logger trx\f[R]
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet test \[ti]/projects/test1/test1.csproj
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Run the tests in the project in the current directory, and generate a test results file in the trx format:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet test --logger trx
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Run the tests in the project in the current directory, and generate a code coverage file (after installing Coverlet (https://github.com/coverlet-coverage/coverlet/blob/master/Documentation/V...) collectors integration):
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet test --collect:\[dq]XPlat Code Coverage\[dq]
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Run the tests in the project in the current directory, and generate a code coverage file (Windows only):
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet test --collect \[dq]Code Coverage\[dq]
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Run the tests in the project in the current directory, and log with detailed verbosity to the console:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet test --logger \[dq]console;verbosity=detailed\[dq]
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Run the tests in the project in the current directory, and report tests that were in progress when the test host crashed:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet test --blame
++\f[R]
++.fi
++.RE
+ .SS Filter option details
+ .PP
+ \f[C]--filter <EXPRESSION>\f[R]
+@@ -300,23 +421,19 @@ T}@T{
+ Supported properties
+ T}
+ _
++T{
++MSTest
++T}@T{
++T}
++T{
++xUnit
++T}@T{
++T}
++T{
++NUnit
++T}@T{
++T}
+ .TE
+-| MSTest |
+-FullyQualifiedName
+-Name
+-ClassName
+-Priority
+-TestCategory
+-| | xUnit |
+-FullyQualifiedName
+-DisplayName
+-Traits
+-.IP
+-.nf
+-\f[C]
+- |
+-\f[R]
+-.fi
+ .PP
+ The \f[C]<operator>\f[R] describes the relationship between the property and the value:
+ .PP
+@@ -344,6 +461,11 @@ T{
+ T}@T{
+ Contains
+ T}
++T{
++\f[C]!\[ti]\f[R]
++T}@T{
++Not contains
++T}
+ .TE
+ .PP
+ \f[C]<value>\f[R] is a string.
+@@ -381,4 +503,6 @@ For more information and examples on how to use selective unit test filtering, s
+ .IP \[bu] 2
+ Frameworks and Targets
+ .IP \[bu] 2
+-\&.NET Core Runtime IDentifier (RID) catalog
++\&.NET Runtime Identifier (RID) catalog
++.IP \[bu] 2
++Passing runsettings arguments through commandline (https://github.com/Microsoft/vstest-docs/blob/master/docs/RunSettingsArgu...)
+diff --git a/documentation/manpages/sdk/dotnet-tool-install.1 b/documentation/manpages/sdk/dotnet-tool-install.1
+index 3725f3ed7a..190b86765c 100644
+--- a/documentation/manpages/sdk/dotnet-tool-install.1
++++ b/documentation/manpages/sdk/dotnet-tool-install.1
+@@ -1,28 +1,53 @@
+-.\"t
+-.\" Automatically generated by Pandoc 2.7.2
++'\" t
++.\" Automatically generated by Pandoc 2.14.1
+ .\"
+-.TH "dotnet tool install command" "1" "" "" ".NET Core"
++.TH "" "1" "" "" ".NET"
+ .hy
+ .SH dotnet tool install
+ .PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.1 SDK and later versions
+ .SH NAME
+ .PP
+-\f[C]dotnet tool install\f[R] - Installs the specified .NET Core Global Tool on your machine.
++\f[C]dotnet tool install\f[R] - Installs the specified .NET tool on your machine.
+ .SH SYNOPSIS
+ .IP
+ .nf
+ \f[C]
+-dotnet tool install <PACKAGE_NAME> <-g|--global> [--add-source] [--configfile] [--framework] [-v|--verbosity] [--version]
+-dotnet tool install <PACKAGE_NAME> <--tool-path> [--add-source] [--configfile] [--framework] [-v|--verbosity] [--version]
+-dotnet tool install <-h|--help>
++dotnet tool install <PACKAGE_NAME> -g|--global
++ [--add-source <SOURCE>] [--configfile <FILE>] [--disable-parallel]
++ [--framework <FRAMEWORK>] [--ignore-failed-sources] [--interactive]
++ [--no-cache] [--tool-manifest <PATH>] [-v|--verbosity <LEVEL>]
++ [--version <VERSION_NUMBER>]
++
++dotnet tool install <PACKAGE_NAME> --tool-path <PATH>
++ [--add-source <SOURCE>] [--configfile <FILE>] [--disable-parallel]
++ [--framework <FRAMEWORK>] [--ignore-failed-sources] [--interactive]
++ [--no-cache] [--tool-manifest <PATH>] [-v|--verbosity <LEVEL>]
++ [--version <VERSION_NUMBER>]
++
++dotnet tool install <PACKAGE_NAME> [--local]
++ [--add-source <SOURCE>] [--configfile <FILE>] [--disable-parallel]
++ [--framework <FRAMEWORK>] [--ignore-failed-sources] [--interactive]
++ [--no-cache] [--tool-manifest <PATH>] [-v|--verbosity <LEVEL>]
++ [--version <VERSION_NUMBER>]
++
++dotnet tool install -h|--help
+ \f[R]
+ .fi
+ .SH DESCRIPTION
+ .PP
+-The \f[C]dotnet tool install\f[R] command provides a way for you to install .NET Core Global Tools on your machine.
+-To use the command, you either have to specify that you want a user-wide installation using the \f[C]--global\f[R] option or you specify a path to install it using the \f[C]--tool-path\f[R] option.
++The \f[C]dotnet tool install\f[R] command provides a way for you to install .NET tools on your machine.
++To use the command, you specify one of the following installation options:
++.IP \[bu] 2
++To install a global tool in the default location, use the \f[C]--global\f[R] option.
++.IP \[bu] 2
++To install a global tool in a custom location, use the \f[C]--tool-path\f[R] option.
++.IP \[bu] 2
++To install a local tool, omit the \f[C]--global\f[R] and \f[C]--tool-path\f[R] options.
+ .PP
+-Global Tools are installed in the following directories by default when you specify the \f[C]-g\f[R] (or \f[C]--global\f[R]) option:
++\f[B]Local tools are available starting with .NET Core SDK 3.0.\f[R]
++.PP
++Global tools are installed in the following directories by default when you specify the \f[C]-g\f[R] or \f[C]--global\f[R] option:
+ .PP
+ .TS
+ tab(@);
+@@ -44,71 +69,162 @@ T}@T{
+ \f[C]%USERPROFILE%\[rs].dotnet\[rs]tools\f[R]
+ T}
+ .TE
+-.SS Arguments
+ .PP
+-\f[C]PACKAGE_NAME\f[R]
++Local tools are added to a \f[I]dotnet-tools.json\f[R] file in a \f[I].config\f[R] directory under the current directory.
++If a manifest file doesn\[cq]t exist yet, create it by running the following command:
++.IP
++.nf
++\f[C]
++dotnet new tool-manifest
++\f[R]
++.fi
+ .PP
+-Name/ID of the NuGet package that contains the .NET Core Global Tool to install.
+-.SH OPTIONS
++For more information, see Install a local tool.
++.SS Arguments
++.IP \[bu] 2
++\f[B]\f[CB]PACKAGE_NAME\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]--add-source <SOURCE>\f[R]
++Name/ID of the NuGet package that contains the .NET tool to install.
++.RE
++.SH OPTIONS
++.IP \[bu] 2
++\f[B]\f[CB]--add-source <SOURCE>\f[B]\f[R]
++.RS 2
+ .PP
+ Adds an additional NuGet package source to use during installation.
++Feeds are accessed in parallel, not sequentially in some order of precedence.
++If the same package and version is in multiple feeds, the fastest feed wins.
++For more information, see What happens when a NuGet package is installed?.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
++.RS 2
++.PP
++The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
++If specified, only the settings from this file will be used.
++If not specified, the hierarchy of configuration files from the current directory will be used.
++For more information, see Common NuGet Configurations.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--disable-parallel\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]--configfile <FILE>\f[R]
+-.PP
+-The NuGet configuration (\f[I]nuget.config\f[R]) file to use.
+-.PP
+-\f[C]--framework <FRAMEWORK>\f[R]
++Prevent restoring multiple projects in parallel.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--framework <FRAMEWORK>\f[B]\f[R]
++.RS 2
+ .PP
+ Specifies the target framework to install the tool for.
+-By default, the .NET Core SDK tries to choose the most appropriate target framework.
+-.PP
+-\f[C]-g|--global\f[R]
++By default, the .NET SDK tries to choose the most appropriate target framework.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-g|--global\f[B]\f[R]
++.RS 2
+ .PP
+ Specifies that the installation is user wide.
+ Can\[cq]t be combined with the \f[C]--tool-path\f[R] option.
+-If you don\[cq]t specify this option, you must specify the \f[C]--tool-path\f[R] option.
++Omitting both \f[C]--global\f[R] and \f[C]--tool-path\f[R] specifies a local tool installation.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]-h|--help\f[R]
++Prints out a description of how to use the command.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--ignore-failed-sources\f[B]\f[R]
++.RS 2
++.PP
++Treat package source failures as warnings.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--interactive\f[B]\f[R]
++.RS 2
++.PP
++Allows the command to stop and wait for user input or action.
++For example, to complete authentication.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--local\f[B]\f[R]
++.RS 2
++.PP
++Update the tool and the local tool manifest.
++Can\[cq]t be combined with the \f[C]--global\f[R] option or the \f[C]--tool-path\f[R] option.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--no-cache\f[B]\f[R]
++.RS 2
+ .PP
+-Prints out a short help for the command.
++Do not cache packages and HTTP requests.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--tool-manifest <PATH>\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]--tool-path <PATH>\f[R]
++Path to the manifest file.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--tool-path <PATH>\f[B]\f[R]
++.RS 2
+ .PP
+ Specifies the location where to install the Global Tool.
+ PATH can be absolute or relative.
+ If PATH doesn\[cq]t exist, the command tries to create it.
+-Can\[cq]t be combined with the \f[C]--global\f[R] option.
+-If you don\[cq]t specify this option, you must specify the \f[C]--global\f[R] option.
+-.PP
+-\f[C]-v|--verbosity <LEVEL>\f[R]
++Omitting both \f[C]--global\f[R] and \f[C]--tool-path\f[R] specifies a local tool installation.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
++.RS 2
+ .PP
+ Sets the verbosity level of the command.
+ Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
+-.PP
+-\f[C]--version <VERSION_NUMBER>\f[R]
++For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--version <VERSION_NUMBER>\f[B]\f[R]
++.RS 2
+ .PP
+ The version of the tool to install.
+ By default, the latest stable package version is installed.
+ Use this option to install preview or older versions of the tool.
++.RE
+ .SH EXAMPLES
++.IP \[bu] 2
++\f[B]\f[CB]dotnet tool install -g dotnetsay\f[B]\f[R]
++.RS 2
+ .PP
+-Installs the dotnetsay Global Tool in the default location:
+-.PP
+-\f[C]dotnet tool install -g dotnetsay\f[R]
+-.PP
+-Installs the dotnetsay Global Tool on a specific Windows folder:
+-.PP
+-\f[C]dotnet tool install dotnetsay --tool-path c:\[rs]global-tools\f[R]
++Installs dotnetsay (https://www.nuget.org/packages/dotnetsay/) as a global tool in the default location.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]dotnet tool install dotnetsay --tool-path c:\[rs]global-tools\f[B]\f[R]
++.RS 2
+ .PP
+-Installs the dotnetsay Global Tool on a specific Linux/macOS folder:
++Installs dotnetsay (https://www.nuget.org/packages/dotnetsay/) as a global tool in a specific Windows directory.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]dotnet tool install dotnetsay --tool-path \[ti]/bin\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]dotnet tool install dotnetsay --tool-path \[ti]/bin\f[R]
++Installs dotnetsay (https://www.nuget.org/packages/dotnetsay/) as a global tool in a specific Linux/macOS directory.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]dotnet tool install -g dotnetsay --version 2.0.0\f[B]\f[R]
++.RS 2
+ .PP
+-Installs version 2.0.0 of the dotnetsay Global Tool:
++Installs version 2.0.0 of dotnetsay (https://www.nuget.org/packages/dotnetsay/) as a global tool.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]dotnet tool install dotnetsay\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]dotnet tool install -g dotnetsay --version 2.0.0\f[R]
++Installs dotnetsay (https://www.nuget.org/packages/dotnetsay/) as a local tool for the current directory.
++.RE
+ .SS See also
+ .IP \[bu] 2
+-\&.NET Core Global Tools
++\&.NET tools
++.IP \[bu] 2
++Tutorial: Install and use a .NET global tool using the .NET CLI
++.IP \[bu] 2
++Tutorial: Install and use a .NET local tool using the .NET CLI
+diff --git a/documentation/manpages/sdk/dotnet-tool-list.1 b/documentation/manpages/sdk/dotnet-tool-list.1
+index a2f2534d77..7ae8c785d3 100644
+--- a/documentation/manpages/sdk/dotnet-tool-list.1
++++ b/documentation/manpages/sdk/dotnet-tool-list.1
+@@ -1,57 +1,102 @@
+-.\" Automatically generated by Pandoc 2.7.2
++.\" Automatically generated by Pandoc 2.14.1
+ .\"
+-.TH "dotnet tool list command" "1" "" "" ".NET Core"
++.TH "" "1" "" "" ".NET"
+ .hy
+ .SH dotnet tool list
+ .PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.1 SDK and later versions
+ .SH NAME
+ .PP
+-\f[C]dotnet tool list\f[R] - Lists all .NET Core Global Tools currently installed in the default directory on your machine or in the specified path.
++\f[C]dotnet tool list\f[R] - Lists all .NET tools of the specified type currently installed on your machine.
+ .SH SYNOPSIS
+ .IP
+ .nf
+ \f[C]
+-dotnet tool list <-g|--global>
+-dotnet tool list <--tool-path>
+-dotnet tool list <-h|--help>
++dotnet tool list -g|--global
++
++dotnet tool list --tool-path <PATH>
++
++dotnet tool list --local
++
++dotnet tool list
++
++dotnet tool list -h|--help
+ \f[R]
+ .fi
+ .SH DESCRIPTION
+ .PP
+-The \f[C]dotnet tool list\f[R] command provides a way for you to list all .NET Core Global Tools installed user-wide on your machine (current user profile) or in the specified path.
+-The command lists the package name, version installed, and the Global Tool command.
+-To use the list command, you either have to specify that you want to see all user-wide tools using the \f[C]--global\f[R] option or specify a custom path using the \f[C]--tool-path\f[R] option.
+-.SH OPTIONS
++The \f[C]dotnet tool list\f[R] command provides a way for you to list all .NET global, tool-path, or local tools installed on your machine.
++The command lists the package name, version installed, and the tool command.
++To use the command, you specify one of the following:
++.IP \[bu] 2
++To list global tools installed in the default location, use the \f[C]--global\f[R] option
++.IP \[bu] 2
++To list global tools installed in a custom location, use the \f[C]--tool-path\f[R] option.
++.IP \[bu] 2
++To list local tools, use the \f[C]--local\f[R] option or omit the \f[C]--global\f[R], \f[C]--tool-path\f[R], and \f[C]--local\f[R] options.
+ .PP
+-\f[C]-g|--global\f[R]
++\f[B]Local tools are available starting with .NET Core SDK 3.0.\f[R]
++.SH OPTIONS
++.IP \[bu] 2
++\f[B]\f[CB]-g|--global\f[B]\f[R]
++.RS 2
+ .PP
+-Lists user-wide Global Tools.
++Lists user-wide global tools.
+ Can\[cq]t be combined with the \f[C]--tool-path\f[R] option.
+-If you don\[cq]t specify this option, you must specify the \f[C]--tool-path\f[R] option.
+-.PP
+-\f[C]-h|--help\f[R]
++Omitting both \f[C]--global\f[R] and \f[C]--tool-path\f[R] lists local tools.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
++.RS 2
+ .PP
+-Prints out a short help for the command.
++Prints out a description of how to use the command.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--local\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]--tool-path <PATH>\f[R]
++Lists local tools for the current directory.
++Can\[cq]t be combined with the \f[C]--global\f[R] or \f[C]--tool-path\f[R] options.
++Omitting both \f[C]--global\f[R] and \f[C]--tool-path\f[R] lists local tools even if \f[C]--local\f[R] is not specified.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--tool-path <PATH>\f[B]\f[R]
++.RS 2
+ .PP
+-Specifies a custom location where to find Global Tools.
++Specifies a custom location where to find global tools.
+ PATH can be absolute or relative.
+ Can\[cq]t be combined with the \f[C]--global\f[R] option.
+-If you don\[cq]t specify this option, you must specify the \f[C]--global\f[R] option.
++Omitting both \f[C]--global\f[R] and \f[C]--tool-path\f[R] lists local tools.
++.RE
+ .SH EXAMPLES
++.IP \[bu] 2
++\f[B]\f[CB]dotnet tool list -g\f[B]\f[R]
++.RS 2
+ .PP
+-Lists all Global Tools installed user-wide on your machine (current user profile):
+-.PP
+-\f[C]dotnet tool list -g\f[R]
+-.PP
+-Lists the Global Tools from a specific Windows folder:
++Lists all global tools installed user-wide on your machine (current user profile).
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]dotnet tool list --tool-path c:\[rs]global-tools\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]dotnet tool list --tool-path c:\[rs]global-tools\f[R]
++Lists the global tools from a specific Windows directory.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]dotnet tool list --tool-path \[ti]/bin\f[B]\f[R]
++.RS 2
+ .PP
+-Lists the Global Tools from a specific Linux/macOS folder:
++Lists the global tools from a specific Linux/macOS directory.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]dotnet tool list\f[B]\f[R] or \f[B]\f[CB]dotnet tool list --local\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]dotnet tool list --tool-path \[ti]/bin\f[R]
++Lists all local tools available in the current directory.
++.RE
+ .SS See also
+ .IP \[bu] 2
+-\&.NET Core Global Tools
++\&.NET tools
++.IP \[bu] 2
++Tutorial: Install and use a .NET global tool using the .NET CLI
++.IP \[bu] 2
++Tutorial: Install and use a .NET local tool using the .NET CLI
+diff --git a/documentation/manpages/sdk/dotnet-tool-restore.1 b/documentation/manpages/sdk/dotnet-tool-restore.1
+new file mode 100644
+index 0000000000..9d25fd82cc
+--- /dev/null
++++ b/documentation/manpages/sdk/dotnet-tool-restore.1
+@@ -0,0 +1,103 @@
++.\" Automatically generated by Pandoc 2.14.1
++.\"
++.TH "" "1" "" "" ".NET"
++.hy
++.SH dotnet tool restore
++.PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 3.0 SDK and later versions
++.SH NAME
++.PP
++\f[C]dotnet tool restore\f[R] - Installs the .NET local tools that are in scope for the current directory.
++.SH SYNOPSIS
++.IP
++.nf
++\f[C]
++dotnet tool restore
++ [--configfile <FILE>] [--add-source <SOURCE>]
++ [--tool-manifest <PATH_TO_MANIFEST_FILE>] [--disable-parallel]
++ [--ignore-failed-sources] [--no-cache] [--interactive]
++ [-v|--verbosity <LEVEL>]
++
++dotnet tool restore -h|--help
++\f[R]
++.fi
++.SH DESCRIPTION
++.PP
++The \f[C]dotnet tool restore\f[R] command finds the tool manifest file that is in scope for the current directory and installs the tools that are listed in it.
++For information about manifest files, see Install a local tool and Invoke a local tool.
++.SH OPTIONS
++.IP \[bu] 2
++\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
++.RS 2
++.PP
++The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
++If specified, only the settings from this file will be used.
++If not specified, the hierarchy of configuration files from the current directory will be used.
++For more information, see Common NuGet Configurations.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--add-source <SOURCE>\f[B]\f[R]
++.RS 2
++.PP
++Adds an additional NuGet package source to use during installation.
++Feeds are accessed in parallel, not sequentially in some order of precedence.
++If the same package and version is in multiple feeds, the fastest feed wins.
++For more information, see What happens when a NuGet package is installed?.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--tool-manifest <PATH>\f[B]\f[R]
++.RS 2
++.PP
++Path to the manifest file.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--disable-parallel\f[B]\f[R]
++.RS 2
++.PP
++Prevent restoring multiple projects in parallel.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--ignore-failed-sources\f[B]\f[R]
++.RS 2
++.PP
++Treat package source failures as warnings.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--no-cache\f[B]\f[R]
++.RS 2
++.PP
++Do not cache packages and http requests.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--interactive\f[B]\f[R]
++.RS 2
++.PP
++Allows the command to stop and wait for user input or action.
++For example, to complete authentication.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
++.RS 2
++.PP
++Prints out a description of how to use the command.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
++.RS 2
++.PP
++Sets the verbosity level of the command.
++Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
++For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
++.RE
++.SS Example
++.IP \[bu] 2
++\f[B]\f[CB]dotnet tool restore\f[B]\f[R]
++.RS 2
++.PP
++Restores local tools for the current directory.
++.RE
++.SS See also
++.IP \[bu] 2
++\&.NET tools
++.IP \[bu] 2
++Tutorial: Install and use a .NET local tool using the .NET CLI
+diff --git a/documentation/manpages/sdk/dotnet-tool-run.1 b/documentation/manpages/sdk/dotnet-tool-run.1
+new file mode 100644
+index 0000000000..2b3ff10392
+--- /dev/null
++++ b/documentation/manpages/sdk/dotnet-tool-run.1
+@@ -0,0 +1,50 @@
++.\" Automatically generated by Pandoc 2.14.1
++.\"
++.TH "" "1" "" "" ".NET"
++.hy
++.SH dotnet tool run
++.PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 3.0 SDK and later versions
++.SH NAME
++.PP
++\f[C]dotnet tool run\f[R] - Invokes a local tool.
++.SH SYNOPSIS
++.IP
++.nf
++\f[C]
++dotnet tool run <COMMAND NAME>
++
++dotnet tool run -h|--help
++\f[R]
++.fi
++.SH DESCRIPTION
++.PP
++The \f[C]dotnet tool run\f[R] command searches tool manifest files that are in scope for the current directory.
++When it finds a reference to the specified tool, it runs the tool.
++For more information, see Invoke a local tool.
++.SS Arguments
++.IP \[bu] 2
++\f[B]\f[CB]COMMAND_NAME\f[B]\f[R]
++.RS 2
++.PP
++The command name of the tool to run.
++.RE
++.SH OPTIONS
++.IP \[bu] 2
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
++.RS 2
++.PP
++Prints out a description of how to use the command.
++.RE
++.SS Example
++.IP \[bu] 2
++\f[B]\f[CB]dotnet tool run dotnetsay\f[B]\f[R]
++.RS 2
++.PP
++Runs the \f[C]dotnetsay\f[R] local tool.
++.RE
++.SS See also
++.IP \[bu] 2
++\&.NET tools
++.IP \[bu] 2
++Tutorial: Install and use a .NET local tool using the .NET CLI
+diff --git a/documentation/manpages/sdk/dotnet-tool-search.1 b/documentation/manpages/sdk/dotnet-tool-search.1
+new file mode 100644
+index 0000000000..84647ad4de
+--- /dev/null
++++ b/documentation/manpages/sdk/dotnet-tool-search.1
+@@ -0,0 +1,122 @@
++.\" Automatically generated by Pandoc 2.14.1
++.\"
++.TH "" "1" "" "" ".NET"
++.hy
++.SH dotnet tool search
++.PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET 5.0 SDK and later versions
++.SH NAME
++.PP
++\f[C]dotnet tool search\f[R] - Searches all .NET tools that are published to NuGet.
++.SH SYNOPSIS
++.IP
++.nf
++\f[C]
++dotnet tool search [--detail] [--prerelease]
++ [--skip <NUMBER>] [--take <NUMBER>] <SEARCH TERM>
++
++dotnet tool search -h|--help
++\f[R]
++.fi
++.SH DESCRIPTION
++.PP
++The \f[C]dotnet tool search\f[R] command provides a way for you to search NuGet for tools that can be used as .NET global, tool-path, or local tools.
++The command searches the tool names and metadata such as titles, descriptions, and tags.
++.PP
++The command uses the NuGet Search API.
++It filters on \f[C]packageType=dotnettool\f[R] to select only .NET tool packages.
++.SH OPTIONS
++.IP \[bu] 2
++\f[B]\f[CB]--detail\f[B]\f[R]
++.RS 2
++.PP
++Shows detailed results from the query.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--prerelease\f[B]\f[R]
++.RS 2
++.PP
++Includes pre-release packages.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--skip <NUMBER>\f[B]\f[R]
++.RS 2
++.PP
++Specifies the number of query results to skip.
++Used for pagination.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--take <NUMBER>\f[B]\f[R]
++.RS 2
++.PP
++Specifies the number of query results to show.
++Used for pagination.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
++.RS 2
++.PP
++Prints out a description of how to use the command.
++.RE
++.SH EXAMPLES
++.IP \[bu] 2
++Search NuGet.org for .NET tools that have \[lq]format\[rq] in their package name or description:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet tool search format
++\f[R]
++.fi
++.PP
++The output looks like the following example:
++.IP
++.nf
++\f[C]
++Package ID Latest Version Authors Downloads Verified
++---------------------------------------------------------------------------------------------------------------------------------------------------------------
++dotnet-format 4.1.131201 Microsoft 496746
++bsoa.generator 1.0.0 Microsoft 533
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Search NuGet.org for .NET tools that have \[lq]format\[rq] in their package name or metadata, show only the first result, and show a detailed view.
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet tool search format --take 1 --detail
++\f[R]
++.fi
++.PP
++The output looks like the following example:
++.IP
++.nf
++\f[C]
++----------------
++dotnet-format
++Latest Version: 4.1.131201
++Authors: Microsoft
++Tags:
++Downloads: 496746
++Verified: False
++Description: Command line tool for formatting C# and Visual Basic code files based on .editorconfig settings.
++Versions:
++ 3.0.2 Downloads: 1973
++ 3.0.4 Downloads: 9064
++ 3.1.37601 Downloads: 114730
++ 3.2.107702 Downloads: 13423
++ 3.3.111304 Downloads: 131195
++ 4.0.130203 Downloads: 78610
++ 4.1.131201 Downloads: 145927
++\f[R]
++.fi
++.RE
++.SS See also
++.IP \[bu] 2
++\&.NET tools
++.IP \[bu] 2
++Tutorial: Install and use a .NET global tool using the .NET CLI
++.IP \[bu] 2
++Tutorial: Install and use a .NET local tool using the .NET CLI
+diff --git a/documentation/manpages/sdk/dotnet-tool-uninstall.1 b/documentation/manpages/sdk/dotnet-tool-uninstall.1
+index d2a1da44e1..9b2ac7bae1 100644
+--- a/documentation/manpages/sdk/dotnet-tool-uninstall.1
++++ b/documentation/manpages/sdk/dotnet-tool-uninstall.1
+@@ -1,62 +1,99 @@
+-.\" Automatically generated by Pandoc 2.7.2
++.\" Automatically generated by Pandoc 2.14.1
+ .\"
+-.TH "dotnet tool uninstall command" "1" "" "" ".NET Core"
++.TH "" "1" "" "" ".NET"
+ .hy
+ .SH dotnet tool uninstall
+ .PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.1 SDK and later versions
+ .SH NAME
+ .PP
+-\f[C]dotnet tool uninstall\f[R] - Uninstalls the specified .NET Core Global Tool from your machine.
++\f[C]dotnet tool uninstall\f[R] - Uninstalls the specified .NET tool from your machine.
+ .SH SYNOPSIS
+ .IP
+ .nf
+ \f[C]
+-dotnet tool uninstall <PACKAGE_NAME> <-g|--global>
+-dotnet tool uninstall <PACKAGE_NAME> <--tool-path>
+-dotnet tool uninstall <-h|--help>
++dotnet tool uninstall <PACKAGE_NAME> -g|--global
++
++dotnet tool uninstall <PACKAGE_NAME> --tool-path <PATH>
++
++dotnet tool uninstall <PACKAGE_NAME>
++
++dotnet tool uninstall -h|--help
+ \f[R]
+ .fi
+ .SH DESCRIPTION
+ .PP
+-The \f[C]dotnet tool uninstall\f[R] command provides a way for you to uninstall .NET Core Global Tools from your machine.
+-To use the command, you either have to specify that you want to remove a user-wide tool using the \f[C]--global\f[R] option or specify a path to where the tool is installed using the \f[C]--tool-path\f[R] option.
+-.SS Arguments
++The \f[C]dotnet tool uninstall\f[R] command provides a way for you to uninstall .NET tools from your machine.
++To use the command, you specify one of the following options:
++.IP \[bu] 2
++To uninstall a global tool that was installed in the default location, use the \f[C]--global\f[R] option.
++.IP \[bu] 2
++To uninstall a global tool that was installed in a custom location, use the \f[C]--tool-path\f[R] option.
++.IP \[bu] 2
++To uninstall a local tool, omit the \f[C]--global\f[R] and \f[C]--tool-path\f[R] options.
+ .PP
+-\f[C]PACKAGE_NAME\f[R]
++\f[B]Local tools are available starting with .NET Core SDK 3.0.\f[R]
++.SS Arguments
++.IP \[bu] 2
++\f[B]\f[CB]PACKAGE_NAME\f[B]\f[R]
++.RS 2
+ .PP
+-Name/ID of the NuGet package that contains the .NET Core Global Tool to uninstall.
++Name/ID of the NuGet package that contains the .NET tool to uninstall.
+ You can find the package name using the dotnet tool list command.
++.RE
+ .SH OPTIONS
+-.PP
+-\f[C]-g|--global\f[R]
++.IP \[bu] 2
++\f[B]\f[CB]-g|--global\f[B]\f[R]
++.RS 2
+ .PP
+ Specifies that the tool to be removed is from a user-wide installation.
+ Can\[cq]t be combined with the \f[C]--tool-path\f[R] option.
+-If you don\[cq]t specify this option, you must specify the \f[C]--tool-path\f[R] option.
+-.PP
+-\f[C]-h|--help\f[R]
+-.PP
+-Prints out a short help for the command.
++Omitting both \f[C]--global\f[R] and \f[C]--tool-path\f[R] specifies that the tool to be removed is a local tool.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]--tool-path <PATH>\f[R]
++Prints out a description of how to use the command.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--tool-path <PATH>\f[B]\f[R]
++.RS 2
+ .PP
+-Specifies the location where to uninstall the Global Tool.
++Specifies the location where to uninstall the tool.
+ PATH can be absolute or relative.
+ Can\[cq]t be combined with the \f[C]--global\f[R] option.
+-If you don\[cq]t specify this option, you must specify the \f[C]--global\f[R] option.
++Omitting both \f[C]--global\f[R] and \f[C]--tool-path\f[R] specifies that the tool to be removed is a local tool.
++.RE
+ .SH EXAMPLES
++.IP \[bu] 2
++\f[B]\f[CB]dotnet tool uninstall -g dotnetsay\f[B]\f[R]
++.RS 2
+ .PP
+-Uninstalls the dotnetsay Global Tool:
+-.PP
+-\f[C]dotnet tool uninstall -g dotnetsay\f[R]
+-.PP
+-Uninstalls the dotnetsay Global Tool from a specific Windows folder:
++Uninstalls the dotnetsay (https://www.nuget.org/packages/dotnetsay/) global tool.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]dotnet tool uninstall dotnetsay --tool-path c:\[rs]global-tools\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]dotnet tool uninstall dotnetsay --tool-path c:\[rs]global-tools\f[R]
++Uninstalls the dotnetsay (https://www.nuget.org/packages/dotnetsay/) global tool from a specific Windows directory.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]dotnet tool uninstall dotnetsay --tool-path \[ti]/bin\f[B]\f[R]
++.RS 2
+ .PP
+-Uninstalls the dotnetsay Global Tool from a specific Linux/macOS folder:
++Uninstalls the dotnetsay (https://www.nuget.org/packages/dotnetsay/) global tool from a specific Linux/macOS directory.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]dotnet tool uninstall dotnetsay\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]dotnet tool uninstall dotnetsay --tool-path \[ti]/bin\f[R]
++Uninstalls the dotnetsay (https://www.nuget.org/packages/dotnetsay/) local tool from the current directory.
++.RE
+ .SS See also
+ .IP \[bu] 2
+-\&.NET Core Global Tools
++\&.NET tools
++.IP \[bu] 2
++Tutorial: Install and use a .NET global tool using the .NET CLI
++.IP \[bu] 2
++Tutorial: Install and use a .NET local tool using the .NET CLI
+diff --git a/documentation/manpages/sdk/dotnet-tool-update.1 b/documentation/manpages/sdk/dotnet-tool-update.1
+index dc7e79611d..f8316eb8bb 100644
+--- a/documentation/manpages/sdk/dotnet-tool-update.1
++++ b/documentation/manpages/sdk/dotnet-tool-update.1
+@@ -1,80 +1,205 @@
+-.\" Automatically generated by Pandoc 2.7.2
++.\" Automatically generated by Pandoc 2.14.1
+ .\"
+-.TH "dotnet tool update command" "1" "" "" ".NET Core"
++.TH "" "1" "" "" ".NET"
+ .hy
+ .SH dotnet tool update
+ .PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.1 SDK and later versions
+ .SH NAME
+ .PP
+-\f[C]dotnet tool update\f[R] - Updates the specified .NET Core Global Tool on your machine.
++\f[C]dotnet tool update\f[R] - Updates the specified .NET tool on your machine.
+ .SH SYNOPSIS
+ .IP
+ .nf
+ \f[C]
+-dotnet tool update <PACKAGE_NAME> <-g|--global> [--configfile] [--framework] [-v|--verbosity]
+-dotnet tool update <PACKAGE_NAME> <--tool-path> [--configfile] [--framework] [-v|--verbosity]
+-dotnet tool update <-h|--help>
++dotnet tool update <PACKAGE_ID> -g|--global
++ [--add-source <SOURCE>] [--configfile <FILE>]
++ [--disable-parallel] [--framework <FRAMEWORK>]
++ [--ignore-failed-sources] [--interactive] [--no-cache]
++ [-v|--verbosity <LEVEL>] [--version <VERSION>]
++
++dotnet tool update <PACKAGE_ID> --tool-path <PATH>
++ [--add-source <SOURCE>] [--configfile <FILE>]
++ [--disable-parallel] [--framework <FRAMEWORK>]
++ [--ignore-failed-sources] [--interactive] [--no-cache]
++ [-v|--verbosity <LEVEL>] [--version <VERSION>]
++
++dotnet tool update <PACKAGE_ID> --local
++ [--add-source <SOURCE>] [--configfile <FILE>]
++ [--disable-parallel] [--framework <FRAMEWORK>]
++ [--ignore-failed-sources] [--interactive] [--no-cache]
++ [--tool-manifest <PATH>]
++ [-v|--verbosity <LEVEL>] [--version <VERSION>]
++
++dotnet tool update -h|--help
+ \f[R]
+ .fi
+ .SH DESCRIPTION
+ .PP
+-The \f[C]dotnet tool update\f[R] command provides a way for you to update .NET Core Global Tools on your machine to the latest stable version of the package.
++The \f[C]dotnet tool update\f[R] command provides a way for you to update .NET tools on your machine to the latest stable version of the package.
+ The command uninstalls and reinstalls a tool, effectively updating it.
+-To use the command, you either have to specify that you want to update a tool from a user-wide installation using the \f[C]--global\f[R] option or specify a path to where the tool is installed using the \f[C]--tool-path\f[R] option.
+-.SS Arguments
++To use the command, you specify one of the following options:
++.IP \[bu] 2
++To update a global tool that was installed in the default location, use the \f[C]--global\f[R] option
++.IP \[bu] 2
++To update a global tool that was installed in a custom location, use the \f[C]--tool-path\f[R] option.
++.IP \[bu] 2
++To update a local tool, use the \f[C]--local\f[R] option.
+ .PP
+-\f[C]PACKAGE_NAME\f[R]
++\f[B]Local tools are available starting with .NET Core SDK 3.0.\f[R]
++.SS Arguments
++.IP \[bu] 2
++\f[B]\f[CB]PACKAGE_ID\f[B]\f[R]
++.RS 2
+ .PP
+-Name/ID of the NuGet package that contains the .NET Core Global Tool to update.
++Name/ID of the NuGet package that contains the .NET global tool to update.
+ You can find the package name using the dotnet tool list command.
++.RE
+ .SH OPTIONS
+-.PP
+-\f[C]--add-source <SOURCE>\f[R]
++.IP \[bu] 2
++\f[B]\f[CB]--add-source <SOURCE>\f[B]\f[R]
++.RS 2
+ .PP
+ Adds an additional NuGet package source to use during installation.
++Feeds are accessed in parallel, not sequentially in some order of precedence.
++If the same package and version is in multiple feeds, the fastest feed wins.
++For more information, see What happens when a NuGet package is installed?.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
++.RS 2
++.PP
++The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
++If specified, only the settings from this file will be used.
++If not specified, the hierarchy of configuration files from the current directory will be used.
++For more information, see Common NuGet Configurations.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--disable-parallel\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]--configfile <FILE>\f[R]
+-.PP
+-The NuGet configuration (\f[I]nuget.config\f[R]) file to use.
+-.PP
+-\f[C]--framework <FRAMEWORK>\f[R]
++Prevent restoring multiple projects in parallel.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--framework <FRAMEWORK>\f[B]\f[R]
++.RS 2
+ .PP
+ Specifies the target framework to update the tool for.
+-.PP
+-\f[C]-g|--global\f[R]
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-g|--global\f[B]\f[R]
++.RS 2
+ .PP
+ Specifies that the update is for a user-wide tool.
+ Can\[cq]t be combined with the \f[C]--tool-path\f[R] option.
+-If you don\[cq]t specify this option, you must specify the \f[C]--tool-path\f[R] option.
++Omitting both \f[C]--global\f[R] and \f[C]--tool-path\f[R] specifies that the tool to be updated is a local tool.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
++.RS 2
++.PP
++Prints out a description of how to use the command.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--ignore-failed-sources\f[B]\f[R]
++.RS 2
++.PP
++Treat package source failures as warnings.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--interactive\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]-h|--help\f[R]
++Allows the command to stop and wait for user input or action.
++For example, to complete authentication.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--local\f[B]\f[R]
++.RS 2
+ .PP
+-Prints out a short help for the command.
++Update the tool and the local tool manifest.
++Can\[cq]t be combined with the \f[C]--global\f[R] option or the \f[C]--tool-path\f[R] option.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--no-cache\f[B]\f[R]
++.RS 2
++.PP
++Do not cache packages and HTTP requests.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--tool-manifest <PATH>\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]--tool-path <PATH>\f[R]
++Path to the manifest file.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--tool-path <PATH>\f[B]\f[R]
++.RS 2
+ .PP
+-Specifies the location where the Global Tool is installed.
++Specifies the location where the global tool is installed.
+ PATH can be absolute or relative.
+ Can\[cq]t be combined with the \f[C]--global\f[R] option.
+-If you don\[cq]t specify this option, you must specify the \f[C]--global\f[R] option.
+-.PP
+-\f[C]-v|--verbosity <LEVEL>\f[R]
++Omitting both \f[C]--global\f[R] and \f[C]--tool-path\f[R] specifies that the tool to be updated is a local tool.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
++.RS 2
+ .PP
+ Sets the verbosity level of the command.
+ Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
++For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--version <VERSION>\f[B]\f[R]
++.RS 2
++.PP
++The version range of the tool package to update to.
++This cannot be used to downgrade versions, you must \f[C]uninstall\f[R] newer versions first.
++.RE
+ .SH EXAMPLES
++.IP \[bu] 2
++\f[B]\f[CB]dotnet tool update -g dotnetsay\f[B]\f[R]
++.RS 2
+ .PP
+-Updates the dotnetsay Global Tool:
++Updates the dotnetsay (https://www.nuget.org/packages/dotnetsay/) global tool.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]dotnet tool update dotnetsay --tool-path c:\[rs]global-tools\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]dotnet tool update -g dotnetsay\f[R]
++Updates the dotnetsay (https://www.nuget.org/packages/dotnetsay/) global tool located in a specific Windows directory.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]dotnet tool update dotnetsay --tool-path \[ti]/bin\f[B]\f[R]
++.RS 2
+ .PP
+-Updates the dotnetsay Global Tool located on a specific Windows folder:
++Updates the dotnetsay (https://www.nuget.org/packages/dotnetsay/) global tool located in a specific Linux/macOS directory.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]dotnet tool update dotnetsay\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]dotnet tool update dotnetsay --tool-path c:\[rs]global-tools\f[R]
++Updates the dotnetsay (https://www.nuget.org/packages/dotnetsay/) local tool installed for the current directory.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]dotnet tool update -g dotnetsay --version 2.0.*\f[B]\f[R]
++.RS 2
+ .PP
+-Updates the dotnetsay Global Tool located on a specific Linux/macOS folder:
++Updates the dotnetsay (https://www.nuget.org/packages/dotnetsay/) global tool to the latest patch version, with a major version of \f[C]2\f[R], and a minor version of \f[C]0\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]dotnet tool update -g dotnetsay --version (2.0.*,2.1.4)\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]dotnet tool update dotnetsay --tool-path \[ti]/bin\f[R]
++Updates the dotnetsay (https://www.nuget.org/packages/dotnetsay/) global tool to the lowest version within the specified range \f[C](> 2.0.0 && < 2.1.4)\f[R], version \f[C]2.1.0\f[R] would be installed.
++For more information on semantic versioning ranges, see NuGet packaging version ranges.
++.RE
+ .SS See also
+ .IP \[bu] 2
+-\&.NET Core Global Tools
++\&.NET tools
++.IP \[bu] 2
++Semantic versioning (https://semver.org)
++.IP \[bu] 2
++Tutorial: Install and use a .NET global tool using the .NET CLI
++.IP \[bu] 2
++Tutorial: Install and use a .NET local tool using the .NET CLI
+diff --git a/documentation/manpages/sdk/dotnet-vstest.1 b/documentation/manpages/sdk/dotnet-vstest.1
+index 0e61fa8643..565f487c47 100644
+--- a/documentation/manpages/sdk/dotnet-vstest.1
++++ b/documentation/manpages/sdk/dotnet-vstest.1
+@@ -1,97 +1,85 @@
+-.\" Automatically generated by Pandoc 2.7.2
++.\" Automatically generated by Pandoc 2.14.1
+ .\"
+-.TH "dotnet vstest command" "1" "" "" ".NET Core"
++.TH "" "1" "" "" ".NET"
+ .hy
+ .SH dotnet vstest
+ .PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.1 SDK and later versions
++.RS
++.PP
++[!IMPORTANT] The \f[C]dotnet vstest\f[R] command is superseded by \f[C]dotnet test\f[R], which can now be used to run assemblies.
++See \f[C]dotnet test\f[R].
++.RE
+ .SH NAME
+ .PP
+-\f[C]dotnet-vstest\f[R] - Runs tests from the specified files.
++\f[C]dotnet-vstest\f[R] - Runs tests from the specified assemblies.
+ .SH SYNOPSIS
+-.SS .NET Core 2.1
+-.IP
+-.nf
+-\f[C]
+-dotnet vstest [<TEST_FILE_NAMES>] [--Settings|/Settings] [--Tests|/Tests] [--TestAdapterPath|/TestAdapterPath]
+- [--Platform|/Platform] [--Framework|/Framework] [--Parallel|/Parallel] [--TestCaseFilter|/TestCaseFilter] [--logger|/logger]
+- [-lt|--ListTests|/lt|/ListTests] [--ParentProcessId|/ParentProcessId] [--Port|/Port] [--Diag|/Diag] [--Blame|/Blame] [--InIsolation|/InIsolation]
+- [[--] <args>...]] [-?|--Help|/?|/Help]
+-\f[R]
+-.fi
+-.SS .NET Core 2.0
+-.IP
+-.nf
+-\f[C]
+-dotnet vstest [<TEST_FILE_NAMES>] [--Settings|/Settings] [--Tests|/Tests] [--TestAdapterPath|/TestAdapterPath]
+- [--Platform|/Platform] [--Framework|/Framework] [--Parallel|/Parallel] [--TestCaseFilter|/TestCaseFilter] [--logger|/logger]
+- [-lt|--ListTests|/lt|/ListTests] [--ParentProcessId|/ParentProcessId] [--Port|/Port] [--Diag|/Diag] [[--] <args>...]] [-?|--Help|/?|/Help]
+-\f[R]
+-.fi
+-.SS .NET Core 1.x
+ .IP
+ .nf
+ \f[C]
+-dotnet vstest [<TEST_FILE_NAMES>] [--Settings|/Settings] [--Tests|/Tests] [--TestAdapterPath|/TestAdapterPath]
+- [--Platform|/Platform] [--Framework|/Framework] [--Parallel|/Parallel] [--TestCaseFilter|/TestCaseFilter] [--logger|/logger]
+- [-lt|--ListTests|/lt|/ListTests] [--ParentProcessId|/ParentProcessId] [--Port|/Port] [--Diag|/Diag] [[--] <args>...]] [-?|--Help|/?|/Help]
++dotnet vstest [<TEST_FILE_NAMES>] [--Blame] [--Diag <PATH_TO_LOG_FILE>]
++ [--Framework <FRAMEWORK>] [--InIsolation] [-lt|--ListTests <FILE_NAME>]
++ [--logger <LOGGER_URI/FRIENDLY_NAME>] [--Parallel]
++ [--ParentProcessId <PROCESS_ID>] [--Platform] <PLATFORM_TYPE>
++ [--Port <PORT>] [--ResultsDirectory<PATH>] [--Settings <SETTINGS_FILE>]
++ [--TestAdapterPath <PATH>] [--TestCaseFilter <EXPRESSION>]
++ [--Tests <TEST_NAMES>] [[--] <args>...]]
++
++dotnet vstest -?|--Help
+ \f[R]
+ .fi
+-.PP
+- * * * * *
+ .SH DESCRIPTION
+ .PP
+ The \f[C]dotnet-vstest\f[R] command runs the \f[C]VSTest.Console\f[R] command-line application to run automated unit tests.
+ .SS Arguments
+-.PP
+-\f[C]TEST_FILE_NAMES\f[R]
++.IP \[bu] 2
++\f[B]\f[CB]TEST_FILE_NAMES\f[B]\f[R]
++.RS 2
+ .PP
+ Run tests from the specified assemblies.
+ Separate multiple test assembly names with spaces.
++Wildcards are supported.
++.RE
+ .SH OPTIONS
+-.SS .NET Core 2.1
+-.PP
+-\f[C]--Settings|/Settings:<Settings File>\f[R]
+-.PP
+-Settings to use when running tests.
+-.PP
+-\f[C]--Tests|/Tests:<Test Names>\f[R]
+-.PP
+-Run tests with names that match the provided values.
+-Separate multiple values with commas.
+-.PP
+-\f[C]--TestAdapterPath|/TestAdapterPath\f[R]
+-.PP
+-Use custom test adapters from a given path (if any) in the test run.
+-.PP
+-\f[C]--Platform|/Platform:<Platform type>\f[R]
++.IP \[bu] 2
++\f[B]\f[CB]--Blame\f[B]\f[R]
++.RS 2
+ .PP
+-Target platform architecture used for test execution.
+-Valid values are \f[C]x86\f[R], \f[C]x64\f[R], and \f[C]ARM\f[R].
++Runs the tests in blame mode.
++This option is helpful in isolating the problematic tests causing test host to crash.
++It creates an output file in the current directory as \f[I]Sequence.xml\f[R] that captures the order of tests execution before the crash.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--Diag <PATH_TO_LOG_FILE>\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]--Framework|/Framework:<Framework Version>\f[R]
++Enables verbose logs for the test platform.
++Logs are written to the provided file.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--Framework <FRAMEWORK>\f[B]\f[R]
++.RS 2
+ .PP
+ Target .NET Framework version used for test execution.
+ Examples of valid values are \f[C].NETFramework,Version=v4.6\f[R] or \f[C].NETCoreApp,Version=v1.0\f[R].
+ Other supported values are \f[C]Framework40\f[R], \f[C]Framework45\f[R], \f[C]FrameworkCore10\f[R], and \f[C]FrameworkUap10\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--InIsolation\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]--Parallel|/Parallel\f[R]
+-.PP
+-Execute tests in parallel.
+-By default, all available cores on the machine are available for use.
+-Specify an explicit number of cores by setting the MaxCpuCount property under the RunConfiguration node in the runsettings file.
+-.PP
+-\f[C]--TestCaseFilter|/TestCaseFilter:<Expression>\f[R]
+-.PP
+-Run tests that match the given expression.
+-\f[C]<Expression>\f[R] is of the format \f[C]<property>Operator<value>[|&<Expression>]\f[R], where Operator is one of \f[C]=\f[R], \f[C]!=\f[R], or \f[C]\[ti]\f[R].
+-Operator \f[C]\[ti]\f[R] has `contains' semantics and is applicable for string properties like \f[C]DisplayName\f[R].
+-Parenthesis \f[C]()\f[R] are used to group sub-expressions.
+-.PP
+-\f[C]-?|--Help|/?|/Help\f[R]
+-.PP
+-Prints out a short help for the command.
++Runs the tests in an isolated process.
++This makes \f[I]vstest.console.exe\f[R] process less likely to be stopped on an error in the tests, but tests may run slower.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-lt|--ListTests <FILE_NAME>\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]--logger|/logger:<Logger Uri/FriendlyName>\f[R]
++Lists all discovered tests from the given test container.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--logger <LOGGER_URI/FRIENDLY_NAME>\f[B]\f[R]
++.RS 2
+ .PP
+ Specify a logger for test results.
+ .IP \[bu] 2
+@@ -122,260 +110,130 @@ If \f[C]LogFileName\f[R] isn\[cq]t provided, a unique file name is created to ho
+ \f[R]
+ .fi
+ .RE
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--Parallel\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]-lt|--ListTests|/lt|/ListTests:<File Name>\f[R]
+-.PP
+-Lists all discovered tests from the given test container.
+-.PP
+-\f[C]--ParentProcessId|/ParentProcessId:<ParentProcessId>\f[R]
++Run tests in parallel.
++By default, all available cores on the machine are available for use.
++Specify an explicit number of cores by setting the \f[C]MaxCpuCount\f[R] property under the \f[C]RunConfiguration\f[R] node in the \f[I]runsettings\f[R] file.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--ParentProcessId <PROCESS_ID>\f[B]\f[R]
++.RS 2
+ .PP
+ Process ID of the parent process responsible for launching the current process.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--Platform <PLATFORM_TYPE>\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]--Port|/Port:<Port>\f[R]
++Target platform architecture used for test execution.
++Valid values are \f[C]x86\f[R], \f[C]x64\f[R], and \f[C]ARM\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--Port <PORT>\f[B]\f[R]
++.RS 2
+ .PP
+ Specifies the port for the socket connection and receiving the event messages.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--ResultsDirectory:<PATH>\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]--Diag|/Diag:<Path to log file>\f[R]
+-.PP
+-Enables verbose logs for the test platform.
+-Logs are written to the provided file.
+-.PP
+-\f[C]--Blame|/Blame\f[R]
+-.PP
+-Runs the tests in blame mode.
+-This option is helpful in isolating the problematic tests causing test host to crash.
+-It creates an output file in the current directory as \f[I]Sequence.xml\f[R] that captures the order of tests execution before the crash.
+-.PP
+-\f[C]--InIsolation|/InIsolation\f[R]
+-.PP
+-Runs the tests in an isolated process.
+-This makes \f[I]vstest.console.exe\f[R] process less likely to be stopped on an error in the tests, but tests may run slower.
+-.PP
+-\f[C]\[at]<file>\f[R]
+-.PP
+-Reads response file for more options.
+-.PP
+-\f[C]args\f[R]
+-.PP
+-Specifies extra arguments to pass to the adapter.
+-Arguments are specified as name-value pairs of the form \f[C]<n>=<v>\f[R], where \f[C]<n>\f[R] is the argument name and \f[C]<v>\f[R] is the argument value.
+-Use a space to separate multiple arguments.
+-.SS .NET Core 2.0
+-.PP
+-\f[C]--Settings|/Settings:<Settings File>\f[R]
++Test results directory will be created in specified path if not exists.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--Settings <SETTINGS_FILE>\f[B]\f[R]
++.RS 2
+ .PP
+ Settings to use when running tests.
+-.PP
+-\f[C]--Tests|/Tests:<Test Names>\f[R]
+-.PP
+-Run tests with names that match the provided values.
+-Separate multiple values with commas.
+-.PP
+-\f[C]--TestAdapterPath|/TestAdapterPath\f[R]
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--TestAdapterPath <PATH>\f[B]\f[R]
++.RS 2
+ .PP
+ Use custom test adapters from a given path (if any) in the test run.
+-.PP
+-\f[C]--Platform|/Platform:<Platform type>\f[R]
+-.PP
+-Target platform architecture used for test execution.
+-Valid values are \f[C]x86\f[R], \f[C]x64\f[R], and \f[C]ARM\f[R].
+-.PP
+-\f[C]--Framework|/Framework:<Framework Version>\f[R]
+-.PP
+-Target .NET Framework version used for test execution.
+-Examples of valid values are \f[C].NETFramework,Version=v4.6\f[R] or \f[C].NETCoreApp,Version=v1.0\f[R].
+-Other supported values are \f[C]Framework40\f[R], \f[C]Framework45\f[R], and \f[C]FrameworkCore10\f[R].
+-.PP
+-\f[C]--Parallel|/Parallel\f[R]
+-.PP
+-Execute tests in parallel.
+-By default, all available cores on the machine are available for use.
+-Specify an explicit number of cores by setting the MaxCpuCount property under the RunConfiguration node in the runsettings file.
+-.PP
+-\f[C]--TestCaseFilter|/TestCaseFilter:<Expression>\f[R]
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--TestCaseFilter <EXPRESSION>\f[B]\f[R]
++.RS 2
+ .PP
+ Run tests that match the given expression.
+-\f[C]<Expression>\f[R] is of the format \f[C]<property>Operator<value>[|&<Expression>]\f[R], where Operator is one of \f[C]=\f[R], \f[C]!=\f[R], or \f[C]\[ti]\f[R].
++\f[C]<EXPRESSION>\f[R] is of the format \f[C]<property>Operator<value>[|&<EXPRESSION>]\f[R], where Operator is one of \f[C]=\f[R], \f[C]!=\f[R], or \f[C]\[ti]\f[R].
+ Operator \f[C]\[ti]\f[R] has `contains' semantics and is applicable for string properties like \f[C]DisplayName\f[R].
+-Parenthesis \f[C]()\f[R] are used to group sub-expressions.
++Parentheses \f[C]()\f[R] are used to group subexpressions.
++For more information, see TestCase filter (https://github.com/Microsoft/vstest-docs/blob/master/docs/filter.md).
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--Tests <TEST_NAMES>\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]-?|--Help|/?|/Help\f[R]
++Run tests with names that match the provided values.
++Separate multiple values with commas.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-?|--Help\f[B]\f[R]
++.RS 2
+ .PP
+ Prints out a short help for the command.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]\[at]<file>\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]--logger|/logger:<Logger Uri/FriendlyName>\f[R]
+-.PP
+-Specify a logger for test results.
++Reads response file for more options.
++.RE
+ .IP \[bu] 2
+-To publish test results to Team Foundation Server, use the \f[C]TfsPublisher\f[R] logger provider:
++\f[B]\f[CB]args\f[B]\f[R]
+ .RS 2
++.PP
++Specifies extra arguments to pass to the adapter.
++Arguments are specified as name-value pairs of the form \f[C]<n>=<v>\f[R], where \f[C]<n>\f[R] is the argument name and \f[C]<v>\f[R] is the argument value.
++Use a space to separate multiple arguments.
++.RE
++.SH EXAMPLES
++.PP
++Run tests in \f[I]mytestproject.dll\f[R]:
+ .IP
+ .nf
+ \f[C]
+-/logger:TfsPublisher;
+- Collection=<team project collection url>;
+- BuildName=<build name>;
+- TeamProject=<team project name>
+- [;Platform=<Defaults to \[dq]Any CPU\[dq]>]
+- [;Flavor=<Defaults to \[dq]Debug\[dq]>]
+- [;RunTitle=<title>]
++dotnet vstest mytestproject.dll
+ \f[R]
+ .fi
+-.RE
+-.IP \[bu] 2
+-To log results to a Visual Studio Test Results File (TRX), use the \f[C]trx\f[R] logger provider.
+-This switch creates a file in the test results directory with given log file name.
+-If \f[C]LogFileName\f[R] isn\[cq]t provided, a unique file name is created to hold the test results.
+-.RS 2
++.PP
++Run tests in \f[I]mytestproject.dll\f[R], exporting to custom folder with custom name:
+ .IP
+ .nf
+ \f[C]
+-/logger:trx [;LogFileName=<Defaults to unique file name>]
++dotnet vstest mytestproject.dll --logger:\[dq]trx;LogFileName=custom_file_name.trx\[dq] --ResultsDirectory:custom/file/path
+ \f[R]
+ .fi
+-.RE
+-.PP
+-\f[C]-lt|--ListTests|/lt|/ListTests:<File Name>\f[R]
+-.PP
+-Lists all discovered tests from the given test container.
+-.PP
+-\f[C]--ParentProcessId|/ParentProcessId:<ParentProcessId>\f[R]
+-.PP
+-Process ID of the parent process responsible for launching the current process.
+-.PP
+-\f[C]--Port|/Port:<Port>\f[R]
+-.PP
+-Specifies the port for the socket connection and receiving the event messages.
+-.PP
+-\f[C]--Diag|/Diag:<Path to log file>\f[R]
+-.PP
+-Enables verbose logs for the test platform.
+-Logs are written to the provided file.
+-.PP
+-\f[C]args\f[R]
+-.PP
+-Specifies extra arguments to pass to the adapter.
+-Arguments are specified as name-value pairs of the form \f[C]<n>=<v>\f[R], where \f[C]<n>\f[R] is the argument name and \f[C]<v>\f[R] is the argument value.
+-Use a space to separate multiple arguments.
+-.SS .NET Core 1.x
+-.PP
+-\f[C]--Settings|/Settings:<Settings File>\f[R]
+-.PP
+-Settings to use when running tests.
+-.PP
+-\f[C]--Tests|/Tests:<Test Names>\f[R]
+-.PP
+-Run tests with names that match the provided values.
+-Separate multiple values with commas.
+-.PP
+-\f[C]--TestAdapterPath|/TestAdapterPath\f[R]
+-.PP
+-Use custom test adapters from a given path (if any) in the test run.
+-.PP
+-\f[C]--Platform|/Platform:<Platform type>\f[R]
+-.PP
+-Target platform architecture used for test execution.
+-Valid values are \f[C]x86\f[R], \f[C]x64\f[R], and \f[C]ARM\f[R].
+-.PP
+-\f[C]--Framework|/Framework:<Framework Version>\f[R]
+-.PP
+-Target .NET Framework version used for test execution.
+-Examples of valid values are \f[C].NETFramework,Version=v4.6\f[R] or \f[C].NETCoreApp,Version=v1.0\f[R].
+-Other supported values are \f[C]Framework40\f[R], \f[C]Framework45\f[R], and \f[C]FrameworkCore10\f[R].
+ .PP
+-\f[C]--Parallel|/Parallel\f[R]
+-.PP
+-Execute tests in parallel.
+-By default, all available cores on the machine are available for use.
+-Specify an explicit number of cores by setting the MaxCpuCount property under the RunConfiguration node in the runsettings file.
+-.PP
+-\f[C]--TestCaseFilter|/TestCaseFilter:<Expression>\f[R]
+-.PP
+-Run tests that match the given expression.
+-\f[C]<Expression>\f[R] is of the format \f[C]<property>Operator<value>[|&<Expression>]\f[R], where Operator is one of \f[C]=\f[R], \f[C]!=\f[R], or \f[C]\[ti]\f[R].
+-Operator \f[C]\[ti]\f[R] has `contains' semantics and is applicable for string properties like \f[C]DisplayName\f[R].
+-Parenthesis \f[C]()\f[R] are used to group sub-expressions.
+-.PP
+-\f[C]-?|--Help|/?|/Help\f[R]
+-.PP
+-Prints out a short help for the command.
+-.PP
+-\f[C]--logger|/logger:<Logger Uri/FriendlyName>\f[R]
+-.PP
+-Specify a logger for test results.
+-.IP \[bu] 2
+-To publish test results to Team Foundation Server, use the \f[C]TfsPublisher\f[R] logger provider:
+-.RS 2
++Run tests in \f[I]mytestproject.dll\f[R] and \f[I]myothertestproject.exe\f[R]:
+ .IP
+ .nf
+ \f[C]
+-/logger:TfsPublisher;
+- Collection=<team project collection url>;
+- BuildName=<build name>;
+- TeamProject=<team project name>
+- [;Platform=<Defaults to \[dq]Any CPU\[dq]>]
+- [;Flavor=<Defaults to \[dq]Debug\[dq]>]
+- [;RunTitle=<title>]
++dotnet vstest mytestproject.dll myothertestproject.exe
+ \f[R]
+ .fi
+-.RE
+-.IP \[bu] 2
+-To log results to a Visual Studio Test Results File (TRX), use the \f[C]trx\f[R] logger provider.
+-This switch creates a file in the test results directory with given log file name.
+-If \f[C]LogFileName\f[R] isn\[cq]t provided, a unique file name is created to hold the test results.
+-.RS 2
++.PP
++Run \f[C]TestMethod1\f[R] tests:
+ .IP
+ .nf
+ \f[C]
+-/logger:trx [;LogFileName=<Defaults to unique file name>]
++dotnet vstest /Tests:TestMethod1
+ \f[R]
+ .fi
+-.RE
+-.PP
+-\f[C]-lt|--ListTests|/lt|/ListTests:<File Name>\f[R]
+-.PP
+-Lists all discovered tests from the given test container.
+-.PP
+-\f[C]--ParentProcessId|/ParentProcessId:<ParentProcessId>\f[R]
+-.PP
+-Process ID of the parent process responsible for launching the current process.
+-.PP
+-\f[C]--Port|/Port:<Port>\f[R]
+-.PP
+-Specifies the port for the socket connection and receiving the event messages.
+-.PP
+-\f[C]--Diag|/Diag:<Path to log file>\f[R]
+-.PP
+-Enables verbose logs for the test platform.
+-Logs are written to the provided file.
+-.PP
+-\f[C]args\f[R]
+-.PP
+-Specifies extra arguments to pass to the adapter.
+-Arguments are specified as name-value pairs of the form \f[C]<n>=<v>\f[R], where \f[C]<n>\f[R] is the argument name and \f[C]<v>\f[R] is the argument value.
+-Use a space to separate multiple arguments.
+-.PP
+- * * * * *
+-.SH EXAMPLES
+-.PP
+-Run tests in \f[C]mytestproject.dll\f[R]:
+-.PP
+-\f[C]dotnet vstest mytestproject.dll\f[R]
+-.PP
+-Run tests in \f[C]mytestproject.dll\f[R], exporting to custom folder with custom name:
+-.PP
+-\f[C]dotnet vstest mytestproject.dll --logger:\[dq]trx;LogFileName=custom_file_name.trx\[dq] --ResultsDirectory:custom/file/path\f[R]
+-.PP
+-Run tests in \f[C]mytestproject.dll\f[R] and \f[C]myothertestproject.exe\f[R]:
+-.PP
+-\f[C]dotnet vstest mytestproject.dll myothertestproject.exe\f[R]
+-.PP
+-Run \f[C]TestMethod1\f[R] tests:
+-.PP
+-\f[C]dotnet vstest /Tests:TestMethod1\f[R]
+ .PP
+ Run \f[C]TestMethod1\f[R] and \f[C]TestMethod2\f[R] tests:
+-.PP
+-\f[C]dotnet vstest /Tests:TestMethod1,TestMethod2\f[R]
+-.SH AUTHORS
+-mairaw.
++.IP
++.nf
++\f[C]
++dotnet vstest /Tests:TestMethod1,TestMethod2
++\f[R]
++.fi
++.SS See also
++.IP \[bu] 2
++VSTest.Console.exe command-line options
+diff --git a/documentation/manpages/sdk/dotnet-workload-install.1 b/documentation/manpages/sdk/dotnet-workload-install.1
+new file mode 100644
+index 0000000000..faa1b06aff
+--- /dev/null
++++ b/documentation/manpages/sdk/dotnet-workload-install.1
+@@ -0,0 +1,196 @@
++.\" Automatically generated by Pandoc 2.14.1
++.\"
++.TH "" "1" "" "" ".NET"
++.hy
++.SH dotnet workload install
++.PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET 6 Preview SDK and later versions
++.SH NAME
++.PP
++\f[C]dotnet workload install\f[R] - Installs optional workloads.
++.SH SYNOPSIS
++.IP
++.nf
++\f[C]
++dotnet workload install <WORKLOAD_ID>...
++ [--configfile <FILE>] [--disable-parallel]
++ [--ignore-failed-sources] [--include-previews] [--interactive]
++ [--no-cache] [--skip-manifest-update]
++ [--source <SOURCE>] [--temp-dir <PATH>] [-v|--verbosity <LEVEL>]
++
++dotnet workload install -?|-h|--help
++\f[R]
++.fi
++.SH DESCRIPTION
++.PP
++The \f[C]dotnet workload install\f[R] command installs one or more \f[I]optional workloads\f[R].
++Optional workloads can be installed on top of the .NET SDK to provide support for various application types, such as .NET MAUI and Blazor WebAssembly AOT (https://devblogs.microsoft.com/aspnet/asp-net-core-updates-in-net-6-previ...).
++.PP
++Use dotnet workload search to learn what workloads are available to install.
++.SS When to run elevated
++.PP
++For macOS and Linux SDK installations that are installed to a protected directory, the command needs to run elevated (use the \f[C]sudo\f[R] command).
++On Windows, the command doesn\[cq]t need to run elevated even if the SDK is installed to the \f[I]Program Files\f[R] directory.
++For Windows, the command uses MSI installers for that location.
++.SS Results vary by SDK version
++.PP
++The \f[C]dotnet workload\f[R] commands operate in the context of specific SDK versions.
++Suppose you have both .NET 6.0.100 SDK and .NET 6.0.200 SDK installed.
++The \f[C]dotnet workload\f[R] commands will give different results depending on which SDK version you select.
++This behavior applies to major and minor version and feature band differences, not to patch version differences.
++For example, .NET SDK 6.0.101 and 6.0.102 give the same results, whereas 6.0.100 and 6.0.200 give different results.
++You can specify the SDK version by using the \f[I]global.json\f[R] file or the \f[C]--sdk-version\f[R] option of the \f[C]dotnet workload\f[R] commands.
++.SS Advertising manifests
++.PP
++The names and versions of the assets that a workload installation requires are maintained in \f[I]manifests\f[R].
++By default, the \f[C]dotnet workload install\f[R] command downloads the latest available manifests before it installs a workload.
++The local copy of a manifest then provides the information needed to find and download the assets for a workload.
++.PP
++The \f[C]dotnet workload list\f[R] command compares the versions of installed workloads with the currently available versions.
++When it finds that a version newer than the installed version is available, it advertises that fact in the command output.
++These newer-version notifications in \f[C]dotnet workload list\f[R] are available starting in .NET 6 Preview 7.
++.PP
++To enable these notifications, the latest available versions of the manifests are downloaded and stored as \f[I]advertising manifests\f[R].
++These downloads happen asynchronously in the background when any of the following commands are run.
++.IP \[bu] 2
++dotnet build
++.IP \[bu] 2
++dotnet pack
++.IP \[bu] 2
++dotnet publish
++.IP \[bu] 2
++dotnet restore
++.IP \[bu] 2
++dotnet run
++.IP \[bu] 2
++dotnet test
++.PP
++If a command finishes before the manifest download finishes, the download is stopped.
++The download is tried again the next time one of these commands is run.
++You can set environment variables to disable these background downloads or control their frequency.
++By default, they don\[cq]t happen more than once a day.
++.PP
++You can prevent the \f[C]dotnet workload install\f[R] command from doing manifest downloads by using the \f[C]--skip-manifest-update\f[R] option.
++.PP
++The \f[C]dotnet workload update\f[R] command also downloads advertising manifests.
++The downloads are required to learn if an update is available, so there is no option to prevent them from running.
++However, you can use the \f[C]--advertising-manifests-only\f[R] option to skip workload updates and only do the manifest downloads.
++This option is available starting in .NET 6 Preview 7.
++.SS Arguments
++.IP \[bu] 2
++\f[B]\f[CB]WORKLOAD_ID\f[B]\&...\f[R]
++.RS 2
++.PP
++The workload ID or multiple IDs to install.
++Use dotnet workload search to learn what workloads are available.
++.RE
++.SH OPTIONS
++.IP \[bu] 2
++\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
++.RS 2
++.PP
++The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
++If specified, only the settings from this file will be used.
++If not specified, the hierarchy of configuration files from the current directory will be used.
++For more information, see Common NuGet Configurations.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--disable-parallel\f[B]\f[R]
++.RS 2
++.PP
++Prevents restoring multiple projects in parallel.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
++.RS 2
++.PP
++Prints out a description of how to use the command.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--ignore-failed-sources\f[B]\f[R]
++.RS 2
++.PP
++Treats package source failures as warnings.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--include-previews\f[B]\f[R]
++.RS 2
++.PP
++Allows prerelease workload manifests.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--interactive\f[B]\f[R]
++.RS 2
++.PP
++Allows the command to stop and wait for user input or action.
++For example, to complete authentication.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--no-cache\f[B]\f[R]
++.RS 2
++.PP
++Prevents caching of packages and http requests.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--skip-manifest-update\f[B]\f[R]
++.RS 2
++.PP
++Skip updating the workload manifests.
++The workload manifests define what assets and versions need to be installed for each workload.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-s|--source <SOURCE>\f[B]\f[R]
++.RS 2
++.PP
++Specifies the URI of the NuGet package source to use.
++This setting overrides all of the sources specified in the \f[I]nuget.config\f[R] files.
++Multiple sources can be provided by specifying this option multiple times.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--temp-dir <PATH>\f[B]\f[R]
++.RS 2
++.PP
++Specify the temporary directory used to download and extract NuGet packages (must be secure).
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
++.RS 2
++.PP
++Sets the verbosity level of the command.
++Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
++The default is \f[C]minimal\f[R].
++If you specify specify \f[C]detailed\f[R] or \f[C]diagnostic\f[R] verbosity, the command displays information about the Nuget packages that it downloads.
++.RE
++.SH EXAMPLES
++.IP \[bu] 2
++Install the \f[C]maui\f[R] workload:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet workload install maui
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Install the \f[C]maui-android\f[R] and \f[C]maui-ios\f[R] workloads:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet workload install maui-android maui-ios
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Download assets needed for the \f[C]maui\f[R] workload to a cache located in the \f[I]workload-cache\f[R] directory under the current directory.
++Then install it from the same cache location:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet workload install maui --download-to-cache ./workload-cache
++dotnet workload install maui --from-cache ./workload-cache
++\f[R]
++.fi
++.RE
+diff --git a/documentation/manpages/sdk/dotnet-workload-list.1 b/documentation/manpages/sdk/dotnet-workload-list.1
+new file mode 100644
+index 0000000000..07be8927c6
+--- /dev/null
++++ b/documentation/manpages/sdk/dotnet-workload-list.1
+@@ -0,0 +1,51 @@
++.\" Automatically generated by Pandoc 2.14.1
++.\"
++.TH "" "1" "" "" ".NET"
++.hy
++.SH dotnet workload list
++.PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET 6 Preview SDK and later versions
++.SH NAME
++.PP
++\f[C]dotnet workload list\f[R] - Lists installed workloads.
++.SH SYNOPSIS
++.IP
++.nf
++\f[C]
++dotnet workload list [-v|--verbosity <LEVEL>]
++
++dotnet workload list [-?|-h|--help]
++\f[R]
++.fi
++.SH DESCRIPTION
++.PP
++The \f[C]dotnet workload list\f[R] command lists all installed workloads.
++.PP
++For more information about the \f[C]dotnet workload\f[R] commands, see the dotnet workload install command.
++.SH OPTIONS
++.IP \[bu] 2
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
++.RS 2
++.PP
++Prints out a description of how to use the command.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
++.RS 2
++.PP
++Sets the verbosity level of the command.
++Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
++The default is \f[C]minimal\f[R].
++For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
++.RE
++.SH EXAMPLES
++.IP \[bu] 2
++List the installed workloads:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet workload list
++\f[R]
++.fi
++.RE
+diff --git a/documentation/manpages/sdk/dotnet-workload-repair.1 b/documentation/manpages/sdk/dotnet-workload-repair.1
+new file mode 100644
+index 0000000000..40f22f8a2b
+--- /dev/null
++++ b/documentation/manpages/sdk/dotnet-workload-repair.1
+@@ -0,0 +1,118 @@
++.\" Automatically generated by Pandoc 2.14.1
++.\"
++.TH "" "1" "" "" ".NET"
++.hy
++.SH dotnet workload repair
++.PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET 6 Preview SDK and later versions
++.SH NAME
++.PP
++\f[C]dotnet workload repair\f[R] - Repairs workloads installations.
++.SH SYNOPSIS
++.IP
++.nf
++\f[C]
++dotnet workload repair
++ [--configfile] [--disable-parallel] [--ignore-failed-sources]
++ [--interactive] [--no-cache]
++ [-s|--source <SOURCE>] [--temp-dir <PATH>]
++ [-v|--verbosity <LEVEL>]
++
++dotnet workload repair -?|-h|--help
++\f[R]
++.fi
++.SH DESCRIPTION
++.PP
++The \f[C]dotnet workload repair\f[R] command reinstalls all installed workloads.
++Workloads are made up of multiple workload packs and it\[cq]s possible to get into a state where some installed successfully but others didn\[cq]t.
++For example, a \f[C]dotnet workload install\f[R] command might not finish installing because of a dropped internet connection.
++.PP
++For more information about the \f[C]dotnet workload\f[R] commands, see the dotnet workload install command.
++.SS Arguments
++.IP \[bu] 2
++\f[B]\f[CB]WORKLOAD_ID\f[B]\f[R]
++.RS 2
++.PP
++The workload ID of the workload to repair.
++.RE
++.SH OPTIONS
++.IP \[bu] 2
++\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
++.RS 2
++.PP
++The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
++If specified, only the settings from this file will be used.
++If not specified, the hierarchy of configuration files from the current directory will be used.
++For more information, see Common NuGet Configurations.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--disable-parallel\f[B]\f[R]
++.RS 2
++.PP
++Prevents restoring multiple projects in parallel.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
++.RS 2
++.PP
++Prints out a description of how to use the command.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--ignore-failed-sources\f[B]\f[R]
++.RS 2
++.PP
++Treats package source failures as warnings.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--include-previews\f[B]\f[R]
++.RS 2
++.PP
++Allows prerelease workload manifests.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--interactive\f[B]\f[R]
++.RS 2
++.PP
++Allows the command to stop and wait for user input or action.
++For example, to complete authentication.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--no-cache\f[B]\f[R]
++.RS 2
++.PP
++Prevents caching of packages and http requests.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-s|--source <SOURCE>\f[B]\f[R]
++.RS 2
++.PP
++Specifies the URI of the NuGet package source to use.
++This setting overrides all of the sources specified in the \f[I]nuget.config\f[R] files.
++Multiple sources can be provided by specifying this option multiple times.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--temp-dir <PATH>\f[B]\f[R]
++.RS 2
++.PP
++Specify the temporary directory used to download and extract NuGet packages (must be secure).
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
++.RS 2
++.PP
++Sets the verbosity level of the command.
++Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
++The default is \f[C]minimal\f[R].
++For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
++.RE
++.SH EXAMPLES
++.IP \[bu] 2
++Repair all installed workloads:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet workload repair
++\f[R]
++.fi
++.RE
+diff --git a/documentation/manpages/sdk/dotnet-workload-restore.1 b/documentation/manpages/sdk/dotnet-workload-restore.1
+new file mode 100644
+index 0000000000..0281407a5c
+--- /dev/null
++++ b/documentation/manpages/sdk/dotnet-workload-restore.1
+@@ -0,0 +1,124 @@
++.\" Automatically generated by Pandoc 2.14.1
++.\"
++.TH "" "1" "" "" ".NET"
++.hy
++.SH dotnet workload restore
++.PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET 6 Preview SDK and later versions
++.SH NAME
++.PP
++\f[C]dotnet workload restore\f[R] - Installs workloads needed for a project or a solution.
++.SH SYNOPSIS
++.IP
++.nf
++\f[C]
++dotnet workload restore [<PROJECT | SOLUTION>]
++ [--configfile <FILE>] [--disable-parallel]
++ [--ignore-failed-sources] [--include-previews] [--interactive]
++ [--no-cache] [--skip-manifest-update]
++ [-s|--source <SOURCE>] [--temp-dir <PATH>] [-v|--verbosity <LEVEL>]
++
++dotnet workload restore -?|-h|--help
++\f[R]
++.fi
++.SH DESCRIPTION
++.PP
++The \f[C]dotnet workload restore\f[R] command analyzes a project or solution to determine which workloads it needs, then installs any workloads that are missing.
++.PP
++For more information about the \f[C]dotnet workload\f[R] commands, see the dotnet workload install command.
++.SS Arguments
++.IP \[bu] 2
++\f[B]\f[CB]PROJECT | SOLUTION\f[B]\f[R]
++.RS 2
++.PP
++The project or solution file to install workloads for.
++If a file is not specified, the command searches the current directory for one.
++.RE
++.SH OPTIONS
++.IP \[bu] 2
++\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
++.RS 2
++.PP
++The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
++If specified, only the settings from this file will be used.
++If not specified, the hierarchy of configuration files from the current directory will be used.
++For more information, see Common NuGet Configurations.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--disable-parallel\f[B]\f[R]
++.RS 2
++.PP
++Prevents restoring multiple projects in parallel.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
++.RS 2
++.PP
++Prints out a description of how to use the command.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--ignore-failed-sources\f[B]\f[R]
++.RS 2
++.PP
++Treats package source failures as warnings.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--include-previews\f[B]\f[R]
++.RS 2
++.PP
++Allows prerelease workload manifests.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--interactive\f[B]\f[R]
++.RS 2
++.PP
++Allows the command to stop and wait for user input or action.
++For example, to complete authentication.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--no-cache\f[B]\f[R]
++.RS 2
++.PP
++Prevents caching of packages and http requests.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--skip-manifest-update\f[B]\f[R]
++.RS 2
++.PP
++Skip updating the workload manifests.
++The workload manifests define what assets and versions need to be installed for each workload.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-s|--source <SOURCE>\f[B]\f[R]
++.RS 2
++.PP
++Specifies the URI of the NuGet package source to use.
++This setting overrides all of the sources specified in the \f[I]nuget.config\f[R] files.
++Multiple sources can be provided by specifying this option multiple times.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--temp-dir <PATH>\f[B]\f[R]
++.RS 2
++.PP
++Specify the temporary directory used to download and extract NuGet packages (must be secure).
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
++.RS 2
++.PP
++Sets the verbosity level of the command.
++Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
++The default is \f[C]minimal\f[R].
++For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
++.RE
++.SS Example
++.IP \[bu] 2
++Restore workloads needed by MyApp.csproj:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet workload restore MyApp.csproj
++\f[R]
++.fi
++.RE
+diff --git a/documentation/manpages/sdk/dotnet-workload-search.1 b/documentation/manpages/sdk/dotnet-workload-search.1
+new file mode 100644
+index 0000000000..ff9ffc840d
+--- /dev/null
++++ b/documentation/manpages/sdk/dotnet-workload-search.1
+@@ -0,0 +1,70 @@
++.\" Automatically generated by Pandoc 2.14.1
++.\"
++.TH "" "1" "" "" ".NET"
++.hy
++.SH dotnet workload search
++.PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET 6 Preview SDK and later versions
++.SH NAME
++.PP
++\f[C]dotnet workload search\f[R] - Searches for optional workloads.
++.SH SYNOPSIS
++.IP
++.nf
++\f[C]
++dotnet workload search [<SEARCH_STRING>] [-v|--verbosity <LEVEL>]
++
++dotnet workload search -?|-h|--help
++\f[R]
++.fi
++.SH DESCRIPTION
++.PP
++The \f[C]dotnet workload search\f[R] command lists available workloads.
++You can filter the list by specifying all or part of the workload ID you\[cq]re looking for.
++.PP
++For more information about the \f[C]dotnet workload\f[R] commands, see the dotnet workload install command.
++.SS Arguments
++.IP \[bu] 2
++\f[B]\f[CB]SEARCH_STRING\f[B]\f[R]
++.RS 2
++.PP
++The workload ID to search for, or part of it.
++For example, if you specify \f[C]maui\f[R], the command lists all of the workload IDs that have \f[C]maui\f[R] in their workload ID.
++.RE
++.SH OPTIONS
++.IP \[bu] 2
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
++.RS 2
++.PP
++Prints out a description of how to use the command.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
++.RS 2
++.PP
++Sets the verbosity level of the command.
++Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
++The default is \f[C]minimal\f[R].
++For more information, see <xref:Microsoft.Build.Framework.LoggerVerbosity>.
++.RE
++.SH EXAMPLES
++.IP \[bu] 2
++List all available workloads:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet workload search
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++List all available workloads that have \[lq]maui\[rq] in their workload ID:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet workload search maui
++\f[R]
++.fi
++.RE
+diff --git a/documentation/manpages/sdk/dotnet-workload-uninstall.1 b/documentation/manpages/sdk/dotnet-workload-uninstall.1
+new file mode 100644
+index 0000000000..1bbbfcf98e
+--- /dev/null
++++ b/documentation/manpages/sdk/dotnet-workload-uninstall.1
+@@ -0,0 +1,59 @@
++.\" Automatically generated by Pandoc 2.14.1
++.\"
++.TH "" "1" "" "" ".NET"
++.hy
++.SH dotnet workload uninstall
++.PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET 6 Preview SDK and later versions
++.SH NAME
++.PP
++\f[C]dotnet workload uninstall\f[R] - Uninstalls a specified workload.
++.SH SYNOPSIS
++.IP
++.nf
++\f[C]
++dotnet workload uninstall <WORKLOAD_ID...>
++
++dotnet workload uninstall -?|-h|--help
++\f[R]
++.fi
++.SH DESCRIPTION
++.PP
++The \f[C]dotnet workload uninstall\f[R] command uninstalls one or more workloads.
++.PP
++For more information about the \f[C]dotnet workload\f[R] commands, see the dotnet workload install command.
++.SS Arguments
++.IP \[bu] 2
++\f[B]\f[CB]WORKLOAD_ID...\f[B]\f[R]
++.RS 2
++.PP
++The workload ID or multiple IDs to uninstall.
++.RE
++.SH OPTIONS
++.IP \[bu] 2
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
++.RS 2
++.PP
++Prints out a description of how to use the command.
++.RE
++.SH EXAMPLES
++.IP \[bu] 2
++Uninstall the \f[C]maui\f[R] workload:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet workload uninstall maui
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Uninstall the \f[C]maui-android\f[R] and \f[C]maui-ios\f[R] workloads:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet workload uninstall maui-android maui-ios
++\f[R]
++.fi
++.RE
+diff --git a/documentation/manpages/sdk/dotnet-workload-update.1 b/documentation/manpages/sdk/dotnet-workload-update.1
+new file mode 100644
+index 0000000000..7a31e5ee9e
+--- /dev/null
++++ b/documentation/manpages/sdk/dotnet-workload-update.1
+@@ -0,0 +1,137 @@
++.\" Automatically generated by Pandoc 2.14.1
++.\"
++.TH "" "1" "" "" ".NET"
++.hy
++.SH dotnet workload update
++.PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET 6 Preview SDK and later versions
++.SH NAME
++.PP
++\f[C]dotnet workload update\f[R] - Updates installed workloads.
++.SH SYNOPSIS
++.IP
++.nf
++\f[C]
++dotnet workload update
++ [--advertising-manifests-only]
++ [--configfile <FILE>] [--disable-parallel]
++ [--from-previous-sdk] [--ignore-failed-sources]
++ [--include-previews] [--interactive] [--no-cache]
++ [-s|--source <SOURCE>] [--temp-dir <PATH>]
++ [-v|--verbosity <LEVEL>]
++
++dotnet workload update -?|-h|--help
++\f[R]
++.fi
++.SH DESCRIPTION
++.PP
++The \f[C]dotnet workload update\f[R] command updates all installed workloads to the newest available versions.
++It queries Nuget.org for updated workload manifests.
++It then updates local manifests, downloads new versions of the installed workloads, and removes all old versions of each workload.
++.PP
++For more information about the \f[C]dotnet workload\f[R] commands, see the dotnet workload install command.
++.SH OPTIONS
++.IP \[bu] 2
++\f[B]\f[CB]--advertising-manifests-only\f[B]\f[R]
++.RS 2
++.PP
++Downloads advertising manifests but doesn\[cq]t update any workloads.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--configfile <FILE>\f[B]\f[R]
++.RS 2
++.PP
++The NuGet configuration file (\f[I]nuget.config\f[R]) to use.
++If specified, only the settings from this file will be used.
++If not specified, the hierarchy of configuration files from the current directory will be used.
++For more information, see Common NuGet Configurations.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--disable-parallel\f[B]\f[R]
++.RS 2
++.PP
++Prevents restoring multiple projects in parallel.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--from-previous-sdk\f[B]\f[R]
++.RS 2
++.PP
++Include workloads installed with previous SDK versions in the update.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
++.RS 2
++.PP
++Prints out a description of how to use the command.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--ignore-failed-sources\f[B]\f[R]
++.RS 2
++.PP
++Treats package source failures as warnings.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--include-previews\f[B]\f[R]
++.RS 2
++.PP
++Allows prerelease workload manifests.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--interactive\f[B]\f[R]
++.RS 2
++.PP
++Allows the command to stop and wait for user input or action.
++For example, to complete authentication.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--no-cache\f[B]\f[R]
++.RS 2
++.PP
++Prevents caching of packages and http requests.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-s|--source <SOURCE>\f[B]\f[R]
++.RS 2
++.PP
++Specifies the URI of the NuGet package source to use.
++This setting overrides all of the sources specified in the \f[I]nuget.config\f[R] files.
++Multiple sources can be provided by specifying this option multiple times.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--temp-dir <PATH>\f[B]\f[R]
++.RS 2
++.PP
++Specify the temporary directory used to download and extract NuGet packages (must be secure).
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
++.RS 2
++.PP
++Sets the verbosity level of the command.
++Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
++The default is \f[C]minimal\f[R].
++If you specify specify \f[C]detailed\f[R] or \f[C]diagnostic\f[R] verbosity, the command displays information about the Nuget packages that it downloads.
++.RE
++.SH EXAMPLES
++.IP \[bu] 2
++Update the installed workloads:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet workload update
++\f[R]
++.fi
++.RE
++.IP \[bu] 2
++Download the assets needed for updating installed workloads to a cache located in the \f[I]workload-cache\f[R] directory under the current directory.
++Then update installed workloads from that cache location:
++.RS 2
++.IP
++.nf
++\f[C]
++dotnet workload update --download-to-cache ./workload-cache
++dotnet workload update --from-cache ./workload-cache
++\f[R]
++.fi
++.RE
+diff --git a/documentation/manpages/sdk/dotnet.1 b/documentation/manpages/sdk/dotnet.1
+index 117e040c03..4fca2df5b1 100644
+--- a/documentation/manpages/sdk/dotnet.1
++++ b/documentation/manpages/sdk/dotnet.1
+@@ -1,94 +1,211 @@
+-.\"t
+-.\" Automatically generated by Pandoc 2.7.2
++'\" t
++.\" Automatically generated by Pandoc 2.14.1
+ .\"
+-.TH "dotnet command" "1" "" "" ".NET Core"
++.TH "" "1" "" "" ".NET"
+ .hy
+ .SH dotnet command
+ .PP
++\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 2.1 SDK and later versions
+ .SH NAME
+ .PP
+-\f[C]dotnet\f[R] - A tool for managing .NET source code and binaries.
++\f[C]dotnet\f[R] - The generic driver for the .NET CLI.
+ .SH SYNOPSIS
+-.SS .NET Core 2.1
++.PP
++To get information about the available commands and the environment:
+ .IP
+ .nf
+ \f[C]
+-dotnet [command] [arguments] [--additional-deps] [--additionalprobingpath] [--depsfile]
+- [-d|--diagnostics] [--fx-version] [-h|--help] [--info] [--list-runtimes] [--list-sdks] [--roll-forward-on-no-candidate-fx] [--runtimeconfig] [-v|--verbosity] [--version]
++dotnet [--version] [--info] [--list-runtimes] [--list-sdks]
++
++dotnet -h|--help
+ \f[R]
+ .fi
+-.SS .NET Core 2.0
++.PP
++To run a command (requires SDK installation):
+ .IP
+ .nf
+ \f[C]
+-dotnet [command] [arguments] [--additional-deps] [--additionalprobingpath] [--depsfile]
+- [-d|--diagnostics] [--fx-version] [-h|--help] [--info] [--roll-forward-on-no-candidate-fx]
+- [--runtimeconfig] [-v|--verbosity] [--version]
++dotnet <COMMAND> [-d|--diagnostics] [-h|--help] [--verbosity <LEVEL>]
++ [command-options] [arguments]
+ \f[R]
+ .fi
+-.SS .NET Core 1.x
++.PP
++To run an application:
+ .IP
+ .nf
+ \f[C]
+-dotnet [command] [arguments] [--additionalprobingpath] [--depsfile] [-d|--diagnostics]
+- [--fx-version] [-h|--help] [--info] [--runtimeconfig] [-v|--verbosity] [--version]
++dotnet [--additionalprobingpath <PATH>] [--additional-deps <PATH>]
++ [--fx-version <VERSION>] [--roll-forward <SETTING>]
++ <PATH_TO_APPLICATION> [arguments]
++
++dotnet exec [--additionalprobingpath] [--additional-deps <PATH>]
++ [--fx-version <VERSION>] [--roll-forward <SETTING>]
++ <PATH_TO_APPLICATION> [arguments]
+ \f[R]
+ .fi
+ .PP
+- * * * * *
++\f[C]--roll-forward\f[R] is available since .NET Core 3.x.
++Use \f[C]--roll-forward-on-no-candidate-fx\f[R] for .NET Core 2.x.
+ .SH DESCRIPTION
+ .PP
+-\f[C]dotnet\f[R] is a tool for managing .NET source code and binaries.
+-It exposes commands that perform specific tasks, such as \f[C]dotnet build\f[R] and \f[C]dotnet run\f[R].
+-Each command defines its own arguments.
+-Type \f[C]--help\f[R] after each command to access brief help documentation.
++The \f[C]dotnet\f[R] command has two functions:
++.IP \[bu] 2
++It provides commands for working with .NET projects.
++.RS 2
+ .PP
+-\f[C]dotnet\f[R] can be used to run applications, by specifying an application DLL, such as \f[C]dotnet myapp.dll\f[R].
+-See .NET Core application deployment for to learn about deployment options.
++For example, \f[C]dotnet build\f[R] builds a project.
++Each command defines its own options and arguments.
++All commands support the \f[C]--help\f[R] option for printing out brief documentation about how to use the command.
++.RE
++.IP \[bu] 2
++It runs .NET applications.
++.RS 2
++.PP
++You specify the path to an application \f[C].dll\f[R] file to run the application.
++To run the application means to find and execute the entry point, which in the case of console apps is the \f[C]Main\f[R] method.
++For example, \f[C]dotnet myapp.dll\f[R] runs the \f[C]myapp\f[R] application.
++See .NET application deployment to learn about deployment options.
++.RE
+ .SH OPTIONS
+-.SS .NET Core 2.1
+ .PP
+-\f[C]--additional-deps <PATH>\f[R]
++Different options are available for \f[C]dotnet\f[R] by itself, for running a command, and for running an application.
++.SS Options for dotnet by itself
+ .PP
+-Path to an additional \f[I].deps.json\f[R] file.
++The following options are for \f[C]dotnet\f[R] by itself.
++For example, \f[C]dotnet --info\f[R].
++They print out information about the environment.
++.IP \[bu] 2
++\f[B]\f[CB]--info\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]--additionalprobingpath <PATH>\f[R]
++Prints out detailed information about a .NET installation and the machine environment, such as the current operating system, and commit SHA of the .NET version.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--version\f[B]\f[R]
+ .PP
+-Path containing probing policy and assemblies to probe.
++Prints out the version of the .NET SDK used by dotnet commands.
++Includes the effects of any global.json
++.IP \[bu] 2
++\f[B]\f[CB]--list-runtimes\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]--depsfile\f[R]
++Prints out a list of the installed .NET runtimes.
++An x86 version of the SDK lists only x86 runtimes, and an x64 version of the SDK lists only x64 runtimes.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--list-sdks\f[B]\f[R]
++.RS 2
+ .PP
+-Path to a \f[I]deps.json\f[R] file.
++Prints out a list of the installed .NET SDKs.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
++.RS 2
+ .PP
+-A \f[I]deps.json\f[R] file contains a list of dependencies, compilation dependencies and version information used to address assembly conflicts.
+-For more information about this file, see Runtime Configuration Files on GitHub.
++Prints out a list of available commands.
++.RE
++.SS SDK options for running a command
+ .PP
+-\f[C]-d|--diagnostics\f[R]
++The following options are for \f[C]dotnet\f[R] with a command.
++For example, \f[C]dotnet build --help\f[R].
++.IP \[bu] 2
++\f[B]\f[CB]-d|--diagnostics\f[B]\f[R]
++.RS 2
+ .PP
+ Enables diagnostic output.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-v|--verbosity <LEVEL>\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]--fx-version <VERSION>\f[R]
++Sets the verbosity level of the command.
++Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
++Not supported in every command.
++See specific command page to determine if this option is available.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]-?|-h|--help\f[B]\f[R]
++.RS 2
+ .PP
+-Version of the .NET Core runtime to use to run the application.
++Prints out documentation for a given command, such as \f[C]dotnet build --help\f[R].
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]command options\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]-h|--help\f[R]
++Each command defines options specific to that command.
++See specific command page for a list of available options.
++.RE
++.SS Runtime options
+ .PP
+-Prints out documentation for a given command, such as \f[C]dotnet build --help\f[R].
+-\f[C]dotnet --help\f[R] prints a list of available commands.
++The following options are available when \f[C]dotnet\f[R] runs an application.
++For example, \f[C]dotnet myapp.dll --roll-forward Major\f[R].
++.IP \[bu] 2
++\f[B]\f[CB]--additionalprobingpath <PATH>\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]--info\f[R]
++Path containing probing policy and assemblies to probe.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--additional-deps <PATH>\f[B]\f[R]
++.RS 2
+ .PP
+-Prints out detailed information about a .NET Core installation and the machine environment, such as the current operating system, and commit SHA of the .NET Core version.
++Path to an additional \f[I].deps.json\f[R] file.
++A \f[I]deps.json\f[R] file contains a list of dependencies, compilation dependencies, and version information used to address assembly conflicts.
++For more information, see Runtime Configuration Files (https://github.com/dotnet/sdk/blob/main/documentation/specs/runtime-confi...) on GitHub.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--depsfile <PATH_TO_DEPSFILE>\f[B]\f[R]
++.RS 2
+ .PP
+-\f[C]--list-runtimes\f[R]
++Path to the \f[I]deps.json\f[R] file.
++A \f[I]deps.json\f[R] file is a configuration file that contains information about dependencies necessary to run the application.
++This file is generated by the .NET SDK.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--runtimeconfig\f[B]\f[R]
++.RS 2
+ .PP
+-Displays the installed .NET Core runtimes.
++Path to a \f[I]runtimeconfig.json\f[R] file.
++A \f[I]runtimeconfig.json\f[R] file is a configuration file that contains run-time settings.
++For more information, see .NET runtime configuration settings.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--roll-forward <SETTING>\f[B]\f[R] \f[B]Available starting with .NET Core SDK 3.0.\f[R]
++.RS 2
+ .PP
+-\f[C]--list-sdks\f[R]
++Controls how roll forward is applied to the app.
++The \f[C]SETTING\f[R] can be one of the following values.
++If not specified, \f[C]Minor\f[R] is the default.
++.IP \[bu] 2
++\f[C]LatestPatch\f[R] - Roll forward to the highest patch version.
++This disables minor version roll forward.
++.IP \[bu] 2
++\f[C]Minor\f[R] - Roll forward to the lowest higher minor version, if requested minor version is missing.
++If the requested minor version is present, then the LatestPatch policy is used.
++.IP \[bu] 2
++\f[C]Major\f[R] - Roll forward to lowest higher major version, and lowest minor version, if requested major version is missing.
++If the requested major version is present, then the Minor policy is used.
++.IP \[bu] 2
++\f[C]LatestMinor\f[R] - Roll forward to highest minor version, even if requested minor version is present.
++Intended for component hosting scenarios.
++.IP \[bu] 2
++\f[C]LatestMajor\f[R] - Roll forward to highest major and highest minor version, even if requested major is present.
++Intended for component hosting scenarios.
++.IP \[bu] 2
++\f[C]Disable\f[R] - Don\[cq]t roll forward.
++Only bind to specified version.
++This policy isn\[cq]t recommended for general use because it disables the ability to roll forward to the latest patches.
++This value is only recommended for testing.
+ .PP
+-Displays the installed .NET Core SDKs.
++With the exception of \f[C]Disable\f[R], all settings will use the highest available patch version.
+ .PP
+-\f[C]--roll-forward-on-no-candidate-fx <N>\f[R]
++Roll forward behavior can also be configured in a project file property, a runtime configuration file property, and an environment variable.
++For more information, see Major-version runtime roll forward.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--roll-forward-on-no-candidate-fx <N>\f[B]\f[R] \f[B]Available in .NET Core 2.x SDK.\f[R]
++.RS 2
+ .PP
+ Defines behavior when the required shared framework is not available.
+ \f[C]N\f[R] can be:
+@@ -102,128 +219,20 @@ This is the default behavior.
+ .PP
+ For more information, see Roll forward.
+ .PP
+-\f[C]--runtimeconfig\f[R]
+-.PP
+-Path to a \f[I]runtimeconfig.json\f[R] file.
+-.PP
+-A \f[I]runtimeconfig.json\f[R] file is a configuration file containing runtime configuration settings.
+-For more information, see Runtime Configuration Files on GitHub.
+-.PP
+-\f[C]-v|--verbosity <LEVEL>\f[R]
+-.PP
+-Sets the verbosity level of the command.
+-Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
+-Not supported in every command; see specific command page to determine if this option is available.
+-.PP
+-\f[C]--version\f[R]
+-.PP
+-Prints out the version of the .NET Core SDK in use.
+-.SS .NET Core 2.0
+-.PP
+-\f[C]--additional-deps <PATH>\f[R]
+-.PP
+-Path to an additional \f[I].deps.json\f[R] file.
+-.PP
+-\f[C]--additionalprobingpath <PATH>\f[R]
+-.PP
+-Path containing probing policy and assemblies to probe.
+-.PP
+-\f[C]--depsfile\f[R]
+-.PP
+-Path to a \f[I]deps.json\f[R] file.
+-.PP
+-A \f[I]deps.json\f[R] file contains a list of dependencies, compilation dependencies and version information used to address assembly conflicts.
+-For more details on this file, see Runtime Configuration Files on GitHub.
+-.PP
+-\f[C]-d|--diagnostics\f[R]
+-.PP
+-Enables diagnostic output.
+-.PP
+-\f[C]--fx-version <VERSION>\f[R]
+-.PP
+-Version of the .NET Core runtime to use to run the application.
+-.PP
+-\f[C]-h|--help\f[R]
+-.PP
+-Prints out documentation for a given command, such as \f[C]dotnet build --help\f[R].
+-\f[C]dotnet --help\f[R] prints a list of available commands.
+-.PP
+-\f[C]--info\f[R]
+-.PP
+-Prints out detailed information about a .NET Core installation and the machine environment, such as the current operating system, and commit SHA of the .NET Core version.
+-.PP
+-\f[C]--roll-forward-on-no-candidate-fx\f[R]
+-.PP
+-Disables minor version roll forward, if set to \f[C]0\f[R].
+-For more information, see Roll forward.
+-.PP
+-\f[C]--runtimeconfig\f[R]
+-.PP
+-Path to a \f[I]runtimeconfig.json\f[R] file.
+-.PP
+-A \f[I]runtimeconfig.json\f[R] file is a configuration file containing runtime configuration settings.
+-For more details, see Runtime Configuration Files on GitHub.
+-.PP
+-\f[C]-v|--verbosity <LEVEL>\f[R]
+-.PP
+-Sets the verbosity level of the command.
+-Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
+-Not supported in every command; see specific command page to determine if this option is available.
+-.PP
+-\f[C]--version\f[R]
+-.PP
+-Prints out the version of the .NET Core SDK in use.
+-.SS .NET Core 1.x
+-.PP
+-\f[C]--additionalprobingpath <PATH>\f[R]
+-.PP
+-Path containing probing policy and assemblies to probe.
+-.PP
+-\f[C]--depsfile\f[R]
+-.PP
+-Path to a \f[I]deps.json\f[R] file.
+-.PP
+-A \f[I]deps.json\f[R] file contains a list of dependencies, compilation dependencies and version information used to address assembly conflicts.
+-For more details on this file, see Runtime Configuration Files on GitHub.
+-.PP
+-\f[C]-d|--diagnostics\f[R]
+-.PP
+-Enables diagnostic output.
+-.PP
+-\f[C]--fx-version <VERSION>\f[R]
+-.PP
+-Version of the .NET Core runtime to use to run the application.
+-.PP
+-\f[C]-h|--help\f[R]
+-.PP
+-Prints out documentation for a given command, such as \f[C]dotnet build --help\f[R].
+-\f[C]dotnet --help\f[R] prints a list of available commands.
+-.PP
+-\f[C]--info\f[R]
+-.PP
+-Prints out detailed information about a .NET Core installation and the machine environment, such as the current operating system, and commit SHA of the .NET Core version.
+-.PP
+-\f[C]--runtimeconfig\f[R]
+-.PP
+-Path to a \f[I]runtimeconfig.json\f[R] file.
+-.PP
+-A \f[I]runtimeconfig.json\f[R] file is a configuration file containing runtime configuration settings.
+-For more details, see Runtime Configuration Files on GitHub.
+-.PP
+-\f[C]-v|--verbosity <LEVEL>\f[R]
+-.PP
+-Sets the verbosity level of the command.
+-Allowed values are \f[C]q[uiet]\f[R], \f[C]m[inimal]\f[R], \f[C]n[ormal]\f[R], \f[C]d[etailed]\f[R], and \f[C]diag[nostic]\f[R].
+-Not supported in every command; see specific command page to determine if this option is available.
+-.PP
+-\f[C]--version\f[R]
++Starting with .NET Core 3.0, this option is superseded by \f[C]--roll-forward\f[R], and that option should be used instead.
++.RE
++.IP \[bu] 2
++\f[B]\f[CB]--fx-version <VERSION>\f[B]\f[R]
++.RS 2
+ .PP
+-Prints out the version of the .NET Core SDK in use.
++Version of the .NET runtime to use to run the application.
+ .PP
+- * * * * *
++This option overrides the version of the first framework reference in the application\[cq]s \f[C].runtimeconfig.json\f[R] file.
++This means it only works as expected if there\[cq]s just one framework reference.
++If the application has more than one framework reference, using this option may cause errors.
++.RE
+ .SS dotnet commands
+ .SS General
+-.SS .NET Core 2.1
+ .PP
+ .TS
+ tab(@);
+@@ -237,7 +246,7 @@ _
+ T{
+ dotnet build
+ T}@T{
+-Builds a .NET Core application.
++Builds a .NET application.
+ T}
+ T{
+ dotnet build-server
+@@ -290,6 +299,11 @@ T}@T{
+ Runs the application from source.
+ T}
+ T{
++dotnet sdk check
++T}@T{
++Shows up-to-date status of installed SDK and Runtime versions.
++T}
++T{
+ dotnet sln
+ T}@T{
+ Options to add, remove, and list projects in a solution file.
+@@ -305,7 +319,7 @@ T}@T{
+ Runs tests using a test runner.
+ T}
+ .TE
+-.SS .NET Core 2.0
++.SS Project references
+ .PP
+ .TS
+ tab(@);
+@@ -317,72 +331,22 @@ Function
+ T}
+ _
+ T{
+-dotnet build
+-T}@T{
+-Builds a .NET Core application.
+-T}
+-T{
+-dotnet clean
+-T}@T{
+-Clean build outputs.
+-T}
+-T{
+-dotnet help
+-T}@T{
+-Shows more detailed documentation online for the command.
+-T}
+-T{
+-dotnet migrate
+-T}@T{
+-Migrates a valid Preview 2 project to a .NET Core SDK 1.0 project.
+-T}
+-T{
+-dotnet msbuild
+-T}@T{
+-Provides access to the MSBuild command line.
+-T}
+-T{
+-dotnet new
+-T}@T{
+-Initializes a C# or F# project for a given template.
+-T}
+-T{
+-dotnet pack
+-T}@T{
+-Creates a NuGet package of your code.
+-T}
+-T{
+-dotnet publish
+-T}@T{
+-Publishes a .NET framework-dependent or self-contained application.
+-T}
+-T{
+-dotnet restore
+-T}@T{
+-Restores the dependencies for a given application.
+-T}
+-T{
+-dotnet run
+-T}@T{
+-Runs the application from source.
+-T}
+-T{
+-dotnet sln
++dotnet add reference
+ T}@T{
+-Options to add, remove, and list projects in a solution file.
++Adds a project reference.
+ T}
+ T{
+-dotnet store
++dotnet list reference
+ T}@T{
+-Stores assemblies in the runtime package store.
++Lists project references.
+ T}
+ T{
+-dotnet test
++dotnet remove reference
+ T}@T{
+-Runs tests using a test runner.
++Removes a project reference.
+ T}
+ .TE
+-.SS .NET Core 1.x
++.SS NuGet packages
+ .PP
+ .TS
+ tab(@);
+@@ -394,91 +358,74 @@ Function
+ T}
+ _
+ T{
+-dotnet build
+-T}@T{
+-Builds a .NET Core application.
+-T}
+-T{
+-dotnet clean
+-T}@T{
+-Clean build outputs.
+-T}
+-T{
+-dotnet migrate
++dotnet add package
+ T}@T{
+-Migrates a valid Preview 2 project to a .NET Core SDK 1.0 project.
++Adds a NuGet package.
+ T}
+ T{
+-dotnet msbuild
++dotnet remove package
+ T}@T{
+-Provides access to the MSBuild command line.
++Removes a NuGet package.
+ T}
++.TE
++.SS NuGet commands
++.PP
++.TS
++tab(@);
++l l.
+ T{
+-dotnet new
++Command
+ T}@T{
+-Initializes a C# or F# project for a given template.
++Function
+ T}
++_
+ T{
+-dotnet pack
++dotnet nuget delete
+ T}@T{
+-Creates a NuGet package of your code.
++Deletes or unlists a package from the server.
+ T}
+ T{
+-dotnet publish
++dotnet nuget push
+ T}@T{
+-Publishes a .NET framework-dependent or self-contained application.
++Pushes a package to the server and publishes it.
+ T}
+ T{
+-dotnet restore
++dotnet nuget locals
+ T}@T{
+-Restores the dependencies for a given application.
++Clears or lists local NuGet resources such as http-request cache, temporary cache, or machine-wide global packages folder.
+ T}
+ T{
+-dotnet run
++dotnet nuget add source
+ T}@T{
+-Runs the application from source.
++Adds a NuGet source.
+ T}
+ T{
+-dotnet sln
++dotnet nuget disable source
+ T}@T{
+-Options to add, remove, and list projects in a solution file.
++Disables a NuGet source.
+ T}
+ T{
+-dotnet test
++dotnet nuget enable source
+ T}@T{
+-Runs tests using a test runner.
++Enables a NuGet source.
+ T}
+-.TE
+-.PP
+- * * * * *
+-.SS Project references
+-.PP
+-.TS
+-tab(@);
+-l l.
+ T{
+-Command
++dotnet nuget list source
+ T}@T{
+-Function
++Lists all configured NuGet sources.
+ T}
+-_
+ T{
+-dotnet add reference
++dotnet nuget remove source
+ T}@T{
+-Adds a project reference.
++Removes a NuGet source.
+ T}
+ T{
+-dotnet list reference
++dotnet nuget update source
+ T}@T{
+-Lists project references.
+-T}
+-T{
+-dotnet remove reference
+-T}@T{
+-Removes a project reference.
++Updates a NuGet source.
+ T}
+ .TE
+-.SS NuGet packages
++.SS Workload commands
+ .PP
+ .TS
+ tab(@);
+@@ -490,46 +437,44 @@ Function
+ T}
+ _
+ T{
+-dotnet add package
++dotnet workload install
+ T}@T{
+-Adds a NuGet package.
++Installs an optional workload.
+ T}
+ T{
+-dotnet remove package
++dotnet workload list
+ T}@T{
+-Removes a NuGet package.
++Lists all installed workloads.
+ T}
+-.TE
+-.SS NuGet commands
+-.PP
+-.TS
+-tab(@);
+-l l.
+ T{
+-Command
++dotnet workload repair
+ T}@T{
+-Function
++Repairs all installed workloads.
+ T}
+-_
+ T{
+-dotnet nuget delete
++dotnet workload search
+ T}@T{
+-Deletes or unlists a package from the server.
++List selected workloads or all available workloads.
+ T}
+ T{
+-dotnet nuget locals
++dotnet workload uninstall
+ T}@T{
+-Clears or lists local NuGet resources such as http-request cache, temporary cache, or machine-wide global packages folder.
++Uninstalls a workload.
+ T}
+ T{
+-dotnet nuget push
++dotnet workload update
+ T}@T{
+-Pushes a package to the server and publishes it.
++Reinstalls all installed workloads.
+ T}
+ .TE
+-.SS Global Tools commands
++.SS Global, tool-path, and local tools commands
+ .PP
+-\&.NET Core Global Tools are available starting with .NET Core SDK 2.1.300:
++Tools are console applications that are installed from NuGet packages and are invoked from the command prompt.
++You can write tools yourself or install tools written by third parties.
++Tools are also known as global tools, tool-path tools, and local tools.
++For more information, see .NET tools overview.
++Global and tool-path tools are available starting with .NET Core SDK 2.1.
++Local tools are available starting with .NET Core SDK 3.0.
+ .PP
+ .TS
+ tab(@);
+@@ -543,27 +488,32 @@ _
+ T{
+ dotnet tool install
+ T}@T{
+-Installs a Global Tool on your machine.
++Installs a tool on your machine.
+ T}
+ T{
+ dotnet tool list
+ T}@T{
+-Lists all Global Tools currently installed in the default directory on your machine or in the specified path.
++Lists all global, tool-path, or local tools currently installed on your machine.
++T}
++T{
++dotnet tool search
++T}@T{
++Searches NuGet.org for tools that have the specified search term in their name or metadata.
+ T}
+ T{
+ dotnet tool uninstall
+ T}@T{
+-Uninstalls a Global Tool from your machine.
++Uninstalls a tool from your machine.
+ T}
+ T{
+ dotnet tool update
+ T}@T{
+-Updates a Global Tool on your machine.
++Updates a tool that is installed on your machine.
+ T}
+ .TE
+ .SS Additional tools
+ .PP
+-Starting with .NET Core SDK 2.1.300, a number of tools that were available only on a per project basis using \f[C]DotnetCliToolReference\f[R] are now available as part of the .NET Core SDK.
++Starting with .NET Core SDK 2.1.300, a number of tools that were available only on a per project basis using \f[C]DotnetCliToolReference\f[R] are now available as part of the .NET SDK.
+ These tools are listed in the following table:
+ .PP
+ .TS
+@@ -605,95 +555,33 @@ T}
+ For more information about each tool, type \f[C]dotnet <tool-name> --help\f[R].
+ .SH EXAMPLES
+ .PP
+-Creates a new .NET Core console application:
+-.PP
+-\f[C]dotnet new console\f[R]
+-.PP
+-Restore dependencies for a given application:
+-.PP
+-\f[C]dotnet restore\f[R]
+-.PP
++Create a new .NET console application:
++.IP
++.nf
++\f[C]
++dotnet new console
++\f[R]
++.fi
+ .PP
+ Build a project and its dependencies in a given directory:
++.IP
++.nf
++\f[C]
++dotnet build
++\f[R]
++.fi
+ .PP
+-\f[C]dotnet build\f[R]
+-.PP
+-Run an application DLL, such as \f[C]myapp.dll\f[R]:
+-.PP
+-\f[C]dotnet myapp.dll\f[R]
+-.SH ENVIRONMENT VARIABLES
+-.SS .NET Core 2.1
+-.PP
+-\f[C]DOTNET_PACKAGES\f[R]
+-.PP
+-The global packages folder.
+-If not set, it defaults to \f[C]\[ti]/.nuget/packages\f[R] on Unix or \f[C]%userprofile%\[rs].nuget\[rs]packages\f[R] on Windows.
+-.PP
+-\f[C]DOTNET_SERVICING\f[R]
+-.PP
+-Specifies the location of the servicing index to use by the shared host when loading the runtime.
+-.PP
+-\f[C]DOTNET_CLI_TELEMETRY_OPTOUT\f[R]
+-.PP
+-Specifies whether data about the .NET Core tools usage is collected and sent to Microsoft.
+-Set to \f[C]true\f[R] to opt-out of the telemetry feature (values \f[C]true\f[R], \f[C]1\f[R], or \f[C]yes\f[R] accepted).
+-Otherwise, set to \f[C]false\f[R] to opt into the telemetry features (values \f[C]false\f[R], \f[C]0\f[R], or \f[C]no\f[R] accepted).
+-If not set, the default is \f[C]false\f[R] and the telemetry feature is active.
+-.PP
+-\f[C]DOTNET_MULTILEVEL_LOOKUP\f[R]
+-.PP
+-Specifies whether .NET Core runtime, shared framework, or SDK are resolved from the global location.
+-If not set, it defaults to \f[C]true\f[R].
+-Set to \f[C]false\f[R] to not resolve from the global location and have isolated .NET Core installations (values \f[C]0\f[R] or \f[C]false\f[R] are accepted).
+-For more information about multi-level lookup, see Multi-level SharedFX Lookup.
+-.PP
+-\f[C]DOTNET_ROLL_FORWARD_ON_NO_CANDIDATE_FX\f[R]
+-.PP
+-Disables minor version roll forward, if set to \f[C]0\f[R].
+-For more information, see Roll forward.
+-.SS .NET Core 2.0
+-.PP
+-\f[C]DOTNET_PACKAGES\f[R]
+-.PP
+-The primary package cache.
+-If not set, it defaults to \f[C]$HOME/.nuget/packages\f[R] on Unix or \f[C]%userprofile%\[rs].nuget\[rs]packages\f[R] on Windows.
+-.PP
+-\f[C]DOTNET_SERVICING\f[R]
+-.PP
+-Specifies the location of the servicing index to use by the shared host when loading the runtime.
+-.PP
+-\f[C]DOTNET_CLI_TELEMETRY_OPTOUT\f[R]
+-.PP
+-Specifies whether data about the .NET Core tools usage is collected and sent to Microsoft.
+-Set to \f[C]true\f[R] to opt-out of the telemetry feature (values \f[C]true\f[R], \f[C]1\f[R], or \f[C]yes\f[R] accepted).
+-Otherwise, set to \f[C]false\f[R] to opt into the telemetry features (values \f[C]false\f[R], \f[C]0\f[R], or \f[C]no\f[R] accepted).
+-If not set, the default is \f[C]false\f[R] and the telemetry feature is active.
+-.PP
+-\f[C]DOTNET_MULTILEVEL_LOOKUP\f[R]
+-.PP
+-Specifies whether .NET Core runtime, shared framework, or SDK are resolved from the global location.
+-If not set, it defaults to \f[C]true\f[R].
+-Set to \f[C]false\f[R] to not resolve from the global location and have isolated .NET Core installations (values \f[C]0\f[R] or \f[C]false\f[R] are accepted).
+-For more information about multi-level lookup, see Multi-level SharedFX Lookup.
+-.SS .NET Core 1.x
+-.PP
+-\f[C]DOTNET_PACKAGES\f[R]
+-.PP
+-The primary package cache.
+-If not set, it defaults to \f[C]$HOME/.nuget/packages\f[R] on Unix or \f[C]%userprofile%\[rs].nuget\[rs]packages\f[R] on Windows.
+-.PP
+-\f[C]DOTNET_SERVICING\f[R]
+-.PP
+-Specifies the location of the servicing index to use by the shared host when loading the runtime.
+-.PP
+-\f[C]DOTNET_CLI_TELEMETRY_OPTOUT\f[R]
+-.PP
+-Specifies whether data about the .NET Core tools usage is collected and sent to Microsoft.
+-Set to \f[C]true\f[R] to opt-out of the telemetry feature (values \f[C]true\f[R], \f[C]1\f[R], or \f[C]yes\f[R] accepted).
+-Otherwise, set to \f[C]false\f[R] to opt into the telemetry features (values \f[C]false\f[R], \f[C]0\f[R], or \f[C]no\f[R] accepted).
+-If not set, the default is \f[C]false\f[R] and the telemetry feature is active.
+-.PP
+- * * * * *
++Run an application:
++.IP
++.nf
++\f[C]
++dotnet myapp.dll
++\f[R]
++.fi
+ .SS See also
+ .IP \[bu] 2
+-Runtime Configuration Files
++Environment variables used by .NET SDK, .NET CLI, and .NET runtime
++.IP \[bu] 2
++Runtime Configuration Files (https://github.com/dotnet/sdk/blob/main/documentation/specs/runtime-confi...)
++.IP \[bu] 2
++\&.NET runtime configuration settings
+diff --git a/documentation/manpages/tool/Dockerfile b/documentation/manpages/tool/Dockerfile
+index 37f37771d6..44777d621e 100644
+--- a/documentation/manpages/tool/Dockerfile
++++ b/documentation/manpages/tool/Dockerfile
+@@ -1,7 +1,7 @@
+-FROM pandoc/core:2.7.2
++FROM pandoc/core:2.14.1
+
+ ENTRYPOINT ["/usr/bin/env"]
+
+-RUN apk add git py-pip && python -m pip install pandocfilters
++RUN apk add git py3-pip && python3 -m pip install pandocfilters
+
+ CMD /manpages/tool/update-man-pages.sh
+diff --git a/documentation/manpages/tool/man-pandoc-filter.py b/documentation/manpages/tool/man-pandoc-filter.py
+old mode 100644
+new mode 100755
+index 20740bf083..fed4bebf6e
+--- a/documentation/manpages/tool/man-pandoc-filter.py
++++ b/documentation/manpages/tool/man-pandoc-filter.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ #
+ # 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.
+@@ -7,10 +7,9 @@
+ import copy
+ from pandocfilters import toJSONFilters, Para, Str, Header, Space
+
+-def remove_includes(key, value, format, meta):
++def fail_on_includes(key, value, format, meta):
+ if key == 'Para' and value[0]['c'] == '[!INCLUDE':
+- return Para([Str("")])
+- return None
++ assert False, 'Found an unexpected [!INCLUDE'
+
+ def promote_and_capitalize_sections(key, value, format, meta):
+ if key == 'Header':
+@@ -34,18 +33,11 @@ def demote_net_core_1_2(key, value, format, meta):
+ return value
+ return None
+
+-def remove_references(key, value, format, meta):
+- if key == 'Link':
+- pass
+- return value[1]
+- return None
+-
+ def main():
+ toJSONFilters([
+- remove_includes,
++ fail_on_includes,
+ promote_and_capitalize_sections,
+ demote_net_core_1_2,
+- remove_references,
+ ])
+
+ if __name__ == '__main__':
+diff --git a/documentation/manpages/tool/remove-metadata-and-embed-includes.py b/documentation/manpages/tool/remove-metadata-and-embed-includes.py
+new file mode 100755
+index 0000000000..11c9bf2411
+--- /dev/null
++++ b/documentation/manpages/tool/remove-metadata-and-embed-includes.py
+@@ -0,0 +1,67 @@
++#!/usr/bin/env python3
++#
++# 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 re
++import os
++import os.path
++import sys
++
++def git_root(file):
++ dirname = os.path.dirname(file)
++ while True:
++ if os.path.isdir(os.path.join(dirname, '.git')):
++ return dirname
++ dirname = os.path.abspath(os.path.join(dirname, '..'))
++ if dirname == '/':
++ assert False, 'at root directory now'
++
++def read_lines_document_file(this_file, original_lines):
++ result = []
++
++ lines = original_lines
++
++ # metadata section is optional
++ if lines[0] == '---' + os.linesep:
++ # remove first ---
++ lines = lines[1:]
++
++ # find index of second --- and remove that and everything before it
++ for i in range(len(lines)):
++ if lines[i] == '---' + os.linesep:
++ lines = lines[i+1:]
++ break
++
++ for line in lines:
++ if '[!INCLUDE' in line:
++ match = re.search(r'\[!INCLUDE *\[[^\]]+\] *\(([^)]+)\)', line)
++ if match:
++ relative_path = match.groups()[0]
++ if relative_path.startswith('~/'):
++ git_repo_root = git_root(this_file) + '/'
++ file_to_include = os.path.join(git_repo_root, relative_path[2:])
++ else:
++ file_to_include = os.path.join(os.path.dirname(this_file), relative_path)
++ with open(file_to_include) as f:
++ lines_to_include = f.readlines()
++ result.extend(read_lines_document_file(file_to_include, lines_to_include))
++ else:
++ assert False, 'Unable to parse: ' + line
++ else:
++ result.append(line)
++ return result
++
++def main(args):
++ filename = args[1]
++ with open(filename) as original:
++ lines = read_lines_document_file(filename, original.readlines())
++ with open(filename + '.tmp', 'w') as output:
++ for line in lines:
++ output.write(line)
++
++ os.replace(filename + '.tmp', filename)
++
++if __name__ == '__main__':
++ sys.exit(main(sys.argv))
+diff --git a/documentation/manpages/tool/run_docker.sh b/documentation/manpages/tool/run_docker.sh
+old mode 100644
+new mode 100755
+index c5e2a3cf56..6717892a53
+--- a/documentation/manpages/tool/run_docker.sh
++++ b/documentation/manpages/tool/run_docker.sh
+@@ -8,4 +8,4 @@ MANPAGE_TOOL_DIR=$(cd "$(dirname "$0")" || exit; pwd)
+
+ docker build -t dotnet-cli-manpage-tool "$MANPAGE_TOOL_DIR"
+
+-docker run --volume="$MANPAGE_TOOL_DIR"/..:/manpages dotnet-cli-manpage-tool
++docker run --volume="$MANPAGE_TOOL_DIR"/..:/manpages:Z dotnet-cli-manpage-tool
+diff --git a/documentation/manpages/tool/update-man-pages.sh b/documentation/manpages/tool/update-man-pages.sh
+old mode 100644
+new mode 100755
+index cf2ac7cfd3..c3c389f28b
+--- a/documentation/manpages/tool/update-man-pages.sh
++++ b/documentation/manpages/tool/update-man-pages.sh
+@@ -4,6 +4,8 @@
+ # Licensed under the MIT license. See LICENSE file in the project root for full license information.
+ #
+
++set -euo pipefail
++
+ MANPAGE_TOOL_DIR=$(cd "$(dirname "$0")" || exit; pwd)
+
+ cd "$MANPAGE_TOOL_DIR"/../sdk || exit
+@@ -24,7 +26,8 @@ fi
+ ls docs-main/docs/core/tools/dotnet*.md | while read -r line;
+ do
+ echo "Working on $line"
+- pandoc -s -t man -V section=1 -V header=".NET Core" --column=500 --filter "$MANPAGE_TOOL_DIR"/man-pandoc-filter.py "$line" -o "$(basename "${line%.md}".1)"
++ "$MANPAGE_TOOL_DIR"/remove-metadata-and-embed-includes.py "$line"
++ pandoc -s -t man -V section=1 -V header=".NET" --column=500 --filter "$MANPAGE_TOOL_DIR"/man-pandoc-filter.py "$line" -o "$(basename "${line%.md}".1)"
+ done
+
+ rm -rf docs-main
+--
+2.33.1
+
diff --git a/sources b/sources
index ef2110e..fbcebe4 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (dotnet-9e8b04bbff820c93c142f99a507a46b976f5c14c.tar.gz) = 3dc30bda8a04908412bddbe2fc93ac0ed433492437923ddc212076682ceba55ab8f9679efc54e6dff5d6d6822a7e75c622acf66a647958791215590099aa75e4
+SHA512 (dotnet-v6.0.101.tar.gz) = e42d85d4cf5769e38059ea4f546e20452f4975a2ba448f81999deffb8a4e517d098ef23b8576c4654ec7a3b5e35006a90e5bf5ae2808012d3ed068f9d0a7eb90
diff --git a/update-release b/update-release
index 70b3c87..d722cb6 100755
--- a/update-release
+++ b/update-release
@@ -56,7 +56,7 @@ fi
host_version="$runtime_version"
-tag=v${sdk_version}-SDK
+tag=v${sdk_version}
if [[ -f "dotnet-${tag}-original.tar.gz" ]]; then
echo "dotnet-${tag}-original.tar.gz alredy exists, not rebuilding tarball"
commit 48eddbd9d70bd0c522e2b31ffbc43dd84a4f4f39
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Thu Jan 20 00:58:31 2022 +0000
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng(a)fedoraproject.org>
diff --git a/dotnet6.0.spec b/dotnet6.0.spec
index d5597f4..9d2dc27 100644
--- a/dotnet6.0.spec
+++ b/dotnet6.0.spec
@@ -60,7 +60,7 @@
Name: dotnet6.0
Version: %{sdk_rpm_version}
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: .NET Runtime and SDK
License: MIT and ASL 2.0 and BSD and LGPLv2+ and CC-BY and CC0 and MS-PL and EPL-1.0 and GPL+ and GPLv2 and ISC and OFL and zlib
URL: https://github.com/dotnet/
@@ -664,6 +664,9 @@ export COMPlus_LTTng=0
%changelog
+* Thu Jan 20 2022 Fedora Release Engineering <releng(a)fedoraproject.org> - 6.0.100-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
+
* Mon Dec 20 2021 Omair Majid <omajid(a)redhat.com> - 6.0.100-2
- Disable bootstrap
commit 3f2e95866fb4c7917cc609ce730412debc33a61c
Author: Omair Majid <omajid(a)redhat.com>
Date: Mon Dec 20 00:20:55 2021 -0500
Disable bootstrap
diff --git a/.gitignore b/.gitignore
index 0f04369..86d2c7e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,3 +12,4 @@
/dotnet-9e8b04bbff820c93c142f99a507a46b976f5c14c-x64-bootstrap.tar.xz
/dotnet-arm64-prebuilts-2021-10-29.tar.gz
/dotnet-s390x-prebuilts-2021-10-29.tar.gz
+/dotnet-9e8b04bbff820c93c142f99a507a46b976f5c14c.tar.gz
diff --git a/dotnet6.0.spec b/dotnet6.0.spec
index e137b93..d5597f4 100644
--- a/dotnet6.0.spec
+++ b/dotnet6.0.spec
@@ -1,4 +1,4 @@
-%bcond_without bootstrap
+%bcond_with bootstrap
# Avoid provides/requires from private libraries
%global privlibs libhostfxr
@@ -60,7 +60,7 @@
Name: dotnet6.0
Version: %{sdk_rpm_version}
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: .NET Runtime and SDK
License: MIT and ASL 2.0 and BSD and LGPLv2+ and CC-BY and CC0 and MS-PL and EPL-1.0 and GPL+ and GPLv2 and ISC and OFL and zlib
URL: https://github.com/dotnet/
@@ -664,6 +664,9 @@ export COMPlus_LTTng=0
%changelog
+* Mon Dec 20 2021 Omair Majid <omajid(a)redhat.com> - 6.0.100-2
+- Disable bootstrap
+
* Sun Dec 19 2021 Omair Majid <omajid(a)redhat.com> - 6.0.100-1
- Update to .NET 6
diff --git a/sources b/sources
index e5277d1..ef2110e 100644
--- a/sources
+++ b/sources
@@ -1,3 +1 @@
-SHA512 (dotnet-9e8b04bbff820c93c142f99a507a46b976f5c14c-x64-bootstrap.tar.xz) = dedbc8619af5141f7cba108c4060cbbcf9c4c4c8968180ed1dc71d2afdf829a99c479b6daaf5c15018b8cd66de14eb6fee9fc4072f81546067544a6a6a20b641
-SHA512 (dotnet-arm64-prebuilts-2021-10-29.tar.gz) = e24fb8bb8b0fb24f52a68d472356574d8edf7af554b14618aeeae6ff76b54ce5e6d8a9deb056f9bc052bff8d17bae01c6475217039508bb0e08303f9f6c4b5d1
-SHA512 (dotnet-s390x-prebuilts-2021-10-29.tar.gz) = 6ea9d857edce50efd1cc35a73b3b3ccb170bbdb5cc4c8b20fb0ee1c7cb75cc573a565b01ef1bf4eec10a3e6e5209143957425cee5ff3fe24c7c1c89813272a99
+SHA512 (dotnet-9e8b04bbff820c93c142f99a507a46b976f5c14c.tar.gz) = 3dc30bda8a04908412bddbe2fc93ac0ed433492437923ddc212076682ceba55ab8f9679efc54e6dff5d6d6822a7e75c622acf66a647958791215590099aa75e4
commit d3412cc4b5b5aaa1842515da78c5a6424567aab6
Author: Omair Majid <omajid(a)redhat.com>
Date: Sun Dec 19 17:51:29 2021 -0500
Initial build for Fedora
diff --git a/.gitignore b/.gitignore
index b620824..0f04369 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,3 +9,6 @@
/dotnet-v5.0.202-SDK.tar.gz
/dotnet-v5.0.203-SDK.tar.gz
/dotnet-v5.0.204-SDK.tar.gz
+/dotnet-9e8b04bbff820c93c142f99a507a46b976f5c14c-x64-bootstrap.tar.xz
+/dotnet-arm64-prebuilts-2021-10-29.tar.gz
+/dotnet-s390x-prebuilts-2021-10-29.tar.gz
diff --git a/copr-build b/copr-build
deleted file mode 100755
index f0d4ca3..0000000
--- a/copr-build
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/bash
-
-set -euo pipefail
-
-set -x
-
-fedpkg --release f34 srpm 2>&1 | tee fedpkg.output
-
-srpm_name=$(grep 'Wrote: ' fedpkg.output | cut -d' ' -f 2)
-
-copr-cli build @dotnet-sig/dotnet-preview "${srpm_name}"
diff --git a/dotnet6.0.spec b/dotnet6.0.spec
index 2c6abf5..e137b93 100644
--- a/dotnet6.0.spec
+++ b/dotnet6.0.spec
@@ -22,9 +22,9 @@
%global host_version 6.0.0
%global runtime_version 6.0.0
-%global aspnetcore_runtime_version 6.0.0
+%global aspnetcore_runtime_version %{runtime_version}
%global sdk_version 6.0.100
-%global templates_version 6.0.0
+%global templates_version %{runtime_version}
#%%global templates_version %%(echo %%{runtime_version} | awk 'BEGIN { FS="."; OFS="." } {print $1, $2, $3+1 }')
%global host_rpm_version %{host_version}
@@ -664,7 +664,7 @@ export COMPlus_LTTng=0
%changelog
-* Wed Nov 10 2021 Omair Majid <omajid(a)redhat.com> - 6.0.100-1
+* Sun Dec 19 2021 Omair Majid <omajid(a)redhat.com> - 6.0.100-1
- Update to .NET 6
* Fri Oct 22 2021 Omair Majid <omajid(a)redhat.com> - 6.0.0-0.7.rc2
diff --git a/sources b/sources
new file mode 100644
index 0000000..e5277d1
--- /dev/null
+++ b/sources
@@ -0,0 +1,3 @@
+SHA512 (dotnet-9e8b04bbff820c93c142f99a507a46b976f5c14c-x64-bootstrap.tar.xz) = dedbc8619af5141f7cba108c4060cbbcf9c4c4c8968180ed1dc71d2afdf829a99c479b6daaf5c15018b8cd66de14eb6fee9fc4072f81546067544a6a6a20b641
+SHA512 (dotnet-arm64-prebuilts-2021-10-29.tar.gz) = e24fb8bb8b0fb24f52a68d472356574d8edf7af554b14618aeeae6ff76b54ce5e6d8a9deb056f9bc052bff8d17bae01c6475217039508bb0e08303f9f6c4b5d1
+SHA512 (dotnet-s390x-prebuilts-2021-10-29.tar.gz) = 6ea9d857edce50efd1cc35a73b3b3ccb170bbdb5cc4c8b20fb0ee1c7cb75cc573a565b01ef1bf4eec10a3e6e5209143957425cee5ff3fe24c7c1c89813272a99
commit 2e89959290ded7fa3b68f037f49ccd19123cbb86
Merge: 430e989 8b78620
Author: Omair Majid <omajid(a)redhat.com>
Date: Sun Dec 19 12:12:42 2021 -0500
Merge from dotnet-sig's dotnet6.0 repository
diff --cc README.md
index 13547e4,5289f61..a3681f2
--- a/README.md
+++ b/README.md
@@@ -1,3 -1,137 +1,137 @@@
# dotnet6.0
- The dotnet6.0 package
-This is the pre-release .NET 6.0 package for Fedora.
++This is the .NET 6.0 package for Fedora.
+
+ This package is maintained by the Fedora DotNet SIG (Special Interest
+ Group). You can find out more about the DotNet SIG at:
+
+ - https://fedoraproject.org/wiki/SIGs/DotNet
+ - https://fedoraproject.org/wiki/DotNet
+ - https://lists.fedoraproject.org/archives/list/dotnet-sig@lists.fedoraproj...
+
+ Please report any issues [using
-bugzilla](https://bugzilla.redhat.com/enter_bug.cgi?product=Fedora&component=dotnet5.0).
++bugzilla](https://bugzilla.redhat.com/enter_bug.cgi?product=Fedora&component=dotnet6.0).
+
+ # Specification
+
+ This package follows [package naming and contents suggested by
+ upstream](https://docs.microsoft.com/en-us/dotnet/core/build/distribution...,
+ with one exception. It installs dotnet to `/usr/lib64/dotnet` (aka
+ `%{_libdir}`).
+
+ # Contributing
+
+ The steps below are for the final package. Please only contribute to this
+ pre-release version this if you know what you are doing. Original instructions
+ follow.
+
+ ## General Changes
+
+ 1. Fork the repo.
+
+ 2. Checkout the forked repository.
+
- - `git clone ssh://$USER@pkgs.fedoraproject.org/forks/$USER/rpms/dotnet5.0.git`
- - `cd dotnet5.0`
++ - `git clone ssh://$USER@pkgs.fedoraproject.org/forks/$USER/rpms/dotnet6.0.git`
++ - `cd dotnet6.0`
+
+ 3. Make your changes. Don't forget to add a changelog.
+
+ 4. Do local builds.
+
+ - `fedpkg local`
+
+ 5. Fix any errors that come up and rebuild until it works locally.
+
+ 6. Do builds in koji.
+
+ - `fedpkg scratch-build --srpm`
+
+ 8. Commit the changes to the git repo.
+
+ - `git add` any new patches
+ - `git remove` any now-unnecessary patches
+ - `git commit -a`
+ - `git push`
+
+ 9. Create a pull request with your changes.
+
+ 10. Once the tests in the pull-request pass, and reviewers are happy, do a real
+ build.
+
+ - `fedpkg build`
+
+ 11. For non-rawhide releases, file updates using bodhi to ship the just-built
+ package out to users.
+
+ - https://bodhi.fedoraproject.org/updates/new
+
+ OR
+
+ - `fedpkg update`
+
+ ## Updating to an new upstream release
+
+ 1. Fork the repo.
+
+ 2. Checkout the forked repository.
+
- - `git clone ssh://$USER@pkgs.fedoraproject.org/forks/$USER/rpms/dotnet5.0.git`
- - `cd dotnet5.0`
++ - `git clone ssh://$USER@pkgs.fedoraproject.org/forks/$USER/rpms/dotnet6.0.git`
++ - `cd dotnet6.0`
+
+ 3. Build the new upstream source tarball. Update the versions in the
+ spec file. Add a changelog. This is generally automated by the
+ following.
+
+ - `./update-release <sdk-version> <runtime-version>`
+
+ If this fails because of compiler errors, you might have to figure
+ out a fix, then add the patch in `build-dotnet-tarball` script
+ rather than the spec file.
+
+ 4. Do local builds.
+
+ - `fedpkg local`
+
+ 5. Fix any errors that come up and rebuild until it works locally. Any
+ patches that are needed at this point should be added to the spec file.
+
+ 6. Do builds in koji.
+
+ - `fedpkg scratch-build --srpm`
+
+ 7. Upload the source archive to the Fedora look-aside cache.
+
+ - `fedpkg new-sources path-to-generated-dotnet-source-tarball.tar.gz`
+
+ 8. Commit the changes to the git repo.
+
+ - `git add` any new patches
+ - `git remove` any now-unnecessary patches
+ - `git commit -a`
+ - `git push`
+
+ 9. Create a pull request with your changes.
+
+ 10. Once the tests in the pull-request pass, and reviewers are happy, do a real
+ build.
+
+ - `fedpkg build`
+
+ 11. For non-rawhide releases, file updates using bodhi to ship the just-built
+ package out to users.
+
+ - https://bodhi.fedoraproject.org/updates/new
+
+ OR
+
+ - `fedpkg update`
+
+ # Testing
+
+ This package uses CI tests as defined in `tests/test.yml`. Creating a
+ pull-request or running a build will fire off tests and flag any issues. We have
+ enabled gating (via `gating.yaml`) on the tests. That prevents a build
+ that fails any test from being released until the failures are waived.
+
+ The tests themselves are contained in this external repository:
+ https://github.com/redhat-developer/dotnet-regular-tests/
commit 430e989807ca8c3d996e5e3f914e5964d97c0a55
Author: Gwyn Ciesla <limb(a)fedoraproject.org>
Date: Fri Dec 17 19:15:24 2021 +0000
Added the README
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..13547e4
--- /dev/null
+++ b/README.md
@@ -0,0 +1,3 @@
+# dotnet6.0
+
+The dotnet6.0 package
commit 8b78620e7d10c6712e103717c9c9dc073baf0702
Author: Omair Majid <omajid(a)redhat.com>
Date: Thu Dec 2 16:43:41 2021 -0500
Fix Fedora macro
It needs to be optional, using %{?..} syntax to make sure it doesn't
error out on non-Fedora systems.
diff --git a/dotnet6.0.spec b/dotnet6.0.spec
index 026fd19..2c6abf5 100644
--- a/dotnet6.0.spec
+++ b/dotnet6.0.spec
@@ -605,7 +605,7 @@ echo "Testing build results for debug symbols..."
%check
-%if 0%{fedora} > 35
+%if 0%{?fedora} > 35
# lttng in Fedora > 35 is incompatible with .NET
export COMPlus_LTTng=0
%endif
commit fcca190f6a4c7d3fad0bdb92a62fc35a117ec845
Author: Omair Majid <omajid(a)redhat.com>
Date: Thu Dec 2 12:23:20 2021 -0500
Disable lttng at runtime manually
diff --git a/dotnet6.0.spec b/dotnet6.0.spec
index 7aed931..026fd19 100644
--- a/dotnet6.0.spec
+++ b/dotnet6.0.spec
@@ -409,9 +409,6 @@ ln -s %{_libdir}/dotnet/reference-packages/Private.SourceBuild.ReferencePackages
# Fix bad hardcoded path in build
sed -i 's|/usr/share/dotnet|%{_libdir}/dotnet|' src/runtime.*/src/native/corehost/hostmisc/pal.unix.cpp
-# Disable warnings
-# sed -i 's|skiptests|skiptests ignorewarnings|' repos/runtime.common.props
-
pushd src/runtime.*
%patch100 -p1
%patch101 -p1
@@ -522,6 +519,11 @@ unset CFLAGS
unset CXXFLAGS
unset LDFLAGS
+# Disable tracing, which is incompatible with certain versions of
+# lttng See https://github.com/dotnet/runtime/issues/57784. The
+# suggested compile-time change doesn't work, unfrotunately.
+export COMPlus_LTTng=0
+
VERBOSE=1 ./build.sh \
%if %{without bootstrap}
--with-sdk previously-built-dotnet \
@@ -603,6 +605,11 @@ echo "Testing build results for debug symbols..."
%check
+%if 0%{fedora} > 35
+# lttng in Fedora > 35 is incompatible with .NET
+export COMPlus_LTTng=0
+%endif
+
%{buildroot}%{_libdir}/dotnet/dotnet --info
commit 84b428a155cda8d96ddf3aa2a844d22b1ac27c50
Author: Omair Majid <omajid(a)redhat.com>
Date: Tue Nov 30 08:40:18 2021 -0500
Fix build against clang 13
diff --git a/copr-build b/copr-build
index 8a7cf46..f0d4ca3 100755
--- a/copr-build
+++ b/copr-build
@@ -4,7 +4,7 @@ set -euo pipefail
set -x
-fedpkg --release f32 srpm 2>&1 | tee fedpkg.output
+fedpkg --release f34 srpm 2>&1 | tee fedpkg.output
srpm_name=$(grep 'Wrote: ' fedpkg.output | cut -d' ' -f 2)
diff --git a/dotnet6.0.spec b/dotnet6.0.spec
index fc63a3f..7aed931 100644
--- a/dotnet6.0.spec
+++ b/dotnet6.0.spec
@@ -88,6 +88,8 @@ Patch100: runtime-arm64-lld-fix.patch
Patch101: runtime-mono-remove-ilstrip.patch
# https://github.com/dotnet/runtime/pull/61442
Patch102: runtime-61442-disable-werror.patch
+# https://github.com/dotnet/runtime/pull/62170
+Patch103: runtime-62170-clang13.patch
# https://github.com/dotnet/command-line-api/pull/1401
Patch300: command-line-api-use-work-tree-with-git-apply.patch
@@ -414,6 +416,7 @@ pushd src/runtime.*
%patch100 -p1
%patch101 -p1
%patch102 -p1
+%patch103 -p1
popd
pushd src/command-line-api.*
diff --git a/runtime-62170-clang13.patch b/runtime-62170-clang13.patch
new file mode 100644
index 0000000..8c47186
--- /dev/null
+++ b/runtime-62170-clang13.patch
@@ -0,0 +1,76 @@
+From 9cd95a5608b667e22727d9eb1a5330efd61dfe50 Mon Sep 17 00:00:00 2001
+From: Jan Vorlicek <janvorli(a)microsoft.com>
+Date: Mon, 29 Nov 2021 17:32:45 -0800
+Subject: [PATCH] Fix clang 13 induced runtime issues
+
+The clang 13 optimizer started to assume that "this" pointer is always
+properly aligned. That lead to elimination of some code that was actually
+needed.
+It also takes pointer aliasing rules more strictly in one place in jit.
+That caused the optimizer to falsely assume that a callee with an argument
+passed by reference is not modifying that argument and used a stale
+copy of the original value at the caller site.
+
+This change fixes both of the issues. With this fix, runtime compiled
+using clang 13 seems to be fully functional.
+---
+ src/coreclr/inc/corhlpr.h | 8 ++++----
+ src/coreclr/jit/bitsetasshortlong.h | 4 ++--
+ 2 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/src/coreclr/inc/corhlpr.h b/src/coreclr/inc/corhlpr.h
+index 450514da95c1..427e8cdc0ff5 100644
+--- a/src/coreclr/inc/corhlpr.h
++++ b/src/coreclr/inc/corhlpr.h
+@@ -336,7 +336,7 @@ struct COR_ILMETHOD_SECT
+ const COR_ILMETHOD_SECT* Next() const
+ {
+ if (!More()) return(0);
+- return ((COR_ILMETHOD_SECT*)(((BYTE *)this) + DataSize()))->Align();
++ return ((COR_ILMETHOD_SECT*)Align(((BYTE *)this) + DataSize()));
+ }
+
+ const BYTE* Data() const
+@@ -374,9 +374,9 @@ struct COR_ILMETHOD_SECT
+ return((AsSmall()->Kind & CorILMethod_Sect_FatFormat) != 0);
+ }
+
+- const COR_ILMETHOD_SECT* Align() const
++ static const void* Align(const void* p)
+ {
+- return((COR_ILMETHOD_SECT*) ((((UINT_PTR) this) + 3) & ~3));
++ return((void*) ((((UINT_PTR) p) + 3) & ~3));
+ }
+
+ protected:
+@@ -579,7 +579,7 @@ typedef struct tagCOR_ILMETHOD_FAT : IMAGE_COR_ILMETHOD_FAT
+
+ const COR_ILMETHOD_SECT* GetSect() const {
+ if (!More()) return (0);
+- return(((COR_ILMETHOD_SECT*) (GetCode() + GetCodeSize()))->Align());
++ return(((COR_ILMETHOD_SECT*) COR_ILMETHOD_SECT::Align(GetCode() + GetCodeSize())));
+ }
+ } COR_ILMETHOD_FAT;
+
+diff --git a/src/coreclr/jit/bitsetasshortlong.h b/src/coreclr/jit/bitsetasshortlong.h
+index d343edeeda4c..365cf346a10a 100644
+--- a/src/coreclr/jit/bitsetasshortlong.h
++++ b/src/coreclr/jit/bitsetasshortlong.h
+@@ -345,7 +345,7 @@ class BitSetOps</*BitSetType*/ BitSetShortLongRep,
+ {
+ if (IsShort(env))
+ {
+- (size_t&)out = (size_t)out & ((size_t)gen | (size_t)in);
++ out = (BitSetShortLongRep)((size_t)out & ((size_t)gen | (size_t)in));
+ }
+ else
+ {
+@@ -361,7 +361,7 @@ class BitSetOps</*BitSetType*/ BitSetShortLongRep,
+ {
+ if (IsShort(env))
+ {
+- (size_t&)in = (size_t)use | ((size_t)out & ~(size_t)def);
++ in = (BitSetShortLongRep)((size_t)use | ((size_t)out & ~(size_t)def));
+ }
+ else
+ {
commit abafa176a7ac41bc6b2ebf84040bd39bca21c15a
Author: Omair Majid <omajid(a)redhat.com>
Date: Tue Nov 16 08:20:56 2021 -0500
Fix build errors caused by Werror
diff --git a/dotnet6.0.spec b/dotnet6.0.spec
index d222adf..fc63a3f 100644
--- a/dotnet6.0.spec
+++ b/dotnet6.0.spec
@@ -86,6 +86,8 @@ Source11: dotnet.sh.in
Patch100: runtime-arm64-lld-fix.patch
# Mono still has a dependency on (now unbuildable) ILStrip which was removed from CoreCLR: https://github.com/dotnet/runtime/pull/60315
Patch101: runtime-mono-remove-ilstrip.patch
+# https://github.com/dotnet/runtime/pull/61442
+Patch102: runtime-61442-disable-werror.patch
# https://github.com/dotnet/command-line-api/pull/1401
Patch300: command-line-api-use-work-tree-with-git-apply.patch
@@ -411,6 +413,7 @@ sed -i 's|/usr/share/dotnet|%{_libdir}/dotnet|' src/runtime.*/src/native/corehos
pushd src/runtime.*
%patch100 -p1
%patch101 -p1
+%patch102 -p1
popd
pushd src/command-line-api.*
diff --git a/runtime-61442-disable-werror.patch b/runtime-61442-disable-werror.patch
new file mode 100644
index 0000000..401440c
--- /dev/null
+++ b/runtime-61442-disable-werror.patch
@@ -0,0 +1,41 @@
+From f41c06ba040adf1930156340c5b03d9864d8a1d4 Mon Sep 17 00:00:00 2001
+From: Omair Majid <omajid(a)redhat.com>
+Date: Wed, 10 Nov 2021 17:54:45 -0500
+Subject: [PATCH] The 6.0 branch is no longer pre-release
+
+This has limited affects, but it should have been set to false since 6.0
+is now stable/released.
+
+The one difference it makes is that -Werror is disabled when building
+native code.
+---
+ Directory.Build.props | 2 +-
+ eng/native/configureplatform.cmake | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/Directory.Build.props b/Directory.Build.props
+index f19ea9208c2c..5cb87bb7c257 100644
+--- a/Directory.Build.props
++++ b/Directory.Build.props
+@@ -255,7 +255,7 @@
+ <PackageReleaseNotes>https://go.microsoft.com/fwlink/?LinkID=799421</PackageReleaseNotes>
+ <!-- Indicates this is not an officially supported release. Release branches should set this to false. -->
+ <!-- Keep it in sync with PRERELEASE in eng/native/configureplatform.cmake -->
+- <IsPrerelease>true</IsPrerelease>
++ <IsPrerelease>false</IsPrerelease>
+ <IsPrivateAssembly>$(MSBuildProjectName.Contains('Private'))</IsPrivateAssembly>
+ <!-- Private packages should not be stable -->
+ <SuppressFinalPackageVersion Condition="'$(SuppressFinalPackageVersion)' == '' and $(IsPrivateAssembly)">true</SuppressFinalPackageVersion>
+diff --git a/eng/native/configureplatform.cmake b/eng/native/configureplatform.cmake
+index 519431772004..af1c88bce5b6 100644
+--- a/eng/native/configureplatform.cmake
++++ b/eng/native/configureplatform.cmake
+@@ -2,7 +2,7 @@ include(${CMAKE_CURRENT_LIST_DIR}/functions.cmake)
+
+ # If set, indicates that this is not an officially supported release
+ # Keep in sync with IsPrerelease in Directory.Build.props
+-set(PRERELEASE 1)
++set(PRERELEASE 0)
+
+ #----------------------------------------
+ # Detect and set platform variable names
commit 0fdb2e0331d111f1fe03c9418de35754cb71eac2
Author: Omair Majid <omajid(a)redhat.com>
Date: Thu Nov 11 08:10:43 2021 -0500
Update to .NET 6 GA
diff --git a/arcade-no-apphost.patch b/arcade-no-apphost.patch
new file mode 100644
index 0000000..cec03a1
--- /dev/null
+++ b/arcade-no-apphost.patch
@@ -0,0 +1,36 @@
+Index: a/src/Microsoft.DotNet.GitSync.CommitManager/Microsoft.DotNet.GitSync.CommitManager.csproj
+===================================================================
+--- a/src/Microsoft.DotNet.GitSync.CommitManager/Microsoft.DotNet.GitSync.CommitManager.csproj
++++ b/src/Microsoft.DotNet.GitSync.CommitManager/Microsoft.DotNet.GitSync.CommitManager.csproj
+@@ -5,6 +5,7 @@
+ <TargetFramework>netcoreapp3.1</TargetFramework>
+ <LangVersion>latest</LangVersion>
+ <ExcludeFromSourceBuild>true</ExcludeFromSourceBuild>
++ <UseAppHost>false</UseAppHost>
+ </PropertyGroup>
+
+ <ItemGroup>
+Index: a/src/Microsoft.DotNet.SwaggerGenerator/Microsoft.DotNet.SwaggerGenerator.CmdLine/Microsoft.DotNet.SwaggerGenerator.CmdLine.csproj
+===================================================================
+--- a/src/Microsoft.DotNet.SwaggerGenerator/Microsoft.DotNet.SwaggerGenerator.CmdLine/Microsoft.DotNet.SwaggerGenerator.CmdLine.csproj
++++ b/src/Microsoft.DotNet.SwaggerGenerator/Microsoft.DotNet.SwaggerGenerator.CmdLine/Microsoft.DotNet.SwaggerGenerator.CmdLine.csproj
+@@ -9,6 +9,7 @@
+ <ToolCommandName>dotnet-swaggergen</ToolCommandName>
+ <SignAssembly>false</SignAssembly>
+ <ExcludeFromSourceBuild>true</ExcludeFromSourceBuild>
++ <UseAppHost>false</UseAppHost>
+ </PropertyGroup>
+
+ <ItemGroup>
+Index: a/src/Microsoft.DotNet.XUnitConsoleRunner/src/Microsoft.DotNet.XUnitConsoleRunner.csproj
+===================================================================
+--- a/src/Microsoft.DotNet.XUnitConsoleRunner/src/Microsoft.DotNet.XUnitConsoleRunner.csproj
++++ b/src/Microsoft.DotNet.XUnitConsoleRunner/src/Microsoft.DotNet.XUnitConsoleRunner.csproj
+@@ -11,6 +11,7 @@
+ <VersionPrefix>2.5.1</VersionPrefix>
+ <ExcludeFromSourceBuild>true</ExcludeFromSourceBuild>
+ <RollForward>Major</RollForward>
++ <UseAppHost>false</UseAppHost>
+ </PropertyGroup>
+
+ <ItemGroup>
diff --git a/build-arm64-bootstrap-tarball b/build-arm64-bootstrap-tarball
new file mode 100755
index 0000000..9f1cc7d
--- /dev/null
+++ b/build-arm64-bootstrap-tarball
@@ -0,0 +1,43 @@
+#!/bin/bash
+
+set -euo pipefail
+
+set -x
+
+bootstrap_dir=$(readlink -f "$1")
+
+version=$(jq -r '.tools.dotnet' "$bootstrap_dir"/global.json)
+
+date=$(date +%F)
+
+mkdir -p "dotnet-arm64-prebuilts-$date"
+
+pushd "dotnet-arm64-prebuilts-$date"
+
+# Getting the exact matching rc2 version gets us an arm64 build without this
+# fix https://github.com/dotnet/runtime/pull/58959. That causes a segfault on
+# startup.
+# wget "https://dotnetcli.azureedge.net/dotnet/Sdk/$version/dotnet-sdk-$version-l..."
+
+wget https://aka.ms/dotnet/6.0.1XX-rc2/daily/dotnet-sdk-linux-arm64.tar.gz
+
+mapfile -t linux_x64_packages < <(tar tf "$bootstrap_dir"/packages/archive/Private.SourceBuilt.Artifacts.*.tar.gz | grep linux-x64)
+
+for package in "${linux_x64_packages[@]}"; do
+ if [[ "$package" = *'.Intermediate.'* ]]; then
+ continue;
+ fi
+
+ filename=${package##*/}
+ name=${filename%.6.0*}
+ arm_name=${name/linux-x64/linux-arm64}
+ version="6.0${filename##*6.0}"
+ version=${version%.*}
+
+ nappo download --verbose "$arm_name" "$version"
+
+done
+
+popd
+
+tar czf "dotnet-arm64-prebuilts-$date.tar.gz" "dotnet-arm64-prebuilts-$date"
diff --git a/build-dotnet-tarball b/build-dotnet-tarball
index 826752b..8f15c6f 100755
--- a/build-dotnet-tarball
+++ b/build-dotnet-tarball
@@ -1,11 +1,11 @@
#!/bin/bash
# Usage:
-# build-dotnet-tarball [--bootstrap] <tag-from-source-build>
+# build-dotnet-tarball [--bootstrap] <tag-from-installer>
#
-# Creates a source archive from a tag (or commit) at github.com/dotnet/source-build
+# Creates a source archive from a tag (or commit) at github.com/dotnet/installer
-# Source-build is a little strange, we need to clone it, check out the
+# installer is a little strange, we need to clone it, check out the
# tag, build it and then create a tarball from the archive directory
# it creates. Also, it is likely that the source archive is only
# buildable on the OS it was initially created in.
@@ -15,9 +15,9 @@ IFS=$'\n\t'
function print_usage {
echo "Usage:"
- echo "$0 [--bootstrap] <tag-from-source-build>"
+ echo "$0 [--bootstrap] <tag-from-installer>"
echo
- echo "Creates a source archive from a tag at https://github.com/dotnet/source-build"
+ echo "Creates a source archive from a tag at https://github.com/dotnet/installer"
echo ""
echo " --bootstrap build a source tarball usable for bootstrapping .NET"
}
@@ -102,14 +102,16 @@ set -x
dir_name="dotnet-${tag}"
unmodified_tarball_name="${dir_name}-original"
tarball_name="${dir_name}"
+tarball_suffix=.tar.gz
if [[ ${build_bootstrap} == true ]]; then
unmodified_tarball_name="${unmodified_tarball_name}-${arch}-bootstrap"
tarball_name="${tarball_name}-${arch}-bootstrap"
+ tarball_suffix=.tar.xz
fi
-if [ -f "${tarball_name}.tar.gz" ]; then
- echo "error: ${tarball_name}.tar.gz already exists"
+if [ -f "${tarball_name}${tarball_suffix}" ]; then
+ echo "error: ${tarball_name}${tarball_suffix} already exists"
exit 1
fi
@@ -125,15 +127,9 @@ if [ ! -f "${unmodified_tarball_name}.tar.gz" ]; then
./build.sh /p:ArcadeBuildTarball=true /p:TarballDir="$(readlink -f ../"${unmodified_tarball_name}")"
popd
- if [[ ${build_bootstrap} == true ]]; then
- pushd "${unmodified_tarball_name}"
- ./prep.sh
- popd
- fi
-
popd
- tar czf "${unmodified_tarball_name}.tar.gz" -C "${temp_dir}" "${unmodified_tarball_name}"
+ tar cf "${unmodified_tarball_name}.tar.gz" -C "${temp_dir}" "${unmodified_tarball_name}"
rm -rf "${temp_dir}"
fi
@@ -145,15 +141,36 @@ mv "${unmodified_tarball_name}" "${tarball_name}"
pushd "${tarball_name}"
if [[ ${build_bootstrap} == true ]]; then
+ if [[ "$(wc -l < packages/archive/archiveArtifacts.txt)" != 1 ]]; then
+ echo "error: this is not going to work! update $0 to fix this issue."
+ exit 1
+ fi
+
+ pushd packages/archive/
+ curl -O $(cat archiveArtifacts.txt)
+ popd
+
+ mkdir foo
+ pushd foo
+
+ tar xf ../packages/archive/Private.SourceBuilt.Artifacts.*.tar.gz
+ sed -i -E 's|<MicrosoftNETHostModelPackageVersion>6.0.0-rtm.21521.1</|<MicrosoftNETHostModelPackageVersion>6.0.0-rtm.21521.4</|' PackageVersions.props
+ sed -i -E 's|<MicrosoftNETHostModelVersion>6.0.0-rtm.21521.1</|<MicrosoftNETHostModelVersion>6.0.0-rtm.21521.4</|' PackageVersions.props
+ cat PackageVersions.props
+
+ tar czf ../packages/archive/Private.SourceBuilt.Artifacts.*.tar.gz *
+
+ popd
+ rm -rf foo
+
+ ./prep.sh --bootstrap
+
mkdir -p fixup-previously-source-built-artifacts
pushd fixup-previously-source-built-artifacts
tar xf ../packages/archive/Private.SourceBuilt.Artifacts.*.tar.gz
find . -iname '*fedora*nupkg' -delete
- rm runtime.linux-x64.Microsoft.NETCore.IL*sm.*.nupkg
- wget https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_p...
- wget https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_p...
# We must keep the original file names in the archive, even prepending a ./ leads to issues
- tar -I 'gzip -9' -cf ../packages/archive/Private.SourceBuilt.Artifacts.*.tar.gz *
+ tar -I 'gzip -1' -cf ../packages/archive/Private.SourceBuilt.Artifacts.*.tar.gz *
popd
rm -rf fixup-previously-source-built-artifacts
@@ -164,12 +181,26 @@ fi
# Remove files with funny licenses, crypto implementations and other
# not-very-useful artifacts to reduce tarball size
-# FIXME
-#rm -r src/aspnetcore.*/src/SignalR/clients/java/signalr/gradle*
-#find src/aspnetcore.*/src -type d -name samples -print0 | xargs -0 rm -r
-#rm -r src/nuget-client.*/test/EndToEnd
-#rm -r src/source-build.*/src/humanizer/samples/
+
+# Binaries for gradle
+rm -r src/aspnetcore.*/src/SignalR/clients/java/signalr/gradle*
+
+# Unnecessary crypto implementation: IDEA
+rm -r src/runtime.*/src/tests/JIT/Performance/CodeQuality/Bytemark/
+
+# https://github.com/dotnet/aspnetcore/issues/34785
+find src/aspnetcore.*/src -type d -name samples -print0 | xargs -0 rm -r
+
+# https://github.com/NuGet/Home/issues/11094
+rm -r src/nuget-client.*/test/EndToEnd
+
+# https://github.com/Humanizr/sample-aspnetmvc/issues/1
+rm -r src/source-build.*/src/humanizer/samples/
popd
-tar -I 'gzip -9' -cf "${tarball_name}.tar.gz" "${tarball_name}"
+if [[ ${build_bootstrap} == true ]]; then
+ tar -I 'xz -T 0' -cf "${tarball_name}${tarball_suffix}" "${tarball_name}"
+else
+ tar -czf "${tarball_name}${tarball_suffix}" "${tarball_name}"
+fi
diff --git a/check-debug-symbols.py b/check-debug-symbols.py
index be26d87..b873c77 100755
--- a/check-debug-symbols.py
+++ b/check-debug-symbols.py
@@ -65,7 +65,7 @@ def scan_file(file):
def is_elf(file):
result = subprocess.run(['file', file], stdout=subprocess.PIPE, encoding='utf-8', check=True)
- return re.search('ELF 64-bit LSB (?:executable|shared object)', result.stdout)
+ return re.search('ELF 64-bit LSB (?:pie )(?:executable|shared object)', result.stdout)
def scan_file_if_sensible(file):
if is_elf(file):
diff --git a/dotnet6.0.spec b/dotnet6.0.spec
index 6f523a3..d222adf 100644
--- a/dotnet6.0.spec
+++ b/dotnet6.0.spec
@@ -20,21 +20,21 @@
# until that's done, disable LTO. This has to happen before setting the flags below.
%define _lto_cflags %{nil}
-%global host_version 6.0.0-rc.2.21470.23
-%global runtime_version 6.0.0-rc.2.21470.23
-%global aspnetcore_runtime_version 6.0.0-rc.2.21470.37
-%global sdk_version 6.0.100-rc.2.21474.1
-%global templates_version 6.0.0-rc.2.21470.37
+%global host_version 6.0.0
+%global runtime_version 6.0.0
+%global aspnetcore_runtime_version 6.0.0
+%global sdk_version 6.0.100
+%global templates_version 6.0.0
#%%global templates_version %%(echo %%{runtime_version} | awk 'BEGIN { FS="."; OFS="." } {print $1, $2, $3+1 }')
-%global host_rpm_version 6.0.0
-%global runtime_rpm_version 6.0.0
-%global aspnetcore_runtime_rpm_version %{runtime_rpm_version}
-%global sdk_rpm_version 6.0.0
+%global host_rpm_version %{host_version}
+%global runtime_rpm_version %{runtime_version}
+%global aspnetcore_runtime_rpm_version %{aspnetcore_runtime_version}
+%global sdk_rpm_version %{sdk_version}
# upstream can update releases without revving the SDK version so these don't always match
#%%global upstream_tag v%%{sdk_version}-SDK
-%global upstream_tag 28be3e9a006d90d8c6e87d4353b77882829df718
+%global upstream_tag 9e8b04bbff820c93c142f99a507a46b976f5c14c
%if 0%{?fedora} || 0%{?rhel} < 8
%global use_bundled_libunwind 0
@@ -42,7 +42,7 @@
%global use_bundled_libunwind 1
%endif
-%ifarch aarch64
+%ifarch aarch64 s390x
%global use_bundled_libunwind 1
%endif
@@ -52,49 +52,94 @@
%ifarch aarch64
%global runtime_arch arm64
%endif
+%ifarch s390x
+%global runtime_arch s390x
+%endif
%{!?runtime_id:%global runtime_id %(. /etc/os-release ; echo "${ID}.${VERSION_ID%%.*}")-%{runtime_arch}}
Name: dotnet6.0
Version: %{sdk_rpm_version}
-Release: 0.3.%{upstream_tag}%{?dist}
+Release: 1%{?dist}
Summary: .NET Runtime and SDK
License: MIT and ASL 2.0 and BSD and LGPLv2+ and CC-BY and CC0 and MS-PL and EPL-1.0 and GPL+ and GPLv2 and ISC and OFL and zlib
URL: https://github.com/dotnet/
+%if %{with bootstrap}
# The source is generated on a Fedora box via:
# ./build-dotnet-tarball --bootstrap %%{upstream_tag}
-Source0: dotnet-%{upstream_tag}-x64-bootstrap.tar.gz
+Source0: dotnet-%{upstream_tag}-x64-bootstrap.tar.xz
+# Generated via ./build-arm64-bootstrap-tarball
+Source1: dotnet-arm64-prebuilts-2021-10-29.tar.gz
+# Generated manually, same pattern as the arm64 tarball
+Source2: dotnet-s390x-prebuilts-2021-10-29.tar.gz
+%else
+# The source is generated on a Fedora box via:
+# ./build-dotnet-tarball %%{upstream_tag}
+Source0: dotnet-%{upstream_tag}.tar.gz
+%endif
Source10: check-debug-symbols.py
Source11: dotnet.sh.in
-# https://github.com/NuGet/NuGet.Client/pull/4254
-Patch200: nuget-client-use-work-tree-with-git-apply.patch
+# Fix using lld on Fedora
+Patch100: runtime-arm64-lld-fix.patch
+# Mono still has a dependency on (now unbuildable) ILStrip which was removed from CoreCLR: https://github.com/dotnet/runtime/pull/60315
+Patch101: runtime-mono-remove-ilstrip.patch
+
# https://github.com/dotnet/command-line-api/pull/1401
Patch300: command-line-api-use-work-tree-with-git-apply.patch
+
# https://github.com/microsoft/vstest/pull/3046
Patch400: vstest-use-work-tree-with-git-apply.patch
+# This is the suggestion from https://github.com/dotnet/source-build/pull/2450, applied
Patch500: fsharp-use-work-tree-with-git-apply.patch
+# Disable apphost, needed for s390x
+Patch501: fsharp-no-apphost.patch
+# This is the suggestion from https://github.com/dotnet/source-build/pull/2450, applied
Patch600: xliff-tasks-use-work-tree-with-git-apply.patch
+# Disable apphost, needed for s390x
+Patch700: arcade-no-apphost.patch
+
+# Named mutex fix for mono, needed for s390x. https://github.com/dotnet/roslyn/pull/57003
+Patch800: roslyn-57003-mono-named-mutex.patch
+# Disable apphost, needed for s390x
+Patch801: roslyn-no-apphost.patch
+
+# Disable apphost, needed for s390x
+Patch900: roslyn-analyzers-no-apphost.patch
+
+# Fix mono-specific runtime crashes running msbuild. CoreCLR does not
+# load types that are not actually used/invoked at runtime, while mono
+# does. System.Configuration and System.Security are missing in
+# source-build builds, which breaks msbuild.
+Patch1000: msbuild-no-systemsecurity.patch
+Patch1001: msbuild-no-systemconfiguration.patch
+
# Disable telemetry by default; make it opt-in
-Patch1500: sdk-telemetry-optout.patch
+Patch1500: sdk-telemetry-optout.patch
+# https://github.com/dotnet/sdk/pull/22373
+Patch1501: sdk-22373-portablerid.patch
+
+# https://github.com/dotnet/installer/pull/12516
+Patch1600: installer-12516-portablerid.patch
+# https://github.com/dotnet/installer/pull/12622
+Patch1601: installer-12622-fix-runtime-symbols.patch
-#%%if 0%%{?fedora} > 32 || 0%%{?rhel} > 8
-#ExclusiveArch: aarch64 x86_64
-#%%else
+%if 0%{?fedora} || 0%{?rhel} >= 8
+ExclusiveArch: aarch64 x86_64 s390x
+%else
ExclusiveArch: x86_64
-#%%endif
+%endif
BuildRequires: clang
BuildRequires: cmake
BuildRequires: coreutils
%if %{without bootstrap}
-BuildRequires: dotnet-sdk-6.0-build-reference-packages
BuildRequires: dotnet-sdk-6.0
BuildRequires: dotnet-sdk-6.0-source-built-artifacts
%endif
@@ -105,18 +150,20 @@ BuildRequires: glibc-langpack-en
%endif
BuildRequires: hostname
BuildRequires: krb5-devel
-BuildRequires: libcurl-devel
BuildRequires: libicu-devel
%if ! %{use_bundled_libunwind}
BuildRequires: libunwind-devel
%endif
-BuildRequires: lldb-devel
+%ifarch aarch64
+BuildRequires: lld
+%endif
BuildRequires: llvm
BuildRequires: lttng-ust-devel
BuildRequires: make
BuildRequires: openssl-devel
BuildRequires: python3
BuildRequires: tar
+BuildRequires: util-linux
BuildRequires: zlib-devel
%description
@@ -319,12 +366,25 @@ These are not meant for general use.
%if %{without bootstrap}
%setup -q -n dotnet-%{upstream_tag}
%else
-%ifarch x86_64
-%setup -q -T -b 0 -n dotnet-%{upstream_tag}-%{runtime_arch}-bootstrap
-%endif
+
+%setup -q -T -b 0 -n dotnet-%{upstream_tag}-x64-bootstrap
+
+%ifnarch x86_64
+
+rm -rf .dotnet
%ifarch aarch64
-%setup -q -T -b 0 -n dotnet-%{upstream_tag}-%{runtime_arch}-bootstrap
+tar -x --strip-components=1 -f %{SOURCE1} -C packages/prebuilt
+%endif
+%ifarch s390x
+tar -x --strip-components=1 -f %{SOURCE2} -C packages/prebuilt
%endif
+mkdir -p .dotnet
+tar xf packages/prebuilt/dotnet-sdk*.tar.gz -C .dotnet/
+rm packages/prebuilt/dotnet-sdk*.tar.gz
+boot_sdk_version=$(ls -1 .dotnet/sdk/)
+sed -i -E 's|"dotnet": "[^"]+"|"dotnet" : "'$boot_sdk_version'"|' global.json
+%endif
+
%endif
%if %{without bootstrap}
@@ -336,9 +396,7 @@ find -iname '*.nupkg' -type f -delete
find -iname '*.zip' -type f -delete
rm -rf .dotnet/
rm -rf packages/source-built
-%endif
-%if %{without bootstrap}
mkdir -p packages/archive
ln -s %{_libdir}/dotnet/source-built-artifacts/Private.SourceBuilt.Artifacts.*.tar.gz packages/archive/
ln -s %{_libdir}/dotnet/reference-packages/Private.SourceBuild.ReferencePackages*.tar.gz packages/archive/
@@ -351,10 +409,8 @@ sed -i 's|/usr/share/dotnet|%{_libdir}/dotnet|' src/runtime.*/src/native/corehos
# sed -i 's|skiptests|skiptests ignorewarnings|' repos/runtime.common.props
pushd src/runtime.*
-popd
-
-pushd src/nuget-client.*
-%patch200 -p1
+%patch100 -p1
+%patch101 -p1
popd
pushd src/command-line-api.*
@@ -367,26 +423,53 @@ popd
pushd src/fsharp.*
%patch500 -p1
+%patch501 -p1
popd
pushd src/xliff-tasks.*
%patch600 -p1
popd
+pushd src/arcade.*
+%patch700 -p1
+popd
+
+pushd src/roslyn.*
+%patch800 -p3
+%patch801 -p1
+popd
+
+pushd src/roslyn-analyzers.*
+%patch900 -p1
+popd
+
+pushd src/msbuild.*
+
+# These are mono-specific fixes. Mono is only used on s390x. Restrict
+# patch to s390x to avoid potential risk in other architectures.
+%ifarch s390x
+%patch1000 -p1
+%patch1001 -p1
+%endif
+
+popd
+
pushd src/sdk.*
%patch1500 -p1
+%patch1501 -p1
popd
-%if %{without bootstrap}
-%ifnarch x86_64
-mkdir -p artifacts/obj/%{runtime_arch}/Release
-cp artifacts/obj/x64/Release/PackageVersions.props artifacts/obj/%{runtime_arch}/Release/PackageVersions.props
-%endif
-%endif
+pushd src/installer.*
+%patch1600 -p1
+popd
+
+# We need to apply the patch to the already-built tarball's
+# repos/runtime.common.targets, not to the installer's "source" copy.
+%patch1601 -p5
-# Disable package validation which breaks our build, even though we
-# are injecting "blessed" nuget packages produced by Microsoft.
+# Disable package validation which breaks our build.
# There's no need to run validation in RPM packages anyway.
+# See https://github.com/dotnet/runtime/pull/60881
sed -i -E 's|( /p:BuildDebPackage=false)|\1 /p:EnablePackageValidation=false|' src/runtime.*/eng/SourceBuild.props
%if ! %{use_bundled_libunwind}
@@ -455,10 +538,13 @@ install -dm 0755 %{buildroot}%{_libdir}/dotnet
ls artifacts/%{runtime_arch}/Release
tar xf artifacts/%{runtime_arch}/Release/dotnet-sdk-%{sdk_version}-%{runtime_id}.tar.gz -C %{buildroot}%{_libdir}/dotnet/
-# FIXME: no managed symbols in 6.0?
+# See https://github.com/dotnet/source-build/issues/2579
+find %{buildroot}%{_libdir}/dotnet/ -type f -name 'testhost.x86' -delete
+find %{buildroot}%{_libdir}/dotnet/ -type f -name 'vstest.console' -delete
+
# Install managed symbols
-#tar xf artifacts/%%{runtime_arch}/Release/runtime/dotnet-runtime-symbols-%%{runtime_version}-%%{runtime_id}.tar.gz \
-# -C %%{buildroot}/%%{_libdir}/dotnet/shared/Microsoft.NETCore.App/%%{runtime_version}/
+tar xf artifacts/%{runtime_arch}/Release/runtime/dotnet-runtime-symbols-%{runtime_id}-%{runtime_version}.tar.gz \
+ -C %{buildroot}/%{_libdir}/dotnet/shared/Microsoft.NETCore.App/%{runtime_version}/
# Fix executable permissions on files
find %{buildroot}%{_libdir}/dotnet/ -type f -name 'apphost' -exec chmod +x {} \;
@@ -505,9 +591,8 @@ install -m 0644 artifacts/%{runtime_arch}/Release/Private.SourceBuilt.Artifacts.
# Check debug symbols in all elf objects. This is not in %%check
# because native binaries are stripped by rpm-build after %%install.
# So we need to do this check earlier.
-# FIXME
-#echo "Testing build results for debug symbols..."
-#%%{SOURCE10} -v %%{buildroot}%%{_libdir}/dotnet/
+echo "Testing build results for debug symbols..."
+%{SOURCE10} -v %{buildroot}%{_libdir}/dotnet/
@@ -566,6 +651,24 @@ install -m 0644 artifacts/%{runtime_arch}/Release/Private.SourceBuilt.Artifacts.
%changelog
+* Wed Nov 10 2021 Omair Majid <omajid(a)redhat.com> - 6.0.100-1
+- Update to .NET 6
+
+* Fri Oct 22 2021 Omair Majid <omajid(a)redhat.com> - 6.0.0-0.7.rc2
+- Update to .NET 6 RC2
+
+* Fri Oct 08 2021 Omair Majid <omajid(a)redhat.com> - 6.0.0-0.6.28be3e9a006d90d8c6e87d4353b77882829df718
+- Enable building on arm64
+- Related: RHBZ#1986017
+
+* Sun Oct 03 2021 Omair Majid <omajid(a)redhat.com> - 6.0.0-0.5.28be3e9a006d90d8c6e87d4353b77882829df718
+- Enable building on s390x
+- Related: RHBZ#1986017
+
+* Sun Oct 03 2021 Omair Majid <omajid(a)redhat.com> - 6.0.0-0.4.28be3e9a006d90d8c6e87d4353b77882829df718
+- Clean up tarball and add initial support for s390x
+- Related: RHBZ#1986017
+
* Sun Sep 26 2021 Omair Majid <omajid(a)redhat.com> - 6.0.0-0.3.28be3e9a006d90d8c6e87d4353b77882829df718
- Update to work-in-progress RC2 release
diff --git a/fsharp-no-apphost.patch b/fsharp-no-apphost.patch
new file mode 100644
index 0000000..1534888
--- /dev/null
+++ b/fsharp-no-apphost.patch
@@ -0,0 +1,21 @@
+--- a/tests/benchmarks/MicroPerf/MicroPerf.fsproj
++++ b/tests/benchmarks/MicroPerf/MicroPerf.fsproj
+@@ -9,6 +9,7 @@
+ <OtherFlags>$(OtherFlags) --nowarn:57</OtherFlags>
+ <OtherFlags>$(OtherFlags) --langversion:preview</OtherFlags>
+ <OtherFlags>$(OtherFlags) --define:PREVIEW</OtherFlags>
++ <UseAppHost>false</UseAppHost>
+ <!-- By default this project will compile with the proto compiler -->
+ <!-- Uncommenting this will build with a previous installed compiler -->
+ <!--
+--- a/tests/benchmarks/TaskPerf/TaskPerf.fsproj
++++ b/tests/benchmarks/TaskPerf/TaskPerf.fsproj
+@@ -4,6 +4,7 @@
+ <TargetFramework>net5.0</TargetFramework>
+ <OutputType>Exe</OutputType>
+ <DisableImplicitFSharpCoreReference>true</DisableImplicitFSharpCoreReference>
++ <UseAppHost>false</UseAppHost>
+ <!-- Turn off "This function is for use by compiled F# code and should not be used directly" -->
+ <OtherFlags>$(OtherFlags) --nowarn:1204</OtherFlags>
+ <!-- Turn off "Experimental" -->
+
diff --git a/installer-12516-portablerid.patch b/installer-12516-portablerid.patch
new file mode 100644
index 0000000..4cb4ab6
--- /dev/null
+++ b/installer-12516-portablerid.patch
@@ -0,0 +1,23 @@
+From 892222071f73062f969f4f6ed1df8f759b9327b7 Mon Sep 17 00:00:00 2001
+From: Tom Deseyn <tom.deseyn(a)gmail.com>
+Date: Wed, 3 Nov 2021 15:12:59 +0100
+Subject: [PATCH] GetRuntimeInformation.targets: determine
+ PortableProductMonikerRid based on HostOSName and Architecture.
+
+---
+ src/redist/targets/GetRuntimeInformation.targets | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/redist/targets/GetRuntimeInformation.targets b/src/redist/targets/GetRuntimeInformation.targets
+index 5133c3a3841..01f704c7d8e 100644
+--- a/src/redist/targets/GetRuntimeInformation.targets
++++ b/src/redist/targets/GetRuntimeInformation.targets
+@@ -28,6 +28,8 @@
+ '$(Rid)' == 'linux-musl-x64' ">$(Rid)</ProductMonikerRid>
+ <ProductMonikerRid Condition=" '$(ProductMonikerRid)' == '' ">$(OSName)-$(Architecture)</ProductMonikerRid>
+
++ <PortableProductMonikerRid Condition=" '$(PortableProductMonikerRid)' == '' ">$(HostOSName)-$(Architecture)</PortableProductMonikerRid>
++
+ <ArtifactNameSdk>dotnet-sdk-internal$(PgoTerm)</ArtifactNameSdk>
+ <ArtifactNameCombinedHostHostFxrFrameworkSdk>dotnet-sdk$(PgoTerm)</ArtifactNameCombinedHostHostFxrFrameworkSdk>
+
diff --git a/installer-12622-fix-runtime-symbols.patch b/installer-12622-fix-runtime-symbols.patch
new file mode 100644
index 0000000..fa2d46f
--- /dev/null
+++ b/installer-12622-fix-runtime-symbols.patch
@@ -0,0 +1,48 @@
+From 7365824ddc6ed66152cfc50f4c8508368953099c Mon Sep 17 00:00:00 2001
+From: Omair Majid <omajid(a)redhat.com>
+Date: Tue, 9 Nov 2021 08:39:27 -0500
+Subject: [PATCH] Also publish non-portable RID runtime symbols tarball
+
+This fixes a regression in .NET 6 source-build compared to the .NET
+5 source-build.
+
+source-build wants to publish runtime symbols tarball for portable (eg,
+linux-x64) and non-portable (eg, fedora.33-x64) RIDs here after a build.
+Following .NET 5 conventions, I expected to see:
+
+ ./artifacts/x64/Release/runtime/dotnet-runtime-symbols-fedora.34-x64-6.0.0.tar.gz
+ ./artifacts/x64/Release/runtime/dotnet-runtime-symbols-linux-x64-6.0.0.tar.gz
+
+Unfortunately, only the portable RID (linux-x64) tarball is present
+after a full source-build in .NET 6.
+
+It turns out this is a bug in our build scripts. We try and copy
+binaries - including the symbol tarballs - after building each of
+runtime-portable and runtime. However, the target dependency is wrong:
+after `Build`, the intermediate package doesn't exist from the
+just-built repo.
+
+What ends up happening is that nothing is copied after building
+runtime-portable. However, after building runtime, the runtime-portable
+intermediate artifacts are found and copied over. So the end
+build has portable RID symbos, but not the non-portable ones.
+
+Fix that by changing the dependency of this target so it runs after
+intermediate packages are available.
+---
+ src/SourceBuild/tarball/content/repos/runtime.common.targets | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/SourceBuild/tarball/content/repos/runtime.common.targets b/src/SourceBuild/tarball/content/repos/runtime.common.targets
+index ca606b23d21..862b70dc832 100644
+--- a/src/SourceBuild/tarball/content/repos/runtime.common.targets
++++ b/src/SourceBuild/tarball/content/repos/runtime.common.targets
+@@ -23,7 +23,7 @@
+ </Target>
+
+ <Target Name="CopyBinariesToBinFolder"
+- AfterTargets="Build"
++ AfterTargets="ExtractIntermediatePackages"
+ Inputs="$(MSBuildProjectFullPath)"
+ Outputs="$(RepoCompletedSemaphorePath)CopyBinariesToBinFolder.complete">
+ <ItemGroup>
diff --git a/msbuild-no-systemconfiguration.patch b/msbuild-no-systemconfiguration.patch
new file mode 100644
index 0000000..537470d
--- /dev/null
+++ b/msbuild-no-systemconfiguration.patch
@@ -0,0 +1,46 @@
+--- a/src/Build/Definition/ProjectCollection.cs
++++ b/src/Build/Definition/ProjectCollection.cs
+@@ -1754,7 +1754,11 @@ namespace Microsoft.Build.Evaluation
+ #if FEATURE_WIN32_REGISTRY
+ ToolsetRegistryReader registryReader = null,
+ #endif
++#if FEATURE_SYSTEM_CONFIGURATION
+ ToolsetConfigurationReader configReader = null
++#else
++ object configReader = null
++#endif
+ )
+ {
+ _toolsets = new Dictionary<string, Toolset>(StringComparer.OrdinalIgnoreCase);
+--- a/src/Build/Definition/ToolsetReader.cs
++++ b/src/Build/Definition/ToolsetReader.cs
+@@ -101,7 +101,11 @@ namespace Microsoft.Build.Evaluation
+ #if FEATURE_WIN32_REGISTRY
+ ToolsetRegistryReader registryReader,
+ #endif
++#if FEATURE_SYSTEM_CONFIGURATION
+ ToolsetConfigurationReader configurationReader,
++#else
++ object _configurationReader,
++#endif
+ PropertyDictionary<ProjectPropertyInstance> environmentProperties,
+ PropertyDictionary<ProjectPropertyInstance> globalProperties,
+ ToolsetDefinitionLocations locations
+@@ -120,6 +124,7 @@ namespace Microsoft.Build.Evaluation
+
+ if ((locations & ToolsetDefinitionLocations.ConfigurationFile) == ToolsetDefinitionLocations.ConfigurationFile)
+ {
++#if FEATURE_SYSTEM_CONFIGURATION
+ if (configurationReader == null)
+ {
+ configurationReader = new ToolsetConfigurationReader(environmentProperties, globalProperties);
+@@ -129,6 +134,9 @@ namespace Microsoft.Build.Evaluation
+ defaultToolsVersionFromConfiguration = configurationReader.ReadToolsets(toolsets, globalProperties,
+ initialProperties, true /* accumulate properties */, out overrideTasksPathFromConfiguration,
+ out defaultOverrideToolsVersionFromConfiguration);
++#else
++ throw new InvalidOperationException("ToolsetDefinitionLocations.ConfigurationFile not supported");
++#endif
+ }
+
+ string defaultToolsVersionFromRegistry = null;
diff --git a/msbuild-no-systemsecurity.patch b/msbuild-no-systemsecurity.patch
new file mode 100644
index 0000000..dcf6809
--- /dev/null
+++ b/msbuild-no-systemsecurity.patch
@@ -0,0 +1,12 @@
+--- a/src/Shared/ExceptionHandling.cs
++++ b/src/Shared/ExceptionHandling.cs
+@@ -153,7 +153,9 @@ namespace Microsoft.Build.Shared
+ internal static bool IsXmlException(Exception e)
+ {
+ return e is XmlException
++#if FEATURE_SECURITY_PERMISSIONS
+ || e is XmlSyntaxException
++#endif
+ || e is XmlSchemaException
+ || e is UriFormatException; // XmlTextReader for example uses this under the covers
+ }
diff --git a/nuget-client-use-work-tree-with-git-apply.patch b/nuget-client-use-work-tree-with-git-apply.patch
deleted file mode 100644
index e1785ae..0000000
--- a/nuget-client-use-work-tree-with-git-apply.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 691babb1c8316e2f829fbcf9f2aa14f4b7711960 Mon Sep 17 00:00:00 2001
-From: Omair Majid <omajid(a)redhat.com>
-Date: Thu, 9 Sep 2021 10:03:36 -0400
-Subject: [PATCH] [ArPow] Use --work-tree with git apply
-
-This makes things work bettern in a source-tarball build (where there
-may not be a .git directory), or there might be a .git directory but
-it's for a different repo than the one we are building.
----
- eng/source-build/source-build.proj | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/eng/source-build/source-build.proj b/eng/source-build/source-build.proj
-index 6f90f9793..72058ac88 100644
---- a/eng/source-build/source-build.proj
-+++ b/eng/source-build/source-build.proj
-@@ -55,7 +55,7 @@
- </ItemGroup>
-
- <Exec
-- Command="git apply --ignore-whitespace --whitespace=nowarn "%(SourceBuildPatchFile.FullPath)""
-+ Command="git --work-tree="$(ProjectRoot)" apply --ignore-whitespace --whitespace=nowarn "%(SourceBuildPatchFile.FullPath)""
- WorkingDirectory="$(ProjectRoot)"
- Condition="'@(SourceBuildPatchFile)' != ''" />
- </Target>
---
-2.31.1
-
diff --git a/roslyn-57003-mono-named-mutex.patch b/roslyn-57003-mono-named-mutex.patch
new file mode 100644
index 0000000..c264bff
--- /dev/null
+++ b/roslyn-57003-mono-named-mutex.patch
@@ -0,0 +1,453 @@
+Index: tarball.6.0.1-rc2-6.0.100-rc2/src/roslyn.8e1779e16298415843e85029d8b52a1ae9bb4c30/src/Compilers/Core/Portable/InternalUtilities/PlatformInformation.cs
+===================================================================
+--- tarball.6.0.1-rc2-6.0.100-rc2.orig/src/roslyn.8e1779e16298415843e85029d8b52a1ae9bb4c30/src/Compilers/Core/Portable/InternalUtilities/PlatformInformation.cs
++++ tarball.6.0.1-rc2-6.0.100-rc2/src/roslyn.8e1779e16298415843e85029d8b52a1ae9bb4c30/src/Compilers/Core/Portable/InternalUtilities/PlatformInformation.cs
+@@ -31,5 +31,24 @@ namespace Roslyn.Utilities
+ }
+ }
+ }
++ /// <summary>
++ /// Are we running on .NET 5 or later using the Mono runtime?
++ /// Will also return true when running on Mono itself; if necessary
++ /// we can use IsRunningOnMono to distinguish.
++ /// </summary>
++ public static bool IsUsingMonoRuntime
++ {
++ get
++ {
++ try
++ {
++ return !(Type.GetType("Mono.RuntimeStructs", throwOnError: false) is null);
++ }
++ catch
++ {
++ return false;
++ }
++ }
++ }
+ }
+ }
+Index: tarball.6.0.1-rc2-6.0.100-rc2/src/roslyn.8e1779e16298415843e85029d8b52a1ae9bb4c30/src/Compilers/Server/VBCSCompilerTests/BuildClientTests.cs
+===================================================================
+--- tarball.6.0.1-rc2-6.0.100-rc2.orig/src/roslyn.8e1779e16298415843e85029d8b52a1ae9bb4c30/src/Compilers/Server/VBCSCompilerTests/BuildClientTests.cs
++++ tarball.6.0.1-rc2-6.0.100-rc2/src/roslyn.8e1779e16298415843e85029d8b52a1ae9bb4c30/src/Compilers/Server/VBCSCompilerTests/BuildClientTests.cs
+@@ -79,7 +79,7 @@ namespace Microsoft.CodeAnalysis.Compile
+ // to connect. When it fails it should fall back to in-proc
+ // compilation.
+ bool holdsMutex;
+- using (var serverMutex = new Mutex(initiallyOwned: true,
++ using (var serverMutex = BuildServerConnection.OpenOrCreateMutex(
+ name: BuildServerConnection.GetServerMutexName(_pipeName),
+ createdNew: out holdsMutex))
+ {
+Index: tarball.6.0.1-rc2-6.0.100-rc2/src/roslyn.8e1779e16298415843e85029d8b52a1ae9bb4c30/src/Compilers/Server/VBCSCompilerTests/CompilerServerApiTest.cs
+===================================================================
+--- tarball.6.0.1-rc2-6.0.100-rc2.orig/src/roslyn.8e1779e16298415843e85029d8b52a1ae9bb4c30/src/Compilers/Server/VBCSCompilerTests/CompilerServerApiTest.cs
++++ tarball.6.0.1-rc2-6.0.100-rc2/src/roslyn.8e1779e16298415843e85029d8b52a1ae9bb4c30/src/Compilers/Server/VBCSCompilerTests/CompilerServerApiTest.cs
+@@ -103,7 +103,7 @@ class Hello
+ var mutexName = BuildServerConnection.GetServerMutexName(pipeName);
+
+ bool holdsMutex;
+- using (var mutex = new Mutex(initiallyOwned: true,
++ using (var mutex = BuildServerConnection.OpenOrCreateMutex(
+ name: mutexName,
+ createdNew: out holdsMutex))
+ {
+@@ -119,7 +119,7 @@ class Hello
+ }
+ finally
+ {
+- mutex.ReleaseMutex();
++ mutex.Dispose();
+ }
+ }
+ }
+Index: tarball.6.0.1-rc2-6.0.100-rc2/src/roslyn.8e1779e16298415843e85029d8b52a1ae9bb4c30/src/Compilers/Server/VBCSCompilerTests/CompilerServerTests.cs
+===================================================================
+--- tarball.6.0.1-rc2-6.0.100-rc2.orig/src/roslyn.8e1779e16298415843e85029d8b52a1ae9bb4c30/src/Compilers/Server/VBCSCompilerTests/CompilerServerTests.cs
++++ tarball.6.0.1-rc2-6.0.100-rc2/src/roslyn.8e1779e16298415843e85029d8b52a1ae9bb4c30/src/Compilers/Server/VBCSCompilerTests/CompilerServerTests.cs
+@@ -304,7 +304,7 @@ End Module")
+ var newTempDir = _tempDirectory.CreateDirectory(new string('a', 100 - _tempDirectory.Path.Length));
+ await ApplyEnvironmentVariables(
+ new[] { new KeyValuePair<string, string>("TMPDIR", newTempDir.Path) },
+- async () =>
++ async () => await Task.Run(async () =>
+ {
+ using var serverData = await ServerUtil.CreateServer(_logger);
+ var result = RunCommandLineCompiler(
+@@ -317,7 +317,7 @@ End Module")
+
+ var listener = await serverData.Complete();
+ Assert.Equal(CompletionData.RequestCompleted, listener.CompletionDataList.Single());
+- });
++ }));
+ }
+
+ [Fact]
+Index: tarball.6.0.1-rc2-6.0.100-rc2/src/roslyn.8e1779e16298415843e85029d8b52a1ae9bb4c30/src/Compilers/Server/VBCSCompilerTests/VBCSCompilerServerTests.cs
+===================================================================
+--- tarball.6.0.1-rc2-6.0.100-rc2.orig/src/roslyn.8e1779e16298415843e85029d8b52a1ae9bb4c30/src/Compilers/Server/VBCSCompilerTests/VBCSCompilerServerTests.cs
++++ tarball.6.0.1-rc2-6.0.100-rc2/src/roslyn.8e1779e16298415843e85029d8b52a1ae9bb4c30/src/Compilers/Server/VBCSCompilerTests/VBCSCompilerServerTests.cs
+@@ -101,7 +101,7 @@ namespace Microsoft.CodeAnalysis.Compile
+
+ var thread = new Thread(() =>
+ {
+- using (var mutex = new Mutex(initiallyOwned: true, name: mutexName, createdNew: out created))
++ using (var mutex = BuildServerConnection.OpenOrCreateMutex(name: mutexName, createdNew: out created))
+ using (var stream = NamedPipeUtil.CreateServer(pipeName))
+ {
+ readyMre.Set();
+@@ -112,7 +112,7 @@ namespace Microsoft.CodeAnalysis.Compile
+ stream.Close();
+
+ doneMre.WaitOne();
+- mutex.ReleaseMutex();
++ mutex.Dispose();
+ }
+ });
+
+@@ -153,7 +153,7 @@ namespace Microsoft.CodeAnalysis.Compile
+ {
+ using (var stream = NamedPipeUtil.CreateServer(pipeName))
+ {
+- var mutex = new Mutex(initiallyOwned: true, name: mutexName, createdNew: out created);
++ var mutex = BuildServerConnection.OpenOrCreateMutex(name: mutexName, createdNew: out created);
+ readyMre.Set();
+
+ stream.WaitForConnection();
+@@ -161,7 +161,6 @@ namespace Microsoft.CodeAnalysis.Compile
+
+ // Client is waiting for a response. Close the mutex now. Then close the connection
+ // so the client gets an error.
+- mutex.ReleaseMutex();
+ mutex.Dispose();
+ stream.Close();
+
+Index: tarball.6.0.1-rc2-6.0.100-rc2/src/roslyn.8e1779e16298415843e85029d8b52a1ae9bb4c30/src/Compilers/Shared/BuildServerConnection.cs
+===================================================================
+--- tarball.6.0.1-rc2-6.0.100-rc2.orig/src/roslyn.8e1779e16298415843e85029d8b52a1ae9bb4c30/src/Compilers/Shared/BuildServerConnection.cs
++++ tarball.6.0.1-rc2-6.0.100-rc2/src/roslyn.8e1779e16298415843e85029d8b52a1ae9bb4c30/src/Compilers/Shared/BuildServerConnection.cs
+@@ -543,19 +543,10 @@ namespace Microsoft.CodeAnalysis.Command
+ {
+ try
+ {
+- if (PlatformInformation.IsRunningOnMono)
++ if (PlatformInformation.IsUsingMonoRuntime)
+ {
+- IServerMutex? mutex = null;
+- bool createdNew = false;
+- try
+- {
+- mutex = new ServerFileMutexPair(mutexName, false, out createdNew);
+- return !createdNew;
+- }
+- finally
+- {
+- mutex?.Dispose();
+- }
++ using var mutex = new ServerFileMutex(mutexName);
++ return !mutex.CouldLock();
+ }
+ else
+ {
+@@ -572,9 +563,11 @@ namespace Microsoft.CodeAnalysis.Command
+
+ internal static IServerMutex OpenOrCreateMutex(string name, out bool createdNew)
+ {
+- if (PlatformInformation.IsRunningOnMono)
++ if (PlatformInformation.IsUsingMonoRuntime)
+ {
+- return new ServerFileMutexPair(name, initiallyOwned: true, out createdNew);
++ var mutex = new ServerFileMutex(name);
++ createdNew = mutex.TryLock(0);
++ return mutex;
+ }
+ else
+ {
+@@ -648,19 +641,22 @@ namespace Microsoft.CodeAnalysis.Command
+ }
+
+ /// <summary>
+- /// An interprocess mutex abstraction based on OS advisory locking (FileStream.Lock/Unlock).
++ /// An interprocess mutex abstraction based on file sharing permission (FileShare.None).
+ /// If multiple processes running as the same user create FileMutex instances with the same name,
+ /// those instances will all point to the same file somewhere in a selected temporary directory.
+- /// The TryLock method can be used to attempt to acquire the mutex, with Unlock or Dispose used to release.
++ /// The TryLock method can be used to attempt to acquire the mutex, with Dispose used to release.
++ /// The CouldLock method can be used to check whether an attempt to acquire the mutex would have
++ /// succeeded at the current time, without actually acquiring it.
+ /// Unlike Win32 named mutexes, there is no mechanism for detecting an abandoned mutex. The file
+ /// will simply revert to being unlocked but remain where it is.
+ /// </summary>
+- internal sealed class FileMutex : IDisposable
++ internal sealed class ServerFileMutex : IServerMutex
+ {
+- public readonly FileStream Stream;
++ public FileStream? Stream;
+ public readonly string FilePath;
++ public readonly string GuardPath;
+
+- public bool IsLocked { get; private set; }
++ public bool IsDisposed { get; private set; }
+
+ internal static string GetMutexDirectory()
+ {
+@@ -670,61 +666,176 @@ namespace Microsoft.CodeAnalysis.Command
+ return result;
+ }
+
+- public FileMutex(string name)
++ public ServerFileMutex(string name)
+ {
+- FilePath = Path.Combine(GetMutexDirectory(), name);
+- Stream = new FileStream(FilePath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None);
++ var mutexDirectory = GetMutexDirectory();
++ FilePath = Path.Combine(mutexDirectory, name);
++ GuardPath = Path.Combine(mutexDirectory, ".guard");
+ }
+
+- public bool TryLock(int timeoutMs)
++ /// <summary>
++ /// Acquire the guard by opening the guard file with FileShare.None. The guard must only ever
++ /// be held for very brief amounts of time, so we can simply spin until it is acquired. The
++ /// guard must be released by disposing the FileStream returned from this routine. Note the
++ /// guard file is never deleted; this is a leak, but only of a single file.
++ /// </summary>
++ internal FileStream LockGuard()
+ {
+- if (IsLocked)
+- throw new InvalidOperationException("Lock already held");
+-
+- var sw = Stopwatch.StartNew();
+- do
++ // We should be able to acquire the guard quickly. Limit the number of retries anyway
++ // by some arbitrary bound to avoid getting hung up in a possibly infinite loop.
++ for (var i = 0; i < 100; i++)
+ {
+ try
+ {
+- Stream.Lock(0, 0);
+- IsLocked = true;
+- return true;
++ return new FileStream(GuardPath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None);
+ }
+ catch (IOException)
+ {
+- // Lock currently held by someone else.
++ // Guard currently held by someone else.
+ // We want to sleep for a short period of time to ensure that other processes
+ // have an opportunity to finish their work and relinquish the lock.
+ // Spinning here (via Yield) would work but risks creating a priority
+ // inversion if the lock is held by a lower-priority process.
+ Thread.Sleep(1);
+ }
++ }
++ // Handle unexpected failure to acquire guard as error.
++ throw new InvalidOperationException("Unable to acquire guard");
++ }
++
++ /// <summary>
++ /// Attempt to acquire the lock by opening the lock file with FileShare.None. Sets "Stream"
++ /// and returns true if successful, returns false if the lock is already held by another
++ /// thread or process. Guard must be held when calling this routine.
++ /// </summary>
++ internal bool TryLockFile()
++ {
++ Debug.Assert(Stream is null);
++ FileStream? stream = null;
++ try
++ {
++ stream = new FileStream(FilePath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None);
++ // On some targets, the file locking used to implement FileShare.None may not be
++ // atomic with opening/creating the file. This creates a race window when another
++ // thread holds the lock and is just about to unlock: we may be able to open the
++ // file here, then the other thread unlocks and deletes the file, and then we
++ // acquire the lock on our file handle - but the actual file is already deleted.
++ // To close this race, we verify that the file does in fact still exist now that
++ // we have successfull acquired the locked FileStream. (Note that this check is
++ // safe because we cannot race with an other attempt to create the file since we
++ // hold the guard, and after the FileStream constructor returned we can no race
++ // with file deletion because we hold the lock.)
++ if (!File.Exists(FilePath))
++ {
++ // To simplify the logic, we treat this case as "unable to acquire the lock"
++ // because it we caught another process while it owned the lock and was just
++ // giving it up. If the caller retries, we'll likely acquire the lock then.
++ stream.Dispose();
++ return false;
++ }
++ }
++ catch (Exception)
++ {
++ stream?.Dispose();
++ return false;
++ }
++ Stream = stream;
++ return true;
++ }
++
++ /// <summary>
++ /// Release the lock by deleting the lock file and disposing "Stream".
++ /// </summary>
++ internal void UnlockFile()
++ {
++ Debug.Assert(Stream is not null);
++ try
++ {
++ // Delete the lock file while the stream is not yet disposed
++ // and we therefore still hold the FileShare.None exclusion.
++ // There may still be a race with another thread attempting a
++ // TryLockFile in parallel, but that is safely handled there.
++ File.Delete(FilePath);
++ }
++ finally
++ {
++ Stream.Dispose();
++ Stream = null;
++ }
++ }
++
++ public bool TryLock(int timeoutMs)
++ {
++ if (IsDisposed)
++ throw new ObjectDisposedException("Mutex");
++ if (Stream is not null)
++ throw new InvalidOperationException("Lock already held");
++
++ var sw = Stopwatch.StartNew();
++ do
++ {
++ try
++ {
++ // Attempt to acquire lock while holding guard.
++ using var guard = LockGuard();
++ if (TryLockFile())
++ return true;
++ }
+ catch (Exception)
+ {
+- // Something else went wrong.
+ return false;
+ }
++
++ // See comment in LockGuard.
++ Thread.Sleep(1);
+ } while (sw.ElapsedMilliseconds < timeoutMs);
+
+ return false;
+ }
+
+- public void Unlock()
++ public bool CouldLock()
+ {
+- if (!IsLocked)
+- return;
+- Stream.Unlock(0, 0);
+- IsLocked = false;
++ if (IsDisposed)
++ return false;
++ if (Stream is not null)
++ return false;
++
++ try
++ {
++ // Attempt to acquire lock while holding guard, and if successful
++ // immediately unlock again while still holding guard. This ensures
++ // no other thread will spuriously observe the lock as held due to
++ // the lock attempt here.
++ using var guard = LockGuard();
++ if (TryLockFile())
++ {
++ UnlockFile();
++ return true;
++ }
++ }
++ catch (Exception)
++ {
++ return false;
++ }
++
++ return false;
+ }
+
+ public void Dispose()
+ {
+- var wasLocked = IsLocked;
+- if (wasLocked)
+- Unlock();
+- Stream.Dispose();
+- // We do not delete the lock file here because there is no reliable way to perform a
+- // 'delete if no one has the file open' operation atomically on *nix. This is a leak.
++ if (IsDisposed)
++ return;
++ IsDisposed = true;
++ if (Stream is not null)
++ {
++ try
++ {
++ UnlockFile();
++ }
++ catch (Exception)
++ {
++ }
++ }
+ }
+ }
+
+@@ -792,56 +903,4 @@ namespace Microsoft.CodeAnalysis.Command
+ }
+ }
+ }
+-
+- /// <summary>
+- /// Approximates a named mutex with 'locked', 'unlocked' and 'abandoned' states.
+- /// There is no reliable way to detect whether a mutex has been abandoned on some target platforms,
+- /// so we use the AliveMutex to manually track whether the creator of a mutex is still running,
+- /// while the HeldMutex represents the actual lock state of the mutex.
+- /// </summary>
+- internal sealed class ServerFileMutexPair : IServerMutex
+- {
+- public readonly FileMutex AliveMutex;
+- public readonly FileMutex HeldMutex;
+-
+- public bool IsDisposed { get; private set; }
+-
+- public ServerFileMutexPair(string mutexName, bool initiallyOwned, out bool createdNew)
+- {
+- AliveMutex = new FileMutex(mutexName + "-alive");
+- HeldMutex = new FileMutex(mutexName + "-held");
+- createdNew = AliveMutex.TryLock(0);
+- if (initiallyOwned && createdNew)
+- {
+- if (!TryLock(0))
+- throw new Exception("Failed to lock mutex after creating it");
+- }
+- }
+-
+- public bool TryLock(int timeoutMs)
+- {
+- if (IsDisposed)
+- throw new ObjectDisposedException("Mutex");
+- return HeldMutex.TryLock(timeoutMs);
+- }
+-
+- public void Dispose()
+- {
+- if (IsDisposed)
+- return;
+- IsDisposed = true;
+-
+- try
+- {
+- HeldMutex.Unlock();
+- AliveMutex.Unlock();
+- }
+- finally
+- {
+- AliveMutex.Dispose();
+- HeldMutex.Dispose();
+- }
+- }
+- }
+-
+ }
diff --git a/roslyn-analyzers-no-apphost.patch b/roslyn-analyzers-no-apphost.patch
new file mode 100644
index 0000000..c1fc3dd
--- /dev/null
+++ b/roslyn-analyzers-no-apphost.patch
@@ -0,0 +1,10 @@
+--- a/src/Tools/ReleaseNotesUtil/ReleaseNotesUtil.csproj
++++ b/src/Tools/ReleaseNotesUtil/ReleaseNotesUtil.csproj
+@@ -4,6 +4,7 @@
+ <TargetFramework>netcoreapp3.1</TargetFramework>
+ <NonShipping>true</NonShipping>
+ <ExcludeFromSourceBuild>true</ExcludeFromSourceBuild>
++ <UseAppHost>false</UseAppHost>
+ </PropertyGroup>
+ <ItemGroup>
+ <PackageReference Include="Microsoft.CodeAnalysis" Version="$(MicrosoftCodeAnalysisVersion)" />
diff --git a/roslyn-no-apphost.patch b/roslyn-no-apphost.patch
new file mode 100644
index 0000000..f1767c7
--- /dev/null
+++ b/roslyn-no-apphost.patch
@@ -0,0 +1,10 @@
+--- a/src/Workspaces/Remote/ServiceHub.CoreComponents/Microsoft.CodeAnalysis.Remote.ServiceHub.CoreComponents.csproj
++++ b/src/Workspaces/Remote/ServiceHub.CoreComponents/Microsoft.CodeAnalysis.Remote.ServiceHub.CoreComponents.csproj
+@@ -5,6 +5,7 @@
+ <OutputType>Exe</OutputType>
+ <TargetFramework>netcoreapp3.1</TargetFramework>
+ <!-- The purpose of this project is to include all dependecies of Microsoft.CodeAnalysis.Remote.ServiceHub targeting .Net Core -->
++ <UseAppHost>false</UseAppHost>
+ <IsShipping>false</IsShipping>
+ </PropertyGroup>
+ <ItemGroup>
diff --git a/runtime-arm64-lld-fix.patch b/runtime-arm64-lld-fix.patch
new file mode 100644
index 0000000..5972f45
--- /dev/null
+++ b/runtime-arm64-lld-fix.patch
@@ -0,0 +1,13 @@
+diff --git a/eng/native/init-compiler.sh b/eng/native/init-compiler.sh
+index 567d18da474..927b3071e92 100755
+--- a/eng/native/init-compiler.sh
++++ b/eng/native/init-compiler.sh
+@@ -108,7 +108,7 @@ if [[ -z "$CC" ]]; then
+ fi
+
+ if [[ "$compiler" == "clang" ]]; then
+- if command -v "lld$desired_version" > /dev/null; then
++ if command -v lld || command -v "lld$desired_version" > /dev/null; then
+ # Only lld version >= 9 can be considered stable
+ if [[ "$majorVersion" -ge 9 ]]; then
+ LDFLAGS="-fuse-ld=lld"
diff --git a/runtime-mono-remove-ilstrip.patch b/runtime-mono-remove-ilstrip.patch
new file mode 100644
index 0000000..9a711f8
--- /dev/null
+++ b/runtime-mono-remove-ilstrip.patch
@@ -0,0 +1,33 @@
+diff --git a/src/mono/nuget/Microsoft.NET.Runtime.MonoTargets.Sdk/Microsoft.NET.Runtime.MonoTargets.Sdk.pkgproj b/src/mono/nuget/Microsoft.NET.Runtime.MonoTargets.Sdk/Microsoft.NET.Runtime.MonoTargets.Sdk.pkgproj
+index 724b704f864..3dabdc81dae 100644
+--- a/src/mono/nuget/Microsoft.NET.Runtime.MonoTargets.Sdk/Microsoft.NET.Runtime.MonoTargets.Sdk.pkgproj
++++ b/src/mono/nuget/Microsoft.NET.Runtime.MonoTargets.Sdk/Microsoft.NET.Runtime.MonoTargets.Sdk.pkgproj
+@@ -6,7 +6,7 @@
+ </PropertyGroup>
+
+ <ItemGroup>
+- <ProjectReference Include="$(RepoTasksDir)ILStripTask\ILStrip.csproj" />
++ <ProjectReference Include="$(RepoTasksDir)ILStripTask\ILStrip.csproj" Condition="'$(DotNetBuildFromSource)' != 'true'" />
+ <ProjectReference Include="$(RepoTasksDir)RuntimeConfigParser\RuntimeConfigParser.csproj" />
+ <ProjectReference Include="$(RepoTasksDir)JsonToItemsTaskFactory\JsonToItemsTaskFactory.csproj" />
+ </ItemGroup>
+@@ -15,7 +15,7 @@
+ <PackageFile Include="Sdk\Sdk.props" TargetPath="Sdk" />
+ <PackageFile Include="Sdk\Sdk.targets" TargetPath="Sdk" />
+ <PackageFile Include="build\$(MSBuildProjectName).props" TargetPath="build" />
+- <PackageFile Include="Sdk\ILStripTask.props" TargetPath="Sdk" />
++ <PackageFile Include="Sdk\ILStripTask.props" TargetPath="Sdk" Condition="'$(DotNetBuildFromSource)' != 'true'" />
+ <PackageFile Include="Sdk\RuntimeConfigParserTask.props" TargetPath="Sdk" />
+ <PackageFile Include="Sdk\RuntimeComponentManifest.props" TargetPath="Sdk" />
+ <PackageFile Include="Sdk\RuntimeComponentManifest.targets" TargetPath="Sdk" />
+diff --git a/src/mono/nuget/Microsoft.NET.Runtime.MonoTargets.Sdk/Sdk/Sdk.props b/src/mono/nuget/Microsoft.NET.Runtime.MonoTargets.Sdk/Sdk/Sdk.props
+index 8a7ede79242..cfd515eeca9 100644
+--- a/src/mono/nuget/Microsoft.NET.Runtime.MonoTargets.Sdk/Sdk/Sdk.props
++++ b/src/mono/nuget/Microsoft.NET.Runtime.MonoTargets.Sdk/Sdk/Sdk.props
+@@ -1,5 +1,5 @@
+ <Project>
+- <Import Project="$(MSBuildThisFileDirectory)\ILStripTask.props" />
++ <Import Project="$(MSBuildThisFileDirectory)\ILStripTask.props" Condition="'$(DotNetBuildFromSource)' != 'true'" />
+ <Import Project="$(MSBuildThisFileDirectory)\RuntimeConfigParserTask.props" />
+ <Import Project="$(MSBuildThisFileDirectory)\RuntimeComponentManifest.props" />
+ </Project>
diff --git a/sdk-22373-portablerid.patch b/sdk-22373-portablerid.patch
new file mode 100644
index 0000000..8b39eb3
--- /dev/null
+++ b/sdk-22373-portablerid.patch
@@ -0,0 +1,22 @@
+From 499fcf6e3b0e4b01a9c340a06f00cfc3e1fcc5d2 Mon Sep 17 00:00:00 2001
+From: Tom Deseyn <tom.deseyn(a)gmail.com>
+Date: Tue, 5 Oct 2021 09:04:14 +0200
+Subject: [PATCH] Use the portable rid for --use-current-runtime.
+
+---
+ .../targets/Microsoft.NET.RuntimeIdentifierInference.targets | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.RuntimeIdentifierInference.targets b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.RuntimeIdentifierInference.targets
+index 17308aa9160..e764b2d9845 100644
+--- a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.RuntimeIdentifierInference.targets
++++ b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.RuntimeIdentifierInference.targets
+@@ -62,7 +62,7 @@ Copyright (c) .NET Foundation. All rights reserved.
+ </PropertyGroup>
+
+ <PropertyGroup Condition="'$(UseCurrentRuntimeIdentifier)' == 'true'">
+- <RuntimeIdentifier>$(NETCoreSdkRuntimeIdentifier)</RuntimeIdentifier>
++ <RuntimeIdentifier>$(NETCoreSdkPortableRuntimeIdentifier)</RuntimeIdentifier>
+ </PropertyGroup>
+
+ <PropertyGroup Condition="'$(PlatformTarget)' == ''">
commit 9bc7689eec09735652c954ea3d97febebb4dc0f5
Author: Omair Majid <omajid(a)redhat.com>
Date: Tue Sep 28 14:23:03 2021 -0400
Make it easier to build on RHEL 8 as well using the system libunwind
diff --git a/build-dotnet-tarball b/build-dotnet-tarball
index 4279bba..826752b 100755
--- a/build-dotnet-tarball
+++ b/build-dotnet-tarball
@@ -148,7 +148,10 @@ if [[ ${build_bootstrap} == true ]]; then
mkdir -p fixup-previously-source-built-artifacts
pushd fixup-previously-source-built-artifacts
tar xf ../packages/archive/Private.SourceBuilt.Artifacts.*.tar.gz
- find -iname '*fedora*nupkg' -delete
+ find . -iname '*fedora*nupkg' -delete
+ rm runtime.linux-x64.Microsoft.NETCore.IL*sm.*.nupkg
+ wget https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_p...
+ wget https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_p...
# We must keep the original file names in the archive, even prepending a ./ leads to issues
tar -I 'gzip -9' -cf ../packages/archive/Private.SourceBuilt.Artifacts.*.tar.gz *
popd
diff --git a/dotnet6.0.spec b/dotnet6.0.spec
index d1d6994..6f523a3 100644
--- a/dotnet6.0.spec
+++ b/dotnet6.0.spec
@@ -197,7 +197,8 @@ Requires: dotnet-hostfxr-6.0%{?_isa} >= %{host_rpm_version}-%{release}
Requires: libicu%{?_isa}
%if %{use_bundled_libunwind}
-Provides: bundled(libunwind) = 1.3
+# See runtime.*/src/coreclr/pal/src/libunwind/libunwind-version.txt
+Provides: bundled(libunwind) = 1.5.rc1.28.g9165d2a1
%endif
%description -n dotnet-runtime-6.0
@@ -383,6 +384,14 @@ cp artifacts/obj/x64/Release/PackageVersions.props artifacts/obj/%{runtime_arch}
%endif
%endif
+# Disable package validation which breaks our build, even though we
+# are injecting "blessed" nuget packages produced by Microsoft.
+# There's no need to run validation in RPM packages anyway.
+sed -i -E 's|( /p:BuildDebPackage=false)|\1 /p:EnablePackageValidation=false|' src/runtime.*/eng/SourceBuild.props
+
+%if ! %{use_bundled_libunwind}
+sed -i -E 's|( /p:BuildDebPackage=false)|\1 --cmakeargs -DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=TRUE|' src/runtime.*/eng/SourceBuild.props
+%endif
%build
cat /etc/os-release
commit 0fffd382bfeeeb57a9753cce6200c64e29b348dd
Author: Omair Majid <omajid(a)redhat.com>
Date: Mon Sep 27 09:39:50 2021 -0400
Update to work-in-progress RC2 release
This isn't even the final RC2 release.
diff --git a/build-dotnet-tarball b/build-dotnet-tarball
index c0fa8fd..4279bba 100755
--- a/build-dotnet-tarball
+++ b/build-dotnet-tarball
@@ -28,10 +28,6 @@ function clean_dotnet_cache {
}
function check_bootstrap_environment {
- if rpm -qa | grep libunwind-devel; then
- echo "error: libunwind-devel is installed. Not a good idea for bootstrapping."
- exit 1
- fi
if rpm -qa | grep dotnet ; then
echo "error: dotnet is installed. Not a good idea for bootstrapping."
exit 1
@@ -125,18 +121,16 @@ if [ ! -f "${unmodified_tarball_name}.tar.gz" ]; then
git checkout "${tag}"
git submodule update --init --recursive
clean_dotnet_cache
- # FIXME remove contineuonprebuilterror
- # ./build.sh -p:SkipPrebuiltEnforcement=true -p:ContinueOnPrebuiltBaselineError=true -p:ArchiveDownloadedPackages=true -p:UseSystemLibraries=true -p:UseSystemLibunwind=false
- # ./build-source-tarball.sh "${unmodified_tarball_name}" --skip-build -- -p:ContinueOnPrebuiltBaselineError=true -p:SkipPrebuiltEnforcement=true
mkdir -p "../${unmodified_tarball_name}"
./build.sh /p:ArcadeBuildTarball=true /p:TarballDir="$(readlink -f ../"${unmodified_tarball_name}")"
+ popd
if [[ ${build_bootstrap} == true ]]; then
- # FIXME
- # cp -a artifacts/"${arch}"/Release/Private.SourceBuilt.Artifacts.*.tar.gz "${unmodified_tarball_name}"/packages/archive/Private.SourceBuilt.Artifacts.*.tar.gz
- echo
+ pushd "${unmodified_tarball_name}"
+ ./prep.sh
+ popd
fi
- popd
+
popd
tar czf "${unmodified_tarball_name}.tar.gz" -C "${temp_dir}" "${unmodified_tarball_name}"
@@ -150,20 +144,29 @@ mv "${unmodified_tarball_name}" "${tarball_name}"
pushd "${tarball_name}"
-if [[ ${build_bootstrap} != true ]]; then
+if [[ ${build_bootstrap} == true ]]; then
+ mkdir -p fixup-previously-source-built-artifacts
+ pushd fixup-previously-source-built-artifacts
+ tar xf ../packages/archive/Private.SourceBuilt.Artifacts.*.tar.gz
+ find -iname '*fedora*nupkg' -delete
+ # We must keep the original file names in the archive, even prepending a ./ leads to issues
+ tar -I 'gzip -9' -cf ../packages/archive/Private.SourceBuilt.Artifacts.*.tar.gz *
+ popd
+ rm -rf fixup-previously-source-built-artifacts
+
+else
find . -type f -iname '*.tar.gz' -delete
rm -rf .dotnet
-else
- ./prep.sh
fi
# Remove files with funny licenses, crypto implementations and other
# not-very-useful artifacts to reduce tarball size
-rm -r src/aspnetcore.*/src/SignalR/clients/java/signalr/gradle*
-find src/aspnetcore.*/src -type d -name samples -print0 | xargs -0 rm -r
-rm -r src/nuget-client.*/test/EndToEnd
-rm -r src/source-build.*/src/humanizer/samples/
+# FIXME
+#rm -r src/aspnetcore.*/src/SignalR/clients/java/signalr/gradle*
+#find src/aspnetcore.*/src -type d -name samples -print0 | xargs -0 rm -r
+#rm -r src/nuget-client.*/test/EndToEnd
+#rm -r src/source-build.*/src/humanizer/samples/
popd
-tar czf "${tarball_name}.tar.gz" "${tarball_name}"
+tar -I 'gzip -9' -cf "${tarball_name}.tar.gz" "${tarball_name}"
diff --git a/command-line-api-use-work-tree-with-git-apply.patch b/command-line-api-use-work-tree-with-git-apply.patch
new file mode 100644
index 0000000..552d59d
--- /dev/null
+++ b/command-line-api-use-work-tree-with-git-apply.patch
@@ -0,0 +1,27 @@
+From 7a752928ed3588246c4b296feb6cf4946f1b29b7 Mon Sep 17 00:00:00 2001
+From: Omair Majid <omajid(a)redhat.com>
+Date: Thu, 9 Sep 2021 12:11:39 -0400
+Subject: [PATCH] [ArPow] Use --work-tree with git apply
+
+This makes things work better in a source-tarball build, where there may
+be a .git directory but it's for a different repo than command-line-api.
+---
+ eng/SourceBuild.props | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/eng/SourceBuild.props b/eng/SourceBuild.props
+index 6cc85018..5e223747 100644
+--- a/eng/SourceBuild.props
++++ b/eng/SourceBuild.props
+@@ -15,7 +15,7 @@
+ </ItemGroup>
+
+ <Exec
+- Command="git apply --ignore-whitespace --whitespace=nowarn "%(SourceBuildPatchFile.FullPath)""
++ Command="git --work-tree="$(RepoRoot)" apply --ignore-whitespace --whitespace=nowarn "%(SourceBuildPatchFile.FullPath)""
+ WorkingDirectory="$(RepoRoot)"
+ Condition="'@(SourceBuildPatchFile)' != ''" />
+ </Target>
+--
+2.31.1
+
diff --git a/dotnet6.0.spec b/dotnet6.0.spec
index 1ee4e19..d1d6994 100644
--- a/dotnet6.0.spec
+++ b/dotnet6.0.spec
@@ -20,11 +20,11 @@
# until that's done, disable LTO. This has to happen before setting the flags below.
%define _lto_cflags %{nil}
-%global host_version 6.0.0-preview.7.21356.2
-%global runtime_version 6.0.0-preview.7.21356.2
-%global aspnetcore_runtime_version 6.0.0-preview.6.21355.2/
-%global sdk_version 6.0.100
-%global templates_version 6.0.0-rc.2.21420.26
+%global host_version 6.0.0-rc.2.21470.23
+%global runtime_version 6.0.0-rc.2.21470.23
+%global aspnetcore_runtime_version 6.0.0-rc.2.21470.37
+%global sdk_version 6.0.100-rc.2.21474.1
+%global templates_version 6.0.0-rc.2.21470.37
#%%global templates_version %%(echo %%{runtime_version} | awk 'BEGIN { FS="."; OFS="." } {print $1, $2, $3+1 }')
%global host_rpm_version 6.0.0
@@ -34,7 +34,7 @@
# upstream can update releases without revving the SDK version so these don't always match
#%%global upstream_tag v%%{sdk_version}-SDK
-%global upstream_tag f3ea71b28f18719441d1e6995f134e22559131d6
+%global upstream_tag 28be3e9a006d90d8c6e87d4353b77882829df718
%if 0%{?fedora} || 0%{?rhel} < 8
%global use_bundled_libunwind 0
@@ -57,27 +57,38 @@
Name: dotnet6.0
Version: %{sdk_rpm_version}
-Release: 0.2.preview6%{?dist}
+Release: 0.3.%{upstream_tag}%{?dist}
Summary: .NET Runtime and SDK
License: MIT and ASL 2.0 and BSD and LGPLv2+ and CC-BY and CC0 and MS-PL and EPL-1.0 and GPL+ and GPLv2 and ISC and OFL and zlib
URL: https://github.com/dotnet/
# The source is generated on a Fedora box via:
-# ./build-dotnet-tarball --bootstrap $commit-id
+# ./build-dotnet-tarball --bootstrap %%{upstream_tag}
Source0: dotnet-%{upstream_tag}-x64-bootstrap.tar.gz
Source10: check-debug-symbols.py
Source11: dotnet.sh.in
+# https://github.com/NuGet/NuGet.Client/pull/4254
+Patch200: nuget-client-use-work-tree-with-git-apply.patch
+# https://github.com/dotnet/command-line-api/pull/1401
+Patch300: command-line-api-use-work-tree-with-git-apply.patch
+# https://github.com/microsoft/vstest/pull/3046
+Patch400: vstest-use-work-tree-with-git-apply.patch
+
+Patch500: fsharp-use-work-tree-with-git-apply.patch
+
+Patch600: xliff-tasks-use-work-tree-with-git-apply.patch
+
# Disable telemetry by default; make it opt-in
-Patch500: sdk-telemetry-optout.patch
+Patch1500: sdk-telemetry-optout.patch
-%if 0%{?fedora} > 32 || 0%{?rhel} > 8
-ExclusiveArch: aarch64 x86_64
-%else
-ExclusiveArch: x86_64
-%endif
+#%%if 0%%{?fedora} > 32 || 0%%{?rhel} > 8
+#ExclusiveArch: aarch64 x86_64
+#%%else
+ExclusiveArch: x86_64
+#%%endif
BuildRequires: clang
BuildRequires: cmake
@@ -338,10 +349,33 @@ sed -i 's|/usr/share/dotnet|%{_libdir}/dotnet|' src/runtime.*/src/native/corehos
# Disable warnings
# sed -i 's|skiptests|skiptests ignorewarnings|' repos/runtime.common.props
-pushd src/sdk.*
+pushd src/runtime.*
+popd
+
+pushd src/nuget-client.*
+%patch200 -p1
+popd
+
+pushd src/command-line-api.*
+%patch300 -p1
+popd
+
+pushd src/vstest.*
+%patch400 -p1
+popd
+
+pushd src/fsharp.*
%patch500 -p1
popd
+pushd src/xliff-tasks.*
+%patch600 -p1
+popd
+
+pushd src/sdk.*
+%patch1500 -p1
+popd
+
%if %{without bootstrap}
%ifnarch x86_64
mkdir -p artifacts/obj/%{runtime_arch}/Release
@@ -349,16 +383,6 @@ cp artifacts/obj/x64/Release/PackageVersions.props artifacts/obj/%{runtime_arch}
%endif
%endif
-%if %{use_bundled_libunwind}
- sed -i -E \
- 's/DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=(TRUE|true|FALSE|false)/DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=FALSE/' \
- src/runtime.*/eng/SourceBuild.props
-%else
- sed -i -E \
- 's/DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=(TRUE|true|FALSE|false)/DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=TRUE/' \
- src/runtime.*/eng/SourceBuild.props
-%endif
-
%build
cat /etc/os-release
@@ -400,17 +424,13 @@ unset CFLAGS
unset CXXFLAGS
unset LDFLAGS
-#%%if %%{without bootstrap}
-# --with-ref-packages %%{_libdir}/dotnet/reference-packages/ \
-# --with-packages %%{_libdir}/dotnet/source-built-artifacts/*.tar.gz \
-# --with-sdk %%{_libdir}/dotnet \
-#%%endif
-
VERBOSE=1 ./build.sh \
%if %{without bootstrap}
--with-sdk previously-built-dotnet \
%endif
-- \
+
+echo \
/v:n \
/p:SkipPortableRuntimeBuild=true \
/p:LogVerbosity=n \
@@ -432,9 +452,13 @@ tar xf artifacts/%{runtime_arch}/Release/dotnet-sdk-%{sdk_version}-%{runtime_id}
# -C %%{buildroot}/%%{_libdir}/dotnet/shared/Microsoft.NETCore.App/%%{runtime_version}/
# Fix executable permissions on files
+find %{buildroot}%{_libdir}/dotnet/ -type f -name 'apphost' -exec chmod +x {} \;
+find %{buildroot}%{_libdir}/dotnet/ -type f -name 'singlefilehost' -exec chmod +x {} \;
+find %{buildroot}%{_libdir}/dotnet/ -type f -name 'lib*so' -exec chmod +x {} \;
find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.a' -exec chmod -x {} \;
find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.dll' -exec chmod -x {} \;
find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.h' -exec chmod 0644 {} \;
+find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.json' -exec chmod -x {} \;
find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.pdb' -exec chmod -x {} \;
find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.props' -exec chmod -x {} \;
find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.pubxml' -exec chmod -x {} \;
@@ -459,9 +483,11 @@ ln -s ../../%{_libdir}/dotnet/dotnet %{buildroot}%{_bindir}/
install -dm 0755 %{buildroot}%{_mandir}/man1/
find -iname 'dotnet*.1' -type f -exec cp {} %{buildroot}%{_mandir}/man1/ \;
-echo "%{_libdir}/dotnet" >> install_location
install -dm 0755 %{buildroot}%{_sysconfdir}/dotnet
+echo "%{_libdir}/dotnet" >> install_location
install install_location %{buildroot}%{_sysconfdir}/dotnet/
+echo "%{_libdir}/dotnet" >> install_location_%{runtime_arch}
+install install_location_%{runtime_arch} %{buildroot}%{_sysconfdir}/dotnet/
install -dm 0755 %{buildroot}%{_libdir}/dotnet/source-built-artifacts
install -m 0644 artifacts/%{runtime_arch}/Release/Private.SourceBuilt.Artifacts.*.tar.gz %{buildroot}/%{_libdir}/dotnet/source-built-artifacts/
@@ -520,7 +546,9 @@ install -m 0644 artifacts/%{runtime_arch}/Release/Private.SourceBuilt.Artifacts.
%dir %{_libdir}/dotnet/sdk
%{_libdir}/dotnet/sdk/%{sdk_version}
%dir %{_libdir}/dotnet/sdk-manifests
-%{_libdir}/dotnet/sdk-manifests/%{sdk_version}
+# FIXME hardcoded version?
+%{_libdir}/dotnet/sdk-manifests/6.0.100
+%{_libdir}/dotnet/metadata
%dir %{_libdir}/dotnet/packs
%files -n dotnet-sdk-6.0-source-built-artifacts
@@ -529,6 +557,9 @@ install -m 0644 artifacts/%{runtime_arch}/Release/Private.SourceBuilt.Artifacts.
%changelog
+* Sun Sep 26 2021 Omair Majid <omajid(a)redhat.com> - 6.0.0-0.3.28be3e9a006d90d8c6e87d4353b77882829df718
+- Update to work-in-progress RC2 release
+
* Wed Aug 25 2021 Omair Majid <omajid(a)redhat.com> - 6.0.0-0.2.preview6
- Updated to build the latest source-build preview
diff --git a/fsharp-use-work-tree-with-git-apply.patch b/fsharp-use-work-tree-with-git-apply.patch
new file mode 100644
index 0000000..810cf67
--- /dev/null
+++ b/fsharp-use-work-tree-with-git-apply.patch
@@ -0,0 +1,11 @@
+--- a/eng/SourceBuild.props
++++ b/eng/SourceBuild.props
+@@ -15,7 +15,7 @@
+ </ItemGroup>
+
+ <Exec
+- Command="git apply --ignore-whitespace --whitespace=nowarn "%(SourceBuildPatchFile.FullPath)""
++ Command="git --work-tree="$(RepoRoot)" apply --ignore-whitespace --whitespace=nowarn "%(SourceBuildPatchFile.FullPath)""
+ WorkingDirectory="$(RepoRoot)"
+ Condition="'@(SourceBuildPatchFile)' != ''" />
+ </Target>
diff --git a/nuget-client-use-work-tree-with-git-apply.patch b/nuget-client-use-work-tree-with-git-apply.patch
new file mode 100644
index 0000000..e1785ae
--- /dev/null
+++ b/nuget-client-use-work-tree-with-git-apply.patch
@@ -0,0 +1,28 @@
+From 691babb1c8316e2f829fbcf9f2aa14f4b7711960 Mon Sep 17 00:00:00 2001
+From: Omair Majid <omajid(a)redhat.com>
+Date: Thu, 9 Sep 2021 10:03:36 -0400
+Subject: [PATCH] [ArPow] Use --work-tree with git apply
+
+This makes things work bettern in a source-tarball build (where there
+may not be a .git directory), or there might be a .git directory but
+it's for a different repo than the one we are building.
+---
+ eng/source-build/source-build.proj | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/eng/source-build/source-build.proj b/eng/source-build/source-build.proj
+index 6f90f9793..72058ac88 100644
+--- a/eng/source-build/source-build.proj
++++ b/eng/source-build/source-build.proj
+@@ -55,7 +55,7 @@
+ </ItemGroup>
+
+ <Exec
+- Command="git apply --ignore-whitespace --whitespace=nowarn "%(SourceBuildPatchFile.FullPath)""
++ Command="git --work-tree="$(ProjectRoot)" apply --ignore-whitespace --whitespace=nowarn "%(SourceBuildPatchFile.FullPath)""
+ WorkingDirectory="$(ProjectRoot)"
+ Condition="'@(SourceBuildPatchFile)' != ''" />
+ </Target>
+--
+2.31.1
+
diff --git a/vstest-use-work-tree-with-git-apply.patch b/vstest-use-work-tree-with-git-apply.patch
new file mode 100644
index 0000000..58c139f
--- /dev/null
+++ b/vstest-use-work-tree-with-git-apply.patch
@@ -0,0 +1,33 @@
+From b2c4b2427d8c1a2410c4210789caccf1ec87e64a Mon Sep 17 00:00:00 2001
+From: Omair Majid <omajid(a)redhat.com>
+Date: Thu, 9 Sep 2021 13:21:51 -0400
+Subject: [PATCH] [ArPow] Use --work-tree with git apply
+
+This makes things work better in a source-tarball build, where there may
+be a .git directory somewhere in our parent directories but it's for a
+different repo than vstest. In a situation like that a plain `git apply`
+will (silently!) ignore patches because they wont apply to the unrelated
+repository. That will (eventually) make the source-build fail.
+`--work-tree` makes git directly use the directory that we care about.
+
+See https://github.com/dotnet/source-build/issues/2445 for more details.
+---
+ eng/SourceBuild.props | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/eng/SourceBuild.props b/eng/SourceBuild.props
+index b365645c..68f82592 100644
+--- a/eng/SourceBuild.props
++++ b/eng/SourceBuild.props
+@@ -24,7 +24,7 @@
+ </ItemGroup>
+
+ <Exec
+- Command="git apply --ignore-whitespace --whitespace=nowarn "%(SourceBuildPatchFile.FullPath)""
++ Command="git --work-tree="$(InnerSourceBuildRepoRoot)" apply --ignore-whitespace --whitespace=nowarn "%(SourceBuildPatchFile.FullPath)""
+ WorkingDirectory="$(InnerSourceBuildRepoRoot)"
+ Condition="'@(SourceBuildPatchFile)' != ''" />
+ </Target>
+--
+2.31.1
+
diff --git a/xliff-tasks-use-work-tree-with-git-apply.patch b/xliff-tasks-use-work-tree-with-git-apply.patch
new file mode 100644
index 0000000..810cf67
--- /dev/null
+++ b/xliff-tasks-use-work-tree-with-git-apply.patch
@@ -0,0 +1,11 @@
+--- a/eng/SourceBuild.props
++++ b/eng/SourceBuild.props
+@@ -15,7 +15,7 @@
+ </ItemGroup>
+
+ <Exec
+- Command="git apply --ignore-whitespace --whitespace=nowarn "%(SourceBuildPatchFile.FullPath)""
++ Command="git --work-tree="$(RepoRoot)" apply --ignore-whitespace --whitespace=nowarn "%(SourceBuildPatchFile.FullPath)""
+ WorkingDirectory="$(RepoRoot)"
+ Condition="'@(SourceBuildPatchFile)' != ''" />
+ </Target>
commit ab9ddbb0e7fe2b2c10a82c24f9004bcabd9f6941
Author: Omair Majid <omajid(a)redhat.com>
Date: Sat Aug 28 14:35:50 2021 -0400
Fix build
diff --git a/dotnet6.0.spec b/dotnet6.0.spec
index 5499281..1ee4e19 100644
--- a/dotnet6.0.spec
+++ b/dotnet6.0.spec
@@ -349,7 +349,15 @@ cp artifacts/obj/x64/Release/PackageVersions.props artifacts/obj/%{runtime_arch}
%endif
%endif
-find -iname 'nuget.config' -exec echo {}: \; -exec cat {} \; -exec echo \;
+%if %{use_bundled_libunwind}
+ sed -i -E \
+ 's/DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=(TRUE|true|FALSE|false)/DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=FALSE/' \
+ src/runtime.*/eng/SourceBuild.props
+%else
+ sed -i -E \
+ 's/DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=(TRUE|true|FALSE|false)/DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=TRUE/' \
+ src/runtime.*/eng/SourceBuild.props
+%endif
%build
@@ -398,7 +406,7 @@ unset LDFLAGS
# --with-sdk %%{_libdir}/dotnet \
#%%endif
-VERBOSE=1 echo ./build.sh \
+VERBOSE=1 ./build.sh \
%if %{without bootstrap}
--with-sdk previously-built-dotnet \
%endif
@@ -408,11 +416,6 @@ VERBOSE=1 echo ./build.sh \
/p:LogVerbosity=n \
/p:MinimalConsoleLogOutput=false \
/p:ContinueOnPrebuiltBaselineError=true \
-%if %{use_bundled_libunwind}
- /p:UseSystemLibunwind=false \
-%else
- /p:UseSystemLibunwind=true \
-%endif
sed -e 's|[@]LIBDIR[@]|%{_libdir}|g' %{SOURCE11} > dotnet.sh
@@ -420,11 +423,13 @@ sed -e 's|[@]LIBDIR[@]|%{_libdir}|g' %{SOURCE11} > dotnet.sh
%install
install -dm 0755 %{buildroot}%{_libdir}/dotnet
+ls artifacts/%{runtime_arch}/Release
tar xf artifacts/%{runtime_arch}/Release/dotnet-sdk-%{sdk_version}-%{runtime_id}.tar.gz -C %{buildroot}%{_libdir}/dotnet/
+# FIXME: no managed symbols in 6.0?
# Install managed symbols
-tar xf artifacts/%{runtime_arch}/Release/runtime/dotnet-runtime-symbols-%{runtime_version}-%{runtime_id}.tar.gz \
- -C %{buildroot}/%{_libdir}/dotnet/shared/Microsoft.NETCore.App/%{runtime_version}/
+#tar xf artifacts/%%{runtime_arch}/Release/runtime/dotnet-runtime-symbols-%%{runtime_version}-%%{runtime_id}.tar.gz \
+# -C %%{buildroot}/%%{_libdir}/dotnet/shared/Microsoft.NETCore.App/%%{runtime_version}/
# Fix executable permissions on files
find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.a' -exec chmod -x {} \;
@@ -459,15 +464,15 @@ install -dm 0755 %{buildroot}%{_sysconfdir}/dotnet
install install_location %{buildroot}%{_sysconfdir}/dotnet/
install -dm 0755 %{buildroot}%{_libdir}/dotnet/source-built-artifacts
-#install -m 0644 artifacts/%%{runtime_arch}/Release/Private.SourceBuilt.Artifacts.*.tar.gz %%{buildroot}/%%{_libdir}/dotnet/source-built-artifacts/
-install -m 0644 /home/omajid/rh-git/dotnet6.0/already-built-artifacts.tar.gz %{buildroot}/%{_libdir}/dotnet/source-built-artifacts/
+install -m 0644 artifacts/%{runtime_arch}/Release/Private.SourceBuilt.Artifacts.*.tar.gz %{buildroot}/%{_libdir}/dotnet/source-built-artifacts/
# Check debug symbols in all elf objects. This is not in %%check
# because native binaries are stripped by rpm-build after %%install.
# So we need to do this check earlier.
-echo "Testing build results for debug symbols..."
-%{SOURCE10} -v %{buildroot}%{_libdir}/dotnet/
+# FIXME
+#echo "Testing build results for debug symbols..."
+#%%{SOURCE10} -v %%{buildroot}%%{_libdir}/dotnet/
commit 6eb79c130ad50a7e5137ee83e860449c8e26837b
Author: Omair Majid <omajid(a)redhat.com>
Date: Wed Aug 25 15:10:50 2021 -0400
Update to latest source-build 6.0 preview commit
diff --git a/build-dotnet-tarball b/build-dotnet-tarball
index 98494bd..c0fa8fd 100755
--- a/build-dotnet-tarball
+++ b/build-dotnet-tarball
@@ -79,6 +79,7 @@ while [[ "$#" -gt 0 ]]; do
arg="${1}"
case "${arg}" in
--bootstrap)
+ check_bootstrap_environment
build_bootstrap=true
shift
;;
@@ -119,22 +120,26 @@ fi
if [ ! -f "${unmodified_tarball_name}.tar.gz" ]; then
temp_dir=$(mktemp -d -p "$(pwd)")
pushd "${temp_dir}"
- git clone https://github.com/dotnet/source-build
- pushd source-build
+ git clone https://github.com/dotnet/installer
+ pushd installer
git checkout "${tag}"
git submodule update --init --recursive
clean_dotnet_cache
# FIXME remove contineuonprebuilterror
- ./build.sh -p:SkipPrebuiltEnforcement=true -p:ContinueOnPrebuiltBaselineError=true -p:ArchiveDownloadedPackages=true -p:UseSystemLibraries=true -p:UseSystemLibunwind=false
- ./build-source-tarball.sh "${unmodified_tarball_name}" --skip-build -- -p:ContinueOnPrebuiltBaselineError=true -p:SkipPrebuiltEnforcement=true
+ # ./build.sh -p:SkipPrebuiltEnforcement=true -p:ContinueOnPrebuiltBaselineError=true -p:ArchiveDownloadedPackages=true -p:UseSystemLibraries=true -p:UseSystemLibunwind=false
+ # ./build-source-tarball.sh "${unmodified_tarball_name}" --skip-build -- -p:ContinueOnPrebuiltBaselineError=true -p:SkipPrebuiltEnforcement=true
+ mkdir -p "../${unmodified_tarball_name}"
+ ./build.sh /p:ArcadeBuildTarball=true /p:TarballDir="$(readlink -f ../"${unmodified_tarball_name}")"
if [[ ${build_bootstrap} == true ]]; then
- cp -a artifacts/"${arch}"/Release/Private.SourceBuilt.Artifacts.*.tar.gz "${unmodified_tarball_name}"/packages/archive/Private.SourceBuilt.Artifacts.*.tar.gz
+ # FIXME
+ # cp -a artifacts/"${arch}"/Release/Private.SourceBuilt.Artifacts.*.tar.gz "${unmodified_tarball_name}"/packages/archive/Private.SourceBuilt.Artifacts.*.tar.gz
+ echo
fi
popd
popd
- tar czf "${unmodified_tarball_name}.tar.gz" -C "${temp_dir}/source-build" "${unmodified_tarball_name}"
+ tar czf "${unmodified_tarball_name}.tar.gz" -C "${temp_dir}" "${unmodified_tarball_name}"
rm -rf "${temp_dir}"
fi
@@ -148,15 +153,16 @@ pushd "${tarball_name}"
if [[ ${build_bootstrap} != true ]]; then
find . -type f -iname '*.tar.gz' -delete
rm -rf .dotnet
+else
+ ./prep.sh
fi
# Remove files with funny licenses, crypto implementations and other
# not-very-useful artifacts to reduce tarball size
rm -r src/aspnetcore.*/src/SignalR/clients/java/signalr/gradle*
find src/aspnetcore.*/src -type d -name samples -print0 | xargs -0 rm -r
-rm -r src/nuget.client.*/test/EndToEnd
-rm -r src/runtime.*/src/mono/
-rm -r src/Humanizer.*/samples/
+rm -r src/nuget-client.*/test/EndToEnd
+rm -r src/source-build.*/src/humanizer/samples/
popd
diff --git a/dotnet6.0.spec b/dotnet6.0.spec
index 5617669..5499281 100644
--- a/dotnet6.0.spec
+++ b/dotnet6.0.spec
@@ -1,6 +1,3 @@
-#FIXME HACK
-%define debug_package %{nil}
-
%bcond_without bootstrap
# Avoid provides/requires from private libraries
@@ -23,11 +20,11 @@
# until that's done, disable LTO. This has to happen before setting the flags below.
%define _lto_cflags %{nil}
-%global host_version 6.0.0-preview6
-%global runtime_version 6.0.0-preview6
-%global aspnetcore_runtime_version %{runtime_version}
-%global sdk_version 6.0.0-preview6
-%global templates_version %{runtime_version}
+%global host_version 6.0.0-preview.7.21356.2
+%global runtime_version 6.0.0-preview.7.21356.2
+%global aspnetcore_runtime_version 6.0.0-preview.6.21355.2/
+%global sdk_version 6.0.100
+%global templates_version 6.0.0-rc.2.21420.26
#%%global templates_version %%(echo %%{runtime_version} | awk 'BEGIN { FS="."; OFS="." } {print $1, $2, $3+1 }')
%global host_rpm_version 6.0.0
@@ -36,7 +33,8 @@
%global sdk_rpm_version 6.0.0
# upstream can update releases without revving the SDK version so these don't always match
-%global src_version %{sdk_version}
+#%%global upstream_tag v%%{sdk_version}-SDK
+%global upstream_tag f3ea71b28f18719441d1e6995f134e22559131d6
%if 0%{?fedora} || 0%{?rhel} < 8
%global use_bundled_libunwind 0
@@ -59,14 +57,14 @@
Name: dotnet6.0
Version: %{sdk_rpm_version}
-Release: 0.1.preview6%{?dist}
+Release: 0.2.preview6%{?dist}
Summary: .NET Runtime and SDK
License: MIT and ASL 2.0 and BSD and LGPLv2+ and CC-BY and CC0 and MS-PL and EPL-1.0 and GPL+ and GPLv2 and ISC and OFL and zlib
URL: https://github.com/dotnet/
# The source is generated on a Fedora box via:
-# ./build-dotnet-tarball v%%{src_version}-SDK
-Source0: dotnet-6.0-preview6.tar.gz
+# ./build-dotnet-tarball --bootstrap $commit-id
+Source0: dotnet-%{upstream_tag}-x64-bootstrap.tar.gz
Source10: check-debug-symbols.py
Source11: dotnet.sh.in
@@ -307,13 +305,13 @@ These are not meant for general use.
%prep
%if %{without bootstrap}
-%setup -q -n dotnet-v%{src_version}-SDK
+%setup -q -n dotnet-%{upstream_tag}
%else
%ifarch x86_64
-%setup -q -T -b 0 -n tarball-6.0-preview6
+%setup -q -T -b 0 -n dotnet-%{upstream_tag}-%{runtime_arch}-bootstrap
%endif
%ifarch aarch64
-%setup -q -T -b 1 -n dotnet-v%{src_version}-SDK-%{runtime_arch}-bootstrap
+%setup -q -T -b 0 -n dotnet-%{upstream_tag}-%{runtime_arch}-bootstrap
%endif
%endif
@@ -422,27 +420,11 @@ sed -e 's|[@]LIBDIR[@]|%{_libdir}|g' %{SOURCE11} > dotnet.sh
%install
install -dm 0755 %{buildroot}%{_libdir}/dotnet
-#tar xf artifacts/%%{runtime_arch}/Release/dotnet-sdk-%%{sdk_version}-%%{runtime_id}.tar.gz -C %%{buildroot}%%{_libdir}/dotnet/
-
-# FIXME this is a GIANT HACK to create a fake .NET installation on disk
-cat <<EOF > %{buildroot}%{_libdir}/dotnet/dotnet
-#!/usr/bin/bash
-
-echo "I am a fake dotnet command"
-EOF
-mkdir -p %{buildroot}%{_libdir}/dotnet/host/fxr/%{host_version}/
-mkdir -p %{buildroot}%{_libdir}/dotnet/packs/Microsoft.AspNetCore.App.Ref/%{aspnetcore_runtime_version}/
-mkdir -p %{buildroot}%{_libdir}/dotnet/packs/Microsoft.NETCore.App.Host.%{runtime_id}/%{runtime_version}/
-mkdir -p %{buildroot}%{_libdir}/dotnet/packs/Microsoft.NETCore.App.Ref/%{runtime_version}/
-mkdir -p %{buildroot}%{_libdir}/dotnet/packs/NETStandard.Library.Ref/%{runtime_version}/
-mkdir -p %{buildroot}%{_libdir}/dotnet/sdk/%{sdk_version}/
-mkdir -p %{buildroot}%{_libdir}/dotnet/shared/Microsoft.NETCore.App/%{runtime_version}/
-mkdir -p %{buildroot}%{_libdir}/dotnet/shared/Microsoft.AspNetCore.App/%{aspnetcore_runtime_version}/
-mkdir -p %{buildroot}%{_libdir}/dotnet/templates/%{templates_version}
+tar xf artifacts/%{runtime_arch}/Release/dotnet-sdk-%{sdk_version}-%{runtime_id}.tar.gz -C %{buildroot}%{_libdir}/dotnet/
# Install managed symbols
-# tar xf artifacts/%%{runtime_arch}/Release/runtime/dotnet-runtime-symbols-%%{runtime_version}-%%{runtime_id}.tar.gz \
-# -C %%{buildroot}/%%{_libdir}/dotnet/shared/Microsoft.NETCore.App/%%{runtime_version}/
+tar xf artifacts/%{runtime_arch}/Release/runtime/dotnet-runtime-symbols-%{runtime_version}-%{runtime_id}.tar.gz \
+ -C %{buildroot}/%{_libdir}/dotnet/shared/Microsoft.NETCore.App/%{runtime_version}/
# Fix executable permissions on files
find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.a' -exec chmod -x {} \;
@@ -452,6 +434,7 @@ find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.pdb' -exec chmod -x {} \;
find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.props' -exec chmod -x {} \;
find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.pubxml' -exec chmod -x {} \;
find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.targets' -exec chmod -x {} \;
+find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.txt' -exec chmod -x {} \;
find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.xml' -exec chmod -x {} \;
install -dm 0755 %{buildroot}%{_sysconfdir}/profile.d/
@@ -477,17 +460,19 @@ install install_location %{buildroot}%{_sysconfdir}/dotnet/
install -dm 0755 %{buildroot}%{_libdir}/dotnet/source-built-artifacts
#install -m 0644 artifacts/%%{runtime_arch}/Release/Private.SourceBuilt.Artifacts.*.tar.gz %%{buildroot}/%%{_libdir}/dotnet/source-built-artifacts/
+install -m 0644 /home/omajid/rh-git/dotnet6.0/already-built-artifacts.tar.gz %{buildroot}/%{_libdir}/dotnet/source-built-artifacts/
+
# Check debug symbols in all elf objects. This is not in %%check
# because native binaries are stripped by rpm-build after %%install.
# So we need to do this check earlier.
-# FIXME echo "Testing build results for debug symbols..."
-#%%{SOURCE10} -v %%{buildroot}%%{_libdir}/dotnet/
+echo "Testing build results for debug symbols..."
+%{SOURCE10} -v %{buildroot}%{_libdir}/dotnet/
%check
-#%%{buildroot}%%{_libdir}/dotnet/dotnet --info
+%{buildroot}%{_libdir}/dotnet/dotnet --info
%files -n dotnet
@@ -499,9 +484,8 @@ install -dm 0755 %{buildroot}%{_libdir}/dotnet/source-built-artifacts
%dir %{_libdir}/dotnet/host
%dir %{_libdir}/dotnet/host/fxr
%{_bindir}/dotnet
-# FIXME
-#%%license %%{_libdir}/dotnet/LICENSE.txt
-#%%license %%{_libdir}/dotnet/ThirdPartyNotices.txt
+%license %{_libdir}/dotnet/LICENSE.txt
+%license %{_libdir}/dotnet/ThirdPartyNotices.txt
%doc %{_mandir}/man1/dotnet*.1.gz
%config(noreplace) %{_sysconfdir}/profile.d/dotnet.sh
%config(noreplace) %{_sysconfdir}/dotnet
@@ -530,6 +514,8 @@ install -dm 0755 %{buildroot}%{_libdir}/dotnet/source-built-artifacts
%files -n dotnet-sdk-6.0
%dir %{_libdir}/dotnet/sdk
%{_libdir}/dotnet/sdk/%{sdk_version}
+%dir %{_libdir}/dotnet/sdk-manifests
+%{_libdir}/dotnet/sdk-manifests/%{sdk_version}
%dir %{_libdir}/dotnet/packs
%files -n dotnet-sdk-6.0-source-built-artifacts
@@ -538,6 +524,9 @@ install -dm 0755 %{buildroot}%{_libdir}/dotnet/source-built-artifacts
%changelog
+* Wed Aug 25 2021 Omair Majid <omajid(a)redhat.com> - 6.0.0-0.2.preview6
+- Updated to build the latest source-build preview
+
* Fri Jul 23 2021 Omair Majid <omajid(a)redhat.com> - 6.0.0-0.1.preview6
- Initial package for .NET 6
commit 363c3eae42893b844fd39beac5dc70e8d1920808
Author: Omair Majid <omajid(a)redhat.com>
Date: Sat Jul 24 14:22:54 2021 -0400
Update README
diff --git a/README.md b/README.md
index df95803..5289f61 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
-# dotnet5.0
+# dotnet6.0
-This is the .NET 5.0 package for Fedora.
+This is the pre-release .NET 6.0 package for Fedora.
This package is maintained by the Fedora DotNet SIG (Special Interest
Group). You can find out more about the DotNet SIG at:
@@ -21,6 +21,10 @@ with one exception. It installs dotnet to `/usr/lib64/dotnet` (aka
# Contributing
+The steps below are for the final package. Please only contribute to this
+pre-release version this if you know what you are doing. Original instructions
+follow.
+
## General Changes
1. Fork the repo.
commit ccf6794055940ee90a1db7a3aa9c290eb9158c22
Author: Omair Majid <omajid(a)redhat.com>
Date: Sat Jul 24 14:20:14 2021 -0400
Initial .NET 6 package
diff --git a/dotnet5.0.rpmlintrc b/dotnet6.0.rpmlintrc
similarity index 100%
rename from dotnet5.0.rpmlintrc
rename to dotnet6.0.rpmlintrc
diff --git a/dotnet5.0.spec b/dotnet6.0.spec
similarity index 84%
rename from dotnet5.0.spec
rename to dotnet6.0.spec
index 8facb47..5617669 100644
--- a/dotnet5.0.spec
+++ b/dotnet6.0.spec
@@ -1,4 +1,7 @@
-%bcond_with bootstrap
+#FIXME HACK
+%define debug_package %{nil}
+
+%bcond_without bootstrap
# Avoid provides/requires from private libraries
%global privlibs libhostfxr
@@ -20,17 +23,17 @@
# until that's done, disable LTO. This has to happen before setting the flags below.
%define _lto_cflags %{nil}
-%global host_version 5.0.7
-%global runtime_version 5.0.7
+%global host_version 6.0.0-preview6
+%global runtime_version 6.0.0-preview6
%global aspnetcore_runtime_version %{runtime_version}
-%global sdk_version 5.0.204
+%global sdk_version 6.0.0-preview6
%global templates_version %{runtime_version}
#%%global templates_version %%(echo %%{runtime_version} | awk 'BEGIN { FS="."; OFS="." } {print $1, $2, $3+1 }')
-%global host_rpm_version %{host_version}
-%global aspnetcore_runtime_rpm_version %{aspnetcore_runtime_version}
-%global runtime_rpm_version %{runtime_version}
-%global sdk_rpm_version %{sdk_version}
+%global host_rpm_version 6.0.0
+%global runtime_rpm_version 6.0.0
+%global aspnetcore_runtime_rpm_version %{runtime_rpm_version}
+%global sdk_rpm_version 6.0.0
# upstream can update releases without revving the SDK version so these don't always match
%global src_version %{sdk_version}
@@ -54,16 +57,16 @@
%{!?runtime_id:%global runtime_id %(. /etc/os-release ; echo "${ID}.${VERSION_ID%%.*}")-%{runtime_arch}}
-Name: dotnet5.0
+Name: dotnet6.0
Version: %{sdk_rpm_version}
-Release: 1%{?dist}
+Release: 0.1.preview6%{?dist}
Summary: .NET Runtime and SDK
License: MIT and ASL 2.0 and BSD and LGPLv2+ and CC-BY and CC0 and MS-PL and EPL-1.0 and GPL+ and GPLv2 and ISC and OFL and zlib
URL: https://github.com/dotnet/
# The source is generated on a Fedora box via:
# ./build-dotnet-tarball v%%{src_version}-SDK
-Source0: dotnet-v%{src_version}-SDK.tar.gz
+Source0: dotnet-6.0-preview6.tar.gz
Source10: check-debug-symbols.py
Source11: dotnet.sh.in
@@ -82,9 +85,9 @@ BuildRequires: clang
BuildRequires: cmake
BuildRequires: coreutils
%if %{without bootstrap}
-BuildRequires: dotnet5.0-build-reference-packages
-BuildRequires: dotnet-sdk-5.0
-BuildRequires: dotnet-sdk-5.0-source-built-artifacts
+BuildRequires: dotnet-sdk-6.0-build-reference-packages
+BuildRequires: dotnet-sdk-6.0
+BuildRequires: dotnet-sdk-6.0-source-built-artifacts
%endif
BuildRequires: findutils
BuildRequires: git
@@ -104,7 +107,6 @@ BuildRequires: lttng-ust-devel
BuildRequires: make
BuildRequires: openssl-devel
BuildRequires: python3
-BuildRequires: systemtap-sdt-devel
BuildRequires: tar
BuildRequires: zlib-devel
@@ -125,7 +127,7 @@ application to drive everything.
Version: %{sdk_rpm_version}
Summary: .NET CLI tools and runtime
-Requires: dotnet-sdk-5.0%{?_isa} >= %{sdk_rpm_version}-%{release}
+Requires: dotnet-sdk-6.0%{?_isa} >= %{sdk_rpm_version}-%{release}
%description -n dotnet
.NET is a fast, lightweight and modular platform for creating
@@ -155,7 +157,7 @@ It particularly focuses on creating console applications, web
applications and micro-services.
-%package -n dotnet-hostfxr-5.0
+%package -n dotnet-hostfxr-6.0
Version: %{host_rpm_version}
Summary: .NET command line host resolver
@@ -164,7 +166,7 @@ Summary: .NET command line host resolver
# provided by this package, or from a newer version of .NET
Requires: dotnet-host%{?_isa} >= %{host_rpm_version}-%{release}
-%description -n dotnet-hostfxr-5.0
+%description -n dotnet-hostfxr-6.0
The .NET host resolver contains the logic to resolve and select
the right version of the .NET SDK or runtime to use.
@@ -175,12 +177,12 @@ It particularly focuses on creating console applications, web
applications and micro-services.
-%package -n dotnet-runtime-5.0
+%package -n dotnet-runtime-6.0
Version: %{runtime_rpm_version}
-Summary: NET 5.0 runtime
+Summary: NET 6.0 runtime
-Requires: dotnet-hostfxr-5.0%{?_isa} >= %{host_rpm_version}-%{release}
+Requires: dotnet-hostfxr-6.0%{?_isa} >= %{host_rpm_version}-%{release}
# libicu is dlopen()ed
Requires: libicu%{?_isa}
@@ -189,7 +191,7 @@ Requires: libicu%{?_isa}
Provides: bundled(libunwind) = 1.3
%endif
-%description -n dotnet-runtime-5.0
+%description -n dotnet-runtime-6.0
The .NET runtime contains everything needed to run .NET applications.
It includes a high performance Virtual Machine as well as the framework
libraries used by .NET applications.
@@ -201,14 +203,14 @@ It particularly focuses on creating console applications, web
applications and micro-services.
-%package -n aspnetcore-runtime-5.0
+%package -n aspnetcore-runtime-6.0
Version: %{aspnetcore_runtime_rpm_version}
-Summary: ASP.NET Core 5.0 runtime
+Summary: ASP.NET Core 6.0 runtime
-Requires: dotnet-runtime-5.0%{?_isa} >= %{runtime_rpm_version}-%{release}
+Requires: dotnet-runtime-6.0%{?_isa} >= %{runtime_rpm_version}-%{release}
-%description -n aspnetcore-runtime-5.0
+%description -n aspnetcore-runtime-6.0
The ASP.NET Core runtime contains everything needed to run .NET
web applications. It includes a high performance Virtual Machine as
well as the framework libraries used by .NET applications.
@@ -220,16 +222,16 @@ It particularly focuses on creating console applications, web
applications and micro-services.
-%package -n dotnet-templates-5.0
+%package -n dotnet-templates-6.0
Version: %{sdk_rpm_version}
-Summary: .NET 5.0 templates
+Summary: .NET 6.0 templates
# Theoretically any version of the host should work. But lets aim for the one
# provided by this package, or from a newer version of .NET
Requires: dotnet-host%{?_isa} >= %{host_rpm_version}-%{release}
-%description -n dotnet-templates-5.0
+%description -n dotnet-templates-6.0
This package contains templates used by the .NET SDK.
.NET is a fast, lightweight and modular platform for creating
@@ -239,25 +241,24 @@ It particularly focuses on creating console applications, web
applications and micro-services.
-%package -n dotnet-sdk-5.0
+%package -n dotnet-sdk-6.0
Version: %{sdk_rpm_version}
-Summary: .NET 5.0 Software Development Kit
+Summary: .NET 6.0 Software Development Kit
Provides: bundled(js-jquery)
-Provides: bundled(npm)
-Requires: dotnet-runtime-5.0%{?_isa} >= %{runtime_rpm_version}-%{release}
-Requires: aspnetcore-runtime-5.0%{?_isa} >= %{aspnetcore_runtime_rpm_version}-%{release}
+Requires: dotnet-runtime-6.0%{?_isa} >= %{runtime_rpm_version}-%{release}
+Requires: aspnetcore-runtime-6.0%{?_isa} >= %{aspnetcore_runtime_rpm_version}-%{release}
-Requires: dotnet-apphost-pack-5.0%{?_isa} >= %{runtime_rpm_version}-%{release}
-Requires: dotnet-targeting-pack-5.0%{?_isa} >= %{runtime_rpm_version}-%{release}
-Requires: aspnetcore-targeting-pack-5.0%{?_isa} >= %{aspnetcore_runtime_rpm_version}-%{release}
+Requires: dotnet-apphost-pack-6.0%{?_isa} >= %{runtime_rpm_version}-%{release}
+Requires: dotnet-targeting-pack-6.0%{?_isa} >= %{runtime_rpm_version}-%{release}
+Requires: aspnetcore-targeting-pack-6.0%{?_isa} >= %{aspnetcore_runtime_rpm_version}-%{release}
Requires: netstandard-targeting-pack-2.1%{?_isa} >= %{sdk_rpm_version}-%{release}
-Requires: dotnet-templates-5.0%{?_isa} >= %{sdk_rpm_version}-%{release}
+Requires: dotnet-templates-6.0%{?_isa} >= %{sdk_rpm_version}-%{release}
-%description -n dotnet-sdk-5.0
+%description -n dotnet-sdk-6.0
The .NET SDK is a collection of command line applications to
create, build, publish and run .NET applications.
@@ -286,18 +287,18 @@ applications using the .NET SDK.
%{_libdir}/dotnet/packs/%{5}
}
-%dotnet_targeting_pack dotnet-apphost-pack-5.0 %{runtime_rpm_version} Microsoft.NETCore.App 5.0 Microsoft.NETCore.App.Host.%{runtime_id}
-%dotnet_targeting_pack dotnet-targeting-pack-5.0 %{runtime_rpm_version} Microsoft.NETCore.App 5.0 Microsoft.NETCore.App.Ref
-%dotnet_targeting_pack aspnetcore-targeting-pack-5.0 %{aspnetcore_runtime_rpm_version} Microsoft.AspNetCore.App 5.0 Microsoft.AspNetCore.App.Ref
+%dotnet_targeting_pack dotnet-apphost-pack-6.0 %{runtime_rpm_version} Microsoft.NETCore.App 6.0 Microsoft.NETCore.App.Host.%{runtime_id}
+%dotnet_targeting_pack dotnet-targeting-pack-6.0 %{runtime_rpm_version} Microsoft.NETCore.App 6.0 Microsoft.NETCore.App.Ref
+%dotnet_targeting_pack aspnetcore-targeting-pack-6.0 %{aspnetcore_runtime_rpm_version} Microsoft.AspNetCore.App 6.0 Microsoft.AspNetCore.App.Ref
%dotnet_targeting_pack netstandard-targeting-pack-2.1 %{sdk_rpm_version} NETStandard.Library 2.1 NETStandard.Library.Ref
-%package -n dotnet-sdk-5.0-source-built-artifacts
+%package -n dotnet-sdk-6.0-source-built-artifacts
Version: %{sdk_rpm_version}
-Summary: Internal package for building .NET 5.0 Software Development Kit
+Summary: Internal package for building .NET 6.0 Software Development Kit
-%description -n dotnet-sdk-5.0-source-built-artifacts
+%description -n dotnet-sdk-6.0-source-built-artifacts
The .NET source-built archive is a collection of packages needed
to build the .NET SDK itself.
@@ -309,7 +310,7 @@ These are not meant for general use.
%setup -q -n dotnet-v%{src_version}-SDK
%else
%ifarch x86_64
-%setup -q -T -b 0 -n dotnet-v%{src_version}-SDK-%{runtime_arch}-bootstrap
+%setup -q -T -b 0 -n tarball-6.0-preview6
%endif
%ifarch aarch64
%setup -q -T -b 1 -n dotnet-v%{src_version}-SDK-%{runtime_arch}-bootstrap
@@ -334,10 +335,10 @@ ln -s %{_libdir}/dotnet/reference-packages/Private.SourceBuild.ReferencePackages
%endif
# Fix bad hardcoded path in build
-sed -i 's|/usr/share/dotnet|%{_libdir}/dotnet|' src/runtime.*/src/installer/corehost/cli/hostmisc/pal.unix.cpp
+sed -i 's|/usr/share/dotnet|%{_libdir}/dotnet|' src/runtime.*/src/native/corehost/hostmisc/pal.unix.cpp
# Disable warnings
-sed -i 's|skiptests|skiptests ignorewarnings|' repos/runtime.common.props
+# sed -i 's|skiptests|skiptests ignorewarnings|' repos/runtime.common.props
pushd src/sdk.*
%patch500 -p1
@@ -350,8 +351,6 @@ cp artifacts/obj/x64/Release/PackageVersions.props artifacts/obj/%{runtime_arch}
%endif
%endif
-cat source-build-info.txt
-
find -iname 'nuget.config' -exec echo {}: \; -exec cat {} \; -exec echo \;
@@ -401,7 +400,7 @@ unset LDFLAGS
# --with-sdk %%{_libdir}/dotnet \
#%%endif
-VERBOSE=1 ./build.sh \
+VERBOSE=1 echo ./build.sh \
%if %{without bootstrap}
--with-sdk previously-built-dotnet \
%endif
@@ -423,27 +422,37 @@ sed -e 's|[@]LIBDIR[@]|%{_libdir}|g' %{SOURCE11} > dotnet.sh
%install
install -dm 0755 %{buildroot}%{_libdir}/dotnet
-ls artifacts/%{runtime_arch}/Release
-tar xf artifacts/%{runtime_arch}/Release/dotnet-sdk-%{sdk_version}-%{runtime_id}.tar.gz -C %{buildroot}%{_libdir}/dotnet/
+#tar xf artifacts/%%{runtime_arch}/Release/dotnet-sdk-%%{sdk_version}-%%{runtime_id}.tar.gz -C %%{buildroot}%%{_libdir}/dotnet/
+
+# FIXME this is a GIANT HACK to create a fake .NET installation on disk
+cat <<EOF > %{buildroot}%{_libdir}/dotnet/dotnet
+#!/usr/bin/bash
+
+echo "I am a fake dotnet command"
+EOF
+mkdir -p %{buildroot}%{_libdir}/dotnet/host/fxr/%{host_version}/
+mkdir -p %{buildroot}%{_libdir}/dotnet/packs/Microsoft.AspNetCore.App.Ref/%{aspnetcore_runtime_version}/
+mkdir -p %{buildroot}%{_libdir}/dotnet/packs/Microsoft.NETCore.App.Host.%{runtime_id}/%{runtime_version}/
+mkdir -p %{buildroot}%{_libdir}/dotnet/packs/Microsoft.NETCore.App.Ref/%{runtime_version}/
+mkdir -p %{buildroot}%{_libdir}/dotnet/packs/NETStandard.Library.Ref/%{runtime_version}/
+mkdir -p %{buildroot}%{_libdir}/dotnet/sdk/%{sdk_version}/
+mkdir -p %{buildroot}%{_libdir}/dotnet/shared/Microsoft.NETCore.App/%{runtime_version}/
+mkdir -p %{buildroot}%{_libdir}/dotnet/shared/Microsoft.AspNetCore.App/%{aspnetcore_runtime_version}/
+mkdir -p %{buildroot}%{_libdir}/dotnet/templates/%{templates_version}
# Install managed symbols
-tar xf artifacts/%{runtime_arch}/Release/runtime/dotnet-runtime-symbols-%{runtime_version}-%{runtime_id}.tar.gz \
- -C %{buildroot}/%{_libdir}/dotnet/shared/Microsoft.NETCore.App/%{runtime_version}/
+# tar xf artifacts/%%{runtime_arch}/Release/runtime/dotnet-runtime-symbols-%%{runtime_version}-%%{runtime_id}.tar.gz \
+# -C %%{buildroot}/%%{_libdir}/dotnet/shared/Microsoft.NETCore.App/%%{runtime_version}/
# Fix executable permissions on files
find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.a' -exec chmod -x {} \;
find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.dll' -exec chmod -x {} \;
-find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.h' -exec chmod -x {} \;
+find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.h' -exec chmod 0644 {} \;
find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.pdb' -exec chmod -x {} \;
find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.props' -exec chmod -x {} \;
find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.pubxml' -exec chmod -x {} \;
find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.targets' -exec chmod -x {} \;
find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.xml' -exec chmod -x {} \;
-chmod 0755 %{buildroot}/%{_libdir}/dotnet/sdk/%{sdk_version}/AppHostTemplate/apphost
-chmod 0755 %{buildroot}/%{_libdir}/dotnet/packs/Microsoft.NETCore.App.Host.%{runtime_id}/%{runtime_version}/runtimes/%{runtime_id}/native/apphost
-chmod 0755 %{buildroot}/%{_libdir}/dotnet/packs/Microsoft.NETCore.App.Host.%{runtime_id}/%{runtime_version}/runtimes/%{runtime_id}/native/libnethost.so
-chmod 0644 %{buildroot}/%{_libdir}/dotnet/packs/Microsoft.NETCore.App.Host.%{runtime_id}/%{runtime_version}/runtimes/%{runtime_id}/native/nethost.h
-chmod 0755 %{buildroot}/%{_libdir}/dotnet/packs/Microsoft.NETCore.App.Host.%{runtime_id}/%{runtime_version}/runtimes/%{runtime_id}/native/singlefilehost
install -dm 0755 %{buildroot}%{_sysconfdir}/profile.d/
install dotnet.sh %{buildroot}%{_sysconfdir}/profile.d/
@@ -467,17 +476,18 @@ install -dm 0755 %{buildroot}%{_sysconfdir}/dotnet
install install_location %{buildroot}%{_sysconfdir}/dotnet/
install -dm 0755 %{buildroot}%{_libdir}/dotnet/source-built-artifacts
-install -m 0644 artifacts/%{runtime_arch}/Release/Private.SourceBuilt.Artifacts.*.tar.gz %{buildroot}/%{_libdir}/dotnet/source-built-artifacts/
+#install -m 0644 artifacts/%%{runtime_arch}/Release/Private.SourceBuilt.Artifacts.*.tar.gz %%{buildroot}/%%{_libdir}/dotnet/source-built-artifacts/
# Check debug symbols in all elf objects. This is not in %%check
# because native binaries are stripped by rpm-build after %%install.
# So we need to do this check earlier.
-echo "Testing build results for debug symbols..."
-%{SOURCE10} -v %{buildroot}%{_libdir}/dotnet/
+# FIXME echo "Testing build results for debug symbols..."
+#%%{SOURCE10} -v %%{buildroot}%%{_libdir}/dotnet/
+
%check
-%{buildroot}%{_libdir}/dotnet/dotnet --info
+#%%{buildroot}%%{_libdir}/dotnet/dotnet --info
%files -n dotnet
@@ -489,8 +499,9 @@ echo "Testing build results for debug symbols..."
%dir %{_libdir}/dotnet/host
%dir %{_libdir}/dotnet/host/fxr
%{_bindir}/dotnet
-%license %{_libdir}/dotnet/LICENSE.txt
-%license %{_libdir}/dotnet/ThirdPartyNotices.txt
+# FIXME
+#%%license %%{_libdir}/dotnet/LICENSE.txt
+#%%license %%{_libdir}/dotnet/ThirdPartyNotices.txt
%doc %{_mandir}/man1/dotnet*.1.gz
%config(noreplace) %{_sysconfdir}/profile.d/dotnet.sh
%config(noreplace) %{_sysconfdir}/dotnet
@@ -498,35 +509,38 @@ echo "Testing build results for debug symbols..."
%dir %{_datadir}/bash-completion/completions
%{_datadir}/bash-completion/completions/dotnet
-%files -n dotnet-hostfxr-5.0
+%files -n dotnet-hostfxr-6.0
%dir %{_libdir}/dotnet/host/fxr
%{_libdir}/dotnet/host/fxr/%{host_version}
-%files -n dotnet-runtime-5.0
+%files -n dotnet-runtime-6.0
%dir %{_libdir}/dotnet/shared
%dir %{_libdir}/dotnet/shared/Microsoft.NETCore.App
%{_libdir}/dotnet/shared/Microsoft.NETCore.App/%{runtime_version}
-%files -n aspnetcore-runtime-5.0
+%files -n aspnetcore-runtime-6.0
%dir %{_libdir}/dotnet/shared
%dir %{_libdir}/dotnet/shared/Microsoft.AspNetCore.App
%{_libdir}/dotnet/shared/Microsoft.AspNetCore.App/%{aspnetcore_runtime_version}
-%files -n dotnet-templates-5.0
+%files -n dotnet-templates-6.0
%dir %{_libdir}/dotnet/templates
%{_libdir}/dotnet/templates/%{templates_version}
-%files -n dotnet-sdk-5.0
+%files -n dotnet-sdk-6.0
%dir %{_libdir}/dotnet/sdk
%{_libdir}/dotnet/sdk/%{sdk_version}
%dir %{_libdir}/dotnet/packs
-%files -n dotnet-sdk-5.0-source-built-artifacts
+%files -n dotnet-sdk-6.0-source-built-artifacts
%dir %{_libdir}/dotnet
%{_libdir}/dotnet/source-built-artifacts
%changelog
+* Fri Jul 23 2021 Omair Majid <omajid(a)redhat.com> - 6.0.0-0.1.preview6
+- Initial package for .NET 6
+
* Thu Jun 10 2021 Omair Majid <omajid(a)redhat.com> - 5.0.204-1
- Update to .NET SDK 5.0.204 and Runtime 5.0.7
diff --git a/sources b/sources
deleted file mode 100644
index 3023834..0000000
--- a/sources
+++ /dev/null
@@ -1 +0,0 @@
-SHA512 (dotnet-v5.0.204-SDK.tar.gz) = ac6df26f4b36bc6da2bf1909d6f43f82bdfe95461ccb19558edafa4a6e8ceb287287da814aa30ba67d95154640ecfa708cdf42c714997c8d1afe8be2308310bb
commit 6e4203231baf641ee62293cbd9eeb2c94c2b5287
Author: Omair Majid <omajid(a)redhat.com>
Date: Thu Jun 10 14:03:16 2021 -0400
Update to .NET SDK 5.0.204 and Runtime 5.0.7
diff --git a/.gitignore b/.gitignore
index 263a869..b620824 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,3 +8,4 @@
/dotnet-v5.0.104-SDK.tar.gz
/dotnet-v5.0.202-SDK.tar.gz
/dotnet-v5.0.203-SDK.tar.gz
+/dotnet-v5.0.204-SDK.tar.gz
diff --git a/dotnet5.0.spec b/dotnet5.0.spec
index 9856091..8facb47 100644
--- a/dotnet5.0.spec
+++ b/dotnet5.0.spec
@@ -20,10 +20,10 @@
# until that's done, disable LTO. This has to happen before setting the flags below.
%define _lto_cflags %{nil}
-%global host_version 5.0.6
-%global runtime_version 5.0.6
+%global host_version 5.0.7
+%global runtime_version 5.0.7
%global aspnetcore_runtime_version %{runtime_version}
-%global sdk_version 5.0.203
+%global sdk_version 5.0.204
%global templates_version %{runtime_version}
#%%global templates_version %%(echo %%{runtime_version} | awk 'BEGIN { FS="."; OFS="." } {print $1, $2, $3+1 }')
@@ -527,6 +527,9 @@ echo "Testing build results for debug symbols..."
%changelog
+* Thu Jun 10 2021 Omair Majid <omajid(a)redhat.com> - 5.0.204-1
+- Update to .NET SDK 5.0.204 and Runtime 5.0.7
+
* Wed May 12 2021 Omair Majid <omajid(a)redhat.com> - 5.0.203-1
- Update to .NET SDK 5.0.203 and Runtime 5.0.6
diff --git a/sources b/sources
index 690c031..3023834 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (dotnet-v5.0.203-SDK.tar.gz) = d2a6162c62d475ea3aab0055179a405b8b99fb698c30738db4d93c6f3372da438b2c8c7ad204b56e01f1ff53a6fd1c12e118dbc7a6a6d637b4bd9392794fa529
+SHA512 (dotnet-v5.0.204-SDK.tar.gz) = ac6df26f4b36bc6da2bf1909d6f43f82bdfe95461ccb19558edafa4a6e8ceb287287da814aa30ba67d95154640ecfa708cdf42c714997c8d1afe8be2308310bb
commit 44bde96015d3885c4f1d022d6825a3bced856001
Author: Omair Majid <omajid(a)redhat.com>
Date: Fri May 14 10:40:29 2021 -0400
Update to .NET SDK 5.0.203 and Runtime 5.0.6
diff --git a/.gitignore b/.gitignore
index e9aebf0..263a869 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,3 +7,4 @@
/dotnet-v5.0.103-SDK.tar.gz
/dotnet-v5.0.104-SDK.tar.gz
/dotnet-v5.0.202-SDK.tar.gz
+/dotnet-v5.0.203-SDK.tar.gz
diff --git a/dotnet5.0.spec b/dotnet5.0.spec
index 28764be..9856091 100644
--- a/dotnet5.0.spec
+++ b/dotnet5.0.spec
@@ -20,10 +20,10 @@
# until that's done, disable LTO. This has to happen before setting the flags below.
%define _lto_cflags %{nil}
-%global host_version 5.0.5
-%global runtime_version 5.0.5
+%global host_version 5.0.6
+%global runtime_version 5.0.6
%global aspnetcore_runtime_version %{runtime_version}
-%global sdk_version 5.0.202
+%global sdk_version 5.0.203
%global templates_version %{runtime_version}
#%%global templates_version %%(echo %%{runtime_version} | awk 'BEGIN { FS="."; OFS="." } {print $1, $2, $3+1 }')
@@ -329,8 +329,8 @@ rm -rf packages/source-built
%if %{without bootstrap}
mkdir -p packages/archive
-ln -s %{_libdir}/dotnet/source-built-artifacts/*.tar.gz packages/archive/
-ln -s %{_libdir}/dotnet/reference-packages/*.tar.gz packages/archive
+ln -s %{_libdir}/dotnet/source-built-artifacts/Private.SourceBuilt.Artifacts.*.tar.gz packages/archive/
+ln -s %{_libdir}/dotnet/reference-packages/Private.SourceBuild.ReferencePackages*.tar.gz packages/archive/
%endif
# Fix bad hardcoded path in build
@@ -527,6 +527,9 @@ echo "Testing build results for debug symbols..."
%changelog
+* Wed May 12 2021 Omair Majid <omajid(a)redhat.com> - 5.0.203-1
+- Update to .NET SDK 5.0.203 and Runtime 5.0.6
+
* Wed Apr 14 2021 Omair Majid <omajid(a)redhat.com> - 5.0.202-1
- Update to .NET SDK 5.0.202 and Runtime 5.0.5
diff --git a/sources b/sources
index 269959d..690c031 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (dotnet-v5.0.202-SDK.tar.gz) = ac69830aca58db95f7f48839867ebb2bb97dec2ef50c23ac7879ba217800a76c360d727a7e1db065bc4b0edd77b5fa93151d840e64c8b1564265819f8650c20e
+SHA512 (dotnet-v5.0.203-SDK.tar.gz) = d2a6162c62d475ea3aab0055179a405b8b99fb698c30738db4d93c6f3372da438b2c8c7ad204b56e01f1ff53a6fd1c12e118dbc7a6a6d637b4bd9392794fa529
commit 7f6b8ec3f9527a6fbc89018ce31cdcfecc474edd
Author: Omair Majid <omajid(a)redhat.com>
Date: Wed Apr 14 23:01:46 2021 -0400
Update to .NET SDK 5.0.202 and Runtime 5.0.5
Also make update-release more flexible with optional bug ids and
optional already-built tarballs.
diff --git a/.gitignore b/.gitignore
index 016368a..e9aebf0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,3 +6,4 @@
/dotnet-v5.0.102-SDK.tar.gz
/dotnet-v5.0.103-SDK.tar.gz
/dotnet-v5.0.104-SDK.tar.gz
+/dotnet-v5.0.202-SDK.tar.gz
diff --git a/build-dotnet-tarball b/build-dotnet-tarball
index 990b208..98494bd 100755
--- a/build-dotnet-tarball
+++ b/build-dotnet-tarball
@@ -154,7 +154,7 @@ fi
# not-very-useful artifacts to reduce tarball size
rm -r src/aspnetcore.*/src/SignalR/clients/java/signalr/gradle*
find src/aspnetcore.*/src -type d -name samples -print0 | xargs -0 rm -r
-rm -r src/NuGet.Client.*/test/EndToEnd
+rm -r src/nuget.client.*/test/EndToEnd
rm -r src/runtime.*/src/mono/
rm -r src/Humanizer.*/samples/
diff --git a/dotnet5.0.spec b/dotnet5.0.spec
index d960cba..28764be 100644
--- a/dotnet5.0.spec
+++ b/dotnet5.0.spec
@@ -20,10 +20,10 @@
# until that's done, disable LTO. This has to happen before setting the flags below.
%define _lto_cflags %{nil}
-%global host_version 5.0.4
-%global runtime_version 5.0.4
+%global host_version 5.0.5
+%global runtime_version 5.0.5
%global aspnetcore_runtime_version %{runtime_version}
-%global sdk_version 5.0.104
+%global sdk_version 5.0.202
%global templates_version %{runtime_version}
#%%global templates_version %%(echo %%{runtime_version} | awk 'BEGIN { FS="."; OFS="." } {print $1, $2, $3+1 }')
@@ -56,7 +56,7 @@
Name: dotnet5.0
Version: %{sdk_rpm_version}
-Release: 2%{?dist}
+Release: 1%{?dist}
Summary: .NET Runtime and SDK
License: MIT and ASL 2.0 and BSD and LGPLv2+ and CC-BY and CC0 and MS-PL and EPL-1.0 and GPL+ and GPLv2 and ISC and OFL and zlib
URL: https://github.com/dotnet/
@@ -68,10 +68,6 @@ Source0: dotnet-v%{src_version}-SDK.tar.gz
Source10: check-debug-symbols.py
Source11: dotnet.sh.in
-# https://github.com/dotnet/runtime/pull/48203
-# Add Fedora 35 RID
-Patch100: runtime-48203-fedora-35-rid.patch
-
# Disable telemetry by default; make it opt-in
Patch500: sdk-telemetry-optout.patch
@@ -343,10 +339,6 @@ sed -i 's|/usr/share/dotnet|%{_libdir}/dotnet|' src/runtime.*/src/installer/core
# Disable warnings
sed -i 's|skiptests|skiptests ignorewarnings|' repos/runtime.common.props
-pushd src/runtime.*
-%patch100 -p1
-popd
-
pushd src/sdk.*
%patch500 -p1
popd
@@ -535,6 +527,9 @@ echo "Testing build results for debug symbols..."
%changelog
+* Wed Apr 14 2021 Omair Majid <omajid(a)redhat.com> - 5.0.202-1
+- Update to .NET SDK 5.0.202 and Runtime 5.0.5
+
* Tue Apr 06 2021 Omair Majid <omajid(a)redhat.com> - 5.0.104-2
- Mark files under /etc/ as config(noreplace)
- Add an rpm-inspect configuration file
diff --git a/rename-tarball b/rename-tarball
index b6b6086..ea7e65c 100755
--- a/rename-tarball
+++ b/rename-tarball
@@ -21,12 +21,14 @@ while [[ "$#" -gt 0 ]]; do
esac
done
-original_name=${positional_args[0]:-}
-if [[ -z ${original_name} ]]; then
+if [[ -z "${positional_args[0]:-}" ]]; then
echo "error: missing original tarball name"
exit 1
fi
+original_path=$(readlink -f "${positional_args[0]:-}")
+original_name=$(basename "$original_path")
+
new_name=${positional_args[1]:-}
if [[ -z ${new_name} ]]; then
echo "error: missing new tarball name"
@@ -41,8 +43,8 @@ echo "New name: ${new_name}.tar.gz"
mkdir "temp-${new_name}"
pushd "temp-${new_name}"
-tar xf "../${original_name}.tar.gz"
-mv "${original_name}" "${new_name}"
+tar xf "${original_path}"
+mv -- * "${new_name}"
tar czf ../"${new_name}.tar.gz" "${new_name}"
rm -rf "${new_name}"
popd
diff --git a/runtime-48203-fedora-35-rid.patch b/runtime-48203-fedora-35-rid.patch
deleted file mode 100644
index cb8d6ea..0000000
--- a/runtime-48203-fedora-35-rid.patch
+++ /dev/null
@@ -1,119 +0,0 @@
-From e806448fdf844ca925c461b356b31363e844e902 Mon Sep 17 00:00:00 2001
-From: Omair Majid <omajid(a)redhat.com>
-Date: Thu, 11 Feb 2021 20:13:18 -0500
-Subject: [PATCH 1/2] Add Fedora 35 RID
-
-Fedora rawhide now uses the fedora.35-x64 RID:
-
- $ podman run -it registry.fedoraproject.org/fedora:rawhide /bin/bash -c 'cat /etc/os-release'
- NAME=Fedora
- VERSION="35 (Container Image Prerelease)"
- ID=fedora
- VERSION_ID=35
- VERSION_CODENAME=""
- PLATFORM_ID="platform:f35"
- PRETTY_NAME="Fedora 35 (Container Image Prerelease)"
- ANSI_COLOR="0;38;2;60;110;180"
- LOGO=fedora-logo-icon
- CPE_NAME="cpe:/o:fedoraproject:fedora:35"
- HOME_URL="https://fedoraproject.org/"
- DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora/rawhide/system-administrators..."
- SUPPORT_URL="https://fedoraproject.org/wiki/Communicating_and_getting_help"
- BUG_REPORT_URL="https://bugzilla.redhat.com/"
- REDHAT_BUGZILLA_PRODUCT="Fedora"
- REDHAT_BUGZILLA_PRODUCT_VERSION=rawhide
- REDHAT_SUPPORT_PRODUCT="Fedora"
- REDHAT_SUPPORT_PRODUCT_VERSION=rawhide
- PRIVACY_POLICY_URL="https://fedoraproject.org/wiki/Legal:PrivacyPolicy"
- VARIANT="Container Image"
- VARIANT_ID=container
----
- .../runtime.compatibility.json | 32 ++++++++++++++++++
- .../Microsoft.NETCore.Platforms/runtime.json | 17 ++++++++++
- .../runtimeGroups.props | 2 +-
- 6 files changed, 69 insertions(+), 18 deletions(-)
-
-diff --git a/src/libraries/pkg/Microsoft.NETCore.Platforms/runtime.compatibility.json b/src/libraries/pkg/Microsoft.NETCore.Platforms/runtime.compatibility.json
-index 275929bf1fce..f56d7461e90c 100644
---- a/src/libraries/pkg/Microsoft.NETCore.Platforms/runtime.compatibility.json
-+++ b/src/libraries/pkg/Microsoft.NETCore.Platforms/runtime.compatibility.json
-@@ -2376,6 +2376,38 @@
- "any",
- "base"
- ],
-+ "fedora.35": [
-+ "fedora.35",
-+ "fedora",
-+ "linux",
-+ "unix",
-+ "any",
-+ "base"
-+ ],
-+ "fedora.35-arm64": [
-+ "fedora.35-arm64",
-+ "fedora.35",
-+ "fedora-arm64",
-+ "fedora",
-+ "linux-arm64",
-+ "linux",
-+ "unix-arm64",
-+ "unix",
-+ "any",
-+ "base"
-+ ],
-+ "fedora.35-x64": [
-+ "fedora.35-x64",
-+ "fedora.35",
-+ "fedora-x64",
-+ "fedora",
-+ "linux-x64",
-+ "linux",
-+ "unix-x64",
-+ "unix",
-+ "any",
-+ "base"
-+ ],
- "freebsd": [
- "freebsd",
- "unix",
-diff --git a/src/libraries/pkg/Microsoft.NETCore.Platforms/runtime.json b/src/libraries/pkg/Microsoft.NETCore.Platforms/runtime.json
-index 5a2631cccd9a..3e8b2e74e85f 100644
---- a/src/libraries/pkg/Microsoft.NETCore.Platforms/runtime.json
-+++ b/src/libraries/pkg/Microsoft.NETCore.Platforms/runtime.json
-@@ -962,6 +962,23 @@
- "fedora-x64"
- ]
- },
-+ "fedora.35": {
-+ "#import": [
-+ "fedora"
-+ ]
-+ },
-+ "fedora.35-arm64": {
-+ "#import": [
-+ "fedora.35",
-+ "fedora-arm64"
-+ ]
-+ },
-+ "fedora.35-x64": {
-+ "#import": [
-+ "fedora.35",
-+ "fedora-x64"
-+ ]
-+ },
- "freebsd": {
- "#import": [
- "unix"
-diff --git a/src/libraries/pkg/Microsoft.NETCore.Platforms/runtimeGroups.props b/src/libraries/pkg/Microsoft.NETCore.Platforms/runtimeGroups.props
-index 5bd4306409de..e78268c077fd 100644
---- a/src/libraries/pkg/Microsoft.NETCore.Platforms/runtimeGroups.props
-+++ b/src/libraries/pkg/Microsoft.NETCore.Platforms/runtimeGroups.props
-@@ -60,7 +60,7 @@
- <RuntimeGroup Include="fedora">
- <Parent>linux</Parent>
- <Architectures>x64;arm64</Architectures>
-- <Versions>23;24;25;26;27;28;29;30;31;32;33;34</Versions>
-+ <Versions>23;24;25;26;27;28;29;30;31;32;33;34;35</Versions>
- <TreatVersionsAsCompatible>false</TreatVersionsAsCompatible>
- </RuntimeGroup>
-
diff --git a/sdk-telemetry-optout.patch b/sdk-telemetry-optout.patch
index 9b92f33..d6e6464 100644
--- a/sdk-telemetry-optout.patch
+++ b/sdk-telemetry-optout.patch
@@ -15,4 +15,4 @@ index de1ebb9e6..6bbf479de 100644
+
DebugHelper.HandleDebugSwitch(ref args);
- new MulticoreJitActivator().TryActivateMulticoreJit();
+ // Capture the current timestamp to calculate the host overhead.
diff --git a/sources b/sources
index ebd7eb5..269959d 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (dotnet-v5.0.104-SDK.tar.gz) = 3318750fb2437d7849f1dd8a3047fcbddab75420439dc60b6f2e50b71ad0ef8d7bbece54c7162254049eac5ed5e0835966b47adaa0255063160622bc6bdb9d68
+SHA512 (dotnet-v5.0.202-SDK.tar.gz) = ac69830aca58db95f7f48839867ebb2bb97dec2ef50c23ac7879ba217800a76c360d727a7e1db065bc4b0edd77b5fa93151d840e64c8b1564265819f8650c20e
diff --git a/update-release b/update-release
index 00996ca..70b3c87 100755
--- a/update-release
+++ b/update-release
@@ -1,24 +1,37 @@
#!/bin/bash
# Usage:
-# ./update-release sdk-version runtime-version [tarball-name]
+# ./update-release sdk-version runtime-version [--bug bug-id] [--tarball tarball-name]
set -euo pipefail
IFS=$'\n\t'
print_usage() {
echo " Usage:"
- echo " ./update-release sdk-version runtime-version [tarball-name]"
+ echo " ./update-release sdk-version runtime-version [--bug bug-id] [--tarball tarball-name]"
}
+user_provided_tarball_name=""
+
positional_args=()
+bug_ids=()
while [[ "$#" -gt 0 ]]; do
- arg="${1}"
+ arg="$1"
case "${arg}" in
+ --bug)
+ bug_ids+=("$2")
+ shift;
+ shift;
+ ;;
-h|--help)
print_usage
exit 0
;;
+ --tarball)
+ user_provided_tarball_name="$2"
+ shift;
+ shift;
+ ;;
*)
positional_args+=("$1")
shift
@@ -26,7 +39,8 @@ while [[ "$#" -gt 0 ]]; do
esac
done
-spec_file=dotnet5.0.spec
+spec_files=( ./*.spec )
+spec_file="${spec_files[0]}"
sdk_version=${positional_args[0]:-}
if [[ -z ${sdk_version} ]]; then
@@ -40,18 +54,22 @@ if [[ -z ${runtime_version} ]]; then
exit 1
fi
+host_version="$runtime_version"
+
tag=v${sdk_version}-SDK
-user_provided_tarball_name=${positional_args[2]:-}
-if [[ -n "${user_provided_tarball_name}" ]]; then
- # we know the format build-dotnet-tarball expects for the original tarball:
- # dotnet-${tag}-original.tar.gz
- ./rename-tarball "$user_provided_tarball_name" dotnet-${tag}-original.tar.gz
+if [[ -f "dotnet-${tag}-original.tar.gz" ]]; then
+ echo "dotnet-${tag}-original.tar.gz alredy exists, not rebuilding tarball"
+else
+ if [[ -n "${user_provided_tarball_name}" ]]; then
+ ./rename-tarball "$user_provided_tarball_name" "dotnet-${tag}-original.tar.gz"
+ elif [[ -f "dotnet-${sdk_version}-SDK.tar.gz" ]]; then
+ ./rename-tarball "dotnet-${sdk_version}-SDK.tar.gz" "dotnet-${tag}-original.tar.gz"
+ elif [[ -f "dotnet-${runtime_version}.tar.gz" ]]; then
+ ./rename-tarball "dotnet-${runtime_version}.tar.gz" "dotnet-${tag}-original.tar.gz"
+ fi
fi
-
-host_version="$runtime_version"
-
if [[ ! -f "dotnet-${tag}.tar.gz" ]]; then
./build-dotnet-tarball "${tag}"
fi
@@ -63,11 +81,15 @@ sed -i -E "s|^%global runtime_version [[:digit:]]\.[[:digit:]]\.[[:digit:]]+|%gl
sed -i -E "s|^%global sdk_version [[:digit:]]\.[[:digit:]]\.[[:digit:]][[:digit:]][[:digit:]]|%global sdk_version ${sdk_version}|" "$spec_file"
comment="Update to .NET SDK ${sdk_version} and Runtime ${runtime_version}"
+for bug_id in "${bug_ids[@]}"; do
+ comment="$comment
+- Resolves: RHBZ#$bug_id"
+done
-rpmdev-bumpspec --comment="$comment" $spec_file
+rpmdev-bumpspec --comment="$comment" "$spec_file"
# Reset release to 1 in 'Release' tag
-sed -i -E 's|^Release: [[:digit:]]+%|Release: 1%|' $spec_file
+sed -i -E 's|^Release: [[:digit:]]+%|Release: 1%|' "$spec_file"
# Reset Release in changelog comment
# See https://stackoverflow.com/questions/18620153/find-matching-text-and-repla...
-sed -i -E '/^%changelog$/!b;n;s/-[[:digit:]]+$/-1/' $spec_file
+sed -i -E '/^%changelog$/!b;n;s/-[[:digit:]]+$/-1/' "$spec_file"
commit 6677e18b0936d55a4b505228b869e823aae1c60f
Author: Omair Majid <omajid(a)redhat.com>
Date: Tue Apr 6 11:39:49 2021 -0400
Mark files under /etc/ as config(noreplace)
- Add an rpm-inspect configuration file
- Add an rpmlintrc file
- Enable gating for release branches and ELN too
diff --git a/dotnet5.0.rpmlintrc b/dotnet5.0.rpmlintrc
new file mode 100644
index 0000000..1396c43
--- /dev/null
+++ b/dotnet5.0.rpmlintrc
@@ -0,0 +1,35 @@
+# Tarball is generated, no upstream URL
+addFilter("W:.*invalid-url Source0: dotnet-.*tar.gz")
+
+# macOS is the correct name
+addFilter("W: spelling-error %description -l en_US macOS ->.*")
+# The name of the nuget package includes NETCore
+addFilter("W: spelling-error .* NETCore -> Net Core.*")
+
+# Upstream really has no README or documentation files. They suggest using online resources.
+addFilter("W: no-documentation")
+
+# This is a script that we run; it's expected to have execute permissions
+addFilter("W: strange-permission check-debug-symbols.py")
+
+# libicu is a required dependency, but it's used via a dlopen()
+addFilter("E: explicit-lib-dependency libicu")
+
+# There's no devel package for us to place .h files
+addFilter("W: devel-file-in-non-devel-package /usr/lib64/dotnet/.*\.h")
+addFilter("W: devel-file-in-non-devel-package /usr/lib64/dotnet/.*\.a")
+
+# These paths are non-standard, so we need $ORIGIN to find these libraries
+addFilter("E: binary-or-shlib-defines-rpath /usr/lib64/dotnet/.*\['\$ORIGIN/netcoredeps'\]")
+addFilter("E: binary-or-shlib-defines-rpath /usr/lib64/dotnet/.*\['\$ORIGIN'\]")
+
+# We put dll files in /usr/lib/dotnet, but rpmlint somehow doesn't see it as a binary?
+addFilter("W: only-non-binary-in-usr-lib")
+
+# We use a number of zero-length files, including _._
+addFilter("E: zero-length /usr/lib64/dotnet/.*/_\._")
+
+# Upstream uses hidden files, even though we ask them not to, as much as possible
+addFilter("W: hidden-file-or-dir /usr/lib64/dotnet/.*/\.version")
+addFilter("W: hidden-file-or-dir /usr/lib64/dotnet/.*/\.toolsetversion")
+
diff --git a/dotnet5.0.spec b/dotnet5.0.spec
index 044a298..d960cba 100644
--- a/dotnet5.0.spec
+++ b/dotnet5.0.spec
@@ -56,7 +56,7 @@
Name: dotnet5.0
Version: %{sdk_rpm_version}
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: .NET Runtime and SDK
License: MIT and ASL 2.0 and BSD and LGPLv2+ and CC-BY and CC0 and MS-PL and EPL-1.0 and GPL+ and GPLv2 and ISC and OFL and zlib
URL: https://github.com/dotnet/
@@ -475,7 +475,7 @@ install -dm 0755 %{buildroot}%{_sysconfdir}/dotnet
install install_location %{buildroot}%{_sysconfdir}/dotnet/
install -dm 0755 %{buildroot}%{_libdir}/dotnet/source-built-artifacts
-install artifacts/%{runtime_arch}/Release/Private.SourceBuilt.Artifacts.*.tar.gz %{buildroot}/%{_libdir}/dotnet/source-built-artifacts/
+install -m 0644 artifacts/%{runtime_arch}/Release/Private.SourceBuilt.Artifacts.*.tar.gz %{buildroot}/%{_libdir}/dotnet/source-built-artifacts/
# Check debug symbols in all elf objects. This is not in %%check
# because native binaries are stripped by rpm-build after %%install.
@@ -500,8 +500,8 @@ echo "Testing build results for debug symbols..."
%license %{_libdir}/dotnet/LICENSE.txt
%license %{_libdir}/dotnet/ThirdPartyNotices.txt
%doc %{_mandir}/man1/dotnet*.1.gz
-%{_sysconfdir}/profile.d/dotnet.sh
-%{_sysconfdir}/dotnet
+%config(noreplace) %{_sysconfdir}/profile.d/dotnet.sh
+%config(noreplace) %{_sysconfdir}/dotnet
%dir %{_datadir}/bash-completion
%dir %{_datadir}/bash-completion/completions
%{_datadir}/bash-completion/completions/dotnet
@@ -535,6 +535,12 @@ echo "Testing build results for debug symbols..."
%changelog
+* Tue Apr 06 2021 Omair Majid <omajid(a)redhat.com> - 5.0.104-2
+- Mark files under /etc/ as config(noreplace)
+- Add an rpm-inspect configuration file
+- Add an rpmlintrc file
+- Enable gating for release branches and ELN too
+
* Tue Mar 16 2021 Omair Majid <omajid(a)redhat.com> - 5.0.104-1
- Update to .NET SDK 5.0.104 and Runtime 5.0.4
- Drop unneeded/upstreamed patches
commit 2eade32a3739a78fda898b0a23c5596d96c5e74d
Author: Omair Majid <omajid(a)redhat.com>
Date: Thu Apr 1 10:46:18 2021 -0400
Enable gating for stable branches and RHEL
diff --git a/gating.yaml b/gating.yaml
index 0d881de..8574546 100644
--- a/gating.yaml
+++ b/gating.yaml
@@ -5,3 +5,16 @@ decision_context: bodhi_update_push_testing
subject_type: koji_build
rules:
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}
+--- !Policy
+product_versions:
+ - fedora-*
+decision_context: bodhi_update_push_stable
+subject_type: koji_build
+rules:
+ - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}
+--- !Policy
+product_versions:
+ - rhel-*
+decision_context: osci_compose_gate
+rules:
+ - !PassingTestCaseRule {test_case_name: osci.brew-build.tier0.functional}
commit 7536c39a6b4cf414f9143b4b7cd54d388c18fa95
Author: Omair Majid <omajid(a)redhat.com>
Date: Mon Mar 22 11:56:59 2021 -0400
Add an rpminspect file for get rpminspect to pass
This requires a recent version of rpminspect, see
https://github.com/rpminspect/rpminspect/issues/335
diff --git a/rpminspect.yaml b/rpminspect.yaml
new file mode 100644
index 0000000..edc369a
--- /dev/null
+++ b/rpminspect.yaml
@@ -0,0 +1,12 @@
+---
+inspections:
+ # We ship an empty dotnet package that installs the latest SDK, but
+ # also a newer SDK when we have that
+ emptyrpm: off
+ # We patch upstream a lot, no need to reject patches
+ patches: off
+runpath:
+ # Upstream explicitly sets $ORIGIN/netcoredeps as an RPATH
+ # See https://github.com/dotnet/core/blob/main/Documentation/self-contained-lin...
+ allowed_origin_paths:
+ - /netcoredeps
commit 46ee7cc319d6aef5ba16e49ab1718a69fde95791
Author: Omair Majid <omajid(a)redhat.com>
Date: Wed Mar 17 09:27:35 2021 -0400
Add missing sources
diff --git a/.gitignore b/.gitignore
index 679a3d1..016368a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,3 +5,4 @@
/dotnet-v5.0.102-SDK-x64-bootstrap.tar.gz
/dotnet-v5.0.102-SDK.tar.gz
/dotnet-v5.0.103-SDK.tar.gz
+/dotnet-v5.0.104-SDK.tar.gz
diff --git a/sources b/sources
index 77bcd05..ebd7eb5 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (dotnet-v5.0.103-SDK.tar.gz) = 60705e65a757476dd8d45e0bd5f622cc90baa56b5337234fa8f040bd315639ae7456a30f11045159dafe2b0d16a87af3d7c0fde3d05cf3638ee9a5ce9d1b5141
+SHA512 (dotnet-v5.0.104-SDK.tar.gz) = 3318750fb2437d7849f1dd8a3047fcbddab75420439dc60b6f2e50b71ad0ef8d7bbece54c7162254049eac5ed5e0835966b47adaa0255063160622bc6bdb9d68
commit 68176abe60cd05a5e33604a056df678ebf33a9ff
Author: Omair Majid <omajid(a)redhat.com>
Date: Wed Mar 17 09:21:23 2021 -0400
Update to .NET SDK 5.0.104 and Runtime 5.0.4
Drop unneeded/upstreamed patches
diff --git a/SHAHashProvider.Browser.cs b/SHAHashProvider.Browser.cs
deleted file mode 100644
index 4515b8a..0000000
--- a/SHAHashProvider.Browser.cs
+++ /dev/null
@@ -1,1184 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-using System;
-using System.IO;
-using System.Diagnostics;
-using System.Numerics;
-using System.Security.Cryptography;
-
-namespace Internal.Cryptography
-{
- internal sealed class SHAHashProvider : HashProvider
- {
- private int hashSizeInBytes;
- private SHAManagedImplementationBase impl;
- private MemoryStream buffer;
-
- public SHAHashProvider(string hashAlgorithmId)
- {
- switch (hashAlgorithmId)
- {
- case HashAlgorithmNames.SHA1:
- impl = new SHA1ManagedImplementation();
- hashSizeInBytes = 20;
- break;
- case HashAlgorithmNames.SHA256:
- impl = new SHA256ManagedImplementation();
- hashSizeInBytes = 32;
- break;
- case HashAlgorithmNames.SHA384:
- impl = new SHA384ManagedImplementation();
- hashSizeInBytes = 48;
- break;
- case HashAlgorithmNames.SHA512:
- impl = new SHA512ManagedImplementation();
- hashSizeInBytes = 64;
- break;
- default:
- throw new CryptographicException(SR.Format(SR.Cryptography_UnknownHashAlgorithm, hashAlgorithmId));
- }
- }
-
- public override void AppendHashData(ReadOnlySpan<byte> data)
- {
- if (buffer == null)
- {
- buffer = new MemoryStream(1000);
- }
-
- buffer.Write(data);
- }
-
- public override int FinalizeHashAndReset(Span<byte> destination)
- {
- GetCurrentHash(destination);
- buffer = null;
-
- return hashSizeInBytes;
- }
-
- public override int GetCurrentHash(Span<byte> destination)
- {
- Debug.Assert(destination.Length >= hashSizeInBytes);
-
- impl.Initialize();
- if (buffer != null)
- {
- impl.HashCore(buffer.GetBuffer(), 0, (int)buffer.Length);
- }
- impl.HashFinal().CopyTo(destination);
-
- return hashSizeInBytes;
- }
-
- public override int HashSizeInBytes => hashSizeInBytes;
-
- public override void Dispose(bool disposing)
- {
- }
-
- private abstract class SHAManagedImplementationBase
- {
- public abstract void Initialize();
- public abstract void HashCore(byte[] partIn, int ibStart, int cbSize);
- public abstract byte[] HashFinal();
- }
-
- // Ported from src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/EventSource.cs.
- // n.b. It's ok to use a "non-secret purposes" hashing implementation here, as this is only
- // used in wasm scenarios, and as of the current release we don't make any security guarantees
- // about our crypto primitives in wasm environments.
- private class SHA1ManagedImplementation : SHAManagedImplementationBase
- {
- private Sha1ForNonSecretPurposes _state; // mutable struct - don't make readonly
-
- public override void Initialize()
- {
- _state = default;
- _state.Start();
- }
-
- public override void HashCore(byte[] partIn, int ibStart, int cbSize)
- {
- _state.Append(partIn.AsSpan(ibStart, cbSize));
- }
-
- public override byte[] HashFinal()
- {
- byte[] output = new byte[20];
- _state.Finish(output);
- return output;
- }
-
- /// <summary>
- /// Implements the SHA1 hashing algorithm. Note that this
- /// implementation is for hashing public information. Do not
- /// use this code to hash private data, as this implementation does
- /// not take any steps to avoid information disclosure.
- /// </summary>
- private struct Sha1ForNonSecretPurposes
- {
- private long length; // Total message length in bits
- private uint[] w; // Workspace
- private int pos; // Length of current chunk in bytes
-
- /// <summary>
- /// Call Start() to initialize the hash object.
- /// </summary>
- public void Start()
- {
- this.w ??= new uint[85];
-
- this.length = 0;
- this.pos = 0;
- this.w[80] = 0x67452301;
- this.w[81] = 0xEFCDAB89;
- this.w[82] = 0x98BADCFE;
- this.w[83] = 0x10325476;
- this.w[84] = 0xC3D2E1F0;
- }
-
- /// <summary>
- /// Adds an input byte to the hash.
- /// </summary>
- /// <param name="input">Data to include in the hash.</param>
- public void Append(byte input)
- {
- this.w[this.pos / 4] = (this.w[this.pos / 4] << 8) | input;
- if (64 == ++this.pos)
- {
- this.Drain();
- }
- }
-
- /// <summary>
- /// Adds input bytes to the hash.
- /// </summary>
- /// <param name="input">
- /// Data to include in the hash. Must not be null.
- /// </param>
- public void Append(ReadOnlySpan<byte> input)
- {
- foreach (byte b in input)
- {
- this.Append(b);
- }
- }
-
- /// <summary>
- /// Retrieves the hash value.
- /// Note that after calling this function, the hash object should
- /// be considered uninitialized. Subsequent calls to Append or
- /// Finish will produce useless results. Call Start() to
- /// reinitialize.
- /// </summary>
- /// <param name="output">
- /// Buffer to receive the hash value. Must not be null.
- /// Up to 20 bytes of hash will be written to the output buffer.
- /// If the buffer is smaller than 20 bytes, the remaining hash
- /// bytes will be lost. If the buffer is larger than 20 bytes, the
- /// rest of the buffer is left unmodified.
- /// </param>
- public void Finish(byte[] output)
- {
- long l = this.length + 8 * this.pos;
- this.Append(0x80);
- while (this.pos != 56)
- {
- this.Append(0x00);
- }
-
- unchecked
- {
- this.Append((byte)(l >> 56));
- this.Append((byte)(l >> 48));
- this.Append((byte)(l >> 40));
- this.Append((byte)(l >> 32));
- this.Append((byte)(l >> 24));
- this.Append((byte)(l >> 16));
- this.Append((byte)(l >> 8));
- this.Append((byte)l);
-
- int end = output.Length < 20 ? output.Length : 20;
- for (int i = 0; i != end; i++)
- {
- uint temp = this.w[80 + i / 4];
- output[i] = (byte)(temp >> 24);
- this.w[80 + i / 4] = temp << 8;
- }
- }
- }
-
- /// <summary>
- /// Called when this.pos reaches 64.
- /// </summary>
- private void Drain()
- {
- for (int i = 16; i != 80; i++)
- {
- this.w[i] = BitOperations.RotateLeft(this.w[i - 3] ^ this.w[i - 8] ^ this.w[i - 14] ^ this.w[i - 16], 1);
- }
-
- unchecked
- {
- uint a = this.w[80];
- uint b = this.w[81];
- uint c = this.w[82];
- uint d = this.w[83];
- uint e = this.w[84];
-
- for (int i = 0; i != 20; i++)
- {
- const uint k = 0x5A827999;
- uint f = (b & c) | ((~b) & d);
- uint temp = BitOperations.RotateLeft(a, 5) + f + e + k + this.w[i]; e = d; d = c; c = BitOperations.RotateLeft(b, 30); b = a; a = temp;
- }
-
- for (int i = 20; i != 40; i++)
- {
- uint f = b ^ c ^ d;
- const uint k = 0x6ED9EBA1;
- uint temp = BitOperations.RotateLeft(a, 5) + f + e + k + this.w[i]; e = d; d = c; c = BitOperations.RotateLeft(b, 30); b = a; a = temp;
- }
-
- for (int i = 40; i != 60; i++)
- {
- uint f = (b & c) | (b & d) | (c & d);
- const uint k = 0x8F1BBCDC;
- uint temp = BitOperations.RotateLeft(a, 5) + f + e + k + this.w[i]; e = d; d = c; c = BitOperations.RotateLeft(b, 30); b = a; a = temp;
- }
-
- for (int i = 60; i != 80; i++)
- {
- uint f = b ^ c ^ d;
- const uint k = 0xCA62C1D6;
- uint temp = BitOperations.RotateLeft(a, 5) + f + e + k + this.w[i]; e = d; d = c; c = BitOperations.RotateLeft(b, 30); b = a; a = temp;
- }
-
- this.w[80] += a;
- this.w[81] += b;
- this.w[82] += c;
- this.w[83] += d;
- this.w[84] += e;
- }
-
- this.length += 512; // 64 bytes == 512 bits
- this.pos = 0;
- }
- }
- }
-
- // ported from https://github.com/microsoft/referencesource/blob/a48449cb48a9a693903668a...
- private class SHA256ManagedImplementation : SHAManagedImplementationBase
- {
- private byte[] _buffer;
- private long _count; // Number of bytes in the hashed message
- private uint[] _stateSHA256;
- private uint[] _W;
-
- public SHA256ManagedImplementation()
- {
- _stateSHA256 = new uint[8];
- _buffer = new byte[64];
- _W = new uint[64];
-
- InitializeState();
- }
-
- public override void Initialize()
- {
- InitializeState();
-
- // Zeroize potentially sensitive information.
- Array.Clear(_buffer, 0, _buffer.Length);
- Array.Clear(_W, 0, _W.Length);
- }
-
- private void InitializeState()
- {
- _count = 0;
-
- _stateSHA256[0] = 0x6a09e667;
- _stateSHA256[1] = 0xbb67ae85;
- _stateSHA256[2] = 0x3c6ef372;
- _stateSHA256[3] = 0xa54ff53a;
- _stateSHA256[4] = 0x510e527f;
- _stateSHA256[5] = 0x9b05688c;
- _stateSHA256[6] = 0x1f83d9ab;
- _stateSHA256[7] = 0x5be0cd19;
- }
-
- /* SHA256 block update operation. Continues an SHA message-digest
- operation, processing another message block, and updating the
- context.
- */
- public override unsafe void HashCore(byte[] partIn, int ibStart, int cbSize)
- {
- int bufferLen;
- int partInLen = cbSize;
- int partInBase = ibStart;
-
- /* Compute length of buffer */
- bufferLen = (int)(_count & 0x3f);
-
- /* Update number of bytes */
- _count += partInLen;
-
- fixed (uint* stateSHA256 = _stateSHA256)
- {
- fixed (byte* buffer = _buffer)
- {
- fixed (uint* expandedBuffer = _W)
- {
- if ((bufferLen > 0) && (bufferLen + partInLen >= 64))
- {
- Buffer.BlockCopy(partIn, partInBase, _buffer, bufferLen, 64 - bufferLen);
- partInBase += (64 - bufferLen);
- partInLen -= (64 - bufferLen);
- SHATransform(expandedBuffer, stateSHA256, buffer);
- bufferLen = 0;
- }
-
- /* Copy input to temporary buffer and hash */
- while (partInLen >= 64)
- {
- Buffer.BlockCopy(partIn, partInBase, _buffer, 0, 64);
- partInBase += 64;
- partInLen -= 64;
- SHATransform(expandedBuffer, stateSHA256, buffer);
- }
-
- if (partInLen > 0)
- {
- Buffer.BlockCopy(partIn, partInBase, _buffer, bufferLen, partInLen);
- }
- }
- }
- }
- }
-
- /* SHA256 finalization. Ends an SHA256 message-digest operation, writing
- the message digest.
- */
- public override byte[] HashFinal()
- {
- byte[] pad;
- int padLen;
- long bitCount;
- byte[] hash = new byte[32]; // HashSizeValue = 256
-
- /* Compute padding: 80 00 00 ... 00 00 <bit count>
- */
-
- padLen = 64 - (int)(_count & 0x3f);
- if (padLen <= 8)
- padLen += 64;
-
- pad = new byte[padLen];
- pad[0] = 0x80;
-
- // Convert count to bit count
- bitCount = _count * 8;
-
- pad[padLen - 8] = (byte)((bitCount >> 56) & 0xff);
- pad[padLen - 7] = (byte)((bitCount >> 48) & 0xff);
- pad[padLen - 6] = (byte)((bitCount >> 40) & 0xff);
- pad[padLen - 5] = (byte)((bitCount >> 32) & 0xff);
- pad[padLen - 4] = (byte)((bitCount >> 24) & 0xff);
- pad[padLen - 3] = (byte)((bitCount >> 16) & 0xff);
- pad[padLen - 2] = (byte)((bitCount >> 8) & 0xff);
- pad[padLen - 1] = (byte)((bitCount >> 0) & 0xff);
-
- /* Digest padding */
- HashCore(pad, 0, pad.Length);
-
- /* Store digest */
- SHAUtils.DWORDToBigEndian(hash, _stateSHA256, 8);
-
- return hash;
- }
-
- private static readonly uint[] _K = {
- 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
- 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
- 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
- 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
- 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
- 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
- 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
- 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
- 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
- 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
- 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
- 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
- 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
- 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
- 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
- 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
- };
-
- private static unsafe void SHATransform(uint* expandedBuffer, uint* state, byte* block)
- {
- uint a, b, c, d, e, f, h, g;
- uint aa, bb, cc, dd, ee, ff, hh, gg;
- uint T1;
-
- a = state[0];
- b = state[1];
- c = state[2];
- d = state[3];
- e = state[4];
- f = state[5];
- g = state[6];
- h = state[7];
-
- // fill in the first 16 bytes of W.
- SHAUtils.DWORDFromBigEndian(expandedBuffer, 16, block);
- SHA256Expand(expandedBuffer);
-
- /* Apply the SHA256 compression function */
- // We are trying to be smart here and avoid as many copies as we can
- // The perf gain with this method over the straightforward modify and shift
- // forward is >= 20%, so it's worth the pain
- for (int j = 0; j < 64;)
- {
- T1 = h + Sigma_1(e) + Ch(e, f, g) + _K[j] + expandedBuffer[j];
- ee = d + T1;
- aa = T1 + Sigma_0(a) + Maj(a, b, c);
- j++;
-
- T1 = g + Sigma_1(ee) + Ch(ee, e, f) + _K[j] + expandedBuffer[j];
- ff = c + T1;
- bb = T1 + Sigma_0(aa) + Maj(aa, a, b);
- j++;
-
- T1 = f + Sigma_1(ff) + Ch(ff, ee, e) + _K[j] + expandedBuffer[j];
- gg = b + T1;
- cc = T1 + Sigma_0(bb) + Maj(bb, aa, a);
- j++;
-
- T1 = e + Sigma_1(gg) + Ch(gg, ff, ee) + _K[j] + expandedBuffer[j];
- hh = a + T1;
- dd = T1 + Sigma_0(cc) + Maj(cc, bb, aa);
- j++;
-
- T1 = ee + Sigma_1(hh) + Ch(hh, gg, ff) + _K[j] + expandedBuffer[j];
- h = aa + T1;
- d = T1 + Sigma_0(dd) + Maj(dd, cc, bb);
- j++;
-
- T1 = ff + Sigma_1(h) + Ch(h, hh, gg) + _K[j] + expandedBuffer[j];
- g = bb + T1;
- c = T1 + Sigma_0(d) + Maj(d, dd, cc);
- j++;
-
- T1 = gg + Sigma_1(g) + Ch(g, h, hh) + _K[j] + expandedBuffer[j];
- f = cc + T1;
- b = T1 + Sigma_0(c) + Maj(c, d, dd);
- j++;
-
- T1 = hh + Sigma_1(f) + Ch(f, g, h) + _K[j] + expandedBuffer[j];
- e = dd + T1;
- a = T1 + Sigma_0(b) + Maj(b, c, d);
- j++;
- }
-
- state[0] += a;
- state[1] += b;
- state[2] += c;
- state[3] += d;
- state[4] += e;
- state[5] += f;
- state[6] += g;
- state[7] += h;
- }
-
- private static uint RotateRight(uint x, int n)
- {
- return (((x) >> (n)) | ((x) << (32 - (n))));
- }
-
- private static uint Ch(uint x, uint y, uint z)
- {
- return ((x & y) ^ ((x ^ 0xffffffff) & z));
- }
-
- private static uint Maj(uint x, uint y, uint z)
- {
- return ((x & y) ^ (x & z) ^ (y & z));
- }
-
- private static uint sigma_0(uint x)
- {
- return (RotateRight(x, 7) ^ RotateRight(x, 18) ^ (x >> 3));
- }
-
- private static uint sigma_1(uint x)
- {
- return (RotateRight(x, 17) ^ RotateRight(x, 19) ^ (x >> 10));
- }
-
- private static uint Sigma_0(uint x)
- {
- return (RotateRight(x, 2) ^ RotateRight(x, 13) ^ RotateRight(x, 22));
- }
-
- private static uint Sigma_1(uint x)
- {
- return (RotateRight(x, 6) ^ RotateRight(x, 11) ^ RotateRight(x, 25));
- }
-
- /* This function creates W_16,...,W_63 according to the formula
- W_j <- sigma_1(W_{j-2}) + W_{j-7} + sigma_0(W_{j-15}) + W_{j-16};
- */
- private static unsafe void SHA256Expand(uint* x)
- {
- for (int i = 16; i < 64; i++)
- {
- x[i] = sigma_1(x[i - 2]) + x[i - 7] + sigma_0(x[i - 15]) + x[i - 16];
- }
- }
- }
-
- // ported from https://github.com/microsoft/referencesource/blob/a48449cb48a9a693903668a...
- private class SHA384ManagedImplementation : SHAManagedImplementationBase
- {
- private byte[] _buffer;
- private ulong _count; // Number of bytes in the hashed message
- private ulong[] _stateSHA384;
- private ulong[] _W;
-
- public SHA384ManagedImplementation()
- {
- _stateSHA384 = new ulong[8];
- _buffer = new byte[128];
- _W = new ulong[80];
-
- InitializeState();
- }
-
- public override void Initialize()
- {
- InitializeState();
-
- // Zeroize potentially sensitive information.
- Array.Clear(_buffer, 0, _buffer.Length);
- Array.Clear(_W, 0, _W.Length);
- }
-
- private void InitializeState()
- {
- _count = 0;
-
- _stateSHA384[0] = 0xcbbb9d5dc1059ed8;
- _stateSHA384[1] = 0x629a292a367cd507;
- _stateSHA384[2] = 0x9159015a3070dd17;
- _stateSHA384[3] = 0x152fecd8f70e5939;
- _stateSHA384[4] = 0x67332667ffc00b31;
- _stateSHA384[5] = 0x8eb44a8768581511;
- _stateSHA384[6] = 0xdb0c2e0d64f98fa7;
- _stateSHA384[7] = 0x47b5481dbefa4fa4;
- }
-
- /* SHA384 block update operation. Continues an SHA message-digest
- operation, processing another message block, and updating the
- context.
- */
- public override unsafe void HashCore(byte[] partIn, int ibStart, int cbSize)
- {
- int bufferLen;
- int partInLen = cbSize;
- int partInBase = ibStart;
-
- /* Compute length of buffer */
- bufferLen = (int)(_count & 0x7f);
-
- /* Update number of bytes */
- _count += (ulong)partInLen;
-
- fixed (ulong* stateSHA384 = _stateSHA384)
- {
- fixed (byte* buffer = _buffer)
- {
- fixed (ulong* expandedBuffer = _W)
- {
- if ((bufferLen > 0) && (bufferLen + partInLen >= 128))
- {
- Buffer.BlockCopy(partIn, partInBase, _buffer, bufferLen, 128 - bufferLen);
- partInBase += (128 - bufferLen);
- partInLen -= (128 - bufferLen);
- SHATransform(expandedBuffer, stateSHA384, buffer);
- bufferLen = 0;
- }
-
- /* Copy input to temporary buffer and hash */
- while (partInLen >= 128)
- {
- Buffer.BlockCopy(partIn, partInBase, _buffer, 0, 128);
- partInBase += 128;
- partInLen -= 128;
- SHATransform(expandedBuffer, stateSHA384, buffer);
- }
-
- if (partInLen > 0)
- {
- Buffer.BlockCopy(partIn, partInBase, _buffer, bufferLen, partInLen);
- }
- }
- }
- }
- }
-
- /* SHA384 finalization. Ends an SHA384 message-digest operation, writing
- the message digest.
- */
- public override byte[] HashFinal()
- {
- byte[] pad;
- int padLen;
- ulong bitCount;
- byte[] hash = new byte[48]; // HashSizeValue = 384
-
- /* Compute padding: 80 00 00 ... 00 00 <bit count>
- */
-
- padLen = 128 - (int)(_count & 0x7f);
- if (padLen <= 16)
- padLen += 128;
-
- pad = new byte[padLen];
- pad[0] = 0x80;
-
- // Convert count to bit count
- bitCount = _count * 8;
-
- // bitCount is at most 8 * 128 = 1024. Its representation as a 128-bit number has all bits set to zero
- // except eventually the 11 lower bits
-
- //pad[padLen-16] = (byte) ((bitCount >> 120) & 0xff);
- //pad[padLen-15] = (byte) ((bitCount >> 112) & 0xff);
- //pad[padLen-14] = (byte) ((bitCount >> 104) & 0xff);
- //pad[padLen-13] = (byte) ((bitCount >> 96) & 0xff);
- //pad[padLen-12] = (byte) ((bitCount >> 88) & 0xff);
- //pad[padLen-11] = (byte) ((bitCount >> 80) & 0xff);
- //pad[padLen-10] = (byte) ((bitCount >> 72) & 0xff);
- //pad[padLen-9] = (byte) ((bitCount >> 64) & 0xff);
- pad[padLen - 8] = (byte)((bitCount >> 56) & 0xff);
- pad[padLen - 7] = (byte)((bitCount >> 48) & 0xff);
- pad[padLen - 6] = (byte)((bitCount >> 40) & 0xff);
- pad[padLen - 5] = (byte)((bitCount >> 32) & 0xff);
- pad[padLen - 4] = (byte)((bitCount >> 24) & 0xff);
- pad[padLen - 3] = (byte)((bitCount >> 16) & 0xff);
- pad[padLen - 2] = (byte)((bitCount >> 8) & 0xff);
- pad[padLen - 1] = (byte)((bitCount >> 0) & 0xff);
-
- /* Digest padding */
- HashCore(pad, 0, pad.Length);
-
- /* Store digest */
- SHAUtils.QuadWordToBigEndian(hash, _stateSHA384, 6);
-
- return hash;
- }
-
- private static readonly ulong[] _K = {
- 0x428a2f98d728ae22, 0x7137449123ef65cd, 0xb5c0fbcfec4d3b2f, 0xe9b5dba58189dbbc,
- 0x3956c25bf348b538, 0x59f111f1b605d019, 0x923f82a4af194f9b, 0xab1c5ed5da6d8118,
- 0xd807aa98a3030242, 0x12835b0145706fbe, 0x243185be4ee4b28c, 0x550c7dc3d5ffb4e2,
- 0x72be5d74f27b896f, 0x80deb1fe3b1696b1, 0x9bdc06a725c71235, 0xc19bf174cf692694,
- 0xe49b69c19ef14ad2, 0xefbe4786384f25e3, 0x0fc19dc68b8cd5b5, 0x240ca1cc77ac9c65,
- 0x2de92c6f592b0275, 0x4a7484aa6ea6e483, 0x5cb0a9dcbd41fbd4, 0x76f988da831153b5,
- 0x983e5152ee66dfab, 0xa831c66d2db43210, 0xb00327c898fb213f, 0xbf597fc7beef0ee4,
- 0xc6e00bf33da88fc2, 0xd5a79147930aa725, 0x06ca6351e003826f, 0x142929670a0e6e70,
- 0x27b70a8546d22ffc, 0x2e1b21385c26c926, 0x4d2c6dfc5ac42aed, 0x53380d139d95b3df,
- 0x650a73548baf63de, 0x766a0abb3c77b2a8, 0x81c2c92e47edaee6, 0x92722c851482353b,
- 0xa2bfe8a14cf10364, 0xa81a664bbc423001, 0xc24b8b70d0f89791, 0xc76c51a30654be30,
- 0xd192e819d6ef5218, 0xd69906245565a910, 0xf40e35855771202a, 0x106aa07032bbd1b8,
- 0x19a4c116b8d2d0c8, 0x1e376c085141ab53, 0x2748774cdf8eeb99, 0x34b0bcb5e19b48a8,
- 0x391c0cb3c5c95a63, 0x4ed8aa4ae3418acb, 0x5b9cca4f7763e373, 0x682e6ff3d6b2b8a3,
- 0x748f82ee5defb2fc, 0x78a5636f43172f60, 0x84c87814a1f0ab72, 0x8cc702081a6439ec,
- 0x90befffa23631e28, 0xa4506cebde82bde9, 0xbef9a3f7b2c67915, 0xc67178f2e372532b,
- 0xca273eceea26619c, 0xd186b8c721c0c207, 0xeada7dd6cde0eb1e, 0xf57d4f7fee6ed178,
- 0x06f067aa72176fba, 0x0a637dc5a2c898a6, 0x113f9804bef90dae, 0x1b710b35131c471b,
- 0x28db77f523047d84, 0x32caab7b40c72493, 0x3c9ebe0a15c9bebc, 0x431d67c49c100d4c,
- 0x4cc5d4becb3e42b6, 0x597f299cfc657e2a, 0x5fcb6fab3ad6faec, 0x6c44198c4a475817,
- };
-
- private static unsafe void SHATransform(ulong* expandedBuffer, ulong* state, byte* block)
- {
- ulong a, b, c, d, e, f, g, h;
- ulong aa, bb, cc, dd, ee, ff, hh, gg;
- ulong T1;
-
- a = state[0];
- b = state[1];
- c = state[2];
- d = state[3];
- e = state[4];
- f = state[5];
- g = state[6];
- h = state[7];
-
- // fill in the first 16 blocks of W.
- SHAUtils.QuadWordFromBigEndian(expandedBuffer, 16, block);
- SHA384Expand(expandedBuffer);
-
- /* Apply the SHA384 compression function */
- // We are trying to be smart here and avoid as many copies as we can
- // The perf gain with this method over the straightforward modify and shift
- // forward is >= 20%, so it's worth the pain
- for (int j = 0; j < 80;)
- {
- T1 = h + Sigma_1(e) + Ch(e, f, g) + _K[j] + expandedBuffer[j];
- ee = d + T1;
- aa = T1 + Sigma_0(a) + Maj(a, b, c);
- j++;
-
- T1 = g + Sigma_1(ee) + Ch(ee, e, f) + _K[j] + expandedBuffer[j];
- ff = c + T1;
- bb = T1 + Sigma_0(aa) + Maj(aa, a, b);
- j++;
-
- T1 = f + Sigma_1(ff) + Ch(ff, ee, e) + _K[j] + expandedBuffer[j];
- gg = b + T1;
- cc = T1 + Sigma_0(bb) + Maj(bb, aa, a);
- j++;
-
- T1 = e + Sigma_1(gg) + Ch(gg, ff, ee) + _K[j] + expandedBuffer[j];
- hh = a + T1;
- dd = T1 + Sigma_0(cc) + Maj(cc, bb, aa);
- j++;
-
- T1 = ee + Sigma_1(hh) + Ch(hh, gg, ff) + _K[j] + expandedBuffer[j];
- h = aa + T1;
- d = T1 + Sigma_0(dd) + Maj(dd, cc, bb);
- j++;
-
- T1 = ff + Sigma_1(h) + Ch(h, hh, gg) + _K[j] + expandedBuffer[j];
- g = bb + T1;
- c = T1 + Sigma_0(d) + Maj(d, dd, cc);
- j++;
-
- T1 = gg + Sigma_1(g) + Ch(g, h, hh) + _K[j] + expandedBuffer[j];
- f = cc + T1;
- b = T1 + Sigma_0(c) + Maj(c, d, dd);
- j++;
-
- T1 = hh + Sigma_1(f) + Ch(f, g, h) + _K[j] + expandedBuffer[j];
- e = dd + T1;
- a = T1 + Sigma_0(b) + Maj(b, c, d);
- j++;
- }
-
- state[0] += a;
- state[1] += b;
- state[2] += c;
- state[3] += d;
- state[4] += e;
- state[5] += f;
- state[6] += g;
- state[7] += h;
- }
-
- private static ulong RotateRight(ulong x, int n)
- {
- return (((x) >> (n)) | ((x) << (64 - (n))));
- }
-
- private static ulong Ch(ulong x, ulong y, ulong z)
- {
- return ((x & y) ^ ((x ^ 0xffffffffffffffff) & z));
- }
-
- private static ulong Maj(ulong x, ulong y, ulong z)
- {
- return ((x & y) ^ (x & z) ^ (y & z));
- }
-
- private static ulong Sigma_0(ulong x)
- {
- return (RotateRight(x, 28) ^ RotateRight(x, 34) ^ RotateRight(x, 39));
- }
-
- private static ulong Sigma_1(ulong x)
- {
- return (RotateRight(x, 14) ^ RotateRight(x, 18) ^ RotateRight(x, 41));
- }
-
- private static ulong sigma_0(ulong x)
- {
- return (RotateRight(x, 1) ^ RotateRight(x, 8) ^ (x >> 7));
- }
-
- private static ulong sigma_1(ulong x)
- {
- return (RotateRight(x, 19) ^ RotateRight(x, 61) ^ (x >> 6));
- }
-
- /* This function creates W_16,...,W_79 according to the formula
- W_j <- sigma_1(W_{j-2}) + W_{j-7} + sigma_0(W_{j-15}) + W_{j-16};
- */
- private static unsafe void SHA384Expand(ulong* x)
- {
- for (int i = 16; i < 80; i++)
- {
- x[i] = sigma_1(x[i - 2]) + x[i - 7] + sigma_0(x[i - 15]) + x[i - 16];
- }
- }
- }
-
- // ported from https://github.com/microsoft/referencesource/blob/a48449cb48a9a693903668a...
- private class SHA512ManagedImplementation : SHAManagedImplementationBase
- {
- private byte[] _buffer;
- private ulong _count; // Number of bytes in the hashed message
- private ulong[] _stateSHA512;
- private ulong[] _W;
-
- public SHA512ManagedImplementation()
- {
- _stateSHA512 = new ulong[8];
- _buffer = new byte[128];
- _W = new ulong[80];
-
- InitializeState();
- }
-
- public override void Initialize()
- {
- InitializeState();
-
- // Zeroize potentially sensitive information.
- Array.Clear(_buffer, 0, _buffer.Length);
- Array.Clear(_W, 0, _W.Length);
- }
-
- private void InitializeState()
- {
- _count = 0;
-
- _stateSHA512[0] = 0x6a09e667f3bcc908;
- _stateSHA512[1] = 0xbb67ae8584caa73b;
- _stateSHA512[2] = 0x3c6ef372fe94f82b;
- _stateSHA512[3] = 0xa54ff53a5f1d36f1;
- _stateSHA512[4] = 0x510e527fade682d1;
- _stateSHA512[5] = 0x9b05688c2b3e6c1f;
- _stateSHA512[6] = 0x1f83d9abfb41bd6b;
- _stateSHA512[7] = 0x5be0cd19137e2179;
- }
-
- /* SHA512 block update operation. Continues an SHA message-digest
- operation, processing another message block, and updating the
- context.
- */
- public override unsafe void HashCore(byte[] partIn, int ibStart, int cbSize)
- {
- int bufferLen;
- int partInLen = cbSize;
- int partInBase = ibStart;
-
- /* Compute length of buffer */
- bufferLen = (int)(_count & 0x7f);
-
- /* Update number of bytes */
- _count += (ulong)partInLen;
-
- fixed (ulong* stateSHA512 = _stateSHA512)
- {
- fixed (byte* buffer = _buffer)
- {
- fixed (ulong* expandedBuffer = _W)
- {
- if ((bufferLen > 0) && (bufferLen + partInLen >= 128))
- {
- Buffer.BlockCopy(partIn, partInBase, _buffer, bufferLen, 128 - bufferLen);
- partInBase += (128 - bufferLen);
- partInLen -= (128 - bufferLen);
- SHATransform(expandedBuffer, stateSHA512, buffer);
- bufferLen = 0;
- }
-
- /* Copy input to temporary buffer and hash */
- while (partInLen >= 128)
- {
- Buffer.BlockCopy(partIn, partInBase, _buffer, 0, 128);
- partInBase += 128;
- partInLen -= 128;
- SHATransform(expandedBuffer, stateSHA512, buffer);
- }
-
- if (partInLen > 0)
- {
- Buffer.BlockCopy(partIn, partInBase, _buffer, bufferLen, partInLen);
- }
- }
- }
- }
- }
-
- /* SHA512 finalization. Ends an SHA512 message-digest operation, writing
- the message digest.
- */
- public override byte[] HashFinal()
- {
- byte[] pad;
- int padLen;
- ulong bitCount;
- byte[] hash = new byte[64]; // HashSizeValue = 512
-
- /* Compute padding: 80 00 00 ... 00 00 <bit count>
- */
-
- padLen = 128 - (int)(_count & 0x7f);
- if (padLen <= 16)
- padLen += 128;
-
- pad = new byte[padLen];
- pad[0] = 0x80;
-
- // Convert count to bit count
- bitCount = _count * 8;
-
- // If we ever have UInt128 for bitCount, then these need to be uncommented.
- // Note that C# only looks at the low 6 bits of the shift value for ulongs,
- // so >>0 and >>64 are equal!
-
- //pad[padLen-16] = (byte) ((bitCount >> 120) & 0xff);
- //pad[padLen-15] = (byte) ((bitCount >> 112) & 0xff);
- //pad[padLen-14] = (byte) ((bitCount >> 104) & 0xff);
- //pad[padLen-13] = (byte) ((bitCount >> 96) & 0xff);
- //pad[padLen-12] = (byte) ((bitCount >> 88) & 0xff);
- //pad[padLen-11] = (byte) ((bitCount >> 80) & 0xff);
- //pad[padLen-10] = (byte) ((bitCount >> 72) & 0xff);
- //pad[padLen-9] = (byte) ((bitCount >> 64) & 0xff);
- pad[padLen - 8] = (byte)((bitCount >> 56) & 0xff);
- pad[padLen - 7] = (byte)((bitCount >> 48) & 0xff);
- pad[padLen - 6] = (byte)((bitCount >> 40) & 0xff);
- pad[padLen - 5] = (byte)((bitCount >> 32) & 0xff);
- pad[padLen - 4] = (byte)((bitCount >> 24) & 0xff);
- pad[padLen - 3] = (byte)((bitCount >> 16) & 0xff);
- pad[padLen - 2] = (byte)((bitCount >> 8) & 0xff);
- pad[padLen - 1] = (byte)((bitCount >> 0) & 0xff);
-
- /* Digest padding */
- HashCore(pad, 0, pad.Length);
-
- /* Store digest */
- SHAUtils.QuadWordToBigEndian(hash, _stateSHA512, 8);
-
- return hash;
- }
-
- private static readonly ulong[] _K = {
- 0x428a2f98d728ae22, 0x7137449123ef65cd, 0xb5c0fbcfec4d3b2f, 0xe9b5dba58189dbbc,
- 0x3956c25bf348b538, 0x59f111f1b605d019, 0x923f82a4af194f9b, 0xab1c5ed5da6d8118,
- 0xd807aa98a3030242, 0x12835b0145706fbe, 0x243185be4ee4b28c, 0x550c7dc3d5ffb4e2,
- 0x72be5d74f27b896f, 0x80deb1fe3b1696b1, 0x9bdc06a725c71235, 0xc19bf174cf692694,
- 0xe49b69c19ef14ad2, 0xefbe4786384f25e3, 0x0fc19dc68b8cd5b5, 0x240ca1cc77ac9c65,
- 0x2de92c6f592b0275, 0x4a7484aa6ea6e483, 0x5cb0a9dcbd41fbd4, 0x76f988da831153b5,
- 0x983e5152ee66dfab, 0xa831c66d2db43210, 0xb00327c898fb213f, 0xbf597fc7beef0ee4,
- 0xc6e00bf33da88fc2, 0xd5a79147930aa725, 0x06ca6351e003826f, 0x142929670a0e6e70,
- 0x27b70a8546d22ffc, 0x2e1b21385c26c926, 0x4d2c6dfc5ac42aed, 0x53380d139d95b3df,
- 0x650a73548baf63de, 0x766a0abb3c77b2a8, 0x81c2c92e47edaee6, 0x92722c851482353b,
- 0xa2bfe8a14cf10364, 0xa81a664bbc423001, 0xc24b8b70d0f89791, 0xc76c51a30654be30,
- 0xd192e819d6ef5218, 0xd69906245565a910, 0xf40e35855771202a, 0x106aa07032bbd1b8,
- 0x19a4c116b8d2d0c8, 0x1e376c085141ab53, 0x2748774cdf8eeb99, 0x34b0bcb5e19b48a8,
- 0x391c0cb3c5c95a63, 0x4ed8aa4ae3418acb, 0x5b9cca4f7763e373, 0x682e6ff3d6b2b8a3,
- 0x748f82ee5defb2fc, 0x78a5636f43172f60, 0x84c87814a1f0ab72, 0x8cc702081a6439ec,
- 0x90befffa23631e28, 0xa4506cebde82bde9, 0xbef9a3f7b2c67915, 0xc67178f2e372532b,
- 0xca273eceea26619c, 0xd186b8c721c0c207, 0xeada7dd6cde0eb1e, 0xf57d4f7fee6ed178,
- 0x06f067aa72176fba, 0x0a637dc5a2c898a6, 0x113f9804bef90dae, 0x1b710b35131c471b,
- 0x28db77f523047d84, 0x32caab7b40c72493, 0x3c9ebe0a15c9bebc, 0x431d67c49c100d4c,
- 0x4cc5d4becb3e42b6, 0x597f299cfc657e2a, 0x5fcb6fab3ad6faec, 0x6c44198c4a475817,
- };
-
- private static unsafe void SHATransform(ulong* expandedBuffer, ulong* state, byte* block)
- {
- ulong a, b, c, d, e, f, g, h;
- ulong aa, bb, cc, dd, ee, ff, hh, gg;
- ulong T1;
-
- a = state[0];
- b = state[1];
- c = state[2];
- d = state[3];
- e = state[4];
- f = state[5];
- g = state[6];
- h = state[7];
-
- // fill in the first 16 blocks of W.
- SHAUtils.QuadWordFromBigEndian(expandedBuffer, 16, block);
- SHA512Expand(expandedBuffer);
-
- /* Apply the SHA512 compression function */
- // We are trying to be smart here and avoid as many copies as we can
- // The perf gain with this method over the straightforward modify and shift
- // forward is >= 20%, so it's worth the pain
- for (int j = 0; j < 80;)
- {
- T1 = h + Sigma_1(e) + Ch(e, f, g) + _K[j] + expandedBuffer[j];
- ee = d + T1;
- aa = T1 + Sigma_0(a) + Maj(a, b, c);
- j++;
-
- T1 = g + Sigma_1(ee) + Ch(ee, e, f) + _K[j] + expandedBuffer[j];
- ff = c + T1;
- bb = T1 + Sigma_0(aa) + Maj(aa, a, b);
- j++;
-
- T1 = f + Sigma_1(ff) + Ch(ff, ee, e) + _K[j] + expandedBuffer[j];
- gg = b + T1;
- cc = T1 + Sigma_0(bb) + Maj(bb, aa, a);
- j++;
-
- T1 = e + Sigma_1(gg) + Ch(gg, ff, ee) + _K[j] + expandedBuffer[j];
- hh = a + T1;
- dd = T1 + Sigma_0(cc) + Maj(cc, bb, aa);
- j++;
-
- T1 = ee + Sigma_1(hh) + Ch(hh, gg, ff) + _K[j] + expandedBuffer[j];
- h = aa + T1;
- d = T1 + Sigma_0(dd) + Maj(dd, cc, bb);
- j++;
-
- T1 = ff + Sigma_1(h) + Ch(h, hh, gg) + _K[j] + expandedBuffer[j];
- g = bb + T1;
- c = T1 + Sigma_0(d) + Maj(d, dd, cc);
- j++;
-
- T1 = gg + Sigma_1(g) + Ch(g, h, hh) + _K[j] + expandedBuffer[j];
- f = cc + T1;
- b = T1 + Sigma_0(c) + Maj(c, d, dd);
- j++;
-
- T1 = hh + Sigma_1(f) + Ch(f, g, h) + _K[j] + expandedBuffer[j];
- e = dd + T1;
- a = T1 + Sigma_0(b) + Maj(b, c, d);
- j++;
- }
-
- state[0] += a;
- state[1] += b;
- state[2] += c;
- state[3] += d;
- state[4] += e;
- state[5] += f;
- state[6] += g;
- state[7] += h;
- }
-
- private static ulong RotateRight(ulong x, int n)
- {
- return (((x) >> (n)) | ((x) << (64 - (n))));
- }
-
- private static ulong Ch(ulong x, ulong y, ulong z)
- {
- return ((x & y) ^ ((x ^ 0xffffffffffffffff) & z));
- }
-
- private static ulong Maj(ulong x, ulong y, ulong z)
- {
- return ((x & y) ^ (x & z) ^ (y & z));
- }
-
- private static ulong Sigma_0(ulong x)
- {
- return (RotateRight(x, 28) ^ RotateRight(x, 34) ^ RotateRight(x, 39));
- }
-
- private static ulong Sigma_1(ulong x)
- {
- return (RotateRight(x, 14) ^ RotateRight(x, 18) ^ RotateRight(x, 41));
- }
-
- private static ulong sigma_0(ulong x)
- {
- return (RotateRight(x, 1) ^ RotateRight(x, 8) ^ (x >> 7));
- }
-
- private static ulong sigma_1(ulong x)
- {
- return (RotateRight(x, 19) ^ RotateRight(x, 61) ^ (x >> 6));
- }
-
- /* This function creates W_16,...,W_79 according to the formula
- W_j <- sigma_1(W_{j-2}) + W_{j-7} + sigma_0(W_{j-15}) + W_{j-16};
- */
- private static unsafe void SHA512Expand(ulong* x)
- {
- for (int i = 16; i < 80; i++)
- {
- x[i] = sigma_1(x[i - 2]) + x[i - 7] + sigma_0(x[i - 15]) + x[i - 16];
- }
- }
- }
-
- // ported from https://github.com/microsoft/referencesource/blob/a48449cb48a9a693903668a...
- private class SHAUtils
- {
- // digits == number of DWORDs
- public static unsafe void DWORDFromBigEndian(uint* x, int digits, byte* block)
- {
- int i;
- int j;
-
- for (i = 0, j = 0; i < digits; i++, j += 4)
- x[i] = (uint)((block[j] << 24) | (block[j + 1] << 16) | (block[j + 2] << 8) | block[j + 3]);
- }
-
- // encodes x (DWORD) into block (unsigned char), most significant byte first.
- // digits == number of DWORDs
- public static void DWORDToBigEndian(byte[] block, uint[] x, int digits)
- {
- int i;
- int j;
-
- for (i = 0, j = 0; i < digits; i++, j += 4)
- {
- block[j] = (byte)((x[i] >> 24) & 0xff);
- block[j + 1] = (byte)((x[i] >> 16) & 0xff);
- block[j + 2] = (byte)((x[i] >> 8) & 0xff);
- block[j + 3] = (byte)(x[i] & 0xff);
- }
- }
-
- // digits == number of QWORDs
- public static unsafe void QuadWordFromBigEndian(ulong* x, int digits, byte* block)
- {
- int i;
- int j;
-
- for (i = 0, j = 0; i < digits; i++, j += 8)
- x[i] = (
- (((ulong)block[j]) << 56) | (((ulong)block[j + 1]) << 48) |
- (((ulong)block[j + 2]) << 40) | (((ulong)block[j + 3]) << 32) |
- (((ulong)block[j + 4]) << 24) | (((ulong)block[j + 5]) << 16) |
- (((ulong)block[j + 6]) << 8) | ((ulong)block[j + 7])
- );
- }
-
- // encodes x (DWORD) into block (unsigned char), most significant byte first.
- // digits = number of QWORDS
- public static void QuadWordToBigEndian(byte[] block, ulong[] x, int digits)
- {
- int i;
- int j;
-
- for (i = 0, j = 0; i < digits; i++, j += 8)
- {
- block[j] = (byte)((x[i] >> 56) & 0xff);
- block[j + 1] = (byte)((x[i] >> 48) & 0xff);
- block[j + 2] = (byte)((x[i] >> 40) & 0xff);
- block[j + 3] = (byte)((x[i] >> 32) & 0xff);
- block[j + 4] = (byte)((x[i] >> 24) & 0xff);
- block[j + 5] = (byte)((x[i] >> 16) & 0xff);
- block[j + 6] = (byte)((x[i] >> 8) & 0xff);
- block[j + 7] = (byte)(x[i] & 0xff);
- }
- }
- }
- }
-}
diff --git a/build-dotnet-tarball b/build-dotnet-tarball
index 6135973..990b208 100755
--- a/build-dotnet-tarball
+++ b/build-dotnet-tarball
@@ -158,18 +158,6 @@ rm -r src/NuGet.Client.*/test/EndToEnd
rm -r src/runtime.*/src/mono/
rm -r src/Humanizer.*/samples/
-# FIXME delete when upstream has a new release with this file fixed
-if ! grep "RSA Data Security" src/runtime.*/src/libraries/System.Security.Cryptography.Algorithms/src/Internal/Cryptography/SHAHashProvider.Browser.cs; then
- echo "SHAHashProvider.Browser.cs has been fixed upstream. Please fix build-dotnet-tarball"
- exit 1
-fi
-# Delete the bad source
-rm src/runtime.*/src/libraries/System.Security.Cryptography.Algorithms/src/Internal/Cryptography/SHAHashProvider.Browser.cs
-# Delete the patch that modifies the bad source
-rm patches/runtime/0001-Use-substitute-SHA-1-implementation-in-wasm-44982.patch
-# Add pre-patched copy
-cp ../SHAHashProvider.Browser.cs src/runtime.*/src/libraries/System.Security.Cryptography.Algorithms/src/Internal/Cryptography/
-
popd
tar czf "${tarball_name}.tar.gz" "${tarball_name}"
diff --git a/dotnet5.0.spec b/dotnet5.0.spec
index 5cf9541..044a298 100644
--- a/dotnet5.0.spec
+++ b/dotnet5.0.spec
@@ -20,10 +20,10 @@
# until that's done, disable LTO. This has to happen before setting the flags below.
%define _lto_cflags %{nil}
-%global host_version 5.0.3
-%global runtime_version 5.0.3
+%global host_version 5.0.4
+%global runtime_version 5.0.4
%global aspnetcore_runtime_version %{runtime_version}
-%global sdk_version 5.0.103
+%global sdk_version 5.0.104
%global templates_version %{runtime_version}
#%%global templates_version %%(echo %%{runtime_version} | awk 'BEGIN { FS="."; OFS="." } {print $1, $2, $3+1 }')
@@ -56,7 +56,7 @@
Name: dotnet5.0
Version: %{sdk_rpm_version}
-Release: 2%{?dist}
+Release: 1%{?dist}
Summary: .NET Runtime and SDK
License: MIT and ASL 2.0 and BSD and LGPLv2+ and CC-BY and CC0 and MS-PL and EPL-1.0 and GPL+ and GPLv2 and ISC and OFL and zlib
URL: https://github.com/dotnet/
@@ -68,21 +68,9 @@ Source0: dotnet-v%{src_version}-SDK.tar.gz
Source10: check-debug-symbols.py
Source11: dotnet.sh.in
-# Fix up a patch included in source-build to apply after we apply the linker-order patch first
-Patch1: source-build-runtime-fixup-linker-order.patch
-
-# FIXME: upstream Fedora 35 RIDs; needed to unblock Fedora 35 for now
-Patch2: source-build-rids.patch
-
-# https://github.com/dotnet/runtime/pull/42094
-# Fix linker order when linking with --as-needed
-Patch100: runtime-linker-order.patch
-# https://github.com/dotnet/runtime/pull/47020
-# Fix build with gcc 11
-Patch101: runtime-47020-gcc11.patch
# https://github.com/dotnet/runtime/pull/48203
# Add Fedora 35 RID
-Patch102: runtime-48203-fedora-35-rid.patch
+Patch100: runtime-48203-fedora-35-rid.patch
# Disable telemetry by default; make it opt-in
Patch500: sdk-telemetry-optout.patch
@@ -355,13 +343,8 @@ sed -i 's|/usr/share/dotnet|%{_libdir}/dotnet|' src/runtime.*/src/installer/core
# Disable warnings
sed -i 's|skiptests|skiptests ignorewarnings|' repos/runtime.common.props
-%patch1 -p1
-%patch2 -p1
-
pushd src/runtime.*
%patch100 -p1
-%patch101 -p1
-%patch102 -p1
popd
pushd src/sdk.*
@@ -552,6 +535,10 @@ echo "Testing build results for debug symbols..."
%changelog
+* Tue Mar 16 2021 Omair Majid <omajid(a)redhat.com> - 5.0.104-1
+- Update to .NET SDK 5.0.104 and Runtime 5.0.4
+- Drop unneeded/upstreamed patches
+
* Wed Feb 17 2021 Omair Majid <omajid(a)redhat.com> - 5.0.103-2
- Add Fedora 35 RIDs
diff --git a/runtime-47020-gcc11.patch b/runtime-47020-gcc11.patch
deleted file mode 100644
index 3751fcf..0000000
--- a/runtime-47020-gcc11.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From 7123b8344ddc1c883483f13d34abbd22d4170452 Mon Sep 17 00:00:00 2001
-From: Omair Majid <omajid(a)redhat.com>
-Date: Tue, 5 Jan 2021 18:50:18 -0500
-Subject: [PATCH] Fix build errors using GCC 11 (#46334)
-
-Building runtime with GCC 11 leads to some new errors. The errors are
-consistent with the "Header dependency changes" section documented at
-https://gcc.gnu.org/gcc-11/porting_to.html
-
-The first set of errors looks like this:
-
- runtime/src/coreclr/pal/src/misc/cgroup.cpp:403:29:
- error: no member named 'numeric_limits' in namespace 'std'
- if (temp > std::numeric_limits<size_t>::max())
- ~~~~~^
-
-Fix that by including <limits>.
-
-The second set of errors looks like this:
-
- runtime/src/installer/corehost/cli/test/nativehost/host_context_test.cpp:634:31:
- error: no member named 'sleep_for' in namespace 'std::this_thread'
- std::this_thread::sleep_for(std::chrono::milliseconds(100));
- ~~~~~~~~~~~~~~~~~~^
-
-Fix that by including <thread>.
----
- src/coreclr/src/pal/src/misc/cgroup.cpp | 1 +
- src/installer/corehost/cli/test/nativehost/host_context_test.cpp | 1 +
- 2 files changed, 2 insertions(+)
-
-diff --git a/src/coreclr/src/pal/src/misc/cgroup.cpp b/src/coreclr/src/pal/src/misc/cgroup.cpp
-index f3e20012c539..24617359a21b 100644
---- a/src/coreclr/src/pal/src/misc/cgroup.cpp
-+++ b/src/coreclr/src/pal/src/misc/cgroup.cpp
-@@ -14,6 +14,7 @@ Module Name:
- #include "pal/dbgmsg.h"
- SET_DEFAULT_DEBUG_CHANNEL(MISC);
- #include "pal/palinternal.h"
-+#include <limits>
- #include <limits.h>
- #include <sys/resource.h>
- #include "pal/virtual.h"
-diff --git a/src/installer/corehost/cli/test/nativehost/host_context_test.cpp b/src/installer/corehost/cli/test/nativehost/host_context_test.cpp
-index cea98db6673a..371ec2d7e2aa 100644
---- a/src/installer/corehost/cli/test/nativehost/host_context_test.cpp
-+++ b/src/installer/corehost/cli/test/nativehost/host_context_test.cpp
-@@ -11,6 +11,7 @@
- #include <corehost_context_contract.h>
- #include "hostfxr_exports.h"
- #include "host_context_test.h"
-+#include <thread>
- #include <utils.h>
-
- namespace
diff --git a/runtime-linker-order.patch b/runtime-linker-order.patch
deleted file mode 100644
index 6ca413f..0000000
--- a/runtime-linker-order.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-diff --git a/src/installer/corehost/cli/apphost/static/CMakeLists.txt b/src/installer/corehost/cli/apphost/static/CMakeLists.txt
-index 85ea6ffe642..e6369f6b9ad 100644
---- a/src/installer/corehost/cli/apphost/static/CMakeLists.txt
-+++ b/src/installer/corehost/cli/apphost/static/CMakeLists.txt
-@@ -204,11 +204,12 @@ target_link_libraries(singlefilehost
- libhostcommon
- ${CORECLR_LIBRARIES}
-
-+ ${START_WHOLE_ARCHIVE}
-+ ${NATIVE_LIBS}
-+ ${END_WHOLE_ARCHIVE}
-+
- ${ZLIB_LIBRARIES}
- ${LIBGSS}
- ${NATIVE_LIBS_EXTRA}
-
-- ${START_WHOLE_ARCHIVE}
-- ${NATIVE_LIBS}
-- ${END_WHOLE_ARCHIVE}
- )
diff --git a/source-build-rids.patch b/source-build-rids.patch
deleted file mode 100644
index d81bcc2..0000000
--- a/source-build-rids.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/tools-local/tasks/Microsoft.DotNet.SourceBuild.Tasks.XPlat/PublishCoreSetupBinaries.cs b/tools-local/tasks/Microsoft.DotNet.SourceBuild.Tasks.XPlat/PublishCoreSetupBinaries.cs
-index 363fdeee..0a39a0d0 100644
---- a/tools-local/tasks/Microsoft.DotNet.SourceBuild.Tasks.XPlat/PublishCoreSetupBinaries.cs
-+++ b/tools-local/tasks/Microsoft.DotNet.SourceBuild.Tasks.XPlat/PublishCoreSetupBinaries.cs
-@@ -46,6 +46,8 @@ namespace Microsoft.DotNet.Build.Tasks
- ".fedora.32", "-fedora.32",
- ".fedora.33", "-fedora.33",
- ".fedora.34", "-fedora.34",
-+ ".fedora.35", "-fedora.35",
-+ ".fedora.36", "-fedora.36",
- "-linux", ".linux",
- "-osx", ".osx",
- "-OSX", ".OSX",
diff --git a/source-build-runtime-fixup-linker-order.patch b/source-build-runtime-fixup-linker-order.patch
deleted file mode 100644
index 5a74b5d..0000000
--- a/source-build-runtime-fixup-linker-order.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- a/patches/runtime/0014-Fix-singlefilehost-build-in-non-portable-mode-42415.patch
-+++ b/patches/runtime/0014-Fix-singlefilehost-build-in-non-portable-mode-42415.patch
-@@ -45,8 +45,8 @@
- # These options are used to force every object to be included even if it's unused.
- set(START_WHOLE_ARCHIVE -Wl,--whole-archive)
- @@ -212,3 +217,10 @@ target_link_libraries(singlefilehost
-- ${NATIVE_LIBS}
-- ${END_WHOLE_ARCHIVE}
-+ ${NATIVE_LIBS_EXTRA}
-+
- )
- +
- +if(NOT FEATURE_DISTRO_AGNOSTIC_SSL)
diff --git a/update-release b/update-release
index 8c6edfe..00996ca 100755
--- a/update-release
+++ b/update-release
@@ -1,14 +1,14 @@
#!/bin/bash
# Usage:
-# ./update-release sdk-version runtime-version
+# ./update-release sdk-version runtime-version [tarball-name]
set -euo pipefail
IFS=$'\n\t'
print_usage() {
echo " Usage:"
- echo " ./update-release sdk-version runtime-version"
+ echo " ./update-release sdk-version runtime-version [tarball-name]"
}
positional_args=()
@@ -40,10 +40,20 @@ if [[ -z ${runtime_version} ]]; then
exit 1
fi
+tag=v${sdk_version}-SDK
+
+user_provided_tarball_name=${positional_args[2]:-}
+if [[ -n "${user_provided_tarball_name}" ]]; then
+ # we know the format build-dotnet-tarball expects for the original tarball:
+ # dotnet-${tag}-original.tar.gz
+ ./rename-tarball "$user_provided_tarball_name" dotnet-${tag}-original.tar.gz
+fi
+
+
host_version="$runtime_version"
-if [[ ! -f "dotnet-v${sdk_version}-SDK.tar.gz" ]]; then
- ./build-dotnet-tarball "v${sdk_version}-SDK"
+if [[ ! -f "dotnet-${tag}.tar.gz" ]]; then
+ ./build-dotnet-tarball "${tag}"
fi
set -x
commit a36231563c01b8257a7a703e8505519b8773e895
Author: Omair Majid <omajid(a)redhat.com>
Date: Wed Feb 17 13:34:03 2021 -0500
Add Fedora 35 RIDs
diff --git a/dotnet5.0.spec b/dotnet5.0.spec
index 6b1dc9d..5cf9541 100644
--- a/dotnet5.0.spec
+++ b/dotnet5.0.spec
@@ -56,7 +56,7 @@
Name: dotnet5.0
Version: %{sdk_rpm_version}
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: .NET Runtime and SDK
License: MIT and ASL 2.0 and BSD and LGPLv2+ and CC-BY and CC0 and MS-PL and EPL-1.0 and GPL+ and GPLv2 and ISC and OFL and zlib
URL: https://github.com/dotnet/
@@ -71,12 +71,18 @@ Source11: dotnet.sh.in
# Fix up a patch included in source-build to apply after we apply the linker-order patch first
Patch1: source-build-runtime-fixup-linker-order.patch
+# FIXME: upstream Fedora 35 RIDs; needed to unblock Fedora 35 for now
+Patch2: source-build-rids.patch
+
# https://github.com/dotnet/runtime/pull/42094
# Fix linker order when linking with --as-needed
Patch100: runtime-linker-order.patch
# https://github.com/dotnet/runtime/pull/47020
# Fix build with gcc 11
Patch101: runtime-47020-gcc11.patch
+# https://github.com/dotnet/runtime/pull/48203
+# Add Fedora 35 RID
+Patch102: runtime-48203-fedora-35-rid.patch
# Disable telemetry by default; make it opt-in
Patch500: sdk-telemetry-optout.patch
@@ -350,10 +356,12 @@ sed -i 's|/usr/share/dotnet|%{_libdir}/dotnet|' src/runtime.*/src/installer/core
sed -i 's|skiptests|skiptests ignorewarnings|' repos/runtime.common.props
%patch1 -p1
+%patch2 -p1
pushd src/runtime.*
%patch100 -p1
%patch101 -p1
+%patch102 -p1
popd
pushd src/sdk.*
@@ -544,6 +552,9 @@ echo "Testing build results for debug symbols..."
%changelog
+* Wed Feb 17 2021 Omair Majid <omajid(a)redhat.com> - 5.0.103-2
+- Add Fedora 35 RIDs
+
* Thu Feb 11 2021 Omair Majid <omajid(a)redhat.com> - 5.0.103-1
- Update to .NET SDK 5.0.103 and Runtime 5.0.3
diff --git a/runtime-48203-fedora-35-rid.patch b/runtime-48203-fedora-35-rid.patch
new file mode 100644
index 0000000..cb8d6ea
--- /dev/null
+++ b/runtime-48203-fedora-35-rid.patch
@@ -0,0 +1,119 @@
+From e806448fdf844ca925c461b356b31363e844e902 Mon Sep 17 00:00:00 2001
+From: Omair Majid <omajid(a)redhat.com>
+Date: Thu, 11 Feb 2021 20:13:18 -0500
+Subject: [PATCH 1/2] Add Fedora 35 RID
+
+Fedora rawhide now uses the fedora.35-x64 RID:
+
+ $ podman run -it registry.fedoraproject.org/fedora:rawhide /bin/bash -c 'cat /etc/os-release'
+ NAME=Fedora
+ VERSION="35 (Container Image Prerelease)"
+ ID=fedora
+ VERSION_ID=35
+ VERSION_CODENAME=""
+ PLATFORM_ID="platform:f35"
+ PRETTY_NAME="Fedora 35 (Container Image Prerelease)"
+ ANSI_COLOR="0;38;2;60;110;180"
+ LOGO=fedora-logo-icon
+ CPE_NAME="cpe:/o:fedoraproject:fedora:35"
+ HOME_URL="https://fedoraproject.org/"
+ DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora/rawhide/system-administrators..."
+ SUPPORT_URL="https://fedoraproject.org/wiki/Communicating_and_getting_help"
+ BUG_REPORT_URL="https://bugzilla.redhat.com/"
+ REDHAT_BUGZILLA_PRODUCT="Fedora"
+ REDHAT_BUGZILLA_PRODUCT_VERSION=rawhide
+ REDHAT_SUPPORT_PRODUCT="Fedora"
+ REDHAT_SUPPORT_PRODUCT_VERSION=rawhide
+ PRIVACY_POLICY_URL="https://fedoraproject.org/wiki/Legal:PrivacyPolicy"
+ VARIANT="Container Image"
+ VARIANT_ID=container
+---
+ .../runtime.compatibility.json | 32 ++++++++++++++++++
+ .../Microsoft.NETCore.Platforms/runtime.json | 17 ++++++++++
+ .../runtimeGroups.props | 2 +-
+ 6 files changed, 69 insertions(+), 18 deletions(-)
+
+diff --git a/src/libraries/pkg/Microsoft.NETCore.Platforms/runtime.compatibility.json b/src/libraries/pkg/Microsoft.NETCore.Platforms/runtime.compatibility.json
+index 275929bf1fce..f56d7461e90c 100644
+--- a/src/libraries/pkg/Microsoft.NETCore.Platforms/runtime.compatibility.json
++++ b/src/libraries/pkg/Microsoft.NETCore.Platforms/runtime.compatibility.json
+@@ -2376,6 +2376,38 @@
+ "any",
+ "base"
+ ],
++ "fedora.35": [
++ "fedora.35",
++ "fedora",
++ "linux",
++ "unix",
++ "any",
++ "base"
++ ],
++ "fedora.35-arm64": [
++ "fedora.35-arm64",
++ "fedora.35",
++ "fedora-arm64",
++ "fedora",
++ "linux-arm64",
++ "linux",
++ "unix-arm64",
++ "unix",
++ "any",
++ "base"
++ ],
++ "fedora.35-x64": [
++ "fedora.35-x64",
++ "fedora.35",
++ "fedora-x64",
++ "fedora",
++ "linux-x64",
++ "linux",
++ "unix-x64",
++ "unix",
++ "any",
++ "base"
++ ],
+ "freebsd": [
+ "freebsd",
+ "unix",
+diff --git a/src/libraries/pkg/Microsoft.NETCore.Platforms/runtime.json b/src/libraries/pkg/Microsoft.NETCore.Platforms/runtime.json
+index 5a2631cccd9a..3e8b2e74e85f 100644
+--- a/src/libraries/pkg/Microsoft.NETCore.Platforms/runtime.json
++++ b/src/libraries/pkg/Microsoft.NETCore.Platforms/runtime.json
+@@ -962,6 +962,23 @@
+ "fedora-x64"
+ ]
+ },
++ "fedora.35": {
++ "#import": [
++ "fedora"
++ ]
++ },
++ "fedora.35-arm64": {
++ "#import": [
++ "fedora.35",
++ "fedora-arm64"
++ ]
++ },
++ "fedora.35-x64": {
++ "#import": [
++ "fedora.35",
++ "fedora-x64"
++ ]
++ },
+ "freebsd": {
+ "#import": [
+ "unix"
+diff --git a/src/libraries/pkg/Microsoft.NETCore.Platforms/runtimeGroups.props b/src/libraries/pkg/Microsoft.NETCore.Platforms/runtimeGroups.props
+index 5bd4306409de..e78268c077fd 100644
+--- a/src/libraries/pkg/Microsoft.NETCore.Platforms/runtimeGroups.props
++++ b/src/libraries/pkg/Microsoft.NETCore.Platforms/runtimeGroups.props
+@@ -60,7 +60,7 @@
+ <RuntimeGroup Include="fedora">
+ <Parent>linux</Parent>
+ <Architectures>x64;arm64</Architectures>
+- <Versions>23;24;25;26;27;28;29;30;31;32;33;34</Versions>
++ <Versions>23;24;25;26;27;28;29;30;31;32;33;34;35</Versions>
+ <TreatVersionsAsCompatible>false</TreatVersionsAsCompatible>
+ </RuntimeGroup>
+
diff --git a/source-build-rids.patch b/source-build-rids.patch
new file mode 100644
index 0000000..d81bcc2
--- /dev/null
+++ b/source-build-rids.patch
@@ -0,0 +1,13 @@
+diff --git a/tools-local/tasks/Microsoft.DotNet.SourceBuild.Tasks.XPlat/PublishCoreSetupBinaries.cs b/tools-local/tasks/Microsoft.DotNet.SourceBuild.Tasks.XPlat/PublishCoreSetupBinaries.cs
+index 363fdeee..0a39a0d0 100644
+--- a/tools-local/tasks/Microsoft.DotNet.SourceBuild.Tasks.XPlat/PublishCoreSetupBinaries.cs
++++ b/tools-local/tasks/Microsoft.DotNet.SourceBuild.Tasks.XPlat/PublishCoreSetupBinaries.cs
+@@ -46,6 +46,8 @@ namespace Microsoft.DotNet.Build.Tasks
+ ".fedora.32", "-fedora.32",
+ ".fedora.33", "-fedora.33",
+ ".fedora.34", "-fedora.34",
++ ".fedora.35", "-fedora.35",
++ ".fedora.36", "-fedora.36",
+ "-linux", ".linux",
+ "-osx", ".osx",
+ "-OSX", ".OSX",
commit 387708279ca7a98aefe9bee6b782f12d319d46d9
Author: Omair Majid <omajid(a)redhat.com>
Date: Thu Feb 11 17:25:22 2021 -0500
Update to .NET SDK 5.0.103 and Runtime 5.0.3
diff --git a/.gitignore b/.gitignore
index 69c1b65..679a3d1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,3 +4,4 @@
/dotnet-v5.0.102-SDK-arm64-bootstrap.tar.gz
/dotnet-v5.0.102-SDK-x64-bootstrap.tar.gz
/dotnet-v5.0.102-SDK.tar.gz
+/dotnet-v5.0.103-SDK.tar.gz
diff --git a/dotnet5.0.spec b/dotnet5.0.spec
index 1e0613d..6b1dc9d 100644
--- a/dotnet5.0.spec
+++ b/dotnet5.0.spec
@@ -20,10 +20,10 @@
# until that's done, disable LTO. This has to happen before setting the flags below.
%define _lto_cflags %{nil}
-%global host_version 5.0.2
-%global runtime_version 5.0.2
-%global aspnetcore_runtime_version 5.0.2
-%global sdk_version 5.0.102
+%global host_version 5.0.3
+%global runtime_version 5.0.3
+%global aspnetcore_runtime_version %{runtime_version}
+%global sdk_version 5.0.103
%global templates_version %{runtime_version}
#%%global templates_version %%(echo %%{runtime_version} | awk 'BEGIN { FS="."; OFS="." } {print $1, $2, $3+1 }')
@@ -56,7 +56,7 @@
Name: dotnet5.0
Version: %{sdk_rpm_version}
-Release: 2%{?dist}
+Release: 1%{?dist}
Summary: .NET Runtime and SDK
License: MIT and ASL 2.0 and BSD and LGPLv2+ and CC-BY and CC0 and MS-PL and EPL-1.0 and GPL+ and GPLv2 and ISC and OFL and zlib
URL: https://github.com/dotnet/
@@ -544,6 +544,9 @@ echo "Testing build results for debug symbols..."
%changelog
+* Thu Feb 11 2021 Omair Majid <omajid(a)redhat.com> - 5.0.103-1
+- Update to .NET SDK 5.0.103 and Runtime 5.0.3
+
* Fri Jan 29 2021 Omair Majid <omajid(a)redhat.com> - 5.0.102-2
- Disable bootstrap
diff --git a/sources b/sources
index a52be32..77bcd05 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (dotnet-v5.0.102-SDK.tar.gz) = 86208c0cfa4dc574e77265bac794387d3315d7097ec4e035a99333386e6254478bb4a3e6b866f36391de8dd98cba9d4b0aee19e0b54ca097cd02309786d22188
+SHA512 (dotnet-v5.0.103-SDK.tar.gz) = 60705e65a757476dd8d45e0bd5f622cc90baa56b5337234fa8f040bd315639ae7456a30f11045159dafe2b0d16a87af3d7c0fde3d05cf3638ee9a5ce9d1b5141
diff --git a/update-release b/update-release
index da87262..8c6edfe 100755
--- a/update-release
+++ b/update-release
@@ -52,7 +52,7 @@ sed -i -E "s|^%global host_version [[:digit:]]\.[[:digit:]]\.[[:digit:]]+|%globa
sed -i -E "s|^%global runtime_version [[:digit:]]\.[[:digit:]]\.[[:digit:]]+|%global runtime_version ${runtime_version}|" "$spec_file"
sed -i -E "s|^%global sdk_version [[:digit:]]\.[[:digit:]]\.[[:digit:]][[:digit:]][[:digit:]]|%global sdk_version ${sdk_version}|" "$spec_file"
-comment="Update to .NET Core Runtime ${runtime_version} and SDK ${sdk_version}"
+comment="Update to .NET SDK ${sdk_version} and Runtime ${runtime_version}"
rpmdev-bumpspec --comment="$comment" $spec_file
commit 2e4240bf831b134d40326b808eee0b02eb7a4d11
Author: Omair Majid <omajid(a)redhat.com>
Date: Fri Jan 29 17:55:10 2021 -0500
Disable bootstrap
diff --git a/.gitignore b/.gitignore
index d032b4e..69c1b65 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,4 @@
/dotnet-v3.1.103.2-SDK.tar.gz
/dotnet-v5.0.102-SDK-arm64-bootstrap.tar.gz
/dotnet-v5.0.102-SDK-x64-bootstrap.tar.gz
+/dotnet-v5.0.102-SDK.tar.gz
diff --git a/dotnet5.0.spec b/dotnet5.0.spec
index 6d2e962..1e0613d 100644
--- a/dotnet5.0.spec
+++ b/dotnet5.0.spec
@@ -1,4 +1,4 @@
-%bcond_without bootstrap
+%bcond_with bootstrap
# Avoid provides/requires from private libraries
%global privlibs libhostfxr
@@ -56,15 +56,14 @@
Name: dotnet5.0
Version: %{sdk_rpm_version}
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: .NET Runtime and SDK
License: MIT and ASL 2.0 and BSD and LGPLv2+ and CC-BY and CC0 and MS-PL and EPL-1.0 and GPL+ and GPLv2 and ISC and OFL and zlib
URL: https://github.com/dotnet/
# The source is generated on a Fedora box via:
# ./build-dotnet-tarball v%%{src_version}-SDK
-Source0: dotnet-v%{src_version}-SDK-x64-bootstrap.tar.gz
-Source1: dotnet-v%{src_version}-SDK-arm64-bootstrap.tar.gz
+Source0: dotnet-v%{src_version}-SDK.tar.gz
Source10: check-debug-symbols.py
Source11: dotnet.sh.in
@@ -545,6 +544,9 @@ echo "Testing build results for debug symbols..."
%changelog
+* Fri Jan 29 2021 Omair Majid <omajid(a)redhat.com> - 5.0.102-2
+- Disable bootstrap
+
* Fri Dec 18 2020 Omair Majid <omajid(a)redhat.com> - 5.0.100-2
- Update to .NET Core Runtime 5.0.0 and SDK 5.0.100 commit 9c4e5de
diff --git a/sources b/sources
index 6d15575..a52be32 100644
--- a/sources
+++ b/sources
@@ -1,2 +1 @@
-SHA512 (dotnet-v5.0.102-SDK-arm64-bootstrap.tar.gz) = 00369e72c7bf2391510c15804c4ad384862e93b92b941508b5ae33203ac8865bf792a8c961d776ef6622e542a4a8e76fd5822a3ddb5bd1d178497f3800acbe4b
-SHA512 (dotnet-v5.0.102-SDK-x64-bootstrap.tar.gz) = cd01134cc33478bc3615c8c6ffc4d5ddd7a626908b3909d919dd081204f646be48101649db6be2197d98840004839e1fb7caa7a383cfb9b363506e7898f3a0c0
+SHA512 (dotnet-v5.0.102-SDK.tar.gz) = 86208c0cfa4dc574e77265bac794387d3315d7097ec4e035a99333386e6254478bb4a3e6b866f36391de8dd98cba9d4b0aee19e0b54ca097cd02309786d22188
commit d67974b77e2f927b6121d7591e9e51415ede43cc
Author: Omair Majid <omajid(a)redhat.com>
Date: Fri Jan 29 14:28:00 2021 -0500
Add sources
diff --git a/.gitignore b/.gitignore
index 6fa687b..d032b4e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,5 @@
/dotnet-v3.1.101-SDK.tar.gz
/dotnet-v3.1.102-SDK.tar.gz
/dotnet-v3.1.103.2-SDK.tar.gz
+/dotnet-v5.0.102-SDK-arm64-bootstrap.tar.gz
+/dotnet-v5.0.102-SDK-x64-bootstrap.tar.gz
diff --git a/sources b/sources
new file mode 100644
index 0000000..6d15575
--- /dev/null
+++ b/sources
@@ -0,0 +1,2 @@
+SHA512 (dotnet-v5.0.102-SDK-arm64-bootstrap.tar.gz) = 00369e72c7bf2391510c15804c4ad384862e93b92b941508b5ae33203ac8865bf792a8c961d776ef6622e542a4a8e76fd5822a3ddb5bd1d178497f3800acbe4b
+SHA512 (dotnet-v5.0.102-SDK-x64-bootstrap.tar.gz) = cd01134cc33478bc3615c8c6ffc4d5ddd7a626908b3909d919dd081204f646be48101649db6be2197d98840004839e1fb7caa7a383cfb9b363506e7898f3a0c0
commit 029284a8ad9a0186d7ab202b44afd4c5f1f77ba0
Merge: 7ec31ab a8e6394
Author: Omair Majid <omajid(a)redhat.com>
Date: Fri Jan 29 12:51:16 2021 -0500
Merge branch 'pagure-master'
Merge the contents from dotnet-sig repo in pagure.
diff --cc README.md
index 9a67806,3990ea2..df95803
--- a/README.md
+++ b/README.md
@@@ -1,3 -1,133 +1,133 @@@
-# Overview
+# dotnet5.0
- The dotnet5.0 package
+ This is the .NET 5.0 package for Fedora.
+
+ This package is maintained by the Fedora DotNet SIG (Special Interest
+ Group). You can find out more about the DotNet SIG at:
+
+ - https://fedoraproject.org/wiki/SIGs/DotNet
+ - https://fedoraproject.org/wiki/DotNet
+ - https://lists.fedoraproject.org/archives/list/dotnet-sig@lists.fedoraproj...
+
+ Please report any issues [using
+ bugzilla](https://bugzilla.redhat.com/enter_bug.cgi?product=Fedora&compon....
+
+ # Specification
+
+ This package follows [package naming and contents suggested by
+ upstream](https://docs.microsoft.com/en-us/dotnet/core/build/distribution...,
+ with one exception. It installs dotnet to `/usr/lib64/dotnet` (aka
+ `%{_libdir}`).
+
+ # Contributing
+
+ ## General Changes
+
+ 1. Fork the repo.
+
+ 2. Checkout the forked repository.
+
+ - `git clone ssh://$USER@pkgs.fedoraproject.org/forks/$USER/rpms/dotnet5.0.git`
+ - `cd dotnet5.0`
+
+ 3. Make your changes. Don't forget to add a changelog.
+
+ 4. Do local builds.
+
+ - `fedpkg local`
+
+ 5. Fix any errors that come up and rebuild until it works locally.
+
+ 6. Do builds in koji.
+
+ - `fedpkg scratch-build --srpm`
+
+ 8. Commit the changes to the git repo.
+
+ - `git add` any new patches
+ - `git remove` any now-unnecessary patches
+ - `git commit -a`
+ - `git push`
+
+ 9. Create a pull request with your changes.
+
+ 10. Once the tests in the pull-request pass, and reviewers are happy, do a real
+ build.
+
+ - `fedpkg build`
+
+ 11. For non-rawhide releases, file updates using bodhi to ship the just-built
+ package out to users.
+
+ - https://bodhi.fedoraproject.org/updates/new
+
+ OR
+
+ - `fedpkg update`
+
+ ## Updating to an new upstream release
+
+ 1. Fork the repo.
+
+ 2. Checkout the forked repository.
+
+ - `git clone ssh://$USER@pkgs.fedoraproject.org/forks/$USER/rpms/dotnet5.0.git`
+ - `cd dotnet5.0`
+
+ 3. Build the new upstream source tarball. Update the versions in the
+ spec file. Add a changelog. This is generally automated by the
+ following.
+
+ - `./update-release <sdk-version> <runtime-version>`
+
+ If this fails because of compiler errors, you might have to figure
+ out a fix, then add the patch in `build-dotnet-tarball` script
+ rather than the spec file.
+
+ 4. Do local builds.
+
+ - `fedpkg local`
+
+ 5. Fix any errors that come up and rebuild until it works locally. Any
+ patches that are needed at this point should be added to the spec file.
+
+ 6. Do builds in koji.
+
+ - `fedpkg scratch-build --srpm`
+
+ 7. Upload the source archive to the Fedora look-aside cache.
+
+ - `fedpkg new-sources path-to-generated-dotnet-source-tarball.tar.gz`
+
+ 8. Commit the changes to the git repo.
+
+ - `git add` any new patches
+ - `git remove` any now-unnecessary patches
+ - `git commit -a`
+ - `git push`
+
+ 9. Create a pull request with your changes.
+
+ 10. Once the tests in the pull-request pass, and reviewers are happy, do a real
+ build.
+
+ - `fedpkg build`
+
+ 11. For non-rawhide releases, file updates using bodhi to ship the just-built
+ package out to users.
+
+ - https://bodhi.fedoraproject.org/updates/new
+
+ OR
+
+ - `fedpkg update`
+
+ # Testing
+
+ This package uses CI tests as defined in `tests/test.yml`. Creating a
+ pull-request or running a build will fire off tests and flag any issues. We have
+ enabled gating (via `gating.yaml`) on the tests. That prevents a build
+ that fails any test from being released until the failures are waived.
+
+ The tests themselves are contained in this external repository:
+ https://github.com/redhat-developer/dotnet-regular-tests/
commit a8e63940d4d93dfeebe5397994a37a608f1b734b
Author: Omair Majid <omajid(a)redhat.com>
Date: Fri Jan 29 12:47:59 2021 -0500
Add a comment describing the patch
Requested in the package review.
diff --git a/dotnet5.0.spec b/dotnet5.0.spec
index 7bccb47..6d2e962 100644
--- a/dotnet5.0.spec
+++ b/dotnet5.0.spec
@@ -69,6 +69,7 @@ Source1: dotnet-v%{src_version}-SDK-arm64-bootstrap.tar.gz
Source10: check-debug-symbols.py
Source11: dotnet.sh.in
+# Fix up a patch included in source-build to apply after we apply the linker-order patch first
Patch1: source-build-runtime-fixup-linker-order.patch
# https://github.com/dotnet/runtime/pull/42094
commit 7ec31ab47baf71fc91f03e3306bd9c3f7685c91f
Author: Mohan Boddu <mohanboddu(a)fedoraproject.org>
Date: Fri Jan 29 16:59:14 2021 +0000
Added the README
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..9a67806
--- /dev/null
+++ b/README.md
@@ -0,0 +1,3 @@
+# dotnet5.0
+
+The dotnet5.0 package
commit b9e285d220d38729101bed96ed18f20be8d3d0ad
Author: Omair Majid <omajid(a)redhat.com>
Date: Thu Jan 21 18:53:18 2021 -0500
Fix non-bootstrap build on aarch64
diff --git a/dotnet5.0.spec b/dotnet5.0.spec
index bd6c36e..7bccb47 100644
--- a/dotnet5.0.spec
+++ b/dotnet5.0.spec
@@ -360,6 +360,13 @@ pushd src/sdk.*
%patch500 -p1
popd
+%if %{without bootstrap}
+%ifnarch x86_64
+mkdir -p artifacts/obj/%{runtime_arch}/Release
+cp artifacts/obj/x64/Release/PackageVersions.props artifacts/obj/%{runtime_arch}/Release/PackageVersions.props
+%endif
+%endif
+
cat source-build-info.txt
find -iname 'nuget.config' -exec echo {}: \; -exec cat {} \; -exec echo \;
commit b0a5c898c259c15d8c7969236ff34a77d5c05eaa
Author: Omair Majid <omajid(a)redhat.com>
Date: Thu Jan 21 10:05:23 2021 -0500
Change name of source-build-references-package
diff --git a/dotnet5.0.spec b/dotnet5.0.spec
index 5cd020d..bd6c36e 100644
--- a/dotnet5.0.spec
+++ b/dotnet5.0.spec
@@ -92,7 +92,7 @@ BuildRequires: clang
BuildRequires: cmake
BuildRequires: coreutils
%if %{without bootstrap}
-BuildRequires: dotnet-5.0-build-reference-packages
+BuildRequires: dotnet5.0-build-reference-packages
BuildRequires: dotnet-sdk-5.0
BuildRequires: dotnet-sdk-5.0-source-built-artifacts
%endif
commit 96fb4c4fa914c5f1f92dabc920ab1f1079333a7d
Author: Omair Majid <omajid(a)redhat.com>
Date: Wed Jan 20 17:24:05 2021 -0500
Update for 5.0.102 and bootstrapping
diff --git a/build-dotnet-tarball b/build-dotnet-tarball
index 6eba1bf..6135973 100755
--- a/build-dotnet-tarball
+++ b/build-dotnet-tarball
@@ -125,7 +125,7 @@ if [ ! -f "${unmodified_tarball_name}.tar.gz" ]; then
git submodule update --init --recursive
clean_dotnet_cache
# FIXME remove contineuonprebuilterror
- ./build.sh -p:SkipPrebuiltEnforcement=true -p:ContinueOnPrebuiltBaselineError=true -p:ArchiveDownloadedPackages=true -p:UseSystemLibraries=true
+ ./build.sh -p:SkipPrebuiltEnforcement=true -p:ContinueOnPrebuiltBaselineError=true -p:ArchiveDownloadedPackages=true -p:UseSystemLibraries=true -p:UseSystemLibunwind=false
./build-source-tarball.sh "${unmodified_tarball_name}" --skip-build -- -p:ContinueOnPrebuiltBaselineError=true -p:SkipPrebuiltEnforcement=true
if [[ ${build_bootstrap} == true ]]; then
diff --git a/dotnet5.0.spec b/dotnet5.0.spec
index 5523053..5cd020d 100644
--- a/dotnet5.0.spec
+++ b/dotnet5.0.spec
@@ -20,11 +20,11 @@
# until that's done, disable LTO. This has to happen before setting the flags below.
%define _lto_cflags %{nil}
-%global host_version 5.0.0
-%global runtime_version 5.0.0
-%global aspnetcore_runtime_version 5.0.0
-%global sdk_version 5.0.100
-%global templates_version 5.0.0
+%global host_version 5.0.2
+%global runtime_version 5.0.2
+%global aspnetcore_runtime_version 5.0.2
+%global sdk_version 5.0.102
+%global templates_version %{runtime_version}
#%%global templates_version %%(echo %%{runtime_version} | awk 'BEGIN { FS="."; OFS="." } {print $1, $2, $3+1 }')
%global host_rpm_version %{host_version}
@@ -63,15 +63,20 @@ URL: https://github.com/dotnet/
# The source is generated on a Fedora box via:
# ./build-dotnet-tarball v%%{src_version}-SDK
-Source0: dotnet-9c4e5de-x64-bootstrap.tar.gz
-Source1: check-debug-symbols.py
-Source2: dotnet.sh.in
+Source0: dotnet-v%{src_version}-SDK-x64-bootstrap.tar.gz
+Source1: dotnet-v%{src_version}-SDK-arm64-bootstrap.tar.gz
+
+Source10: check-debug-symbols.py
+Source11: dotnet.sh.in
Patch1: source-build-runtime-fixup-linker-order.patch
# https://github.com/dotnet/runtime/pull/42094
# Fix linker order when linking with --as-needed
Patch100: runtime-linker-order.patch
+# https://github.com/dotnet/runtime/pull/47020
+# Fix build with gcc 11
+Patch101: runtime-47020-gcc11.patch
# Disable telemetry by default; make it opt-in
Patch500: sdk-telemetry-optout.patch
@@ -310,7 +315,16 @@ These are not meant for general use.
%prep
-%setup -q -n dotnet-9c4e5de-x64-bootstrap
+%if %{without bootstrap}
+%setup -q -n dotnet-v%{src_version}-SDK
+%else
+%ifarch x86_64
+%setup -q -T -b 0 -n dotnet-v%{src_version}-SDK-%{runtime_arch}-bootstrap
+%endif
+%ifarch aarch64
+%setup -q -T -b 1 -n dotnet-v%{src_version}-SDK-%{runtime_arch}-bootstrap
+%endif
+%endif
%if %{without bootstrap}
# Remove all prebuilts
@@ -339,17 +353,13 @@ sed -i 's|skiptests|skiptests ignorewarnings|' repos/runtime.common.props
pushd src/runtime.*
%patch100 -p1
+%patch101 -p1
popd
pushd src/sdk.*
%patch500 -p1
popd
-%ifnarch x86_64
-mkdir -p artifacts/obj/%{runtime_arch}/Release
-cp artifacts/obj/x64/Release/PackageVersions.props artifacts/obj/%{runtime_arch}/Release/PackageVersions.props
-%endif
-
cat source-build-info.txt
find -iname 'nuget.config' -exec echo {}: \; -exec cat {} \; -exec echo \;
@@ -418,7 +428,7 @@ VERBOSE=1 ./build.sh \
%endif
-sed -e 's|[@]LIBDIR[@]|%{_libdir}|g' %{SOURCE2} > dotnet.sh
+sed -e 's|[@]LIBDIR[@]|%{_libdir}|g' %{SOURCE11} > dotnet.sh
%install
@@ -473,7 +483,7 @@ install artifacts/%{runtime_arch}/Release/Private.SourceBuilt.Artifacts.*.tar.gz
# because native binaries are stripped by rpm-build after %%install.
# So we need to do this check earlier.
echo "Testing build results for debug symbols..."
-%{SOURCE1} -v %{buildroot}%{_libdir}/dotnet/
+%{SOURCE10} -v %{buildroot}%{_libdir}/dotnet/
%check
diff --git a/runtime-47020-gcc11.patch b/runtime-47020-gcc11.patch
new file mode 100644
index 0000000..3751fcf
--- /dev/null
+++ b/runtime-47020-gcc11.patch
@@ -0,0 +1,55 @@
+From 7123b8344ddc1c883483f13d34abbd22d4170452 Mon Sep 17 00:00:00 2001
+From: Omair Majid <omajid(a)redhat.com>
+Date: Tue, 5 Jan 2021 18:50:18 -0500
+Subject: [PATCH] Fix build errors using GCC 11 (#46334)
+
+Building runtime with GCC 11 leads to some new errors. The errors are
+consistent with the "Header dependency changes" section documented at
+https://gcc.gnu.org/gcc-11/porting_to.html
+
+The first set of errors looks like this:
+
+ runtime/src/coreclr/pal/src/misc/cgroup.cpp:403:29:
+ error: no member named 'numeric_limits' in namespace 'std'
+ if (temp > std::numeric_limits<size_t>::max())
+ ~~~~~^
+
+Fix that by including <limits>.
+
+The second set of errors looks like this:
+
+ runtime/src/installer/corehost/cli/test/nativehost/host_context_test.cpp:634:31:
+ error: no member named 'sleep_for' in namespace 'std::this_thread'
+ std::this_thread::sleep_for(std::chrono::milliseconds(100));
+ ~~~~~~~~~~~~~~~~~~^
+
+Fix that by including <thread>.
+---
+ src/coreclr/src/pal/src/misc/cgroup.cpp | 1 +
+ src/installer/corehost/cli/test/nativehost/host_context_test.cpp | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/src/coreclr/src/pal/src/misc/cgroup.cpp b/src/coreclr/src/pal/src/misc/cgroup.cpp
+index f3e20012c539..24617359a21b 100644
+--- a/src/coreclr/src/pal/src/misc/cgroup.cpp
++++ b/src/coreclr/src/pal/src/misc/cgroup.cpp
+@@ -14,6 +14,7 @@ Module Name:
+ #include "pal/dbgmsg.h"
+ SET_DEFAULT_DEBUG_CHANNEL(MISC);
+ #include "pal/palinternal.h"
++#include <limits>
+ #include <limits.h>
+ #include <sys/resource.h>
+ #include "pal/virtual.h"
+diff --git a/src/installer/corehost/cli/test/nativehost/host_context_test.cpp b/src/installer/corehost/cli/test/nativehost/host_context_test.cpp
+index cea98db6673a..371ec2d7e2aa 100644
+--- a/src/installer/corehost/cli/test/nativehost/host_context_test.cpp
++++ b/src/installer/corehost/cli/test/nativehost/host_context_test.cpp
+@@ -11,6 +11,7 @@
+ #include <corehost_context_contract.h>
+ #include "hostfxr_exports.h"
+ #include "host_context_test.h"
++#include <thread>
+ #include <utils.h>
+
+ namespace
commit 12422fd0a6ac964bde1cb1a90a611a343a1c914f
Author: Omair Majid <omajid(a)redhat.com>
Date: Mon Jan 18 10:26:45 2021 -0500
Update for bootstrapping 5.0
diff --git a/build-bootstrap-tarball b/build-bootstrap-tarball
deleted file mode 100755
index d3f3547..0000000
--- a/build-bootstrap-tarball
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/bin/bash
-
-set -euo pipefail
-
-set -x
-
-sdk_version=3.1.105
-
-arch=$(uname -m)
-if [[ $arch == "x86_64" ]]; then
- arch=x64
-elif [[ $arch == "aarch64" ]]; then
- arch=arm64
-fi
-
-if rpm -qa | grep libunwind; then
- echo "error: libunwind is installed. Not a good idea for bootstrapping."
- exit 1
-fi
-if rpm -qa | grep dotnet ; then
- echo "error: dotnet is installed. Not a good idea for bootstrapping."
- exit 1
-fi
-if [ -d /usr/lib/dotnet ] || [ -d /usr/lib64/dotnet ] || [ -d /usr/share/dotnet ] ; then
- echo "error: one of /usr/lib/dotnet /usr/lib64/dotnet or /usr/share/dotnet/ exists. Not a good idea for bootstrapping."
- exit 1
-fi
-if command -v dotnet ; then
- echo "error: dotnet is in $PATH. Not a good idea for bootstrapping."
- exit 1
-fi
-
-if [ ! -d dotnet-source-build-tarball ]; then
- if [ ! -d source-build ]; then
- git clone https://github.com/dotnet/source-build
- fi
- pushd source-build
- sed -i -e 's|cmakeargs -DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=TRUE||' repos/coreclr.common.props
- git clean -xdf
- ./build-source-tarball.sh ../dotnet-source-build-tarball/ -- -p:DownloadSourceBuildReferencePackagesTimeoutSeconds=100000
- popd
-fi
-
-rm -rf dotnet-v${sdk_version}-SDK dotnet-v${sdk_version}-SDK.tar.gz
-
-cp -a dotnet-source-build-tarball dotnet-v${sdk_version}-SDK
-cp -a source-build/artifacts/$arch/Release/Private.SourceBuilt.Artifacts.*.tar.gz dotnet-v${sdk_version}-SDK/packages/archive/Private.SourceBuilt.Artifacts.*.tar.gz
-
-tar czf dotnet-v${sdk_version}-SDK-$arch.tar.gz dotnet-v${sdk_version}-SDK
-
diff --git a/build-dotnet-tarball b/build-dotnet-tarball
index c250937..6eba1bf 100755
--- a/build-dotnet-tarball
+++ b/build-dotnet-tarball
@@ -1,7 +1,7 @@
#!/bin/bash
# Usage:
-# build-dotnet-tarball <tag-from-source-build>
+# build-dotnet-tarball [--bootstrap] <tag-from-source-build>
#
# Creates a source archive from a tag (or commit) at github.com/dotnet/source-build
@@ -13,31 +13,40 @@
set -euo pipefail
IFS=$'\n\t'
-print_usage() {
+function print_usage {
echo "Usage:"
- echo "$0 <tag-from-source-build>"
+ echo "$0 [--bootstrap] <tag-from-source-build>"
echo
echo "Creates a source archive from a tag at https://github.com/dotnet/source-build"
+ echo ""
+ echo " --bootstrap build a source tarball usable for bootstrapping .NET"
}
-clean_dotnet_cache() {
+function clean_dotnet_cache {
rm -rf ~/.aspnet ~/.dotnet/ ~/.nuget/ ~/.local/share/NuGet ~/.templateengine
rm -rf /tmp/NuGet /tmp/NuGetScratch /tmp/.NETCore* /tmp/.NETStandard* /tmp/.dotnet /tmp/dotnet.* /tmp/clr-debug-pipe* /tmp/Razor-Server /tmp/CoreFxPipe* /tmp/VBCSCompiler /tmp/.NETFramework*
}
-function runtime_id {
-
- declare -A archmap
- archmap=(
- ["aarch64"]="arm64"
- ["amd64"]="x64"
- ["armv8l"]="arm"
- ["i686"]="x86"
- ["i386"]="x86"
- ["x86_64"]="x64"
- )
+function check_bootstrap_environment {
+ if rpm -qa | grep libunwind-devel; then
+ echo "error: libunwind-devel is installed. Not a good idea for bootstrapping."
+ exit 1
+ fi
+ if rpm -qa | grep dotnet ; then
+ echo "error: dotnet is installed. Not a good idea for bootstrapping."
+ exit 1
+ fi
+ if [ -d /usr/lib/dotnet ] || [ -d /usr/lib64/dotnet ] || [ -d /usr/share/dotnet ] ; then
+ echo "error: one of /usr/lib/dotnet /usr/lib64/dotnet or /usr/share/dotnet/ exists. Not a good idea for bootstrapping."
+ exit 1
+ fi
+ if command -v dotnet ; then
+ echo "error: dotnet is in $PATH. Not a good idea for bootstrapping."
+ exit 1
+ fi
+}
- arch=${archmap["$(uname -m)"]}
+function runtime_id {
source /etc/os-release
case "${ID}" in
@@ -50,10 +59,29 @@ function runtime_id {
echo "${ID}.${rid_version}-${arch}"
}
+build_bootstrap=false
+
+declare -A archmap
+archmap=(
+ ["aarch64"]="arm64"
+ ["amd64"]="x64"
+ ["armv8l"]="arm"
+ ["i686"]="x86"
+ ["i386"]="x86"
+ ["x86_64"]="x64"
+)
+
+arch=${archmap["$(uname -m)"]}
+
+
positional_args=()
while [[ "$#" -gt 0 ]]; do
arg="${1}"
case "${arg}" in
+ --bootstrap)
+ build_bootstrap=true
+ shift
+ ;;
-h|--help)
print_usage
exit 0
@@ -78,6 +106,11 @@ dir_name="dotnet-${tag}"
unmodified_tarball_name="${dir_name}-original"
tarball_name="${dir_name}"
+if [[ ${build_bootstrap} == true ]]; then
+ unmodified_tarball_name="${unmodified_tarball_name}-${arch}-bootstrap"
+ tarball_name="${tarball_name}-${arch}-bootstrap"
+fi
+
if [ -f "${tarball_name}.tar.gz" ]; then
echo "error: ${tarball_name}.tar.gz already exists"
exit 1
@@ -94,6 +127,10 @@ if [ ! -f "${unmodified_tarball_name}.tar.gz" ]; then
# FIXME remove contineuonprebuilterror
./build.sh -p:SkipPrebuiltEnforcement=true -p:ContinueOnPrebuiltBaselineError=true -p:ArchiveDownloadedPackages=true -p:UseSystemLibraries=true
./build-source-tarball.sh "${unmodified_tarball_name}" --skip-build -- -p:ContinueOnPrebuiltBaselineError=true -p:SkipPrebuiltEnforcement=true
+
+ if [[ ${build_bootstrap} == true ]]; then
+ cp -a artifacts/"${arch}"/Release/Private.SourceBuilt.Artifacts.*.tar.gz "${unmodified_tarball_name}"/packages/archive/Private.SourceBuilt.Artifacts.*.tar.gz
+ fi
popd
popd
@@ -107,12 +144,17 @@ tar xf "${unmodified_tarball_name}.tar.gz"
mv "${unmodified_tarball_name}" "${tarball_name}"
pushd "${tarball_name}"
+
+if [[ ${build_bootstrap} != true ]]; then
+ find . -type f -iname '*.tar.gz' -delete
+ rm -rf .dotnet
+fi
+
# Remove files with funny licenses, crypto implementations and other
# not-very-useful artifacts to reduce tarball size
rm -r src/aspnetcore.*/src/SignalR/clients/java/signalr/gradle*
find src/aspnetcore.*/src -type d -name samples -print0 | xargs -0 rm -r
rm -r src/NuGet.Client.*/test/EndToEnd
-find src/runtime.*/ -depth -name tests -print0 | xargs -0 rm -r
rm -r src/runtime.*/src/mono/
rm -r src/Humanizer.*/samples/
diff --git a/dotnet5.0.spec b/dotnet5.0.spec
index 9aad30e..5523053 100644
--- a/dotnet5.0.spec
+++ b/dotnet5.0.spec
@@ -63,7 +63,7 @@ URL: https://github.com/dotnet/
# The source is generated on a Fedora box via:
# ./build-dotnet-tarball v%%{src_version}-SDK
-Source0: dotnet-v%{src_version}-SDK-337413b.tar.gz
+Source0: dotnet-9c4e5de-x64-bootstrap.tar.gz
Source1: check-debug-symbols.py
Source2: dotnet.sh.in
@@ -87,7 +87,7 @@ BuildRequires: clang
BuildRequires: cmake
BuildRequires: coreutils
%if %{without bootstrap}
-BuildRequires: dotnet-build-reference-packages
+BuildRequires: dotnet-5.0-build-reference-packages
BuildRequires: dotnet-sdk-5.0
BuildRequires: dotnet-sdk-5.0-source-built-artifacts
%endif
@@ -310,7 +310,7 @@ These are not meant for general use.
%prep
-%setup -q -n dotnet-v%{src_version}-SDK-337413b
+%setup -q -n dotnet-9c4e5de-x64-bootstrap
%if %{without bootstrap}
# Remove all prebuilts
@@ -324,10 +324,9 @@ rm -rf packages/source-built
%endif
%if %{without bootstrap}
-sed -i -e 's|5.0.100-preview1-014459|5.0.103|' global.json
mkdir -p packages/archive
ln -s %{_libdir}/dotnet/source-built-artifacts/*.tar.gz packages/archive/
-ln -s %{_libdir}/dotnet/reference-packages/Private.SourceBuild.ReferencePackages*.tar.gz packages/archive
+ln -s %{_libdir}/dotnet/reference-packages/*.tar.gz packages/archive
%endif
# Fix bad hardcoded path in build
@@ -467,8 +466,8 @@ echo "%{_libdir}/dotnet" >> install_location
install -dm 0755 %{buildroot}%{_sysconfdir}/dotnet
install install_location %{buildroot}%{_sysconfdir}/dotnet/
-#install -dm 0755 %%{buildroot}%%{_libdir}/dotnet/source-built-artifacts
-#install artifacts/%%{runtime_arch}/Release/Private.SourceBuilt.Artifacts.*.tar.gz %%{buildroot}/%%{_libdir}/dotnet/source-built-artifacts/
+install -dm 0755 %{buildroot}%{_libdir}/dotnet/source-built-artifacts
+install artifacts/%{runtime_arch}/Release/Private.SourceBuilt.Artifacts.*.tar.gz %{buildroot}/%{_libdir}/dotnet/source-built-artifacts/
# Check debug symbols in all elf objects. This is not in %%check
# because native binaries are stripped by rpm-build after %%install.
@@ -522,13 +521,16 @@ echo "Testing build results for debug symbols..."
%{_libdir}/dotnet/sdk/%{sdk_version}
%dir %{_libdir}/dotnet/packs
-#%%files -n dotnet-sdk-5.0-source-built-artifacts
-#%%dir %%{_libdir}/dotnet
-#%%{_libdir}/dotnet/source-built-artifacts
+%files -n dotnet-sdk-5.0-source-built-artifacts
+%dir %{_libdir}/dotnet
+%{_libdir}/dotnet/source-built-artifacts
%changelog
-* Fri Dec 04 13:22:13 EST 2020 Omair Majid <omajid(a)redhat.com> - 5.0.100-1
+* Fri Dec 18 2020 Omair Majid <omajid(a)redhat.com> - 5.0.100-2
+- Update to .NET Core Runtime 5.0.0 and SDK 5.0.100 commit 9c4e5de
+
+* Fri Dec 04 2020 Omair Majid <omajid(a)redhat.com> - 5.0.100-1
- Update to .NET Core Runtime 5.0.0 and SDK 5.0.100
* Thu Dec 03 2020 Omair Majid <omajid(a)redhat.com> - 5.0.100-0.4.20201202git337413b
commit 120443366777f7d79f381716ae2b97a12340c874
Author: Omair Majid <omajid(a)redhat.com>
Date: Fri Dec 4 17:09:37 2020 -0500
Update to .NET Core Runtime 5.0.0 and SDK 5.0.100
diff --git a/README.md b/README.md
index 4d4fb58..3990ea2 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# Overview
-This is the .NET Core 5.0 package for Fedora.
+This is the .NET 5.0 package for Fedora.
This package is maintained by the Fedora DotNet SIG (Special Interest
Group). You can find out more about the DotNet SIG at:
diff --git a/SHAHashProvider.Browser.cs b/SHAHashProvider.Browser.cs
new file mode 100644
index 0000000..4515b8a
--- /dev/null
+++ b/SHAHashProvider.Browser.cs
@@ -0,0 +1,1184 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+
+using System;
+using System.IO;
+using System.Diagnostics;
+using System.Numerics;
+using System.Security.Cryptography;
+
+namespace Internal.Cryptography
+{
+ internal sealed class SHAHashProvider : HashProvider
+ {
+ private int hashSizeInBytes;
+ private SHAManagedImplementationBase impl;
+ private MemoryStream buffer;
+
+ public SHAHashProvider(string hashAlgorithmId)
+ {
+ switch (hashAlgorithmId)
+ {
+ case HashAlgorithmNames.SHA1:
+ impl = new SHA1ManagedImplementation();
+ hashSizeInBytes = 20;
+ break;
+ case HashAlgorithmNames.SHA256:
+ impl = new SHA256ManagedImplementation();
+ hashSizeInBytes = 32;
+ break;
+ case HashAlgorithmNames.SHA384:
+ impl = new SHA384ManagedImplementation();
+ hashSizeInBytes = 48;
+ break;
+ case HashAlgorithmNames.SHA512:
+ impl = new SHA512ManagedImplementation();
+ hashSizeInBytes = 64;
+ break;
+ default:
+ throw new CryptographicException(SR.Format(SR.Cryptography_UnknownHashAlgorithm, hashAlgorithmId));
+ }
+ }
+
+ public override void AppendHashData(ReadOnlySpan<byte> data)
+ {
+ if (buffer == null)
+ {
+ buffer = new MemoryStream(1000);
+ }
+
+ buffer.Write(data);
+ }
+
+ public override int FinalizeHashAndReset(Span<byte> destination)
+ {
+ GetCurrentHash(destination);
+ buffer = null;
+
+ return hashSizeInBytes;
+ }
+
+ public override int GetCurrentHash(Span<byte> destination)
+ {
+ Debug.Assert(destination.Length >= hashSizeInBytes);
+
+ impl.Initialize();
+ if (buffer != null)
+ {
+ impl.HashCore(buffer.GetBuffer(), 0, (int)buffer.Length);
+ }
+ impl.HashFinal().CopyTo(destination);
+
+ return hashSizeInBytes;
+ }
+
+ public override int HashSizeInBytes => hashSizeInBytes;
+
+ public override void Dispose(bool disposing)
+ {
+ }
+
+ private abstract class SHAManagedImplementationBase
+ {
+ public abstract void Initialize();
+ public abstract void HashCore(byte[] partIn, int ibStart, int cbSize);
+ public abstract byte[] HashFinal();
+ }
+
+ // Ported from src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/EventSource.cs.
+ // n.b. It's ok to use a "non-secret purposes" hashing implementation here, as this is only
+ // used in wasm scenarios, and as of the current release we don't make any security guarantees
+ // about our crypto primitives in wasm environments.
+ private class SHA1ManagedImplementation : SHAManagedImplementationBase
+ {
+ private Sha1ForNonSecretPurposes _state; // mutable struct - don't make readonly
+
+ public override void Initialize()
+ {
+ _state = default;
+ _state.Start();
+ }
+
+ public override void HashCore(byte[] partIn, int ibStart, int cbSize)
+ {
+ _state.Append(partIn.AsSpan(ibStart, cbSize));
+ }
+
+ public override byte[] HashFinal()
+ {
+ byte[] output = new byte[20];
+ _state.Finish(output);
+ return output;
+ }
+
+ /// <summary>
+ /// Implements the SHA1 hashing algorithm. Note that this
+ /// implementation is for hashing public information. Do not
+ /// use this code to hash private data, as this implementation does
+ /// not take any steps to avoid information disclosure.
+ /// </summary>
+ private struct Sha1ForNonSecretPurposes
+ {
+ private long length; // Total message length in bits
+ private uint[] w; // Workspace
+ private int pos; // Length of current chunk in bytes
+
+ /// <summary>
+ /// Call Start() to initialize the hash object.
+ /// </summary>
+ public void Start()
+ {
+ this.w ??= new uint[85];
+
+ this.length = 0;
+ this.pos = 0;
+ this.w[80] = 0x67452301;
+ this.w[81] = 0xEFCDAB89;
+ this.w[82] = 0x98BADCFE;
+ this.w[83] = 0x10325476;
+ this.w[84] = 0xC3D2E1F0;
+ }
+
+ /// <summary>
+ /// Adds an input byte to the hash.
+ /// </summary>
+ /// <param name="input">Data to include in the hash.</param>
+ public void Append(byte input)
+ {
+ this.w[this.pos / 4] = (this.w[this.pos / 4] << 8) | input;
+ if (64 == ++this.pos)
+ {
+ this.Drain();
+ }
+ }
+
+ /// <summary>
+ /// Adds input bytes to the hash.
+ /// </summary>
+ /// <param name="input">
+ /// Data to include in the hash. Must not be null.
+ /// </param>
+ public void Append(ReadOnlySpan<byte> input)
+ {
+ foreach (byte b in input)
+ {
+ this.Append(b);
+ }
+ }
+
+ /// <summary>
+ /// Retrieves the hash value.
+ /// Note that after calling this function, the hash object should
+ /// be considered uninitialized. Subsequent calls to Append or
+ /// Finish will produce useless results. Call Start() to
+ /// reinitialize.
+ /// </summary>
+ /// <param name="output">
+ /// Buffer to receive the hash value. Must not be null.
+ /// Up to 20 bytes of hash will be written to the output buffer.
+ /// If the buffer is smaller than 20 bytes, the remaining hash
+ /// bytes will be lost. If the buffer is larger than 20 bytes, the
+ /// rest of the buffer is left unmodified.
+ /// </param>
+ public void Finish(byte[] output)
+ {
+ long l = this.length + 8 * this.pos;
+ this.Append(0x80);
+ while (this.pos != 56)
+ {
+ this.Append(0x00);
+ }
+
+ unchecked
+ {
+ this.Append((byte)(l >> 56));
+ this.Append((byte)(l >> 48));
+ this.Append((byte)(l >> 40));
+ this.Append((byte)(l >> 32));
+ this.Append((byte)(l >> 24));
+ this.Append((byte)(l >> 16));
+ this.Append((byte)(l >> 8));
+ this.Append((byte)l);
+
+ int end = output.Length < 20 ? output.Length : 20;
+ for (int i = 0; i != end; i++)
+ {
+ uint temp = this.w[80 + i / 4];
+ output[i] = (byte)(temp >> 24);
+ this.w[80 + i / 4] = temp << 8;
+ }
+ }
+ }
+
+ /// <summary>
+ /// Called when this.pos reaches 64.
+ /// </summary>
+ private void Drain()
+ {
+ for (int i = 16; i != 80; i++)
+ {
+ this.w[i] = BitOperations.RotateLeft(this.w[i - 3] ^ this.w[i - 8] ^ this.w[i - 14] ^ this.w[i - 16], 1);
+ }
+
+ unchecked
+ {
+ uint a = this.w[80];
+ uint b = this.w[81];
+ uint c = this.w[82];
+ uint d = this.w[83];
+ uint e = this.w[84];
+
+ for (int i = 0; i != 20; i++)
+ {
+ const uint k = 0x5A827999;
+ uint f = (b & c) | ((~b) & d);
+ uint temp = BitOperations.RotateLeft(a, 5) + f + e + k + this.w[i]; e = d; d = c; c = BitOperations.RotateLeft(b, 30); b = a; a = temp;
+ }
+
+ for (int i = 20; i != 40; i++)
+ {
+ uint f = b ^ c ^ d;
+ const uint k = 0x6ED9EBA1;
+ uint temp = BitOperations.RotateLeft(a, 5) + f + e + k + this.w[i]; e = d; d = c; c = BitOperations.RotateLeft(b, 30); b = a; a = temp;
+ }
+
+ for (int i = 40; i != 60; i++)
+ {
+ uint f = (b & c) | (b & d) | (c & d);
+ const uint k = 0x8F1BBCDC;
+ uint temp = BitOperations.RotateLeft(a, 5) + f + e + k + this.w[i]; e = d; d = c; c = BitOperations.RotateLeft(b, 30); b = a; a = temp;
+ }
+
+ for (int i = 60; i != 80; i++)
+ {
+ uint f = b ^ c ^ d;
+ const uint k = 0xCA62C1D6;
+ uint temp = BitOperations.RotateLeft(a, 5) + f + e + k + this.w[i]; e = d; d = c; c = BitOperations.RotateLeft(b, 30); b = a; a = temp;
+ }
+
+ this.w[80] += a;
+ this.w[81] += b;
+ this.w[82] += c;
+ this.w[83] += d;
+ this.w[84] += e;
+ }
+
+ this.length += 512; // 64 bytes == 512 bits
+ this.pos = 0;
+ }
+ }
+ }
+
+ // ported from https://github.com/microsoft/referencesource/blob/a48449cb48a9a693903668a...
+ private class SHA256ManagedImplementation : SHAManagedImplementationBase
+ {
+ private byte[] _buffer;
+ private long _count; // Number of bytes in the hashed message
+ private uint[] _stateSHA256;
+ private uint[] _W;
+
+ public SHA256ManagedImplementation()
+ {
+ _stateSHA256 = new uint[8];
+ _buffer = new byte[64];
+ _W = new uint[64];
+
+ InitializeState();
+ }
+
+ public override void Initialize()
+ {
+ InitializeState();
+
+ // Zeroize potentially sensitive information.
+ Array.Clear(_buffer, 0, _buffer.Length);
+ Array.Clear(_W, 0, _W.Length);
+ }
+
+ private void InitializeState()
+ {
+ _count = 0;
+
+ _stateSHA256[0] = 0x6a09e667;
+ _stateSHA256[1] = 0xbb67ae85;
+ _stateSHA256[2] = 0x3c6ef372;
+ _stateSHA256[3] = 0xa54ff53a;
+ _stateSHA256[4] = 0x510e527f;
+ _stateSHA256[5] = 0x9b05688c;
+ _stateSHA256[6] = 0x1f83d9ab;
+ _stateSHA256[7] = 0x5be0cd19;
+ }
+
+ /* SHA256 block update operation. Continues an SHA message-digest
+ operation, processing another message block, and updating the
+ context.
+ */
+ public override unsafe void HashCore(byte[] partIn, int ibStart, int cbSize)
+ {
+ int bufferLen;
+ int partInLen = cbSize;
+ int partInBase = ibStart;
+
+ /* Compute length of buffer */
+ bufferLen = (int)(_count & 0x3f);
+
+ /* Update number of bytes */
+ _count += partInLen;
+
+ fixed (uint* stateSHA256 = _stateSHA256)
+ {
+ fixed (byte* buffer = _buffer)
+ {
+ fixed (uint* expandedBuffer = _W)
+ {
+ if ((bufferLen > 0) && (bufferLen + partInLen >= 64))
+ {
+ Buffer.BlockCopy(partIn, partInBase, _buffer, bufferLen, 64 - bufferLen);
+ partInBase += (64 - bufferLen);
+ partInLen -= (64 - bufferLen);
+ SHATransform(expandedBuffer, stateSHA256, buffer);
+ bufferLen = 0;
+ }
+
+ /* Copy input to temporary buffer and hash */
+ while (partInLen >= 64)
+ {
+ Buffer.BlockCopy(partIn, partInBase, _buffer, 0, 64);
+ partInBase += 64;
+ partInLen -= 64;
+ SHATransform(expandedBuffer, stateSHA256, buffer);
+ }
+
+ if (partInLen > 0)
+ {
+ Buffer.BlockCopy(partIn, partInBase, _buffer, bufferLen, partInLen);
+ }
+ }
+ }
+ }
+ }
+
+ /* SHA256 finalization. Ends an SHA256 message-digest operation, writing
+ the message digest.
+ */
+ public override byte[] HashFinal()
+ {
+ byte[] pad;
+ int padLen;
+ long bitCount;
+ byte[] hash = new byte[32]; // HashSizeValue = 256
+
+ /* Compute padding: 80 00 00 ... 00 00 <bit count>
+ */
+
+ padLen = 64 - (int)(_count & 0x3f);
+ if (padLen <= 8)
+ padLen += 64;
+
+ pad = new byte[padLen];
+ pad[0] = 0x80;
+
+ // Convert count to bit count
+ bitCount = _count * 8;
+
+ pad[padLen - 8] = (byte)((bitCount >> 56) & 0xff);
+ pad[padLen - 7] = (byte)((bitCount >> 48) & 0xff);
+ pad[padLen - 6] = (byte)((bitCount >> 40) & 0xff);
+ pad[padLen - 5] = (byte)((bitCount >> 32) & 0xff);
+ pad[padLen - 4] = (byte)((bitCount >> 24) & 0xff);
+ pad[padLen - 3] = (byte)((bitCount >> 16) & 0xff);
+ pad[padLen - 2] = (byte)((bitCount >> 8) & 0xff);
+ pad[padLen - 1] = (byte)((bitCount >> 0) & 0xff);
+
+ /* Digest padding */
+ HashCore(pad, 0, pad.Length);
+
+ /* Store digest */
+ SHAUtils.DWORDToBigEndian(hash, _stateSHA256, 8);
+
+ return hash;
+ }
+
+ private static readonly uint[] _K = {
+ 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
+ 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
+ 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
+ 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
+ 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
+ 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
+ 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
+ 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
+ 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
+ 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
+ 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
+ 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
+ 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
+ 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
+ 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
+ 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
+ };
+
+ private static unsafe void SHATransform(uint* expandedBuffer, uint* state, byte* block)
+ {
+ uint a, b, c, d, e, f, h, g;
+ uint aa, bb, cc, dd, ee, ff, hh, gg;
+ uint T1;
+
+ a = state[0];
+ b = state[1];
+ c = state[2];
+ d = state[3];
+ e = state[4];
+ f = state[5];
+ g = state[6];
+ h = state[7];
+
+ // fill in the first 16 bytes of W.
+ SHAUtils.DWORDFromBigEndian(expandedBuffer, 16, block);
+ SHA256Expand(expandedBuffer);
+
+ /* Apply the SHA256 compression function */
+ // We are trying to be smart here and avoid as many copies as we can
+ // The perf gain with this method over the straightforward modify and shift
+ // forward is >= 20%, so it's worth the pain
+ for (int j = 0; j < 64;)
+ {
+ T1 = h + Sigma_1(e) + Ch(e, f, g) + _K[j] + expandedBuffer[j];
+ ee = d + T1;
+ aa = T1 + Sigma_0(a) + Maj(a, b, c);
+ j++;
+
+ T1 = g + Sigma_1(ee) + Ch(ee, e, f) + _K[j] + expandedBuffer[j];
+ ff = c + T1;
+ bb = T1 + Sigma_0(aa) + Maj(aa, a, b);
+ j++;
+
+ T1 = f + Sigma_1(ff) + Ch(ff, ee, e) + _K[j] + expandedBuffer[j];
+ gg = b + T1;
+ cc = T1 + Sigma_0(bb) + Maj(bb, aa, a);
+ j++;
+
+ T1 = e + Sigma_1(gg) + Ch(gg, ff, ee) + _K[j] + expandedBuffer[j];
+ hh = a + T1;
+ dd = T1 + Sigma_0(cc) + Maj(cc, bb, aa);
+ j++;
+
+ T1 = ee + Sigma_1(hh) + Ch(hh, gg, ff) + _K[j] + expandedBuffer[j];
+ h = aa + T1;
+ d = T1 + Sigma_0(dd) + Maj(dd, cc, bb);
+ j++;
+
+ T1 = ff + Sigma_1(h) + Ch(h, hh, gg) + _K[j] + expandedBuffer[j];
+ g = bb + T1;
+ c = T1 + Sigma_0(d) + Maj(d, dd, cc);
+ j++;
+
+ T1 = gg + Sigma_1(g) + Ch(g, h, hh) + _K[j] + expandedBuffer[j];
+ f = cc + T1;
+ b = T1 + Sigma_0(c) + Maj(c, d, dd);
+ j++;
+
+ T1 = hh + Sigma_1(f) + Ch(f, g, h) + _K[j] + expandedBuffer[j];
+ e = dd + T1;
+ a = T1 + Sigma_0(b) + Maj(b, c, d);
+ j++;
+ }
+
+ state[0] += a;
+ state[1] += b;
+ state[2] += c;
+ state[3] += d;
+ state[4] += e;
+ state[5] += f;
+ state[6] += g;
+ state[7] += h;
+ }
+
+ private static uint RotateRight(uint x, int n)
+ {
+ return (((x) >> (n)) | ((x) << (32 - (n))));
+ }
+
+ private static uint Ch(uint x, uint y, uint z)
+ {
+ return ((x & y) ^ ((x ^ 0xffffffff) & z));
+ }
+
+ private static uint Maj(uint x, uint y, uint z)
+ {
+ return ((x & y) ^ (x & z) ^ (y & z));
+ }
+
+ private static uint sigma_0(uint x)
+ {
+ return (RotateRight(x, 7) ^ RotateRight(x, 18) ^ (x >> 3));
+ }
+
+ private static uint sigma_1(uint x)
+ {
+ return (RotateRight(x, 17) ^ RotateRight(x, 19) ^ (x >> 10));
+ }
+
+ private static uint Sigma_0(uint x)
+ {
+ return (RotateRight(x, 2) ^ RotateRight(x, 13) ^ RotateRight(x, 22));
+ }
+
+ private static uint Sigma_1(uint x)
+ {
+ return (RotateRight(x, 6) ^ RotateRight(x, 11) ^ RotateRight(x, 25));
+ }
+
+ /* This function creates W_16,...,W_63 according to the formula
+ W_j <- sigma_1(W_{j-2}) + W_{j-7} + sigma_0(W_{j-15}) + W_{j-16};
+ */
+ private static unsafe void SHA256Expand(uint* x)
+ {
+ for (int i = 16; i < 64; i++)
+ {
+ x[i] = sigma_1(x[i - 2]) + x[i - 7] + sigma_0(x[i - 15]) + x[i - 16];
+ }
+ }
+ }
+
+ // ported from https://github.com/microsoft/referencesource/blob/a48449cb48a9a693903668a...
+ private class SHA384ManagedImplementation : SHAManagedImplementationBase
+ {
+ private byte[] _buffer;
+ private ulong _count; // Number of bytes in the hashed message
+ private ulong[] _stateSHA384;
+ private ulong[] _W;
+
+ public SHA384ManagedImplementation()
+ {
+ _stateSHA384 = new ulong[8];
+ _buffer = new byte[128];
+ _W = new ulong[80];
+
+ InitializeState();
+ }
+
+ public override void Initialize()
+ {
+ InitializeState();
+
+ // Zeroize potentially sensitive information.
+ Array.Clear(_buffer, 0, _buffer.Length);
+ Array.Clear(_W, 0, _W.Length);
+ }
+
+ private void InitializeState()
+ {
+ _count = 0;
+
+ _stateSHA384[0] = 0xcbbb9d5dc1059ed8;
+ _stateSHA384[1] = 0x629a292a367cd507;
+ _stateSHA384[2] = 0x9159015a3070dd17;
+ _stateSHA384[3] = 0x152fecd8f70e5939;
+ _stateSHA384[4] = 0x67332667ffc00b31;
+ _stateSHA384[5] = 0x8eb44a8768581511;
+ _stateSHA384[6] = 0xdb0c2e0d64f98fa7;
+ _stateSHA384[7] = 0x47b5481dbefa4fa4;
+ }
+
+ /* SHA384 block update operation. Continues an SHA message-digest
+ operation, processing another message block, and updating the
+ context.
+ */
+ public override unsafe void HashCore(byte[] partIn, int ibStart, int cbSize)
+ {
+ int bufferLen;
+ int partInLen = cbSize;
+ int partInBase = ibStart;
+
+ /* Compute length of buffer */
+ bufferLen = (int)(_count & 0x7f);
+
+ /* Update number of bytes */
+ _count += (ulong)partInLen;
+
+ fixed (ulong* stateSHA384 = _stateSHA384)
+ {
+ fixed (byte* buffer = _buffer)
+ {
+ fixed (ulong* expandedBuffer = _W)
+ {
+ if ((bufferLen > 0) && (bufferLen + partInLen >= 128))
+ {
+ Buffer.BlockCopy(partIn, partInBase, _buffer, bufferLen, 128 - bufferLen);
+ partInBase += (128 - bufferLen);
+ partInLen -= (128 - bufferLen);
+ SHATransform(expandedBuffer, stateSHA384, buffer);
+ bufferLen = 0;
+ }
+
+ /* Copy input to temporary buffer and hash */
+ while (partInLen >= 128)
+ {
+ Buffer.BlockCopy(partIn, partInBase, _buffer, 0, 128);
+ partInBase += 128;
+ partInLen -= 128;
+ SHATransform(expandedBuffer, stateSHA384, buffer);
+ }
+
+ if (partInLen > 0)
+ {
+ Buffer.BlockCopy(partIn, partInBase, _buffer, bufferLen, partInLen);
+ }
+ }
+ }
+ }
+ }
+
+ /* SHA384 finalization. Ends an SHA384 message-digest operation, writing
+ the message digest.
+ */
+ public override byte[] HashFinal()
+ {
+ byte[] pad;
+ int padLen;
+ ulong bitCount;
+ byte[] hash = new byte[48]; // HashSizeValue = 384
+
+ /* Compute padding: 80 00 00 ... 00 00 <bit count>
+ */
+
+ padLen = 128 - (int)(_count & 0x7f);
+ if (padLen <= 16)
+ padLen += 128;
+
+ pad = new byte[padLen];
+ pad[0] = 0x80;
+
+ // Convert count to bit count
+ bitCount = _count * 8;
+
+ // bitCount is at most 8 * 128 = 1024. Its representation as a 128-bit number has all bits set to zero
+ // except eventually the 11 lower bits
+
+ //pad[padLen-16] = (byte) ((bitCount >> 120) & 0xff);
+ //pad[padLen-15] = (byte) ((bitCount >> 112) & 0xff);
+ //pad[padLen-14] = (byte) ((bitCount >> 104) & 0xff);
+ //pad[padLen-13] = (byte) ((bitCount >> 96) & 0xff);
+ //pad[padLen-12] = (byte) ((bitCount >> 88) & 0xff);
+ //pad[padLen-11] = (byte) ((bitCount >> 80) & 0xff);
+ //pad[padLen-10] = (byte) ((bitCount >> 72) & 0xff);
+ //pad[padLen-9] = (byte) ((bitCount >> 64) & 0xff);
+ pad[padLen - 8] = (byte)((bitCount >> 56) & 0xff);
+ pad[padLen - 7] = (byte)((bitCount >> 48) & 0xff);
+ pad[padLen - 6] = (byte)((bitCount >> 40) & 0xff);
+ pad[padLen - 5] = (byte)((bitCount >> 32) & 0xff);
+ pad[padLen - 4] = (byte)((bitCount >> 24) & 0xff);
+ pad[padLen - 3] = (byte)((bitCount >> 16) & 0xff);
+ pad[padLen - 2] = (byte)((bitCount >> 8) & 0xff);
+ pad[padLen - 1] = (byte)((bitCount >> 0) & 0xff);
+
+ /* Digest padding */
+ HashCore(pad, 0, pad.Length);
+
+ /* Store digest */
+ SHAUtils.QuadWordToBigEndian(hash, _stateSHA384, 6);
+
+ return hash;
+ }
+
+ private static readonly ulong[] _K = {
+ 0x428a2f98d728ae22, 0x7137449123ef65cd, 0xb5c0fbcfec4d3b2f, 0xe9b5dba58189dbbc,
+ 0x3956c25bf348b538, 0x59f111f1b605d019, 0x923f82a4af194f9b, 0xab1c5ed5da6d8118,
+ 0xd807aa98a3030242, 0x12835b0145706fbe, 0x243185be4ee4b28c, 0x550c7dc3d5ffb4e2,
+ 0x72be5d74f27b896f, 0x80deb1fe3b1696b1, 0x9bdc06a725c71235, 0xc19bf174cf692694,
+ 0xe49b69c19ef14ad2, 0xefbe4786384f25e3, 0x0fc19dc68b8cd5b5, 0x240ca1cc77ac9c65,
+ 0x2de92c6f592b0275, 0x4a7484aa6ea6e483, 0x5cb0a9dcbd41fbd4, 0x76f988da831153b5,
+ 0x983e5152ee66dfab, 0xa831c66d2db43210, 0xb00327c898fb213f, 0xbf597fc7beef0ee4,
+ 0xc6e00bf33da88fc2, 0xd5a79147930aa725, 0x06ca6351e003826f, 0x142929670a0e6e70,
+ 0x27b70a8546d22ffc, 0x2e1b21385c26c926, 0x4d2c6dfc5ac42aed, 0x53380d139d95b3df,
+ 0x650a73548baf63de, 0x766a0abb3c77b2a8, 0x81c2c92e47edaee6, 0x92722c851482353b,
+ 0xa2bfe8a14cf10364, 0xa81a664bbc423001, 0xc24b8b70d0f89791, 0xc76c51a30654be30,
+ 0xd192e819d6ef5218, 0xd69906245565a910, 0xf40e35855771202a, 0x106aa07032bbd1b8,
+ 0x19a4c116b8d2d0c8, 0x1e376c085141ab53, 0x2748774cdf8eeb99, 0x34b0bcb5e19b48a8,
+ 0x391c0cb3c5c95a63, 0x4ed8aa4ae3418acb, 0x5b9cca4f7763e373, 0x682e6ff3d6b2b8a3,
+ 0x748f82ee5defb2fc, 0x78a5636f43172f60, 0x84c87814a1f0ab72, 0x8cc702081a6439ec,
+ 0x90befffa23631e28, 0xa4506cebde82bde9, 0xbef9a3f7b2c67915, 0xc67178f2e372532b,
+ 0xca273eceea26619c, 0xd186b8c721c0c207, 0xeada7dd6cde0eb1e, 0xf57d4f7fee6ed178,
+ 0x06f067aa72176fba, 0x0a637dc5a2c898a6, 0x113f9804bef90dae, 0x1b710b35131c471b,
+ 0x28db77f523047d84, 0x32caab7b40c72493, 0x3c9ebe0a15c9bebc, 0x431d67c49c100d4c,
+ 0x4cc5d4becb3e42b6, 0x597f299cfc657e2a, 0x5fcb6fab3ad6faec, 0x6c44198c4a475817,
+ };
+
+ private static unsafe void SHATransform(ulong* expandedBuffer, ulong* state, byte* block)
+ {
+ ulong a, b, c, d, e, f, g, h;
+ ulong aa, bb, cc, dd, ee, ff, hh, gg;
+ ulong T1;
+
+ a = state[0];
+ b = state[1];
+ c = state[2];
+ d = state[3];
+ e = state[4];
+ f = state[5];
+ g = state[6];
+ h = state[7];
+
+ // fill in the first 16 blocks of W.
+ SHAUtils.QuadWordFromBigEndian(expandedBuffer, 16, block);
+ SHA384Expand(expandedBuffer);
+
+ /* Apply the SHA384 compression function */
+ // We are trying to be smart here and avoid as many copies as we can
+ // The perf gain with this method over the straightforward modify and shift
+ // forward is >= 20%, so it's worth the pain
+ for (int j = 0; j < 80;)
+ {
+ T1 = h + Sigma_1(e) + Ch(e, f, g) + _K[j] + expandedBuffer[j];
+ ee = d + T1;
+ aa = T1 + Sigma_0(a) + Maj(a, b, c);
+ j++;
+
+ T1 = g + Sigma_1(ee) + Ch(ee, e, f) + _K[j] + expandedBuffer[j];
+ ff = c + T1;
+ bb = T1 + Sigma_0(aa) + Maj(aa, a, b);
+ j++;
+
+ T1 = f + Sigma_1(ff) + Ch(ff, ee, e) + _K[j] + expandedBuffer[j];
+ gg = b + T1;
+ cc = T1 + Sigma_0(bb) + Maj(bb, aa, a);
+ j++;
+
+ T1 = e + Sigma_1(gg) + Ch(gg, ff, ee) + _K[j] + expandedBuffer[j];
+ hh = a + T1;
+ dd = T1 + Sigma_0(cc) + Maj(cc, bb, aa);
+ j++;
+
+ T1 = ee + Sigma_1(hh) + Ch(hh, gg, ff) + _K[j] + expandedBuffer[j];
+ h = aa + T1;
+ d = T1 + Sigma_0(dd) + Maj(dd, cc, bb);
+ j++;
+
+ T1 = ff + Sigma_1(h) + Ch(h, hh, gg) + _K[j] + expandedBuffer[j];
+ g = bb + T1;
+ c = T1 + Sigma_0(d) + Maj(d, dd, cc);
+ j++;
+
+ T1 = gg + Sigma_1(g) + Ch(g, h, hh) + _K[j] + expandedBuffer[j];
+ f = cc + T1;
+ b = T1 + Sigma_0(c) + Maj(c, d, dd);
+ j++;
+
+ T1 = hh + Sigma_1(f) + Ch(f, g, h) + _K[j] + expandedBuffer[j];
+ e = dd + T1;
+ a = T1 + Sigma_0(b) + Maj(b, c, d);
+ j++;
+ }
+
+ state[0] += a;
+ state[1] += b;
+ state[2] += c;
+ state[3] += d;
+ state[4] += e;
+ state[5] += f;
+ state[6] += g;
+ state[7] += h;
+ }
+
+ private static ulong RotateRight(ulong x, int n)
+ {
+ return (((x) >> (n)) | ((x) << (64 - (n))));
+ }
+
+ private static ulong Ch(ulong x, ulong y, ulong z)
+ {
+ return ((x & y) ^ ((x ^ 0xffffffffffffffff) & z));
+ }
+
+ private static ulong Maj(ulong x, ulong y, ulong z)
+ {
+ return ((x & y) ^ (x & z) ^ (y & z));
+ }
+
+ private static ulong Sigma_0(ulong x)
+ {
+ return (RotateRight(x, 28) ^ RotateRight(x, 34) ^ RotateRight(x, 39));
+ }
+
+ private static ulong Sigma_1(ulong x)
+ {
+ return (RotateRight(x, 14) ^ RotateRight(x, 18) ^ RotateRight(x, 41));
+ }
+
+ private static ulong sigma_0(ulong x)
+ {
+ return (RotateRight(x, 1) ^ RotateRight(x, 8) ^ (x >> 7));
+ }
+
+ private static ulong sigma_1(ulong x)
+ {
+ return (RotateRight(x, 19) ^ RotateRight(x, 61) ^ (x >> 6));
+ }
+
+ /* This function creates W_16,...,W_79 according to the formula
+ W_j <- sigma_1(W_{j-2}) + W_{j-7} + sigma_0(W_{j-15}) + W_{j-16};
+ */
+ private static unsafe void SHA384Expand(ulong* x)
+ {
+ for (int i = 16; i < 80; i++)
+ {
+ x[i] = sigma_1(x[i - 2]) + x[i - 7] + sigma_0(x[i - 15]) + x[i - 16];
+ }
+ }
+ }
+
+ // ported from https://github.com/microsoft/referencesource/blob/a48449cb48a9a693903668a...
+ private class SHA512ManagedImplementation : SHAManagedImplementationBase
+ {
+ private byte[] _buffer;
+ private ulong _count; // Number of bytes in the hashed message
+ private ulong[] _stateSHA512;
+ private ulong[] _W;
+
+ public SHA512ManagedImplementation()
+ {
+ _stateSHA512 = new ulong[8];
+ _buffer = new byte[128];
+ _W = new ulong[80];
+
+ InitializeState();
+ }
+
+ public override void Initialize()
+ {
+ InitializeState();
+
+ // Zeroize potentially sensitive information.
+ Array.Clear(_buffer, 0, _buffer.Length);
+ Array.Clear(_W, 0, _W.Length);
+ }
+
+ private void InitializeState()
+ {
+ _count = 0;
+
+ _stateSHA512[0] = 0x6a09e667f3bcc908;
+ _stateSHA512[1] = 0xbb67ae8584caa73b;
+ _stateSHA512[2] = 0x3c6ef372fe94f82b;
+ _stateSHA512[3] = 0xa54ff53a5f1d36f1;
+ _stateSHA512[4] = 0x510e527fade682d1;
+ _stateSHA512[5] = 0x9b05688c2b3e6c1f;
+ _stateSHA512[6] = 0x1f83d9abfb41bd6b;
+ _stateSHA512[7] = 0x5be0cd19137e2179;
+ }
+
+ /* SHA512 block update operation. Continues an SHA message-digest
+ operation, processing another message block, and updating the
+ context.
+ */
+ public override unsafe void HashCore(byte[] partIn, int ibStart, int cbSize)
+ {
+ int bufferLen;
+ int partInLen = cbSize;
+ int partInBase = ibStart;
+
+ /* Compute length of buffer */
+ bufferLen = (int)(_count & 0x7f);
+
+ /* Update number of bytes */
+ _count += (ulong)partInLen;
+
+ fixed (ulong* stateSHA512 = _stateSHA512)
+ {
+ fixed (byte* buffer = _buffer)
+ {
+ fixed (ulong* expandedBuffer = _W)
+ {
+ if ((bufferLen > 0) && (bufferLen + partInLen >= 128))
+ {
+ Buffer.BlockCopy(partIn, partInBase, _buffer, bufferLen, 128 - bufferLen);
+ partInBase += (128 - bufferLen);
+ partInLen -= (128 - bufferLen);
+ SHATransform(expandedBuffer, stateSHA512, buffer);
+ bufferLen = 0;
+ }
+
+ /* Copy input to temporary buffer and hash */
+ while (partInLen >= 128)
+ {
+ Buffer.BlockCopy(partIn, partInBase, _buffer, 0, 128);
+ partInBase += 128;
+ partInLen -= 128;
+ SHATransform(expandedBuffer, stateSHA512, buffer);
+ }
+
+ if (partInLen > 0)
+ {
+ Buffer.BlockCopy(partIn, partInBase, _buffer, bufferLen, partInLen);
+ }
+ }
+ }
+ }
+ }
+
+ /* SHA512 finalization. Ends an SHA512 message-digest operation, writing
+ the message digest.
+ */
+ public override byte[] HashFinal()
+ {
+ byte[] pad;
+ int padLen;
+ ulong bitCount;
+ byte[] hash = new byte[64]; // HashSizeValue = 512
+
+ /* Compute padding: 80 00 00 ... 00 00 <bit count>
+ */
+
+ padLen = 128 - (int)(_count & 0x7f);
+ if (padLen <= 16)
+ padLen += 128;
+
+ pad = new byte[padLen];
+ pad[0] = 0x80;
+
+ // Convert count to bit count
+ bitCount = _count * 8;
+
+ // If we ever have UInt128 for bitCount, then these need to be uncommented.
+ // Note that C# only looks at the low 6 bits of the shift value for ulongs,
+ // so >>0 and >>64 are equal!
+
+ //pad[padLen-16] = (byte) ((bitCount >> 120) & 0xff);
+ //pad[padLen-15] = (byte) ((bitCount >> 112) & 0xff);
+ //pad[padLen-14] = (byte) ((bitCount >> 104) & 0xff);
+ //pad[padLen-13] = (byte) ((bitCount >> 96) & 0xff);
+ //pad[padLen-12] = (byte) ((bitCount >> 88) & 0xff);
+ //pad[padLen-11] = (byte) ((bitCount >> 80) & 0xff);
+ //pad[padLen-10] = (byte) ((bitCount >> 72) & 0xff);
+ //pad[padLen-9] = (byte) ((bitCount >> 64) & 0xff);
+ pad[padLen - 8] = (byte)((bitCount >> 56) & 0xff);
+ pad[padLen - 7] = (byte)((bitCount >> 48) & 0xff);
+ pad[padLen - 6] = (byte)((bitCount >> 40) & 0xff);
+ pad[padLen - 5] = (byte)((bitCount >> 32) & 0xff);
+ pad[padLen - 4] = (byte)((bitCount >> 24) & 0xff);
+ pad[padLen - 3] = (byte)((bitCount >> 16) & 0xff);
+ pad[padLen - 2] = (byte)((bitCount >> 8) & 0xff);
+ pad[padLen - 1] = (byte)((bitCount >> 0) & 0xff);
+
+ /* Digest padding */
+ HashCore(pad, 0, pad.Length);
+
+ /* Store digest */
+ SHAUtils.QuadWordToBigEndian(hash, _stateSHA512, 8);
+
+ return hash;
+ }
+
+ private static readonly ulong[] _K = {
+ 0x428a2f98d728ae22, 0x7137449123ef65cd, 0xb5c0fbcfec4d3b2f, 0xe9b5dba58189dbbc,
+ 0x3956c25bf348b538, 0x59f111f1b605d019, 0x923f82a4af194f9b, 0xab1c5ed5da6d8118,
+ 0xd807aa98a3030242, 0x12835b0145706fbe, 0x243185be4ee4b28c, 0x550c7dc3d5ffb4e2,
+ 0x72be5d74f27b896f, 0x80deb1fe3b1696b1, 0x9bdc06a725c71235, 0xc19bf174cf692694,
+ 0xe49b69c19ef14ad2, 0xefbe4786384f25e3, 0x0fc19dc68b8cd5b5, 0x240ca1cc77ac9c65,
+ 0x2de92c6f592b0275, 0x4a7484aa6ea6e483, 0x5cb0a9dcbd41fbd4, 0x76f988da831153b5,
+ 0x983e5152ee66dfab, 0xa831c66d2db43210, 0xb00327c898fb213f, 0xbf597fc7beef0ee4,
+ 0xc6e00bf33da88fc2, 0xd5a79147930aa725, 0x06ca6351e003826f, 0x142929670a0e6e70,
+ 0x27b70a8546d22ffc, 0x2e1b21385c26c926, 0x4d2c6dfc5ac42aed, 0x53380d139d95b3df,
+ 0x650a73548baf63de, 0x766a0abb3c77b2a8, 0x81c2c92e47edaee6, 0x92722c851482353b,
+ 0xa2bfe8a14cf10364, 0xa81a664bbc423001, 0xc24b8b70d0f89791, 0xc76c51a30654be30,
+ 0xd192e819d6ef5218, 0xd69906245565a910, 0xf40e35855771202a, 0x106aa07032bbd1b8,
+ 0x19a4c116b8d2d0c8, 0x1e376c085141ab53, 0x2748774cdf8eeb99, 0x34b0bcb5e19b48a8,
+ 0x391c0cb3c5c95a63, 0x4ed8aa4ae3418acb, 0x5b9cca4f7763e373, 0x682e6ff3d6b2b8a3,
+ 0x748f82ee5defb2fc, 0x78a5636f43172f60, 0x84c87814a1f0ab72, 0x8cc702081a6439ec,
+ 0x90befffa23631e28, 0xa4506cebde82bde9, 0xbef9a3f7b2c67915, 0xc67178f2e372532b,
+ 0xca273eceea26619c, 0xd186b8c721c0c207, 0xeada7dd6cde0eb1e, 0xf57d4f7fee6ed178,
+ 0x06f067aa72176fba, 0x0a637dc5a2c898a6, 0x113f9804bef90dae, 0x1b710b35131c471b,
+ 0x28db77f523047d84, 0x32caab7b40c72493, 0x3c9ebe0a15c9bebc, 0x431d67c49c100d4c,
+ 0x4cc5d4becb3e42b6, 0x597f299cfc657e2a, 0x5fcb6fab3ad6faec, 0x6c44198c4a475817,
+ };
+
+ private static unsafe void SHATransform(ulong* expandedBuffer, ulong* state, byte* block)
+ {
+ ulong a, b, c, d, e, f, g, h;
+ ulong aa, bb, cc, dd, ee, ff, hh, gg;
+ ulong T1;
+
+ a = state[0];
+ b = state[1];
+ c = state[2];
+ d = state[3];
+ e = state[4];
+ f = state[5];
+ g = state[6];
+ h = state[7];
+
+ // fill in the first 16 blocks of W.
+ SHAUtils.QuadWordFromBigEndian(expandedBuffer, 16, block);
+ SHA512Expand(expandedBuffer);
+
+ /* Apply the SHA512 compression function */
+ // We are trying to be smart here and avoid as many copies as we can
+ // The perf gain with this method over the straightforward modify and shift
+ // forward is >= 20%, so it's worth the pain
+ for (int j = 0; j < 80;)
+ {
+ T1 = h + Sigma_1(e) + Ch(e, f, g) + _K[j] + expandedBuffer[j];
+ ee = d + T1;
+ aa = T1 + Sigma_0(a) + Maj(a, b, c);
+ j++;
+
+ T1 = g + Sigma_1(ee) + Ch(ee, e, f) + _K[j] + expandedBuffer[j];
+ ff = c + T1;
+ bb = T1 + Sigma_0(aa) + Maj(aa, a, b);
+ j++;
+
+ T1 = f + Sigma_1(ff) + Ch(ff, ee, e) + _K[j] + expandedBuffer[j];
+ gg = b + T1;
+ cc = T1 + Sigma_0(bb) + Maj(bb, aa, a);
+ j++;
+
+ T1 = e + Sigma_1(gg) + Ch(gg, ff, ee) + _K[j] + expandedBuffer[j];
+ hh = a + T1;
+ dd = T1 + Sigma_0(cc) + Maj(cc, bb, aa);
+ j++;
+
+ T1 = ee + Sigma_1(hh) + Ch(hh, gg, ff) + _K[j] + expandedBuffer[j];
+ h = aa + T1;
+ d = T1 + Sigma_0(dd) + Maj(dd, cc, bb);
+ j++;
+
+ T1 = ff + Sigma_1(h) + Ch(h, hh, gg) + _K[j] + expandedBuffer[j];
+ g = bb + T1;
+ c = T1 + Sigma_0(d) + Maj(d, dd, cc);
+ j++;
+
+ T1 = gg + Sigma_1(g) + Ch(g, h, hh) + _K[j] + expandedBuffer[j];
+ f = cc + T1;
+ b = T1 + Sigma_0(c) + Maj(c, d, dd);
+ j++;
+
+ T1 = hh + Sigma_1(f) + Ch(f, g, h) + _K[j] + expandedBuffer[j];
+ e = dd + T1;
+ a = T1 + Sigma_0(b) + Maj(b, c, d);
+ j++;
+ }
+
+ state[0] += a;
+ state[1] += b;
+ state[2] += c;
+ state[3] += d;
+ state[4] += e;
+ state[5] += f;
+ state[6] += g;
+ state[7] += h;
+ }
+
+ private static ulong RotateRight(ulong x, int n)
+ {
+ return (((x) >> (n)) | ((x) << (64 - (n))));
+ }
+
+ private static ulong Ch(ulong x, ulong y, ulong z)
+ {
+ return ((x & y) ^ ((x ^ 0xffffffffffffffff) & z));
+ }
+
+ private static ulong Maj(ulong x, ulong y, ulong z)
+ {
+ return ((x & y) ^ (x & z) ^ (y & z));
+ }
+
+ private static ulong Sigma_0(ulong x)
+ {
+ return (RotateRight(x, 28) ^ RotateRight(x, 34) ^ RotateRight(x, 39));
+ }
+
+ private static ulong Sigma_1(ulong x)
+ {
+ return (RotateRight(x, 14) ^ RotateRight(x, 18) ^ RotateRight(x, 41));
+ }
+
+ private static ulong sigma_0(ulong x)
+ {
+ return (RotateRight(x, 1) ^ RotateRight(x, 8) ^ (x >> 7));
+ }
+
+ private static ulong sigma_1(ulong x)
+ {
+ return (RotateRight(x, 19) ^ RotateRight(x, 61) ^ (x >> 6));
+ }
+
+ /* This function creates W_16,...,W_79 according to the formula
+ W_j <- sigma_1(W_{j-2}) + W_{j-7} + sigma_0(W_{j-15}) + W_{j-16};
+ */
+ private static unsafe void SHA512Expand(ulong* x)
+ {
+ for (int i = 16; i < 80; i++)
+ {
+ x[i] = sigma_1(x[i - 2]) + x[i - 7] + sigma_0(x[i - 15]) + x[i - 16];
+ }
+ }
+ }
+
+ // ported from https://github.com/microsoft/referencesource/blob/a48449cb48a9a693903668a...
+ private class SHAUtils
+ {
+ // digits == number of DWORDs
+ public static unsafe void DWORDFromBigEndian(uint* x, int digits, byte* block)
+ {
+ int i;
+ int j;
+
+ for (i = 0, j = 0; i < digits; i++, j += 4)
+ x[i] = (uint)((block[j] << 24) | (block[j + 1] << 16) | (block[j + 2] << 8) | block[j + 3]);
+ }
+
+ // encodes x (DWORD) into block (unsigned char), most significant byte first.
+ // digits == number of DWORDs
+ public static void DWORDToBigEndian(byte[] block, uint[] x, int digits)
+ {
+ int i;
+ int j;
+
+ for (i = 0, j = 0; i < digits; i++, j += 4)
+ {
+ block[j] = (byte)((x[i] >> 24) & 0xff);
+ block[j + 1] = (byte)((x[i] >> 16) & 0xff);
+ block[j + 2] = (byte)((x[i] >> 8) & 0xff);
+ block[j + 3] = (byte)(x[i] & 0xff);
+ }
+ }
+
+ // digits == number of QWORDs
+ public static unsafe void QuadWordFromBigEndian(ulong* x, int digits, byte* block)
+ {
+ int i;
+ int j;
+
+ for (i = 0, j = 0; i < digits; i++, j += 8)
+ x[i] = (
+ (((ulong)block[j]) << 56) | (((ulong)block[j + 1]) << 48) |
+ (((ulong)block[j + 2]) << 40) | (((ulong)block[j + 3]) << 32) |
+ (((ulong)block[j + 4]) << 24) | (((ulong)block[j + 5]) << 16) |
+ (((ulong)block[j + 6]) << 8) | ((ulong)block[j + 7])
+ );
+ }
+
+ // encodes x (DWORD) into block (unsigned char), most significant byte first.
+ // digits = number of QWORDS
+ public static void QuadWordToBigEndian(byte[] block, ulong[] x, int digits)
+ {
+ int i;
+ int j;
+
+ for (i = 0, j = 0; i < digits; i++, j += 8)
+ {
+ block[j] = (byte)((x[i] >> 56) & 0xff);
+ block[j + 1] = (byte)((x[i] >> 48) & 0xff);
+ block[j + 2] = (byte)((x[i] >> 40) & 0xff);
+ block[j + 3] = (byte)((x[i] >> 32) & 0xff);
+ block[j + 4] = (byte)((x[i] >> 24) & 0xff);
+ block[j + 5] = (byte)((x[i] >> 16) & 0xff);
+ block[j + 6] = (byte)((x[i] >> 8) & 0xff);
+ block[j + 7] = (byte)(x[i] & 0xff);
+ }
+ }
+ }
+ }
+}
diff --git a/build-additional-rids.patch b/build-additional-rids.patch
deleted file mode 100644
index 5bfba35..0000000
--- a/build-additional-rids.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-diff --git a/tools-local/tasks/Microsoft.DotNet.SourceBuild.Tasks.XPlat/PublishCoreSetupBinaries.cs b/tools-local/tasks/Microsoft.DotNet.SourceBuild.Tasks.XPlat/PublishCoreSetupBinaries.cs
-index 4394a8b..e32d338 100644
---- a/tools-local/tasks/Microsoft.DotNet.SourceBuild.Tasks.XPlat/PublishCoreSetupBinaries.cs
-+++ b/tools-local/tasks/Microsoft.DotNet.SourceBuild.Tasks.XPlat/PublishCoreSetupBinaries.cs
-@@ -36,12 +36,15 @@ namespace Microsoft.DotNet.Build.Tasks
- // should include the delimiter immediately before the RID, arch, or extension.
- protected string[] BadAtoms = new[] { "-x64", ".x64",
- ".tar", ".gz",
-- "-rhel.7", "-rhel.8",
-- ".rhel.7", ".rhel.8",
-- "-centos.7", "-centos.8",
-- ".centos.7", ".centos.8",
-+ "-rhel.7", "-rhel.8", "-rhel.9",
-+ ".rhel.7", ".rhel.8", ".rhel.9",
-+ "-centos.7", "-centos.8", "-centos.9",
-+ ".centos.7", ".centos.8", ".centos.9",
- ".fedora.30", "-fedora.30",
- ".fedora.31", "-fedora.31",
-+ ".fedora.32", "-fedora.32",
-+ ".fedora.33", "-fedora.33",
-+ ".fedora.34", "-fedora.34",
- "-linux", ".linux",
- "-osx", ".osx",
- "-OSX", ".OSX",
diff --git a/build-dotnet-tarball b/build-dotnet-tarball
index fbaea55..c250937 100755
--- a/build-dotnet-tarball
+++ b/build-dotnet-tarball
@@ -91,10 +91,8 @@ if [ ! -f "${unmodified_tarball_name}.tar.gz" ]; then
git checkout "${tag}"
git submodule update --init --recursive
clean_dotnet_cache
- sed -i -e 's|cmakeargs -DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=TRUE||' repos/runtime.common.props
# FIXME remove contineuonprebuilterror
- patch -p1 -i ../../build-additional-rids.patch
- ./build.sh -p:SkipPrebuiltEnforcement=true -p:ContinueOnPrebuiltBaselineError=true -p:ArchiveDownloadedPackages=true
+ ./build.sh -p:SkipPrebuiltEnforcement=true -p:ContinueOnPrebuiltBaselineError=true -p:ArchiveDownloadedPackages=true -p:UseSystemLibraries=true
./build-source-tarball.sh "${unmodified_tarball_name}" --skip-build -- -p:ContinueOnPrebuiltBaselineError=true -p:SkipPrebuiltEnforcement=true
popd
popd
@@ -113,8 +111,23 @@ pushd "${tarball_name}"
# not-very-useful artifacts to reduce tarball size
rm -r src/aspnetcore.*/src/SignalR/clients/java/signalr/gradle*
find src/aspnetcore.*/src -type d -name samples -print0 | xargs -0 rm -r
-rm -r src/NuGet.Client.*/test/EndToEnd/ProjectTemplates/NetCoreWebApplication1.0.zip
+rm -r src/NuGet.Client.*/test/EndToEnd
find src/runtime.*/ -depth -name tests -print0 | xargs -0 rm -r
+rm -r src/runtime.*/src/mono/
+rm -r src/Humanizer.*/samples/
+
+# FIXME delete when upstream has a new release with this file fixed
+if ! grep "RSA Data Security" src/runtime.*/src/libraries/System.Security.Cryptography.Algorithms/src/Internal/Cryptography/SHAHashProvider.Browser.cs; then
+ echo "SHAHashProvider.Browser.cs has been fixed upstream. Please fix build-dotnet-tarball"
+ exit 1
+fi
+# Delete the bad source
+rm src/runtime.*/src/libraries/System.Security.Cryptography.Algorithms/src/Internal/Cryptography/SHAHashProvider.Browser.cs
+# Delete the patch that modifies the bad source
+rm patches/runtime/0001-Use-substitute-SHA-1-implementation-in-wasm-44982.patch
+# Add pre-patched copy
+cp ../SHAHashProvider.Browser.cs src/runtime.*/src/libraries/System.Security.Cryptography.Algorithms/src/Internal/Cryptography/
+
popd
tar czf "${tarball_name}.tar.gz" "${tarball_name}"
diff --git a/dotnet5.0.spec b/dotnet5.0.spec
index 8305ab1..9aad30e 100644
--- a/dotnet5.0.spec
+++ b/dotnet5.0.spec
@@ -14,23 +14,23 @@
%global __provides_exclude ^(%{privlibs})\\.so
%global __requires_exclude ^(%{privlibs})\\.so
-# Filter flags not supported by clang
-# -fstack-clash-protection
-# -specs=
-%global dotnet_cflags %(echo %optflags | sed -e 's/-fstack-clash-protection//' | sed -re 's/-specs=[^ ]*//g')
-%global dotnet_ldflags %(echo %{__global_ldflags} | sed -re 's/-specs=[^ ]*//g')
-
-%global host_version 5.0.0-preview.8.20407.11
-%global runtime_version 5.0.0-preview.8.20407.11
-%global aspnetcore_runtime_version 5.0.0-preview.8.20414.8
-%global sdk_version 5.0.100-preview.8.20417.9
-%global templates_version 5.0.0-preview.8.20417.9
+# LTO triggers a compilation error for a source level issue. Given that LTO should not
+# change the validity of any given source and the nature of the error (undefined enum), I
+# suspect a generator program is mis-behaving in some way. This needs further debugging,
+# until that's done, disable LTO. This has to happen before setting the flags below.
+%define _lto_cflags %{nil}
+
+%global host_version 5.0.0
+%global runtime_version 5.0.0
+%global aspnetcore_runtime_version 5.0.0
+%global sdk_version 5.0.100
+%global templates_version 5.0.0
#%%global templates_version %%(echo %%{runtime_version} | awk 'BEGIN { FS="."; OFS="." } {print $1, $2, $3+1 }')
-%global host_rpm_version 5.0.0
-%global aspnetcore_runtime_rpm_version 5.0.0
-%global runtime_rpm_version 5.0.0
-%global sdk_rpm_version 5.0.100
+%global host_rpm_version %{host_version}
+%global aspnetcore_runtime_rpm_version %{aspnetcore_runtime_version}
+%global runtime_rpm_version %{runtime_version}
+%global sdk_rpm_version %{sdk_version}
# upstream can update releases without revving the SDK version so these don't always match
%global src_version %{sdk_version}
@@ -52,44 +52,36 @@
%global runtime_arch arm64
%endif
-%if 0%{?fedora}
-%global runtime_id fedora.%{fedora}-%{runtime_arch}
-%else
-%if 0%{?centos}
-%global runtime_id centos.%{centos}-%{runtime_arch}
-%else
-%global runtime_id rhel.%{rhel}-%{runtime_arch}
-%endif
-%endif
+%{!?runtime_id:%global runtime_id %(. /etc/os-release ; echo "${ID}.${VERSION_ID%%.*}")-%{runtime_arch}}
Name: dotnet5.0
Version: %{sdk_rpm_version}
-Release: 0.3.preview8%{?dist}
+Release: 1%{?dist}
Summary: .NET Runtime and SDK
License: MIT and ASL 2.0 and BSD and LGPLv2+ and CC-BY and CC0 and MS-PL and EPL-1.0 and GPL+ and GPLv2 and ISC and OFL and zlib
URL: https://github.com/dotnet/
# The source is generated on a Fedora box via:
# ./build-dotnet-tarball v%%{src_version}-SDK
-Source0: dotnet-v%{src_version}-SDK.tar.gz
+Source0: dotnet-v%{src_version}-SDK-337413b.tar.gz
Source1: check-debug-symbols.py
Source2: dotnet.sh.in
-# https://github.com/dotnet/runtime/pull/39203
-# Do not strip debuginfo from (native/unmanaged) binaries
-Patch100: runtime-dont-strip.patch
+Patch1: source-build-runtime-fixup-linker-order.patch
+
# https://github.com/dotnet/runtime/pull/42094
# Fix linker order when linking with --as-needed
-Patch101: runtime-linker-order.patch
-# https://github.com/dotnet/runtime/pull/39191
-# Fix building with our additional CFLAGS/CXXFLAGS/LDFLAGS
-Patch102: runtime-flags-support.patch
+Patch100: runtime-linker-order.patch
# Disable telemetry by default; make it opt-in
Patch500: sdk-telemetry-optout.patch
-# ExclusiveArch: aarch64 x86_64
+%if 0%{?fedora} > 32 || 0%{?rhel} > 8
+ExclusiveArch: aarch64 x86_64
+%else
ExclusiveArch: x86_64
+%endif
+
BuildRequires: clang
BuildRequires: cmake
@@ -318,7 +310,7 @@ These are not meant for general use.
%prep
-%setup -q -n dotnet-v%{src_version}-SDK
+%setup -q -n dotnet-v%{src_version}-SDK-337413b
%if %{without bootstrap}
# Remove all prebuilts
@@ -344,24 +336,16 @@ sed -i 's|/usr/share/dotnet|%{_libdir}/dotnet|' src/runtime.*/src/installer/core
# Disable warnings
sed -i 's|skiptests|skiptests ignorewarnings|' repos/runtime.common.props
+%patch1 -p1
+
pushd src/runtime.*
%patch100 -p1
-%patch101 -p1
-%patch102 -p1
popd
pushd src/sdk.*
%patch500 -p1
popd
-# If CLR_CMAKE_USE_SYSTEM_LIBUNWIND=TRUE is misisng, add it back
-grep CLR_CMAKE_USE_SYSTEM_LIBUNWIND repos/runtime.common.props || \
- sed -i 's|\$(BuildArguments) </BuildArguments>|$(BuildArguments) cmakeargs -DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=TRUE</BuildArguments>|' repos/runtime.common.props
-
-%if %{use_bundled_libunwind}
-sed -i 's|-DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=TRUE|-DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=FALSE|' repos/runtime.common.props
-%endif
-
%ifnarch x86_64
mkdir -p artifacts/obj/%{runtime_arch}/Release
cp artifacts/obj/x64/Release/PackageVersions.props artifacts/obj/%{runtime_arch}/Release/PackageVersions.props
@@ -380,9 +364,37 @@ cat /etc/os-release
cp -a %{_libdir}/dotnet previously-built-dotnet
%endif
-export EXTRA_CFLAGS="%{dotnet_cflags}"
-export EXTRA_CXXFLAGS="%{dotnet_cflags}"
-export EXTRA_LDFLAGS="%{dotnet_ldflags}"
+%if 0%{?fedora} > 32 || 0%{?rhel} > 8
+# Setting this macro ensures that only clang supported options will be
+# added to ldflags and cflags.
+%global toolchain clang
+%set_build_flags
+%else
+# Filter flags not supported by clang
+%global dotnet_cflags %(echo %optflags | sed -re 's/-specs=[^ ]*//g')
+%global dotnet_ldflags %(echo %{__global_ldflags} | sed -re 's/-specs=[^ ]*//g')
+export CFLAGS="%{dotnet_cflags}"
+export CXXFLAGS="%{dotnet_cflags}"
+export LDFLAGS="%{dotnet_ldflags}"
+%endif
+
+%ifarch aarch64
+# -mbranch-protection=standard breaks unwinding in CoreCLR through libunwind
+CFLAGS=$(echo $CFLAGS | sed -e 's/-mbranch-protection=standard //')
+CXXFLAGS=$(echo $CXXFLAGS | sed -e 's/-mbranch-protection=standard //')
+%endif
+
+# -fstack-clash-protection breaks CoreCLR
+CFLAGS=$(echo $CFLAGS | sed -e 's/-fstack-clash-protection//' )
+CXXFLAGS=$(echo $CXXFLAGS | sed -e 's/-fstack-clash-protection//' )
+
+export EXTRA_CFLAGS="$CFLAGS"
+export EXTRA_CXXFLAGS="$CXXFLAGS"
+export EXTRA_LDFLAGS="$LDFLAGS"
+
+unset CFLAGS
+unset CXXFLAGS
+unset LDFLAGS
#%%if %%{without bootstrap}
# --with-ref-packages %%{_libdir}/dotnet/reference-packages/ \
@@ -400,6 +412,11 @@ VERBOSE=1 ./build.sh \
/p:LogVerbosity=n \
/p:MinimalConsoleLogOutput=false \
/p:ContinueOnPrebuiltBaselineError=true \
+%if %{use_bundled_libunwind}
+ /p:UseSystemLibunwind=false \
+%else
+ /p:UseSystemLibunwind=true \
+%endif
sed -e 's|[@]LIBDIR[@]|%{_libdir}|g' %{SOURCE2} > dotnet.sh
@@ -415,12 +432,14 @@ tar xf artifacts/%{runtime_arch}/Release/runtime/dotnet-runtime-symbols-%{runtim
-C %{buildroot}/%{_libdir}/dotnet/shared/Microsoft.NETCore.App/%{runtime_version}/
# Fix executable permissions on files
+find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.a' -exec chmod -x {} \;
find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.dll' -exec chmod -x {} \;
+find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.h' -exec chmod -x {} \;
find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.pdb' -exec chmod -x {} \;
find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.props' -exec chmod -x {} \;
find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.pubxml' -exec chmod -x {} \;
find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.targets' -exec chmod -x {} \;
-find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.a' -exec chmod -x {} \;
+find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.xml' -exec chmod -x {} \;
chmod 0755 %{buildroot}/%{_libdir}/dotnet/sdk/%{sdk_version}/AppHostTemplate/apphost
chmod 0755 %{buildroot}/%{_libdir}/dotnet/packs/Microsoft.NETCore.App.Host.%{runtime_id}/%{runtime_version}/runtimes/%{runtime_id}/native/apphost
chmod 0755 %{buildroot}/%{_libdir}/dotnet/packs/Microsoft.NETCore.App.Host.%{runtime_id}/%{runtime_version}/runtimes/%{runtime_id}/native/libnethost.so
@@ -509,6 +528,15 @@ echo "Testing build results for debug symbols..."
%changelog
+* Fri Dec 04 13:22:13 EST 2020 Omair Majid <omajid(a)redhat.com> - 5.0.100-1
+- Update to .NET Core Runtime 5.0.0 and SDK 5.0.100
+
+* Thu Dec 03 2020 Omair Majid <omajid(a)redhat.com> - 5.0.100-0.4.20201202git337413b
+- Update to latest 5.0 pre-GA commit
+
+* Tue Nov 24 2020 Omair Majid <omajid(a)redhat.com> - 5.0.100-0.4.20201123gitdee899c
+- Update to 5.0 pre-GA commit
+
* Mon Sep 14 2020 Omair Majid <omajid(a)redhat.com> - 5.0.100-0.3.preview8
- Update to Preview 8
diff --git a/runtime-dont-strip.patch b/runtime-dont-strip.patch
deleted file mode 100644
index 694face..0000000
--- a/runtime-dont-strip.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-Do not strip native/unmanaged symbols from binaries
-
-This is a hack. It rips out the calls to strip directly.
-
-The correct/upstreamable fix is to add a configure/build option to
-keep symbols for some builds, such as those needed by upstream.
-
-diff --git a/eng/native/functions.cmake b/eng/native/functions.cmake
-index 8b73581ed14..7697908425e 100644
---- a/eng/native/functions.cmake
-+++ b/eng/native/functions.cmake
-@@ -282,7 +282,7 @@ function(target_precompile_header)
- endif(MSVC)
- endfunction()
-
--function(strip_symbols targetName outputFilename)
-+function(strip_symbols_renamed targetName outputFilename)
- if (CLR_CMAKE_HOST_UNIX)
- set(strip_source_file $<TARGET_FILE:${targetName}>)
-
-@@ -336,8 +336,8 @@ function(strip_symbols targetName outputFilename)
- endfunction()
-
- function(install_with_stripped_symbols targetName kind destination)
-- strip_symbols(${targetName} symbol_file)
-- install_symbols(${symbol_file} ${destination})
-+ # strip_symbols_renamed(${targetName} symbol_file)
-+ # install_symbols(${symbol_file} ${destination})
- if ("${kind}" STREQUAL "TARGETS")
- set(install_source ${targetName})
- elseif("${kind}" STREQUAL "PROGRAMS")
-@@ -375,13 +375,13 @@ function(install_clr)
- foreach(targetName ${INSTALL_CLR_TARGETS})
- list(FIND CLR_CROSS_COMPONENTS_LIST ${targetName} INDEX)
- if (NOT DEFINED CLR_CROSS_COMPONENTS_LIST OR NOT ${INDEX} EQUAL -1)
-- strip_symbols(${targetName} symbol_file)
-+ # strip_symbols_renamed(${targetName} symbol_file)
-
- foreach(destination ${destinations})
- # We don't need to install the export libraries for our DLLs
- # since they won't be directly linked against.
- install(PROGRAMS $<TARGET_FILE:${targetName}> DESTINATION ${destination})
-- install_symbols(${symbol_file} ${destination})
-+ # install_symbols(${symbol_file} ${destination})
-
- if(CLR_CMAKE_PGO_INSTRUMENT)
- if(WIN32)
diff --git a/runtime-flags-support.patch b/runtime-flags-support.patch
deleted file mode 100644
index 921e483..0000000
--- a/runtime-flags-support.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-diff --git a/eng/native/build-commons.sh b/eng/native/build-commons.sh
-index b976f5fdc6c..853580b1c7a 100755
---- a/eng/native/build-commons.sh
-+++ b/eng/native/build-commons.sh
-@@ -163,6 +163,14 @@ EOF
- return
- fi
-
-+ SAVED_CFLAGS="${CFLAGS}"
-+ SAVED_CXXFLAGS="${CXXFLAGS}"
-+ SAVED_LDFLAGS="${LDFLAGS}"
-+
-+ export CFLAGS="${CFLAGS} ${EXTRA_CFLAGS}"
-+ export CXXFLAGS="${CXXFLAGS} ${EXTRA_CXXFLAGS}"
-+ export LDFLAGS="${LDFLAGS} ${EXTRA_LDFLAGS}"
-+
- if [[ "$__StaticAnalyzer" == 1 ]]; then
- pushd "$intermediatesDir"
-
-@@ -181,6 +189,10 @@ EOF
- $cmake_command --build "$intermediatesDir" --target install -- -j "$__NumProc"
- fi
-
-+ CFLAGS="${SAVED_CFLAGS}"
-+ CXXFLAGS="${SAVED_CXXFLAGS}"
-+ LDFLAGS="${SAVED_LDFLAGS}"
-+
- local exit_code="$?"
- if [[ "$exit_code" != 0 ]]; then
- echo "${__ErrMsgPrefix}Failed to build \"$message\"."
diff --git a/source-build-runtime-fixup-linker-order.patch b/source-build-runtime-fixup-linker-order.patch
new file mode 100644
index 0000000..5a74b5d
--- /dev/null
+++ b/source-build-runtime-fixup-linker-order.patch
@@ -0,0 +1,13 @@
+--- a/patches/runtime/0014-Fix-singlefilehost-build-in-non-portable-mode-42415.patch
++++ b/patches/runtime/0014-Fix-singlefilehost-build-in-non-portable-mode-42415.patch
+@@ -45,8 +45,8 @@
+ # These options are used to force every object to be included even if it's unused.
+ set(START_WHOLE_ARCHIVE -Wl,--whole-archive)
+ @@ -212,3 +217,10 @@ target_link_libraries(singlefilehost
+- ${NATIVE_LIBS}
+- ${END_WHOLE_ARCHIVE}
++ ${NATIVE_LIBS_EXTRA}
++
+ )
+ +
+ +if(NOT FEATURE_DISTRO_AGNOSTIC_SSL)
diff --git a/tests/tests.yml b/tests/tests.yml
index f3825cf..d63f183 100644
--- a/tests/tests.yml
+++ b/tests/tests.yml
@@ -9,6 +9,7 @@
repositories:
- repo: "https://github.com/redhat-developer/dotnet-regular-tests.git"
dest: "dotnet-regular-tests"
+ version: main
tests:
- download_test_runner:
dir: ./
@@ -18,17 +19,15 @@
run: ./turkey --version
- regular:
dir: ./
- run: ./turkey -l={{ remote_artifacts }} -s=$(pwd)/nuget-prerelease dotnet-regular-tests
+ run: ./turkey -l={{ remote_artifacts }} dotnet-regular-tests
required_packages:
- babeltrace
- bash-completion
- binutils
- expect
- - git
- jq
- lldb
- lttng-tools
- - make
- npm
- python3
- strace
commit 260d2eab645885b86643a9c6da358d3b38941f56
Author: Omair Majid <omajid(a)redhat.com>
Date: Mon Sep 14 11:29:00 2020 -0400
Update to Preview 8
diff --git a/build-additional-rids.patch b/build-additional-rids.patch
new file mode 100644
index 0000000..5bfba35
--- /dev/null
+++ b/build-additional-rids.patch
@@ -0,0 +1,24 @@
+diff --git a/tools-local/tasks/Microsoft.DotNet.SourceBuild.Tasks.XPlat/PublishCoreSetupBinaries.cs b/tools-local/tasks/Microsoft.DotNet.SourceBuild.Tasks.XPlat/PublishCoreSetupBinaries.cs
+index 4394a8b..e32d338 100644
+--- a/tools-local/tasks/Microsoft.DotNet.SourceBuild.Tasks.XPlat/PublishCoreSetupBinaries.cs
++++ b/tools-local/tasks/Microsoft.DotNet.SourceBuild.Tasks.XPlat/PublishCoreSetupBinaries.cs
+@@ -36,12 +36,15 @@ namespace Microsoft.DotNet.Build.Tasks
+ // should include the delimiter immediately before the RID, arch, or extension.
+ protected string[] BadAtoms = new[] { "-x64", ".x64",
+ ".tar", ".gz",
+- "-rhel.7", "-rhel.8",
+- ".rhel.7", ".rhel.8",
+- "-centos.7", "-centos.8",
+- ".centos.7", ".centos.8",
++ "-rhel.7", "-rhel.8", "-rhel.9",
++ ".rhel.7", ".rhel.8", ".rhel.9",
++ "-centos.7", "-centos.8", "-centos.9",
++ ".centos.7", ".centos.8", ".centos.9",
+ ".fedora.30", "-fedora.30",
+ ".fedora.31", "-fedora.31",
++ ".fedora.32", "-fedora.32",
++ ".fedora.33", "-fedora.33",
++ ".fedora.34", "-fedora.34",
+ "-linux", ".linux",
+ "-osx", ".osx",
+ "-OSX", ".OSX",
diff --git a/build-dotnet-tarball b/build-dotnet-tarball
index f32d847..fbaea55 100755
--- a/build-dotnet-tarball
+++ b/build-dotnet-tarball
@@ -93,6 +93,7 @@ if [ ! -f "${unmodified_tarball_name}.tar.gz" ]; then
clean_dotnet_cache
sed -i -e 's|cmakeargs -DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=TRUE||' repos/runtime.common.props
# FIXME remove contineuonprebuilterror
+ patch -p1 -i ../../build-additional-rids.patch
./build.sh -p:SkipPrebuiltEnforcement=true -p:ContinueOnPrebuiltBaselineError=true -p:ArchiveDownloadedPackages=true
./build-source-tarball.sh "${unmodified_tarball_name}" --skip-build -- -p:ContinueOnPrebuiltBaselineError=true -p:SkipPrebuiltEnforcement=true
popd
@@ -110,10 +111,8 @@ mv "${unmodified_tarball_name}" "${tarball_name}"
pushd "${tarball_name}"
# Remove files with funny licenses, crypto implementations and other
# not-very-useful artifacts to reduce tarball size
-rm -rf .dotnet
-find -type f -iname '*.tar.gz' -delete
-rm -r src/AspNetCore.*/src/SignalR/clients/java/signalr/gradle*
-find src/AspNetCore.*/src -type d -name samples -print0 | xargs -0 rm -r
+rm -r src/aspnetcore.*/src/SignalR/clients/java/signalr/gradle*
+find src/aspnetcore.*/src -type d -name samples -print0 | xargs -0 rm -r
rm -r src/NuGet.Client.*/test/EndToEnd/ProjectTemplates/NetCoreWebApplication1.0.zip
find src/runtime.*/ -depth -name tests -print0 | xargs -0 rm -r
popd
diff --git a/dotnet5.0.spec b/dotnet5.0.spec
index 49221a4..8305ab1 100644
--- a/dotnet5.0.spec
+++ b/dotnet5.0.spec
@@ -20,11 +20,11 @@
%global dotnet_cflags %(echo %optflags | sed -e 's/-fstack-clash-protection//' | sed -re 's/-specs=[^ ]*//g')
%global dotnet_ldflags %(echo %{__global_ldflags} | sed -re 's/-specs=[^ ]*//g')
-%global host_version 5.0.0-preview.4.20251.6
-%global runtime_version 5.0.0-preview.4.20251.6
-%global aspnetcore_runtime_version 5.0.0-preview.4.20257.10
-%global sdk_version 5.0.100-preview.4.20161.13
-%global templates_version 5.0.0-preview.4.20161.13
+%global host_version 5.0.0-preview.8.20407.11
+%global runtime_version 5.0.0-preview.8.20407.11
+%global aspnetcore_runtime_version 5.0.0-preview.8.20414.8
+%global sdk_version 5.0.100-preview.8.20417.9
+%global templates_version 5.0.0-preview.8.20417.9
#%%global templates_version %%(echo %%{runtime_version} | awk 'BEGIN { FS="."; OFS="." } {print $1, $2, $3+1 }')
%global host_rpm_version 5.0.0
@@ -33,7 +33,7 @@
%global sdk_rpm_version 5.0.100
# upstream can update releases without revving the SDK version so these don't always match
-%global src_version %{sdk_rpm_version}
+%global src_version %{sdk_version}
%if 0%{?fedora} || 0%{?rhel} < 8
%global use_bundled_libunwind 0
@@ -64,25 +64,24 @@
Name: dotnet5.0
Version: %{sdk_rpm_version}
-Release: 0.2.preview4%{?dist}
-Summary: .NET Core Runtime and SDK
+Release: 0.3.preview8%{?dist}
+Summary: .NET Runtime and SDK
License: MIT and ASL 2.0 and BSD and LGPLv2+ and CC-BY and CC0 and MS-PL and EPL-1.0 and GPL+ and GPLv2 and ISC and OFL and zlib
URL: https://github.com/dotnet/
# The source is generated on a Fedora box via:
# ./build-dotnet-tarball v%%{src_version}-SDK
-Source0: dotnet-v%{src_version}-preview4-SDK.tar.gz
+Source0: dotnet-v%{src_version}-SDK.tar.gz
Source1: check-debug-symbols.py
Source2: dotnet.sh.in
-# dotnet/runtime PR 39044
-Patch100: runtime-39044-cmake-downgrade.patch
-
-# TODO: upstream this patch
+# https://github.com/dotnet/runtime/pull/39203
# Do not strip debuginfo from (native/unmanaged) binaries
-Patch101: runtime-dont-strip.patch
-
-# TODO: upstream this patch
+Patch100: runtime-dont-strip.patch
+# https://github.com/dotnet/runtime/pull/42094
+# Fix linker order when linking with --as-needed
+Patch101: runtime-linker-order.patch
+# https://github.com/dotnet/runtime/pull/39191
# Fix building with our additional CFLAGS/CXXFLAGS/LDFLAGS
Patch102: runtime-flags-support.patch
@@ -123,13 +122,13 @@ BuildRequires: tar
BuildRequires: zlib-devel
%description
-.NET Core is a fast, lightweight and modular platform for creating
+.NET is a fast, lightweight and modular platform for creating
cross platform applications that work on Linux, macOS and Windows.
It particularly focuses on creating console applications, web
applications and micro-services.
-.NET Core contains a runtime conforming to .NET Standards a set of
+.NET contains a runtime conforming to .NET Standards a set of
framework libraries, an SDK containing compilers and a 'dotnet'
application to drive everything.
@@ -137,18 +136,18 @@ application to drive everything.
%package -n dotnet
Version: %{sdk_rpm_version}
-Summary: .NET Core CLI tools and runtime
+Summary: .NET CLI tools and runtime
Requires: dotnet-sdk-5.0%{?_isa} >= %{sdk_rpm_version}-%{release}
%description -n dotnet
-.NET Core is a fast, lightweight and modular platform for creating
+.NET is a fast, lightweight and modular platform for creating
cross platform applications that work on Linux, macOS and Windows.
It particularly focuses on creating console applications, web
applications and micro-services.
-.NET Core contains a runtime conforming to .NET Standards a set of
+.NET contains a runtime conforming to .NET Standards a set of
framework libraries, an SDK containing compilers and a 'dotnet'
application to drive everything.
@@ -159,10 +158,10 @@ Version: %{host_rpm_version}
Summary: .NET command line launcher
%description -n dotnet-host
-The .NET Core host is a command line program that runs a standalone
-.NET core application or launches the SDK.
+The .NET host is a command line program that runs a standalone
+.NET application or launches the SDK.
-.NET Core is a fast, lightweight and modular platform for creating
+.NET is a fast, lightweight and modular platform for creating
cross platform applications that work on Linux, Mac and Windows.
It particularly focuses on creating console applications, web
@@ -172,17 +171,17 @@ applications and micro-services.
%package -n dotnet-hostfxr-5.0
Version: %{host_rpm_version}
-Summary: .NET Core command line host resolver
+Summary: .NET command line host resolver
# Theoretically any version of the host should work. But lets aim for the one
-# provided by this package, or from a newer version of .NET Core
+# provided by this package, or from a newer version of .NET
Requires: dotnet-host%{?_isa} >= %{host_rpm_version}-%{release}
%description -n dotnet-hostfxr-5.0
-The .NET Core host resolver contains the logic to resolve and select
-the right version of the .NET Core SDK or runtime to use.
+The .NET host resolver contains the logic to resolve and select
+the right version of the .NET SDK or runtime to use.
-.NET Core is a fast, lightweight and modular platform for creating
+.NET is a fast, lightweight and modular platform for creating
cross platform applications that work on Linux, Mac and Windows.
It particularly focuses on creating console applications, web
@@ -192,7 +191,7 @@ applications and micro-services.
%package -n dotnet-runtime-5.0
Version: %{runtime_rpm_version}
-Summary: NET Core 5.0 runtime
+Summary: NET 5.0 runtime
Requires: dotnet-hostfxr-5.0%{?_isa} >= %{host_rpm_version}-%{release}
@@ -204,11 +203,11 @@ Provides: bundled(libunwind) = 1.3
%endif
%description -n dotnet-runtime-5.0
-The .NET Core runtime contains everything needed to run .NET Core applications.
+The .NET runtime contains everything needed to run .NET applications.
It includes a high performance Virtual Machine as well as the framework
-libraries used by .NET Core applications.
+libraries used by .NET applications.
-.NET Core is a fast, lightweight and modular platform for creating
+.NET is a fast, lightweight and modular platform for creating
cross platform applications that work on Linux, Mac and Windows.
It particularly focuses on creating console applications, web
@@ -223,9 +222,9 @@ Summary: ASP.NET Core 5.0 runtime
Requires: dotnet-runtime-5.0%{?_isa} >= %{runtime_rpm_version}-%{release}
%description -n aspnetcore-runtime-5.0
-The ASP.NET Core runtime contains everything needed to run .NET Core
+The ASP.NET Core runtime contains everything needed to run .NET
web applications. It includes a high performance Virtual Machine as
-well as the framework libraries used by .NET Core applications.
+well as the framework libraries used by .NET applications.
ASP.NET Core is a fast, lightweight and modular platform for creating
cross platform web applications that work on Linux, Mac and Windows.
@@ -237,17 +236,17 @@ applications and micro-services.
%package -n dotnet-templates-5.0
Version: %{sdk_rpm_version}
-Summary: .NET Core 5.0 templates
+Summary: .NET 5.0 templates
# Theoretically any version of the host should work. But lets aim for the one
-# provided by this package, or from a newer version of .NET Core
+# provided by this package, or from a newer version of .NET
Requires: dotnet-host%{?_isa} >= %{host_rpm_version}-%{release}
%description -n dotnet-templates-5.0
-This package contains templates used by the .NET Core SDK.
+This package contains templates used by the .NET SDK.
-ASP.NET Core is a fast, lightweight and modular platform for creating
-cross platform web applications that work on Linux, Mac and Windows.
+.NET is a fast, lightweight and modular platform for creating
+cross platform applications that work on Linux, Mac and Windows.
It particularly focuses on creating console applications, web
applications and micro-services.
@@ -256,7 +255,7 @@ applications and micro-services.
%package -n dotnet-sdk-5.0
Version: %{sdk_rpm_version}
-Summary: .NET Core 5.0 Software Development Kit
+Summary: .NET 5.0 Software Development Kit
Provides: bundled(js-jquery)
Provides: bundled(npm)
@@ -272,10 +271,10 @@ Requires: netstandard-targeting-pack-2.1%{?_isa} >= %{sdk_rpm_version}-%{r
Requires: dotnet-templates-5.0%{?_isa} >= %{sdk_rpm_version}-%{release}
%description -n dotnet-sdk-5.0
-The .NET Core SDK is a collection of command line applications to
-create, build, publish and run .NET Core applications.
+The .NET SDK is a collection of command line applications to
+create, build, publish and run .NET applications.
-.NET Core is a fast, lightweight and modular platform for creating
+.NET is a fast, lightweight and modular platform for creating
cross platform applications that work on Linux, Mac and Windows.
It particularly focuses on creating console applications, web
@@ -293,7 +292,7 @@ Requires: dotnet-host%{?_isa}
%description -n %{1}
This package provides a targeting pack for %{3} %{4}
that allows developers to compile against and target %{3} %{4}
-applications using the .NET Core SDK.
+applications using the .NET SDK.
%files -n %{1}
%dir %{_libdir}/dotnet/packs
@@ -309,17 +308,17 @@ applications using the .NET Core SDK.
%package -n dotnet-sdk-5.0-source-built-artifacts
Version: %{sdk_rpm_version}
-Summary: Internal package for building .NET Core 5.0 Software Development Kit
+Summary: Internal package for building .NET 5.0 Software Development Kit
%description -n dotnet-sdk-5.0-source-built-artifacts
-The .NET Core source-built archive is a collection of packages needed
-to build the .NET Core SDK itself.
+The .NET source-built archive is a collection of packages needed
+to build the .NET SDK itself.
These are not meant for general use.
%prep
-%setup -q -n dotnet-v%{src_version}-preview4-SDK
+%setup -q -n dotnet-v%{src_version}-SDK
%if %{without bootstrap}
# Remove all prebuilts
@@ -383,7 +382,7 @@ cp -a %{_libdir}/dotnet previously-built-dotnet
export EXTRA_CFLAGS="%{dotnet_cflags}"
export EXTRA_CXXFLAGS="%{dotnet_cflags}"
-export EXTRA_LDFLAGS="%%{dotnet_ldflags}"
+export EXTRA_LDFLAGS="%{dotnet_ldflags}"
#%%if %%{without bootstrap}
# --with-ref-packages %%{_libdir}/dotnet/reference-packages/ \
@@ -409,7 +408,7 @@ sed -e 's|[@]LIBDIR[@]|%{_libdir}|g' %{SOURCE2} > dotnet.sh
%install
install -dm 0755 %{buildroot}%{_libdir}/dotnet
ls artifacts/%{runtime_arch}/Release
-tar xf artifacts/%{runtime_arch}/Release/dotnet-sdk-%{sdk_rpm_version}-preview.4.20161.13-%{runtime_id}.tar.gz -C %{buildroot}%{_libdir}/dotnet/
+tar xf artifacts/%{runtime_arch}/Release/dotnet-sdk-%{sdk_version}-%{runtime_id}.tar.gz -C %{buildroot}%{_libdir}/dotnet/
# Install managed symbols
tar xf artifacts/%{runtime_arch}/Release/runtime/dotnet-runtime-symbols-%{runtime_version}-%{runtime_id}.tar.gz \
@@ -421,10 +420,12 @@ find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.pdb' -exec chmod -x {} \;
find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.props' -exec chmod -x {} \;
find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.pubxml' -exec chmod -x {} \;
find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.targets' -exec chmod -x {} \;
+find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.a' -exec chmod -x {} \;
chmod 0755 %{buildroot}/%{_libdir}/dotnet/sdk/%{sdk_version}/AppHostTemplate/apphost
-chmod 0755 %{buildroot}/%{_libdir}/dotnet/packs/Microsoft.NETCore.App.Host.%{runtime_id}/%{runtime_version}/runtimes/%{runtime_id}/native/libnethost.so
chmod 0755 %{buildroot}/%{_libdir}/dotnet/packs/Microsoft.NETCore.App.Host.%{runtime_id}/%{runtime_version}/runtimes/%{runtime_id}/native/apphost
+chmod 0755 %{buildroot}/%{_libdir}/dotnet/packs/Microsoft.NETCore.App.Host.%{runtime_id}/%{runtime_version}/runtimes/%{runtime_id}/native/libnethost.so
chmod 0644 %{buildroot}/%{_libdir}/dotnet/packs/Microsoft.NETCore.App.Host.%{runtime_id}/%{runtime_version}/runtimes/%{runtime_id}/native/nethost.h
+chmod 0755 %{buildroot}/%{_libdir}/dotnet/packs/Microsoft.NETCore.App.Host.%{runtime_id}/%{runtime_version}/runtimes/%{runtime_id}/native/singlefilehost
install -dm 0755 %{buildroot}%{_sysconfdir}/profile.d/
install dotnet.sh %{buildroot}%{_sysconfdir}/profile.d/
@@ -508,6 +509,9 @@ echo "Testing build results for debug symbols..."
%changelog
+* Mon Sep 14 2020 Omair Majid <omajid(a)redhat.com> - 5.0.100-0.3.preview8
+- Update to Preview 8
+
* Fri Jul 10 2020 Omair Majid <omajid(a)redhat.com> - 5.0.100-0.2.preview4
- Fix building with custom CFLAGS/CXXFLAGS/LDFLAGS
- Clean up patches
diff --git a/runtime-39044-cmake-downgrade.patch b/runtime-39044-cmake-downgrade.patch
deleted file mode 100644
index 71938d0..0000000
--- a/runtime-39044-cmake-downgrade.patch
+++ /dev/null
@@ -1,1158 +0,0 @@
-diff --git a/eng/common/cross/toolchain.cmake b/eng/common/cross/toolchain.cmake
-index 534f1d19de6..50d81842274 100644
---- a/eng/common/cross/toolchain.cmake
-+++ b/eng/common/cross/toolchain.cmake
-@@ -83,15 +83,26 @@ endif()
-
- # Specify link flags
-
-+function(add_toolchain_linker_flag Flag)
-+ set(Config "${ARGV1}")
-+ set(CONFIG_SUFFIX "")
-+ if (NOT Config STREQUAL "")
-+ set(CONFIG_SUFFIX "_${Config}")
-+ endif()
-+ set("CMAKE_EXE_LINKER_FLAGS${CONFIG_SUFFIX}" "${CMAKE_EXE_LINKER_FLAGS${CONFIG_SUFFIX}} ${Flag}" PARENT_SCOPE)
-+ set("CMAKE_SHARED_LINKER_FLAGS${CONFIG_SUFFIX}" "${CMAKE_SHARED_LINKER_FLAGS${CONFIG_SUFFIX}} ${Flag}" PARENT_SCOPE)
-+endfunction()
-+
-+
- if(TARGET_ARCH_NAME STREQUAL "armel")
- if(DEFINED TIZEN_TOOLCHAIN) # For Tizen only
-- add_link_options("-B${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}")
-- add_link_options("-L${CROSS_ROOTFS}/lib")
-- add_link_options("-L${CROSS_ROOTFS}/usr/lib")
-- add_link_options("-L${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}")
-+ add_toolchain_linker_flag("-B${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}")
-+ add_toolchain_linker_flag("-L${CROSS_ROOTFS}/lib")
-+ add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib")
-+ add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}")
- endif()
- elseif(TARGET_ARCH_NAME STREQUAL "x86")
-- add_link_options(-m32)
-+ add_toolchain_linker_flag(-m32)
- endif()
-
- # Specify compile options
-diff --git a/eng/native/build-commons.sh b/eng/native/build-commons.sh
-index a1a975ce177..9a0c296ff66 100755
---- a/eng/native/build-commons.sh
-+++ b/eng/native/build-commons.sh
-@@ -51,12 +51,9 @@ check_prereqs()
- # Check presence of CMake on the path
- command -v cmake 2>/dev/null || { echo >&2 "Please install cmake before running this script"; exit 1; }
-
-- function version { echo "$@" | awk -F. '{ printf("%d%02d%02d\n", $1,$2,$3); }'; }
--
-- local cmake_version="$(cmake --version | awk '/^cmake version [0-9]+\.[0-9]+\.[0-9]+$/ {print $3}')"
--
-- if [[ "$(version "$cmake_version")" -lt "$(version 3.14.2)" ]]; then
-- echo "Please install CMake 3.14.2 or newer from http://www.cmake.org/download/ or https://apt.kitware.com and ensure it is on your path."; exit 1;
-+ if [[ "$__HostOS" == "OSX" ]]; then
-+ # Check presence of pkg-config on the path
-+ command -v pkg-config 2>/dev/null || { echo >&2 "Please install pkg-config before running this script, see https://github.com/dotnet/runtime/blob/master/docs/workflow/requirements/..."; exit 1; }
- fi
-
- if [[ "$__UseNinja" == 1 ]]; then
-@@ -156,8 +153,8 @@ build_native()
- cmake_command="emcmake $cmake_command"
- fi
-
-- echo "Executing $cmake_command --build \"$intermediatesDir\" --target install -j $__NumProc"
-- $cmake_command --build "$intermediatesDir" --target install -j "$__NumProc"
-+ echo "Executing $cmake_command --build \"$intermediatesDir\" --target install -- -j $__NumProc"
-+ $cmake_command --build "$intermediatesDir" --target install -- -j "$__NumProc"
- fi
-
- local exit_code="$?"
-diff --git a/eng/native/configurecompiler.cmake b/eng/native/configurecompiler.cmake
-index 2937916ced9..07fd6f75f6f 100644
---- a/eng/native/configurecompiler.cmake
-+++ b/eng/native/configurecompiler.cmake
-@@ -8,8 +8,6 @@ set(CMAKE_C_STANDARD_REQUIRED ON)
- set(CMAKE_CXX_STANDARD 11)
- set(CMAKE_CXX_STANDARD_REQUIRED ON)
-
--cmake_policy(SET CMP0083 NEW)
--
- include(CheckCXXCompilerFlag)
-
- # "configureoptimization.cmake" must be included after CLR_CMAKE_HOST_UNIX has been set.
-@@ -40,11 +38,18 @@ set(CMAKE_CXX_FLAGS_CHECKED "")
- set(CMAKE_EXE_LINKER_FLAGS_CHECKED "")
- set(CMAKE_SHARED_LINKER_FLAGS_CHECKED "")
-
-+set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "")
-+set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "")
-+set(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "")
-+set(CMAKE_EXE_LINKER_FLAGS_DEBUG "")
-+set(CMAKE_EXE_LINKER_FLAGS_DEBUG "")
-+set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "")
-+
- add_compile_definitions("$<$<OR:$<CONFIG:DEBUG>,$<CONFIG:CHECKED>>:DEBUG;_DEBUG;_DBG;URTBLDENV_FRIENDLY=Checked;BUILDENV_CHECKED=1>")
- add_compile_definitions("$<$<OR:$<CONFIG:RELEASE>,$<CONFIG:RELWITHDEBINFO>>:NDEBUG;URTBLDENV_FRIENDLY=Retail>")
-
- if (MSVC)
-- add_link_options(/GUARD:CF)
-+ add_linker_flag(/GUARD:CF)
-
- # Linker flags
- #
-@@ -57,48 +62,51 @@ if (MSVC)
- endif ()
-
- #Do not create Side-by-Side Assembly Manifest
-- add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:/MANIFEST:NO>)
-+ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /MANIFEST:NO")
- # can handle addresses larger than 2 gigabytes
-- add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:/LARGEADDRESSAWARE>)
-+ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /LARGEADDRESSAWARE")
- #Compatible with Data Execution Prevention
-- add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:/NXCOMPAT>)
-+ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /NXCOMPAT")
- #Use address space layout randomization
-- add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:/DYNAMICBASE>)
-+ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /DYNAMICBASE")
- #shrink pdb size
-- add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:/PDBCOMPRESS>)
-+ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /PDBCOMPRESS")
-
-- add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:/DEBUG>)
-- add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:/IGNORE:4197,4013,4254,4070,4221>)
-- add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:/SUBSYSTEM:WINDOWS,${WINDOWS_SUBSYSTEM_VERSION}>)
-+ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /DEBUG")
-+ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /IGNORE:4197,4013,4254,4070,4221")
-+ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /SUBSYSTEM:WINDOWS,${WINDOWS_SUBSYSTEM_VERSION}")
-
- set(CMAKE_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKER_FLAGS} /IGNORE:4221")
-
-- add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>:/DEBUG>)
-- add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>:/PDBCOMPRESS>)
-- add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>:/STACK:1572864>)
-+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /DEBUG")
-+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /PDBCOMPRESS")
-+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:1572864")
-
- # Debug build specific flags
-- add_link_options($<$<AND:$<OR:$<CONFIG:DEBUG>,$<CONFIG:CHECKED>>,$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>>:/NOVCFEATURE>)
-+ set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} /NOVCFEATURE")
-+ set(CMAKE_SHARED_LINKER_FLAGS_CHECKED "${CMAKE_SHARED_LINKER_FLAGS_CHECKED} /NOVCFEATURE")
-
- # Checked build specific flags
-- add_link_options($<$<CONFIG:CHECKED>:/INCREMENTAL:NO>) # prevent "warning LNK4075: ignoring '/INCREMENTAL' due to '/OPT:REF' specification"
-- add_link_options($<$<CONFIG:CHECKED>:/OPT:REF>)
-- add_link_options($<$<CONFIG:CHECKED>:/OPT:NOICF>)
-+ add_linker_flag(/INCREMENTAL:NO CHECKED) # prevent "warning LNK4075: ignoring '/INCREMENTAL' due to '/OPT:REF' specification"
-+ add_linker_flag(/OPT:REF CHECKED)
-+ add_linker_flag(/OPT:NOICF CHECKED)
-
- # Release build specific flags
-- add_link_options($<$<CONFIG:RELEASE>:/LTCG>)
-- add_link_options($<$<CONFIG:RELEASE>:/OPT:REF>)
-- add_link_options($<$<CONFIG:RELEASE>:/OPT:ICF>)
-+ add_linker_flag(/LTCG RELEASE)
-+ add_linker_flag(/OPT:REF RELEASE)
-+ add_linker_flag(/OPT:ICF RELEASE)
-+ add_linker_flag(/INCREMENTAL:NO RELEASE)
- set(CMAKE_STATIC_LINKER_FLAGS_RELEASE "${CMAKE_STATIC_LINKER_FLAGS_RELEASE} /LTCG")
-
- # ReleaseWithDebugInfo build specific flags
-- add_link_options($<$<CONFIG:RELWITHDEBINFO>:/LTCG>)
-- add_link_options($<$<CONFIG:RELWITHDEBINFO>:/OPT:REF>)
-- add_link_options($<$<CONFIG:RELWITHDEBINFO>:/OPT:ICF>)
-+ add_linker_flag(/LTCG RELWITHDEBINFO)
-+ add_linker_flag(/OPT:REF RELWITHDEBINFO)
-+ add_linker_flag(/OPT:ICF RELWITHDEBINFO)
- set(CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO} /LTCG")
-
- # Force uCRT to be dynamically linked for Release build
-- add_link_options("$<$<CONFIG:RELEASE>:/NODEFAULTLIB:libucrt.lib;/DEFAULTLIB:ucrt.lib>")
-+ add_linker_flag(/NODEFAULTLIB:libucrt.lib RELEASE)
-+ add_linker_flag(/DEFAULTLIB:ucrt.lib RELEASE)
-
- elseif (CLR_CMAKE_HOST_UNIX)
- # Set the values to display when interactively configuring CMAKE_BUILD_TYPE
-@@ -157,11 +165,10 @@ elseif (CLR_CMAKE_HOST_UNIX)
-
- # -fdata-sections -ffunction-sections: each function has own section instead of one per .o file (needed for --gc-sections)
- # -O1: optimization level used instead of -O0 to avoid compile error "invalid operand for inline asm constraint"
-- add_compile_definitions("$<$<OR:$<CONFIG:DEBUG>,$<CONFIG:CHECKED>>:${CLR_SANITIZE_CXX_OPTIONS};-fdata-sections;--ffunction-sections;-O1>")
-- add_link_options($<$<AND:$<OR:$<CONFIG:DEBUG>,$<CONFIG:CHECKED>>,$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>>:${CLR_SANITIZE_LINK_OPTIONS}>)
--
-+ add_compile_options("$<$<OR:$<CONFIG:DEBUG>,$<CONFIG:CHECKED>>:${CLR_SANITIZE_CXX_OPTIONS};-fdata-sections;--ffunction-sections;-O1>")
-+ add_linker_flag("${CLR_SANITIZE_LINK_OPTIONS}" DEBUG CHECKED)
- # -Wl and --gc-sections: drop unused sections\functions (similar to Windows /Gy function-level-linking)
-- add_link_options("$<$<AND:$<OR:$<CONFIG:DEBUG>,$<CONFIG:CHECKED>>,$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>>:${CLR_SANITIZE_LINK_OPTIONS};-Wl,--gc-sections>")
-+ add_linker_flag("-Wl,--gc-sections" DEBUG CHECKED)
- endif ()
- endif(UPPERCASE_CMAKE_BUILD_TYPE STREQUAL DEBUG OR UPPERCASE_CMAKE_BUILD_TYPE STREQUAL CHECKED)
- endif(MSVC)
-@@ -173,15 +180,18 @@ endif(MSVC)
- # ./build-native.sh cmakeargs "-DCLR_ADDITIONAL_COMPILER_OPTIONS=<...>" cmakeargs "-DCLR_ADDITIONAL_LINKER_FLAGS=<...>"
- #
- if(CLR_CMAKE_HOST_UNIX)
-- add_link_options(${CLR_ADDITIONAL_LINKER_FLAGS})
-+ foreach(ADDTL_LINKER_FLAG ${CLR_ADDITIONAL_LINKER_FLAGS})
-+ add_linker_flag(${ADDTL_LINKER_FLAG})
-+ endforeach()
- endif(CLR_CMAKE_HOST_UNIX)
-
- if(CLR_CMAKE_HOST_LINUX)
- add_compile_options($<$<COMPILE_LANGUAGE:ASM>:-Wa,--noexecstack>)
-- add_link_options(-Wl,--build-id=sha1 -Wl,-z,relro,-z,now)
-+ add_linker_flag(-Wl,--build-id=sha1)
-+ add_linker_flag(-Wl,-z,relro,-z,now)
- elseif(CLR_CMAKE_HOST_FREEBSD)
- add_compile_options($<$<COMPILE_LANGUAGE:ASM>:-Wa,--noexecstack>)
-- add_link_options(LINKER:--build-id=sha1)
-+ add_linker_flag("-Wl,--build-id=sha1")
- elseif(CLR_CMAKE_HOST_SUNOS)
- set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} /opt/local/include)
- set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} /opt/local/lib)
-@@ -357,7 +367,7 @@ if (CLR_CMAKE_HOST_UNIX)
- if(CLR_CMAKE_HOST_OSX)
- set(MACOS_VERSION_MIN_FLAGS -mmacosx-version-min=10.12)
- add_compile_options(${MACOS_VERSION_MIN_FLAGS})
-- add_link_options(${MACOS_VERSION_MIN_FLAGS})
-+ add_linker_flag(${MACOS_VERSION_MIN_FLAGS})
- endif(CLR_CMAKE_HOST_OSX)
- endif(CLR_CMAKE_HOST_UNIX)
-
-@@ -514,7 +524,7 @@ if(CLR_CMAKE_ENABLE_CODE_COVERAGE)
-
- add_compile_options(-fprofile-arcs)
- add_compile_options(-ftest-coverage)
-- add_link_options(--coverage)
-+ add_linker_flag(--coverage)
- else()
- message(FATAL_ERROR "Code coverage builds not supported on current platform")
- endif(CLR_CMAKE_HOST_UNIX)
-diff --git a/eng/native/configureplatform.cmake b/eng/native/configureplatform.cmake
-index 1c5254d8496..4a4131cb05d 100644
---- a/eng/native/configureplatform.cmake
-+++ b/eng/native/configureplatform.cmake
-@@ -1,4 +1,3 @@
--include(CheckPIESupported)
- include(${CMAKE_CURRENT_LIST_DIR}/functions.cmake)
-
- # If set, indicates that this is not an officially supported release
-@@ -363,19 +362,10 @@ if(NOT CLR_CMAKE_TARGET_EMSCRIPTEN)
- # but since we know that PIE is supported, we can safely skip this redundant check).
- #
- # The default linker on Solaris also does not support PIE.
-- if(NOT CLR_CMAKE_TARGET_ANDROID AND NOT CLR_CMAKE_TARGET_SUNOS)
-- # All code we build should be compiled as position independent
-- get_property(languages GLOBAL PROPERTY ENABLED_LANGUAGES)
-- if("CXX" IN_LIST languages)
-- set(CLR_PIE_LANGUAGE CXX)
-- else()
-- set(CLR_PIE_LANGUAGE C)
-- endif()
-- check_pie_supported(OUTPUT_VARIABLE PIE_SUPPORT_OUTPUT LANGUAGES ${CLR_PIE_LANGUAGE})
-- if(NOT MSVC AND NOT CMAKE_${CLR_PIE_LANGUAGE}_LINK_PIE_SUPPORTED)
-- message(WARNING "PIE is not supported at link time: ${PIE_SUPPORT_OUTPUT}.\n"
-- "PIE link options will not be passed to linker.")
-- endif()
-+ if(NOT CLR_CMAKE_TARGET_ANDROID AND NOT CLR_CMAKE_TARGET_SUNOS AND NOT CLR_CMAKE_TARGET_OSX AND NOT CLR_CMAKE_HOST_TVOS AND NOT CLR_CMAKE_HOST_IOS AND NOT MSVC)
-+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pie")
-+ add_compile_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>:-fPIE>)
-+ add_compile_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:-fPIC>)
- endif()
-
- set(CMAKE_POSITION_INDEPENDENT_CODE ON)
-diff --git a/eng/native/functions.cmake b/eng/native/functions.cmake
-index b7f8f463804..f4a96cbe35e 100644
---- a/eng/native/functions.cmake
-+++ b/eng/native/functions.cmake
-@@ -123,7 +123,7 @@ function(preprocess_compile_asm)
- set(options "")
- set(oneValueArgs OUTPUT_OBJECTS)
- set(multiValueArgs ASM_FILES)
-- cmake_parse_arguments(PARSE_ARGV 0 COMPILE_ASM "${options}" "${oneValueArgs}" "${multiValueArgs}")
-+ cmake_parse_arguments(COMPILE_ASM "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGV})
-
- get_include_directories_asm(ASM_INCLUDE_DIRECTORIES)
-
-@@ -209,7 +209,7 @@ function(target_precompile_header)
- set(options "")
- set(oneValueArgs TARGET HEADER)
- set(multiValueArgs ADDITIONAL_INCLUDE_DIRECTORIES)
-- cmake_parse_arguments(PARSE_ARGV 0 PRECOMPILE_HEADERS "${options}" "${oneValueArgs}" "${multiValueArgs}")
-+ cmake_parse_arguments(PRECOMPILE_HEADERS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGV})
-
- if ("${PRECOMPILE_HEADERS_TARGET}" STREQUAL "")
- message(SEND_ERROR "No target supplied to target_precompile_header.")
-@@ -321,7 +321,7 @@ endfunction()
- function(install_clr)
- set(oneValueArgs ADDITIONAL_DESTINATION)
- set(multiValueArgs TARGETS)
-- cmake_parse_arguments(PARSE_ARGV 0 INSTALL_CLR "${options}" "${oneValueArgs}" "${multiValueArgs}")
-+ cmake_parse_arguments(INSTALL_CLR "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGV})
-
- if ("${INSTALL_CLR_TARGETS}" STREQUAL "")
- message(FATAL_ERROR "At least one target must be passed to install_clr(TARGETS )")
-@@ -377,6 +377,15 @@ function(disable_pax_mprotect targetName)
- endif()
- endfunction()
-
-+if (CMAKE_VERSION VERSION_LESS "3.12")
-+ # Polyfill add_compile_definitions when it is unavailable
-+ function(add_compile_definitions)
-+ get_directory_property(DIR_COMPILE_DEFINITIONS COMPILE_DEFINITIONS)
-+ list(APPEND DIR_COMPILE_DEFINITIONS ${ARGV})
-+ set_directory_properties(PROPERTIES COMPILE_DEFINITIONS "${DIR_COMPILE_DEFINITIONS}")
-+ endfunction()
-+endif()
-+
- function(_add_executable)
- if(NOT WIN32)
- add_executable(${ARGV} ${VERSION_FILE_PATH})
-@@ -415,3 +424,16 @@ endfunction()
- function(add_executable_clr)
- _add_executable(${ARGV})
- endfunction()
-+
-+# add_linker_flag(Flag [Config1 Config2 ...])
-+function(add_linker_flag Flag)
-+ if (ARGN STREQUAL "")
-+ set("CMAKE_EXE_LINKER_FLAGS" "${CMAKE_EXE_LINKER_FLAGS} ${Flag}" PARENT_SCOPE)
-+ set("CMAKE_SHARED_LINKER_FLAGS" "${CMAKE_SHARED_LINKER_FLAGS} ${Flag}" PARENT_SCOPE)
-+ else()
-+ foreach(Config ${ARGN})
-+ set("CMAKE_EXE_LINKER_FLAGS_${Config}" "${CMAKE_EXE_LINKER_FLAGS_${Config}} ${Flag}" PARENT_SCOPE)
-+ set("CMAKE_SHARED_LINKER_FLAGS_${Config}" "${CMAKE_SHARED_LINKER_FLAGS_${Config}} ${Flag}" PARENT_SCOPE)
-+ endforeach()
-+ endif()
-+endfunction()
-diff --git a/eng/native/gen-buildsys.sh b/eng/native/gen-buildsys.sh
-index f27bb33e357..1b4c2e02c59 100755
---- a/eng/native/gen-buildsys.sh
-+++ b/eng/native/gen-buildsys.sh
-@@ -91,6 +91,9 @@ if [[ "$build_arch" == "wasm" ]]; then
- cmake_command="emcmake $cmake_command"
- fi
-
-+# We have to be able to build with CMake 3.6.2, so we can't use the -S or -B options
-+pushd "$3"
-+
- # Include CMAKE_USER_MAKE_RULES_OVERRIDE as uninitialized since it will hold its value in the CMake cache otherwise can cause issues when branch switching
- $cmake_command \
- -G "$generator" \
-@@ -98,5 +101,6 @@ $cmake_command \
- "-DCMAKE_INSTALL_PREFIX=$__CMakeBinDir" \
- $cmake_extra_defines \
- $__UnprocessedCMakeArgs \
-- -S "$1" \
-- -B "$3"
-+ "$1"
-+
-+popd
-diff --git a/src/coreclr/CMakeLists.txt b/src/coreclr/CMakeLists.txt
-index 5fa572c4fcd..071ac2cf5fa 100644
---- a/src/coreclr/CMakeLists.txt
-+++ b/src/coreclr/CMakeLists.txt
-@@ -1,4 +1,4 @@
--cmake_minimum_required(VERSION 3.14.2)
-+cmake_minimum_required(VERSION 3.6.2)
-
- cmake_policy(SET CMP0042 NEW)
-
-diff --git a/src/coreclr/pgosupport.cmake b/src/coreclr/pgosupport.cmake
-index 4b119809017..04bde2bc20b 100644
---- a/src/coreclr/pgosupport.cmake
-+++ b/src/coreclr/pgosupport.cmake
-@@ -1,5 +1,18 @@
--include(CheckIPOSupported)
--check_ipo_supported(RESULT HAVE_LTO)
-+include(CheckCXXSourceCompiles)
-+include(CheckCXXCompilerFlag)
-+
-+# VC++ guarantees support for LTCG (LTO's equivalent)
-+if(NOT WIN32)
-+ # Function required to give CMAKE_REQUIRED_* local scope
-+ function(check_have_lto)
-+ set(CMAKE_REQUIRED_FLAGS -flto)
-+ set(CMAKE_REQUIRED_LIBRARIES -flto -fuse-ld=gold)
-+ check_cxx_source_compiles("int main() { return 0; }" HAVE_LTO)
-+ endfunction(check_have_lto)
-+ check_have_lto()
-+
-+ check_cxx_compiler_flag(-faligned-new COMPILER_SUPPORTS_F_ALIGNED_NEW)
-+endif(NOT WIN32)
-
- # Adds Profile Guided Optimization (PGO) flags to the current target
- function(add_pgo TargetName)
-diff --git a/src/coreclr/src/ToolBox/SOS/DacTableGen/CMakeLists.txt b/src/coreclr/src/ToolBox/SOS/DacTableGen/CMakeLists.txt
-index dcd39e346c9..7b471d53726 100644
---- a/src/coreclr/src/ToolBox/SOS/DacTableGen/CMakeLists.txt
-+++ b/src/coreclr/src/ToolBox/SOS/DacTableGen/CMakeLists.txt
-@@ -1,3 +1,4 @@
-+cmake_minimum_required(VERSION 3.8)
- # Quick note: The CMake C# support is using the CSC bundled with the MSBuild that the native build runs on, not the one supplied by the local .NET SDK.
-
- project(DacTableGen LANGUAGES CSharp)
-diff --git a/src/coreclr/src/binder/CMakeLists.txt b/src/coreclr/src/binder/CMakeLists.txt
-index 3a66c81e10e..208f1214dd0 100644
---- a/src/coreclr/src/binder/CMakeLists.txt
-+++ b/src/coreclr/src/binder/CMakeLists.txt
-@@ -82,11 +82,13 @@ endif(CLR_CMAKE_TARGET_WIN32)
- convert_to_absolute_path(BINDER_SOURCES ${BINDER_SOURCES})
- convert_to_absolute_path(BINDER_CROSSGEN_SOURCES ${BINDER_CROSSGEN_SOURCES})
-
--add_library_clr(v3binder
-- STATIC
-+add_library_clr(v3binder_obj
-+ OBJECT
- ${BINDER_SOURCES}
- )
--add_dependencies(v3binder eventing_headers)
-+add_dependencies(v3binder_obj eventing_headers)
-+add_library(v3binder INTERFACE)
-+target_sources(v3binder INTERFACE $<TARGET_OBJECTS:v3binder_obj>)
-
- add_library_clr(v3binder_crossgen
- STATIC
-diff --git a/src/coreclr/src/classlibnative/bcltype/CMakeLists.txt b/src/coreclr/src/classlibnative/bcltype/CMakeLists.txt
-index 391f70eff43..fdcf344c16a 100644
---- a/src/coreclr/src/classlibnative/bcltype/CMakeLists.txt
-+++ b/src/coreclr/src/classlibnative/bcltype/CMakeLists.txt
-@@ -10,9 +10,11 @@ set(BCLTYPE_SOURCES
- variant.cpp
- )
-
--add_library_clr(bcltype
-- STATIC
-+add_library_clr(bcltype_obj
-+ OBJECT
- ${BCLTYPE_SOURCES}
- )
-
--add_dependencies(bcltype eventing_headers)
-+add_dependencies(bcltype_obj eventing_headers)
-+add_library(bcltype INTERFACE)
-+target_sources(bcltype INTERFACE $<TARGET_OBJECTS:bcltype_obj>)
-diff --git a/src/coreclr/src/classlibnative/float/CMakeLists.txt b/src/coreclr/src/classlibnative/float/CMakeLists.txt
-index 44d40c92592..3c066620f76 100644
---- a/src/coreclr/src/classlibnative/float/CMakeLists.txt
-+++ b/src/coreclr/src/classlibnative/float/CMakeLists.txt
-@@ -7,9 +7,12 @@ set(FLOAT_SOURCES
- floatsingle.cpp
- )
-
--add_library_clr(comfloat_wks
-- STATIC
-+add_library_clr(comfloat_wks_obj
-+ OBJECT
- ${FLOAT_SOURCES}
- )
-
--add_dependencies(comfloat_wks eventing_headers)
-+add_dependencies(comfloat_wks_obj eventing_headers)
-+
-+add_library(comfloat_wks INTERFACE)
-+target_sources(comfloat_wks INTERFACE $<TARGET_OBJECTS:comfloat_wks_obj>)
-diff --git a/src/coreclr/src/debug/debug-pal/CMakeLists.txt b/src/coreclr/src/debug/debug-pal/CMakeLists.txt
-index ac1e48fb5fb..213fa59e784 100644
---- a/src/coreclr/src/debug/debug-pal/CMakeLists.txt
-+++ b/src/coreclr/src/debug/debug-pal/CMakeLists.txt
-@@ -34,4 +34,6 @@ if(CLR_CMAKE_HOST_UNIX)
-
- endif(CLR_CMAKE_HOST_UNIX)
-
--_add_library(debug-pal STATIC ${TWO_WAY_PIPE_SOURCES})
-+_add_library(debug-pal_obj OBJECT ${TWO_WAY_PIPE_SOURCES})
-+add_library(debug-pal INTERFACE)
-+target_sources(debug-pal INTERFACE $<TARGET_OBJECTS:debug-pal_obj>)
-diff --git a/src/coreclr/src/debug/ee/wks/CMakeLists.txt b/src/coreclr/src/debug/ee/wks/CMakeLists.txt
-index ee6c482ce76..3dd5e3612df 100644
---- a/src/coreclr/src/debug/ee/wks/CMakeLists.txt
-+++ b/src/coreclr/src/debug/ee/wks/CMakeLists.txt
-@@ -9,9 +9,9 @@ if (CLR_CMAKE_TARGET_WIN32)
-
- if(CLR_CMAKE_HOST_ARCH_ARM OR CLR_CMAKE_HOST_ARCH_ARM64)
-
-- preprocess_compile_asm(ASM_FILES ${ASM_FILE} OUTPUT_OBJECTS ASM_OBJECTS)
-+ preprocess_compile_asm(TARGET cordbee_wks_obj ASM_FILES ${ASM_FILE} OUTPUT_OBJECTS ASM_OBJECTS)
-
-- add_library_clr(cordbee_wks ${CORDBEE_SOURCES_WKS} ${ASM_OBJECTS})
-+ add_library_clr(cordbee_wks_obj OBJECT ${CORDBEE_SOURCES_WKS} ${ASM_FILE} ${ASM_OBJECTS})
-
- else ()
-
-@@ -23,19 +23,21 @@ if (CLR_CMAKE_TARGET_WIN32)
-
- set_source_files_properties(${ASM_FILE} PROPERTIES COMPILE_OPTIONS "${ASM_OPTIONS}")
-
-- add_library_clr(cordbee_wks ${CORDBEE_SOURCES_WKS} ${ASM_FILE})
-+ add_library_clr(cordbee_wks_obj OBJECT ${CORDBEE_SOURCES_WKS} ${ASM_FILE})
-
- endif()
-
- else ()
-
- if(CLR_CMAKE_HOST_ARCH_AMD64 OR CLR_CMAKE_HOST_ARCH_ARM OR CLR_CMAKE_HOST_ARCH_ARM64 OR CLR_CMAKE_HOST_ARCH_I386)
-- add_library_clr(cordbee_wks ${CORDBEE_SOURCES_WKS} ../${ARCH_SOURCES_DIR}/dbghelpers.S)
-+ add_library_clr(cordbee_wks_obj OBJECT ${CORDBEE_SOURCES_WKS} ../${ARCH_SOURCES_DIR}/dbghelpers.S)
- else()
- message(FATAL_ERROR "Unknown platform")
- endif()
-
- endif (CLR_CMAKE_TARGET_WIN32)
-
--target_precompile_header(TARGET cordbee_wks HEADER stdafx.h)
--add_dependencies(cordbee_wks eventing_headers)
-+target_precompile_header(TARGET cordbee_wks_obj HEADER stdafx.h)
-+add_dependencies(cordbee_wks_obj eventing_headers)
-+add_library(cordbee_wks INTERFACE)
-+target_sources(cordbee_wks INTERFACE $<TARGET_OBJECTS:cordbee_wks_obj>)
-diff --git a/src/coreclr/src/debug/ildbsymlib/CMakeLists.txt b/src/coreclr/src/debug/ildbsymlib/CMakeLists.txt
-index 88364658f11..362da1f6483 100644
---- a/src/coreclr/src/debug/ildbsymlib/CMakeLists.txt
-+++ b/src/coreclr/src/debug/ildbsymlib/CMakeLists.txt
-@@ -10,5 +10,6 @@ set( ILDBSYMLIB_SOURCES
- symwrite.cpp
- )
-
--add_library_clr(ildbsymlib ${ILDBSYMLIB_SOURCES})
--
-+add_library_clr(ildbsymlib_obj OBJECT ${ILDBSYMLIB_SOURCES})
-+add_library(ildbsymlib INTERFACE)
-+target_sources(ildbsymlib INTERFACE $<TARGET_OBJECTS:ildbsymlib_obj>)
-diff --git a/src/coreclr/src/dlls/mscoree/coreclr/CMakeLists.txt b/src/coreclr/src/dlls/mscoree/coreclr/CMakeLists.txt
-index 777a2869e4f..066b75ab01f 100644
---- a/src/coreclr/src/dlls/mscoree/coreclr/CMakeLists.txt
-+++ b/src/coreclr/src/dlls/mscoree/coreclr/CMakeLists.txt
-@@ -9,20 +9,20 @@ if (CLR_CMAKE_HOST_WIN32)
-
- list(APPEND CLR_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/coreclr.def)
-
-- add_link_options(/ENTRY:CoreDllMain)
-+ add_linker_flag("/ENTRY:CoreDllMain")
-
- # Incremental linking results in the linker inserting extra padding and routing function calls via thunks that can break the
- # invariants (e.g. size of region between Jit_PatchedCodeLast-Jit_PatchCodeStart needs to fit in a page).
-- add_link_options(/INCREMENTAL:NO)
-+ add_linker_flag("/INCREMENTAL:NO")
-
- # Delay load libraries required for WinRT as that is not supported on all platforms
-- add_link_options("/DELAYLOAD:api-ms-win-core-winrt-string-l1-1-0.dll")
-- add_link_options("/DELAYLOAD:api-ms-win-core-winrt-l1-1-0.dll")
-- add_link_options("/DELAYLOAD:api-ms-win-core-winrt-roparameterizediid-l1-1-0.dll")
-- add_link_options("/DELAYLOAD:api-ms-win-ro-typeresolution-l1-1-0.dll")
-+ add_linker_flag("/DELAYLOAD:api-ms-win-core-winrt-string-l1-1-0.dll")
-+ add_linker_flag("/DELAYLOAD:api-ms-win-core-winrt-l1-1-0.dll")
-+ add_linker_flag("/DELAYLOAD:api-ms-win-core-winrt-roparameterizediid-l1-1-0.dll")
-+ add_linker_flag("/DELAYLOAD:api-ms-win-ro-typeresolution-l1-1-0.dll")
-
- # Delay load version.dll so that we can specify how to search when loading it as it is not part of Windows' known DLLs
-- add_link_options("/DELAYLOAD:version.dll")
-+ add_linker_flag("/DELAYLOAD:version.dll")
-
- # No library groups for Win32
- set(START_LIBRARY_GROUP)
-@@ -35,7 +35,7 @@ else(CLR_CMAKE_HOST_WIN32)
- if(CLR_CMAKE_TARGET_LINUX OR CLR_CMAKE_TARGET_FREEBSD OR CLR_CMAKE_TARGET_NETBSD)
- # This option is necessary to ensure that the overloaded delete operator defined inside
- # of the utilcode will be used instead of the standard library delete operator.
-- add_link_options("LINKER:-Bsymbolic")
-+ add_linker_flag("-Wl,-Bsymbolic")
-
- # The following linked options can be inserted into the linker libraries list to
- # ensure proper resolving of circular references between a subset of the libraries.
-@@ -110,7 +110,7 @@ set(CORECLR_LIBRARIES
- utilcode
- v3binder
- libraries-native
-- System.Globalization.Native-Static
-+ System.Globalization.Native-static
- interop
- )
-
-@@ -162,7 +162,12 @@ if(FEATURE_EVENT_TRACE)
- endif(CLR_CMAKE_HOST_UNIX)
- endif(FEATURE_EVENT_TRACE)
-
--target_link_libraries(coreclr ${CORECLR_LIBRARIES})
-+if(FEATURE_MERGE_JIT_AND_ENGINE)
-+ set(CLRJIT_STATIC clrjit_static)
-+endif(FEATURE_MERGE_JIT_AND_ENGINE)
-+
-+target_sources(coreclr PUBLIC $<TARGET_OBJECTS:cee_wks_core>)
-+target_link_libraries(coreclr PUBLIC ${CORECLR_LIBRARIES} ${CLRJIT_STATIC} cee_wks)
-
- # Create the runtime module index header file containing the coreclr build id
- # for xplat and the timestamp/size on Windows.
-diff --git a/src/coreclr/src/dlls/mscorrc/CMakeLists.txt b/src/coreclr/src/dlls/mscorrc/CMakeLists.txt
-index 08cf27aaf80..e114ec19cea 100644
---- a/src/coreclr/src/dlls/mscorrc/CMakeLists.txt
-+++ b/src/coreclr/src/dlls/mscorrc/CMakeLists.txt
-@@ -19,7 +19,9 @@ if(CLR_CMAKE_HOST_WIN32)
- else()
- build_resources(${CMAKE_CURRENT_SOURCE_DIR}/include.rc mscorrc TARGET_CPP_FILE)
-
-- add_library_clr(mscorrc STATIC
-+ add_library_clr(mscorrc_obj OBJECT
- ${TARGET_CPP_FILE}
- )
-+ add_library(mscorrc INTERFACE)
-+ target_sources(mscorrc INTERFACE $<TARGET_OBJECTS:mscorrc_obj>)
- endif(CLR_CMAKE_HOST_WIN32)
-diff --git a/src/coreclr/src/gcinfo/CMakeLists.txt b/src/coreclr/src/gcinfo/CMakeLists.txt
-index b0b67462562..50a1722a8ea 100644
---- a/src/coreclr/src/gcinfo/CMakeLists.txt
-+++ b/src/coreclr/src/gcinfo/CMakeLists.txt
-@@ -16,11 +16,14 @@ endif(CLR_CMAKE_TARGET_ARCH_I386)
-
- convert_to_absolute_path(GCINFO_SOURCES ${GCINFO_SOURCES})
-
--add_library_clr(gcinfo
-- STATIC
-+add_library_clr(gcinfo_obj
-+ OBJECT
- ${GCINFO_SOURCES}
- )
-
-+add_library(gcinfo INTERFACE)
-+target_sources(gcinfo INTERFACE $<TARGET_OBJECTS:gcinfo_obj>)
-+
- add_library_clr(gcinfo_crossgen
- STATIC
- ${GCINFO_SOURCES}
-diff --git a/src/coreclr/src/inc/CMakeLists.txt b/src/coreclr/src/inc/CMakeLists.txt
-index 60fad88e77d..4f75d3a882d 100644
---- a/src/coreclr/src/inc/CMakeLists.txt
-+++ b/src/coreclr/src/inc/CMakeLists.txt
-@@ -58,7 +58,9 @@ if(FEATURE_JIT_PITCHING)
- endif(FEATURE_JIT_PITCHING)
-
- # Compile *_i.cpp to lib
--_add_library(corguids ${CORGUIDS_SOURCES})
-+_add_library(corguids_obj OBJECT ${CORGUIDS_SOURCES})
-+add_library(corguids INTERFACE)
-+target_sources(corguids INTERFACE $<TARGET_OBJECTS:corguids_obj>)
-
- # Binplace the inc files for packaging later.
-
-@@ -75,4 +77,3 @@ _install (FILES cfi.h
- gcinfoencoder.h
- gcinfotypes.h
- DESTINATION inc)
--_install (TARGETS corguids DESTINATION lib)
-diff --git a/src/coreclr/src/interop/CMakeLists.txt b/src/coreclr/src/interop/CMakeLists.txt
-index d7eaa1b04ae..3924b4fdbb4 100644
---- a/src/coreclr/src/interop/CMakeLists.txt
-+++ b/src/coreclr/src/interop/CMakeLists.txt
-@@ -30,7 +30,10 @@ endif(WIN32)
-
- convert_to_absolute_path(INTEROP_SOURCES ${INTEROP_SOURCES})
-
--add_library_clr(interop
-- STATIC
-+add_library_clr(interop_obj
-+ OBJECT
- ${INTEROP_SOURCES}
- )
-+
-+add_library(interop INTERFACE)
-+target_sources(interop INTERFACE $<TARGET_OBJECTS:interop_obj>)
-diff --git a/src/coreclr/src/jit/dll/CMakeLists.txt b/src/coreclr/src/jit/dll/CMakeLists.txt
-index ec7cddc78ed..01bdbf5a731 100644
---- a/src/coreclr/src/jit/dll/CMakeLists.txt
-+++ b/src/coreclr/src/jit/dll/CMakeLists.txt
-@@ -2,17 +2,17 @@ project(ClrJit)
-
- set_source_files_properties(${JIT_EXPORTS_FILE} PROPERTIES GENERATED TRUE)
-
-+add_library_clr(clrjit_obj
-+ OBJECT
-+ ${JIT_CORE_SOURCES}
-+ ${JIT_ARCH_SOURCES}
-+)
-+
- if(CLR_CMAKE_HOST_UNIX)
-- add_library_clr(clrjit_static
-- STATIC
-- ${SHARED_LIB_SOURCES}
-- ${JIT_ARCH_SOURCES}
-- )
-- add_dependencies(clrjit_static coreclrpal gcinfo)
--else()
-- add_library_clr(clrjit_static
-- ${SHARED_LIB_SOURCES}
-- ${JIT_ARCH_SOURCES}
-- )
-+ add_dependencies(clrjit_obj coreclrpal gcinfo)
- endif(CLR_CMAKE_HOST_UNIX)
--target_precompile_header(TARGET clrjit_static HEADER jitpch.h ADDITIONAL_INCLUDE_DIRECTORIES ${JIT_SOURCE_DIR})
-+
-+target_precompile_header(TARGET clrjit_obj HEADER jitpch.h ADDITIONAL_INCLUDE_DIRECTORIES ${JIT_SOURCE_DIR})
-+
-+add_library(clrjit_static INTERFACE)
-+target_sources(clrjit_static INTERFACE $<TARGET_OBJECTS:clrjit_obj>)
-diff --git a/src/coreclr/src/md/ceefilegen/CMakeLists.txt b/src/coreclr/src/md/ceefilegen/CMakeLists.txt
-index 90749c806b2..fd0f8424d97 100644
---- a/src/coreclr/src/md/ceefilegen/CMakeLists.txt
-+++ b/src/coreclr/src/md/ceefilegen/CMakeLists.txt
-@@ -25,8 +25,11 @@ if (CLR_CMAKE_TARGET_WIN32)
- list(APPEND CEEFILEGEN_SOURCES ${CEEFILEGEN_HEADERS})
- endif (CLR_CMAKE_TARGET_WIN32)
-
--add_library_clr(ceefgen
-- STATIC
-+add_library_clr(ceefgen_obj
-+ OBJECT
- ${CEEFILEGEN_SOURCES}
- )
--target_precompile_header(TARGET ceefgen HEADER stdafx.h)
-+target_precompile_header(TARGET ceefgen_obj HEADER stdafx.h)
-+
-+add_library(ceefgen INTERFACE)
-+target_sources(ceefgen INTERFACE $<TARGET_OBJECTS:ceefgen_obj>)
-diff --git a/src/coreclr/src/md/compiler/CMakeLists.txt b/src/coreclr/src/md/compiler/CMakeLists.txt
-index 3b916cdc9fe..f9f80db2500 100644
---- a/src/coreclr/src/md/compiler/CMakeLists.txt
-+++ b/src/coreclr/src/md/compiler/CMakeLists.txt
-@@ -58,9 +58,11 @@ add_library_clr(mdcompiler_dac ${MDCOMPILER_SOURCES})
- set_target_properties(mdcompiler_dac PROPERTIES DAC_COMPONENT TRUE)
- target_precompile_header(TARGET mdcompiler_dac HEADER stdafx.h)
-
--add_library_clr(mdcompiler_wks ${MDCOMPILER_SOURCES})
--target_compile_definitions(mdcompiler_wks PRIVATE FEATURE_METADATA_EMIT_ALL)
--target_precompile_header(TARGET mdcompiler_wks HEADER stdafx.h)
-+add_library_clr(mdcompiler_wks_obj OBJECT ${MDCOMPILER_SOURCES})
-+target_compile_definitions(mdcompiler_wks_obj PRIVATE FEATURE_METADATA_EMIT_ALL)
-+target_precompile_header(TARGET mdcompiler_wks_obj HEADER stdafx.h)
-+add_library(mdcompiler_wks INTERFACE)
-+target_sources(mdcompiler_wks INTERFACE $<TARGET_OBJECTS:mdcompiler_wks_obj>)
-
- add_library_clr(mdcompiler-dbi ${MDCOMPILER_SOURCES})
- set_target_properties(mdcompiler-dbi PROPERTIES DBI_COMPONENT TRUE)
-diff --git a/src/coreclr/src/md/enc/CMakeLists.txt b/src/coreclr/src/md/enc/CMakeLists.txt
-index 7220736b9ca..82af8434296 100644
---- a/src/coreclr/src/md/enc/CMakeLists.txt
-+++ b/src/coreclr/src/md/enc/CMakeLists.txt
-@@ -48,9 +48,11 @@ add_library_clr(mdruntimerw_dac ${MDRUNTIMERW_SOURCES})
- set_target_properties(mdruntimerw_dac PROPERTIES DAC_COMPONENT TRUE)
- target_precompile_header(TARGET mdruntimerw_dac HEADER stdafx.h)
-
--add_library_clr(mdruntimerw_wks ${MDRUNTIMERW_SOURCES})
--target_compile_definitions(mdruntimerw_wks PRIVATE FEATURE_METADATA_EMIT_ALL)
--target_precompile_header(TARGET mdruntimerw_wks HEADER stdafx.h)
-+add_library_clr(mdruntimerw_wks_obj OBJECT ${MDRUNTIMERW_SOURCES})
-+target_compile_definitions(mdruntimerw_wks_obj PRIVATE FEATURE_METADATA_EMIT_ALL)
-+target_precompile_header(TARGET mdruntimerw_wks_obj HEADER stdafx.h)
-+add_library(mdruntimerw_wks INTERFACE)
-+target_sources(mdruntimerw_wks INTERFACE $<TARGET_OBJECTS:mdruntimerw_wks_obj>)
-
- add_library_clr(mdruntimerw-dbi ${MDRUNTIMERW_SOURCES})
- set_target_properties(mdruntimerw-dbi PROPERTIES DBI_COMPONENT TRUE)
-diff --git a/src/coreclr/src/md/hotdata/CMakeLists.txt b/src/coreclr/src/md/hotdata/CMakeLists.txt
-index c6168d2a4b0..88475cb72f4 100644
---- a/src/coreclr/src/md/hotdata/CMakeLists.txt
-+++ b/src/coreclr/src/md/hotdata/CMakeLists.txt
-@@ -33,8 +33,10 @@ add_library_clr(mdhotdata_dac ${MDHOTDATA_SOURCES})
- set_target_properties(mdhotdata_dac PROPERTIES DAC_COMPONENT TRUE)
- target_precompile_header(TARGET mdhotdata_dac HEADER external.h)
-
--add_library_clr(mdhotdata_full ${MDHOTDATA_SOURCES})
--target_precompile_header(TARGET mdhotdata_full HEADER external.h)
-+add_library_clr(mdhotdata_full_obj OBJECT ${MDHOTDATA_SOURCES})
-+target_precompile_header(TARGET mdhotdata_full_obj HEADER external.h)
-+add_library(mdhotdata_full INTERFACE)
-+target_sources(mdhotdata_full INTERFACE $<TARGET_OBJECTS:mdhotdata_full_obj>)
-
- add_library_clr(mdhotdata_crossgen ${MDHOTDATA_SOURCES})
- set_target_properties(mdhotdata_crossgen PROPERTIES CROSSGEN_COMPONENT TRUE)
-diff --git a/src/coreclr/src/md/runtime/CMakeLists.txt b/src/coreclr/src/md/runtime/CMakeLists.txt
-index 6dc193e14a7..7e0e83f1114 100644
---- a/src/coreclr/src/md/runtime/CMakeLists.txt
-+++ b/src/coreclr/src/md/runtime/CMakeLists.txt
-@@ -47,9 +47,11 @@ add_library_clr(mdruntime_dac ${MDRUNTIME_SOURCES})
- set_target_properties(mdruntime_dac PROPERTIES DAC_COMPONENT TRUE)
- target_precompile_header(TARGET mdruntime_dac HEADER stdafx.h)
-
--add_library_clr(mdruntime_wks ${MDRUNTIME_SOURCES})
--target_compile_definitions(mdruntime_wks PRIVATE FEATURE_METADATA_EMIT_ALL)
--target_precompile_header(TARGET mdruntime_wks HEADER stdafx.h)
-+add_library_clr(mdruntime_wks_obj OBJECT ${MDRUNTIME_SOURCES})
-+target_compile_definitions(mdruntime_wks_obj PRIVATE FEATURE_METADATA_EMIT_ALL)
-+target_precompile_header(TARGET mdruntime_wks_obj HEADER stdafx.h)
-+add_library(mdruntime_wks INTERFACE)
-+target_sources(mdruntime_wks INTERFACE $<TARGET_OBJECTS:mdruntime_wks_obj>)
-
- add_library_clr(mdruntime-dbi ${MDRUNTIME_SOURCES})
- set_target_properties(mdruntime-dbi PROPERTIES DBI_COMPONENT TRUE)
-diff --git a/src/coreclr/src/pal/src/CMakeLists.txt b/src/coreclr/src/pal/src/CMakeLists.txt
-index e7c1629d5b2..7818deef050 100644
---- a/src/coreclr/src/pal/src/CMakeLists.txt
-+++ b/src/coreclr/src/pal/src/CMakeLists.txt
-@@ -256,10 +256,12 @@ add_library(coreclrpal
- # > warning for library: libtracepointprovider.a the table of contents is empty (no object file members in the library define global symbols)
- #
- if(CLR_CMAKE_TARGET_LINUX)
-- add_library(tracepointprovider
-- STATIC
-+ add_library(tracepointprovider_obj
-+ OBJECT
- misc/tracepointprovider.cpp
- )
-+ add_library(tracepointprovider INTERFACE)
-+ target_sources(tracepointprovider INTERFACE $<TARGET_OBJECTS:tracepointprovider_obj>)
- endif(CLR_CMAKE_TARGET_LINUX)
-
- if(CLR_CMAKE_TARGET_OSX)
-diff --git a/src/coreclr/src/pal/src/eventprovider/dummyprovider/CMakeLists.txt b/src/coreclr/src/pal/src/eventprovider/dummyprovider/CMakeLists.txt
-index 39b9826d1ab..8e6968cf783 100644
---- a/src/coreclr/src/pal/src/eventprovider/dummyprovider/CMakeLists.txt
-+++ b/src/coreclr/src/pal/src/eventprovider/dummyprovider/CMakeLists.txt
-@@ -1,8 +1,8 @@
--include(FindPython)
-+include(FindPythonInterp)
-
- set (GENERATE_SCRIPT ${CLR_DIR}/src/scripts/genDummyProvider.py)
-
--set(GENERATE_COMMAND ${Python_EXECUTABLE} ${GENERATE_SCRIPT} --man ${EVENT_MANIFEST} --intermediate ${CMAKE_CURRENT_BINARY_DIR})
-+set(GENERATE_COMMAND ${PYTHON_EXECUTABLE} ${GENERATE_SCRIPT} --man ${EVENT_MANIFEST} --intermediate ${CMAKE_CURRENT_BINARY_DIR})
-
- execute_process(
- COMMAND ${GENERATE_COMMAND} --dry-run
-diff --git a/src/coreclr/src/pal/src/eventprovider/lttngprovider/CMakeLists.txt b/src/coreclr/src/pal/src/eventprovider/lttngprovider/CMakeLists.txt
-index 234dea19b75..d55dab3557f 100644
---- a/src/coreclr/src/pal/src/eventprovider/lttngprovider/CMakeLists.txt
-+++ b/src/coreclr/src/pal/src/eventprovider/lttngprovider/CMakeLists.txt
-@@ -1,7 +1,7 @@
--include(FindPython)
-+include(FindPythonInterp)
- set (GENERATE_SCRIPT ${CLR_DIR}/src/scripts/genLttngProvider.py)
-
--set(GENERATE_COMMAND ${Python_EXECUTABLE} ${GENERATE_SCRIPT} --man ${EVENT_MANIFEST} --intermediate ${CMAKE_CURRENT_BINARY_DIR})
-+set(GENERATE_COMMAND ${PYTHON_EXECUTABLE} ${GENERATE_SCRIPT} --man ${EVENT_MANIFEST} --intermediate ${CMAKE_CURRENT_BINARY_DIR})
-
- execute_process(
- COMMAND ${GENERATE_COMMAND} --dry-run
-diff --git a/src/coreclr/src/pal/tests/palsuite/eventprovider/CMakeLists.txt b/src/coreclr/src/pal/tests/palsuite/eventprovider/CMakeLists.txt
-index 000ee2d2fb0..845fae656be 100644
---- a/src/coreclr/src/pal/tests/palsuite/eventprovider/CMakeLists.txt
-+++ b/src/coreclr/src/pal/tests/palsuite/eventprovider/CMakeLists.txt
-@@ -5,10 +5,10 @@ set(SOURCES
- set(EVENT_MANIFEST ${VM_DIR}/ClrEtwAll.man)
- set(TEST_GENERATOR ${CLR_DIR}/src/scripts/genEventingTests.py)
-
--include(FindPython)
-+include(FindPythonInterp)
-
- add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/clralltestevents.cpp
-- COMMAND ${Python_EXECUTABLE} ${TEST_GENERATOR} --testdir "${CMAKE_CURRENT_BINARY_DIR}" --man "${EVENT_MANIFEST}"
-+ COMMAND ${PYTHON_EXECUTABLE} ${TEST_GENERATOR} --testdir "${CMAKE_CURRENT_BINARY_DIR}" --man "${EVENT_MANIFEST}"
- DEPENDS ${EVENT_MANIFEST} ${TEST_GENERATOR}
- COMMENT "Updating clralltestevents.cpp"
- )
-diff --git a/src/coreclr/src/unwinder/CMakeLists.txt b/src/coreclr/src/unwinder/CMakeLists.txt
-index 4421ea9f6f6..41a0219bbf7 100644
---- a/src/coreclr/src/unwinder/CMakeLists.txt
-+++ b/src/coreclr/src/unwinder/CMakeLists.txt
-@@ -20,8 +20,10 @@ list(APPEND UNWINDER_SOURCES
- convert_to_absolute_path(UNWINDER_SOURCES ${UNWINDER_SOURCES})
-
- if(CLR_CMAKE_HOST_UNIX)
-- add_library_clr(unwinder_wks ${UNWINDER_SOURCES})
-- add_dependencies(unwinder_wks eventing_headers)
-+ add_library_clr(unwinder_wks_obj OBJECT ${UNWINDER_SOURCES})
-+ add_dependencies(unwinder_wks_obj eventing_headers)
-+ add_library(unwinder_wks INTERFACE)
-+ target_sources(unwinder_wks INTERFACE $<TARGET_OBJECTS:unwinder_wks_obj>)
- endif(CLR_CMAKE_HOST_UNIX)
-
- add_library_clr(unwinder_dac ${UNWINDER_SOURCES})
-diff --git a/src/coreclr/src/utilcode/CMakeLists.txt b/src/coreclr/src/utilcode/CMakeLists.txt
-index aa28b2db603..f8082fc9076 100644
---- a/src/coreclr/src/utilcode/CMakeLists.txt
-+++ b/src/coreclr/src/utilcode/CMakeLists.txt
-@@ -98,7 +98,9 @@ convert_to_absolute_path(UTILCODE_CROSSGEN_SOURCES ${UTILCODE_CROSSGEN_SOURCES})
- convert_to_absolute_path(UTILCODE_STATICNOHOST_SOURCES ${UTILCODE_STATICNOHOST_SOURCES})
-
- add_library_clr(utilcode_dac STATIC ${UTILCODE_DAC_SOURCES})
--add_library_clr(utilcode STATIC ${UTILCODE_SOURCES})
-+add_library_clr(utilcode_obj OBJECT ${UTILCODE_SOURCES})
-+add_library(utilcode INTERFACE)
-+target_sources(utilcode INTERFACE $<TARGET_OBJECTS:utilcode_obj>)
- add_library_clr(utilcodestaticnohost STATIC ${UTILCODE_STATICNOHOST_SOURCES})
- add_library_clr(utilcode_crossgen STATIC ${UTILCODE_CROSSGEN_SOURCES})
-
-@@ -106,9 +108,9 @@ if(CLR_CMAKE_HOST_UNIX)
- target_link_libraries(utilcodestaticnohost nativeresourcestring)
- target_link_libraries(utilcode_crossgen nativeresourcestring)
- target_link_libraries(utilcode_dac nativeresourcestring)
-- target_link_libraries(utilcode nativeresourcestring)
-+ target_link_libraries(utilcode INTERFACE nativeresourcestring)
- add_dependencies(utilcode_dac coreclrpal)
-- add_dependencies(utilcode coreclrpal)
-+ add_dependencies(utilcode_obj coreclrpal)
- endif(CLR_CMAKE_HOST_UNIX)
-
-
-@@ -121,10 +123,10 @@ set_target_properties(utilcode_crossgen PROPERTIES CROSSGEN_COMPONENT TRUE)
- target_compile_definitions(utilcode_dac PRIVATE SELF_NO_HOST)
- target_compile_definitions(utilcodestaticnohost PRIVATE SELF_NO_HOST)
- add_dependencies(utilcode_dac ${UTILCODE_DEPENDENCIES})
--add_dependencies(utilcode ${UTILCODE_DEPENDENCIES})
-+add_dependencies(utilcode_obj ${UTILCODE_DEPENDENCIES})
- add_dependencies(utilcode_crossgen ${UTILCODE_DEPENDENCIES})
- add_dependencies(utilcodestaticnohost ${UTILCODE_DEPENDENCIES})
- target_precompile_header(TARGET utilcode_dac HEADER stdafx.h)
--target_precompile_header(TARGET utilcode HEADER stdafx.h)
-+target_precompile_header(TARGET utilcode_obj HEADER stdafx.h)
- target_precompile_header(TARGET utilcode_crossgen HEADER stdafx.h)
- target_precompile_header(TARGET utilcodestaticnohost HEADER stdafx.h)
-diff --git a/src/coreclr/src/vm/CMakeLists.txt b/src/coreclr/src/vm/CMakeLists.txt
-index 3e37cebdc10..2b20d7d910a 100644
---- a/src/coreclr/src/vm/CMakeLists.txt
-+++ b/src/coreclr/src/vm/CMakeLists.txt
-@@ -923,7 +923,7 @@ list(APPEND VM_HEADERS_DAC
-
- if (CLR_CMAKE_TARGET_WIN32)
- list(APPEND VM_SOURCES_WKS ${VM_HEADERS_WKS})
-- list(APPEND VM_SOURCES_WKS_ARCH_ASM ${VM_HEADERS_WKS_ARCH_ASM})
-+ list(APPEND VM_SOURCES_WKS ${VM_HEADERS_WKS_ARCH_ASM})
- list(APPEND VM_SOURCES_DAC ${VM_HEADERS_DAC})
- endif(CLR_CMAKE_TARGET_WIN32)
-
-diff --git a/src/coreclr/src/vm/eventing/CMakeLists.txt b/src/coreclr/src/vm/eventing/CMakeLists.txt
-index 98dd158df54..e2bf024fc59 100644
---- a/src/coreclr/src/vm/eventing/CMakeLists.txt
-+++ b/src/coreclr/src/vm/eventing/CMakeLists.txt
-@@ -8,12 +8,13 @@ else()
- set(NEED_XPLAT_HEADER ON)
- endif()
-
--include(FindPython)
-+include(FindPythonInterp)
-
- set (EventingHeaders
- ${GENERATED_INCLUDE_DIR}/etmdummy.h
- ${GENERATED_INCLUDE_DIR}/clretwallmain.h
- ${GENERATED_INCLUDE_DIR}/clreventpipewriteevents.h
-+ ${GENERATED_INCLUDE_DIR}/clrproviders.h
- )
-
- if (NEED_XPLAT_HEADER)
-@@ -24,7 +25,7 @@ endif()
- set(GENEVENTING_SCRIPT ${CLR_DIR}/src/scripts/genEventing.py)
-
- add_custom_target(eventing_headers
-- ${Python_EXECUTABLE} ${GENEVENTING_SCRIPT} --man ${EVENT_MANIFEST} --inc ${GENERATED_INCLUDE_DIR} --dummy ${GENERATED_INCLUDE_DIR}/etmdummy.h ${NONEXTERN_ARG} ${NOXPLATHEADER_ARG}
-+ ${PYTHON_EXECUTABLE} ${GENEVENTING_SCRIPT} --man ${EVENT_MANIFEST} --inc ${GENERATED_INCLUDE_DIR} --dummy ${GENERATED_INCLUDE_DIR}/etmdummy.h ${NONEXTERN_ARG} ${NOXPLATHEADER_ARG}
- DEPENDS ${EVENT_MANIFEST} ${GENEVENTING_SCRIPT}
- VERBATIM
- )
-diff --git a/src/coreclr/src/vm/eventing/EtwProvider/CMakeLists.txt b/src/coreclr/src/vm/eventing/EtwProvider/CMakeLists.txt
-index 34a067e1ec5..4c7df2fbb3c 100644
---- a/src/coreclr/src/vm/eventing/EtwProvider/CMakeLists.txt
-+++ b/src/coreclr/src/vm/eventing/EtwProvider/CMakeLists.txt
-@@ -1,4 +1,4 @@
--include(FindPython)
-+include(FindPythonInterp)
-
- set(ETW_PROVIDER_SCRIPT ${CLR_DIR}/src/scripts/genEtwProvider.py)
-
-@@ -14,5 +14,5 @@ set (ETW_PROVIDER_OUTPUTS
- set_source_files_properties(${ETW_PROVIDER_OUTPUTS} PROPERTIES GENERATED TRUE)
-
- add_custom_target(eventprovider
-- ${Python_EXECUTABLE} ${ETW_PROVIDER_SCRIPT} --man ${EVENT_MANIFEST} --exc ${EVENT_EXCLUSIONS} --intermediate ${GENERATED_INCLUDE_DIR}
-+ ${PYTHON_EXECUTABLE} ${ETW_PROVIDER_SCRIPT} --man ${EVENT_MANIFEST} --exc ${EVENT_EXCLUSIONS} --intermediate ${GENERATED_INCLUDE_DIR}
- DEPENDS ${EVENT_MANIFEST} ${EVENT_EXCLUSIONS} ${ETW_PROVIDER_SCRIPT})
-diff --git a/src/coreclr/src/vm/eventing/eventpipe/CMakeLists.txt b/src/coreclr/src/vm/eventing/eventpipe/CMakeLists.txt
-index 00b3f6f386f..00d79737e54 100644
---- a/src/coreclr/src/vm/eventing/eventpipe/CMakeLists.txt
-+++ b/src/coreclr/src/vm/eventing/eventpipe/CMakeLists.txt
-@@ -1,9 +1,9 @@
--include(FindPython)
-+include(FindPythonInterp)
-
- set(CMAKE_INCLUDE_CURRENT_DIR ON)
-
- set(GENERATE_SCRIPT ${CLR_DIR}/src/scripts/genEventPipe.py)
--set(GENERATE_COMMAND ${Python_EXECUTABLE} ${GENERATE_SCRIPT} --man ${EVENT_MANIFEST} --exc ${EVENT_EXCLUSIONS} --intermediate ${CMAKE_CURRENT_BINARY_DIR} ${NONEXTERN_ARG})
-+set(GENERATE_COMMAND ${PYTHON_EXECUTABLE} ${GENERATE_SCRIPT} --man ${EVENT_MANIFEST} --exc ${EVENT_EXCLUSIONS} --intermediate ${CMAKE_CURRENT_BINARY_DIR} ${NONEXTERN_ARG})
-
- execute_process(
- COMMAND ${GENERATE_COMMAND} --dry-run
-@@ -28,10 +28,8 @@ add_custom_command(OUTPUT ${EVENTPIPE_SOURCES}
- COMMAND ${GENERATE_COMMAND}
- DEPENDS ${GENERATE_SCRIPT} ${EVENT_MANIFEST} ${EVENT_EXCLUSIONS})
-
--add_library_clr(eventpipe STATIC ${EVENTPIPE_SOURCES})
--set_target_properties(eventpipe PROPERTIES LINKER_LANGUAGE CXX)
--add_dependencies(eventpipe eventing_headers)
--
--if (NOT CLR_CMAKE_TARGET_WIN32)
-- _install(TARGETS eventpipe DESTINATION lib)
--endif()
-+add_library_clr(eventpipe_obj OBJECT ${EVENTPIPE_SOURCES})
-+set_target_properties(eventpipe_obj PROPERTIES LINKER_LANGUAGE CXX)
-+add_dependencies(eventpipe_obj eventing_headers)
-+add_library(eventpipe INTERFACE)
-+target_sources(eventpipe INTERFACE $<TARGET_OBJECTS:eventpipe_obj>)
-diff --git a/src/coreclr/src/vm/wks/CMakeLists.txt b/src/coreclr/src/vm/wks/CMakeLists.txt
-index 1e94b575fd6..5d355f6adcb 100644
---- a/src/coreclr/src/vm/wks/CMakeLists.txt
-+++ b/src/coreclr/src/vm/wks/CMakeLists.txt
-@@ -7,13 +7,19 @@ if (CLR_CMAKE_TARGET_WIN32)
-
- endif (CLR_CMAKE_TARGET_WIN32)
-
--add_library_clr(cee_wks ${VM_SOURCES_WKS} ${VM_SOURCES_WKS_ARCH_ASM})
--target_precompile_header(TARGET cee_wks HEADER common.h)
-+add_library_clr(cee_wks_core OBJECT ${VM_SOURCES_WKS} ${VM_SOURCES_WKS_ARCH_ASM})
-+add_library_clr(cee_wks_obj OBJECT ${VM_SOURCES_WKS_SPECIAL})
-+
-+target_precompile_header(TARGET cee_wks_core HEADER common.h)
-+target_precompile_header(TARGET cee_wks_obj HEADER common.h)
-+
- if (MSVC)
- # mscorlib.cpp does not compile with precompiled header file
- set_source_files_properties(../mscorlib.cpp PROPERTIES COMPILE_FLAGS "/Y-")
- endif()
--add_dependencies(cee_wks eventing_headers)
-+
-+add_dependencies(cee_wks_core eventing_headers)
-+add_dependencies(cee_wks_obj eventing_headers)
-
- if (CLR_CMAKE_TARGET_WIN32)
-
-@@ -45,8 +51,16 @@ if (CLR_CMAKE_TARGET_WIN32)
- DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/AsmConstants.inc
- )
-
-- add_dependencies(cee_wks asmconstants_inc)
-+ add_dependencies(cee_wks_core asmconstants_inc)
-+ add_dependencies(cee_wks_obj asmconstants_inc)
-
- endif(NOT CLR_CMAKE_HOST_ARCH_ARM AND NOT CLR_CMAKE_HOST_ARCH_ARM64)
-
- endif (CLR_CMAKE_TARGET_WIN32)
-+
-+add_custom_target(preprocessd_asm DEPENDS ${VM_WKS_ARCH_ASM_OBJECTS})
-+add_dependencies(cee_wks_core preprocessd_asm)
-+add_dependencies(cee_wks_obj preprocessd_asm)
-+
-+add_library(cee_wks INTERFACE)
-+target_sources(cee_wks INTERFACE $<TARGET_OBJECTS:cee_wks_obj> ${VM_WKS_ARCH_ASM_OBJECTS})
-diff --git a/src/coreclr/tests/CMakeLists.txt b/src/coreclr/tests/CMakeLists.txt
-index 53dbb85a58b..c5417cba7d0 100644
---- a/src/coreclr/tests/CMakeLists.txt
-+++ b/src/coreclr/tests/CMakeLists.txt
-@@ -1,4 +1,4 @@
--cmake_minimum_required(VERSION 3.14.2)
-+cmake_minimum_required(VERSION 3.6.2)
-
- cmake_policy(SET CMP0042 NEW)
- project(Tests)
-diff --git a/src/installer/corehost/CMakeLists.txt b/src/installer/corehost/CMakeLists.txt
-index 43a59a1a695..dff0496cdd8 100644
---- a/src/installer/corehost/CMakeLists.txt
-+++ b/src/installer/corehost/CMakeLists.txt
-@@ -1,4 +1,4 @@
--cmake_minimum_required(VERSION 3.14.2)
-+cmake_minimum_required(VERSION 3.6.2)
-
- project(corehost)
-
-diff --git a/src/installer/corehost/cli/exe.cmake b/src/installer/corehost/cli/exe.cmake
-index de8cd49396b..732faf97ff9 100644
---- a/src/installer/corehost/cli/exe.cmake
-+++ b/src/installer/corehost/cli/exe.cmake
-@@ -5,7 +5,6 @@
- project (${DOTNET_PROJECT_NAME})
-
- cmake_policy(SET CMP0011 NEW)
--cmake_policy(SET CMP0083 NEW)
-
- include(${CMAKE_CURRENT_LIST_DIR}/common.cmake)
-
-diff --git a/src/installer/corehost/cli/test/mockhostfxr/CMakeLists.txt b/src/installer/corehost/cli/test/mockhostfxr/CMakeLists.txt
-index bcf6a051229..8572a6318ec 100644
---- a/src/installer/corehost/cli/test/mockhostfxr/CMakeLists.txt
-+++ b/src/installer/corehost/cli/test/mockhostfxr/CMakeLists.txt
-@@ -2,7 +2,6 @@
- # The .NET Foundation licenses this file to you under the MIT license.
- # See the LICENSE file in the project root for more information.
-
--cmake_minimum_required (VERSION 2.6)
- project(mockhostfxr_2_2)
-
- set(DOTNET_PROJECT_NAME "mockhostfxr_2_2")
-diff --git a/src/libraries/Native/Unix/CMakeLists.txt b/src/libraries/Native/Unix/CMakeLists.txt
-index f14ada69fee..cb174fe5013 100644
---- a/src/libraries/Native/Unix/CMakeLists.txt
-+++ b/src/libraries/Native/Unix/CMakeLists.txt
-@@ -1,19 +1,14 @@
--cmake_minimum_required(VERSION 3.14.2)
-+cmake_minimum_required(VERSION 3.6.2)
-+if(CLR_CMAKE_TARGET_IOS OR CLR_CMAKE_TARGET_TVOS)
-+ # CMake 3.14.5 contains bug fixes for iOS
-+ cmake_minimum_required(VERSION 3.14.5)
-+ endif()
- cmake_policy(SET CMP0042 NEW)
-
- project(CoreFX C)
-
- include(${CLR_ENG_NATIVE_DIR}/configuretools.cmake)
-
--if(CLR_CMAKE_TARGET_IOS OR CLR_CMAKE_TARGET_TVOS)
-- # CMake 3.14.5 contains bug fixes for iOS
-- cmake_minimum_required(VERSION 3.14.5)
--endif()
--
--if(NOT CLR_CMAKE_TARGET_ARCH_WASM)
-- cmake_policy(SET CMP0083 NEW)
--endif(NOT CLR_CMAKE_TARGET_ARCH_WASM)
--
- set(CMAKE_MACOSX_RPATH ON)
- set(CMAKE_INSTALL_PREFIX $ENV{__CMakeBinDir})
- set(CMAKE_INCLUDE_CURRENT_DIR ON)
-@@ -167,7 +162,8 @@ if(CLR_CMAKE_TARGET_UNIX)
- if(NOT CLR_CMAKE_TARGET_ARCH_WASM AND NOT CLR_CMAKE_TARGET_IOS AND NOT CLR_CMAKE_TARGET_TVOS)
- if(CLR_CMAKE_TARGET_OSX)
- add_definitions(-DTARGET_OSX)
-- add_link_options(-Wl,-bind_at_load)
-+ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-bind_at_load")
-+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-bind_at_load" )
- else()
- add_compile_options($<$<COMPILE_LANGUAGE:ASM>:-Wa,--noexecstack>)
- if(CLR_CMAKE_TARGET_SUNOS)
-@@ -175,7 +171,8 @@ if(CLR_CMAKE_TARGET_UNIX)
- else()
- # -z,now is required for full relro.
- # see https://www.redhat.com/en/blog/hardening-elf-binaries-using-relocation-re...
-- add_link_options(-Wl,--build-id=sha1 -Wl,-z,relro,-z,now)
-+ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--build-id=sha1 -Wl,-z,relro,-z,now")
-+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--build-id=sha1 -Wl,-z,relro,-z,now" )
- endif()
- endif()
- endif()
-diff --git a/src/libraries/Native/Unix/System.Globalization.Native/CMakeLists.txt b/src/libraries/Native/Unix/System.Globalization.Native/CMakeLists.txt
-index bcfc5dd106a..ebcb5a02b3f 100644
---- a/src/libraries/Native/Unix/System.Globalization.Native/CMakeLists.txt
-+++ b/src/libraries/Native/Unix/System.Globalization.Native/CMakeLists.txt
-@@ -79,14 +79,15 @@ if (GEN_SHARED_LIB)
- install_with_stripped_symbols (System.Globalization.Native PROGRAMS .)
- endif()
-
--add_library(System.Globalization.Native-Static
-- STATIC
-+add_library(System.Globalization.Native-obj
-+ OBJECT
- ${NATIVEGLOBALIZATION_SOURCES}
- )
-
--set_target_properties(System.Globalization.Native-Static PROPERTIES OUTPUT_NAME System.Globalization.Native CLEAN_DIRECT_OUTPUT 1)
-+set_target_properties(System.Globalization.Native-obj PROPERTIES OUTPUT_NAME System.Globalization.Native CLEAN_DIRECT_OUTPUT 1)
-
--install (TARGETS System.Globalization.Native-Static DESTINATION .)
-+add_library(System.Globalization.Native-static INTERFACE)
-+target_sources(System.Globalization.Native-static INTERFACE $<TARGET_OBJECTS:System.Globalization.Native-obj>)
-
- if(NOT CLR_CMAKE_TARGET_OSX AND NOT CLR_CMAKE_TARGET_IOS AND NOT CLR_CMAKE_TARGET_TVOS AND NOT CLR_CMAKE_TARGET_ANDROID)
- if (GEN_SHARED_LIB)
diff --git a/runtime-linker-order.patch b/runtime-linker-order.patch
new file mode 100644
index 0000000..6ca413f
--- /dev/null
+++ b/runtime-linker-order.patch
@@ -0,0 +1,20 @@
+diff --git a/src/installer/corehost/cli/apphost/static/CMakeLists.txt b/src/installer/corehost/cli/apphost/static/CMakeLists.txt
+index 85ea6ffe642..e6369f6b9ad 100644
+--- a/src/installer/corehost/cli/apphost/static/CMakeLists.txt
++++ b/src/installer/corehost/cli/apphost/static/CMakeLists.txt
+@@ -204,11 +204,12 @@ target_link_libraries(singlefilehost
+ libhostcommon
+ ${CORECLR_LIBRARIES}
+
++ ${START_WHOLE_ARCHIVE}
++ ${NATIVE_LIBS}
++ ${END_WHOLE_ARCHIVE}
++
+ ${ZLIB_LIBRARIES}
+ ${LIBGSS}
+ ${NATIVE_LIBS_EXTRA}
+
+- ${START_WHOLE_ARCHIVE}
+- ${NATIVE_LIBS}
+- ${END_WHOLE_ARCHIVE}
+ )
commit ccec65f6fac2e9f96e34068fe4f31bf72648e1af
Author: Omair Majid <omajid(a)redhat.com>
Date: Mon Aug 10 11:10:29 2020 -0400
Iniitial update to .NET 5.0
diff --git a/README.md b/README.md
index 816aba3..4d4fb58 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# Overview
-This is the .NET Core 3.1 package for Fedora.
+This is the .NET Core 5.0 package for Fedora.
This package is maintained by the Fedora DotNet SIG (Special Interest
Group). You can find out more about the DotNet SIG at:
@@ -10,7 +10,7 @@ Group). You can find out more about the DotNet SIG at:
- https://lists.fedoraproject.org/archives/list/dotnet-sig@lists.fedoraproj...
Please report any issues [using
-bugzilla](https://bugzilla.redhat.com/enter_bug.cgi?product=Fedora&component=dotnet3.1).
+bugzilla](https://bugzilla.redhat.com/enter_bug.cgi?product=Fedora&component=dotnet5.0).
# Specification
@@ -27,8 +27,8 @@ with one exception. It installs dotnet to `/usr/lib64/dotnet` (aka
2. Checkout the forked repository.
- - `git clone ssh://$USER@pkgs.fedoraproject.org/forks/$USER/rpms/dotnet3.1.git`
- - `cd dotnet3.1`
+ - `git clone ssh://$USER@pkgs.fedoraproject.org/forks/$USER/rpms/dotnet5.0.git`
+ - `cd dotnet5.0`
3. Make your changes. Don't forget to add a changelog.
@@ -71,8 +71,8 @@ with one exception. It installs dotnet to `/usr/lib64/dotnet` (aka
2. Checkout the forked repository.
- - `git clone ssh://$USER@pkgs.fedoraproject.org/forks/$USER/rpms/dotnet3.1.git`
- - `cd dotnet3.1`
+ - `git clone ssh://$USER@pkgs.fedoraproject.org/forks/$USER/rpms/dotnet5.0.git`
+ - `cd dotnet5.0`
3. Build the new upstream source tarball. Update the versions in the
spec file. Add a changelog. This is generally automated by the
diff --git a/build-bootstrap-tarball b/build-bootstrap-tarball
new file mode 100755
index 0000000..d3f3547
--- /dev/null
+++ b/build-bootstrap-tarball
@@ -0,0 +1,50 @@
+#!/bin/bash
+
+set -euo pipefail
+
+set -x
+
+sdk_version=3.1.105
+
+arch=$(uname -m)
+if [[ $arch == "x86_64" ]]; then
+ arch=x64
+elif [[ $arch == "aarch64" ]]; then
+ arch=arm64
+fi
+
+if rpm -qa | grep libunwind; then
+ echo "error: libunwind is installed. Not a good idea for bootstrapping."
+ exit 1
+fi
+if rpm -qa | grep dotnet ; then
+ echo "error: dotnet is installed. Not a good idea for bootstrapping."
+ exit 1
+fi
+if [ -d /usr/lib/dotnet ] || [ -d /usr/lib64/dotnet ] || [ -d /usr/share/dotnet ] ; then
+ echo "error: one of /usr/lib/dotnet /usr/lib64/dotnet or /usr/share/dotnet/ exists. Not a good idea for bootstrapping."
+ exit 1
+fi
+if command -v dotnet ; then
+ echo "error: dotnet is in $PATH. Not a good idea for bootstrapping."
+ exit 1
+fi
+
+if [ ! -d dotnet-source-build-tarball ]; then
+ if [ ! -d source-build ]; then
+ git clone https://github.com/dotnet/source-build
+ fi
+ pushd source-build
+ sed -i -e 's|cmakeargs -DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=TRUE||' repos/coreclr.common.props
+ git clean -xdf
+ ./build-source-tarball.sh ../dotnet-source-build-tarball/ -- -p:DownloadSourceBuildReferencePackagesTimeoutSeconds=100000
+ popd
+fi
+
+rm -rf dotnet-v${sdk_version}-SDK dotnet-v${sdk_version}-SDK.tar.gz
+
+cp -a dotnet-source-build-tarball dotnet-v${sdk_version}-SDK
+cp -a source-build/artifacts/$arch/Release/Private.SourceBuilt.Artifacts.*.tar.gz dotnet-v${sdk_version}-SDK/packages/archive/Private.SourceBuilt.Artifacts.*.tar.gz
+
+tar czf dotnet-v${sdk_version}-SDK-$arch.tar.gz dotnet-v${sdk_version}-SDK
+
diff --git a/build-coreclr-clang10.patch b/build-coreclr-clang10.patch
deleted file mode 100644
index 3b13cb1..0000000
--- a/build-coreclr-clang10.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-diff --git a/configurecompiler.cmake b/configurecompiler.cmake
-index d769e82f57..4936c8b00d 100644
---- a/configurecompiler.cmake
-+++ b/configurecompiler.cmake
-@@ -474,6 +474,7 @@ if (CLR_CMAKE_PLATFORM_UNIX)
- add_compile_options(-Wno-unused-variable)
- add_compile_options(-Wno-unused-value)
- add_compile_options(-Wno-unused-function)
-+ add_compile_options(-Wno-error=misleading-indentation)
-
- #These seem to indicate real issues
- add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-Wno-invalid-offsetof>)
-diff --git a/src/inc/slist.h b/src/inc/slist.h
-index f05d763dc6..abebe04d47 100644
---- a/src/inc/slist.h
-+++ b/src/inc/slist.h
-@@ -160,13 +160,13 @@ public:
- void Init()
- {
- LIMITED_METHOD_CONTRACT;
-- m_pHead = &m_link;
-+ m_pHead = PTR_SLink(&m_link);
- // NOTE :: fHead variable is template argument
- // the following code is a compiled in, only if the fHead flag
- // is set to false,
- if (!fHead)
- {
-- m_pTail = &m_link;
-+ m_pTail = PTR_SLink(&m_link);
- }
- }
-
-@@ -274,7 +274,7 @@ public:
- SLink *ret = SLink::FindAndRemove(m_pHead, GetLink(pObj), &prior);
-
- if (ret == m_pTail)
-- m_pTail = prior;
-+ m_pTail = PTR_SLink(prior);
-
- return GetObject(ret);
- }
-diff --git a/src/pal/inc/pal.h b/src/pal/inc/pal.h
-index 08a35c8f62..43eb648a14 100644
---- a/src/pal/inc/pal.h
-+++ b/src/pal/inc/pal.h
-@@ -145,7 +145,7 @@ typedef PVOID NATIVE_LIBRARY_HANDLE;
-
- /******************* Compiler-specific glue *******************************/
- #ifndef THROW_DECL
--#if defined(_MSC_VER) || defined(__llvm__) || !defined(__cplusplus)
-+#if defined(_MSC_VER) || !defined(__cplusplus)
- #define THROW_DECL
- #else
- #define THROW_DECL throw()
diff --git a/build-dotnet-tarball b/build-dotnet-tarball
index 3314c7e..f32d847 100755
--- a/build-dotnet-tarball
+++ b/build-dotnet-tarball
@@ -91,14 +91,10 @@ if [ ! -f "${unmodified_tarball_name}.tar.gz" ]; then
git checkout "${tag}"
git submodule update --init --recursive
clean_dotnet_cache
- sed -i -e 's|cmakeargs -DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=TRUE||' repos/coreclr.proj
- mkdir -p patches/coreclr/
- cp ../../build-coreclr-clang10.patch patches/coreclr
- mkdir -p patches/corefx/
- cp ../../corefx-42900-clang-10.patch patches/corefx
- cp -r /usr/lib64/dotnet "${temp_dir}"
- ./build.sh --with-sdk ../dotnet /p:ArchiveDownloadedPackages=true
- ./build-source-tarball.sh "${unmodified_tarball_name}" --skip-build --with-sdk ../dotnet
+ sed -i -e 's|cmakeargs -DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=TRUE||' repos/runtime.common.props
+ # FIXME remove contineuonprebuilterror
+ ./build.sh -p:SkipPrebuiltEnforcement=true -p:ContinueOnPrebuiltBaselineError=true -p:ArchiveDownloadedPackages=true
+ ./build-source-tarball.sh "${unmodified_tarball_name}" --skip-build -- -p:ContinueOnPrebuiltBaselineError=true -p:SkipPrebuiltEnforcement=true
popd
popd
@@ -114,11 +110,12 @@ mv "${unmodified_tarball_name}" "${tarball_name}"
pushd "${tarball_name}"
# Remove files with funny licenses, crypto implementations and other
# not-very-useful artifacts to reduce tarball size
+rm -rf .dotnet
find -type f -iname '*.tar.gz' -delete
-rm -r src/aspnetcore.*/src/SignalR/clients/java/signalr/gradle*
-find src/aspnetcore.*/src -type d -name samples -print0 | xargs -0 rm -r
+rm -r src/AspNetCore.*/src/SignalR/clients/java/signalr/gradle*
+find src/AspNetCore.*/src -type d -name samples -print0 | xargs -0 rm -r
rm -r src/NuGet.Client.*/test/EndToEnd/ProjectTemplates/NetCoreWebApplication1.0.zip
-find src/coreclr.*/ -depth -name tests -print0 | xargs -0 rm -r
+find src/runtime.*/ -depth -name tests -print0 | xargs -0 rm -r
popd
tar czf "${tarball_name}.tar.gz" "${tarball_name}"
diff --git a/copr-build b/copr-build
new file mode 100755
index 0000000..8a7cf46
--- /dev/null
+++ b/copr-build
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+set -euo pipefail
+
+set -x
+
+fedpkg --release f32 srpm 2>&1 | tee fedpkg.output
+
+srpm_name=$(grep 'Wrote: ' fedpkg.output | cut -d' ' -f 2)
+
+copr-cli build @dotnet-sig/dotnet-preview "${srpm_name}"
diff --git a/core-setup-hardening-flags.patch b/core-setup-hardening-flags.patch
deleted file mode 100644
index 3f6b91c..0000000
--- a/core-setup-hardening-flags.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff --git a/src/settings.cmake b/src/settings.cmake
---- a/src/settings.cmake
-+++ b/src/settings.cmake
-@@ -218,6 +218,7 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
- set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Xlinker -Bsymbolic -Bsymbolic-functions")
- set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--build-id=sha1")
- set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--build-id=sha1")
-+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pie")
- add_compile_options(-fstack-protector-strong)
- elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
- add_compile_options(-fstack-protector)
diff --git a/coreclr-hardening-flags.patch b/coreclr-hardening-flags.patch
deleted file mode 100644
index d58d735..0000000
--- a/coreclr-hardening-flags.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff --git a/src/debug/createdump/CMakeLists.txt b/src/debug/createdump/CMakeLists.txt
---- a/src/debug/createdump/CMakeLists.txt
-+++ b/src/debug/createdump/CMakeLists.txt
-@@ -21,6 +21,7 @@ include_directories(BEFORE ${VM_DIR})
- add_definitions(-DPAL_STDCPP_COMPAT)
-
- add_compile_options(-fPIE)
-+add_link_options(-pie)
-
- set(CREATEDUMP_SOURCES
- createdump.cpp
diff --git a/corefx-39633-cgroupv2-mountpoints.patch b/corefx-39633-cgroupv2-mountpoints.patch
deleted file mode 100644
index 34fbecb..0000000
--- a/corefx-39633-cgroupv2-mountpoints.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 1864630f762160e1cb439362cc0577471624192a Mon Sep 17 00:00:00 2001
-From: Omair Majid <omajid(a)redhat.com>
-Date: Fri, 19 Jul 2019 19:18:51 -0400
-Subject: [PATCH] Fix up cgroup2fs in Interop.MountPoints.FormatInfo
-
-`stat -fc %T /sys/fs/cgroup` calls this file system `cgroup2fs`
-
-Add the cgroup2fs file system magic number. Available from:
-
- - https://www.kernel.org/doc/Documentation/cgroup-v2.txt
- - man 2 statfs
-
-Move cgroup2fs next to cgroupfs in the drive type list, since it is also
-DriveType.Ram.
----
- .../Unix/System.Native/Interop.MountPoints.FormatInfo.cs | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/src/Common/src/Interop/Unix/System.Native/Interop.MountPoints.FormatInfo.cs b/src/Common/src/Interop/Unix/System.Native/Interop.MountPoints.FormatInfo.cs
-index af38a2285ba2..4240bd4853ab 100644
---- a/src/Common/src/Interop/Unix/System.Native/Interop.MountPoints.FormatInfo.cs
-+++ b/src/Common/src/Interop/Unix/System.Native/Interop.MountPoints.FormatInfo.cs
-@@ -47,6 +47,7 @@ internal enum UnixFileSystemTypes : long
- btrfs = 0x9123683E,
- ceph = 0x00C36400,
- cgroupfs = 0x0027E0EB,
-+ cgroup2fs = 0x63677270,
- cifs = 0xFF534D42,
- coda = 0x73757245,
- coherent = 0x012FF7B7,
-@@ -231,7 +232,6 @@ private static DriveType GetDriveType(string fileSystemName)
- case "bpf_fs":
- case "btrfs":
- case "btrfs_test":
-- case "cgroup2fs":
- case "coh":
- case "daxfs":
- case "drvfs":
-@@ -384,6 +384,7 @@ private static DriveType GetDriveType(string fileSystemName)
- case "binfmt_misc":
- case "cgroup":
- case "cgroupfs":
-+ case "cgroup2fs":
- case "configfs":
- case "cramfs":
- case "cramfs-wend":
diff --git a/corefx-39686-cgroupv2-01.patch b/corefx-39686-cgroupv2-01.patch
deleted file mode 100644
index e7628e2..0000000
--- a/corefx-39686-cgroupv2-01.patch
+++ /dev/null
@@ -1,391 +0,0 @@
-From 2b2273ea4ea1c28472fa0d6ad2ffeb6374500550 Mon Sep 17 00:00:00 2001
-From: Omair Majid <omajid(a)redhat.com>
-Date: Wed, 23 Oct 2019 17:45:59 -0400
-Subject: [PATCH 1/2] Add cgroup v2 support to Interop.cgroups
-
-Fix up code to adjust cgroup v1 assumptions and check cgroup v2 paths,
-locations and values.
-
-Continue using the older cgroup v1 terminology for APIs.
----
- .../Interop/Linux/cgroups/Interop.cgroups.cs | 116 ++++++++++++++----
- src/Common/tests/Common.Tests.csproj | 4 +
- .../tests/Tests/Interop/cgroupsTests.cs | 107 ++++++++++++++++
- .../tests/DescriptionNameTests.cs | 2 +-
- 4 files changed, 206 insertions(+), 23 deletions(-)
- create mode 100644 src/Common/tests/Tests/Interop/cgroupsTests.cs
-
-diff --git a/src/Common/src/Interop/Linux/cgroups/Interop.cgroups.cs b/src/Common/src/Interop/Linux/cgroups/Interop.cgroups.cs
-index 0ffd4d7b7c03..186fe0516c5b 100644
---- a/src/Common/src/Interop/Linux/cgroups/Interop.cgroups.cs
-+++ b/src/Common/src/Interop/Linux/cgroups/Interop.cgroups.cs
-@@ -9,17 +9,22 @@
-
- internal static partial class Interop
- {
-+ /// <summary>Provides access to some cgroup (v1 and v2) features</summary>
- internal static partial class cgroups
- {
-+ // For cgroup v1, see https://www.kernel.org/doc/Documentation/cgroup-v1/
-+ // For cgroup v2, see https://www.kernel.org/doc/Documentation/cgroup-v2.txt
-+
-+ /// <summary>The version of cgroup that's being used </summary>
-+ internal enum CGroupVersion { None, CGroup1, CGroup2 };
-+
- /// <summary>Path to mountinfo file in procfs for the current process.</summary>
- private const string ProcMountInfoFilePath = "/proc/self/mountinfo";
- /// <summary>Path to cgroup directory in procfs for the current process.</summary>
- private const string ProcCGroupFilePath = "/proc/self/cgroup";
-
-- /// <summary>Path to the found cgroup location, or null if it couldn't be found.</summary>
-- internal static readonly string s_cgroupMemoryPath = FindCGroupPath("memory");
-- /// <summary>Path to the found cgroup memory limit_in_bytes path, or null if it couldn't be found.</summary>
-- private static readonly string s_cgroupMemoryLimitPath = s_cgroupMemoryPath != null ? s_cgroupMemoryPath + "/memory.limit_in_bytes" : null;
-+ /// <summary>Path to the found cgroup memory limit path, or null if it couldn't be found.</summary>
-+ internal static readonly string s_cgroupMemoryLimitPath = FindCGroupMemoryLimitPath();
-
- /// <summary>Tries to read the memory limit from the cgroup memory location.</summary>
- /// <param name="limit">The read limit, or 0 if it couldn't be read.</param>
-@@ -42,7 +47,7 @@ public static bool TryGetMemoryLimit(out ulong limit)
- /// <param name="path">The path to the file to parse.</param>
- /// <param name="result">The parsed result, or 0 if it couldn't be parsed.</param>
- /// <returns>true if the value was read successfully; otherwise, false.</returns>
-- private static bool TryReadMemoryValueFromFile(string path, out ulong result)
-+ internal static bool TryReadMemoryValueFromFile(string path, out ulong result)
- {
- if (File.Exists(path))
- {
-@@ -79,6 +84,11 @@ private static bool TryReadMemoryValueFromFile(string path, out ulong result)
- result = checked(ulongValue * multiplier);
- return true;
- }
-+
-+ // 'max' is also a possible valid value
-+ //
-+ // Treat this as 'no memory limit' and let the caller
-+ // fallback to reading the real limit via other means
- }
- catch (Exception e)
- {
-@@ -90,12 +100,35 @@ private static bool TryReadMemoryValueFromFile(string path, out ulong result)
- return false;
- }
-
-+ /// <summary>Find the cgroup memory limit path.</summary>
-+ /// <returns>The limit path if found; otherwise, null.</returns>
-+ private static string FindCGroupMemoryLimitPath()
-+ {
-+ string cgroupMemoryPath = FindCGroupPath("memory", out CGroupVersion version);
-+ if (cgroupMemoryPath != null)
-+ {
-+ if (version == CGroupVersion.CGroup1)
-+ {
-+ return cgroupMemoryPath + "/memory.limit_in_bytes";
-+ }
-+
-+ if (version == CGroupVersion.CGroup2)
-+ {
-+ // 'memory.high' is a soft limit; the process may get throttled
-+ // 'memory.max' is where OOM killer kicks in
-+ return cgroupMemoryPath + "/memory.max";
-+ }
-+ }
-+
-+ return null;
-+ }
-+
- /// <summary>Find the cgroup path for the specified subsystem.</summary>
- /// <param name="subsystem">The subsystem, e.g. "memory".</param>
- /// <returns>The cgroup path if found; otherwise, null.</returns>
-- private static string FindCGroupPath(string subsystem)
-+ private static string FindCGroupPath(string subsystem, out CGroupVersion version)
- {
-- if (TryFindHierarchyMount(subsystem, out string hierarchyRoot, out string hierarchyMount) &&
-+ if (TryFindHierarchyMount(subsystem, out version, out string hierarchyRoot, out string hierarchyMount) &&
- TryFindCGroupPathForSubsystem(subsystem, out string cgroupPathRelativeToMount))
- {
- // For a host cgroup, we need to append the relative path.
-@@ -113,19 +146,24 @@ private static string FindCGroupPath(string subsystem)
- /// <param name="root">The path of the directory in the filesystem which forms the root of this mount; null if not found.</param>
- /// <param name="path">The path of the mount point relative to the process's root directory; null if not found.</param>
- /// <returns>true if the mount was found; otherwise, null.</returns>
-- private static bool TryFindHierarchyMount(string subsystem, out string root, out string path)
-+ private static bool TryFindHierarchyMount(string subsystem, out CGroupVersion version, out string root, out string path)
- {
-- if (File.Exists(ProcMountInfoFilePath))
-+ return TryFindHierarchyMount(ProcMountInfoFilePath, subsystem, out version, out root, out path);
-+ }
-+
-+ internal static bool TryFindHierarchyMount(string mountInfoFilePath, string subsystem, out CGroupVersion version, out string root, out string path)
-+ {
-+ if (File.Exists(mountInfoFilePath))
- {
- try
- {
-- using (var reader = new StreamReader(ProcMountInfoFilePath))
-+ using (var reader = new StreamReader(mountInfoFilePath))
- {
- string line;
- while ((line = reader.ReadLine()) != null)
- {
- // Look for an entry that has cgroup as the "filesystem type"
-- // and that has options containing the specified subsystem.
-+ // and, for cgroup1, that has options containing the specified subsystem
- // See man page for /proc/[pid]/mountinfo for details, e.g.:
- // (1)(2)(3) (4) (5) (6) (7) (8) (9) (10) (11)
- // 36 35 98:0 /mnt1 /mnt2 rw,noatime master:1 - ext3 /dev/root rw,errors=continue
-@@ -148,17 +186,35 @@ private static bool TryFindHierarchyMount(string subsystem, out string root, out
- continue;
- }
-
-- if (postSeparatorlineParts[0] != "cgroup" ||
-- Array.IndexOf(postSeparatorlineParts[2].Split(','), subsystem) < 0)
-+ bool validCGroup1Entry = ((postSeparatorlineParts[0] == "cgroup") &&
-+ (Array.IndexOf(postSeparatorlineParts[2].Split(','), subsystem) >= 0));
-+ bool validCGroup2Entry = postSeparatorlineParts[0] == "cgroup2";
-+
-+ if (!validCGroup1Entry && !validCGroup2Entry)
- {
- // Not the relevant entry.
- continue;
- }
-
-- // Found the relevant entry. Extract the mount root and path.
-+ // Found the relevant entry. Extract the cgroup version, mount root and path.
-+ switch (postSeparatorlineParts[0])
-+ {
-+ case "cgroup":
-+ version = CGroupVersion.CGroup1;
-+ break;
-+ case "cgroup2":
-+ version = CGroupVersion.CGroup2;
-+ break;
-+ default:
-+ version = CGroupVersion.None;
-+ Debug.Fail($"invalid value for CGroupVersion \"{postSeparatorlineParts[0]}\"");
-+ break;
-+ }
-+
- string[] lineParts = line.Substring(0, endOfOptionalFields).Split(' ');
- root = lineParts[3];
- path = lineParts[4];
-+
- return true;
- }
- }
-@@ -169,6 +225,7 @@ private static bool TryFindHierarchyMount(string subsystem, out string root, out
- }
- }
-
-+ version = CGroupVersion.None;
- root = null;
- path = null;
- return false;
-@@ -180,27 +237,42 @@ private static bool TryFindHierarchyMount(string subsystem, out string root, out
- /// <returns></returns>
- private static bool TryFindCGroupPathForSubsystem(string subsystem, out string path)
- {
-- if (File.Exists(ProcCGroupFilePath))
-+ return TryFindCGroupPathForSubsystem(ProcCGroupFilePath, subsystem, out path);
-+ }
-+
-+ internal static bool TryFindCGroupPathForSubsystem(string procCGroupFilePath, string subsystem, out string path)
-+ {
-+ if (File.Exists(procCGroupFilePath))
- {
- try
- {
-- using (var reader = new StreamReader(ProcCGroupFilePath))
-+ using (var reader = new StreamReader(procCGroupFilePath))
- {
- string line;
- while ((line = reader.ReadLine()) != null)
- {
-- // Find the first entry that has the subsystem listed in its controller
-- // list. See man page for cgroups for /proc/[pid]/cgroups format, e.g:
-- // hierarchy-ID:controller-list:cgroup-path
-- // 5:cpuacct,cpu,cpuset:/daemons
--
- string[] lineParts = line.Split(':');
-+
- if (lineParts.Length != 3)
- {
- // Malformed line.
- continue;
- }
-
-+ // cgroup v2: Find the first entry that matches the cgroup v2 hierarchy:
-+ // 0::$PATH
-+
-+ if ((lineParts[0] == "0") && (string.Empty == lineParts[1]))
-+ {
-+ path = lineParts[2];
-+ return true;
-+ }
-+
-+ // cgroup v1: Find the first entry that has the subsystem listed in its controller
-+ // list. See man page for cgroups for /proc/[pid]/cgroups format, e.g:
-+ // hierarchy-ID:controller-list:cgroup-path
-+ // 5:cpuacct,cpu,cpuset:/daemons
-+
- if (Array.IndexOf(lineParts[1].Split(','), subsystem) < 0)
- {
- // Not the relevant entry.
-@@ -214,7 +286,7 @@ private static bool TryFindCGroupPathForSubsystem(string subsystem, out string p
- }
- catch (Exception e)
- {
-- Debug.Fail($"Failed to read or parse \"{ProcMountInfoFilePath}\": {e}");
-+ Debug.Fail($"Failed to read or parse \"{procCGroupFilePath}\": {e}");
- }
- }
-
-diff --git a/src/Common/tests/Common.Tests.csproj b/src/Common/tests/Common.Tests.csproj
-index a189d856348b..979c8dd7fbe6 100644
---- a/src/Common/tests/Common.Tests.csproj
-+++ b/src/Common/tests/Common.Tests.csproj
-@@ -12,6 +12,9 @@
- <Compile Include="$(CommonTestPath)\System\Security\Cryptography\ByteUtils.cs">
- <Link>Common\System\Security\Cryptography\ByteUtils.cs</Link>
- </Compile>
-+ <Compile Include="$(CommonPath)\Interop\Linux\cgroups\Interop.cgroups.cs">
-+ <Link>Common\Interop\Linux\cgroups\Interop.cgroups.cs</Link>
-+ </Compile>
- <Compile Include="$(CommonPath)\Interop\Linux\procfs\Interop.ProcFsStat.cs">
- <Link>Common\Interop\Linux\procfs\Interop.ProcFsStat.cs</Link>
- </Compile>
-@@ -69,6 +72,7 @@
- <Compile Include="$(CommonPath)\CoreLib\System\PasteArguments.cs">
- <Link>Common\CoreLib\System\PasteArguments.cs</Link>
- </Compile>
-+ <Compile Include="Tests\Interop\cgroupsTests.cs" />
- <Compile Include="Tests\Interop\procfsTests.cs" />
- <Compile Include="Tests\System\CharArrayHelpersTests.cs" />
- <Compile Include="Tests\System\IO\PathInternal.Tests.cs" />
-diff --git a/src/Common/tests/Tests/Interop/cgroupsTests.cs b/src/Common/tests/Tests/Interop/cgroupsTests.cs
-new file mode 100644
-index 000000000000..f16d9242879c
---- /dev/null
-+++ b/src/Common/tests/Tests/Interop/cgroupsTests.cs
-@@ -0,0 +1,107 @@
-+// Licensed to the .NET Foundation under one or more agreements.
-+// The .NET Foundation licenses this file to you under the MIT license.
-+// See the LICENSE file in the project root for more information.
-+
-+using System;
-+using System.IO;
-+using System.Text;
-+using Xunit;
-+
-+namespace Common.Tests
-+{
-+ public class cgroupsTests
-+ {
-+ [Theory]
-+ [InlineData(true, "0", 0)]
-+ [InlineData(false, "max", 0)]
-+ [InlineData(true, "1k", 1024)]
-+ [InlineData(true, "1K", 1024)]
-+ public static void ValidateTryReadMemoryValue(bool expectedResult, string valueText, ulong expectedValue)
-+ {
-+ string path = Path.GetTempFileName();
-+ try
-+ {
-+ File.WriteAllText(path, valueText);
-+
-+ bool result = Interop.cgroups.TryReadMemoryValueFromFile(path, out ulong val);
-+
-+ Assert.Equal(expectedResult, result);
-+ if (result)
-+ {
-+ Assert.Equal(expectedValue, val);
-+ }
-+ }
-+ finally
-+ {
-+ File.Delete(path);
-+ }
-+ }
-+
-+ [Theory]
-+ [InlineData(false, "0 0 0:0 / /foo ignore ignore - overlay overlay ignore", "ignore", 0, "/", "/")]
-+ [InlineData(true, "0 0 0:0 / /foo ignore ignore - cgroup2 cgroup2 ignore", "ignore", 2, "/", "/foo")]
-+ [InlineData(true, "0 0 0:0 / /foo ignore ignore - cgroup2 cgroup2 ignore", "memory", 2, "/", "/foo")]
-+ [InlineData(true, "0 0 0:0 / /foo ignore ignore - cgroup2 cgroup2 ignore", "cpu", 2, "/", "/foo")]
-+ [InlineData(true, "0 0 0:0 / /foo ignore - cgroup2 cgroup2 ignore", "cpu", 2, "/", "/foo")]
-+ [InlineData(true, "0 0 0:0 / /foo ignore ignore ignore - cgroup2 cgroup2 ignore", "cpu", 2, "/", "/foo")]
-+ [InlineData(true, "0 0 0:0 / /foo-with-dashes ignore ignore - cgroup2 cgroup2 ignore", "ignore", 2, "/", "/foo-with-dashes")]
-+ [InlineData(true, "0 0 0:0 / /foo ignore ignore - cgroup cgroup memory", "memory", 1, "/", "/foo")]
-+ [InlineData(true, "0 0 0:0 / /foo-with-dashes ignore ignore - cgroup cgroup memory", "memory", 1, "/", "/foo-with-dashes")]
-+ [InlineData(true, "0 0 0:0 / /foo ignore ignore - cgroup cgroup cpu,memory", "memory", 1, "/", "/foo")]
-+ [InlineData(true, "0 0 0:0 / /foo ignore ignore - cgroup cgroup memory,cpu", "memory", 1, "/", "/foo")]
-+ [InlineData(false, "0 0 0:0 / /foo ignore ignore - cgroup cgroup cpu", "memory", 0, "/", "/foo")]
-+ public static void ParseValidateMountInfo(bool found, string procSelfMountInfoText, string subsystem, int expectedVersion, string expectedRoot, string expectedMount)
-+ {
-+ string path = Path.GetTempFileName();
-+ try
-+ {
-+ File.WriteAllText(path, procSelfMountInfoText);
-+
-+ bool result = Interop.cgroups.TryFindHierarchyMount(path, subsystem, out Interop.cgroups.CGroupVersion version, out string root, out string mount);
-+
-+ Assert.Equal(found, result);
-+ if (found)
-+ {
-+ Assert.Equal(expectedVersion, (int)version);
-+ Assert.Equal(expectedRoot, root);
-+ Assert.Equal(expectedMount, mount);
-+ }
-+ }
-+ finally
-+ {
-+ File.Delete(path);
-+ }
-+ }
-+
-+ [Theory]
-+ [InlineData(true, "0::/foo", "ignore", "/foo")]
-+ [InlineData(true, "0::/bar", "ignore", "/bar")]
-+ [InlineData(true, "0::frob", "ignore", "frob")]
-+ [InlineData(false, "1::frob", "ignore", "ignore")]
-+ [InlineData(true, "1:foo:bar", "foo", "bar")]
-+ [InlineData(true, "2:foo:bar", "foo", "bar")]
-+ [InlineData(false, "2:foo:bar", "bar", "ignore")]
-+ [InlineData(true, "1:foo:bar\n2:eggs:spam", "foo", "bar")]
-+ [InlineData(true, "1:foo:bar\n2:eggs:spam", "eggs", "spam")]
-+ public static void ParseValidateProcCGroup(bool found, string procSelfCgroupText, string subsystem, string expectedMountPath)
-+ {
-+ string path = Path.GetTempFileName();
-+ try
-+ {
-+ File.WriteAllText(path, procSelfCgroupText);
-+
-+ bool result = Interop.cgroups.TryFindCGroupPathForSubsystem(path, subsystem, out string mountPath);
-+
-+ Assert.Equal(found, result);
-+ if (found)
-+ {
-+ Assert.Equal(expectedMountPath, mountPath);
-+ }
-+ }
-+ finally
-+ {
-+ File.Delete(path);
-+ }
-+ }
-+ }
-+}
-diff --git a/src/System.Runtime.InteropServices.RuntimeInformation/tests/DescriptionNameTests.cs b/src/System.Runtime.InteropServices.RuntimeInformation/tests/DescriptionNameTests.cs
-index 910af2fd82b4..73f692898dbc 100644
---- a/src/System.Runtime.InteropServices.RuntimeInformation/tests/DescriptionNameTests.cs
-+++ b/src/System.Runtime.InteropServices.RuntimeInformation/tests/DescriptionNameTests.cs
-@@ -40,7 +40,7 @@ public void DumpRuntimeInformationToConsole()
-
- Console.WriteLine($"### CURRENT DIRECTORY: {Environment.CurrentDirectory}");
-
-- string cgroupsLocation = Interop.cgroups.s_cgroupMemoryPath;
-+ string cgroupsLocation = Interop.cgroups.s_cgroupMemoryLimitPath;
- if (cgroupsLocation != null)
- {
- Console.WriteLine($"### CGROUPS MEMORY: {cgroupsLocation}");
-
diff --git a/corefx-39686-cgroupv2-02.patch b/corefx-39686-cgroupv2-02.patch
deleted file mode 100644
index 88dcd99..0000000
--- a/corefx-39686-cgroupv2-02.patch
+++ /dev/null
@@ -1,129 +0,0 @@
-From 9a8c5e4014ffca8aff70808cc0e50a403d38c292 Mon Sep 17 00:00:00 2001
-From: Stephen Toub <stoub(a)microsoft.com>
-Date: Wed, 23 Oct 2019 20:35:49 -0400
-Subject: [PATCH 2/2] Clean up new tests
-
----
- .../tests/Tests/Interop/cgroupsTests.cs | 79 ++++++-------------
- 1 file changed, 25 insertions(+), 54 deletions(-)
-
-diff --git a/src/Common/tests/Tests/Interop/cgroupsTests.cs b/src/Common/tests/Tests/Interop/cgroupsTests.cs
-index f16d9242879c..fc6ab5c9753c 100644
---- a/src/Common/tests/Tests/Interop/cgroupsTests.cs
-+++ b/src/Common/tests/Tests/Interop/cgroupsTests.cs
-@@ -2,38 +2,27 @@
- // The .NET Foundation licenses this file to you under the MIT license.
- // See the LICENSE file in the project root for more information.
-
--using System;
- using System.IO;
--using System.Text;
- using Xunit;
-
- namespace Common.Tests
- {
-- public class cgroupsTests
-+ public class cgroupsTests : FileCleanupTestBase
- {
- [Theory]
-- [InlineData(true, "0", 0)]
-- [InlineData(false, "max", 0)]
-- [InlineData(true, "1k", 1024)]
-- [InlineData(true, "1K", 1024)]
-- public static void ValidateTryReadMemoryValue(bool expectedResult, string valueText, ulong expectedValue)
-+ [InlineData(true, "0", 0)]
-+ [InlineData(false, "max", 0)]
-+ [InlineData(true, "1k", 1024)]
-+ [InlineData(true, "1K", 1024)]
-+ public void ValidateTryReadMemoryValue(bool expectedResult, string valueText, ulong expectedValue)
- {
-- string path = Path.GetTempFileName();
-- try
-- {
-- File.WriteAllText(path, valueText);
--
-- bool result = Interop.cgroups.TryReadMemoryValueFromFile(path, out ulong val);
-+ string path = GetTestFilePath();
-+ File.WriteAllText(path, valueText);
-
-- Assert.Equal(expectedResult, result);
-- if (result)
-- {
-- Assert.Equal(expectedValue, val);
-- }
-- }
-- finally
-+ Assert.Equal(expectedResult, Interop.cgroups.TryReadMemoryValueFromFile(path, out ulong val));
-+ if (expectedResult)
- {
-- File.Delete(path);
-+ Assert.Equal(expectedValue, val);
- }
- }
-
-@@ -50,26 +39,17 @@ public static void ValidateTryReadMemoryValue(bool expectedResult, string valueT
- [InlineData(true, "0 0 0:0 / /foo ignore ignore - cgroup cgroup cpu,memory", "memory", 1, "/", "/foo")]
- [InlineData(true, "0 0 0:0 / /foo ignore ignore - cgroup cgroup memory,cpu", "memory", 1, "/", "/foo")]
- [InlineData(false, "0 0 0:0 / /foo ignore ignore - cgroup cgroup cpu", "memory", 0, "/", "/foo")]
-- public static void ParseValidateMountInfo(bool found, string procSelfMountInfoText, string subsystem, int expectedVersion, string expectedRoot, string expectedMount)
-+ public void ParseValidateMountInfo(bool expectedFound, string procSelfMountInfoText, string subsystem, int expectedVersion, string expectedRoot, string expectedMount)
- {
-- string path = Path.GetTempFileName();
-- try
-- {
-- File.WriteAllText(path, procSelfMountInfoText);
--
-- bool result = Interop.cgroups.TryFindHierarchyMount(path, subsystem, out Interop.cgroups.CGroupVersion version, out string root, out string mount);
-+ string path = GetTestFilePath();
-+ File.WriteAllText(path, procSelfMountInfoText);
-
-- Assert.Equal(found, result);
-- if (found)
-- {
-- Assert.Equal(expectedVersion, (int)version);
-- Assert.Equal(expectedRoot, root);
-- Assert.Equal(expectedMount, mount);
-- }
-- }
-- finally
-+ Assert.Equal(expectedFound, Interop.cgroups.TryFindHierarchyMount(path, subsystem, out Interop.cgroups.CGroupVersion version, out string root, out string mount));
-+ if (expectedFound)
- {
-- File.Delete(path);
-+ Assert.Equal(expectedVersion, (int)version);
-+ Assert.Equal(expectedRoot, root);
-+ Assert.Equal(expectedMount, mount);
- }
- }
-
-@@ -83,24 +63,15 @@ public static void ParseValidateMountInfo(bool found, string procSelfMountInfoTe
- [InlineData(false, "2:foo:bar", "bar", "ignore")]
- [InlineData(true, "1:foo:bar\n2:eggs:spam", "foo", "bar")]
- [InlineData(true, "1:foo:bar\n2:eggs:spam", "eggs", "spam")]
-- public static void ParseValidateProcCGroup(bool found, string procSelfCgroupText, string subsystem, string expectedMountPath)
-+ public void ParseValidateProcCGroup(bool expectedFound, string procSelfCgroupText, string subsystem, string expectedMountPath)
- {
-- string path = Path.GetTempFileName();
-- try
-- {
-- File.WriteAllText(path, procSelfCgroupText);
-+ string path = GetTestFilePath();
-+ File.WriteAllText(path, procSelfCgroupText);
-
-- bool result = Interop.cgroups.TryFindCGroupPathForSubsystem(path, subsystem, out string mountPath);
--
-- Assert.Equal(found, result);
-- if (found)
-- {
-- Assert.Equal(expectedMountPath, mountPath);
-- }
-- }
-- finally
-+ Assert.Equal(expectedFound, Interop.cgroups.TryFindCGroupPathForSubsystem(path, subsystem, out string mountPath));
-+ if (expectedFound)
- {
-- File.Delete(path);
-+ Assert.Equal(expectedMountPath, mountPath);
- }
- }
- }
diff --git a/corefx-42871-fedora-33-rid.patch b/corefx-42871-fedora-33-rid.patch
deleted file mode 100644
index 2802dcd..0000000
--- a/corefx-42871-fedora-33-rid.patch
+++ /dev/null
@@ -1,124 +0,0 @@
-From 6cf4ff086875eaf29381cf406ea85846d9f66178 Mon Sep 17 00:00:00 2001
-From: Omair Majid <omajid(a)redhat.com>
-Date: Mon, 24 Feb 2020 14:11:03 -0500
-Subject: [PATCH] Add Fedora 33 runtime ids
-
-Fedora 32 is gearing up for release[1], and in-development version of
-Fedora has been offically labelled as being Fedora 33:
-
- $ podman run -it fedora:33 cat /etc/os-release
- NAME=Fedora
- VERSION="33 (Container Image)"
- ID=fedora
- VERSION_ID=33
- VERSION_CODENAME=""
- PLATFORM_ID="platform:f33"
- PRETTY_NAME="Fedora 33 (Container Image)"
- ANSI_COLOR="0;34"
- LOGO=fedora-logo-icon
- CPE_NAME="cpe:/o:fedoraproject:fedora:33"
- HOME_URL="https://fedoraproject.org/"
- DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora/rawhide/system-administrators..."
- SUPPORT_URL="https://fedoraproject.org/wiki/Communicating_and_getting_help"
- BUG_REPORT_URL="https://bugzilla.redhat.com/"
- REDHAT_BUGZILLA_PRODUCT="Fedora"
- REDHAT_BUGZILLA_PRODUCT_VERSION=rawhide
- REDHAT_SUPPORT_PRODUCT="Fedora"
- REDHAT_SUPPORT_PRODUCT_VERSION=rawhide
- PRIVACY_POLICY_URL="https://fedoraproject.org/wiki/Legal:PrivacyPolicy"
- VARIANT="Container Image"
- VARIANT_ID=container
-
-[1] https://fedorapeople.org/groups/schedule/f-32/f-32-key-tasks.html
----
- eng/Packaging.props | 2 +-
- .../runtime.compatibility.json | 32 +++++++++++++++++++
- pkg/Microsoft.NETCore.Platforms/runtime.json | 17 ++++++++++
- .../runtimeGroups.props | 2 +-
- src/packages.builds | 3 ++
- 5 files changed, 54 insertions(+), 2 deletions(-)
-
-diff --git a/pkg/Microsoft.NETCore.Platforms/runtime.compatibility.json b/pkg/Microsoft.NETCore.Platforms/runtime.compatibility.json
-index 1e5c380a7a6a..c20e35394d6b 100644
---- a/pkg/Microsoft.NETCore.Platforms/runtime.compatibility.json
-+++ b/pkg/Microsoft.NETCore.Platforms/runtime.compatibility.json
-@@ -953,6 +953,38 @@
- "any",
- "base"
- ],
-+ "fedora.33": [
-+ "fedora.33",
-+ "fedora",
-+ "linux",
-+ "unix",
-+ "any",
-+ "base"
-+ ],
-+ "fedora.33-arm64": [
-+ "fedora.33-arm64",
-+ "fedora.33",
-+ "fedora-arm64",
-+ "fedora",
-+ "linux-arm64",
-+ "linux",
-+ "unix-arm64",
-+ "unix",
-+ "any",
-+ "base"
-+ ],
-+ "fedora.33-x64": [
-+ "fedora.33-x64",
-+ "fedora.33",
-+ "fedora-x64",
-+ "fedora",
-+ "linux-x64",
-+ "linux",
-+ "unix-x64",
-+ "unix",
-+ "any",
-+ "base"
-+ ],
- "freebsd": [
- "freebsd",
- "unix",
-diff --git a/pkg/Microsoft.NETCore.Platforms/runtime.json b/pkg/Microsoft.NETCore.Platforms/runtime.json
-index b2f286ea2479..b3380ecbbef3 100644
---- a/pkg/Microsoft.NETCore.Platforms/runtime.json
-+++ b/pkg/Microsoft.NETCore.Platforms/runtime.json
-@@ -488,6 +488,23 @@
- "fedora-x64"
- ]
- },
-+ "fedora.33": {
-+ "#import": [
-+ "fedora"
-+ ]
-+ },
-+ "fedora.33-arm64": {
-+ "#import": [
-+ "fedora.33",
-+ "fedora-arm64"
-+ ]
-+ },
-+ "fedora.33-x64": {
-+ "#import": [
-+ "fedora.33",
-+ "fedora-x64"
-+ ]
-+ },
- "freebsd": {
- "#import": [
- "unix"
-diff --git a/pkg/Microsoft.NETCore.Platforms/runtimeGroups.props b/pkg/Microsoft.NETCore.Platforms/runtimeGroups.props
-index eeb8130b54fb..da48e5f9d09f 100644
---- a/pkg/Microsoft.NETCore.Platforms/runtimeGroups.props
-+++ b/pkg/Microsoft.NETCore.Platforms/runtimeGroups.props
-@@ -43,7 +43,7 @@
- <RuntimeGroup Include="fedora">
- <Parent>linux</Parent>
- <Architectures>x64;arm64</Architectures>
-- <Versions>23;24;25;26;27;28;29;30;31;32</Versions>
-+ <Versions>23;24;25;26;27;28;29;30;31;32;33</Versions>
- <TreatVersionsAsCompatible>false</TreatVersionsAsCompatible>
- </RuntimeGroup>
-
diff --git a/corefx-42900-clang-10.patch b/corefx-42900-clang-10.patch
deleted file mode 100644
index b898f34..0000000
--- a/corefx-42900-clang-10.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From 58d6cd09bd2d5b1085c6572c1d97b8533cf8294b Mon Sep 17 00:00:00 2001
-From: Omair Majid <omajid(a)redhat.com>
-Date: Fri, 3 Apr 2020 13:53:09 -0400
-Subject: [PATCH] Fix corefx to build on clang 10
-
-Clang 10 adds/enables new warnings, some of which is affecting
-the corefx code.
-
-Clang 10 has added -Walloca to warn about uses of alloca. This commit
-replaces the only non-compliant use of that with a single fixed
-stack-allocated buffer.
-
-Clang 10 has also added -Wimplicit-int-float-conversion. This commit
-uses explicit casts to double to avoid the warnings.
-
-This is a backport of dotnet/runtime#33734 to corefx.
-
-After this commit, I can build all of corefx with Clang 10.
----
- src/Native/Unix/System.Native/pal_io.c | 20 +++++++++++---------
- src/Native/Unix/System.Native/pal_time.c | 2 +-
- 2 files changed, 12 insertions(+), 10 deletions(-)
-
-diff --git a/src/Native/Unix/System.Native/pal_io.c b/src/Native/Unix/System.Native/pal_io.c
-index 2d51edacf5ee..c7c42eb3e72b 100644
---- a/src/Native/Unix/System.Native/pal_io.c
-+++ b/src/Native/Unix/System.Native/pal_io.c
-@@ -906,18 +906,20 @@ int32_t SystemNative_Poll(PollEvent* pollEvents, uint32_t eventCount, int32_t mi
- return Error_EINVAL;
- }
-
-- size_t bufferSize;
-- if (!multiply_s(sizeof(struct pollfd), (size_t)eventCount, &bufferSize))
-+ struct pollfd stackBuffer[(uint32_t)(2048/sizeof(struct pollfd))];
-+ int useStackBuffer = eventCount <= (sizeof(stackBuffer)/sizeof(stackBuffer[0]));
-+ struct pollfd* pollfds = NULL;
-+ if (useStackBuffer)
- {
-- return SystemNative_ConvertErrorPlatformToPal(EOVERFLOW);
-+ pollfds = (struct pollfd*)&stackBuffer[0];
- }
--
--
-- int useStackBuffer = bufferSize <= 2048;
-- struct pollfd* pollfds = (struct pollfd*)(useStackBuffer ? alloca(bufferSize) : malloc(bufferSize));
-- if (pollfds == NULL)
-+ else
- {
-- return Error_ENOMEM;
-+ pollfds = (struct pollfd*)calloc(eventCount, sizeof(*pollfds));
-+ if (pollfds == NULL)
-+ {
-+ return Error_ENOMEM;
-+ }
- }
-
- for (uint32_t i = 0; i < eventCount; i++)
-diff --git a/src/Native/Unix/System.Native/pal_time.c b/src/Native/Unix/System.Native/pal_time.c
-index 1a7c862749d1..54ebde60a83b 100644
---- a/src/Native/Unix/System.Native/pal_time.c
-+++ b/src/Native/Unix/System.Native/pal_time.c
-@@ -169,7 +169,7 @@ int32_t SystemNative_GetCpuUtilization(ProcessCpuInformation* previousCpuInfo)
- uint64_t resolution = SystemNative_GetTimestampResolution();
- uint64_t timestamp = SystemNative_GetTimestamp();
-
-- uint64_t currentTime = (uint64_t)(timestamp * ((double)SecondsToNanoSeconds / resolution));
-+ uint64_t currentTime = (uint64_t)((double)timestamp * ((double)SecondsToNanoSeconds / (double)resolution));
-
- uint64_t lastRecordedCurrentTime = previousCpuInfo->lastRecordedCurrentTime;
- uint64_t lastRecordedKernelTime = previousCpuInfo->lastRecordedKernelTime;
diff --git a/corefx-optflags-support.patch b/corefx-optflags-support.patch
deleted file mode 100644
index 9b08f1f..0000000
--- a/corefx-optflags-support.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-diff --git a/src/Native/Unix/CMakeLists.txt b/src/Native/Unix/CMakeLists.txt
-index 7d804a1e54..717c2718d7 100644
---- a/src/Native/Unix/CMakeLists.txt
-+++ b/src/Native/Unix/CMakeLists.txt
-@@ -25,7 +25,7 @@ add_compile_options(-fPIC)
- add_compile_options(-Wthread-safety)
- add_compile_options(-Wno-thread-safety-analysis)
-+ add_compile_options(-Wno-alloca)
- endif()
--add_compile_options(-Werror)
-
- if(CMAKE_SYSTEM_NAME STREQUAL Emscripten)
- set(CLR_CMAKE_PLATFORM_WASM 1)
-diff --git a/src/Native/Unix/configure.cmake b/src/Native/Unix/configure.cmake
-index f4a30ad6cb..f2db68402a 100644
---- a/src/Native/Unix/configure.cmake
-+++ b/src/Native/Unix/configure.cmake
-@@ -27,6 +27,12 @@ else ()
- message(FATAL_ERROR "Unknown platform. Cannot define PAL_UNIX_NAME, used by RuntimeInformation.")
- endif ()
-
-+
-+set (PREVIOUS_CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
-+set (CMAKE_CXX_FLAGS "-D_GNU_SOURCE")
-+set (PREVIOUS_CMAKE_C_FLAGS ${CMAKE_C_FLAGS})
-+set (CMAKE_C_FLAGS "-D_GNU_SOURCE")
-+
- # We compile with -Werror, so we need to make sure these code fragments compile without warnings.
- # Older CMake versions (3.8) do not assign the result of their tests, causing unused-value errors
- # which are not distinguished from the test failing. So no error for that one.
-@@ -698,6 +704,9 @@ endif()
-
- set (CMAKE_REQUIRED_LIBRARIES)
-
-+set (CMAKE_CXX_FLAGS "${PREVIOUS_CMAKE_CXX_FLAGS}")
-+set (CMAKE_C_FLAGS "${PREVIOUS_CMAKE_C_FLAGS}")
-+
- check_c_source_compiles(
- "
- #include <sys/inotify.h>
diff --git a/dotnet3.1.spec b/dotnet5.0.spec
similarity index 79%
rename from dotnet3.1.spec
rename to dotnet5.0.spec
index 44ff8fb..49221a4 100644
--- a/dotnet3.1.spec
+++ b/dotnet5.0.spec
@@ -1,4 +1,4 @@
-%bcond_with bootstrap
+%bcond_without bootstrap
# Avoid provides/requires from private libraries
%global privlibs libhostfxr
@@ -20,18 +20,20 @@
%global dotnet_cflags %(echo %optflags | sed -e 's/-fstack-clash-protection//' | sed -re 's/-specs=[^ ]*//g')
%global dotnet_ldflags %(echo %{__global_ldflags} | sed -re 's/-specs=[^ ]*//g')
-%global host_version 3.1.3
-%global runtime_version 3.1.3
-%global aspnetcore_runtime_version %{runtime_version}
-%global sdk_version 3.1.103
-# upstream respun this release, so the tag doesn't exactly match
-%global src_version %{sdk_version}.2
-%global templates_version %(echo %{runtime_version} | awk 'BEGIN { FS="."; OFS="." } {print $1, $2, $3+1 }')
+%global host_version 5.0.0-preview.4.20251.6
+%global runtime_version 5.0.0-preview.4.20251.6
+%global aspnetcore_runtime_version 5.0.0-preview.4.20257.10
+%global sdk_version 5.0.100-preview.4.20161.13
+%global templates_version 5.0.0-preview.4.20161.13
+#%%global templates_version %%(echo %%{runtime_version} | awk 'BEGIN { FS="."; OFS="." } {print $1, $2, $3+1 }')
-%global host_rpm_version %{host_version}
-%global aspnetcore_runtime_rpm_version %{aspnetcore_runtime_version}
-%global runtime_rpm_version %{runtime_version}
-%global sdk_rpm_version %{sdk_version}
+%global host_rpm_version 5.0.0
+%global aspnetcore_runtime_rpm_version 5.0.0
+%global runtime_rpm_version 5.0.0
+%global sdk_rpm_version 5.0.100
+
+# upstream can update releases without revving the SDK version so these don't always match
+%global src_version %{sdk_rpm_version}
%if 0%{?fedora} || 0%{?rhel} < 8
%global use_bundled_libunwind 0
@@ -39,6 +41,10 @@
%global use_bundled_libunwind 1
%endif
+%ifarch aarch64
+%global use_bundled_libunwind 1
+%endif
+
%ifarch x86_64
%global runtime_arch x64
%endif
@@ -56,42 +62,34 @@
%endif
%endif
-Name: dotnet3.1
+Name: dotnet5.0
Version: %{sdk_rpm_version}
-Release: 1%{?dist}
+Release: 0.2.preview4%{?dist}
Summary: .NET Core Runtime and SDK
License: MIT and ASL 2.0 and BSD and LGPLv2+ and CC-BY and CC0 and MS-PL and EPL-1.0 and GPL+ and GPLv2 and ISC and OFL and zlib
URL: https://github.com/dotnet/
# The source is generated on a Fedora box via:
# ./build-dotnet-tarball v%%{src_version}-SDK
-Source0: dotnet-v%{src_version}-SDK.tar.gz
+Source0: dotnet-v%{src_version}-preview4-SDK.tar.gz
Source1: check-debug-symbols.py
Source2: dotnet.sh.in
-# Fix building with our additional CFLAGS/CXXFLAGS/LDFLAGS
-Patch100: corefx-optflags-support.patch
-
-# Add some support for cgroupv2 in corefx
-# All these patches are upstreamed for 5.0
-Patch101: corefx-39686-cgroupv2-01.patch
-Patch102: corefx-39686-cgroupv2-02.patch
-Patch103: corefx-39633-cgroupv2-mountpoints.patch
+# dotnet/runtime PR 39044
+Patch100: runtime-39044-cmake-downgrade.patch
-# Add Fedora 33 RID to corefx
-Patch104: corefx-42871-fedora-33-rid.patch
+# TODO: upstream this patch
+# Do not strip debuginfo from (native/unmanaged) binaries
+Patch101: runtime-dont-strip.patch
-# Build with with hardening flags, including -pie
-Patch200: coreclr-hardening-flags.patch
-# Fix build with clang 10; Already applied at tarball-build time
-# Patch201: coreclr-clang10.patch
-
-# Build with with hardening flags, including -pie
-Patch300: core-setup-hardening-flags.patch
+# TODO: upstream this patch
+# Fix building with our additional CFLAGS/CXXFLAGS/LDFLAGS
+Patch102: runtime-flags-support.patch
# Disable telemetry by default; make it opt-in
-Patch500: cli-telemetry-optout.patch
+Patch500: sdk-telemetry-optout.patch
+# ExclusiveArch: aarch64 x86_64
ExclusiveArch: x86_64
BuildRequires: clang
@@ -99,8 +97,8 @@ BuildRequires: cmake
BuildRequires: coreutils
%if %{without bootstrap}
BuildRequires: dotnet-build-reference-packages
-BuildRequires: dotnet-sdk-3.1
-BuildRequires: dotnet-sdk-3.1-source-built-artifacts
+BuildRequires: dotnet-sdk-5.0
+BuildRequires: dotnet-sdk-5.0-source-built-artifacts
%endif
BuildRequires: findutils
BuildRequires: git
@@ -141,7 +139,7 @@ application to drive everything.
Version: %{sdk_rpm_version}
Summary: .NET Core CLI tools and runtime
-Requires: dotnet-sdk-3.1%{?_isa} >= %{sdk_rpm_version}-%{release}
+Requires: dotnet-sdk-5.0%{?_isa} >= %{sdk_rpm_version}-%{release}
%description -n dotnet
.NET Core is a fast, lightweight and modular platform for creating
@@ -171,7 +169,7 @@ It particularly focuses on creating console applications, web
applications and micro-services.
-%package -n dotnet-hostfxr-3.1
+%package -n dotnet-hostfxr-5.0
Version: %{host_rpm_version}
Summary: .NET Core command line host resolver
@@ -180,7 +178,7 @@ Summary: .NET Core command line host resolver
# provided by this package, or from a newer version of .NET Core
Requires: dotnet-host%{?_isa} >= %{host_rpm_version}-%{release}
-%description -n dotnet-hostfxr-3.1
+%description -n dotnet-hostfxr-5.0
The .NET Core host resolver contains the logic to resolve and select
the right version of the .NET Core SDK or runtime to use.
@@ -191,12 +189,12 @@ It particularly focuses on creating console applications, web
applications and micro-services.
-%package -n dotnet-runtime-3.1
+%package -n dotnet-runtime-5.0
Version: %{runtime_rpm_version}
-Summary: NET Core 3.1 runtime
+Summary: NET Core 5.0 runtime
-Requires: dotnet-hostfxr-3.1%{?_isa} >= %{host_rpm_version}-%{release}
+Requires: dotnet-hostfxr-5.0%{?_isa} >= %{host_rpm_version}-%{release}
# libicu is dlopen()ed
Requires: libicu%{?_isa}
@@ -205,7 +203,7 @@ Requires: libicu%{?_isa}
Provides: bundled(libunwind) = 1.3
%endif
-%description -n dotnet-runtime-3.1
+%description -n dotnet-runtime-5.0
The .NET Core runtime contains everything needed to run .NET Core applications.
It includes a high performance Virtual Machine as well as the framework
libraries used by .NET Core applications.
@@ -217,14 +215,14 @@ It particularly focuses on creating console applications, web
applications and micro-services.
-%package -n aspnetcore-runtime-3.1
+%package -n aspnetcore-runtime-5.0
Version: %{aspnetcore_runtime_rpm_version}
-Summary: ASP.NET Core 3.1 runtime
+Summary: ASP.NET Core 5.0 runtime
-Requires: dotnet-runtime-3.1%{?_isa} >= %{runtime_rpm_version}-%{release}
+Requires: dotnet-runtime-5.0%{?_isa} >= %{runtime_rpm_version}-%{release}
-%description -n aspnetcore-runtime-3.1
+%description -n aspnetcore-runtime-5.0
The ASP.NET Core runtime contains everything needed to run .NET Core
web applications. It includes a high performance Virtual Machine as
well as the framework libraries used by .NET Core applications.
@@ -236,16 +234,16 @@ It particularly focuses on creating console applications, web
applications and micro-services.
-%package -n dotnet-templates-3.1
+%package -n dotnet-templates-5.0
Version: %{sdk_rpm_version}
-Summary: .NET Core 3.1 templates
+Summary: .NET Core 5.0 templates
# Theoretically any version of the host should work. But lets aim for the one
# provided by this package, or from a newer version of .NET Core
Requires: dotnet-host%{?_isa} >= %{host_rpm_version}-%{release}
-%description -n dotnet-templates-3.1
+%description -n dotnet-templates-5.0
This package contains templates used by the .NET Core SDK.
ASP.NET Core is a fast, lightweight and modular platform for creating
@@ -255,25 +253,25 @@ It particularly focuses on creating console applications, web
applications and micro-services.
-%package -n dotnet-sdk-3.1
+%package -n dotnet-sdk-5.0
Version: %{sdk_rpm_version}
-Summary: .NET Core 3.1 Software Development Kit
+Summary: .NET Core 5.0 Software Development Kit
Provides: bundled(js-jquery)
Provides: bundled(npm)
-Requires: dotnet-runtime-3.1%{?_isa} >= %{runtime_rpm_version}-%{release}
-Requires: aspnetcore-runtime-3.1%{?_isa} >= %{aspnetcore_runtime_rpm_version}-%{release}
+Requires: dotnet-runtime-5.0%{?_isa} >= %{runtime_rpm_version}-%{release}
+Requires: aspnetcore-runtime-5.0%{?_isa} >= %{aspnetcore_runtime_rpm_version}-%{release}
-Requires: dotnet-apphost-pack-3.1%{?_isa} >= %{runtime_rpm_version}-%{release}
-Requires: dotnet-targeting-pack-3.1%{?_isa} >= %{runtime_rpm_version}-%{release}
-Requires: aspnetcore-targeting-pack-3.1%{?_isa} >= %{aspnetcore_runtime_rpm_version}-%{release}
+Requires: dotnet-apphost-pack-5.0%{?_isa} >= %{runtime_rpm_version}-%{release}
+Requires: dotnet-targeting-pack-5.0%{?_isa} >= %{runtime_rpm_version}-%{release}
+Requires: aspnetcore-targeting-pack-5.0%{?_isa} >= %{aspnetcore_runtime_rpm_version}-%{release}
Requires: netstandard-targeting-pack-2.1%{?_isa} >= %{sdk_rpm_version}-%{release}
-Requires: dotnet-templates-3.1%{?_isa} >= %{sdk_rpm_version}-%{release}
+Requires: dotnet-templates-5.0%{?_isa} >= %{sdk_rpm_version}-%{release}
-%description -n dotnet-sdk-3.1
+%description -n dotnet-sdk-5.0
The .NET Core SDK is a collection of command line applications to
create, build, publish and run .NET Core applications.
@@ -302,18 +300,18 @@ applications using the .NET Core SDK.
%{_libdir}/dotnet/packs/%{5}
}
-%dotnet_targeting_pack dotnet-apphost-pack-3.1 %{runtime_rpm_version} Microsoft.NETCore.App 3.1 Microsoft.NETCore.App.Host.%{runtime_id}
-%dotnet_targeting_pack dotnet-targeting-pack-3.1 %{runtime_rpm_version} Microsoft.NETCore.App 3.1 Microsoft.NETCore.App.Ref
-%dotnet_targeting_pack aspnetcore-targeting-pack-3.1 %{aspnetcore_runtime_rpm_version} Microsoft.AspNetCore.App 3.1 Microsoft.AspNetCore.App.Ref
+%dotnet_targeting_pack dotnet-apphost-pack-5.0 %{runtime_rpm_version} Microsoft.NETCore.App 5.0 Microsoft.NETCore.App.Host.%{runtime_id}
+%dotnet_targeting_pack dotnet-targeting-pack-5.0 %{runtime_rpm_version} Microsoft.NETCore.App 5.0 Microsoft.NETCore.App.Ref
+%dotnet_targeting_pack aspnetcore-targeting-pack-5.0 %{aspnetcore_runtime_rpm_version} Microsoft.AspNetCore.App 5.0 Microsoft.AspNetCore.App.Ref
%dotnet_targeting_pack netstandard-targeting-pack-2.1 %{sdk_rpm_version} NETStandard.Library 2.1 NETStandard.Library.Ref
-%package -n dotnet-sdk-3.1-source-built-artifacts
+%package -n dotnet-sdk-5.0-source-built-artifacts
Version: %{sdk_rpm_version}
-Summary: Internal package for building .NET Core 3.1 Software Development Kit
+Summary: Internal package for building .NET Core 5.0 Software Development Kit
-%description -n dotnet-sdk-3.1-source-built-artifacts
+%description -n dotnet-sdk-5.0-source-built-artifacts
The .NET Core source-built archive is a collection of packages needed
to build the .NET Core SDK itself.
@@ -321,7 +319,7 @@ These are not meant for general use.
%prep
-%setup -q -n dotnet-v%{src_version}-SDK
+%setup -q -n dotnet-v%{src_version}-preview4-SDK
%if %{without bootstrap}
# Remove all prebuilts
@@ -331,49 +329,43 @@ find -iname '*.tar.gz' -type f -delete
find -iname '*.nupkg' -type f -delete
find -iname '*.zip' -type f -delete
rm -rf .dotnet/
-rm -r packages/source-built
+rm -rf packages/source-built
%endif
%if %{without bootstrap}
-sed -i -e 's|3.1.100-preview1-014459|3.1.102|' global.json
+sed -i -e 's|5.0.100-preview1-014459|5.0.103|' global.json
mkdir -p packages/archive
ln -s %{_libdir}/dotnet/source-built-artifacts/*.tar.gz packages/archive/
ln -s %{_libdir}/dotnet/reference-packages/Private.SourceBuild.ReferencePackages*.tar.gz packages/archive
%endif
# Fix bad hardcoded path in build
-sed -i 's|/usr/share/dotnet|%{_libdir}/dotnet|' src/core-setup.*/src/corehost/common/pal.unix.cpp
+sed -i 's|/usr/share/dotnet|%{_libdir}/dotnet|' src/runtime.*/src/installer/corehost/cli/hostmisc/pal.unix.cpp
# Disable warnings
-sed -i 's|skiptests|skiptests ignorewarnings|' repos/coreclr.proj
+sed -i 's|skiptests|skiptests ignorewarnings|' repos/runtime.common.props
-pushd src/corefx.*
+pushd src/runtime.*
%patch100 -p1
%patch101 -p1
%patch102 -p1
-%patch103 -p1
-%patch104 -p1
-popd
-
-pushd src/coreclr.*
-%patch200 -p1
-#%%patch201 -p1
popd
-pushd src/core-setup.*
-%patch300 -p1
-popd
-
-pushd src/cli.*
+pushd src/sdk.*
%patch500 -p1
popd
# If CLR_CMAKE_USE_SYSTEM_LIBUNWIND=TRUE is misisng, add it back
-grep CLR_CMAKE_USE_SYSTEM_LIBUNWIND repos/coreclr.proj || \
- sed -i 's|\$(BuildArguments) </BuildArguments>|$(BuildArguments) cmakeargs -DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=TRUE</BuildArguments>|' repos/coreclr.proj
+grep CLR_CMAKE_USE_SYSTEM_LIBUNWIND repos/runtime.common.props || \
+ sed -i 's|\$(BuildArguments) </BuildArguments>|$(BuildArguments) cmakeargs -DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=TRUE</BuildArguments>|' repos/runtime.common.props
%if %{use_bundled_libunwind}
-sed -i 's|-DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=TRUE|-DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=FALSE|' repos/coreclr.proj
+sed -i 's|-DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=TRUE|-DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=FALSE|' repos/runtime.common.props
+%endif
+
+%ifnarch x86_64
+mkdir -p artifacts/obj/%{runtime_arch}/Release
+cp artifacts/obj/x64/Release/PackageVersions.props artifacts/obj/%{runtime_arch}/Release/PackageVersions.props
%endif
cat source-build-info.txt
@@ -389,9 +381,9 @@ cat /etc/os-release
cp -a %{_libdir}/dotnet previously-built-dotnet
%endif
-export CFLAGS="%{dotnet_cflags}"
-export CXXFLAGS="%{dotnet_cflags}"
-export LDFLAGS="%{dotnet_ldflags}"
+export EXTRA_CFLAGS="%{dotnet_cflags}"
+export EXTRA_CXXFLAGS="%{dotnet_cflags}"
+export EXTRA_LDFLAGS="%%{dotnet_ldflags}"
#%%if %%{without bootstrap}
# --with-ref-packages %%{_libdir}/dotnet/reference-packages/ \
@@ -416,11 +408,11 @@ sed -e 's|[@]LIBDIR[@]|%{_libdir}|g' %{SOURCE2} > dotnet.sh
%install
install -dm 0755 %{buildroot}%{_libdir}/dotnet
-ls bin/%{runtime_arch}/Release
-tar xf bin/%{runtime_arch}/Release/dotnet-sdk-%{sdk_version}-%{runtime_id}.tar.gz -C %{buildroot}%{_libdir}/dotnet/
+ls artifacts/%{runtime_arch}/Release
+tar xf artifacts/%{runtime_arch}/Release/dotnet-sdk-%{sdk_rpm_version}-preview.4.20161.13-%{runtime_id}.tar.gz -C %{buildroot}%{_libdir}/dotnet/
# Install managed symbols
-tar xf bin/%{runtime_arch}/Release/runtime/dotnet-runtime-symbols-%{runtime_version}-%{runtime_id}.tar.gz \
+tar xf artifacts/%{runtime_arch}/Release/runtime/dotnet-runtime-symbols-%{runtime_version}-%{runtime_id}.tar.gz \
-C %{buildroot}/%{_libdir}/dotnet/shared/Microsoft.NETCore.App/%{runtime_version}/
# Fix executable permissions on files
@@ -439,7 +431,7 @@ install dotnet.sh %{buildroot}%{_sysconfdir}/profile.d/
install -dm 0755 %{buildroot}/%{_datadir}/bash-completion/completions
# dynamic completion needs the file to be named the same as the base command
-install src/cli.*/scripts/register-completions.bash %{buildroot}/%{_datadir}/bash-completion/completions/dotnet
+install src/sdk.*/scripts/register-completions.bash %{buildroot}/%{_datadir}/bash-completion/completions/dotnet
# TODO: the zsh completion script needs to be ported to use #compdef
#install -dm 755 %%{buildroot}/%%{_datadir}/zsh/site-functions
@@ -455,8 +447,8 @@ echo "%{_libdir}/dotnet" >> install_location
install -dm 0755 %{buildroot}%{_sysconfdir}/dotnet
install install_location %{buildroot}%{_sysconfdir}/dotnet/
-install -dm 0755 %{buildroot}%{_libdir}/dotnet/source-built-artifacts
-install bin/%{runtime_arch}/Release/Private.SourceBuilt.Artifacts.*.tar.gz %{buildroot}/%{_libdir}/dotnet/source-built-artifacts/
+#install -dm 0755 %%{buildroot}%%{_libdir}/dotnet/source-built-artifacts
+#install artifacts/%%{runtime_arch}/Release/Private.SourceBuilt.Artifacts.*.tar.gz %%{buildroot}/%%{_libdir}/dotnet/source-built-artifacts/
# Check debug symbols in all elf objects. This is not in %%check
# because native binaries are stripped by rpm-build after %%install.
@@ -487,35 +479,60 @@ echo "Testing build results for debug symbols..."
%dir %{_datadir}/bash-completion/completions
%{_datadir}/bash-completion/completions/dotnet
-%files -n dotnet-hostfxr-3.1
+%files -n dotnet-hostfxr-5.0
%dir %{_libdir}/dotnet/host/fxr
%{_libdir}/dotnet/host/fxr/%{host_version}
-%files -n dotnet-runtime-3.1
+%files -n dotnet-runtime-5.0
%dir %{_libdir}/dotnet/shared
%dir %{_libdir}/dotnet/shared/Microsoft.NETCore.App
%{_libdir}/dotnet/shared/Microsoft.NETCore.App/%{runtime_version}
-%files -n aspnetcore-runtime-3.1
+%files -n aspnetcore-runtime-5.0
%dir %{_libdir}/dotnet/shared
%dir %{_libdir}/dotnet/shared/Microsoft.AspNetCore.App
%{_libdir}/dotnet/shared/Microsoft.AspNetCore.App/%{aspnetcore_runtime_version}
-%files -n dotnet-templates-3.1
+%files -n dotnet-templates-5.0
%dir %{_libdir}/dotnet/templates
%{_libdir}/dotnet/templates/%{templates_version}
-%files -n dotnet-sdk-3.1
+%files -n dotnet-sdk-5.0
%dir %{_libdir}/dotnet/sdk
%{_libdir}/dotnet/sdk/%{sdk_version}
%dir %{_libdir}/dotnet/packs
-%files -n dotnet-sdk-3.1-source-built-artifacts
-%dir %{_libdir}/dotnet
-%{_libdir}/dotnet/source-built-artifacts
+#%%files -n dotnet-sdk-5.0-source-built-artifacts
+#%%dir %%{_libdir}/dotnet
+#%%{_libdir}/dotnet/source-built-artifacts
%changelog
+* Fri Jul 10 2020 Omair Majid <omajid(a)redhat.com> - 5.0.100-0.2.preview4
+- Fix building with custom CFLAGS/CXXFLAGS/LDFLAGS
+- Clean up patches
+
+* Mon Jul 06 2020 Omair Majid <omajid(a)redhat.com> - 5.0.100-0.1.preview4
+- Initial build
+
+* Sat Jun 27 2020 Omair Majid <omajid(a)redhat.com> - 3.1.105-4
+- Disable bootstrap
+
+* Fri Jun 26 2020 Omair Majid <omajid(a)redhat.com> - 3.1.105-3
+- Re-bootstrap aarch64
+
+* Fri Jun 19 2020 Omair Majid <omajid(a)redhat.com> - 3.1.105-3
+- Disable bootstrap
+
+* Thu Jun 18 2020 Omair Majid <omajid(a)redhat.com> - 3.1.105-1
+- Bootstrap aarch64
+
+* Tue Jun 16 2020 Chris Rummel <crummel(a)microsoft.com> - 3.1.105-1
+- Update to .NET Core Runtime 3.1.5 and SDK 3.1.105
+
+* Fri Jun 05 2020 Chris Rummel <crummel(a)microsoft.com> - 3.1.104-1
+- Update to .NET Core Runtime 3.1.4 and SDK 3.1.104
+
* Thu Apr 09 2020 Chris Rummel <crummel(a)microsoft.com> - 3.1.103-1
- Update to .NET Core Runtime 3.1.3 and SDK 3.1.103
@@ -716,4 +733,3 @@ echo "Testing build results for debug symbols..."
- SPEC file cleanup
* Wed Jan 11 2017 Nemanja Milosevic <nmilosev(a)fedoraproject.org> - 1.1.0-0
- Initial RPM for Fedora 25/26.
-
diff --git a/runtime-39044-cmake-downgrade.patch b/runtime-39044-cmake-downgrade.patch
new file mode 100644
index 0000000..71938d0
--- /dev/null
+++ b/runtime-39044-cmake-downgrade.patch
@@ -0,0 +1,1158 @@
+diff --git a/eng/common/cross/toolchain.cmake b/eng/common/cross/toolchain.cmake
+index 534f1d19de6..50d81842274 100644
+--- a/eng/common/cross/toolchain.cmake
++++ b/eng/common/cross/toolchain.cmake
+@@ -83,15 +83,26 @@ endif()
+
+ # Specify link flags
+
++function(add_toolchain_linker_flag Flag)
++ set(Config "${ARGV1}")
++ set(CONFIG_SUFFIX "")
++ if (NOT Config STREQUAL "")
++ set(CONFIG_SUFFIX "_${Config}")
++ endif()
++ set("CMAKE_EXE_LINKER_FLAGS${CONFIG_SUFFIX}" "${CMAKE_EXE_LINKER_FLAGS${CONFIG_SUFFIX}} ${Flag}" PARENT_SCOPE)
++ set("CMAKE_SHARED_LINKER_FLAGS${CONFIG_SUFFIX}" "${CMAKE_SHARED_LINKER_FLAGS${CONFIG_SUFFIX}} ${Flag}" PARENT_SCOPE)
++endfunction()
++
++
+ if(TARGET_ARCH_NAME STREQUAL "armel")
+ if(DEFINED TIZEN_TOOLCHAIN) # For Tizen only
+- add_link_options("-B${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}")
+- add_link_options("-L${CROSS_ROOTFS}/lib")
+- add_link_options("-L${CROSS_ROOTFS}/usr/lib")
+- add_link_options("-L${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}")
++ add_toolchain_linker_flag("-B${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}")
++ add_toolchain_linker_flag("-L${CROSS_ROOTFS}/lib")
++ add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib")
++ add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}")
+ endif()
+ elseif(TARGET_ARCH_NAME STREQUAL "x86")
+- add_link_options(-m32)
++ add_toolchain_linker_flag(-m32)
+ endif()
+
+ # Specify compile options
+diff --git a/eng/native/build-commons.sh b/eng/native/build-commons.sh
+index a1a975ce177..9a0c296ff66 100755
+--- a/eng/native/build-commons.sh
++++ b/eng/native/build-commons.sh
+@@ -51,12 +51,9 @@ check_prereqs()
+ # Check presence of CMake on the path
+ command -v cmake 2>/dev/null || { echo >&2 "Please install cmake before running this script"; exit 1; }
+
+- function version { echo "$@" | awk -F. '{ printf("%d%02d%02d\n", $1,$2,$3); }'; }
+-
+- local cmake_version="$(cmake --version | awk '/^cmake version [0-9]+\.[0-9]+\.[0-9]+$/ {print $3}')"
+-
+- if [[ "$(version "$cmake_version")" -lt "$(version 3.14.2)" ]]; then
+- echo "Please install CMake 3.14.2 or newer from http://www.cmake.org/download/ or https://apt.kitware.com and ensure it is on your path."; exit 1;
++ if [[ "$__HostOS" == "OSX" ]]; then
++ # Check presence of pkg-config on the path
++ command -v pkg-config 2>/dev/null || { echo >&2 "Please install pkg-config before running this script, see https://github.com/dotnet/runtime/blob/master/docs/workflow/requirements/..."; exit 1; }
+ fi
+
+ if [[ "$__UseNinja" == 1 ]]; then
+@@ -156,8 +153,8 @@ build_native()
+ cmake_command="emcmake $cmake_command"
+ fi
+
+- echo "Executing $cmake_command --build \"$intermediatesDir\" --target install -j $__NumProc"
+- $cmake_command --build "$intermediatesDir" --target install -j "$__NumProc"
++ echo "Executing $cmake_command --build \"$intermediatesDir\" --target install -- -j $__NumProc"
++ $cmake_command --build "$intermediatesDir" --target install -- -j "$__NumProc"
+ fi
+
+ local exit_code="$?"
+diff --git a/eng/native/configurecompiler.cmake b/eng/native/configurecompiler.cmake
+index 2937916ced9..07fd6f75f6f 100644
+--- a/eng/native/configurecompiler.cmake
++++ b/eng/native/configurecompiler.cmake
+@@ -8,8 +8,6 @@ set(CMAKE_C_STANDARD_REQUIRED ON)
+ set(CMAKE_CXX_STANDARD 11)
+ set(CMAKE_CXX_STANDARD_REQUIRED ON)
+
+-cmake_policy(SET CMP0083 NEW)
+-
+ include(CheckCXXCompilerFlag)
+
+ # "configureoptimization.cmake" must be included after CLR_CMAKE_HOST_UNIX has been set.
+@@ -40,11 +38,18 @@ set(CMAKE_CXX_FLAGS_CHECKED "")
+ set(CMAKE_EXE_LINKER_FLAGS_CHECKED "")
+ set(CMAKE_SHARED_LINKER_FLAGS_CHECKED "")
+
++set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "")
++set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "")
++set(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "")
++set(CMAKE_EXE_LINKER_FLAGS_DEBUG "")
++set(CMAKE_EXE_LINKER_FLAGS_DEBUG "")
++set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "")
++
+ add_compile_definitions("$<$<OR:$<CONFIG:DEBUG>,$<CONFIG:CHECKED>>:DEBUG;_DEBUG;_DBG;URTBLDENV_FRIENDLY=Checked;BUILDENV_CHECKED=1>")
+ add_compile_definitions("$<$<OR:$<CONFIG:RELEASE>,$<CONFIG:RELWITHDEBINFO>>:NDEBUG;URTBLDENV_FRIENDLY=Retail>")
+
+ if (MSVC)
+- add_link_options(/GUARD:CF)
++ add_linker_flag(/GUARD:CF)
+
+ # Linker flags
+ #
+@@ -57,48 +62,51 @@ if (MSVC)
+ endif ()
+
+ #Do not create Side-by-Side Assembly Manifest
+- add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:/MANIFEST:NO>)
++ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /MANIFEST:NO")
+ # can handle addresses larger than 2 gigabytes
+- add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:/LARGEADDRESSAWARE>)
++ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /LARGEADDRESSAWARE")
+ #Compatible with Data Execution Prevention
+- add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:/NXCOMPAT>)
++ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /NXCOMPAT")
+ #Use address space layout randomization
+- add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:/DYNAMICBASE>)
++ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /DYNAMICBASE")
+ #shrink pdb size
+- add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:/PDBCOMPRESS>)
++ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /PDBCOMPRESS")
+
+- add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:/DEBUG>)
+- add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:/IGNORE:4197,4013,4254,4070,4221>)
+- add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:/SUBSYSTEM:WINDOWS,${WINDOWS_SUBSYSTEM_VERSION}>)
++ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /DEBUG")
++ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /IGNORE:4197,4013,4254,4070,4221")
++ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /SUBSYSTEM:WINDOWS,${WINDOWS_SUBSYSTEM_VERSION}")
+
+ set(CMAKE_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKER_FLAGS} /IGNORE:4221")
+
+- add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>:/DEBUG>)
+- add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>:/PDBCOMPRESS>)
+- add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>:/STACK:1572864>)
++ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /DEBUG")
++ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /PDBCOMPRESS")
++ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:1572864")
+
+ # Debug build specific flags
+- add_link_options($<$<AND:$<OR:$<CONFIG:DEBUG>,$<CONFIG:CHECKED>>,$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>>:/NOVCFEATURE>)
++ set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} /NOVCFEATURE")
++ set(CMAKE_SHARED_LINKER_FLAGS_CHECKED "${CMAKE_SHARED_LINKER_FLAGS_CHECKED} /NOVCFEATURE")
+
+ # Checked build specific flags
+- add_link_options($<$<CONFIG:CHECKED>:/INCREMENTAL:NO>) # prevent "warning LNK4075: ignoring '/INCREMENTAL' due to '/OPT:REF' specification"
+- add_link_options($<$<CONFIG:CHECKED>:/OPT:REF>)
+- add_link_options($<$<CONFIG:CHECKED>:/OPT:NOICF>)
++ add_linker_flag(/INCREMENTAL:NO CHECKED) # prevent "warning LNK4075: ignoring '/INCREMENTAL' due to '/OPT:REF' specification"
++ add_linker_flag(/OPT:REF CHECKED)
++ add_linker_flag(/OPT:NOICF CHECKED)
+
+ # Release build specific flags
+- add_link_options($<$<CONFIG:RELEASE>:/LTCG>)
+- add_link_options($<$<CONFIG:RELEASE>:/OPT:REF>)
+- add_link_options($<$<CONFIG:RELEASE>:/OPT:ICF>)
++ add_linker_flag(/LTCG RELEASE)
++ add_linker_flag(/OPT:REF RELEASE)
++ add_linker_flag(/OPT:ICF RELEASE)
++ add_linker_flag(/INCREMENTAL:NO RELEASE)
+ set(CMAKE_STATIC_LINKER_FLAGS_RELEASE "${CMAKE_STATIC_LINKER_FLAGS_RELEASE} /LTCG")
+
+ # ReleaseWithDebugInfo build specific flags
+- add_link_options($<$<CONFIG:RELWITHDEBINFO>:/LTCG>)
+- add_link_options($<$<CONFIG:RELWITHDEBINFO>:/OPT:REF>)
+- add_link_options($<$<CONFIG:RELWITHDEBINFO>:/OPT:ICF>)
++ add_linker_flag(/LTCG RELWITHDEBINFO)
++ add_linker_flag(/OPT:REF RELWITHDEBINFO)
++ add_linker_flag(/OPT:ICF RELWITHDEBINFO)
+ set(CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO} /LTCG")
+
+ # Force uCRT to be dynamically linked for Release build
+- add_link_options("$<$<CONFIG:RELEASE>:/NODEFAULTLIB:libucrt.lib;/DEFAULTLIB:ucrt.lib>")
++ add_linker_flag(/NODEFAULTLIB:libucrt.lib RELEASE)
++ add_linker_flag(/DEFAULTLIB:ucrt.lib RELEASE)
+
+ elseif (CLR_CMAKE_HOST_UNIX)
+ # Set the values to display when interactively configuring CMAKE_BUILD_TYPE
+@@ -157,11 +165,10 @@ elseif (CLR_CMAKE_HOST_UNIX)
+
+ # -fdata-sections -ffunction-sections: each function has own section instead of one per .o file (needed for --gc-sections)
+ # -O1: optimization level used instead of -O0 to avoid compile error "invalid operand for inline asm constraint"
+- add_compile_definitions("$<$<OR:$<CONFIG:DEBUG>,$<CONFIG:CHECKED>>:${CLR_SANITIZE_CXX_OPTIONS};-fdata-sections;--ffunction-sections;-O1>")
+- add_link_options($<$<AND:$<OR:$<CONFIG:DEBUG>,$<CONFIG:CHECKED>>,$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>>:${CLR_SANITIZE_LINK_OPTIONS}>)
+-
++ add_compile_options("$<$<OR:$<CONFIG:DEBUG>,$<CONFIG:CHECKED>>:${CLR_SANITIZE_CXX_OPTIONS};-fdata-sections;--ffunction-sections;-O1>")
++ add_linker_flag("${CLR_SANITIZE_LINK_OPTIONS}" DEBUG CHECKED)
+ # -Wl and --gc-sections: drop unused sections\functions (similar to Windows /Gy function-level-linking)
+- add_link_options("$<$<AND:$<OR:$<CONFIG:DEBUG>,$<CONFIG:CHECKED>>,$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>>:${CLR_SANITIZE_LINK_OPTIONS};-Wl,--gc-sections>")
++ add_linker_flag("-Wl,--gc-sections" DEBUG CHECKED)
+ endif ()
+ endif(UPPERCASE_CMAKE_BUILD_TYPE STREQUAL DEBUG OR UPPERCASE_CMAKE_BUILD_TYPE STREQUAL CHECKED)
+ endif(MSVC)
+@@ -173,15 +180,18 @@ endif(MSVC)
+ # ./build-native.sh cmakeargs "-DCLR_ADDITIONAL_COMPILER_OPTIONS=<...>" cmakeargs "-DCLR_ADDITIONAL_LINKER_FLAGS=<...>"
+ #
+ if(CLR_CMAKE_HOST_UNIX)
+- add_link_options(${CLR_ADDITIONAL_LINKER_FLAGS})
++ foreach(ADDTL_LINKER_FLAG ${CLR_ADDITIONAL_LINKER_FLAGS})
++ add_linker_flag(${ADDTL_LINKER_FLAG})
++ endforeach()
+ endif(CLR_CMAKE_HOST_UNIX)
+
+ if(CLR_CMAKE_HOST_LINUX)
+ add_compile_options($<$<COMPILE_LANGUAGE:ASM>:-Wa,--noexecstack>)
+- add_link_options(-Wl,--build-id=sha1 -Wl,-z,relro,-z,now)
++ add_linker_flag(-Wl,--build-id=sha1)
++ add_linker_flag(-Wl,-z,relro,-z,now)
+ elseif(CLR_CMAKE_HOST_FREEBSD)
+ add_compile_options($<$<COMPILE_LANGUAGE:ASM>:-Wa,--noexecstack>)
+- add_link_options(LINKER:--build-id=sha1)
++ add_linker_flag("-Wl,--build-id=sha1")
+ elseif(CLR_CMAKE_HOST_SUNOS)
+ set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} /opt/local/include)
+ set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} /opt/local/lib)
+@@ -357,7 +367,7 @@ if (CLR_CMAKE_HOST_UNIX)
+ if(CLR_CMAKE_HOST_OSX)
+ set(MACOS_VERSION_MIN_FLAGS -mmacosx-version-min=10.12)
+ add_compile_options(${MACOS_VERSION_MIN_FLAGS})
+- add_link_options(${MACOS_VERSION_MIN_FLAGS})
++ add_linker_flag(${MACOS_VERSION_MIN_FLAGS})
+ endif(CLR_CMAKE_HOST_OSX)
+ endif(CLR_CMAKE_HOST_UNIX)
+
+@@ -514,7 +524,7 @@ if(CLR_CMAKE_ENABLE_CODE_COVERAGE)
+
+ add_compile_options(-fprofile-arcs)
+ add_compile_options(-ftest-coverage)
+- add_link_options(--coverage)
++ add_linker_flag(--coverage)
+ else()
+ message(FATAL_ERROR "Code coverage builds not supported on current platform")
+ endif(CLR_CMAKE_HOST_UNIX)
+diff --git a/eng/native/configureplatform.cmake b/eng/native/configureplatform.cmake
+index 1c5254d8496..4a4131cb05d 100644
+--- a/eng/native/configureplatform.cmake
++++ b/eng/native/configureplatform.cmake
+@@ -1,4 +1,3 @@
+-include(CheckPIESupported)
+ include(${CMAKE_CURRENT_LIST_DIR}/functions.cmake)
+
+ # If set, indicates that this is not an officially supported release
+@@ -363,19 +362,10 @@ if(NOT CLR_CMAKE_TARGET_EMSCRIPTEN)
+ # but since we know that PIE is supported, we can safely skip this redundant check).
+ #
+ # The default linker on Solaris also does not support PIE.
+- if(NOT CLR_CMAKE_TARGET_ANDROID AND NOT CLR_CMAKE_TARGET_SUNOS)
+- # All code we build should be compiled as position independent
+- get_property(languages GLOBAL PROPERTY ENABLED_LANGUAGES)
+- if("CXX" IN_LIST languages)
+- set(CLR_PIE_LANGUAGE CXX)
+- else()
+- set(CLR_PIE_LANGUAGE C)
+- endif()
+- check_pie_supported(OUTPUT_VARIABLE PIE_SUPPORT_OUTPUT LANGUAGES ${CLR_PIE_LANGUAGE})
+- if(NOT MSVC AND NOT CMAKE_${CLR_PIE_LANGUAGE}_LINK_PIE_SUPPORTED)
+- message(WARNING "PIE is not supported at link time: ${PIE_SUPPORT_OUTPUT}.\n"
+- "PIE link options will not be passed to linker.")
+- endif()
++ if(NOT CLR_CMAKE_TARGET_ANDROID AND NOT CLR_CMAKE_TARGET_SUNOS AND NOT CLR_CMAKE_TARGET_OSX AND NOT CLR_CMAKE_HOST_TVOS AND NOT CLR_CMAKE_HOST_IOS AND NOT MSVC)
++ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pie")
++ add_compile_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>:-fPIE>)
++ add_compile_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:-fPIC>)
+ endif()
+
+ set(CMAKE_POSITION_INDEPENDENT_CODE ON)
+diff --git a/eng/native/functions.cmake b/eng/native/functions.cmake
+index b7f8f463804..f4a96cbe35e 100644
+--- a/eng/native/functions.cmake
++++ b/eng/native/functions.cmake
+@@ -123,7 +123,7 @@ function(preprocess_compile_asm)
+ set(options "")
+ set(oneValueArgs OUTPUT_OBJECTS)
+ set(multiValueArgs ASM_FILES)
+- cmake_parse_arguments(PARSE_ARGV 0 COMPILE_ASM "${options}" "${oneValueArgs}" "${multiValueArgs}")
++ cmake_parse_arguments(COMPILE_ASM "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGV})
+
+ get_include_directories_asm(ASM_INCLUDE_DIRECTORIES)
+
+@@ -209,7 +209,7 @@ function(target_precompile_header)
+ set(options "")
+ set(oneValueArgs TARGET HEADER)
+ set(multiValueArgs ADDITIONAL_INCLUDE_DIRECTORIES)
+- cmake_parse_arguments(PARSE_ARGV 0 PRECOMPILE_HEADERS "${options}" "${oneValueArgs}" "${multiValueArgs}")
++ cmake_parse_arguments(PRECOMPILE_HEADERS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGV})
+
+ if ("${PRECOMPILE_HEADERS_TARGET}" STREQUAL "")
+ message(SEND_ERROR "No target supplied to target_precompile_header.")
+@@ -321,7 +321,7 @@ endfunction()
+ function(install_clr)
+ set(oneValueArgs ADDITIONAL_DESTINATION)
+ set(multiValueArgs TARGETS)
+- cmake_parse_arguments(PARSE_ARGV 0 INSTALL_CLR "${options}" "${oneValueArgs}" "${multiValueArgs}")
++ cmake_parse_arguments(INSTALL_CLR "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGV})
+
+ if ("${INSTALL_CLR_TARGETS}" STREQUAL "")
+ message(FATAL_ERROR "At least one target must be passed to install_clr(TARGETS )")
+@@ -377,6 +377,15 @@ function(disable_pax_mprotect targetName)
+ endif()
+ endfunction()
+
++if (CMAKE_VERSION VERSION_LESS "3.12")
++ # Polyfill add_compile_definitions when it is unavailable
++ function(add_compile_definitions)
++ get_directory_property(DIR_COMPILE_DEFINITIONS COMPILE_DEFINITIONS)
++ list(APPEND DIR_COMPILE_DEFINITIONS ${ARGV})
++ set_directory_properties(PROPERTIES COMPILE_DEFINITIONS "${DIR_COMPILE_DEFINITIONS}")
++ endfunction()
++endif()
++
+ function(_add_executable)
+ if(NOT WIN32)
+ add_executable(${ARGV} ${VERSION_FILE_PATH})
+@@ -415,3 +424,16 @@ endfunction()
+ function(add_executable_clr)
+ _add_executable(${ARGV})
+ endfunction()
++
++# add_linker_flag(Flag [Config1 Config2 ...])
++function(add_linker_flag Flag)
++ if (ARGN STREQUAL "")
++ set("CMAKE_EXE_LINKER_FLAGS" "${CMAKE_EXE_LINKER_FLAGS} ${Flag}" PARENT_SCOPE)
++ set("CMAKE_SHARED_LINKER_FLAGS" "${CMAKE_SHARED_LINKER_FLAGS} ${Flag}" PARENT_SCOPE)
++ else()
++ foreach(Config ${ARGN})
++ set("CMAKE_EXE_LINKER_FLAGS_${Config}" "${CMAKE_EXE_LINKER_FLAGS_${Config}} ${Flag}" PARENT_SCOPE)
++ set("CMAKE_SHARED_LINKER_FLAGS_${Config}" "${CMAKE_SHARED_LINKER_FLAGS_${Config}} ${Flag}" PARENT_SCOPE)
++ endforeach()
++ endif()
++endfunction()
+diff --git a/eng/native/gen-buildsys.sh b/eng/native/gen-buildsys.sh
+index f27bb33e357..1b4c2e02c59 100755
+--- a/eng/native/gen-buildsys.sh
++++ b/eng/native/gen-buildsys.sh
+@@ -91,6 +91,9 @@ if [[ "$build_arch" == "wasm" ]]; then
+ cmake_command="emcmake $cmake_command"
+ fi
+
++# We have to be able to build with CMake 3.6.2, so we can't use the -S or -B options
++pushd "$3"
++
+ # Include CMAKE_USER_MAKE_RULES_OVERRIDE as uninitialized since it will hold its value in the CMake cache otherwise can cause issues when branch switching
+ $cmake_command \
+ -G "$generator" \
+@@ -98,5 +101,6 @@ $cmake_command \
+ "-DCMAKE_INSTALL_PREFIX=$__CMakeBinDir" \
+ $cmake_extra_defines \
+ $__UnprocessedCMakeArgs \
+- -S "$1" \
+- -B "$3"
++ "$1"
++
++popd
+diff --git a/src/coreclr/CMakeLists.txt b/src/coreclr/CMakeLists.txt
+index 5fa572c4fcd..071ac2cf5fa 100644
+--- a/src/coreclr/CMakeLists.txt
++++ b/src/coreclr/CMakeLists.txt
+@@ -1,4 +1,4 @@
+-cmake_minimum_required(VERSION 3.14.2)
++cmake_minimum_required(VERSION 3.6.2)
+
+ cmake_policy(SET CMP0042 NEW)
+
+diff --git a/src/coreclr/pgosupport.cmake b/src/coreclr/pgosupport.cmake
+index 4b119809017..04bde2bc20b 100644
+--- a/src/coreclr/pgosupport.cmake
++++ b/src/coreclr/pgosupport.cmake
+@@ -1,5 +1,18 @@
+-include(CheckIPOSupported)
+-check_ipo_supported(RESULT HAVE_LTO)
++include(CheckCXXSourceCompiles)
++include(CheckCXXCompilerFlag)
++
++# VC++ guarantees support for LTCG (LTO's equivalent)
++if(NOT WIN32)
++ # Function required to give CMAKE_REQUIRED_* local scope
++ function(check_have_lto)
++ set(CMAKE_REQUIRED_FLAGS -flto)
++ set(CMAKE_REQUIRED_LIBRARIES -flto -fuse-ld=gold)
++ check_cxx_source_compiles("int main() { return 0; }" HAVE_LTO)
++ endfunction(check_have_lto)
++ check_have_lto()
++
++ check_cxx_compiler_flag(-faligned-new COMPILER_SUPPORTS_F_ALIGNED_NEW)
++endif(NOT WIN32)
+
+ # Adds Profile Guided Optimization (PGO) flags to the current target
+ function(add_pgo TargetName)
+diff --git a/src/coreclr/src/ToolBox/SOS/DacTableGen/CMakeLists.txt b/src/coreclr/src/ToolBox/SOS/DacTableGen/CMakeLists.txt
+index dcd39e346c9..7b471d53726 100644
+--- a/src/coreclr/src/ToolBox/SOS/DacTableGen/CMakeLists.txt
++++ b/src/coreclr/src/ToolBox/SOS/DacTableGen/CMakeLists.txt
+@@ -1,3 +1,4 @@
++cmake_minimum_required(VERSION 3.8)
+ # Quick note: The CMake C# support is using the CSC bundled with the MSBuild that the native build runs on, not the one supplied by the local .NET SDK.
+
+ project(DacTableGen LANGUAGES CSharp)
+diff --git a/src/coreclr/src/binder/CMakeLists.txt b/src/coreclr/src/binder/CMakeLists.txt
+index 3a66c81e10e..208f1214dd0 100644
+--- a/src/coreclr/src/binder/CMakeLists.txt
++++ b/src/coreclr/src/binder/CMakeLists.txt
+@@ -82,11 +82,13 @@ endif(CLR_CMAKE_TARGET_WIN32)
+ convert_to_absolute_path(BINDER_SOURCES ${BINDER_SOURCES})
+ convert_to_absolute_path(BINDER_CROSSGEN_SOURCES ${BINDER_CROSSGEN_SOURCES})
+
+-add_library_clr(v3binder
+- STATIC
++add_library_clr(v3binder_obj
++ OBJECT
+ ${BINDER_SOURCES}
+ )
+-add_dependencies(v3binder eventing_headers)
++add_dependencies(v3binder_obj eventing_headers)
++add_library(v3binder INTERFACE)
++target_sources(v3binder INTERFACE $<TARGET_OBJECTS:v3binder_obj>)
+
+ add_library_clr(v3binder_crossgen
+ STATIC
+diff --git a/src/coreclr/src/classlibnative/bcltype/CMakeLists.txt b/src/coreclr/src/classlibnative/bcltype/CMakeLists.txt
+index 391f70eff43..fdcf344c16a 100644
+--- a/src/coreclr/src/classlibnative/bcltype/CMakeLists.txt
++++ b/src/coreclr/src/classlibnative/bcltype/CMakeLists.txt
+@@ -10,9 +10,11 @@ set(BCLTYPE_SOURCES
+ variant.cpp
+ )
+
+-add_library_clr(bcltype
+- STATIC
++add_library_clr(bcltype_obj
++ OBJECT
+ ${BCLTYPE_SOURCES}
+ )
+
+-add_dependencies(bcltype eventing_headers)
++add_dependencies(bcltype_obj eventing_headers)
++add_library(bcltype INTERFACE)
++target_sources(bcltype INTERFACE $<TARGET_OBJECTS:bcltype_obj>)
+diff --git a/src/coreclr/src/classlibnative/float/CMakeLists.txt b/src/coreclr/src/classlibnative/float/CMakeLists.txt
+index 44d40c92592..3c066620f76 100644
+--- a/src/coreclr/src/classlibnative/float/CMakeLists.txt
++++ b/src/coreclr/src/classlibnative/float/CMakeLists.txt
+@@ -7,9 +7,12 @@ set(FLOAT_SOURCES
+ floatsingle.cpp
+ )
+
+-add_library_clr(comfloat_wks
+- STATIC
++add_library_clr(comfloat_wks_obj
++ OBJECT
+ ${FLOAT_SOURCES}
+ )
+
+-add_dependencies(comfloat_wks eventing_headers)
++add_dependencies(comfloat_wks_obj eventing_headers)
++
++add_library(comfloat_wks INTERFACE)
++target_sources(comfloat_wks INTERFACE $<TARGET_OBJECTS:comfloat_wks_obj>)
+diff --git a/src/coreclr/src/debug/debug-pal/CMakeLists.txt b/src/coreclr/src/debug/debug-pal/CMakeLists.txt
+index ac1e48fb5fb..213fa59e784 100644
+--- a/src/coreclr/src/debug/debug-pal/CMakeLists.txt
++++ b/src/coreclr/src/debug/debug-pal/CMakeLists.txt
+@@ -34,4 +34,6 @@ if(CLR_CMAKE_HOST_UNIX)
+
+ endif(CLR_CMAKE_HOST_UNIX)
+
+-_add_library(debug-pal STATIC ${TWO_WAY_PIPE_SOURCES})
++_add_library(debug-pal_obj OBJECT ${TWO_WAY_PIPE_SOURCES})
++add_library(debug-pal INTERFACE)
++target_sources(debug-pal INTERFACE $<TARGET_OBJECTS:debug-pal_obj>)
+diff --git a/src/coreclr/src/debug/ee/wks/CMakeLists.txt b/src/coreclr/src/debug/ee/wks/CMakeLists.txt
+index ee6c482ce76..3dd5e3612df 100644
+--- a/src/coreclr/src/debug/ee/wks/CMakeLists.txt
++++ b/src/coreclr/src/debug/ee/wks/CMakeLists.txt
+@@ -9,9 +9,9 @@ if (CLR_CMAKE_TARGET_WIN32)
+
+ if(CLR_CMAKE_HOST_ARCH_ARM OR CLR_CMAKE_HOST_ARCH_ARM64)
+
+- preprocess_compile_asm(ASM_FILES ${ASM_FILE} OUTPUT_OBJECTS ASM_OBJECTS)
++ preprocess_compile_asm(TARGET cordbee_wks_obj ASM_FILES ${ASM_FILE} OUTPUT_OBJECTS ASM_OBJECTS)
+
+- add_library_clr(cordbee_wks ${CORDBEE_SOURCES_WKS} ${ASM_OBJECTS})
++ add_library_clr(cordbee_wks_obj OBJECT ${CORDBEE_SOURCES_WKS} ${ASM_FILE} ${ASM_OBJECTS})
+
+ else ()
+
+@@ -23,19 +23,21 @@ if (CLR_CMAKE_TARGET_WIN32)
+
+ set_source_files_properties(${ASM_FILE} PROPERTIES COMPILE_OPTIONS "${ASM_OPTIONS}")
+
+- add_library_clr(cordbee_wks ${CORDBEE_SOURCES_WKS} ${ASM_FILE})
++ add_library_clr(cordbee_wks_obj OBJECT ${CORDBEE_SOURCES_WKS} ${ASM_FILE})
+
+ endif()
+
+ else ()
+
+ if(CLR_CMAKE_HOST_ARCH_AMD64 OR CLR_CMAKE_HOST_ARCH_ARM OR CLR_CMAKE_HOST_ARCH_ARM64 OR CLR_CMAKE_HOST_ARCH_I386)
+- add_library_clr(cordbee_wks ${CORDBEE_SOURCES_WKS} ../${ARCH_SOURCES_DIR}/dbghelpers.S)
++ add_library_clr(cordbee_wks_obj OBJECT ${CORDBEE_SOURCES_WKS} ../${ARCH_SOURCES_DIR}/dbghelpers.S)
+ else()
+ message(FATAL_ERROR "Unknown platform")
+ endif()
+
+ endif (CLR_CMAKE_TARGET_WIN32)
+
+-target_precompile_header(TARGET cordbee_wks HEADER stdafx.h)
+-add_dependencies(cordbee_wks eventing_headers)
++target_precompile_header(TARGET cordbee_wks_obj HEADER stdafx.h)
++add_dependencies(cordbee_wks_obj eventing_headers)
++add_library(cordbee_wks INTERFACE)
++target_sources(cordbee_wks INTERFACE $<TARGET_OBJECTS:cordbee_wks_obj>)
+diff --git a/src/coreclr/src/debug/ildbsymlib/CMakeLists.txt b/src/coreclr/src/debug/ildbsymlib/CMakeLists.txt
+index 88364658f11..362da1f6483 100644
+--- a/src/coreclr/src/debug/ildbsymlib/CMakeLists.txt
++++ b/src/coreclr/src/debug/ildbsymlib/CMakeLists.txt
+@@ -10,5 +10,6 @@ set( ILDBSYMLIB_SOURCES
+ symwrite.cpp
+ )
+
+-add_library_clr(ildbsymlib ${ILDBSYMLIB_SOURCES})
+-
++add_library_clr(ildbsymlib_obj OBJECT ${ILDBSYMLIB_SOURCES})
++add_library(ildbsymlib INTERFACE)
++target_sources(ildbsymlib INTERFACE $<TARGET_OBJECTS:ildbsymlib_obj>)
+diff --git a/src/coreclr/src/dlls/mscoree/coreclr/CMakeLists.txt b/src/coreclr/src/dlls/mscoree/coreclr/CMakeLists.txt
+index 777a2869e4f..066b75ab01f 100644
+--- a/src/coreclr/src/dlls/mscoree/coreclr/CMakeLists.txt
++++ b/src/coreclr/src/dlls/mscoree/coreclr/CMakeLists.txt
+@@ -9,20 +9,20 @@ if (CLR_CMAKE_HOST_WIN32)
+
+ list(APPEND CLR_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/coreclr.def)
+
+- add_link_options(/ENTRY:CoreDllMain)
++ add_linker_flag("/ENTRY:CoreDllMain")
+
+ # Incremental linking results in the linker inserting extra padding and routing function calls via thunks that can break the
+ # invariants (e.g. size of region between Jit_PatchedCodeLast-Jit_PatchCodeStart needs to fit in a page).
+- add_link_options(/INCREMENTAL:NO)
++ add_linker_flag("/INCREMENTAL:NO")
+
+ # Delay load libraries required for WinRT as that is not supported on all platforms
+- add_link_options("/DELAYLOAD:api-ms-win-core-winrt-string-l1-1-0.dll")
+- add_link_options("/DELAYLOAD:api-ms-win-core-winrt-l1-1-0.dll")
+- add_link_options("/DELAYLOAD:api-ms-win-core-winrt-roparameterizediid-l1-1-0.dll")
+- add_link_options("/DELAYLOAD:api-ms-win-ro-typeresolution-l1-1-0.dll")
++ add_linker_flag("/DELAYLOAD:api-ms-win-core-winrt-string-l1-1-0.dll")
++ add_linker_flag("/DELAYLOAD:api-ms-win-core-winrt-l1-1-0.dll")
++ add_linker_flag("/DELAYLOAD:api-ms-win-core-winrt-roparameterizediid-l1-1-0.dll")
++ add_linker_flag("/DELAYLOAD:api-ms-win-ro-typeresolution-l1-1-0.dll")
+
+ # Delay load version.dll so that we can specify how to search when loading it as it is not part of Windows' known DLLs
+- add_link_options("/DELAYLOAD:version.dll")
++ add_linker_flag("/DELAYLOAD:version.dll")
+
+ # No library groups for Win32
+ set(START_LIBRARY_GROUP)
+@@ -35,7 +35,7 @@ else(CLR_CMAKE_HOST_WIN32)
+ if(CLR_CMAKE_TARGET_LINUX OR CLR_CMAKE_TARGET_FREEBSD OR CLR_CMAKE_TARGET_NETBSD)
+ # This option is necessary to ensure that the overloaded delete operator defined inside
+ # of the utilcode will be used instead of the standard library delete operator.
+- add_link_options("LINKER:-Bsymbolic")
++ add_linker_flag("-Wl,-Bsymbolic")
+
+ # The following linked options can be inserted into the linker libraries list to
+ # ensure proper resolving of circular references between a subset of the libraries.
+@@ -110,7 +110,7 @@ set(CORECLR_LIBRARIES
+ utilcode
+ v3binder
+ libraries-native
+- System.Globalization.Native-Static
++ System.Globalization.Native-static
+ interop
+ )
+
+@@ -162,7 +162,12 @@ if(FEATURE_EVENT_TRACE)
+ endif(CLR_CMAKE_HOST_UNIX)
+ endif(FEATURE_EVENT_TRACE)
+
+-target_link_libraries(coreclr ${CORECLR_LIBRARIES})
++if(FEATURE_MERGE_JIT_AND_ENGINE)
++ set(CLRJIT_STATIC clrjit_static)
++endif(FEATURE_MERGE_JIT_AND_ENGINE)
++
++target_sources(coreclr PUBLIC $<TARGET_OBJECTS:cee_wks_core>)
++target_link_libraries(coreclr PUBLIC ${CORECLR_LIBRARIES} ${CLRJIT_STATIC} cee_wks)
+
+ # Create the runtime module index header file containing the coreclr build id
+ # for xplat and the timestamp/size on Windows.
+diff --git a/src/coreclr/src/dlls/mscorrc/CMakeLists.txt b/src/coreclr/src/dlls/mscorrc/CMakeLists.txt
+index 08cf27aaf80..e114ec19cea 100644
+--- a/src/coreclr/src/dlls/mscorrc/CMakeLists.txt
++++ b/src/coreclr/src/dlls/mscorrc/CMakeLists.txt
+@@ -19,7 +19,9 @@ if(CLR_CMAKE_HOST_WIN32)
+ else()
+ build_resources(${CMAKE_CURRENT_SOURCE_DIR}/include.rc mscorrc TARGET_CPP_FILE)
+
+- add_library_clr(mscorrc STATIC
++ add_library_clr(mscorrc_obj OBJECT
+ ${TARGET_CPP_FILE}
+ )
++ add_library(mscorrc INTERFACE)
++ target_sources(mscorrc INTERFACE $<TARGET_OBJECTS:mscorrc_obj>)
+ endif(CLR_CMAKE_HOST_WIN32)
+diff --git a/src/coreclr/src/gcinfo/CMakeLists.txt b/src/coreclr/src/gcinfo/CMakeLists.txt
+index b0b67462562..50a1722a8ea 100644
+--- a/src/coreclr/src/gcinfo/CMakeLists.txt
++++ b/src/coreclr/src/gcinfo/CMakeLists.txt
+@@ -16,11 +16,14 @@ endif(CLR_CMAKE_TARGET_ARCH_I386)
+
+ convert_to_absolute_path(GCINFO_SOURCES ${GCINFO_SOURCES})
+
+-add_library_clr(gcinfo
+- STATIC
++add_library_clr(gcinfo_obj
++ OBJECT
+ ${GCINFO_SOURCES}
+ )
+
++add_library(gcinfo INTERFACE)
++target_sources(gcinfo INTERFACE $<TARGET_OBJECTS:gcinfo_obj>)
++
+ add_library_clr(gcinfo_crossgen
+ STATIC
+ ${GCINFO_SOURCES}
+diff --git a/src/coreclr/src/inc/CMakeLists.txt b/src/coreclr/src/inc/CMakeLists.txt
+index 60fad88e77d..4f75d3a882d 100644
+--- a/src/coreclr/src/inc/CMakeLists.txt
++++ b/src/coreclr/src/inc/CMakeLists.txt
+@@ -58,7 +58,9 @@ if(FEATURE_JIT_PITCHING)
+ endif(FEATURE_JIT_PITCHING)
+
+ # Compile *_i.cpp to lib
+-_add_library(corguids ${CORGUIDS_SOURCES})
++_add_library(corguids_obj OBJECT ${CORGUIDS_SOURCES})
++add_library(corguids INTERFACE)
++target_sources(corguids INTERFACE $<TARGET_OBJECTS:corguids_obj>)
+
+ # Binplace the inc files for packaging later.
+
+@@ -75,4 +77,3 @@ _install (FILES cfi.h
+ gcinfoencoder.h
+ gcinfotypes.h
+ DESTINATION inc)
+-_install (TARGETS corguids DESTINATION lib)
+diff --git a/src/coreclr/src/interop/CMakeLists.txt b/src/coreclr/src/interop/CMakeLists.txt
+index d7eaa1b04ae..3924b4fdbb4 100644
+--- a/src/coreclr/src/interop/CMakeLists.txt
++++ b/src/coreclr/src/interop/CMakeLists.txt
+@@ -30,7 +30,10 @@ endif(WIN32)
+
+ convert_to_absolute_path(INTEROP_SOURCES ${INTEROP_SOURCES})
+
+-add_library_clr(interop
+- STATIC
++add_library_clr(interop_obj
++ OBJECT
+ ${INTEROP_SOURCES}
+ )
++
++add_library(interop INTERFACE)
++target_sources(interop INTERFACE $<TARGET_OBJECTS:interop_obj>)
+diff --git a/src/coreclr/src/jit/dll/CMakeLists.txt b/src/coreclr/src/jit/dll/CMakeLists.txt
+index ec7cddc78ed..01bdbf5a731 100644
+--- a/src/coreclr/src/jit/dll/CMakeLists.txt
++++ b/src/coreclr/src/jit/dll/CMakeLists.txt
+@@ -2,17 +2,17 @@ project(ClrJit)
+
+ set_source_files_properties(${JIT_EXPORTS_FILE} PROPERTIES GENERATED TRUE)
+
++add_library_clr(clrjit_obj
++ OBJECT
++ ${JIT_CORE_SOURCES}
++ ${JIT_ARCH_SOURCES}
++)
++
+ if(CLR_CMAKE_HOST_UNIX)
+- add_library_clr(clrjit_static
+- STATIC
+- ${SHARED_LIB_SOURCES}
+- ${JIT_ARCH_SOURCES}
+- )
+- add_dependencies(clrjit_static coreclrpal gcinfo)
+-else()
+- add_library_clr(clrjit_static
+- ${SHARED_LIB_SOURCES}
+- ${JIT_ARCH_SOURCES}
+- )
++ add_dependencies(clrjit_obj coreclrpal gcinfo)
+ endif(CLR_CMAKE_HOST_UNIX)
+-target_precompile_header(TARGET clrjit_static HEADER jitpch.h ADDITIONAL_INCLUDE_DIRECTORIES ${JIT_SOURCE_DIR})
++
++target_precompile_header(TARGET clrjit_obj HEADER jitpch.h ADDITIONAL_INCLUDE_DIRECTORIES ${JIT_SOURCE_DIR})
++
++add_library(clrjit_static INTERFACE)
++target_sources(clrjit_static INTERFACE $<TARGET_OBJECTS:clrjit_obj>)
+diff --git a/src/coreclr/src/md/ceefilegen/CMakeLists.txt b/src/coreclr/src/md/ceefilegen/CMakeLists.txt
+index 90749c806b2..fd0f8424d97 100644
+--- a/src/coreclr/src/md/ceefilegen/CMakeLists.txt
++++ b/src/coreclr/src/md/ceefilegen/CMakeLists.txt
+@@ -25,8 +25,11 @@ if (CLR_CMAKE_TARGET_WIN32)
+ list(APPEND CEEFILEGEN_SOURCES ${CEEFILEGEN_HEADERS})
+ endif (CLR_CMAKE_TARGET_WIN32)
+
+-add_library_clr(ceefgen
+- STATIC
++add_library_clr(ceefgen_obj
++ OBJECT
+ ${CEEFILEGEN_SOURCES}
+ )
+-target_precompile_header(TARGET ceefgen HEADER stdafx.h)
++target_precompile_header(TARGET ceefgen_obj HEADER stdafx.h)
++
++add_library(ceefgen INTERFACE)
++target_sources(ceefgen INTERFACE $<TARGET_OBJECTS:ceefgen_obj>)
+diff --git a/src/coreclr/src/md/compiler/CMakeLists.txt b/src/coreclr/src/md/compiler/CMakeLists.txt
+index 3b916cdc9fe..f9f80db2500 100644
+--- a/src/coreclr/src/md/compiler/CMakeLists.txt
++++ b/src/coreclr/src/md/compiler/CMakeLists.txt
+@@ -58,9 +58,11 @@ add_library_clr(mdcompiler_dac ${MDCOMPILER_SOURCES})
+ set_target_properties(mdcompiler_dac PROPERTIES DAC_COMPONENT TRUE)
+ target_precompile_header(TARGET mdcompiler_dac HEADER stdafx.h)
+
+-add_library_clr(mdcompiler_wks ${MDCOMPILER_SOURCES})
+-target_compile_definitions(mdcompiler_wks PRIVATE FEATURE_METADATA_EMIT_ALL)
+-target_precompile_header(TARGET mdcompiler_wks HEADER stdafx.h)
++add_library_clr(mdcompiler_wks_obj OBJECT ${MDCOMPILER_SOURCES})
++target_compile_definitions(mdcompiler_wks_obj PRIVATE FEATURE_METADATA_EMIT_ALL)
++target_precompile_header(TARGET mdcompiler_wks_obj HEADER stdafx.h)
++add_library(mdcompiler_wks INTERFACE)
++target_sources(mdcompiler_wks INTERFACE $<TARGET_OBJECTS:mdcompiler_wks_obj>)
+
+ add_library_clr(mdcompiler-dbi ${MDCOMPILER_SOURCES})
+ set_target_properties(mdcompiler-dbi PROPERTIES DBI_COMPONENT TRUE)
+diff --git a/src/coreclr/src/md/enc/CMakeLists.txt b/src/coreclr/src/md/enc/CMakeLists.txt
+index 7220736b9ca..82af8434296 100644
+--- a/src/coreclr/src/md/enc/CMakeLists.txt
++++ b/src/coreclr/src/md/enc/CMakeLists.txt
+@@ -48,9 +48,11 @@ add_library_clr(mdruntimerw_dac ${MDRUNTIMERW_SOURCES})
+ set_target_properties(mdruntimerw_dac PROPERTIES DAC_COMPONENT TRUE)
+ target_precompile_header(TARGET mdruntimerw_dac HEADER stdafx.h)
+
+-add_library_clr(mdruntimerw_wks ${MDRUNTIMERW_SOURCES})
+-target_compile_definitions(mdruntimerw_wks PRIVATE FEATURE_METADATA_EMIT_ALL)
+-target_precompile_header(TARGET mdruntimerw_wks HEADER stdafx.h)
++add_library_clr(mdruntimerw_wks_obj OBJECT ${MDRUNTIMERW_SOURCES})
++target_compile_definitions(mdruntimerw_wks_obj PRIVATE FEATURE_METADATA_EMIT_ALL)
++target_precompile_header(TARGET mdruntimerw_wks_obj HEADER stdafx.h)
++add_library(mdruntimerw_wks INTERFACE)
++target_sources(mdruntimerw_wks INTERFACE $<TARGET_OBJECTS:mdruntimerw_wks_obj>)
+
+ add_library_clr(mdruntimerw-dbi ${MDRUNTIMERW_SOURCES})
+ set_target_properties(mdruntimerw-dbi PROPERTIES DBI_COMPONENT TRUE)
+diff --git a/src/coreclr/src/md/hotdata/CMakeLists.txt b/src/coreclr/src/md/hotdata/CMakeLists.txt
+index c6168d2a4b0..88475cb72f4 100644
+--- a/src/coreclr/src/md/hotdata/CMakeLists.txt
++++ b/src/coreclr/src/md/hotdata/CMakeLists.txt
+@@ -33,8 +33,10 @@ add_library_clr(mdhotdata_dac ${MDHOTDATA_SOURCES})
+ set_target_properties(mdhotdata_dac PROPERTIES DAC_COMPONENT TRUE)
+ target_precompile_header(TARGET mdhotdata_dac HEADER external.h)
+
+-add_library_clr(mdhotdata_full ${MDHOTDATA_SOURCES})
+-target_precompile_header(TARGET mdhotdata_full HEADER external.h)
++add_library_clr(mdhotdata_full_obj OBJECT ${MDHOTDATA_SOURCES})
++target_precompile_header(TARGET mdhotdata_full_obj HEADER external.h)
++add_library(mdhotdata_full INTERFACE)
++target_sources(mdhotdata_full INTERFACE $<TARGET_OBJECTS:mdhotdata_full_obj>)
+
+ add_library_clr(mdhotdata_crossgen ${MDHOTDATA_SOURCES})
+ set_target_properties(mdhotdata_crossgen PROPERTIES CROSSGEN_COMPONENT TRUE)
+diff --git a/src/coreclr/src/md/runtime/CMakeLists.txt b/src/coreclr/src/md/runtime/CMakeLists.txt
+index 6dc193e14a7..7e0e83f1114 100644
+--- a/src/coreclr/src/md/runtime/CMakeLists.txt
++++ b/src/coreclr/src/md/runtime/CMakeLists.txt
+@@ -47,9 +47,11 @@ add_library_clr(mdruntime_dac ${MDRUNTIME_SOURCES})
+ set_target_properties(mdruntime_dac PROPERTIES DAC_COMPONENT TRUE)
+ target_precompile_header(TARGET mdruntime_dac HEADER stdafx.h)
+
+-add_library_clr(mdruntime_wks ${MDRUNTIME_SOURCES})
+-target_compile_definitions(mdruntime_wks PRIVATE FEATURE_METADATA_EMIT_ALL)
+-target_precompile_header(TARGET mdruntime_wks HEADER stdafx.h)
++add_library_clr(mdruntime_wks_obj OBJECT ${MDRUNTIME_SOURCES})
++target_compile_definitions(mdruntime_wks_obj PRIVATE FEATURE_METADATA_EMIT_ALL)
++target_precompile_header(TARGET mdruntime_wks_obj HEADER stdafx.h)
++add_library(mdruntime_wks INTERFACE)
++target_sources(mdruntime_wks INTERFACE $<TARGET_OBJECTS:mdruntime_wks_obj>)
+
+ add_library_clr(mdruntime-dbi ${MDRUNTIME_SOURCES})
+ set_target_properties(mdruntime-dbi PROPERTIES DBI_COMPONENT TRUE)
+diff --git a/src/coreclr/src/pal/src/CMakeLists.txt b/src/coreclr/src/pal/src/CMakeLists.txt
+index e7c1629d5b2..7818deef050 100644
+--- a/src/coreclr/src/pal/src/CMakeLists.txt
++++ b/src/coreclr/src/pal/src/CMakeLists.txt
+@@ -256,10 +256,12 @@ add_library(coreclrpal
+ # > warning for library: libtracepointprovider.a the table of contents is empty (no object file members in the library define global symbols)
+ #
+ if(CLR_CMAKE_TARGET_LINUX)
+- add_library(tracepointprovider
+- STATIC
++ add_library(tracepointprovider_obj
++ OBJECT
+ misc/tracepointprovider.cpp
+ )
++ add_library(tracepointprovider INTERFACE)
++ target_sources(tracepointprovider INTERFACE $<TARGET_OBJECTS:tracepointprovider_obj>)
+ endif(CLR_CMAKE_TARGET_LINUX)
+
+ if(CLR_CMAKE_TARGET_OSX)
+diff --git a/src/coreclr/src/pal/src/eventprovider/dummyprovider/CMakeLists.txt b/src/coreclr/src/pal/src/eventprovider/dummyprovider/CMakeLists.txt
+index 39b9826d1ab..8e6968cf783 100644
+--- a/src/coreclr/src/pal/src/eventprovider/dummyprovider/CMakeLists.txt
++++ b/src/coreclr/src/pal/src/eventprovider/dummyprovider/CMakeLists.txt
+@@ -1,8 +1,8 @@
+-include(FindPython)
++include(FindPythonInterp)
+
+ set (GENERATE_SCRIPT ${CLR_DIR}/src/scripts/genDummyProvider.py)
+
+-set(GENERATE_COMMAND ${Python_EXECUTABLE} ${GENERATE_SCRIPT} --man ${EVENT_MANIFEST} --intermediate ${CMAKE_CURRENT_BINARY_DIR})
++set(GENERATE_COMMAND ${PYTHON_EXECUTABLE} ${GENERATE_SCRIPT} --man ${EVENT_MANIFEST} --intermediate ${CMAKE_CURRENT_BINARY_DIR})
+
+ execute_process(
+ COMMAND ${GENERATE_COMMAND} --dry-run
+diff --git a/src/coreclr/src/pal/src/eventprovider/lttngprovider/CMakeLists.txt b/src/coreclr/src/pal/src/eventprovider/lttngprovider/CMakeLists.txt
+index 234dea19b75..d55dab3557f 100644
+--- a/src/coreclr/src/pal/src/eventprovider/lttngprovider/CMakeLists.txt
++++ b/src/coreclr/src/pal/src/eventprovider/lttngprovider/CMakeLists.txt
+@@ -1,7 +1,7 @@
+-include(FindPython)
++include(FindPythonInterp)
+ set (GENERATE_SCRIPT ${CLR_DIR}/src/scripts/genLttngProvider.py)
+
+-set(GENERATE_COMMAND ${Python_EXECUTABLE} ${GENERATE_SCRIPT} --man ${EVENT_MANIFEST} --intermediate ${CMAKE_CURRENT_BINARY_DIR})
++set(GENERATE_COMMAND ${PYTHON_EXECUTABLE} ${GENERATE_SCRIPT} --man ${EVENT_MANIFEST} --intermediate ${CMAKE_CURRENT_BINARY_DIR})
+
+ execute_process(
+ COMMAND ${GENERATE_COMMAND} --dry-run
+diff --git a/src/coreclr/src/pal/tests/palsuite/eventprovider/CMakeLists.txt b/src/coreclr/src/pal/tests/palsuite/eventprovider/CMakeLists.txt
+index 000ee2d2fb0..845fae656be 100644
+--- a/src/coreclr/src/pal/tests/palsuite/eventprovider/CMakeLists.txt
++++ b/src/coreclr/src/pal/tests/palsuite/eventprovider/CMakeLists.txt
+@@ -5,10 +5,10 @@ set(SOURCES
+ set(EVENT_MANIFEST ${VM_DIR}/ClrEtwAll.man)
+ set(TEST_GENERATOR ${CLR_DIR}/src/scripts/genEventingTests.py)
+
+-include(FindPython)
++include(FindPythonInterp)
+
+ add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/clralltestevents.cpp
+- COMMAND ${Python_EXECUTABLE} ${TEST_GENERATOR} --testdir "${CMAKE_CURRENT_BINARY_DIR}" --man "${EVENT_MANIFEST}"
++ COMMAND ${PYTHON_EXECUTABLE} ${TEST_GENERATOR} --testdir "${CMAKE_CURRENT_BINARY_DIR}" --man "${EVENT_MANIFEST}"
+ DEPENDS ${EVENT_MANIFEST} ${TEST_GENERATOR}
+ COMMENT "Updating clralltestevents.cpp"
+ )
+diff --git a/src/coreclr/src/unwinder/CMakeLists.txt b/src/coreclr/src/unwinder/CMakeLists.txt
+index 4421ea9f6f6..41a0219bbf7 100644
+--- a/src/coreclr/src/unwinder/CMakeLists.txt
++++ b/src/coreclr/src/unwinder/CMakeLists.txt
+@@ -20,8 +20,10 @@ list(APPEND UNWINDER_SOURCES
+ convert_to_absolute_path(UNWINDER_SOURCES ${UNWINDER_SOURCES})
+
+ if(CLR_CMAKE_HOST_UNIX)
+- add_library_clr(unwinder_wks ${UNWINDER_SOURCES})
+- add_dependencies(unwinder_wks eventing_headers)
++ add_library_clr(unwinder_wks_obj OBJECT ${UNWINDER_SOURCES})
++ add_dependencies(unwinder_wks_obj eventing_headers)
++ add_library(unwinder_wks INTERFACE)
++ target_sources(unwinder_wks INTERFACE $<TARGET_OBJECTS:unwinder_wks_obj>)
+ endif(CLR_CMAKE_HOST_UNIX)
+
+ add_library_clr(unwinder_dac ${UNWINDER_SOURCES})
+diff --git a/src/coreclr/src/utilcode/CMakeLists.txt b/src/coreclr/src/utilcode/CMakeLists.txt
+index aa28b2db603..f8082fc9076 100644
+--- a/src/coreclr/src/utilcode/CMakeLists.txt
++++ b/src/coreclr/src/utilcode/CMakeLists.txt
+@@ -98,7 +98,9 @@ convert_to_absolute_path(UTILCODE_CROSSGEN_SOURCES ${UTILCODE_CROSSGEN_SOURCES})
+ convert_to_absolute_path(UTILCODE_STATICNOHOST_SOURCES ${UTILCODE_STATICNOHOST_SOURCES})
+
+ add_library_clr(utilcode_dac STATIC ${UTILCODE_DAC_SOURCES})
+-add_library_clr(utilcode STATIC ${UTILCODE_SOURCES})
++add_library_clr(utilcode_obj OBJECT ${UTILCODE_SOURCES})
++add_library(utilcode INTERFACE)
++target_sources(utilcode INTERFACE $<TARGET_OBJECTS:utilcode_obj>)
+ add_library_clr(utilcodestaticnohost STATIC ${UTILCODE_STATICNOHOST_SOURCES})
+ add_library_clr(utilcode_crossgen STATIC ${UTILCODE_CROSSGEN_SOURCES})
+
+@@ -106,9 +108,9 @@ if(CLR_CMAKE_HOST_UNIX)
+ target_link_libraries(utilcodestaticnohost nativeresourcestring)
+ target_link_libraries(utilcode_crossgen nativeresourcestring)
+ target_link_libraries(utilcode_dac nativeresourcestring)
+- target_link_libraries(utilcode nativeresourcestring)
++ target_link_libraries(utilcode INTERFACE nativeresourcestring)
+ add_dependencies(utilcode_dac coreclrpal)
+- add_dependencies(utilcode coreclrpal)
++ add_dependencies(utilcode_obj coreclrpal)
+ endif(CLR_CMAKE_HOST_UNIX)
+
+
+@@ -121,10 +123,10 @@ set_target_properties(utilcode_crossgen PROPERTIES CROSSGEN_COMPONENT TRUE)
+ target_compile_definitions(utilcode_dac PRIVATE SELF_NO_HOST)
+ target_compile_definitions(utilcodestaticnohost PRIVATE SELF_NO_HOST)
+ add_dependencies(utilcode_dac ${UTILCODE_DEPENDENCIES})
+-add_dependencies(utilcode ${UTILCODE_DEPENDENCIES})
++add_dependencies(utilcode_obj ${UTILCODE_DEPENDENCIES})
+ add_dependencies(utilcode_crossgen ${UTILCODE_DEPENDENCIES})
+ add_dependencies(utilcodestaticnohost ${UTILCODE_DEPENDENCIES})
+ target_precompile_header(TARGET utilcode_dac HEADER stdafx.h)
+-target_precompile_header(TARGET utilcode HEADER stdafx.h)
++target_precompile_header(TARGET utilcode_obj HEADER stdafx.h)
+ target_precompile_header(TARGET utilcode_crossgen HEADER stdafx.h)
+ target_precompile_header(TARGET utilcodestaticnohost HEADER stdafx.h)
+diff --git a/src/coreclr/src/vm/CMakeLists.txt b/src/coreclr/src/vm/CMakeLists.txt
+index 3e37cebdc10..2b20d7d910a 100644
+--- a/src/coreclr/src/vm/CMakeLists.txt
++++ b/src/coreclr/src/vm/CMakeLists.txt
+@@ -923,7 +923,7 @@ list(APPEND VM_HEADERS_DAC
+
+ if (CLR_CMAKE_TARGET_WIN32)
+ list(APPEND VM_SOURCES_WKS ${VM_HEADERS_WKS})
+- list(APPEND VM_SOURCES_WKS_ARCH_ASM ${VM_HEADERS_WKS_ARCH_ASM})
++ list(APPEND VM_SOURCES_WKS ${VM_HEADERS_WKS_ARCH_ASM})
+ list(APPEND VM_SOURCES_DAC ${VM_HEADERS_DAC})
+ endif(CLR_CMAKE_TARGET_WIN32)
+
+diff --git a/src/coreclr/src/vm/eventing/CMakeLists.txt b/src/coreclr/src/vm/eventing/CMakeLists.txt
+index 98dd158df54..e2bf024fc59 100644
+--- a/src/coreclr/src/vm/eventing/CMakeLists.txt
++++ b/src/coreclr/src/vm/eventing/CMakeLists.txt
+@@ -8,12 +8,13 @@ else()
+ set(NEED_XPLAT_HEADER ON)
+ endif()
+
+-include(FindPython)
++include(FindPythonInterp)
+
+ set (EventingHeaders
+ ${GENERATED_INCLUDE_DIR}/etmdummy.h
+ ${GENERATED_INCLUDE_DIR}/clretwallmain.h
+ ${GENERATED_INCLUDE_DIR}/clreventpipewriteevents.h
++ ${GENERATED_INCLUDE_DIR}/clrproviders.h
+ )
+
+ if (NEED_XPLAT_HEADER)
+@@ -24,7 +25,7 @@ endif()
+ set(GENEVENTING_SCRIPT ${CLR_DIR}/src/scripts/genEventing.py)
+
+ add_custom_target(eventing_headers
+- ${Python_EXECUTABLE} ${GENEVENTING_SCRIPT} --man ${EVENT_MANIFEST} --inc ${GENERATED_INCLUDE_DIR} --dummy ${GENERATED_INCLUDE_DIR}/etmdummy.h ${NONEXTERN_ARG} ${NOXPLATHEADER_ARG}
++ ${PYTHON_EXECUTABLE} ${GENEVENTING_SCRIPT} --man ${EVENT_MANIFEST} --inc ${GENERATED_INCLUDE_DIR} --dummy ${GENERATED_INCLUDE_DIR}/etmdummy.h ${NONEXTERN_ARG} ${NOXPLATHEADER_ARG}
+ DEPENDS ${EVENT_MANIFEST} ${GENEVENTING_SCRIPT}
+ VERBATIM
+ )
+diff --git a/src/coreclr/src/vm/eventing/EtwProvider/CMakeLists.txt b/src/coreclr/src/vm/eventing/EtwProvider/CMakeLists.txt
+index 34a067e1ec5..4c7df2fbb3c 100644
+--- a/src/coreclr/src/vm/eventing/EtwProvider/CMakeLists.txt
++++ b/src/coreclr/src/vm/eventing/EtwProvider/CMakeLists.txt
+@@ -1,4 +1,4 @@
+-include(FindPython)
++include(FindPythonInterp)
+
+ set(ETW_PROVIDER_SCRIPT ${CLR_DIR}/src/scripts/genEtwProvider.py)
+
+@@ -14,5 +14,5 @@ set (ETW_PROVIDER_OUTPUTS
+ set_source_files_properties(${ETW_PROVIDER_OUTPUTS} PROPERTIES GENERATED TRUE)
+
+ add_custom_target(eventprovider
+- ${Python_EXECUTABLE} ${ETW_PROVIDER_SCRIPT} --man ${EVENT_MANIFEST} --exc ${EVENT_EXCLUSIONS} --intermediate ${GENERATED_INCLUDE_DIR}
++ ${PYTHON_EXECUTABLE} ${ETW_PROVIDER_SCRIPT} --man ${EVENT_MANIFEST} --exc ${EVENT_EXCLUSIONS} --intermediate ${GENERATED_INCLUDE_DIR}
+ DEPENDS ${EVENT_MANIFEST} ${EVENT_EXCLUSIONS} ${ETW_PROVIDER_SCRIPT})
+diff --git a/src/coreclr/src/vm/eventing/eventpipe/CMakeLists.txt b/src/coreclr/src/vm/eventing/eventpipe/CMakeLists.txt
+index 00b3f6f386f..00d79737e54 100644
+--- a/src/coreclr/src/vm/eventing/eventpipe/CMakeLists.txt
++++ b/src/coreclr/src/vm/eventing/eventpipe/CMakeLists.txt
+@@ -1,9 +1,9 @@
+-include(FindPython)
++include(FindPythonInterp)
+
+ set(CMAKE_INCLUDE_CURRENT_DIR ON)
+
+ set(GENERATE_SCRIPT ${CLR_DIR}/src/scripts/genEventPipe.py)
+-set(GENERATE_COMMAND ${Python_EXECUTABLE} ${GENERATE_SCRIPT} --man ${EVENT_MANIFEST} --exc ${EVENT_EXCLUSIONS} --intermediate ${CMAKE_CURRENT_BINARY_DIR} ${NONEXTERN_ARG})
++set(GENERATE_COMMAND ${PYTHON_EXECUTABLE} ${GENERATE_SCRIPT} --man ${EVENT_MANIFEST} --exc ${EVENT_EXCLUSIONS} --intermediate ${CMAKE_CURRENT_BINARY_DIR} ${NONEXTERN_ARG})
+
+ execute_process(
+ COMMAND ${GENERATE_COMMAND} --dry-run
+@@ -28,10 +28,8 @@ add_custom_command(OUTPUT ${EVENTPIPE_SOURCES}
+ COMMAND ${GENERATE_COMMAND}
+ DEPENDS ${GENERATE_SCRIPT} ${EVENT_MANIFEST} ${EVENT_EXCLUSIONS})
+
+-add_library_clr(eventpipe STATIC ${EVENTPIPE_SOURCES})
+-set_target_properties(eventpipe PROPERTIES LINKER_LANGUAGE CXX)
+-add_dependencies(eventpipe eventing_headers)
+-
+-if (NOT CLR_CMAKE_TARGET_WIN32)
+- _install(TARGETS eventpipe DESTINATION lib)
+-endif()
++add_library_clr(eventpipe_obj OBJECT ${EVENTPIPE_SOURCES})
++set_target_properties(eventpipe_obj PROPERTIES LINKER_LANGUAGE CXX)
++add_dependencies(eventpipe_obj eventing_headers)
++add_library(eventpipe INTERFACE)
++target_sources(eventpipe INTERFACE $<TARGET_OBJECTS:eventpipe_obj>)
+diff --git a/src/coreclr/src/vm/wks/CMakeLists.txt b/src/coreclr/src/vm/wks/CMakeLists.txt
+index 1e94b575fd6..5d355f6adcb 100644
+--- a/src/coreclr/src/vm/wks/CMakeLists.txt
++++ b/src/coreclr/src/vm/wks/CMakeLists.txt
+@@ -7,13 +7,19 @@ if (CLR_CMAKE_TARGET_WIN32)
+
+ endif (CLR_CMAKE_TARGET_WIN32)
+
+-add_library_clr(cee_wks ${VM_SOURCES_WKS} ${VM_SOURCES_WKS_ARCH_ASM})
+-target_precompile_header(TARGET cee_wks HEADER common.h)
++add_library_clr(cee_wks_core OBJECT ${VM_SOURCES_WKS} ${VM_SOURCES_WKS_ARCH_ASM})
++add_library_clr(cee_wks_obj OBJECT ${VM_SOURCES_WKS_SPECIAL})
++
++target_precompile_header(TARGET cee_wks_core HEADER common.h)
++target_precompile_header(TARGET cee_wks_obj HEADER common.h)
++
+ if (MSVC)
+ # mscorlib.cpp does not compile with precompiled header file
+ set_source_files_properties(../mscorlib.cpp PROPERTIES COMPILE_FLAGS "/Y-")
+ endif()
+-add_dependencies(cee_wks eventing_headers)
++
++add_dependencies(cee_wks_core eventing_headers)
++add_dependencies(cee_wks_obj eventing_headers)
+
+ if (CLR_CMAKE_TARGET_WIN32)
+
+@@ -45,8 +51,16 @@ if (CLR_CMAKE_TARGET_WIN32)
+ DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/AsmConstants.inc
+ )
+
+- add_dependencies(cee_wks asmconstants_inc)
++ add_dependencies(cee_wks_core asmconstants_inc)
++ add_dependencies(cee_wks_obj asmconstants_inc)
+
+ endif(NOT CLR_CMAKE_HOST_ARCH_ARM AND NOT CLR_CMAKE_HOST_ARCH_ARM64)
+
+ endif (CLR_CMAKE_TARGET_WIN32)
++
++add_custom_target(preprocessd_asm DEPENDS ${VM_WKS_ARCH_ASM_OBJECTS})
++add_dependencies(cee_wks_core preprocessd_asm)
++add_dependencies(cee_wks_obj preprocessd_asm)
++
++add_library(cee_wks INTERFACE)
++target_sources(cee_wks INTERFACE $<TARGET_OBJECTS:cee_wks_obj> ${VM_WKS_ARCH_ASM_OBJECTS})
+diff --git a/src/coreclr/tests/CMakeLists.txt b/src/coreclr/tests/CMakeLists.txt
+index 53dbb85a58b..c5417cba7d0 100644
+--- a/src/coreclr/tests/CMakeLists.txt
++++ b/src/coreclr/tests/CMakeLists.txt
+@@ -1,4 +1,4 @@
+-cmake_minimum_required(VERSION 3.14.2)
++cmake_minimum_required(VERSION 3.6.2)
+
+ cmake_policy(SET CMP0042 NEW)
+ project(Tests)
+diff --git a/src/installer/corehost/CMakeLists.txt b/src/installer/corehost/CMakeLists.txt
+index 43a59a1a695..dff0496cdd8 100644
+--- a/src/installer/corehost/CMakeLists.txt
++++ b/src/installer/corehost/CMakeLists.txt
+@@ -1,4 +1,4 @@
+-cmake_minimum_required(VERSION 3.14.2)
++cmake_minimum_required(VERSION 3.6.2)
+
+ project(corehost)
+
+diff --git a/src/installer/corehost/cli/exe.cmake b/src/installer/corehost/cli/exe.cmake
+index de8cd49396b..732faf97ff9 100644
+--- a/src/installer/corehost/cli/exe.cmake
++++ b/src/installer/corehost/cli/exe.cmake
+@@ -5,7 +5,6 @@
+ project (${DOTNET_PROJECT_NAME})
+
+ cmake_policy(SET CMP0011 NEW)
+-cmake_policy(SET CMP0083 NEW)
+
+ include(${CMAKE_CURRENT_LIST_DIR}/common.cmake)
+
+diff --git a/src/installer/corehost/cli/test/mockhostfxr/CMakeLists.txt b/src/installer/corehost/cli/test/mockhostfxr/CMakeLists.txt
+index bcf6a051229..8572a6318ec 100644
+--- a/src/installer/corehost/cli/test/mockhostfxr/CMakeLists.txt
++++ b/src/installer/corehost/cli/test/mockhostfxr/CMakeLists.txt
+@@ -2,7 +2,6 @@
+ # The .NET Foundation licenses this file to you under the MIT license.
+ # See the LICENSE file in the project root for more information.
+
+-cmake_minimum_required (VERSION 2.6)
+ project(mockhostfxr_2_2)
+
+ set(DOTNET_PROJECT_NAME "mockhostfxr_2_2")
+diff --git a/src/libraries/Native/Unix/CMakeLists.txt b/src/libraries/Native/Unix/CMakeLists.txt
+index f14ada69fee..cb174fe5013 100644
+--- a/src/libraries/Native/Unix/CMakeLists.txt
++++ b/src/libraries/Native/Unix/CMakeLists.txt
+@@ -1,19 +1,14 @@
+-cmake_minimum_required(VERSION 3.14.2)
++cmake_minimum_required(VERSION 3.6.2)
++if(CLR_CMAKE_TARGET_IOS OR CLR_CMAKE_TARGET_TVOS)
++ # CMake 3.14.5 contains bug fixes for iOS
++ cmake_minimum_required(VERSION 3.14.5)
++ endif()
+ cmake_policy(SET CMP0042 NEW)
+
+ project(CoreFX C)
+
+ include(${CLR_ENG_NATIVE_DIR}/configuretools.cmake)
+
+-if(CLR_CMAKE_TARGET_IOS OR CLR_CMAKE_TARGET_TVOS)
+- # CMake 3.14.5 contains bug fixes for iOS
+- cmake_minimum_required(VERSION 3.14.5)
+-endif()
+-
+-if(NOT CLR_CMAKE_TARGET_ARCH_WASM)
+- cmake_policy(SET CMP0083 NEW)
+-endif(NOT CLR_CMAKE_TARGET_ARCH_WASM)
+-
+ set(CMAKE_MACOSX_RPATH ON)
+ set(CMAKE_INSTALL_PREFIX $ENV{__CMakeBinDir})
+ set(CMAKE_INCLUDE_CURRENT_DIR ON)
+@@ -167,7 +162,8 @@ if(CLR_CMAKE_TARGET_UNIX)
+ if(NOT CLR_CMAKE_TARGET_ARCH_WASM AND NOT CLR_CMAKE_TARGET_IOS AND NOT CLR_CMAKE_TARGET_TVOS)
+ if(CLR_CMAKE_TARGET_OSX)
+ add_definitions(-DTARGET_OSX)
+- add_link_options(-Wl,-bind_at_load)
++ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-bind_at_load")
++ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-bind_at_load" )
+ else()
+ add_compile_options($<$<COMPILE_LANGUAGE:ASM>:-Wa,--noexecstack>)
+ if(CLR_CMAKE_TARGET_SUNOS)
+@@ -175,7 +171,8 @@ if(CLR_CMAKE_TARGET_UNIX)
+ else()
+ # -z,now is required for full relro.
+ # see https://www.redhat.com/en/blog/hardening-elf-binaries-using-relocation-re...
+- add_link_options(-Wl,--build-id=sha1 -Wl,-z,relro,-z,now)
++ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--build-id=sha1 -Wl,-z,relro,-z,now")
++ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--build-id=sha1 -Wl,-z,relro,-z,now" )
+ endif()
+ endif()
+ endif()
+diff --git a/src/libraries/Native/Unix/System.Globalization.Native/CMakeLists.txt b/src/libraries/Native/Unix/System.Globalization.Native/CMakeLists.txt
+index bcfc5dd106a..ebcb5a02b3f 100644
+--- a/src/libraries/Native/Unix/System.Globalization.Native/CMakeLists.txt
++++ b/src/libraries/Native/Unix/System.Globalization.Native/CMakeLists.txt
+@@ -79,14 +79,15 @@ if (GEN_SHARED_LIB)
+ install_with_stripped_symbols (System.Globalization.Native PROGRAMS .)
+ endif()
+
+-add_library(System.Globalization.Native-Static
+- STATIC
++add_library(System.Globalization.Native-obj
++ OBJECT
+ ${NATIVEGLOBALIZATION_SOURCES}
+ )
+
+-set_target_properties(System.Globalization.Native-Static PROPERTIES OUTPUT_NAME System.Globalization.Native CLEAN_DIRECT_OUTPUT 1)
++set_target_properties(System.Globalization.Native-obj PROPERTIES OUTPUT_NAME System.Globalization.Native CLEAN_DIRECT_OUTPUT 1)
+
+-install (TARGETS System.Globalization.Native-Static DESTINATION .)
++add_library(System.Globalization.Native-static INTERFACE)
++target_sources(System.Globalization.Native-static INTERFACE $<TARGET_OBJECTS:System.Globalization.Native-obj>)
+
+ if(NOT CLR_CMAKE_TARGET_OSX AND NOT CLR_CMAKE_TARGET_IOS AND NOT CLR_CMAKE_TARGET_TVOS AND NOT CLR_CMAKE_TARGET_ANDROID)
+ if (GEN_SHARED_LIB)
diff --git a/runtime-dont-strip.patch b/runtime-dont-strip.patch
new file mode 100644
index 0000000..694face
--- /dev/null
+++ b/runtime-dont-strip.patch
@@ -0,0 +1,47 @@
+Do not strip native/unmanaged symbols from binaries
+
+This is a hack. It rips out the calls to strip directly.
+
+The correct/upstreamable fix is to add a configure/build option to
+keep symbols for some builds, such as those needed by upstream.
+
+diff --git a/eng/native/functions.cmake b/eng/native/functions.cmake
+index 8b73581ed14..7697908425e 100644
+--- a/eng/native/functions.cmake
++++ b/eng/native/functions.cmake
+@@ -282,7 +282,7 @@ function(target_precompile_header)
+ endif(MSVC)
+ endfunction()
+
+-function(strip_symbols targetName outputFilename)
++function(strip_symbols_renamed targetName outputFilename)
+ if (CLR_CMAKE_HOST_UNIX)
+ set(strip_source_file $<TARGET_FILE:${targetName}>)
+
+@@ -336,8 +336,8 @@ function(strip_symbols targetName outputFilename)
+ endfunction()
+
+ function(install_with_stripped_symbols targetName kind destination)
+- strip_symbols(${targetName} symbol_file)
+- install_symbols(${symbol_file} ${destination})
++ # strip_symbols_renamed(${targetName} symbol_file)
++ # install_symbols(${symbol_file} ${destination})
+ if ("${kind}" STREQUAL "TARGETS")
+ set(install_source ${targetName})
+ elseif("${kind}" STREQUAL "PROGRAMS")
+@@ -375,13 +375,13 @@ function(install_clr)
+ foreach(targetName ${INSTALL_CLR_TARGETS})
+ list(FIND CLR_CROSS_COMPONENTS_LIST ${targetName} INDEX)
+ if (NOT DEFINED CLR_CROSS_COMPONENTS_LIST OR NOT ${INDEX} EQUAL -1)
+- strip_symbols(${targetName} symbol_file)
++ # strip_symbols_renamed(${targetName} symbol_file)
+
+ foreach(destination ${destinations})
+ # We don't need to install the export libraries for our DLLs
+ # since they won't be directly linked against.
+ install(PROGRAMS $<TARGET_FILE:${targetName}> DESTINATION ${destination})
+- install_symbols(${symbol_file} ${destination})
++ # install_symbols(${symbol_file} ${destination})
+
+ if(CLR_CMAKE_PGO_INSTRUMENT)
+ if(WIN32)
diff --git a/runtime-flags-support.patch b/runtime-flags-support.patch
new file mode 100644
index 0000000..921e483
--- /dev/null
+++ b/runtime-flags-support.patch
@@ -0,0 +1,30 @@
+diff --git a/eng/native/build-commons.sh b/eng/native/build-commons.sh
+index b976f5fdc6c..853580b1c7a 100755
+--- a/eng/native/build-commons.sh
++++ b/eng/native/build-commons.sh
+@@ -163,6 +163,14 @@ EOF
+ return
+ fi
+
++ SAVED_CFLAGS="${CFLAGS}"
++ SAVED_CXXFLAGS="${CXXFLAGS}"
++ SAVED_LDFLAGS="${LDFLAGS}"
++
++ export CFLAGS="${CFLAGS} ${EXTRA_CFLAGS}"
++ export CXXFLAGS="${CXXFLAGS} ${EXTRA_CXXFLAGS}"
++ export LDFLAGS="${LDFLAGS} ${EXTRA_LDFLAGS}"
++
+ if [[ "$__StaticAnalyzer" == 1 ]]; then
+ pushd "$intermediatesDir"
+
+@@ -181,6 +189,10 @@ EOF
+ $cmake_command --build "$intermediatesDir" --target install -- -j "$__NumProc"
+ fi
+
++ CFLAGS="${SAVED_CFLAGS}"
++ CXXFLAGS="${SAVED_CXXFLAGS}"
++ LDFLAGS="${SAVED_LDFLAGS}"
++
+ local exit_code="$?"
+ if [[ "$exit_code" != 0 ]]; then
+ echo "${__ErrMsgPrefix}Failed to build \"$message\"."
diff --git a/cli-telemetry-optout.patch b/sdk-telemetry-optout.patch
similarity index 82%
rename from cli-telemetry-optout.patch
rename to sdk-telemetry-optout.patch
index 9b01f13..9b92f33 100644
--- a/cli-telemetry-optout.patch
+++ b/sdk-telemetry-optout.patch
@@ -1,7 +1,7 @@
-diff --git a/src/dotnet/Program.cs b/src/dotnet/Program.cs
+diff --git a/src/Cli/dotnet/Program.cs b/src/Cli/dotnet/Program.cs
index de1ebb9e6..6bbf479de 100644
---- a/src/dotnet/Program.cs
-+++ b/src/dotnet/Program.cs
+--- a/src/Cli/dotnet/Program.cs
++++ b/src/Cli/dotnet/Program.cs
@@ -28,6 +28,13 @@ public class Program
public static int Main(string[] args)
diff --git a/sources b/sources
deleted file mode 100644
index 6762903..0000000
--- a/sources
+++ /dev/null
@@ -1 +0,0 @@
-SHA512 (dotnet-v3.1.103.2-SDK.tar.gz) = 6c4de4914f6d107e59300efb43fae24fffdbb983a5ffeb36fbe26c8071a87e76162ebde0f0aa270ab7cbb666b4ee0ab65cfab98f1dbba2ea9d48809372417ec2
diff --git a/tests/tests.yml b/tests/tests.yml
index ede9095..f3825cf 100644
--- a/tests/tests.yml
+++ b/tests/tests.yml
@@ -7,20 +7,18 @@
- container
- atomic
repositories:
- - repo: "https://github.com/redhat-developer/dotnet-bunny.git"
- dest: "dotnet-bunny"
- repo: "https://github.com/redhat-developer/dotnet-regular-tests.git"
dest: "dotnet-regular-tests"
tests:
- - build_test_suite:
- dir: dotnet-bunny
- run: make
- - print_test_suite_version:
- dir: dotnet-bunny
- run: bin/turkey --version
- - run_regular_tests:
- dir: dotnet-regular-tests
- run: ../dotnet-bunny/bin/turkey -l={{ remote_artifacts }}
+ - download_test_runner:
+ dir: ./
+ run: wget --no-verbose https://github.com/redhat-developer/dotnet-bunny/releases/latest/download... -m) -O turkey && chmod +x ./turkey
+ - print_test_runner_version:
+ dir: ./
+ run: ./turkey --version
+ - regular:
+ dir: ./
+ run: ./turkey -l={{ remote_artifacts }} -s=$(pwd)/nuget-prerelease dotnet-regular-tests
required_packages:
- babeltrace
- bash-completion
diff --git a/update-release b/update-release
index d8bcde7..da87262 100755
--- a/update-release
+++ b/update-release
@@ -26,7 +26,7 @@ while [[ "$#" -gt 0 ]]; do
esac
done
-spec_file=dotnet3.1.spec
+spec_file=dotnet5.0.spec
sdk_version=${positional_args[0]:-}
if [[ -z ${sdk_version} ]]; then
commit 2236128d3ef9488a2c9fd503322a1d7910ef28f0
Author: Omair Majid <omajid(a)redhat.com>
Date: Fri Apr 10 12:29:37 2020 -0400
Add some documentation to the empty README
diff --git a/README.md b/README.md
index d35adc1..816aba3 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,133 @@
-# dotnet3.1
+# Overview
-The dotnet3.1 package
\ No newline at end of file
+This is the .NET Core 3.1 package for Fedora.
+
+This package is maintained by the Fedora DotNet SIG (Special Interest
+Group). You can find out more about the DotNet SIG at:
+
+- https://fedoraproject.org/wiki/SIGs/DotNet
+- https://fedoraproject.org/wiki/DotNet
+- https://lists.fedoraproject.org/archives/list/dotnet-sig@lists.fedoraproj...
+
+Please report any issues [using
+bugzilla](https://bugzilla.redhat.com/enter_bug.cgi?product=Fedora&component=dotnet3.1).
+
+# Specification
+
+This package follows [package naming and contents suggested by
+upstream](https://docs.microsoft.com/en-us/dotnet/core/build/distribution-packaging),
+with one exception. It installs dotnet to `/usr/lib64/dotnet` (aka
+`%{_libdir}`).
+
+# Contributing
+
+## General Changes
+
+1. Fork the repo.
+
+2. Checkout the forked repository.
+
+ - `git clone ssh://$USER@pkgs.fedoraproject.org/forks/$USER/rpms/dotnet3.1.git`
+ - `cd dotnet3.1`
+
+3. Make your changes. Don't forget to add a changelog.
+
+4. Do local builds.
+
+ - `fedpkg local`
+
+5. Fix any errors that come up and rebuild until it works locally.
+
+6. Do builds in koji.
+
+ - `fedpkg scratch-build --srpm`
+
+8. Commit the changes to the git repo.
+
+ - `git add` any new patches
+ - `git remove` any now-unnecessary patches
+ - `git commit -a`
+ - `git push`
+
+9. Create a pull request with your changes.
+
+10. Once the tests in the pull-request pass, and reviewers are happy, do a real
+ build.
+
+ - `fedpkg build`
+
+11. For non-rawhide releases, file updates using bodhi to ship the just-built
+ package out to users.
+
+ - https://bodhi.fedoraproject.org/updates/new
+
+ OR
+
+ - `fedpkg update`
+
+## Updating to an new upstream release
+
+1. Fork the repo.
+
+2. Checkout the forked repository.
+
+ - `git clone ssh://$USER@pkgs.fedoraproject.org/forks/$USER/rpms/dotnet3.1.git`
+ - `cd dotnet3.1`
+
+3. Build the new upstream source tarball. Update the versions in the
+ spec file. Add a changelog. This is generally automated by the
+ following.
+
+ - `./update-release <sdk-version> <runtime-version>`
+
+ If this fails because of compiler errors, you might have to figure
+ out a fix, then add the patch in `build-dotnet-tarball` script
+ rather than the spec file.
+
+4. Do local builds.
+
+ - `fedpkg local`
+
+5. Fix any errors that come up and rebuild until it works locally. Any
+ patches that are needed at this point should be added to the spec file.
+
+6. Do builds in koji.
+
+ - `fedpkg scratch-build --srpm`
+
+7. Upload the source archive to the Fedora look-aside cache.
+
+ - `fedpkg new-sources path-to-generated-dotnet-source-tarball.tar.gz`
+
+8. Commit the changes to the git repo.
+
+ - `git add` any new patches
+ - `git remove` any now-unnecessary patches
+ - `git commit -a`
+ - `git push`
+
+9. Create a pull request with your changes.
+
+10. Once the tests in the pull-request pass, and reviewers are happy, do a real
+ build.
+
+ - `fedpkg build`
+
+11. For non-rawhide releases, file updates using bodhi to ship the just-built
+ package out to users.
+
+ - https://bodhi.fedoraproject.org/updates/new
+
+ OR
+
+ - `fedpkg update`
+
+# Testing
+
+This package uses CI tests as defined in `tests/test.yml`. Creating a
+pull-request or running a build will fire off tests and flag any issues. We have
+enabled gating (via `gating.yaml`) on the tests. That prevents a build
+that fails any test from being released until the failures are waived.
+
+The tests themselves are contained in this external repository:
+https://github.com/redhat-developer/dotnet-regular-tests/
commit 835f5d753d45c6e638dc1519cd108a0a97bfa545
Author: Chris Rummel <crummel(a)microsoft.com>
Date: Thu Apr 9 18:40:42 2020 -0500
Update to 3.1.103 SDK and 3.1.3 runtime.
- Update version numbers and sources.
- Add CoreFx patch from PR#42900 to fix clang10 build.
diff --git a/.gitignore b/.gitignore
index 1337900..6fa687b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
/dotnet-v3.1.101-SDK.tar.gz
/dotnet-v3.1.102-SDK.tar.gz
+/dotnet-v3.1.103.2-SDK.tar.gz
diff --git a/build-dotnet-tarball b/build-dotnet-tarball
index ef7f742..3314c7e 100755
--- a/build-dotnet-tarball
+++ b/build-dotnet-tarball
@@ -94,7 +94,11 @@ if [ ! -f "${unmodified_tarball_name}.tar.gz" ]; then
sed -i -e 's|cmakeargs -DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=TRUE||' repos/coreclr.proj
mkdir -p patches/coreclr/
cp ../../build-coreclr-clang10.patch patches/coreclr
- ./build-source-tarball.sh "${unmodified_tarball_name}"
+ mkdir -p patches/corefx/
+ cp ../../corefx-42900-clang-10.patch patches/corefx
+ cp -r /usr/lib64/dotnet "${temp_dir}"
+ ./build.sh --with-sdk ../dotnet /p:ArchiveDownloadedPackages=true
+ ./build-source-tarball.sh "${unmodified_tarball_name}" --skip-build --with-sdk ../dotnet
popd
popd
@@ -111,8 +115,8 @@ pushd "${tarball_name}"
# Remove files with funny licenses, crypto implementations and other
# not-very-useful artifacts to reduce tarball size
find -type f -iname '*.tar.gz' -delete
-rm -r src/AspNetCore.*/src/SignalR/clients/java/signalr/gradle*
-find src/AspNetCore.*/src -type d -name samples -print0 | xargs -0 rm -r
+rm -r src/aspnetcore.*/src/SignalR/clients/java/signalr/gradle*
+find src/aspnetcore.*/src -type d -name samples -print0 | xargs -0 rm -r
rm -r src/NuGet.Client.*/test/EndToEnd/ProjectTemplates/NetCoreWebApplication1.0.zip
find src/coreclr.*/ -depth -name tests -print0 | xargs -0 rm -r
popd
diff --git a/corefx-42900-clang-10.patch b/corefx-42900-clang-10.patch
new file mode 100644
index 0000000..b898f34
--- /dev/null
+++ b/corefx-42900-clang-10.patch
@@ -0,0 +1,70 @@
+From 58d6cd09bd2d5b1085c6572c1d97b8533cf8294b Mon Sep 17 00:00:00 2001
+From: Omair Majid <omajid(a)redhat.com>
+Date: Fri, 3 Apr 2020 13:53:09 -0400
+Subject: [PATCH] Fix corefx to build on clang 10
+
+Clang 10 adds/enables new warnings, some of which is affecting
+the corefx code.
+
+Clang 10 has added -Walloca to warn about uses of alloca. This commit
+replaces the only non-compliant use of that with a single fixed
+stack-allocated buffer.
+
+Clang 10 has also added -Wimplicit-int-float-conversion. This commit
+uses explicit casts to double to avoid the warnings.
+
+This is a backport of dotnet/runtime#33734 to corefx.
+
+After this commit, I can build all of corefx with Clang 10.
+---
+ src/Native/Unix/System.Native/pal_io.c | 20 +++++++++++---------
+ src/Native/Unix/System.Native/pal_time.c | 2 +-
+ 2 files changed, 12 insertions(+), 10 deletions(-)
+
+diff --git a/src/Native/Unix/System.Native/pal_io.c b/src/Native/Unix/System.Native/pal_io.c
+index 2d51edacf5ee..c7c42eb3e72b 100644
+--- a/src/Native/Unix/System.Native/pal_io.c
++++ b/src/Native/Unix/System.Native/pal_io.c
+@@ -906,18 +906,20 @@ int32_t SystemNative_Poll(PollEvent* pollEvents, uint32_t eventCount, int32_t mi
+ return Error_EINVAL;
+ }
+
+- size_t bufferSize;
+- if (!multiply_s(sizeof(struct pollfd), (size_t)eventCount, &bufferSize))
++ struct pollfd stackBuffer[(uint32_t)(2048/sizeof(struct pollfd))];
++ int useStackBuffer = eventCount <= (sizeof(stackBuffer)/sizeof(stackBuffer[0]));
++ struct pollfd* pollfds = NULL;
++ if (useStackBuffer)
+ {
+- return SystemNative_ConvertErrorPlatformToPal(EOVERFLOW);
++ pollfds = (struct pollfd*)&stackBuffer[0];
+ }
+-
+-
+- int useStackBuffer = bufferSize <= 2048;
+- struct pollfd* pollfds = (struct pollfd*)(useStackBuffer ? alloca(bufferSize) : malloc(bufferSize));
+- if (pollfds == NULL)
++ else
+ {
+- return Error_ENOMEM;
++ pollfds = (struct pollfd*)calloc(eventCount, sizeof(*pollfds));
++ if (pollfds == NULL)
++ {
++ return Error_ENOMEM;
++ }
+ }
+
+ for (uint32_t i = 0; i < eventCount; i++)
+diff --git a/src/Native/Unix/System.Native/pal_time.c b/src/Native/Unix/System.Native/pal_time.c
+index 1a7c862749d1..54ebde60a83b 100644
+--- a/src/Native/Unix/System.Native/pal_time.c
++++ b/src/Native/Unix/System.Native/pal_time.c
+@@ -169,7 +169,7 @@ int32_t SystemNative_GetCpuUtilization(ProcessCpuInformation* previousCpuInfo)
+ uint64_t resolution = SystemNative_GetTimestampResolution();
+ uint64_t timestamp = SystemNative_GetTimestamp();
+
+- uint64_t currentTime = (uint64_t)(timestamp * ((double)SecondsToNanoSeconds / resolution));
++ uint64_t currentTime = (uint64_t)((double)timestamp * ((double)SecondsToNanoSeconds / (double)resolution));
+
+ uint64_t lastRecordedCurrentTime = previousCpuInfo->lastRecordedCurrentTime;
+ uint64_t lastRecordedKernelTime = previousCpuInfo->lastRecordedKernelTime;
diff --git a/corefx-optflags-support.patch b/corefx-optflags-support.patch
index 6f76d7f..9b08f1f 100644
--- a/corefx-optflags-support.patch
+++ b/corefx-optflags-support.patch
@@ -2,9 +2,10 @@ diff --git a/src/Native/Unix/CMakeLists.txt b/src/Native/Unix/CMakeLists.txt
index 7d804a1e54..717c2718d7 100644
--- a/src/Native/Unix/CMakeLists.txt
+++ b/src/Native/Unix/CMakeLists.txt
-@@ -25,7 +25,6 @@ add_compile_options(-fPIC)
+@@ -25,7 +25,7 @@ add_compile_options(-fPIC)
add_compile_options(-Wthread-safety)
add_compile_options(-Wno-thread-safety-analysis)
++ add_compile_options(-Wno-alloca)
endif()
-add_compile_options(-Werror)
diff --git a/dotnet3.1.spec b/dotnet3.1.spec
index c08312f..44ff8fb 100644
--- a/dotnet3.1.spec
+++ b/dotnet3.1.spec
@@ -20,10 +20,12 @@
%global dotnet_cflags %(echo %optflags | sed -e 's/-fstack-clash-protection//' | sed -re 's/-specs=[^ ]*//g')
%global dotnet_ldflags %(echo %{__global_ldflags} | sed -re 's/-specs=[^ ]*//g')
-%global host_version 3.1.2
-%global runtime_version 3.1.2
+%global host_version 3.1.3
+%global runtime_version 3.1.3
%global aspnetcore_runtime_version %{runtime_version}
-%global sdk_version 3.1.102
+%global sdk_version 3.1.103
+# upstream respun this release, so the tag doesn't exactly match
+%global src_version %{sdk_version}.2
%global templates_version %(echo %{runtime_version} | awk 'BEGIN { FS="."; OFS="." } {print $1, $2, $3+1 }')
%global host_rpm_version %{host_version}
@@ -62,8 +64,8 @@ License: MIT and ASL 2.0 and BSD and LGPLv2+ and CC-BY and CC0 and MS-PL
URL: https://github.com/dotnet/
# The source is generated on a Fedora box via:
-# ./build-dotnet-tarball v%%{sdk_version}-SDK
-Source0: dotnet-v%{sdk_version}-SDK.tar.gz
+# ./build-dotnet-tarball v%%{src_version}-SDK
+Source0: dotnet-v%{src_version}-SDK.tar.gz
Source1: check-debug-symbols.py
Source2: dotnet.sh.in
@@ -319,7 +321,7 @@ These are not meant for general use.
%prep
-%setup -q -n dotnet-v%{sdk_version}-SDK
+%setup -q -n dotnet-v%{src_version}-SDK
%if %{without bootstrap}
# Remove all prebuilts
@@ -328,12 +330,12 @@ find -iname '*.so' -type f -delete
find -iname '*.tar.gz' -type f -delete
find -iname '*.nupkg' -type f -delete
find -iname '*.zip' -type f -delete
-rm -r .dotnet/
+rm -rf .dotnet/
rm -r packages/source-built
%endif
%if %{without bootstrap}
-sed -i -e 's|3.1.100-preview1-014459|3.1.101|' global.json
+sed -i -e 's|3.1.100-preview1-014459|3.1.102|' global.json
mkdir -p packages/archive
ln -s %{_libdir}/dotnet/source-built-artifacts/*.tar.gz packages/archive/
ln -s %{_libdir}/dotnet/reference-packages/Private.SourceBuild.ReferencePackages*.tar.gz packages/archive
@@ -514,6 +516,9 @@ echo "Testing build results for debug symbols..."
%changelog
+* Thu Apr 09 2020 Chris Rummel <crummel(a)microsoft.com> - 3.1.103-1
+- Update to .NET Core Runtime 3.1.3 and SDK 3.1.103
+
* Mon Mar 16 2020 Omair Majid <omajid(a)redhat.com> - 3.1.102-1
- Update to .NET Core Runtime 3.1.2 and SDK 3.1.102
diff --git a/sources b/sources
index 9bc51e2..6762903 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (dotnet-v3.1.102-SDK.tar.gz) = f46f54b996883ecced44d377e2052b59461781bd2a0c8453a31e90e6822998ca5e97957a4b16a2aa00f7e803c17ce68c2128b8aad9aa2e0a399b7b15ea5af168
+SHA512 (dotnet-v3.1.103.2-SDK.tar.gz) = 6c4de4914f6d107e59300efb43fae24fffdbb983a5ffeb36fbe26c8071a87e76162ebde0f0aa270ab7cbb666b4ee0ab65cfab98f1dbba2ea9d48809372417ec2
commit 115e095157e2dbe9e52bdba77dbffd7b9c262fa6
Author: Omair Majid <omajid(a)redhat.com>
Date: Tue Mar 17 10:08:19 2020 -0400
Add testing and enable gating
And enable building against itself.
diff --git a/dotnet3.1.spec b/dotnet3.1.spec
index 76a64b6..c08312f 100644
--- a/dotnet3.1.spec
+++ b/dotnet3.1.spec
@@ -67,8 +67,6 @@ Source0: dotnet-v%{sdk_version}-SDK.tar.gz
Source1: check-debug-symbols.py
Source2: dotnet.sh.in
-Patch1: sdk-rid.patch
-
# Fix building with our additional CFLAGS/CXXFLAGS/LDFLAGS
Patch100: corefx-optflags-support.patch
@@ -102,6 +100,7 @@ BuildRequires: dotnet-build-reference-packages
BuildRequires: dotnet-sdk-3.1
BuildRequires: dotnet-sdk-3.1-source-built-artifacts
%endif
+BuildRequires: findutils
BuildRequires: git
%if 0%{?fedora} || 0%{?rhel} > 7
BuildRequires: glibc-langpack-en
@@ -384,8 +383,8 @@ find -iname 'nuget.config' -exec echo {}: \; -exec cat {} \; -exec echo \;
cat /etc/os-release
%if %{without bootstrap}
-cp -a %{_libdir}/dotnet .dotnet
-patch -p0 -i %{PATCH1}
+# We need to create a copy because we will mutate this
+cp -a %{_libdir}/dotnet previously-built-dotnet
%endif
export CFLAGS="%{dotnet_cflags}"
@@ -399,12 +398,15 @@ export LDFLAGS="%{dotnet_ldflags}"
#%%endif
VERBOSE=1 ./build.sh \
- -- \
- /v:n \
- /p:SkipPortableRuntimeBuild=true \
- /p:LogVerbosity=n \
- /p:MinimalConsoleLogOutput=false \
- /p:ContinueOnPrebuiltBaselineError=true \
+%if %{without bootstrap}
+ --with-sdk previously-built-dotnet \
+%endif
+ -- \
+ /v:n \
+ /p:SkipPortableRuntimeBuild=true \
+ /p:LogVerbosity=n \
+ /p:MinimalConsoleLogOutput=false \
+ /p:ContinueOnPrebuiltBaselineError=true \
sed -e 's|[@]LIBDIR[@]|%{_libdir}|g' %{SOURCE2} > dotnet.sh
diff --git a/gating.yaml b/gating.yaml
new file mode 100644
index 0000000..0d881de
--- /dev/null
+++ b/gating.yaml
@@ -0,0 +1,7 @@
+--- !Policy
+product_versions:
+ - fedora-*
+decision_context: bodhi_update_push_testing
+subject_type: koji_build
+rules:
+ - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}
diff --git a/sdk-rid.patch b/sdk-rid.patch
deleted file mode 100644
index 99dda5b..0000000
--- a/sdk-rid.patch
+++ /dev/null
@@ -1,33 +0,0 @@
---- .dotnet/sdk/3.1.101/RuntimeIdentifierGraph.json
-+++ .dotnet/sdk/3.1.101/RuntimeIdentifierGraph.json
-@@ -488,6 +488,23 @@
- "fedora-x64"
- ]
- },
-+ "fedora.33": {
-+ "#import": [
-+ "fedora"
-+ ]
-+ },
-+ "fedora.33-arm64": {
-+ "#import": [
-+ "fedora.33",
-+ "fedora-arm64"
-+ ]
-+ },
-+ "fedora.33-x64": {
-+ "#import": [
-+ "fedora.33",
-+ "fedora-x64"
-+ ]
-+ },
- "freebsd": {
- "#import": [
- "unix"
-@@ -2042,4 +2059,4 @@
- ]
- }
- }
--}
-\ No newline at end of file
-+}
diff --git a/tests/.fmf/version b/tests/.fmf/version
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/tests/.fmf/version
@@ -0,0 +1 @@
+2
diff --git a/tests/provision.fmf b/tests/provision.fmf
new file mode 100644
index 0000000..87b3807
--- /dev/null
+++ b/tests/provision.fmf
@@ -0,0 +1,6 @@
+---
+
+standard-inventory-qcow2:
+ qemu:
+ m: 5G
+
diff --git a/tests/tests.yml b/tests/tests.yml
new file mode 100644
index 0000000..ede9095
--- /dev/null
+++ b/tests/tests.yml
@@ -0,0 +1,38 @@
+---
+- hosts: localhost
+ roles:
+ - role: standard-test-basic
+ tags:
+ - classic
+ - container
+ - atomic
+ repositories:
+ - repo: "https://github.com/redhat-developer/dotnet-bunny.git"
+ dest: "dotnet-bunny"
+ - repo: "https://github.com/redhat-developer/dotnet-regular-tests.git"
+ dest: "dotnet-regular-tests"
+ tests:
+ - build_test_suite:
+ dir: dotnet-bunny
+ run: make
+ - print_test_suite_version:
+ dir: dotnet-bunny
+ run: bin/turkey --version
+ - run_regular_tests:
+ dir: dotnet-regular-tests
+ run: ../dotnet-bunny/bin/turkey -l={{ remote_artifacts }}
+ required_packages:
+ - babeltrace
+ - bash-completion
+ - binutils
+ - expect
+ - git
+ - jq
+ - lldb
+ - lttng-tools
+ - make
+ - npm
+ - python3
+ - strace
+ - wget
+ - which
commit 942e8b4298a91cc9da6eac84967cdffb5da062cd
Author: Omair Majid <omajid(a)redhat.com>
Date: Mon Mar 16 12:46:48 2020 -0400
Upload sources
diff --git a/.gitignore b/.gitignore
index 72735bd..1337900 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
/dotnet-v3.1.101-SDK.tar.gz
+/dotnet-v3.1.102-SDK.tar.gz
diff --git a/sources b/sources
index e5c1d68..9bc51e2 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (dotnet-v3.1.101-SDK.tar.gz) = b2eb9df091186e793e82ac7560496c9ac3478e41efa94e58300606e2883d9bdb187f588a48a7bd9cf7f10f3d8f641d0867eb013de9b159e3d471a71dd823278c
+SHA512 (dotnet-v3.1.102-SDK.tar.gz) = f46f54b996883ecced44d377e2052b59461781bd2a0c8453a31e90e6822998ca5e97957a4b16a2aa00f7e803c17ce68c2128b8aad9aa2e0a399b7b15ea5af168
commit afa7f9a38cd8368e41e41309d6bd4fae20a0e3a5
Author: Omair Majid <omajid(a)redhat.com>
Date: Mon Mar 16 12:30:04 2020 -0400
Update to .NET Core Runtime 3.1.2 and SDK 3.1.102
diff --git a/coreclr-clang10.patch b/build-coreclr-clang10.patch
similarity index 100%
rename from coreclr-clang10.patch
rename to build-coreclr-clang10.patch
diff --git a/build-dotnet-tarball b/build-dotnet-tarball
index 0923778..ef7f742 100755
--- a/build-dotnet-tarball
+++ b/build-dotnet-tarball
@@ -92,6 +92,8 @@ if [ ! -f "${unmodified_tarball_name}.tar.gz" ]; then
git submodule update --init --recursive
clean_dotnet_cache
sed -i -e 's|cmakeargs -DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=TRUE||' repos/coreclr.proj
+ mkdir -p patches/coreclr/
+ cp ../../build-coreclr-clang10.patch patches/coreclr
./build-source-tarball.sh "${unmodified_tarball_name}"
popd
popd
@@ -108,6 +110,7 @@ mv "${unmodified_tarball_name}" "${tarball_name}"
pushd "${tarball_name}"
# Remove files with funny licenses, crypto implementations and other
# not-very-useful artifacts to reduce tarball size
+find -type f -iname '*.tar.gz' -delete
rm -r src/AspNetCore.*/src/SignalR/clients/java/signalr/gradle*
find src/AspNetCore.*/src -type d -name samples -print0 | xargs -0 rm -r
rm -r src/NuGet.Client.*/test/EndToEnd/ProjectTemplates/NetCoreWebApplication1.0.zip
diff --git a/dotnet3.1.spec b/dotnet3.1.spec
index fe50a53..76a64b6 100644
--- a/dotnet3.1.spec
+++ b/dotnet3.1.spec
@@ -20,11 +20,11 @@
%global dotnet_cflags %(echo %optflags | sed -e 's/-fstack-clash-protection//' | sed -re 's/-specs=[^ ]*//g')
%global dotnet_ldflags %(echo %{__global_ldflags} | sed -re 's/-specs=[^ ]*//g')
-%global host_version 3.1.1
-%global runtime_version 3.1.1
+%global host_version 3.1.2
+%global runtime_version 3.1.2
%global aspnetcore_runtime_version %{runtime_version}
-%global sdk_version 3.1.101
-%global templates_version %{runtime_version}
+%global sdk_version 3.1.102
+%global templates_version %(echo %{runtime_version} | awk 'BEGIN { FS="."; OFS="." } {print $1, $2, $3+1 }')
%global host_rpm_version %{host_version}
%global aspnetcore_runtime_rpm_version %{aspnetcore_runtime_version}
@@ -56,7 +56,7 @@
Name: dotnet3.1
Version: %{sdk_rpm_version}
-Release: 4%{?dist}
+Release: 1%{?dist}
Summary: .NET Core Runtime and SDK
License: MIT and ASL 2.0 and BSD and LGPLv2+ and CC-BY and CC0 and MS-PL and EPL-1.0 and GPL+ and GPLv2 and ISC and OFL and zlib
URL: https://github.com/dotnet/
@@ -83,8 +83,8 @@ Patch104: corefx-42871-fedora-33-rid.patch
# Build with with hardening flags, including -pie
Patch200: coreclr-hardening-flags.patch
-# Fix build with clang 10
-Patch201: coreclr-clang10.patch
+# Fix build with clang 10; Already applied at tarball-build time
+# Patch201: coreclr-clang10.patch
# Build with with hardening flags, including -pie
Patch300: core-setup-hardening-flags.patch
@@ -341,7 +341,7 @@ ln -s %{_libdir}/dotnet/reference-packages/Private.SourceBuild.ReferencePackages
%endif
# Fix bad hardcoded path in build
-sed -i 's|/usr/share/dotnet|%{_libdir}/dotnet|' src/dotnet-core-setup.*/src/corehost/common/pal.unix.cpp
+sed -i 's|/usr/share/dotnet|%{_libdir}/dotnet|' src/core-setup.*/src/corehost/common/pal.unix.cpp
# Disable warnings
sed -i 's|skiptests|skiptests ignorewarnings|' repos/coreclr.proj
@@ -356,14 +356,14 @@ popd
pushd src/coreclr.*
%patch200 -p1
-%patch201 -p1
+#%%patch201 -p1
popd
-pushd src/dotnet-core-setup.*
+pushd src/core-setup.*
%patch300 -p1
popd
-pushd src/dotnet-cli.*
+pushd src/cli.*
%patch500 -p1
popd
@@ -392,8 +392,16 @@ export CFLAGS="%{dotnet_cflags}"
export CXXFLAGS="%{dotnet_cflags}"
export LDFLAGS="%{dotnet_ldflags}"
+#%%if %%{without bootstrap}
+# --with-ref-packages %%{_libdir}/dotnet/reference-packages/ \
+# --with-packages %%{_libdir}/dotnet/source-built-artifacts/*.tar.gz \
+# --with-sdk %%{_libdir}/dotnet \
+#%%endif
+
VERBOSE=1 ./build.sh \
+ -- \
/v:n \
+ /p:SkipPortableRuntimeBuild=true \
/p:LogVerbosity=n \
/p:MinimalConsoleLogOutput=false \
/p:ContinueOnPrebuiltBaselineError=true \
@@ -421,15 +429,13 @@ chmod 0755 %{buildroot}/%{_libdir}/dotnet/sdk/%{sdk_version}/AppHostTemplate/app
chmod 0755 %{buildroot}/%{_libdir}/dotnet/packs/Microsoft.NETCore.App.Host.%{runtime_id}/%{runtime_version}/runtimes/%{runtime_id}/native/libnethost.so
chmod 0755 %{buildroot}/%{_libdir}/dotnet/packs/Microsoft.NETCore.App.Host.%{runtime_id}/%{runtime_version}/runtimes/%{runtime_id}/native/apphost
chmod 0644 %{buildroot}/%{_libdir}/dotnet/packs/Microsoft.NETCore.App.Host.%{runtime_id}/%{runtime_version}/runtimes/%{runtime_id}/native/nethost.h
-chmod 0644 %{buildroot}/%{_libdir}/dotnet/packs/Microsoft.AspNetCore.App.Ref/3.1.0/obj/Microsoft.AspNetCore.App.Ref.csproj.nuget.cache
-chmod 0644 %{buildroot}/%{_libdir}/dotnet/packs/Microsoft.AspNetCore.App.Ref/3.1.0/Microsoft.AspNetCore.App.Ref/3.1.0/Debug/netstandard2.0/Microsoft.AspNetCore.App.Ref.assets.cache
install -dm 0755 %{buildroot}%{_sysconfdir}/profile.d/
install dotnet.sh %{buildroot}%{_sysconfdir}/profile.d/
install -dm 0755 %{buildroot}/%{_datadir}/bash-completion/completions
# dynamic completion needs the file to be named the same as the base command
-install src/dotnet-cli.*/scripts/register-completions.bash %{buildroot}/%{_datadir}/bash-completion/completions/dotnet
+install src/cli.*/scripts/register-completions.bash %{buildroot}/%{_datadir}/bash-completion/completions/dotnet
# TODO: the zsh completion script needs to be ported to use #compdef
#install -dm 755 %%{buildroot}/%%{_datadir}/zsh/site-functions
@@ -506,6 +512,9 @@ echo "Testing build results for debug symbols..."
%changelog
+* Mon Mar 16 2020 Omair Majid <omajid(a)redhat.com> - 3.1.102-1
+- Update to .NET Core Runtime 3.1.2 and SDK 3.1.102
+
* Fri Feb 28 2020 Omair Majid <omajid(a)redhat.com> - 3.1.101-4
- Disable bootstrap
diff --git a/sdk-rid.patch b/sdk-rid.patch
index 85e97b5..99dda5b 100644
--- a/sdk-rid.patch
+++ b/sdk-rid.patch
@@ -1,5 +1,5 @@
---- .dotnet/sdk/3.1.101/RuntimeIdentifierGraph.json.orig 2020-02-27 19:48:57.286692828 -0500
-+++ .dotnet/sdk/3.1.101/RuntimeIdentifierGraph.json 2020-02-27 19:49:17.185262594 -0500
+--- .dotnet/sdk/3.1.101/RuntimeIdentifierGraph.json
++++ .dotnet/sdk/3.1.101/RuntimeIdentifierGraph.json
@@ -488,6 +488,23 @@
"fedora-x64"
]
diff --git a/update-release b/update-release
index 09eb509..d8bcde7 100755
--- a/update-release
+++ b/update-release
@@ -1,14 +1,14 @@
#!/bin/bash
# Usage:
-# ./update-release runtime-version sdk-version
+# ./update-release sdk-version runtime-version
set -euo pipefail
IFS=$'\n\t'
print_usage() {
echo " Usage:"
- echo " ./update-release runtime-version sdk-version"
+ echo " ./update-release sdk-version runtime-version"
}
positional_args=()
@@ -28,19 +28,20 @@ done
spec_file=dotnet3.1.spec
-runtime_version=${positional_args[0]:-}
-if [[ -z ${runtime_version} ]]; then
- echo "error: missing runtime version"
+sdk_version=${positional_args[0]:-}
+if [[ -z ${sdk_version} ]]; then
+ echo "error: missing sdk version"
exit 1
fi
-host_version="$runtime_version"
-sdk_version=${positional_args[1]:-}
-if [[ -z ${sdk_version} ]]; then
- echo "error: missing sdk version"
+runtime_version=${positional_args[1]:-}
+if [[ -z ${runtime_version} ]]; then
+ echo "error: missing runtime version"
exit 1
fi
+host_version="$runtime_version"
+
if [[ ! -f "dotnet-v${sdk_version}-SDK.tar.gz" ]]; then
./build-dotnet-tarball "v${sdk_version}-SDK"
fi
commit 87d13ef02a3e031d50160e2fcc635465169b581f
Author: Omair Majid <omajid(a)redhat.com>
Date: Fri Feb 28 14:26:16 2020 -0500
Disable bootstrap
diff --git a/dotnet3.1.spec b/dotnet3.1.spec
index 7fc1ded..fe50a53 100644
--- a/dotnet3.1.spec
+++ b/dotnet3.1.spec
@@ -1,4 +1,4 @@
-%bcond_without bootstrap
+%bcond_with bootstrap
# Avoid provides/requires from private libraries
%global privlibs libhostfxr
@@ -56,7 +56,7 @@
Name: dotnet3.1
Version: %{sdk_rpm_version}
-Release: 3%{?dist}
+Release: 4%{?dist}
Summary: .NET Core Runtime and SDK
License: MIT and ASL 2.0 and BSD and LGPLv2+ and CC-BY and CC0 and MS-PL and EPL-1.0 and GPL+ and GPLv2 and ISC and OFL and zlib
URL: https://github.com/dotnet/
@@ -506,6 +506,9 @@ echo "Testing build results for debug symbols..."
%changelog
+* Fri Feb 28 2020 Omair Majid <omajid(a)redhat.com> - 3.1.101-4
+- Disable bootstrap
+
* Fri Feb 28 2020 Omair Majid <omajid(a)redhat.com> - 3.1.101-3
- Enable bootstrap
- Add Fedora 33 runtime ids
commit 5a4961b806dc1de340a2b640d4a406d36fb00554
Author: Omair Majid <omajid(a)redhat.com>
Date: Fri Feb 28 10:22:16 2020 -0500
Enable bootstrap and add Fedora 33 runtime ids
diff --git a/corefx-42871-fedora-33-rid.patch b/corefx-42871-fedora-33-rid.patch
new file mode 100644
index 0000000..2802dcd
--- /dev/null
+++ b/corefx-42871-fedora-33-rid.patch
@@ -0,0 +1,124 @@
+From 6cf4ff086875eaf29381cf406ea85846d9f66178 Mon Sep 17 00:00:00 2001
+From: Omair Majid <omajid(a)redhat.com>
+Date: Mon, 24 Feb 2020 14:11:03 -0500
+Subject: [PATCH] Add Fedora 33 runtime ids
+
+Fedora 32 is gearing up for release[1], and in-development version of
+Fedora has been offically labelled as being Fedora 33:
+
+ $ podman run -it fedora:33 cat /etc/os-release
+ NAME=Fedora
+ VERSION="33 (Container Image)"
+ ID=fedora
+ VERSION_ID=33
+ VERSION_CODENAME=""
+ PLATFORM_ID="platform:f33"
+ PRETTY_NAME="Fedora 33 (Container Image)"
+ ANSI_COLOR="0;34"
+ LOGO=fedora-logo-icon
+ CPE_NAME="cpe:/o:fedoraproject:fedora:33"
+ HOME_URL="https://fedoraproject.org/"
+ DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora/rawhide/system-administrators..."
+ SUPPORT_URL="https://fedoraproject.org/wiki/Communicating_and_getting_help"
+ BUG_REPORT_URL="https://bugzilla.redhat.com/"
+ REDHAT_BUGZILLA_PRODUCT="Fedora"
+ REDHAT_BUGZILLA_PRODUCT_VERSION=rawhide
+ REDHAT_SUPPORT_PRODUCT="Fedora"
+ REDHAT_SUPPORT_PRODUCT_VERSION=rawhide
+ PRIVACY_POLICY_URL="https://fedoraproject.org/wiki/Legal:PrivacyPolicy"
+ VARIANT="Container Image"
+ VARIANT_ID=container
+
+[1] https://fedorapeople.org/groups/schedule/f-32/f-32-key-tasks.html
+---
+ eng/Packaging.props | 2 +-
+ .../runtime.compatibility.json | 32 +++++++++++++++++++
+ pkg/Microsoft.NETCore.Platforms/runtime.json | 17 ++++++++++
+ .../runtimeGroups.props | 2 +-
+ src/packages.builds | 3 ++
+ 5 files changed, 54 insertions(+), 2 deletions(-)
+
+diff --git a/pkg/Microsoft.NETCore.Platforms/runtime.compatibility.json b/pkg/Microsoft.NETCore.Platforms/runtime.compatibility.json
+index 1e5c380a7a6a..c20e35394d6b 100644
+--- a/pkg/Microsoft.NETCore.Platforms/runtime.compatibility.json
++++ b/pkg/Microsoft.NETCore.Platforms/runtime.compatibility.json
+@@ -953,6 +953,38 @@
+ "any",
+ "base"
+ ],
++ "fedora.33": [
++ "fedora.33",
++ "fedora",
++ "linux",
++ "unix",
++ "any",
++ "base"
++ ],
++ "fedora.33-arm64": [
++ "fedora.33-arm64",
++ "fedora.33",
++ "fedora-arm64",
++ "fedora",
++ "linux-arm64",
++ "linux",
++ "unix-arm64",
++ "unix",
++ "any",
++ "base"
++ ],
++ "fedora.33-x64": [
++ "fedora.33-x64",
++ "fedora.33",
++ "fedora-x64",
++ "fedora",
++ "linux-x64",
++ "linux",
++ "unix-x64",
++ "unix",
++ "any",
++ "base"
++ ],
+ "freebsd": [
+ "freebsd",
+ "unix",
+diff --git a/pkg/Microsoft.NETCore.Platforms/runtime.json b/pkg/Microsoft.NETCore.Platforms/runtime.json
+index b2f286ea2479..b3380ecbbef3 100644
+--- a/pkg/Microsoft.NETCore.Platforms/runtime.json
++++ b/pkg/Microsoft.NETCore.Platforms/runtime.json
+@@ -488,6 +488,23 @@
+ "fedora-x64"
+ ]
+ },
++ "fedora.33": {
++ "#import": [
++ "fedora"
++ ]
++ },
++ "fedora.33-arm64": {
++ "#import": [
++ "fedora.33",
++ "fedora-arm64"
++ ]
++ },
++ "fedora.33-x64": {
++ "#import": [
++ "fedora.33",
++ "fedora-x64"
++ ]
++ },
+ "freebsd": {
+ "#import": [
+ "unix"
+diff --git a/pkg/Microsoft.NETCore.Platforms/runtimeGroups.props b/pkg/Microsoft.NETCore.Platforms/runtimeGroups.props
+index eeb8130b54fb..da48e5f9d09f 100644
+--- a/pkg/Microsoft.NETCore.Platforms/runtimeGroups.props
++++ b/pkg/Microsoft.NETCore.Platforms/runtimeGroups.props
+@@ -43,7 +43,7 @@
+ <RuntimeGroup Include="fedora">
+ <Parent>linux</Parent>
+ <Architectures>x64;arm64</Architectures>
+- <Versions>23;24;25;26;27;28;29;30;31;32</Versions>
++ <Versions>23;24;25;26;27;28;29;30;31;32;33</Versions>
+ <TreatVersionsAsCompatible>false</TreatVersionsAsCompatible>
+ </RuntimeGroup>
+
diff --git a/dotnet3.1.spec b/dotnet3.1.spec
index 7f89d4b..7fc1ded 100644
--- a/dotnet3.1.spec
+++ b/dotnet3.1.spec
@@ -1,4 +1,4 @@
-%bcond_with bootstrap
+%bcond_without bootstrap
# Avoid provides/requires from private libraries
%global privlibs libhostfxr
@@ -56,7 +56,7 @@
Name: dotnet3.1
Version: %{sdk_rpm_version}
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: .NET Core Runtime and SDK
License: MIT and ASL 2.0 and BSD and LGPLv2+ and CC-BY and CC0 and MS-PL and EPL-1.0 and GPL+ and GPLv2 and ISC and OFL and zlib
URL: https://github.com/dotnet/
@@ -67,6 +67,8 @@ Source0: dotnet-v%{sdk_version}-SDK.tar.gz
Source1: check-debug-symbols.py
Source2: dotnet.sh.in
+Patch1: sdk-rid.patch
+
# Fix building with our additional CFLAGS/CXXFLAGS/LDFLAGS
Patch100: corefx-optflags-support.patch
@@ -76,6 +78,9 @@ Patch101: corefx-39686-cgroupv2-01.patch
Patch102: corefx-39686-cgroupv2-02.patch
Patch103: corefx-39633-cgroupv2-mountpoints.patch
+# Add Fedora 33 RID to corefx
+Patch104: corefx-42871-fedora-33-rid.patch
+
# Build with with hardening flags, including -pie
Patch200: coreclr-hardening-flags.patch
# Fix build with clang 10
@@ -346,6 +351,7 @@ pushd src/corefx.*
%patch101 -p1
%patch102 -p1
%patch103 -p1
+%patch104 -p1
popd
pushd src/coreclr.*
@@ -379,6 +385,7 @@ cat /etc/os-release
%if %{without bootstrap}
cp -a %{_libdir}/dotnet .dotnet
+patch -p0 -i %{PATCH1}
%endif
export CFLAGS="%{dotnet_cflags}"
@@ -499,6 +506,10 @@ echo "Testing build results for debug symbols..."
%changelog
+* Fri Feb 28 2020 Omair Majid <omajid(a)redhat.com> - 3.1.101-3
+- Enable bootstrap
+- Add Fedora 33 runtime ids
+
* Thu Feb 27 2020 Omair Majid <omajid(a)redhat.com> - 3.1.101-2
- Disable bootstrap
diff --git a/sdk-rid.patch b/sdk-rid.patch
new file mode 100644
index 0000000..85e97b5
--- /dev/null
+++ b/sdk-rid.patch
@@ -0,0 +1,33 @@
+--- .dotnet/sdk/3.1.101/RuntimeIdentifierGraph.json.orig 2020-02-27 19:48:57.286692828 -0500
++++ .dotnet/sdk/3.1.101/RuntimeIdentifierGraph.json 2020-02-27 19:49:17.185262594 -0500
+@@ -488,6 +488,23 @@
+ "fedora-x64"
+ ]
+ },
++ "fedora.33": {
++ "#import": [
++ "fedora"
++ ]
++ },
++ "fedora.33-arm64": {
++ "#import": [
++ "fedora.33",
++ "fedora-arm64"
++ ]
++ },
++ "fedora.33-x64": {
++ "#import": [
++ "fedora.33",
++ "fedora-x64"
++ ]
++ },
+ "freebsd": {
+ "#import": [
+ "unix"
+@@ -2042,4 +2059,4 @@
+ ]
+ }
+ }
+-}
+\ No newline at end of file
++}
commit b909e7156775b1d8c8ea7198c41f11eda135636a
Author: Omair Majid <omajid(a)redhat.com>
Date: Thu Feb 27 17:57:48 2020 -0500
Disable bootstrap
diff --git a/dotnet3.1.spec b/dotnet3.1.spec
index 32d18ba..7f89d4b 100644
--- a/dotnet3.1.spec
+++ b/dotnet3.1.spec
@@ -1,4 +1,4 @@
-%bcond_without bootstrap
+%bcond_with bootstrap
# Avoid provides/requires from private libraries
%global privlibs libhostfxr
@@ -56,7 +56,7 @@
Name: dotnet3.1
Version: %{sdk_rpm_version}
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: .NET Core Runtime and SDK
License: MIT and ASL 2.0 and BSD and LGPLv2+ and CC-BY and CC0 and MS-PL and EPL-1.0 and GPL+ and GPLv2 and ISC and OFL and zlib
URL: https://github.com/dotnet/
@@ -499,6 +499,9 @@ echo "Testing build results for debug symbols..."
%changelog
+* Thu Feb 27 2020 Omair Majid <omajid(a)redhat.com> - 3.1.101-2
+- Disable bootstrap
+
* Tue Jan 21 2020 Omair Majid <omajid(a)redhat.com> - 3.1.101-1
- Update to .NET Core Runtime 3.1.1 and SDK 3.1.101
commit 39697ab889857504725b0798acddec3d7848bad7
Author: Omair Majid <omajid(a)redhat.com>
Date: Wed Feb 26 21:56:12 2020 -0500
Fix build with clang 10
diff --git a/coreclr-clang10.patch b/coreclr-clang10.patch
new file mode 100644
index 0000000..3b13cb1
--- /dev/null
+++ b/coreclr-clang10.patch
@@ -0,0 +1,54 @@
+diff --git a/configurecompiler.cmake b/configurecompiler.cmake
+index d769e82f57..4936c8b00d 100644
+--- a/configurecompiler.cmake
++++ b/configurecompiler.cmake
+@@ -474,6 +474,7 @@ if (CLR_CMAKE_PLATFORM_UNIX)
+ add_compile_options(-Wno-unused-variable)
+ add_compile_options(-Wno-unused-value)
+ add_compile_options(-Wno-unused-function)
++ add_compile_options(-Wno-error=misleading-indentation)
+
+ #These seem to indicate real issues
+ add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-Wno-invalid-offsetof>)
+diff --git a/src/inc/slist.h b/src/inc/slist.h
+index f05d763dc6..abebe04d47 100644
+--- a/src/inc/slist.h
++++ b/src/inc/slist.h
+@@ -160,13 +160,13 @@ public:
+ void Init()
+ {
+ LIMITED_METHOD_CONTRACT;
+- m_pHead = &m_link;
++ m_pHead = PTR_SLink(&m_link);
+ // NOTE :: fHead variable is template argument
+ // the following code is a compiled in, only if the fHead flag
+ // is set to false,
+ if (!fHead)
+ {
+- m_pTail = &m_link;
++ m_pTail = PTR_SLink(&m_link);
+ }
+ }
+
+@@ -274,7 +274,7 @@ public:
+ SLink *ret = SLink::FindAndRemove(m_pHead, GetLink(pObj), &prior);
+
+ if (ret == m_pTail)
+- m_pTail = prior;
++ m_pTail = PTR_SLink(prior);
+
+ return GetObject(ret);
+ }
+diff --git a/src/pal/inc/pal.h b/src/pal/inc/pal.h
+index 08a35c8f62..43eb648a14 100644
+--- a/src/pal/inc/pal.h
++++ b/src/pal/inc/pal.h
+@@ -145,7 +145,7 @@ typedef PVOID NATIVE_LIBRARY_HANDLE;
+
+ /******************* Compiler-specific glue *******************************/
+ #ifndef THROW_DECL
+-#if defined(_MSC_VER) || defined(__llvm__) || !defined(__cplusplus)
++#if defined(_MSC_VER) || !defined(__cplusplus)
+ #define THROW_DECL
+ #else
+ #define THROW_DECL throw()
diff --git a/dotnet3.1.spec b/dotnet3.1.spec
index 4536929..32d18ba 100644
--- a/dotnet3.1.spec
+++ b/dotnet3.1.spec
@@ -78,6 +78,8 @@ Patch103: corefx-39633-cgroupv2-mountpoints.patch
# Build with with hardening flags, including -pie
Patch200: coreclr-hardening-flags.patch
+# Fix build with clang 10
+Patch201: coreclr-clang10.patch
# Build with with hardening flags, including -pie
Patch300: core-setup-hardening-flags.patch
@@ -112,6 +114,7 @@ BuildRequires: lttng-ust-devel
BuildRequires: make
BuildRequires: openssl-devel
BuildRequires: python3
+BuildRequires: systemtap-sdt-devel
BuildRequires: tar
BuildRequires: zlib-devel
@@ -347,6 +350,7 @@ popd
pushd src/coreclr.*
%patch200 -p1
+%patch201 -p1
popd
pushd src/dotnet-core-setup.*
commit b18622e4ac5651fd10701af3cb2ef6cdd933d32f
Author: Omair Majid <omajid(a)redhat.com>
Date: Thu Feb 20 20:23:21 2020 -0500
Initial import (#1802803)
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..72735bd
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/dotnet-v3.1.101-SDK.tar.gz
diff --git a/build-dotnet-tarball b/build-dotnet-tarball
new file mode 100755
index 0000000..0923778
--- /dev/null
+++ b/build-dotnet-tarball
@@ -0,0 +1,117 @@
+#!/bin/bash
+
+# Usage:
+# build-dotnet-tarball <tag-from-source-build>
+#
+# Creates a source archive from a tag (or commit) at github.com/dotnet/source-build
+
+# Source-build is a little strange, we need to clone it, check out the
+# tag, build it and then create a tarball from the archive directory
+# it creates. Also, it is likely that the source archive is only
+# buildable on the OS it was initially created in.
+
+set -euo pipefail
+IFS=$'\n\t'
+
+print_usage() {
+ echo "Usage:"
+ echo "$0 <tag-from-source-build>"
+ echo
+ echo "Creates a source archive from a tag at https://github.com/dotnet/source-build"
+}
+
+clean_dotnet_cache() {
+ rm -rf ~/.aspnet ~/.dotnet/ ~/.nuget/ ~/.local/share/NuGet ~/.templateengine
+ rm -rf /tmp/NuGet /tmp/NuGetScratch /tmp/.NETCore* /tmp/.NETStandard* /tmp/.dotnet /tmp/dotnet.* /tmp/clr-debug-pipe* /tmp/Razor-Server /tmp/CoreFxPipe* /tmp/VBCSCompiler /tmp/.NETFramework*
+}
+
+function runtime_id {
+
+ declare -A archmap
+ archmap=(
+ ["aarch64"]="arm64"
+ ["amd64"]="x64"
+ ["armv8l"]="arm"
+ ["i686"]="x86"
+ ["i386"]="x86"
+ ["x86_64"]="x64"
+ )
+
+ arch=${archmap["$(uname -m)"]}
+
+ source /etc/os-release
+ case "${ID}" in
+ # Remove the RHEL minor version
+ rhel) rid_version=${VERSION_ID%.*} ;;
+
+ *) rid_version=${VERSION_ID} ;;
+ esac
+
+ echo "${ID}.${rid_version}-${arch}"
+}
+
+positional_args=()
+while [[ "$#" -gt 0 ]]; do
+ arg="${1}"
+ case "${arg}" in
+ -h|--help)
+ print_usage
+ exit 0
+ ;;
+ *)
+ positional_args+=("$1")
+ shift
+ ;;
+ esac
+done
+
+
+tag=${positional_args[0]:-}
+if [[ -z ${tag} ]]; then
+ echo "error: missing tag to build"
+ exit 1
+fi
+
+set -x
+
+dir_name="dotnet-${tag}"
+unmodified_tarball_name="${dir_name}-original"
+tarball_name="${dir_name}"
+
+if [ -f "${tarball_name}.tar.gz" ]; then
+ echo "error: ${tarball_name}.tar.gz already exists"
+ exit 1
+fi
+
+if [ ! -f "${unmodified_tarball_name}.tar.gz" ]; then
+ temp_dir=$(mktemp -d -p "$(pwd)")
+ pushd "${temp_dir}"
+ git clone https://github.com/dotnet/source-build
+ pushd source-build
+ git checkout "${tag}"
+ git submodule update --init --recursive
+ clean_dotnet_cache
+ sed -i -e 's|cmakeargs -DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=TRUE||' repos/coreclr.proj
+ ./build-source-tarball.sh "${unmodified_tarball_name}"
+ popd
+ popd
+
+ tar czf "${unmodified_tarball_name}.tar.gz" -C "${temp_dir}/source-build" "${unmodified_tarball_name}"
+
+ rm -rf "${temp_dir}"
+fi
+
+rm -rf "${tarball_name}"
+tar xf "${unmodified_tarball_name}.tar.gz"
+mv "${unmodified_tarball_name}" "${tarball_name}"
+
+pushd "${tarball_name}"
+# Remove files with funny licenses, crypto implementations and other
+# not-very-useful artifacts to reduce tarball size
+rm -r src/AspNetCore.*/src/SignalR/clients/java/signalr/gradle*
+find src/AspNetCore.*/src -type d -name samples -print0 | xargs -0 rm -r
+rm -r src/NuGet.Client.*/test/EndToEnd/ProjectTemplates/NetCoreWebApplication1.0.zip
+find src/coreclr.*/ -depth -name tests -print0 | xargs -0 rm -r
+popd
+
+tar czf "${tarball_name}.tar.gz" "${tarball_name}"
diff --git a/check-debug-symbols.py b/check-debug-symbols.py
new file mode 100755
index 0000000..be26d87
--- /dev/null
+++ b/check-debug-symbols.py
@@ -0,0 +1,136 @@
+#!/usr/bin/python3
+
+"""
+Check debug symbols are present in shared object and can identify
+code.
+
+It starts scanning from a directory and recursively scans all ELF
+files found in it for various symbols to ensure all debuginfo is
+present and nothing has been stripped.
+
+Usage:
+
+./check-debug-symbols /path/of/dir/to/scan/
+
+
+Example:
+
+./check-debug-symbols /usr/lib64
+"""
+
+# This technique was explained to me by Mark Wielaard (mjw).
+
+import collections
+import os
+import re
+import subprocess
+import sys
+
+ScanResult = collections.namedtuple('ScanResult',
+ 'file_name debug_info debug_abbrev file_symbols gnu_debuglink')
+
+
+def scan_file(file):
+ "Scan the provided file and return a ScanResult containing results of the scan."
+
+ # Test for .debug_* sections in the shared object. This is the main test.
+ # Stripped objects will not contain these.
+ readelf_S_result = subprocess.run(['eu-readelf', '-S', file],
+ stdout=subprocess.PIPE, encoding='utf-8', check=True)
+ has_debug_info = any(line for line in readelf_S_result.stdout.split('\n') if '] .debug_info' in line)
+
+ has_debug_abbrev = any(line for line in readelf_S_result.stdout.split('\n') if '] .debug_abbrev' in line)
+
+ # Test FILE symbols. These will most likely be removed by anyting that
+ # manipulates symbol tables because it's generally useless. So a nice test
+ # that nothing has messed with symbols.
+ def contains_file_symbols(line):
+ parts = line.split()
+ if len(parts) < 8:
+ return False
+ return \
+ parts[2] == '0' and parts[3] == 'FILE' and parts[4] == 'LOCAL' and parts[5] == 'DEFAULT' and \
+ parts[6] == 'ABS' and re.match(r'((.*/)?[-_a-zA-Z0-9]+\.(c|cc|cpp|cxx))?', parts[7])
+
+ readelf_s_result = subprocess.run(["eu-readelf", '-s', file],
+ stdout=subprocess.PIPE, encoding='utf-8', check=True)
+ has_file_symbols = any(line for line in readelf_s_result.stdout.split('\n') if contains_file_symbols(line))
+
+ # Test that there are no .gnu_debuglink sections pointing to another
+ # debuginfo file. There shouldn't be any debuginfo files, so the link makes
+ # no sense either.
+ has_gnu_debuglink = any(line for line in readelf_s_result.stdout.split('\n') if '] .gnu_debuglink' in line)
+
+ return ScanResult(file, has_debug_info, has_debug_abbrev, has_file_symbols, has_gnu_debuglink)
+
+def is_elf(file):
+ result = subprocess.run(['file', file], stdout=subprocess.PIPE, encoding='utf-8', check=True)
+ return re.search('ELF 64-bit LSB (?:executable|shared object)', result.stdout)
+
+def scan_file_if_sensible(file):
+ if is_elf(file):
+ # print(file)
+ return scan_file(file)
+ return None
+
+def scan_dir(dir):
+ results = []
+ for root, _, files in os.walk(dir):
+ for name in files:
+ result = scan_file_if_sensible(os.path.join(root, name))
+ if result:
+ results.append(result)
+ return results
+
+def scan(file):
+ file = os.path.abspath(file)
+ if os.path.isdir(file):
+ return scan_dir(file)
+ elif os.path.isfile(file):
+ return [scan_file_if_sensible(file)]
+
+def is_bad_result(result):
+ return not result.debug_info or not result.debug_abbrev or not result.file_symbols or result.gnu_debuglink
+
+def print_scan_results(results, verbose):
+ # print(results)
+ for result in results:
+ file_name = result.file_name
+ found_issue = False
+ if not result.debug_info:
+ found_issue = True
+ print('error: missing .debug_info section in', file_name)
+ if not result.debug_abbrev:
+ found_issue = True
+ print('error: missing .debug_abbrev section in', file_name)
+ if not result.file_symbols:
+ found_issue = True
+ print('error: missing FILE symbols in', file_name)
+ if result.gnu_debuglink:
+ found_issue = True
+ print('error: unexpected .gnu_debuglink section in', file_name)
+ if verbose and not found_issue:
+ print('OK: ', file_name)
+
+def main(args):
+ verbose = False
+ files = []
+ for arg in args:
+ if arg == '--verbose' or arg == '-v':
+ verbose = True
+ else:
+ files.append(arg)
+
+ results = []
+ for file in files:
+ results.extend(scan(file))
+
+ print_scan_results(results, verbose)
+
+ if any(is_bad_result(result) for result in results):
+ return 1
+ return 0
+
+
+if __name__ == '__main__':
+ sys.exit(main(sys.argv[1:]))
diff --git a/cli-telemetry-optout.patch b/cli-telemetry-optout.patch
new file mode 100644
index 0000000..9b01f13
--- /dev/null
+++ b/cli-telemetry-optout.patch
@@ -0,0 +1,18 @@
+diff --git a/src/dotnet/Program.cs b/src/dotnet/Program.cs
+index de1ebb9e6..6bbf479de 100644
+--- a/src/dotnet/Program.cs
++++ b/src/dotnet/Program.cs
+@@ -28,6 +28,13 @@ public class Program
+
+ public static int Main(string[] args)
+ {
++ // opt out of telemetry by default if the env var is unset
++ string telemetryValue = Environment.GetEnvironmentVariable("DOTNET_CLI_TELEMETRY_OPTOUT");
++ if (String.IsNullOrEmpty(telemetryValue))
++ {
++ Environment.SetEnvironmentVariable("DOTNET_CLI_TELEMETRY_OPTOUT", "1");
++ }
++
+ DebugHelper.HandleDebugSwitch(ref args);
+
+ new MulticoreJitActivator().TryActivateMulticoreJit();
diff --git a/core-setup-hardening-flags.patch b/core-setup-hardening-flags.patch
new file mode 100644
index 0000000..3f6b91c
--- /dev/null
+++ b/core-setup-hardening-flags.patch
@@ -0,0 +1,11 @@
+diff --git a/src/settings.cmake b/src/settings.cmake
+--- a/src/settings.cmake
++++ b/src/settings.cmake
+@@ -218,6 +218,7 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
+ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Xlinker -Bsymbolic -Bsymbolic-functions")
+ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--build-id=sha1")
+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--build-id=sha1")
++ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pie")
+ add_compile_options(-fstack-protector-strong)
+ elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+ add_compile_options(-fstack-protector)
diff --git a/coreclr-hardening-flags.patch b/coreclr-hardening-flags.patch
new file mode 100644
index 0000000..d58d735
--- /dev/null
+++ b/coreclr-hardening-flags.patch
@@ -0,0 +1,11 @@
+diff --git a/src/debug/createdump/CMakeLists.txt b/src/debug/createdump/CMakeLists.txt
+--- a/src/debug/createdump/CMakeLists.txt
++++ b/src/debug/createdump/CMakeLists.txt
+@@ -21,6 +21,7 @@ include_directories(BEFORE ${VM_DIR})
+ add_definitions(-DPAL_STDCPP_COMPAT)
+
+ add_compile_options(-fPIE)
++add_link_options(-pie)
+
+ set(CREATEDUMP_SOURCES
+ createdump.cpp
diff --git a/corefx-39633-cgroupv2-mountpoints.patch b/corefx-39633-cgroupv2-mountpoints.patch
new file mode 100644
index 0000000..34fbecb
--- /dev/null
+++ b/corefx-39633-cgroupv2-mountpoints.patch
@@ -0,0 +1,46 @@
+From 1864630f762160e1cb439362cc0577471624192a Mon Sep 17 00:00:00 2001
+From: Omair Majid <omajid(a)redhat.com>
+Date: Fri, 19 Jul 2019 19:18:51 -0400
+Subject: [PATCH] Fix up cgroup2fs in Interop.MountPoints.FormatInfo
+
+`stat -fc %T /sys/fs/cgroup` calls this file system `cgroup2fs`
+
+Add the cgroup2fs file system magic number. Available from:
+
+ - https://www.kernel.org/doc/Documentation/cgroup-v2.txt
+ - man 2 statfs
+
+Move cgroup2fs next to cgroupfs in the drive type list, since it is also
+DriveType.Ram.
+---
+ .../Unix/System.Native/Interop.MountPoints.FormatInfo.cs | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/Common/src/Interop/Unix/System.Native/Interop.MountPoints.FormatInfo.cs b/src/Common/src/Interop/Unix/System.Native/Interop.MountPoints.FormatInfo.cs
+index af38a2285ba2..4240bd4853ab 100644
+--- a/src/Common/src/Interop/Unix/System.Native/Interop.MountPoints.FormatInfo.cs
++++ b/src/Common/src/Interop/Unix/System.Native/Interop.MountPoints.FormatInfo.cs
+@@ -47,6 +47,7 @@ internal enum UnixFileSystemTypes : long
+ btrfs = 0x9123683E,
+ ceph = 0x00C36400,
+ cgroupfs = 0x0027E0EB,
++ cgroup2fs = 0x63677270,
+ cifs = 0xFF534D42,
+ coda = 0x73757245,
+ coherent = 0x012FF7B7,
+@@ -231,7 +232,6 @@ private static DriveType GetDriveType(string fileSystemName)
+ case "bpf_fs":
+ case "btrfs":
+ case "btrfs_test":
+- case "cgroup2fs":
+ case "coh":
+ case "daxfs":
+ case "drvfs":
+@@ -384,6 +384,7 @@ private static DriveType GetDriveType(string fileSystemName)
+ case "binfmt_misc":
+ case "cgroup":
+ case "cgroupfs":
++ case "cgroup2fs":
+ case "configfs":
+ case "cramfs":
+ case "cramfs-wend":
diff --git a/corefx-39686-cgroupv2-01.patch b/corefx-39686-cgroupv2-01.patch
new file mode 100644
index 0000000..e7628e2
--- /dev/null
+++ b/corefx-39686-cgroupv2-01.patch
@@ -0,0 +1,391 @@
+From 2b2273ea4ea1c28472fa0d6ad2ffeb6374500550 Mon Sep 17 00:00:00 2001
+From: Omair Majid <omajid(a)redhat.com>
+Date: Wed, 23 Oct 2019 17:45:59 -0400
+Subject: [PATCH 1/2] Add cgroup v2 support to Interop.cgroups
+
+Fix up code to adjust cgroup v1 assumptions and check cgroup v2 paths,
+locations and values.
+
+Continue using the older cgroup v1 terminology for APIs.
+---
+ .../Interop/Linux/cgroups/Interop.cgroups.cs | 116 ++++++++++++++----
+ src/Common/tests/Common.Tests.csproj | 4 +
+ .../tests/Tests/Interop/cgroupsTests.cs | 107 ++++++++++++++++
+ .../tests/DescriptionNameTests.cs | 2 +-
+ 4 files changed, 206 insertions(+), 23 deletions(-)
+ create mode 100644 src/Common/tests/Tests/Interop/cgroupsTests.cs
+
+diff --git a/src/Common/src/Interop/Linux/cgroups/Interop.cgroups.cs b/src/Common/src/Interop/Linux/cgroups/Interop.cgroups.cs
+index 0ffd4d7b7c03..186fe0516c5b 100644
+--- a/src/Common/src/Interop/Linux/cgroups/Interop.cgroups.cs
++++ b/src/Common/src/Interop/Linux/cgroups/Interop.cgroups.cs
+@@ -9,17 +9,22 @@
+
+ internal static partial class Interop
+ {
++ /// <summary>Provides access to some cgroup (v1 and v2) features</summary>
+ internal static partial class cgroups
+ {
++ // For cgroup v1, see https://www.kernel.org/doc/Documentation/cgroup-v1/
++ // For cgroup v2, see https://www.kernel.org/doc/Documentation/cgroup-v2.txt
++
++ /// <summary>The version of cgroup that's being used </summary>
++ internal enum CGroupVersion { None, CGroup1, CGroup2 };
++
+ /// <summary>Path to mountinfo file in procfs for the current process.</summary>
+ private const string ProcMountInfoFilePath = "/proc/self/mountinfo";
+ /// <summary>Path to cgroup directory in procfs for the current process.</summary>
+ private const string ProcCGroupFilePath = "/proc/self/cgroup";
+
+- /// <summary>Path to the found cgroup location, or null if it couldn't be found.</summary>
+- internal static readonly string s_cgroupMemoryPath = FindCGroupPath("memory");
+- /// <summary>Path to the found cgroup memory limit_in_bytes path, or null if it couldn't be found.</summary>
+- private static readonly string s_cgroupMemoryLimitPath = s_cgroupMemoryPath != null ? s_cgroupMemoryPath + "/memory.limit_in_bytes" : null;
++ /// <summary>Path to the found cgroup memory limit path, or null if it couldn't be found.</summary>
++ internal static readonly string s_cgroupMemoryLimitPath = FindCGroupMemoryLimitPath();
+
+ /// <summary>Tries to read the memory limit from the cgroup memory location.</summary>
+ /// <param name="limit">The read limit, or 0 if it couldn't be read.</param>
+@@ -42,7 +47,7 @@ public static bool TryGetMemoryLimit(out ulong limit)
+ /// <param name="path">The path to the file to parse.</param>
+ /// <param name="result">The parsed result, or 0 if it couldn't be parsed.</param>
+ /// <returns>true if the value was read successfully; otherwise, false.</returns>
+- private static bool TryReadMemoryValueFromFile(string path, out ulong result)
++ internal static bool TryReadMemoryValueFromFile(string path, out ulong result)
+ {
+ if (File.Exists(path))
+ {
+@@ -79,6 +84,11 @@ private static bool TryReadMemoryValueFromFile(string path, out ulong result)
+ result = checked(ulongValue * multiplier);
+ return true;
+ }
++
++ // 'max' is also a possible valid value
++ //
++ // Treat this as 'no memory limit' and let the caller
++ // fallback to reading the real limit via other means
+ }
+ catch (Exception e)
+ {
+@@ -90,12 +100,35 @@ private static bool TryReadMemoryValueFromFile(string path, out ulong result)
+ return false;
+ }
+
++ /// <summary>Find the cgroup memory limit path.</summary>
++ /// <returns>The limit path if found; otherwise, null.</returns>
++ private static string FindCGroupMemoryLimitPath()
++ {
++ string cgroupMemoryPath = FindCGroupPath("memory", out CGroupVersion version);
++ if (cgroupMemoryPath != null)
++ {
++ if (version == CGroupVersion.CGroup1)
++ {
++ return cgroupMemoryPath + "/memory.limit_in_bytes";
++ }
++
++ if (version == CGroupVersion.CGroup2)
++ {
++ // 'memory.high' is a soft limit; the process may get throttled
++ // 'memory.max' is where OOM killer kicks in
++ return cgroupMemoryPath + "/memory.max";
++ }
++ }
++
++ return null;
++ }
++
+ /// <summary>Find the cgroup path for the specified subsystem.</summary>
+ /// <param name="subsystem">The subsystem, e.g. "memory".</param>
+ /// <returns>The cgroup path if found; otherwise, null.</returns>
+- private static string FindCGroupPath(string subsystem)
++ private static string FindCGroupPath(string subsystem, out CGroupVersion version)
+ {
+- if (TryFindHierarchyMount(subsystem, out string hierarchyRoot, out string hierarchyMount) &&
++ if (TryFindHierarchyMount(subsystem, out version, out string hierarchyRoot, out string hierarchyMount) &&
+ TryFindCGroupPathForSubsystem(subsystem, out string cgroupPathRelativeToMount))
+ {
+ // For a host cgroup, we need to append the relative path.
+@@ -113,19 +146,24 @@ private static string FindCGroupPath(string subsystem)
+ /// <param name="root">The path of the directory in the filesystem which forms the root of this mount; null if not found.</param>
+ /// <param name="path">The path of the mount point relative to the process's root directory; null if not found.</param>
+ /// <returns>true if the mount was found; otherwise, null.</returns>
+- private static bool TryFindHierarchyMount(string subsystem, out string root, out string path)
++ private static bool TryFindHierarchyMount(string subsystem, out CGroupVersion version, out string root, out string path)
+ {
+- if (File.Exists(ProcMountInfoFilePath))
++ return TryFindHierarchyMount(ProcMountInfoFilePath, subsystem, out version, out root, out path);
++ }
++
++ internal static bool TryFindHierarchyMount(string mountInfoFilePath, string subsystem, out CGroupVersion version, out string root, out string path)
++ {
++ if (File.Exists(mountInfoFilePath))
+ {
+ try
+ {
+- using (var reader = new StreamReader(ProcMountInfoFilePath))
++ using (var reader = new StreamReader(mountInfoFilePath))
+ {
+ string line;
+ while ((line = reader.ReadLine()) != null)
+ {
+ // Look for an entry that has cgroup as the "filesystem type"
+- // and that has options containing the specified subsystem.
++ // and, for cgroup1, that has options containing the specified subsystem
+ // See man page for /proc/[pid]/mountinfo for details, e.g.:
+ // (1)(2)(3) (4) (5) (6) (7) (8) (9) (10) (11)
+ // 36 35 98:0 /mnt1 /mnt2 rw,noatime master:1 - ext3 /dev/root rw,errors=continue
+@@ -148,17 +186,35 @@ private static bool TryFindHierarchyMount(string subsystem, out string root, out
+ continue;
+ }
+
+- if (postSeparatorlineParts[0] != "cgroup" ||
+- Array.IndexOf(postSeparatorlineParts[2].Split(','), subsystem) < 0)
++ bool validCGroup1Entry = ((postSeparatorlineParts[0] == "cgroup") &&
++ (Array.IndexOf(postSeparatorlineParts[2].Split(','), subsystem) >= 0));
++ bool validCGroup2Entry = postSeparatorlineParts[0] == "cgroup2";
++
++ if (!validCGroup1Entry && !validCGroup2Entry)
+ {
+ // Not the relevant entry.
+ continue;
+ }
+
+- // Found the relevant entry. Extract the mount root and path.
++ // Found the relevant entry. Extract the cgroup version, mount root and path.
++ switch (postSeparatorlineParts[0])
++ {
++ case "cgroup":
++ version = CGroupVersion.CGroup1;
++ break;
++ case "cgroup2":
++ version = CGroupVersion.CGroup2;
++ break;
++ default:
++ version = CGroupVersion.None;
++ Debug.Fail($"invalid value for CGroupVersion \"{postSeparatorlineParts[0]}\"");
++ break;
++ }
++
+ string[] lineParts = line.Substring(0, endOfOptionalFields).Split(' ');
+ root = lineParts[3];
+ path = lineParts[4];
++
+ return true;
+ }
+ }
+@@ -169,6 +225,7 @@ private static bool TryFindHierarchyMount(string subsystem, out string root, out
+ }
+ }
+
++ version = CGroupVersion.None;
+ root = null;
+ path = null;
+ return false;
+@@ -180,27 +237,42 @@ private static bool TryFindHierarchyMount(string subsystem, out string root, out
+ /// <returns></returns>
+ private static bool TryFindCGroupPathForSubsystem(string subsystem, out string path)
+ {
+- if (File.Exists(ProcCGroupFilePath))
++ return TryFindCGroupPathForSubsystem(ProcCGroupFilePath, subsystem, out path);
++ }
++
++ internal static bool TryFindCGroupPathForSubsystem(string procCGroupFilePath, string subsystem, out string path)
++ {
++ if (File.Exists(procCGroupFilePath))
+ {
+ try
+ {
+- using (var reader = new StreamReader(ProcCGroupFilePath))
++ using (var reader = new StreamReader(procCGroupFilePath))
+ {
+ string line;
+ while ((line = reader.ReadLine()) != null)
+ {
+- // Find the first entry that has the subsystem listed in its controller
+- // list. See man page for cgroups for /proc/[pid]/cgroups format, e.g:
+- // hierarchy-ID:controller-list:cgroup-path
+- // 5:cpuacct,cpu,cpuset:/daemons
+-
+ string[] lineParts = line.Split(':');
++
+ if (lineParts.Length != 3)
+ {
+ // Malformed line.
+ continue;
+ }
+
++ // cgroup v2: Find the first entry that matches the cgroup v2 hierarchy:
++ // 0::$PATH
++
++ if ((lineParts[0] == "0") && (string.Empty == lineParts[1]))
++ {
++ path = lineParts[2];
++ return true;
++ }
++
++ // cgroup v1: Find the first entry that has the subsystem listed in its controller
++ // list. See man page for cgroups for /proc/[pid]/cgroups format, e.g:
++ // hierarchy-ID:controller-list:cgroup-path
++ // 5:cpuacct,cpu,cpuset:/daemons
++
+ if (Array.IndexOf(lineParts[1].Split(','), subsystem) < 0)
+ {
+ // Not the relevant entry.
+@@ -214,7 +286,7 @@ private static bool TryFindCGroupPathForSubsystem(string subsystem, out string p
+ }
+ catch (Exception e)
+ {
+- Debug.Fail($"Failed to read or parse \"{ProcMountInfoFilePath}\": {e}");
++ Debug.Fail($"Failed to read or parse \"{procCGroupFilePath}\": {e}");
+ }
+ }
+
+diff --git a/src/Common/tests/Common.Tests.csproj b/src/Common/tests/Common.Tests.csproj
+index a189d856348b..979c8dd7fbe6 100644
+--- a/src/Common/tests/Common.Tests.csproj
++++ b/src/Common/tests/Common.Tests.csproj
+@@ -12,6 +12,9 @@
+ <Compile Include="$(CommonTestPath)\System\Security\Cryptography\ByteUtils.cs">
+ <Link>Common\System\Security\Cryptography\ByteUtils.cs</Link>
+ </Compile>
++ <Compile Include="$(CommonPath)\Interop\Linux\cgroups\Interop.cgroups.cs">
++ <Link>Common\Interop\Linux\cgroups\Interop.cgroups.cs</Link>
++ </Compile>
+ <Compile Include="$(CommonPath)\Interop\Linux\procfs\Interop.ProcFsStat.cs">
+ <Link>Common\Interop\Linux\procfs\Interop.ProcFsStat.cs</Link>
+ </Compile>
+@@ -69,6 +72,7 @@
+ <Compile Include="$(CommonPath)\CoreLib\System\PasteArguments.cs">
+ <Link>Common\CoreLib\System\PasteArguments.cs</Link>
+ </Compile>
++ <Compile Include="Tests\Interop\cgroupsTests.cs" />
+ <Compile Include="Tests\Interop\procfsTests.cs" />
+ <Compile Include="Tests\System\CharArrayHelpersTests.cs" />
+ <Compile Include="Tests\System\IO\PathInternal.Tests.cs" />
+diff --git a/src/Common/tests/Tests/Interop/cgroupsTests.cs b/src/Common/tests/Tests/Interop/cgroupsTests.cs
+new file mode 100644
+index 000000000000..f16d9242879c
+--- /dev/null
++++ b/src/Common/tests/Tests/Interop/cgroupsTests.cs
+@@ -0,0 +1,107 @@
++// Licensed to the .NET Foundation under one or more agreements.
++// The .NET Foundation licenses this file to you under the MIT license.
++// See the LICENSE file in the project root for more information.
++
++using System;
++using System.IO;
++using System.Text;
++using Xunit;
++
++namespace Common.Tests
++{
++ public class cgroupsTests
++ {
++ [Theory]
++ [InlineData(true, "0", 0)]
++ [InlineData(false, "max", 0)]
++ [InlineData(true, "1k", 1024)]
++ [InlineData(true, "1K", 1024)]
++ public static void ValidateTryReadMemoryValue(bool expectedResult, string valueText, ulong expectedValue)
++ {
++ string path = Path.GetTempFileName();
++ try
++ {
++ File.WriteAllText(path, valueText);
++
++ bool result = Interop.cgroups.TryReadMemoryValueFromFile(path, out ulong val);
++
++ Assert.Equal(expectedResult, result);
++ if (result)
++ {
++ Assert.Equal(expectedValue, val);
++ }
++ }
++ finally
++ {
++ File.Delete(path);
++ }
++ }
++
++ [Theory]
++ [InlineData(false, "0 0 0:0 / /foo ignore ignore - overlay overlay ignore", "ignore", 0, "/", "/")]
++ [InlineData(true, "0 0 0:0 / /foo ignore ignore - cgroup2 cgroup2 ignore", "ignore", 2, "/", "/foo")]
++ [InlineData(true, "0 0 0:0 / /foo ignore ignore - cgroup2 cgroup2 ignore", "memory", 2, "/", "/foo")]
++ [InlineData(true, "0 0 0:0 / /foo ignore ignore - cgroup2 cgroup2 ignore", "cpu", 2, "/", "/foo")]
++ [InlineData(true, "0 0 0:0 / /foo ignore - cgroup2 cgroup2 ignore", "cpu", 2, "/", "/foo")]
++ [InlineData(true, "0 0 0:0 / /foo ignore ignore ignore - cgroup2 cgroup2 ignore", "cpu", 2, "/", "/foo")]
++ [InlineData(true, "0 0 0:0 / /foo-with-dashes ignore ignore - cgroup2 cgroup2 ignore", "ignore", 2, "/", "/foo-with-dashes")]
++ [InlineData(true, "0 0 0:0 / /foo ignore ignore - cgroup cgroup memory", "memory", 1, "/", "/foo")]
++ [InlineData(true, "0 0 0:0 / /foo-with-dashes ignore ignore - cgroup cgroup memory", "memory", 1, "/", "/foo-with-dashes")]
++ [InlineData(true, "0 0 0:0 / /foo ignore ignore - cgroup cgroup cpu,memory", "memory", 1, "/", "/foo")]
++ [InlineData(true, "0 0 0:0 / /foo ignore ignore - cgroup cgroup memory,cpu", "memory", 1, "/", "/foo")]
++ [InlineData(false, "0 0 0:0 / /foo ignore ignore - cgroup cgroup cpu", "memory", 0, "/", "/foo")]
++ public static void ParseValidateMountInfo(bool found, string procSelfMountInfoText, string subsystem, int expectedVersion, string expectedRoot, string expectedMount)
++ {
++ string path = Path.GetTempFileName();
++ try
++ {
++ File.WriteAllText(path, procSelfMountInfoText);
++
++ bool result = Interop.cgroups.TryFindHierarchyMount(path, subsystem, out Interop.cgroups.CGroupVersion version, out string root, out string mount);
++
++ Assert.Equal(found, result);
++ if (found)
++ {
++ Assert.Equal(expectedVersion, (int)version);
++ Assert.Equal(expectedRoot, root);
++ Assert.Equal(expectedMount, mount);
++ }
++ }
++ finally
++ {
++ File.Delete(path);
++ }
++ }
++
++ [Theory]
++ [InlineData(true, "0::/foo", "ignore", "/foo")]
++ [InlineData(true, "0::/bar", "ignore", "/bar")]
++ [InlineData(true, "0::frob", "ignore", "frob")]
++ [InlineData(false, "1::frob", "ignore", "ignore")]
++ [InlineData(true, "1:foo:bar", "foo", "bar")]
++ [InlineData(true, "2:foo:bar", "foo", "bar")]
++ [InlineData(false, "2:foo:bar", "bar", "ignore")]
++ [InlineData(true, "1:foo:bar\n2:eggs:spam", "foo", "bar")]
++ [InlineData(true, "1:foo:bar\n2:eggs:spam", "eggs", "spam")]
++ public static void ParseValidateProcCGroup(bool found, string procSelfCgroupText, string subsystem, string expectedMountPath)
++ {
++ string path = Path.GetTempFileName();
++ try
++ {
++ File.WriteAllText(path, procSelfCgroupText);
++
++ bool result = Interop.cgroups.TryFindCGroupPathForSubsystem(path, subsystem, out string mountPath);
++
++ Assert.Equal(found, result);
++ if (found)
++ {
++ Assert.Equal(expectedMountPath, mountPath);
++ }
++ }
++ finally
++ {
++ File.Delete(path);
++ }
++ }
++ }
++}
+diff --git a/src/System.Runtime.InteropServices.RuntimeInformation/tests/DescriptionNameTests.cs b/src/System.Runtime.InteropServices.RuntimeInformation/tests/DescriptionNameTests.cs
+index 910af2fd82b4..73f692898dbc 100644
+--- a/src/System.Runtime.InteropServices.RuntimeInformation/tests/DescriptionNameTests.cs
++++ b/src/System.Runtime.InteropServices.RuntimeInformation/tests/DescriptionNameTests.cs
+@@ -40,7 +40,7 @@ public void DumpRuntimeInformationToConsole()
+
+ Console.WriteLine($"### CURRENT DIRECTORY: {Environment.CurrentDirectory}");
+
+- string cgroupsLocation = Interop.cgroups.s_cgroupMemoryPath;
++ string cgroupsLocation = Interop.cgroups.s_cgroupMemoryLimitPath;
+ if (cgroupsLocation != null)
+ {
+ Console.WriteLine($"### CGROUPS MEMORY: {cgroupsLocation}");
+
diff --git a/corefx-39686-cgroupv2-02.patch b/corefx-39686-cgroupv2-02.patch
new file mode 100644
index 0000000..88dcd99
--- /dev/null
+++ b/corefx-39686-cgroupv2-02.patch
@@ -0,0 +1,129 @@
+From 9a8c5e4014ffca8aff70808cc0e50a403d38c292 Mon Sep 17 00:00:00 2001
+From: Stephen Toub <stoub(a)microsoft.com>
+Date: Wed, 23 Oct 2019 20:35:49 -0400
+Subject: [PATCH 2/2] Clean up new tests
+
+---
+ .../tests/Tests/Interop/cgroupsTests.cs | 79 ++++++-------------
+ 1 file changed, 25 insertions(+), 54 deletions(-)
+
+diff --git a/src/Common/tests/Tests/Interop/cgroupsTests.cs b/src/Common/tests/Tests/Interop/cgroupsTests.cs
+index f16d9242879c..fc6ab5c9753c 100644
+--- a/src/Common/tests/Tests/Interop/cgroupsTests.cs
++++ b/src/Common/tests/Tests/Interop/cgroupsTests.cs
+@@ -2,38 +2,27 @@
+ // The .NET Foundation licenses this file to you under the MIT license.
+ // See the LICENSE file in the project root for more information.
+
+-using System;
+ using System.IO;
+-using System.Text;
+ using Xunit;
+
+ namespace Common.Tests
+ {
+- public class cgroupsTests
++ public class cgroupsTests : FileCleanupTestBase
+ {
+ [Theory]
+- [InlineData(true, "0", 0)]
+- [InlineData(false, "max", 0)]
+- [InlineData(true, "1k", 1024)]
+- [InlineData(true, "1K", 1024)]
+- public static void ValidateTryReadMemoryValue(bool expectedResult, string valueText, ulong expectedValue)
++ [InlineData(true, "0", 0)]
++ [InlineData(false, "max", 0)]
++ [InlineData(true, "1k", 1024)]
++ [InlineData(true, "1K", 1024)]
++ public void ValidateTryReadMemoryValue(bool expectedResult, string valueText, ulong expectedValue)
+ {
+- string path = Path.GetTempFileName();
+- try
+- {
+- File.WriteAllText(path, valueText);
+-
+- bool result = Interop.cgroups.TryReadMemoryValueFromFile(path, out ulong val);
++ string path = GetTestFilePath();
++ File.WriteAllText(path, valueText);
+
+- Assert.Equal(expectedResult, result);
+- if (result)
+- {
+- Assert.Equal(expectedValue, val);
+- }
+- }
+- finally
++ Assert.Equal(expectedResult, Interop.cgroups.TryReadMemoryValueFromFile(path, out ulong val));
++ if (expectedResult)
+ {
+- File.Delete(path);
++ Assert.Equal(expectedValue, val);
+ }
+ }
+
+@@ -50,26 +39,17 @@ public static void ValidateTryReadMemoryValue(bool expectedResult, string valueT
+ [InlineData(true, "0 0 0:0 / /foo ignore ignore - cgroup cgroup cpu,memory", "memory", 1, "/", "/foo")]
+ [InlineData(true, "0 0 0:0 / /foo ignore ignore - cgroup cgroup memory,cpu", "memory", 1, "/", "/foo")]
+ [InlineData(false, "0 0 0:0 / /foo ignore ignore - cgroup cgroup cpu", "memory", 0, "/", "/foo")]
+- public static void ParseValidateMountInfo(bool found, string procSelfMountInfoText, string subsystem, int expectedVersion, string expectedRoot, string expectedMount)
++ public void ParseValidateMountInfo(bool expectedFound, string procSelfMountInfoText, string subsystem, int expectedVersion, string expectedRoot, string expectedMount)
+ {
+- string path = Path.GetTempFileName();
+- try
+- {
+- File.WriteAllText(path, procSelfMountInfoText);
+-
+- bool result = Interop.cgroups.TryFindHierarchyMount(path, subsystem, out Interop.cgroups.CGroupVersion version, out string root, out string mount);
++ string path = GetTestFilePath();
++ File.WriteAllText(path, procSelfMountInfoText);
+
+- Assert.Equal(found, result);
+- if (found)
+- {
+- Assert.Equal(expectedVersion, (int)version);
+- Assert.Equal(expectedRoot, root);
+- Assert.Equal(expectedMount, mount);
+- }
+- }
+- finally
++ Assert.Equal(expectedFound, Interop.cgroups.TryFindHierarchyMount(path, subsystem, out Interop.cgroups.CGroupVersion version, out string root, out string mount));
++ if (expectedFound)
+ {
+- File.Delete(path);
++ Assert.Equal(expectedVersion, (int)version);
++ Assert.Equal(expectedRoot, root);
++ Assert.Equal(expectedMount, mount);
+ }
+ }
+
+@@ -83,24 +63,15 @@ public static void ParseValidateMountInfo(bool found, string procSelfMountInfoTe
+ [InlineData(false, "2:foo:bar", "bar", "ignore")]
+ [InlineData(true, "1:foo:bar\n2:eggs:spam", "foo", "bar")]
+ [InlineData(true, "1:foo:bar\n2:eggs:spam", "eggs", "spam")]
+- public static void ParseValidateProcCGroup(bool found, string procSelfCgroupText, string subsystem, string expectedMountPath)
++ public void ParseValidateProcCGroup(bool expectedFound, string procSelfCgroupText, string subsystem, string expectedMountPath)
+ {
+- string path = Path.GetTempFileName();
+- try
+- {
+- File.WriteAllText(path, procSelfCgroupText);
++ string path = GetTestFilePath();
++ File.WriteAllText(path, procSelfCgroupText);
+
+- bool result = Interop.cgroups.TryFindCGroupPathForSubsystem(path, subsystem, out string mountPath);
+-
+- Assert.Equal(found, result);
+- if (found)
+- {
+- Assert.Equal(expectedMountPath, mountPath);
+- }
+- }
+- finally
++ Assert.Equal(expectedFound, Interop.cgroups.TryFindCGroupPathForSubsystem(path, subsystem, out string mountPath));
++ if (expectedFound)
+ {
+- File.Delete(path);
++ Assert.Equal(expectedMountPath, mountPath);
+ }
+ }
+ }
diff --git a/corefx-optflags-support.patch b/corefx-optflags-support.patch
new file mode 100644
index 0000000..6f76d7f
--- /dev/null
+++ b/corefx-optflags-support.patch
@@ -0,0 +1,39 @@
+diff --git a/src/Native/Unix/CMakeLists.txt b/src/Native/Unix/CMakeLists.txt
+index 7d804a1e54..717c2718d7 100644
+--- a/src/Native/Unix/CMakeLists.txt
++++ b/src/Native/Unix/CMakeLists.txt
+@@ -25,7 +25,6 @@ add_compile_options(-fPIC)
+ add_compile_options(-Wthread-safety)
+ add_compile_options(-Wno-thread-safety-analysis)
+ endif()
+-add_compile_options(-Werror)
+
+ if(CMAKE_SYSTEM_NAME STREQUAL Emscripten)
+ set(CLR_CMAKE_PLATFORM_WASM 1)
+diff --git a/src/Native/Unix/configure.cmake b/src/Native/Unix/configure.cmake
+index f4a30ad6cb..f2db68402a 100644
+--- a/src/Native/Unix/configure.cmake
++++ b/src/Native/Unix/configure.cmake
+@@ -27,6 +27,12 @@ else ()
+ message(FATAL_ERROR "Unknown platform. Cannot define PAL_UNIX_NAME, used by RuntimeInformation.")
+ endif ()
+
++
++set (PREVIOUS_CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
++set (CMAKE_CXX_FLAGS "-D_GNU_SOURCE")
++set (PREVIOUS_CMAKE_C_FLAGS ${CMAKE_C_FLAGS})
++set (CMAKE_C_FLAGS "-D_GNU_SOURCE")
++
+ # We compile with -Werror, so we need to make sure these code fragments compile without warnings.
+ # Older CMake versions (3.8) do not assign the result of their tests, causing unused-value errors
+ # which are not distinguished from the test failing. So no error for that one.
+@@ -698,6 +704,9 @@ endif()
+
+ set (CMAKE_REQUIRED_LIBRARIES)
+
++set (CMAKE_CXX_FLAGS "${PREVIOUS_CMAKE_CXX_FLAGS}")
++set (CMAKE_C_FLAGS "${PREVIOUS_CMAKE_C_FLAGS}")
++
+ check_c_source_compiles(
+ "
+ #include <sys/inotify.h>
diff --git a/dotnet.sh.in b/dotnet.sh.in
new file mode 100644
index 0000000..65b92a0
--- /dev/null
+++ b/dotnet.sh.in
@@ -0,0 +1,14 @@
+
+# Set location for AppHost lookup
+[ -z "$DOTNET_ROOT" ] && export DOTNET_ROOT=@LIBDIR@/dotnet
+
+# Add dotnet tools directory to PATH
+DOTNET_TOOLS_PATH="$HOME/.dotnet/tools"
+case "$PATH" in
+ *"$DOTNET_TOOLS_PATH"* ) true ;;
+ * ) PATH="$PATH:$DOTNET_TOOLS_PATH" ;;
+esac
+
+# Extract self-contained executables under HOME
+# to avoid multi-user issues from using the default '/var/tmp'.
+[ -z "$DOTNET_BUNDLE_EXTRACT_BASE_DIR" ] && export DOTNET_BUNDLE_EXTRACT_BASE_DIR="${XDG_CACHE_HOME:-"$HOME"/.cache}/dotnet_bundle_extract"
diff --git a/dotnet3.1.spec b/dotnet3.1.spec
new file mode 100644
index 0000000..4536929
--- /dev/null
+++ b/dotnet3.1.spec
@@ -0,0 +1,682 @@
+%bcond_without bootstrap
+
+# Avoid provides/requires from private libraries
+%global privlibs libhostfxr
+%global privlibs %{privlibs}|libclrjit
+%global privlibs %{privlibs}|libcoreclr
+%global privlibs %{privlibs}|libcoreclrtraceptprovider
+%global privlibs %{privlibs}|libdbgshim
+%global privlibs %{privlibs}|libhostpolicy
+%global privlibs %{privlibs}|libmscordaccore
+%global privlibs %{privlibs}|libmscordbi
+%global privlibs %{privlibs}|libsos
+%global privlibs %{privlibs}|libsosplugin
+%global __provides_exclude ^(%{privlibs})\\.so
+%global __requires_exclude ^(%{privlibs})\\.so
+
+# Filter flags not supported by clang
+# -fstack-clash-protection
+# -specs=
+%global dotnet_cflags %(echo %optflags | sed -e 's/-fstack-clash-protection//' | sed -re 's/-specs=[^ ]*//g')
+%global dotnet_ldflags %(echo %{__global_ldflags} | sed -re 's/-specs=[^ ]*//g')
+
+%global host_version 3.1.1
+%global runtime_version 3.1.1
+%global aspnetcore_runtime_version %{runtime_version}
+%global sdk_version 3.1.101
+%global templates_version %{runtime_version}
+
+%global host_rpm_version %{host_version}
+%global aspnetcore_runtime_rpm_version %{aspnetcore_runtime_version}
+%global runtime_rpm_version %{runtime_version}
+%global sdk_rpm_version %{sdk_version}
+
+%if 0%{?fedora} || 0%{?rhel} < 8
+%global use_bundled_libunwind 0
+%else
+%global use_bundled_libunwind 1
+%endif
+
+%ifarch x86_64
+%global runtime_arch x64
+%endif
+%ifarch aarch64
+%global runtime_arch arm64
+%endif
+
+%if 0%{?fedora}
+%global runtime_id fedora.%{fedora}-%{runtime_arch}
+%else
+%if 0%{?centos}
+%global runtime_id centos.%{centos}-%{runtime_arch}
+%else
+%global runtime_id rhel.%{rhel}-%{runtime_arch}
+%endif
+%endif
+
+Name: dotnet3.1
+Version: %{sdk_rpm_version}
+Release: 1%{?dist}
+Summary: .NET Core Runtime and SDK
+License: MIT and ASL 2.0 and BSD and LGPLv2+ and CC-BY and CC0 and MS-PL and EPL-1.0 and GPL+ and GPLv2 and ISC and OFL and zlib
+URL: https://github.com/dotnet/
+
+# The source is generated on a Fedora box via:
+# ./build-dotnet-tarball v%%{sdk_version}-SDK
+Source0: dotnet-v%{sdk_version}-SDK.tar.gz
+Source1: check-debug-symbols.py
+Source2: dotnet.sh.in
+
+# Fix building with our additional CFLAGS/CXXFLAGS/LDFLAGS
+Patch100: corefx-optflags-support.patch
+
+# Add some support for cgroupv2 in corefx
+# All these patches are upstreamed for 5.0
+Patch101: corefx-39686-cgroupv2-01.patch
+Patch102: corefx-39686-cgroupv2-02.patch
+Patch103: corefx-39633-cgroupv2-mountpoints.patch
+
+# Build with with hardening flags, including -pie
+Patch200: coreclr-hardening-flags.patch
+
+# Build with with hardening flags, including -pie
+Patch300: core-setup-hardening-flags.patch
+
+# Disable telemetry by default; make it opt-in
+Patch500: cli-telemetry-optout.patch
+
+ExclusiveArch: x86_64
+
+BuildRequires: clang
+BuildRequires: cmake
+BuildRequires: coreutils
+%if %{without bootstrap}
+BuildRequires: dotnet-build-reference-packages
+BuildRequires: dotnet-sdk-3.1
+BuildRequires: dotnet-sdk-3.1-source-built-artifacts
+%endif
+BuildRequires: git
+%if 0%{?fedora} || 0%{?rhel} > 7
+BuildRequires: glibc-langpack-en
+%endif
+BuildRequires: hostname
+BuildRequires: krb5-devel
+BuildRequires: libcurl-devel
+BuildRequires: libicu-devel
+%if ! %{use_bundled_libunwind}
+BuildRequires: libunwind-devel
+%endif
+BuildRequires: lldb-devel
+BuildRequires: llvm
+BuildRequires: lttng-ust-devel
+BuildRequires: make
+BuildRequires: openssl-devel
+BuildRequires: python3
+BuildRequires: tar
+BuildRequires: zlib-devel
+
+%description
+.NET Core is a fast, lightweight and modular platform for creating
+cross platform applications that work on Linux, macOS and Windows.
+
+It particularly focuses on creating console applications, web
+applications and micro-services.
+
+.NET Core contains a runtime conforming to .NET Standards a set of
+framework libraries, an SDK containing compilers and a 'dotnet'
+application to drive everything.
+
+
+%package -n dotnet
+
+Version: %{sdk_rpm_version}
+Summary: .NET Core CLI tools and runtime
+
+Requires: dotnet-sdk-3.1%{?_isa} >= %{sdk_rpm_version}-%{release}
+
+%description -n dotnet
+.NET Core is a fast, lightweight and modular platform for creating
+cross platform applications that work on Linux, macOS and Windows.
+
+It particularly focuses on creating console applications, web
+applications and micro-services.
+
+.NET Core contains a runtime conforming to .NET Standards a set of
+framework libraries, an SDK containing compilers and a 'dotnet'
+application to drive everything.
+
+
+%package -n dotnet-host
+
+Version: %{host_rpm_version}
+Summary: .NET command line launcher
+
+%description -n dotnet-host
+The .NET Core host is a command line program that runs a standalone
+.NET core application or launches the SDK.
+
+.NET Core is a fast, lightweight and modular platform for creating
+cross platform applications that work on Linux, Mac and Windows.
+
+It particularly focuses on creating console applications, web
+applications and micro-services.
+
+
+%package -n dotnet-hostfxr-3.1
+
+Version: %{host_rpm_version}
+Summary: .NET Core command line host resolver
+
+# Theoretically any version of the host should work. But lets aim for the one
+# provided by this package, or from a newer version of .NET Core
+Requires: dotnet-host%{?_isa} >= %{host_rpm_version}-%{release}
+
+%description -n dotnet-hostfxr-3.1
+The .NET Core host resolver contains the logic to resolve and select
+the right version of the .NET Core SDK or runtime to use.
+
+.NET Core is a fast, lightweight and modular platform for creating
+cross platform applications that work on Linux, Mac and Windows.
+
+It particularly focuses on creating console applications, web
+applications and micro-services.
+
+
+%package -n dotnet-runtime-3.1
+
+Version: %{runtime_rpm_version}
+Summary: NET Core 3.1 runtime
+
+Requires: dotnet-hostfxr-3.1%{?_isa} >= %{host_rpm_version}-%{release}
+
+# libicu is dlopen()ed
+Requires: libicu%{?_isa}
+
+%if %{use_bundled_libunwind}
+Provides: bundled(libunwind) = 1.3
+%endif
+
+%description -n dotnet-runtime-3.1
+The .NET Core runtime contains everything needed to run .NET Core applications.
+It includes a high performance Virtual Machine as well as the framework
+libraries used by .NET Core applications.
+
+.NET Core is a fast, lightweight and modular platform for creating
+cross platform applications that work on Linux, Mac and Windows.
+
+It particularly focuses on creating console applications, web
+applications and micro-services.
+
+
+%package -n aspnetcore-runtime-3.1
+
+Version: %{aspnetcore_runtime_rpm_version}
+Summary: ASP.NET Core 3.1 runtime
+
+Requires: dotnet-runtime-3.1%{?_isa} >= %{runtime_rpm_version}-%{release}
+
+%description -n aspnetcore-runtime-3.1
+The ASP.NET Core runtime contains everything needed to run .NET Core
+web applications. It includes a high performance Virtual Machine as
+well as the framework libraries used by .NET Core applications.
+
+ASP.NET Core is a fast, lightweight and modular platform for creating
+cross platform web applications that work on Linux, Mac and Windows.
+
+It particularly focuses on creating console applications, web
+applications and micro-services.
+
+
+%package -n dotnet-templates-3.1
+
+Version: %{sdk_rpm_version}
+Summary: .NET Core 3.1 templates
+
+# Theoretically any version of the host should work. But lets aim for the one
+# provided by this package, or from a newer version of .NET Core
+Requires: dotnet-host%{?_isa} >= %{host_rpm_version}-%{release}
+
+%description -n dotnet-templates-3.1
+This package contains templates used by the .NET Core SDK.
+
+ASP.NET Core is a fast, lightweight and modular platform for creating
+cross platform web applications that work on Linux, Mac and Windows.
+
+It particularly focuses on creating console applications, web
+applications and micro-services.
+
+
+%package -n dotnet-sdk-3.1
+
+Version: %{sdk_rpm_version}
+Summary: .NET Core 3.1 Software Development Kit
+
+Provides: bundled(js-jquery)
+Provides: bundled(npm)
+
+Requires: dotnet-runtime-3.1%{?_isa} >= %{runtime_rpm_version}-%{release}
+Requires: aspnetcore-runtime-3.1%{?_isa} >= %{aspnetcore_runtime_rpm_version}-%{release}
+
+Requires: dotnet-apphost-pack-3.1%{?_isa} >= %{runtime_rpm_version}-%{release}
+Requires: dotnet-targeting-pack-3.1%{?_isa} >= %{runtime_rpm_version}-%{release}
+Requires: aspnetcore-targeting-pack-3.1%{?_isa} >= %{aspnetcore_runtime_rpm_version}-%{release}
+Requires: netstandard-targeting-pack-2.1%{?_isa} >= %{sdk_rpm_version}-%{release}
+
+Requires: dotnet-templates-3.1%{?_isa} >= %{sdk_rpm_version}-%{release}
+
+%description -n dotnet-sdk-3.1
+The .NET Core SDK is a collection of command line applications to
+create, build, publish and run .NET Core applications.
+
+.NET Core is a fast, lightweight and modular platform for creating
+cross platform applications that work on Linux, Mac and Windows.
+
+It particularly focuses on creating console applications, web
+applications and micro-services.
+
+
+%global dotnet_targeting_pack() %{expand:
+%package -n %{1}
+
+Version: %{2}
+Summary: Targeting Pack for %{3} %{4}
+
+Requires: dotnet-host%{?_isa}
+
+%description -n %{1}
+This package provides a targeting pack for %{3} %{4}
+that allows developers to compile against and target %{3} %{4}
+applications using the .NET Core SDK.
+
+%files -n %{1}
+%dir %{_libdir}/dotnet/packs
+%{_libdir}/dotnet/packs/%{5}
+}
+
+%dotnet_targeting_pack dotnet-apphost-pack-3.1 %{runtime_rpm_version} Microsoft.NETCore.App 3.1 Microsoft.NETCore.App.Host.%{runtime_id}
+%dotnet_targeting_pack dotnet-targeting-pack-3.1 %{runtime_rpm_version} Microsoft.NETCore.App 3.1 Microsoft.NETCore.App.Ref
+%dotnet_targeting_pack aspnetcore-targeting-pack-3.1 %{aspnetcore_runtime_rpm_version} Microsoft.AspNetCore.App 3.1 Microsoft.AspNetCore.App.Ref
+%dotnet_targeting_pack netstandard-targeting-pack-2.1 %{sdk_rpm_version} NETStandard.Library 2.1 NETStandard.Library.Ref
+
+
+%package -n dotnet-sdk-3.1-source-built-artifacts
+
+Version: %{sdk_rpm_version}
+Summary: Internal package for building .NET Core 3.1 Software Development Kit
+
+%description -n dotnet-sdk-3.1-source-built-artifacts
+The .NET Core source-built archive is a collection of packages needed
+to build the .NET Core SDK itself.
+
+These are not meant for general use.
+
+
+%prep
+%setup -q -n dotnet-v%{sdk_version}-SDK
+
+%if %{without bootstrap}
+# Remove all prebuilts
+find -iname '*.dll' -type f -delete
+find -iname '*.so' -type f -delete
+find -iname '*.tar.gz' -type f -delete
+find -iname '*.nupkg' -type f -delete
+find -iname '*.zip' -type f -delete
+rm -r .dotnet/
+rm -r packages/source-built
+%endif
+
+%if %{without bootstrap}
+sed -i -e 's|3.1.100-preview1-014459|3.1.101|' global.json
+mkdir -p packages/archive
+ln -s %{_libdir}/dotnet/source-built-artifacts/*.tar.gz packages/archive/
+ln -s %{_libdir}/dotnet/reference-packages/Private.SourceBuild.ReferencePackages*.tar.gz packages/archive
+%endif
+
+# Fix bad hardcoded path in build
+sed -i 's|/usr/share/dotnet|%{_libdir}/dotnet|' src/dotnet-core-setup.*/src/corehost/common/pal.unix.cpp
+
+# Disable warnings
+sed -i 's|skiptests|skiptests ignorewarnings|' repos/coreclr.proj
+
+pushd src/corefx.*
+%patch100 -p1
+%patch101 -p1
+%patch102 -p1
+%patch103 -p1
+popd
+
+pushd src/coreclr.*
+%patch200 -p1
+popd
+
+pushd src/dotnet-core-setup.*
+%patch300 -p1
+popd
+
+pushd src/dotnet-cli.*
+%patch500 -p1
+popd
+
+# If CLR_CMAKE_USE_SYSTEM_LIBUNWIND=TRUE is misisng, add it back
+grep CLR_CMAKE_USE_SYSTEM_LIBUNWIND repos/coreclr.proj || \
+ sed -i 's|\$(BuildArguments) </BuildArguments>|$(BuildArguments) cmakeargs -DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=TRUE</BuildArguments>|' repos/coreclr.proj
+
+%if %{use_bundled_libunwind}
+sed -i 's|-DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=TRUE|-DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=FALSE|' repos/coreclr.proj
+%endif
+
+cat source-build-info.txt
+
+find -iname 'nuget.config' -exec echo {}: \; -exec cat {} \; -exec echo \;
+
+
+%build
+cat /etc/os-release
+
+%if %{without bootstrap}
+cp -a %{_libdir}/dotnet .dotnet
+%endif
+
+export CFLAGS="%{dotnet_cflags}"
+export CXXFLAGS="%{dotnet_cflags}"
+export LDFLAGS="%{dotnet_ldflags}"
+
+VERBOSE=1 ./build.sh \
+ /v:n \
+ /p:LogVerbosity=n \
+ /p:MinimalConsoleLogOutput=false \
+ /p:ContinueOnPrebuiltBaselineError=true \
+
+
+sed -e 's|[@]LIBDIR[@]|%{_libdir}|g' %{SOURCE2} > dotnet.sh
+
+
+%install
+install -dm 0755 %{buildroot}%{_libdir}/dotnet
+ls bin/%{runtime_arch}/Release
+tar xf bin/%{runtime_arch}/Release/dotnet-sdk-%{sdk_version}-%{runtime_id}.tar.gz -C %{buildroot}%{_libdir}/dotnet/
+
+# Install managed symbols
+tar xf bin/%{runtime_arch}/Release/runtime/dotnet-runtime-symbols-%{runtime_version}-%{runtime_id}.tar.gz \
+ -C %{buildroot}/%{_libdir}/dotnet/shared/Microsoft.NETCore.App/%{runtime_version}/
+
+# Fix executable permissions on files
+find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.dll' -exec chmod -x {} \;
+find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.pdb' -exec chmod -x {} \;
+find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.props' -exec chmod -x {} \;
+find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.pubxml' -exec chmod -x {} \;
+find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.targets' -exec chmod -x {} \;
+chmod 0755 %{buildroot}/%{_libdir}/dotnet/sdk/%{sdk_version}/AppHostTemplate/apphost
+chmod 0755 %{buildroot}/%{_libdir}/dotnet/packs/Microsoft.NETCore.App.Host.%{runtime_id}/%{runtime_version}/runtimes/%{runtime_id}/native/libnethost.so
+chmod 0755 %{buildroot}/%{_libdir}/dotnet/packs/Microsoft.NETCore.App.Host.%{runtime_id}/%{runtime_version}/runtimes/%{runtime_id}/native/apphost
+chmod 0644 %{buildroot}/%{_libdir}/dotnet/packs/Microsoft.NETCore.App.Host.%{runtime_id}/%{runtime_version}/runtimes/%{runtime_id}/native/nethost.h
+chmod 0644 %{buildroot}/%{_libdir}/dotnet/packs/Microsoft.AspNetCore.App.Ref/3.1.0/obj/Microsoft.AspNetCore.App.Ref.csproj.nuget.cache
+chmod 0644 %{buildroot}/%{_libdir}/dotnet/packs/Microsoft.AspNetCore.App.Ref/3.1.0/Microsoft.AspNetCore.App.Ref/3.1.0/Debug/netstandard2.0/Microsoft.AspNetCore.App.Ref.assets.cache
+
+install -dm 0755 %{buildroot}%{_sysconfdir}/profile.d/
+install dotnet.sh %{buildroot}%{_sysconfdir}/profile.d/
+
+install -dm 0755 %{buildroot}/%{_datadir}/bash-completion/completions
+# dynamic completion needs the file to be named the same as the base command
+install src/dotnet-cli.*/scripts/register-completions.bash %{buildroot}/%{_datadir}/bash-completion/completions/dotnet
+
+# TODO: the zsh completion script needs to be ported to use #compdef
+#install -dm 755 %%{buildroot}/%%{_datadir}/zsh/site-functions
+#install src/cli/scripts/register-completions.zsh %%{buildroot}/%%{_datadir}/zsh/site-functions/_dotnet
+
+install -dm 0755 %{buildroot}%{_bindir}
+ln -s ../../%{_libdir}/dotnet/dotnet %{buildroot}%{_bindir}/
+
+install -dm 0755 %{buildroot}%{_mandir}/man1/
+find -iname 'dotnet*.1' -type f -exec cp {} %{buildroot}%{_mandir}/man1/ \;
+
+echo "%{_libdir}/dotnet" >> install_location
+install -dm 0755 %{buildroot}%{_sysconfdir}/dotnet
+install install_location %{buildroot}%{_sysconfdir}/dotnet/
+
+install -dm 0755 %{buildroot}%{_libdir}/dotnet/source-built-artifacts
+install bin/%{runtime_arch}/Release/Private.SourceBuilt.Artifacts.*.tar.gz %{buildroot}/%{_libdir}/dotnet/source-built-artifacts/
+
+# Check debug symbols in all elf objects. This is not in %%check
+# because native binaries are stripped by rpm-build after %%install.
+# So we need to do this check earlier.
+echo "Testing build results for debug symbols..."
+%{SOURCE1} -v %{buildroot}%{_libdir}/dotnet/
+
+
+%check
+%{buildroot}%{_libdir}/dotnet/dotnet --info
+
+
+%files -n dotnet
+# empty package useful for dependencies
+
+%files -n dotnet-host
+%dir %{_libdir}/dotnet
+%{_libdir}/dotnet/dotnet
+%dir %{_libdir}/dotnet/host
+%dir %{_libdir}/dotnet/host/fxr
+%{_bindir}/dotnet
+%license %{_libdir}/dotnet/LICENSE.txt
+%license %{_libdir}/dotnet/ThirdPartyNotices.txt
+%doc %{_mandir}/man1/dotnet*.1.gz
+%{_sysconfdir}/profile.d/dotnet.sh
+%{_sysconfdir}/dotnet
+%dir %{_datadir}/bash-completion
+%dir %{_datadir}/bash-completion/completions
+%{_datadir}/bash-completion/completions/dotnet
+
+%files -n dotnet-hostfxr-3.1
+%dir %{_libdir}/dotnet/host/fxr
+%{_libdir}/dotnet/host/fxr/%{host_version}
+
+%files -n dotnet-runtime-3.1
+%dir %{_libdir}/dotnet/shared
+%dir %{_libdir}/dotnet/shared/Microsoft.NETCore.App
+%{_libdir}/dotnet/shared/Microsoft.NETCore.App/%{runtime_version}
+
+%files -n aspnetcore-runtime-3.1
+%dir %{_libdir}/dotnet/shared
+%dir %{_libdir}/dotnet/shared/Microsoft.AspNetCore.App
+%{_libdir}/dotnet/shared/Microsoft.AspNetCore.App/%{aspnetcore_runtime_version}
+
+%files -n dotnet-templates-3.1
+%dir %{_libdir}/dotnet/templates
+%{_libdir}/dotnet/templates/%{templates_version}
+
+%files -n dotnet-sdk-3.1
+%dir %{_libdir}/dotnet/sdk
+%{_libdir}/dotnet/sdk/%{sdk_version}
+%dir %{_libdir}/dotnet/packs
+
+%files -n dotnet-sdk-3.1-source-built-artifacts
+%dir %{_libdir}/dotnet
+%{_libdir}/dotnet/source-built-artifacts
+
+
+%changelog
+* Tue Jan 21 2020 Omair Majid <omajid(a)redhat.com> - 3.1.101-1
+- Update to .NET Core Runtime 3.1.1 and SDK 3.1.101
+
+* Thu Dec 05 2019 Omair Majid <omajid(a)redhat.com> - 3.1.100-1
+- Update to .NET Core Runtime 3.1.0 and SDK 3.1.100
+
+* Mon Nov 18 2019 Omair Majid <omajid(a)redhat.com> - 3.1.100-0.4.preview3
+- Fix apphost permissions
+
+* Fri Nov 15 2019 Omair Majid <omajid(a)redhat.com> - 3.1.100-0.3.preview3
+- Update to .NET Core Runtime 3.1.0-preview3.19553.2 and SDK
+ 3.1.100-preview3-014645
+
+* Wed Nov 06 2019 Omair Majid <omajid(a)redhat.com> - 3.1.100-0.2
+- Update to .NET Core 3.1 Preview 2
+
+* Wed Oct 30 2019 Omair Majid <omajid(a)redhat.com> - 3.1.100-0.1
+- Update to .NET Core 3.1 Preview 1
+
+* Thu Oct 24 2019 Omair Majid <omajid(a)redhat.com> - 3.0.100-5
+- Add cgroupv2 support to .NET Core
+
+* Wed Oct 16 2019 Omair Majid <omajid(a)redhat.com> - 3.0.100-4
+- Include fix from coreclr for building on Fedora 32
+
+* Wed Oct 16 2019 Omair Majid <omajid(a)redhat.com> - 3.0.100-3
+- Harden built binaries to pass annocheck
+
+* Fri Oct 11 2019 Omair Majid <omajid(a)redhat.com> - 3.0.100-2
+- Export DOTNET_ROOT in profile to make apphost lookup work
+
+* Fri Sep 27 2019 Omair Majid <omajid(a)redhat.com> - 3.0.100-1
+- Update to .NET Core Runtime 3.0.0 and SDK 3.0.100
+
+* Wed Sep 25 2019 Omair Majid <omajid(a)redhat.com> - 3.0.100-0.18.rc1
+- Update to .NET Core Runtime 3.0.0-rc1-19456-20 and SDK 3.0.100-rc1-014190
+
+* Tue Sep 17 2019 Omair Majid <omajid(a)redhat.com> - 3.0.100-0.16.preview9
+- Fix files duplicated between dotnet-apphost-pack-3.0 and dotnet-targeting-pack-3.0
+- Fix dependencies between .NET SDK and the targeting packs
+
+* Mon Sep 16 2019 Omair Majid <omajid(a)redhat.com> - 3.0.100-0.15.preview9
+- Update to .NET Core Runtime 3.0.0-preview 9 and SDK 3.0.100-preview9
+
+* Mon Aug 19 2019 Omair Majid <omajid(a)redhat.com> - 3.0.100-0.11.preview8
+- Update to .NET Core Runtime 3.0.0-preview8-28405-07 and SDK
+ 3.0.100-preview8-013656
+
+* Tue Jul 30 2019 Omair Majid <omajid(a)redhat.com> - 3.0.100-0.9.preview7
+- Update to .NET Core Runtime 3.0.0-preview7-27912-14 and SDK
+ 3.0.100-preview7-012821
+
+* Fri Jul 26 2019 Omair Majid <omajid(a)redhat.com> - 3.0.100-0.8.preview7
+- Update to .NET Core Runtime 3.0.0-preview7-27902-19 and SDK
+ 3.0.100-preview7-012802
+
+* Wed Jun 26 2019 Omair Majid <omajid(a)redhat.com> - 3.0.0-0.7.preview6
+- Obsolete dotnet-sdk-3.0.1xx
+- Add supackages for targeting packs
+- Add -fcf-protection to CFLAGS
+
+* Wed Jun 26 2019 Omair Majid <omajid(a)redhat.com> - 3.0.0-0.6.preview6
+- Update to .NET Core Runtime 3.0.0-preview6-27804-01 and SDK 3.0.100-preview6-012264
+- Set dotnet installation location in /etc/dotnet/install_location
+- Update targeting packs
+- Install managed symbols
+- Completely conditionalize libunwind bundling
+
+* Tue May 07 2019 Omair Majid <omajid(a)redhat.com> - 3.0.0-0.3.preview4
+- Update to .NET Core 3.0 preview 4
+
+* Tue Dec 18 2018 Omair Majid <omajid(a)redhat.com> - 3.0.0-0.1.preview1
+- Update to .NET Core 3.0 preview 1
+
+* Fri Dec 07 2018 Omair Majid <omajid(a)redhat.com> - 2.2.100
+- Update to .NET Core 2.2.0
+
+* Wed Nov 07 2018 Omair Majid <omajid(a)redhat.com> - 2.2.100-0.2.preview3
+- Update to .NET Core 2.2.0-preview3
+
+* Fri Nov 02 2018 Omair Majid <omajid(a)redhat.com> - 2.1.403-3
+- Add host-fxr-2.1 subpackage
+
+* Mon Oct 15 2018 Omair Majid <omajid(a)redhat.com> - 2.1.403-2
+- Disable telemetry by default
+- Users have to manually export DOTNET_CLI_TELEMETRY_OPTOUT=0 to enable
+
+* Tue Oct 02 2018 Omair Majid <omajid(a)redhat.com> - 2.1.403-1
+- Update to .NET Core Runtime 2.1.5 and SDK 2.1.403
+
+* Wed Sep 26 2018 Omair Majid <omajid(a)redhat.com> - 2.1.402-2
+- Add ~/.dotnet/tools to $PATH to make it easier to use dotnet tools
+
+* Thu Sep 13 2018 Omair Majid <omajid(a)redhat.com> - 2.1.402-1
+- Update to .NET Core Runtime 2.1.4 and SDK 2.1.402
+
+* Wed Sep 05 2018 Omair Majid <omajid(a)redhat.com> - 2.1.401-2
+- Use distro-standard flags when building .NET Core
+
+* Tue Aug 21 2018 Omair Majid <omajid(a)redhat.com> - 2.1.401-1
+- Update to .NET Core Runtime 2.1.3 and SDK 2.1.401
+
+* Mon Aug 20 2018 Omair Majid <omajid(a)redhat.com> - 2.1.302-1
+- Update to .NET Core Runtime 2.1.2 and SDK 2.1.302
+
+* Fri Jul 20 2018 Omair Majid <omajid(a)redhat.com> - 2.1.301-1
+- Update to .NET Core 2.1
+
+* Thu May 03 2018 Omair Majid <omajid(a)redhat.com> - 2.0.7-1
+- Update to .NET Core 2.0.7
+
+* Wed Mar 28 2018 Omair Majid <omajid(a)redhat.com> - 2.0.6-2
+- Enable bash completion for dotnet
+- Remove redundant buildrequires and requires
+
+* Wed Mar 14 2018 Omair Majid <omajid(a)redhat.com> - 2.0.6-1
+- Update to .NET Core 2.0.6
+
+* Fri Feb 23 2018 Omair Majid <omajid(a)redhat.com> - 2.0.5-1
+- Update to .NET Core 2.0.5
+
+* Wed Jan 24 2018 Omair Majid <omajid(a)redhat.com> - 2.0.3-5
+- Don't apply corefx clang warnings fix on clang < 5
+
+* Fri Jan 19 2018 Omair Majid <omajid(a)redhat.com> - 2.0.3-4
+- Add a test script to sanity check debug and symbol info.
+- Build with clang 5.0
+- Make main package real instead of using a virtual provides (see RHBZ 1519325)
+
+* Wed Nov 29 2017 Omair Majid <omajid(a)redhat.com> - 2.0.3-3
+- Add a Provides for 'dotnet'
+- Fix conditional macro
+
+* Tue Nov 28 2017 Omair Majid <omajid(a)redhat.com> - 2.0.3-2
+- Fix build on Fedora 27
+
+* Fri Nov 17 2017 Omair Majid <omajid(a)redhat.com> - 2.0.3-1
+- Update to .NET Core 2.0.3
+
+* Thu Oct 19 2017 Omair Majid <omajid(a)redhat.com> - 2.0.0-4
+- Add a hack to let omnisharp work
+
+* Wed Aug 30 2017 Omair Majid <omajid(a)redhat.com> - 2.0.0-3
+- Add a patch for building coreclr and core-setup correctly on Fedora >= 27
+
+* Fri Aug 25 2017 Omair Majid <omajid(a)redhat.com> - 2.0.0-2
+- Move libicu/libcurl/libunwind requires to runtime package
+- Make sdk depend on the exact version of the runtime package
+
+* Thu Aug 24 2017 Omair Majid <omajid(a)redhat.com> - 2.0.0-1
+- Update to 2.0.0 final release
+
+* Wed Jul 26 2017 Omair Majid <omajid(a)redhat.com> - 2.0.0-0.3.preview2
+- Add man pages
+
+* Tue Jul 25 2017 Omair Majid <omajid(a)redhat.com> - 2.0.0-0.2.preview2
+- Add Requires on libicu
+- Split into multiple packages
+- Do not repeat first-run message
+
+* Fri Jul 21 2017 Omair Majid <omajid(a)redhat.com> - 2.0.0-0.1.preview2
+- Update to .NET Core 2.0 Preview 2
+
+* Thu Mar 16 2017 Nemanja Milošević <nmilosevnm(a)gmail.com> - 1.1.0-7
+- rebuilt with latest libldb
+* Wed Feb 22 2017 Nemanja Milosevic <nmilosev(a)fedoraproject.org> - 1.1.0-6
+- compat-openssl 1.0 for F26 for now
+* Sun Feb 19 2017 Nemanja Milosevic <nmilosev(a)fedoraproject.org> - 1.1.0-5
+- Fix wrong commit id's
+* Sat Feb 18 2017 Nemanja Milosevic <nmilosev(a)fedoraproject.org> - 1.1.0-4
+- Use commit id's instead of branch names
+* Sat Feb 18 2017 Nemanja Milosevic <nmilosev(a)fedoraproject.org> - 1.1.0-3
+- Improper patch5 fix
+* Sat Feb 18 2017 Nemanja Milosevic <nmilosev(a)fedoraproject.org> - 1.1.0-2
+- SPEC cleanup
+- git removal (using all tarballs for reproducible builds)
+- more reasonable versioning
+* Thu Feb 09 2017 Nemanja Milosevic <nmilosev(a)fedoraproject.org> - 1.1.0-1
+- Fixed debuginfo going to separate package (Patch1)
+- Added F25/F26 RIL and fixed the version info (Patch2)
+- Added F25/F26 RIL in Microsoft.NETCore.App suported runtime graph (Patch3)
+- SPEC file cleanup
+* Wed Jan 11 2017 Nemanja Milosevic <nmilosev(a)fedoraproject.org> - 1.1.0-0
+- Initial RPM for Fedora 25/26.
+
diff --git a/rename-tarball b/rename-tarball
new file mode 100755
index 0000000..b6b6086
--- /dev/null
+++ b/rename-tarball
@@ -0,0 +1,49 @@
+#!/bin/bash
+
+# Usage:
+# ./rename-tarball original-name.tar.gz new-name.tar.gz
+
+set -euo pipefail
+IFS=$'\n\t'
+
+positional_args=()
+while [[ "$#" -gt 0 ]]; do
+ arg="${1}"
+ case "${arg}" in
+ -h|--help)
+ print_usage
+ exit 0
+ ;;
+ *)
+ positional_args+=("$1")
+ shift
+ ;;
+ esac
+done
+
+original_name=${positional_args[0]:-}
+if [[ -z ${original_name} ]]; then
+ echo "error: missing original tarball name"
+ exit 1
+fi
+
+new_name=${positional_args[1]:-}
+if [[ -z ${new_name} ]]; then
+ echo "error: missing new tarball name"
+ exit 1
+fi
+
+original_name=${original_name/%.tar.gz}
+new_name=${new_name/.tar.gz}
+
+echo "Original: ${original_name}.tar.gz"
+echo "New name: ${new_name}.tar.gz"
+
+mkdir "temp-${new_name}"
+pushd "temp-${new_name}"
+tar xf "../${original_name}.tar.gz"
+mv "${original_name}" "${new_name}"
+tar czf ../"${new_name}.tar.gz" "${new_name}"
+rm -rf "${new_name}"
+popd
+rmdir "temp-${new_name}"
diff --git a/sources b/sources
new file mode 100644
index 0000000..e5c1d68
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+SHA512 (dotnet-v3.1.101-SDK.tar.gz) = b2eb9df091186e793e82ac7560496c9ac3478e41efa94e58300606e2883d9bdb187f588a48a7bd9cf7f10f3d8f641d0867eb013de9b159e3d471a71dd823278c
diff --git a/update-release b/update-release
new file mode 100755
index 0000000..09eb509
--- /dev/null
+++ b/update-release
@@ -0,0 +1,62 @@
+#!/bin/bash
+
+# Usage:
+# ./update-release runtime-version sdk-version
+
+set -euo pipefail
+IFS=$'\n\t'
+
+print_usage() {
+ echo " Usage:"
+ echo " ./update-release runtime-version sdk-version"
+}
+
+positional_args=()
+while [[ "$#" -gt 0 ]]; do
+ arg="${1}"
+ case "${arg}" in
+ -h|--help)
+ print_usage
+ exit 0
+ ;;
+ *)
+ positional_args+=("$1")
+ shift
+ ;;
+ esac
+done
+
+spec_file=dotnet3.1.spec
+
+runtime_version=${positional_args[0]:-}
+if [[ -z ${runtime_version} ]]; then
+ echo "error: missing runtime version"
+ exit 1
+fi
+host_version="$runtime_version"
+
+sdk_version=${positional_args[1]:-}
+if [[ -z ${sdk_version} ]]; then
+ echo "error: missing sdk version"
+ exit 1
+fi
+
+if [[ ! -f "dotnet-v${sdk_version}-SDK.tar.gz" ]]; then
+ ./build-dotnet-tarball "v${sdk_version}-SDK"
+fi
+
+set -x
+
+sed -i -E "s|^%global host_version [[:digit:]]\.[[:digit:]]\.[[:digit:]]+|%global host_version ${host_version}|" "$spec_file"
+sed -i -E "s|^%global runtime_version [[:digit:]]\.[[:digit:]]\.[[:digit:]]+|%global runtime_version ${runtime_version}|" "$spec_file"
+sed -i -E "s|^%global sdk_version [[:digit:]]\.[[:digit:]]\.[[:digit:]][[:digit:]][[:digit:]]|%global sdk_version ${sdk_version}|" "$spec_file"
+
+comment="Update to .NET Core Runtime ${runtime_version} and SDK ${sdk_version}"
+
+rpmdev-bumpspec --comment="$comment" $spec_file
+
+# Reset release to 1 in 'Release' tag
+sed -i -E 's|^Release: [[:digit:]]+%|Release: 1%|' $spec_file
+# Reset Release in changelog comment
+# See https://stackoverflow.com/questions/18620153/find-matching-text-and-repla...
+sed -i -E '/^%changelog$/!b;n;s/-[[:digit:]]+$/-1/' $spec_file
commit d39668a409bd4abf8206b93d8173f0f2584ed887
Author: Gwyn Ciesla <limb(a)fedoraproject.org>
Date: Tue Feb 18 20:06:29 2020 +0000
Added the README
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..d35adc1
--- /dev/null
+++ b/README.md
@@ -0,0 +1,3 @@
+# dotnet3.1
+
+The dotnet3.1 package
\ No newline at end of file
1 year, 4 months
Architecture specific change in rpms/python-pynn.git
by githook-noreply@fedoraproject.org
The package rpms/python-pynn.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/python-pynn.git/commit/?id=d5a1df...
https://src.fedoraproject.org/cgit/rpms/python-pynn.git/commit/?id=cd64a2....
Change:
+ExcludeArch: mips64r2 mips32r2 s390x %{ix86}
+ExcludeArch: mips64r2 mips32r2 s390x
Thanks.
Full change:
============
commit 521d65f4510f20fa1560bc23fff85850925b2189
Author: Ankur Sinha (Ankur Sinha Gmail) <sanjay.ankur(a)gmail.com>
Date: Fri Jan 13 13:49:00 2023 +0000
feat: update to 0.10.1 (fixes rhbz#2134727)
diff --git a/.gitignore b/.gitignore
index d5c8c3d..19bc2ef 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
/PyNN-0.9.6.tar.gz
/PyNN-0.10.0.tar.gz
+/PyNN-0.10.1.tar.gz
diff --git a/0001-Disable-nest-extension-build-by-setup.patch b/0001-Disable-nest-extension-build-by-setup.patch
index ec59a3b..056f643 100644
--- a/0001-Disable-nest-extension-build-by-setup.patch
+++ b/0001-Disable-nest-extension-build-by-setup.patch
@@ -1,17 +1,6 @@
-From 1f381ba3cf7c75f315459af5757293c2ffb1b1a2 Mon Sep 17 00:00:00 2001
-From: "Ankur Sinha (Ankur Sinha Gmail)" <sanjay.ankur(a)gmail.com>
-Date: Wed, 29 Dec 2021 09:53:14 +0000
-Subject: [PATCH 1/2] Disable nest extension build by setup
-
----
- setup.py | 73 --------------------------------------------------------
- 1 file changed, 73 deletions(-)
-
-diff --git a/setup.py b/setup.py
-index 3c12f649..be670f15 100644
---- a/setup.py
-+++ b/setup.py
-@@ -2,81 +2,9 @@
+--- setup.py.orig 2023-01-13 10:21:41.331314707 +0000
++++ setup.py 2023-01-13 10:21:59.655009538 +0000
+@@ -2,83 +2,9 @@
try:
from setuptools import setup
@@ -38,6 +27,8 @@ index 3c12f649..be670f15 100644
- """At the end of the build process, try to compile NEURON and NEST extensions."""
-
- def run(self):
+- self.distribution.convert_2to3_doctests = [] # workaround for bug
+- # see https://app.travis-ci.com/github/NeuralEnsemble/PyNN/jobs/582235672
- _build.run(self)
- # try to compile NEURON extensions
- nrnivmodl = self.find("nrnivmodl")
@@ -93,14 +84,11 @@ index 3c12f649..be670f15 100644
setup(
-@@ -113,7 +41,6 @@ setup(
- 'Programming Language :: Python :: 3.8',
+@@ -116,7 +42,6 @@
'Programming Language :: Python :: 3.9',
+ 'Programming Language :: Python :: 3.10',
'Topic :: Scientific/Engineering'],
- cmdclass={'build_py': build},
- install_requires=['numpy>=1.16.1', 'lazyarray>=0.5.0', 'neo>=0.10.0',
+ install_requires=['numpy>=1.18.5', 'lazyarray>=0.5.2', 'neo>=0.11.0',
'quantities>=0.12.1'],
extras_require={
---
-2.33.1
-
diff --git a/0002-fix-correct-sized-import.patch b/0002-fix-correct-sized-import.patch
deleted file mode 100644
index 6162ee6..0000000
--- a/0002-fix-correct-sized-import.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From a577b00c49691ed9549e9d20a95583ea2231b89e Mon Sep 17 00:00:00 2001
-From: "Ankur Sinha (Ankur Sinha Gmail)" <sanjay.ankur(a)gmail.com>
-Date: Wed, 29 Dec 2021 19:15:55 +0000
-Subject: [PATCH 2/2] fix: correct sized import
-
----
- pyNN/parameters.py | 9 ++++++---
- 1 file changed, 6 insertions(+), 3 deletions(-)
-
-diff --git a/pyNN/parameters.py b/pyNN/parameters.py
-index a7d06b11..627cd439 100644
---- a/pyNN/parameters.py
-+++ b/pyNN/parameters.py
-@@ -6,7 +6,10 @@ Parameter set handling
- """
-
- import numpy as np
--import collections
-+try:
-+ from collections import Sized
-+except ImportError:
-+ from collections.abc import Sized
- from pyNN.core import is_listlike
- from pyNN import errors
- from pyNN.random import RandomDistribution, NativeRNG
-@@ -296,11 +299,11 @@ class ParameterSpace(object):
- raise errors.NonExistentParameterError(name,
- model_name,
- valid_parameter_names=self.schema.keys())
-- if issubclass(expected_dtype, ArrayParameter) and isinstance(value, collections.Sized):
-+ if issubclass(expected_dtype, ArrayParameter) and isinstance(value, Sized):
- if len(value) == 0:
- value = ArrayParameter([])
- elif not isinstance(value[0], ArrayParameter): # may be a more generic way to do it, but for now this special-casing seems like the most robust approach
-- if isinstance(value[0], collections.Sized): # e.g. list of tuples
-+ if isinstance(value[0], Sized): # e.g. list of tuples
- value = type(value)([ArrayParameter(x) for x in value])
- else:
- value = ArrayParameter(value)
---
-2.33.1
-
diff --git a/0003-Fix-errors-of-type-error-implicit-declaration-of-fun.patch b/0003-Fix-errors-of-type-error-implicit-declaration-of-fun.patch
deleted file mode 100644
index c8b57ab..0000000
--- a/0003-Fix-errors-of-type-error-implicit-declaration-of-fun.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 297a96b5c6dd57cd6ab81b2b5ee4bb45b4570d91 Mon Sep 17 00:00:00 2001
-From: Andrew Davison <andrew.davison(a)cnrs.fr>
-Date: Tue, 12 Apr 2022 17:21:42 +0200
-Subject: [PATCH] Fix errors of type `error: implicit declaration of function
- 'nrn_random_arg' is invalid in C99` when running nrnivmodl on M1 Mac
-Content-type: text/plain
-
-Possibly related to #707
----
- pyNN/neuron/nmodl/quantal_stp.mod | 5 +++++
- pyNN/neuron/nmodl/stochastic_tsodyksmarkram.mod | 5 +++++
- 2 files changed, 10 insertions(+)
-
-diff --git a/pyNN/neuron/nmodl/quantal_stp.mod b/pyNN/neuron/nmodl/quantal_stp.mod
-index 8ff8bb4d..6d976501 100644
---- a/pyNN/neuron/nmodl/quantal_stp.mod
-+++ b/pyNN/neuron/nmodl/quantal_stp.mod
-@@ -81,6 +81,11 @@ NET_RECEIVE(w, available, t_last (ms)) {
- t_last = t
- }
-
-+VERBATIM
-+double nrn_random_pick(void* r);
-+void* nrn_random_arg(int argpos);
-+ENDVERBATIM
-+
- PROCEDURE setRNG() {
- : This function takes a NEURON Random object declared in hoc and makes it usable by this mod file
- : The Random must be in uniform(1) mode
-diff --git a/pyNN/neuron/nmodl/stochastic_tsodyksmarkram.mod b/pyNN/neuron/nmodl/stochastic_tsodyksmarkram.mod
-index 32dec506..519e578c 100644
---- a/pyNN/neuron/nmodl/stochastic_tsodyksmarkram.mod
-+++ b/pyNN/neuron/nmodl/stochastic_tsodyksmarkram.mod
-@@ -84,6 +84,11 @@ NET_RECEIVE(w, p_surv, t_surv) {
- }
- }
-
-+VERBATIM
-+double nrn_random_pick(void* r);
-+void* nrn_random_arg(int argpos);
-+ENDVERBATIM
-+
- PROCEDURE setRNG() {
- : This function takes a NEURON Random object declared in hoc and makes it usable by this mod file
- : The Random must be in uniform(1) mode
---
-2.38.1
-
diff --git a/python-pynn.spec b/python-pynn.spec
index 2b9c00b..9a00607 100644
--- a/python-pynn.spec
+++ b/python-pynn.spec
@@ -43,11 +43,12 @@ Mailing list: https://groups.google.com/forum/?fromgroups#!forum/neuralensemble
This package supports the NEURON, NEST, and Brian simulators.}
Name: python-pynn
-Version: 0.10.0
+Version: 0.10.1
Release: %autorelease
Summary: A package for simulator-independent specification of neuronal network models
-License: CeCILL
+# SPDX
+License: CECILL-2.0
URL: http://neuralensemble.org/PyNN/
Source0: %pypi_source PyNN
@@ -66,10 +67,6 @@ ExcludeArch: mips64r2 mips32r2 s390x %{ix86}
# Disable pynn's way of building extensions
# We do it ourselves
Patch0: 0001-Disable-nest-extension-build-by-setup.patch
-# Merged upstream: https://github.com/NeuralEnsemble/PyNN/pull/744
-Patch1: 0002-fix-correct-sized-import.patch
-
-Patch2: 0003-Fix-errors-of-type-error-implicit-declaration-of-fun.patch
# For extensions
BuildRequires: boost-devel
@@ -145,7 +142,7 @@ BuildArch: noarch
Documentation for %{name}.
%prep
-%autosetup -n PyNN-%{version} -S git
+%autosetup -n PyNN-%{version}
rm -rfv PyNN-%{version}/pyNN.egg-info
%build
@@ -205,9 +202,9 @@ export PYTHONPATH=$PYTHONPATH:$RPM_BUILD_ROOT/%{python3_sitearch}:$RPM_BUILD_ROO
pushd test
nosetests-%{python3_version} -e backends --verbosity=3 --tests=unittests
popd
-%{_mpich_unload}
%endif
unset PYTHONPATH
+%{_mpich_unload}
%endif
%if %{with openmpi}
@@ -219,9 +216,9 @@ export PYTHONPATH=$PYTHONPATH:$RPM_BUILD_ROOT/%{python3_sitearch}:$RPM_BUILD_ROO
pushd test
nosetests-%{python3_version} -e backends --verbosity=3 --tests=unittests
popd
-%{_openmpi_unload}
%endif
unset PYTHONPATH
+%{_openmpi_unload}
%endif
# These files are NEURON files that are required by PyNN to run bits using the NEURON backend
diff --git a/sources b/sources
index 8d8253a..9236445 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (PyNN-0.10.0.tar.gz) = c59097fb032efc0d2d612774cc7d9bea55ff616705f12dad99171a70f1670aa3d471ba2d332ac1191163520f0657d22665eba071e5992fe4821b63f73bf28e8c
+SHA512 (PyNN-0.10.1.tar.gz) = 292d824922c7dbf9e49810f382e54ab7fc342e559af287efaf630c676df67910815ad71684d8ca14e4ad38a28e5dcf5807764346976761d945919cdc33a1ae78
commit d5a1df03c6c177c0cae374e5b5b88c5ac18e7b23
Author: Benjamin A. Beasley <code(a)musicinmybrain.net>
Date: Thu Dec 22 13:23:06 2022 -0500
Leaf package: drop support for i686 (fix RHBZ#2155635)
diff --git a/python-pynn.spec b/python-pynn.spec
index dbf0781..2b9c00b 100644
--- a/python-pynn.spec
+++ b/python-pynn.spec
@@ -54,9 +54,14 @@ Source0: %pypi_source PyNN
# Random123 does not build on these, so neither can NEURON, so nothing that
# depends on NEURON supports them either
# https://github.com/neuronsimulator/nrn/issues/114
+#
# python-pyedflib does not support s390x, so the complete dep tree needs to also exclude it
# https://src.fedoraproject.org/rpms/python-pyedflib/blob/rawhide/f/python-...
-ExcludeArch: mips64r2 mips32r2 s390x
+#
+# python-pynn: Build hangs on i686
+# https://bugzilla.redhat.com/show_bug.cgi?id=2155635
+# https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval
+ExcludeArch: mips64r2 mips32r2 s390x %{ix86}
# Disable pynn's way of building extensions
# We do it ourselves
commit 50f7e02064d297ed0770bd46c847ee4ebc2b79c0
Author: Florian Weimer <fweimer(a)redhat.com>
Date: Wed Dec 21 11:59:59 2022 +0100
Apply upstream patch to fix C99 compatibility issue
Related to:
<https://fedoraproject.org/wiki/Changes/PortingToModernC>
<https://fedoraproject.org/wiki/Toolchain/PortingToModernC>
diff --git a/0003-Fix-errors-of-type-error-implicit-declaration-of-fun.patch b/0003-Fix-errors-of-type-error-implicit-declaration-of-fun.patch
new file mode 100644
index 0000000..c8b57ab
--- /dev/null
+++ b/0003-Fix-errors-of-type-error-implicit-declaration-of-fun.patch
@@ -0,0 +1,48 @@
+From 297a96b5c6dd57cd6ab81b2b5ee4bb45b4570d91 Mon Sep 17 00:00:00 2001
+From: Andrew Davison <andrew.davison(a)cnrs.fr>
+Date: Tue, 12 Apr 2022 17:21:42 +0200
+Subject: [PATCH] Fix errors of type `error: implicit declaration of function
+ 'nrn_random_arg' is invalid in C99` when running nrnivmodl on M1 Mac
+Content-type: text/plain
+
+Possibly related to #707
+---
+ pyNN/neuron/nmodl/quantal_stp.mod | 5 +++++
+ pyNN/neuron/nmodl/stochastic_tsodyksmarkram.mod | 5 +++++
+ 2 files changed, 10 insertions(+)
+
+diff --git a/pyNN/neuron/nmodl/quantal_stp.mod b/pyNN/neuron/nmodl/quantal_stp.mod
+index 8ff8bb4d..6d976501 100644
+--- a/pyNN/neuron/nmodl/quantal_stp.mod
++++ b/pyNN/neuron/nmodl/quantal_stp.mod
+@@ -81,6 +81,11 @@ NET_RECEIVE(w, available, t_last (ms)) {
+ t_last = t
+ }
+
++VERBATIM
++double nrn_random_pick(void* r);
++void* nrn_random_arg(int argpos);
++ENDVERBATIM
++
+ PROCEDURE setRNG() {
+ : This function takes a NEURON Random object declared in hoc and makes it usable by this mod file
+ : The Random must be in uniform(1) mode
+diff --git a/pyNN/neuron/nmodl/stochastic_tsodyksmarkram.mod b/pyNN/neuron/nmodl/stochastic_tsodyksmarkram.mod
+index 32dec506..519e578c 100644
+--- a/pyNN/neuron/nmodl/stochastic_tsodyksmarkram.mod
++++ b/pyNN/neuron/nmodl/stochastic_tsodyksmarkram.mod
+@@ -84,6 +84,11 @@ NET_RECEIVE(w, p_surv, t_surv) {
+ }
+ }
+
++VERBATIM
++double nrn_random_pick(void* r);
++void* nrn_random_arg(int argpos);
++ENDVERBATIM
++
+ PROCEDURE setRNG() {
+ : This function takes a NEURON Random object declared in hoc and makes it usable by this mod file
+ : The Random must be in uniform(1) mode
+--
+2.38.1
+
diff --git a/python-pynn.spec b/python-pynn.spec
index 0c05c3b..dbf0781 100644
--- a/python-pynn.spec
+++ b/python-pynn.spec
@@ -64,6 +64,8 @@ Patch0: 0001-Disable-nest-extension-build-by-setup.patch
# Merged upstream: https://github.com/NeuralEnsemble/PyNN/pull/744
Patch1: 0002-fix-correct-sized-import.patch
+Patch2: 0003-Fix-errors-of-type-error-implicit-declaration-of-fun.patch
+
# For extensions
BuildRequires: boost-devel
BuildRequires: cmake
commit cd64a2bf96cc3bb7d18887f8dbe5cb3a659bd135
Author: Ankur Sinha (Ankur Sinha Gmail) <sanjay.ankur(a)gmail.com>
Date: Sun Oct 9 17:28:56 2022 +0100
feat: exclude s390x
pyedflib does not support s390x, so the complete dep tree needs to
exclude it too.
diff --git a/python-pynn.spec b/python-pynn.spec
index ee45974..0c05c3b 100644
--- a/python-pynn.spec
+++ b/python-pynn.spec
@@ -54,7 +54,9 @@ Source0: %pypi_source PyNN
# Random123 does not build on these, so neither can NEURON, so nothing that
# depends on NEURON supports them either
# https://github.com/neuronsimulator/nrn/issues/114
-ExcludeArch: mips64r2 mips32r2
+# python-pyedflib does not support s390x, so the complete dep tree needs to also exclude it
+# https://src.fedoraproject.org/rpms/python-pyedflib/blob/rawhide/f/python-...
+ExcludeArch: mips64r2 mips32r2 s390x
# Disable pynn's way of building extensions
# We do it ourselves
commit 04721ac39c9cc9fb576c82d0ff4a70438aa9f979
Author: Mamoru TASAKA <mtasaka(a)fedoraproject.org>
Date: Tue Aug 23 17:36:05 2022 +0900
Rebuild for gsl-2.7.1
commit 4f93a8452b5b8c2152225e5a20381f1f9f06cda1
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Fri Jul 22 21:22:33 2022 +0000
Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng(a)fedoraproject.org>
commit 225fec0a1b1b6441c474305f54e5c79fbd0c7325
Author: Mamoru TASAKA <mtasaka(a)fedoraproject.org>
Date: Mon Jul 4 00:34:42 2022 +0900
Fix invocation of %%cmake macro
diff --git a/python-pynn.spec b/python-pynn.spec
index dac8380..ee45974 100644
--- a/python-pynn.spec
+++ b/python-pynn.spec
@@ -152,9 +152,8 @@ pushd pyNN/neuron/nmodl || exit 1
popd
# NEST extensions: we build and install them ourselves
-mkdir ./build/lib/pyNN/nest/extensions/_build/ || exit 1
-pushd ./build/lib/pyNN/nest/extensions/_build/ || exit 1
- %cmake -Dwith-nest=%{_bindir}/nest-config ..
+pushd ./build/lib/pyNN/nest/extensions/ || exit 1
+ %cmake -Dwith-nest=%{_bindir}/nest-config
%cmake_build
popd
@@ -162,7 +161,7 @@ popd
%py3_install
# NEST extensions
-pushd ./build/lib/pyNN/nest/extensions/_build/ || exit 1
+pushd ./build/lib/pyNN/nest/extensions/ || exit 1
%cmake_install
popd
1 year, 4 months
Architecture specific change in rpms/kdeplasma-addons.git
by githook-noreply@fedoraproject.org
The package rpms/kdeplasma-addons.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/kdeplasma-addons.git/commit/?id=9....
Change:
+%ifarch %{qt5_qtwebengine_arches}
Thanks.
Full change:
============
commit 9b9dd6d14418cb0b1d81ea9cd7ae2cb6a51853db
Author: Marc Deop i Argemí <marcdeop(a)fedoraproject.org>
Date: Fri Jan 13 12:17:55 2023 +0100
feat: rebuild with libicu-devel and fix Patch0 handling
diff --git a/kdeplasma-addons.spec b/kdeplasma-addons.spec
index 5b33837..6f29f17 100644
--- a/kdeplasma-addons.spec
+++ b/kdeplasma-addons.spec
@@ -1,7 +1,7 @@
Name: kdeplasma-addons
Summary: Additional Plasmoids for Plasma 5
Version: 5.26.5
-Release: 1%{?dist}
+Release: 2%{?dist}
License: GPLv2+
URL: https://invent.kde.org/plasma/%{name}
@@ -16,9 +16,11 @@ URL: https://invent.kde.org/plasma/%{name}
%endif
Source0: http://download.kde.org/%{stable}/plasma/%{version}/%{name}-%{version}.ta...
-%ifnarch %{qt5_qtwebengine_arches}
+# This patch will be applied unconditionally by %%autosetup
+# It will be reverted in the arches which don't need it. See %%prep
Patch0: kdeplasma-addons-no-dict-applet-on-secondary-arches.patch
-%else
+
+%ifarch %{qt5_qtwebengine_arches}
BuildRequires: qt5-qtwebengine-devel
%endif
@@ -81,6 +83,11 @@ developing applications that use %{name}.
%prep
%autosetup -n %{name}-%{version} -p1
+# We need to revert the unconditionally applied patch on certain arches
+%ifarch %{qt5_qtwebengine_arches}
+%patch0 -p1 -R
+%endif
+
%build
%cmake_kf5
@@ -131,6 +138,10 @@ developing applications that use %{name}.
%changelog
+* Fri Jan 13 2023 Marc Deop <marcdeop(a)fedoraproject.org> - 5.26.5-2
+- Rebuild with libicu-devel
+- Fix %%Patch0 management
+
* Thu Jan 05 2023 Justin Zobel <justin(a)1707.io> - 5.26.5-1
- Update to 5.26.5
commit 49fa4a875ecd01bab174036e36da39ce823e2596
Author: Fusion Future <qydwhotmail(a)gmail.com>
Date: Thu Jan 12 14:14:44 2023 +0000
Add libicu-devel BuildRequires to enable more alternate calendars
See https://invent.kde.org/plasma/kdeplasma-addons/-/merge_requests/313 for more details
diff --git a/kdeplasma-addons.spec b/kdeplasma-addons.spec
index 7a0dd57..5b33837 100644
--- a/kdeplasma-addons.spec
+++ b/kdeplasma-addons.spec
@@ -43,6 +43,7 @@ BuildRequires: kf5-kservice-devel
BuildRequires: kf5-kunitconversion-devel
BuildRequires: kf5-plasma-devel
BuildRequires: kf5-rpm-macros >= 5.25.0-2
+BuildRequires: libicu-devel
BuildRequires: libxcb-devel
BuildRequires: qt5-qtbase-devel
BuildRequires: qt5-qtdeclarative-devel
1 year, 4 months
Architecture specific change in rpms/python-pynn.git
by githook-noreply@fedoraproject.org
The package rpms/python-pynn.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/python-pynn.git/commit/?id=d5a1df...
https://src.fedoraproject.org/cgit/rpms/python-pynn.git/commit/?id=cd64a2....
Change:
+ExcludeArch: mips64r2 mips32r2 s390x %{ix86}
+ExcludeArch: mips64r2 mips32r2 s390x
Thanks.
Full change:
============
commit 521d65f4510f20fa1560bc23fff85850925b2189
Author: Ankur Sinha (Ankur Sinha Gmail) <sanjay.ankur(a)gmail.com>
Date: Fri Jan 13 13:49:00 2023 +0000
feat: update to 0.10.1 (fixes rhbz#2134727)
diff --git a/.gitignore b/.gitignore
index d5c8c3d..19bc2ef 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
/PyNN-0.9.6.tar.gz
/PyNN-0.10.0.tar.gz
+/PyNN-0.10.1.tar.gz
diff --git a/0001-Disable-nest-extension-build-by-setup.patch b/0001-Disable-nest-extension-build-by-setup.patch
index ec59a3b..056f643 100644
--- a/0001-Disable-nest-extension-build-by-setup.patch
+++ b/0001-Disable-nest-extension-build-by-setup.patch
@@ -1,17 +1,6 @@
-From 1f381ba3cf7c75f315459af5757293c2ffb1b1a2 Mon Sep 17 00:00:00 2001
-From: "Ankur Sinha (Ankur Sinha Gmail)" <sanjay.ankur(a)gmail.com>
-Date: Wed, 29 Dec 2021 09:53:14 +0000
-Subject: [PATCH 1/2] Disable nest extension build by setup
-
----
- setup.py | 73 --------------------------------------------------------
- 1 file changed, 73 deletions(-)
-
-diff --git a/setup.py b/setup.py
-index 3c12f649..be670f15 100644
---- a/setup.py
-+++ b/setup.py
-@@ -2,81 +2,9 @@
+--- setup.py.orig 2023-01-13 10:21:41.331314707 +0000
++++ setup.py 2023-01-13 10:21:59.655009538 +0000
+@@ -2,83 +2,9 @@
try:
from setuptools import setup
@@ -38,6 +27,8 @@ index 3c12f649..be670f15 100644
- """At the end of the build process, try to compile NEURON and NEST extensions."""
-
- def run(self):
+- self.distribution.convert_2to3_doctests = [] # workaround for bug
+- # see https://app.travis-ci.com/github/NeuralEnsemble/PyNN/jobs/582235672
- _build.run(self)
- # try to compile NEURON extensions
- nrnivmodl = self.find("nrnivmodl")
@@ -93,14 +84,11 @@ index 3c12f649..be670f15 100644
setup(
-@@ -113,7 +41,6 @@ setup(
- 'Programming Language :: Python :: 3.8',
+@@ -116,7 +42,6 @@
'Programming Language :: Python :: 3.9',
+ 'Programming Language :: Python :: 3.10',
'Topic :: Scientific/Engineering'],
- cmdclass={'build_py': build},
- install_requires=['numpy>=1.16.1', 'lazyarray>=0.5.0', 'neo>=0.10.0',
+ install_requires=['numpy>=1.18.5', 'lazyarray>=0.5.2', 'neo>=0.11.0',
'quantities>=0.12.1'],
extras_require={
---
-2.33.1
-
diff --git a/0002-fix-correct-sized-import.patch b/0002-fix-correct-sized-import.patch
deleted file mode 100644
index 6162ee6..0000000
--- a/0002-fix-correct-sized-import.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From a577b00c49691ed9549e9d20a95583ea2231b89e Mon Sep 17 00:00:00 2001
-From: "Ankur Sinha (Ankur Sinha Gmail)" <sanjay.ankur(a)gmail.com>
-Date: Wed, 29 Dec 2021 19:15:55 +0000
-Subject: [PATCH 2/2] fix: correct sized import
-
----
- pyNN/parameters.py | 9 ++++++---
- 1 file changed, 6 insertions(+), 3 deletions(-)
-
-diff --git a/pyNN/parameters.py b/pyNN/parameters.py
-index a7d06b11..627cd439 100644
---- a/pyNN/parameters.py
-+++ b/pyNN/parameters.py
-@@ -6,7 +6,10 @@ Parameter set handling
- """
-
- import numpy as np
--import collections
-+try:
-+ from collections import Sized
-+except ImportError:
-+ from collections.abc import Sized
- from pyNN.core import is_listlike
- from pyNN import errors
- from pyNN.random import RandomDistribution, NativeRNG
-@@ -296,11 +299,11 @@ class ParameterSpace(object):
- raise errors.NonExistentParameterError(name,
- model_name,
- valid_parameter_names=self.schema.keys())
-- if issubclass(expected_dtype, ArrayParameter) and isinstance(value, collections.Sized):
-+ if issubclass(expected_dtype, ArrayParameter) and isinstance(value, Sized):
- if len(value) == 0:
- value = ArrayParameter([])
- elif not isinstance(value[0], ArrayParameter): # may be a more generic way to do it, but for now this special-casing seems like the most robust approach
-- if isinstance(value[0], collections.Sized): # e.g. list of tuples
-+ if isinstance(value[0], Sized): # e.g. list of tuples
- value = type(value)([ArrayParameter(x) for x in value])
- else:
- value = ArrayParameter(value)
---
-2.33.1
-
diff --git a/0003-Fix-errors-of-type-error-implicit-declaration-of-fun.patch b/0003-Fix-errors-of-type-error-implicit-declaration-of-fun.patch
deleted file mode 100644
index c8b57ab..0000000
--- a/0003-Fix-errors-of-type-error-implicit-declaration-of-fun.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 297a96b5c6dd57cd6ab81b2b5ee4bb45b4570d91 Mon Sep 17 00:00:00 2001
-From: Andrew Davison <andrew.davison(a)cnrs.fr>
-Date: Tue, 12 Apr 2022 17:21:42 +0200
-Subject: [PATCH] Fix errors of type `error: implicit declaration of function
- 'nrn_random_arg' is invalid in C99` when running nrnivmodl on M1 Mac
-Content-type: text/plain
-
-Possibly related to #707
----
- pyNN/neuron/nmodl/quantal_stp.mod | 5 +++++
- pyNN/neuron/nmodl/stochastic_tsodyksmarkram.mod | 5 +++++
- 2 files changed, 10 insertions(+)
-
-diff --git a/pyNN/neuron/nmodl/quantal_stp.mod b/pyNN/neuron/nmodl/quantal_stp.mod
-index 8ff8bb4d..6d976501 100644
---- a/pyNN/neuron/nmodl/quantal_stp.mod
-+++ b/pyNN/neuron/nmodl/quantal_stp.mod
-@@ -81,6 +81,11 @@ NET_RECEIVE(w, available, t_last (ms)) {
- t_last = t
- }
-
-+VERBATIM
-+double nrn_random_pick(void* r);
-+void* nrn_random_arg(int argpos);
-+ENDVERBATIM
-+
- PROCEDURE setRNG() {
- : This function takes a NEURON Random object declared in hoc and makes it usable by this mod file
- : The Random must be in uniform(1) mode
-diff --git a/pyNN/neuron/nmodl/stochastic_tsodyksmarkram.mod b/pyNN/neuron/nmodl/stochastic_tsodyksmarkram.mod
-index 32dec506..519e578c 100644
---- a/pyNN/neuron/nmodl/stochastic_tsodyksmarkram.mod
-+++ b/pyNN/neuron/nmodl/stochastic_tsodyksmarkram.mod
-@@ -84,6 +84,11 @@ NET_RECEIVE(w, p_surv, t_surv) {
- }
- }
-
-+VERBATIM
-+double nrn_random_pick(void* r);
-+void* nrn_random_arg(int argpos);
-+ENDVERBATIM
-+
- PROCEDURE setRNG() {
- : This function takes a NEURON Random object declared in hoc and makes it usable by this mod file
- : The Random must be in uniform(1) mode
---
-2.38.1
-
diff --git a/python-pynn.spec b/python-pynn.spec
index 2b9c00b..9a00607 100644
--- a/python-pynn.spec
+++ b/python-pynn.spec
@@ -43,11 +43,12 @@ Mailing list: https://groups.google.com/forum/?fromgroups#!forum/neuralensemble
This package supports the NEURON, NEST, and Brian simulators.}
Name: python-pynn
-Version: 0.10.0
+Version: 0.10.1
Release: %autorelease
Summary: A package for simulator-independent specification of neuronal network models
-License: CeCILL
+# SPDX
+License: CECILL-2.0
URL: http://neuralensemble.org/PyNN/
Source0: %pypi_source PyNN
@@ -66,10 +67,6 @@ ExcludeArch: mips64r2 mips32r2 s390x %{ix86}
# Disable pynn's way of building extensions
# We do it ourselves
Patch0: 0001-Disable-nest-extension-build-by-setup.patch
-# Merged upstream: https://github.com/NeuralEnsemble/PyNN/pull/744
-Patch1: 0002-fix-correct-sized-import.patch
-
-Patch2: 0003-Fix-errors-of-type-error-implicit-declaration-of-fun.patch
# For extensions
BuildRequires: boost-devel
@@ -145,7 +142,7 @@ BuildArch: noarch
Documentation for %{name}.
%prep
-%autosetup -n PyNN-%{version} -S git
+%autosetup -n PyNN-%{version}
rm -rfv PyNN-%{version}/pyNN.egg-info
%build
@@ -205,9 +202,9 @@ export PYTHONPATH=$PYTHONPATH:$RPM_BUILD_ROOT/%{python3_sitearch}:$RPM_BUILD_ROO
pushd test
nosetests-%{python3_version} -e backends --verbosity=3 --tests=unittests
popd
-%{_mpich_unload}
%endif
unset PYTHONPATH
+%{_mpich_unload}
%endif
%if %{with openmpi}
@@ -219,9 +216,9 @@ export PYTHONPATH=$PYTHONPATH:$RPM_BUILD_ROOT/%{python3_sitearch}:$RPM_BUILD_ROO
pushd test
nosetests-%{python3_version} -e backends --verbosity=3 --tests=unittests
popd
-%{_openmpi_unload}
%endif
unset PYTHONPATH
+%{_openmpi_unload}
%endif
# These files are NEURON files that are required by PyNN to run bits using the NEURON backend
diff --git a/sources b/sources
index 8d8253a..9236445 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (PyNN-0.10.0.tar.gz) = c59097fb032efc0d2d612774cc7d9bea55ff616705f12dad99171a70f1670aa3d471ba2d332ac1191163520f0657d22665eba071e5992fe4821b63f73bf28e8c
+SHA512 (PyNN-0.10.1.tar.gz) = 292d824922c7dbf9e49810f382e54ab7fc342e559af287efaf630c676df67910815ad71684d8ca14e4ad38a28e5dcf5807764346976761d945919cdc33a1ae78
commit d5a1df03c6c177c0cae374e5b5b88c5ac18e7b23
Author: Benjamin A. Beasley <code(a)musicinmybrain.net>
Date: Thu Dec 22 13:23:06 2022 -0500
Leaf package: drop support for i686 (fix RHBZ#2155635)
diff --git a/python-pynn.spec b/python-pynn.spec
index dbf0781..2b9c00b 100644
--- a/python-pynn.spec
+++ b/python-pynn.spec
@@ -54,9 +54,14 @@ Source0: %pypi_source PyNN
# Random123 does not build on these, so neither can NEURON, so nothing that
# depends on NEURON supports them either
# https://github.com/neuronsimulator/nrn/issues/114
+#
# python-pyedflib does not support s390x, so the complete dep tree needs to also exclude it
# https://src.fedoraproject.org/rpms/python-pyedflib/blob/rawhide/f/python-...
-ExcludeArch: mips64r2 mips32r2 s390x
+#
+# python-pynn: Build hangs on i686
+# https://bugzilla.redhat.com/show_bug.cgi?id=2155635
+# https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval
+ExcludeArch: mips64r2 mips32r2 s390x %{ix86}
# Disable pynn's way of building extensions
# We do it ourselves
commit 50f7e02064d297ed0770bd46c847ee4ebc2b79c0
Author: Florian Weimer <fweimer(a)redhat.com>
Date: Wed Dec 21 11:59:59 2022 +0100
Apply upstream patch to fix C99 compatibility issue
Related to:
<https://fedoraproject.org/wiki/Changes/PortingToModernC>
<https://fedoraproject.org/wiki/Toolchain/PortingToModernC>
diff --git a/0003-Fix-errors-of-type-error-implicit-declaration-of-fun.patch b/0003-Fix-errors-of-type-error-implicit-declaration-of-fun.patch
new file mode 100644
index 0000000..c8b57ab
--- /dev/null
+++ b/0003-Fix-errors-of-type-error-implicit-declaration-of-fun.patch
@@ -0,0 +1,48 @@
+From 297a96b5c6dd57cd6ab81b2b5ee4bb45b4570d91 Mon Sep 17 00:00:00 2001
+From: Andrew Davison <andrew.davison(a)cnrs.fr>
+Date: Tue, 12 Apr 2022 17:21:42 +0200
+Subject: [PATCH] Fix errors of type `error: implicit declaration of function
+ 'nrn_random_arg' is invalid in C99` when running nrnivmodl on M1 Mac
+Content-type: text/plain
+
+Possibly related to #707
+---
+ pyNN/neuron/nmodl/quantal_stp.mod | 5 +++++
+ pyNN/neuron/nmodl/stochastic_tsodyksmarkram.mod | 5 +++++
+ 2 files changed, 10 insertions(+)
+
+diff --git a/pyNN/neuron/nmodl/quantal_stp.mod b/pyNN/neuron/nmodl/quantal_stp.mod
+index 8ff8bb4d..6d976501 100644
+--- a/pyNN/neuron/nmodl/quantal_stp.mod
++++ b/pyNN/neuron/nmodl/quantal_stp.mod
+@@ -81,6 +81,11 @@ NET_RECEIVE(w, available, t_last (ms)) {
+ t_last = t
+ }
+
++VERBATIM
++double nrn_random_pick(void* r);
++void* nrn_random_arg(int argpos);
++ENDVERBATIM
++
+ PROCEDURE setRNG() {
+ : This function takes a NEURON Random object declared in hoc and makes it usable by this mod file
+ : The Random must be in uniform(1) mode
+diff --git a/pyNN/neuron/nmodl/stochastic_tsodyksmarkram.mod b/pyNN/neuron/nmodl/stochastic_tsodyksmarkram.mod
+index 32dec506..519e578c 100644
+--- a/pyNN/neuron/nmodl/stochastic_tsodyksmarkram.mod
++++ b/pyNN/neuron/nmodl/stochastic_tsodyksmarkram.mod
+@@ -84,6 +84,11 @@ NET_RECEIVE(w, p_surv, t_surv) {
+ }
+ }
+
++VERBATIM
++double nrn_random_pick(void* r);
++void* nrn_random_arg(int argpos);
++ENDVERBATIM
++
+ PROCEDURE setRNG() {
+ : This function takes a NEURON Random object declared in hoc and makes it usable by this mod file
+ : The Random must be in uniform(1) mode
+--
+2.38.1
+
diff --git a/python-pynn.spec b/python-pynn.spec
index 0c05c3b..dbf0781 100644
--- a/python-pynn.spec
+++ b/python-pynn.spec
@@ -64,6 +64,8 @@ Patch0: 0001-Disable-nest-extension-build-by-setup.patch
# Merged upstream: https://github.com/NeuralEnsemble/PyNN/pull/744
Patch1: 0002-fix-correct-sized-import.patch
+Patch2: 0003-Fix-errors-of-type-error-implicit-declaration-of-fun.patch
+
# For extensions
BuildRequires: boost-devel
BuildRequires: cmake
commit cd64a2bf96cc3bb7d18887f8dbe5cb3a659bd135
Author: Ankur Sinha (Ankur Sinha Gmail) <sanjay.ankur(a)gmail.com>
Date: Sun Oct 9 17:28:56 2022 +0100
feat: exclude s390x
pyedflib does not support s390x, so the complete dep tree needs to
exclude it too.
diff --git a/python-pynn.spec b/python-pynn.spec
index ee45974..0c05c3b 100644
--- a/python-pynn.spec
+++ b/python-pynn.spec
@@ -54,7 +54,9 @@ Source0: %pypi_source PyNN
# Random123 does not build on these, so neither can NEURON, so nothing that
# depends on NEURON supports them either
# https://github.com/neuronsimulator/nrn/issues/114
-ExcludeArch: mips64r2 mips32r2
+# python-pyedflib does not support s390x, so the complete dep tree needs to also exclude it
+# https://src.fedoraproject.org/rpms/python-pyedflib/blob/rawhide/f/python-...
+ExcludeArch: mips64r2 mips32r2 s390x
# Disable pynn's way of building extensions
# We do it ourselves
commit 04721ac39c9cc9fb576c82d0ff4a70438aa9f979
Author: Mamoru TASAKA <mtasaka(a)fedoraproject.org>
Date: Tue Aug 23 17:36:05 2022 +0900
Rebuild for gsl-2.7.1
1 year, 4 months
Architecture specific change in rpms/firefox.git
by githook-noreply@fedoraproject.org
The package rpms/firefox.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/firefox.git/commit/?id=92926706f3....
Change:
+%ifnarch ppc64le %{arm} aarch64
Thanks.
Full change:
============
commit 92926706f3e228e9c26d7adab5eb98e410a87631
Author: Martin Stransky <stransky(a)redhat.com>
Date: Fri Jan 13 14:10:45 2023 +0100
disabled webrtc patch on aarch64
diff --git a/firefox.spec b/firefox.spec
index ff326a9..89e7296 100644
--- a/firefox.spec
+++ b/firefox.spec
@@ -534,7 +534,7 @@ This package contains results of tests executed during build.
%patch990 -p1 -b .work-around-GCC-ICE-on-arm
-%ifnarch ppc64le %{arm}
+%ifnarch ppc64le %{arm} aarch64
%patch1000 -p1 -b .libwebrtc-screen-cast-sync
%endif
1 year, 4 months
Architecture specific change in rpms/firefox.git
by githook-noreply@fedoraproject.org
The package rpms/firefox.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/firefox.git/commit/?id=92926706f3....
Change:
+%ifnarch ppc64le %{arm} aarch64
Thanks.
Full change:
============
commit 92926706f3e228e9c26d7adab5eb98e410a87631
Author: Martin Stransky <stransky(a)redhat.com>
Date: Fri Jan 13 14:10:45 2023 +0100
disabled webrtc patch on aarch64
diff --git a/firefox.spec b/firefox.spec
index ff326a9..89e7296 100644
--- a/firefox.spec
+++ b/firefox.spec
@@ -534,7 +534,7 @@ This package contains results of tests executed during build.
%patch990 -p1 -b .work-around-GCC-ICE-on-arm
-%ifnarch ppc64le %{arm}
+%ifnarch ppc64le %{arm} aarch64
%patch1000 -p1 -b .libwebrtc-screen-cast-sync
%endif
1 year, 4 months
Architecture specific change in rpms/firefox.git
by githook-noreply@fedoraproject.org
The package rpms/firefox.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/firefox.git/commit/?id=8c2f692734....
Change:
-%ifarch x86_64 ppc ppc64 ppc64le
Thanks.
Full change:
============
commit 802ee5c394c59db62fdf8f17c80bc87a5f99a6c2
Author: Jan Horak <jhorak(a)redhat.com>
Date: Fri Jan 13 09:26:17 2023 +0100
Update to 108.0.2
diff --git a/.gitignore b/.gitignore
index 4d02086..3ee35a9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -551,3 +551,5 @@ firefox-3.6.4.source.tar.bz2
/firefox-langpacks-108.0-20221214.tar.xz
/firefox-108.0.1.source.tar.xz
/firefox-langpacks-108.0.1-20221218.tar.xz
+/firefox-108.0.2.source.tar.xz
+/firefox-langpacks-108.0.2-20230112.tar.xz
diff --git a/D164896.diff b/D164896.diff
deleted file mode 100644
index 3212ea5..0000000
--- a/D164896.diff
+++ /dev/null
@@ -1,1842 +0,0 @@
-diff --git a/Cargo.lock b/Cargo.lock
---- a/Cargo.lock
-+++ b/Cargo.lock
-@@ -5775,13 +5775,13 @@
- source = "registry+https://github.com/rust-lang/crates.io-index"
- checksum = "957e51f3646910546462e67d5f7599b9e4fb8acdd304b087a6494730f9eebf04"
-
- [[package]]
- name = "uniffi"
--version = "0.21.0"
--source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "f54af5ada67d1173457a99a7bb44a7917f63e7466764cb4714865c7a6678b830"
-+version = "0.21.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "b983553c0d1ad73547c65fa0c399aa800bee4a70ad330198e1c7a523212da5ee"
- dependencies = [
- "anyhow",
- "bytes 1.2.1",
- "camino",
- "cargo_metadata",
-@@ -5885,13 +5885,11 @@
- "uniffi_macros",
- ]
-
- [[package]]
- name = "uniffi_bindgen"
--version = "0.21.0"
--source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "12cc4af3c0180c7e86c4a3acf2b6587af04ba2567b1e948993df10f421796621"
-+version = "0.21.1"
- dependencies = [
- "anyhow",
- "askama",
- "bincode",
- "camino",
-@@ -5908,24 +5906,34 @@
- "weedle2",
- ]
-
- [[package]]
- name = "uniffi_build"
--version = "0.21.0"
--source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "510287c368a9386eb731ebe824a6fc6c82a105e20d020af1aa20519c1c1561db"
-+version = "0.21.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "d035e50433ee3d52ab0dcdcf3b9b26f2cc2ec39294b3c07d95865a518709455f"
- dependencies = [
- "anyhow",
- "camino",
- "uniffi_bindgen",
- ]
-
- [[package]]
-+name = "uniffi_checksum_derive"
-+version = "0.21.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "78b6e16d46caf942016997af8bbdf4b163bf8ae3deb0b667d9643de7b7ffd4c9"
-+dependencies = [
-+ "quote",
-+ "syn",
-+]
-+
-+[[package]]
- name = "uniffi_macros"
--version = "0.21.0"
--source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "5c8604503caa2cbcf271578dc51ca236d40e3b22e1514ffa2e638e2c39f6ad10"
-+version = "0.21.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "c96a574677566f83ea8458dac1dd7792fd63e7c3f9dbcd865f0e8d6f8057b127"
- dependencies = [
- "bincode",
- "camino",
- "fs-err",
- "once_cell",
-@@ -5938,15 +5946,17 @@
- "uniffi_meta",
- ]
-
- [[package]]
- name = "uniffi_meta"
--version = "0.21.0"
--source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "cd9417cc653937681436b93838d8c5f97a5b8c58697813982ee8810bd1dc3b57"
-+version = "0.21.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "729835442da829c9b6f7c111c76cf87b2498e129101203bec94f0c39a3296a38"
- dependencies = [
- "serde",
-+ "siphasher",
-+ "uniffi_checksum_derive",
- ]
-
- [[package]]
- name = "unix_path"
- version = "1.0.1"
-diff --git a/Cargo.toml b/Cargo.toml
---- a/Cargo.toml
-+++ b/Cargo.toml
-@@ -180,10 +180,14 @@
- # okay, but it means that their dependencies on UniFFI crates will normally
- # also be the git versions. Patch them to use the published versions to avoid
- # duplicate crates.
-
- [patch."https://github.com/mozilla/uniffi-rs.git"]
--uniffi = "=0.21.0"
--uniffi_bindgen = "=0.21.0"
--uniffi_build = "=0.21.0"
--uniffi_macros = "=0.21.0"
-+uniffi = "=0.21.1"
-+#uniffi_bindgen = "=0.21.1"
-+uniffi_build = "=0.21.1"
-+uniffi_macros = "=0.21.1"
- weedle2 = "=4.0.0"
-+
-+# Patched to use uniffi_version = 0.21.0 for checksums.
-+[patch.crates-io.uniffi_bindgen]
-+path = "third_party/rust/uniffi_bindgen"
-diff --git a/supply-chain/audits.toml b/supply-chain/audits.toml
---- a/supply-chain/audits.toml
-+++ b/supply-chain/audits.toml
-@@ -1535,10 +1535,16 @@
- who = "Jan-Erik Rediger <jrediger(a)mozilla.com>"
- criteria = "safe-to-deploy"
- delta = "0.20.0 -> 0.21.0"
- notes = "Maintained by the Glean and Application Services team."
-
-+[[audits.uniffi]]
-+who = "Mike Hommey <mh+mozilla(a)glandium.org>"
-+criteria = "safe-to-deploy"
-+delta = "0.21.0 -> 0.21.1"
-+notes = "No changes."
-+
- [[audits.uniffi_bindgen]]
- who = "Travis Long <tlong(a)mozilla.com>"
- criteria = "safe-to-deploy"
- version = "0.19.3"
- notes = "Maintained by the Glean and Application Services teams."
-@@ -1558,10 +1564,16 @@
- who = "Jan-Erik Rediger <jrediger(a)mozilla.com>"
- criteria = "safe-to-deploy"
- delta = "0.20.0 -> 0.21.0"
- notes = "Maintained by the Glean and Application Services team."
-
-+[[audits.uniffi_bindgen]]
-+who = "Mike Hommey <mh+mozilla(a)glandium.org>"
-+criteria = "safe-to-deploy"
-+delta = "0.21.0 -> 0.21.1"
-+notes = "I authored the changes in this version."
-+
- [[audits.uniffi_build]]
- who = "Travis Long <tlong(a)mozilla.com>"
- criteria = "safe-to-deploy"
- version = "0.19.3"
- notes = "Maintained by the Glean and Application Services teams."
-@@ -1581,10 +1593,22 @@
- who = "Jan-Erik Rediger <jrediger(a)mozilla.com>"
- criteria = "safe-to-deploy"
- delta = "0.20.0 -> 0.21.0"
- notes = "Maintained by the Glean and Application Services team."
-
-+[[audits.uniffi_build]]
-+who = "Mike Hommey <mh+mozilla(a)glandium.org>"
-+criteria = "safe-to-deploy"
-+delta = "0.21.0 -> 0.21.1"
-+notes = "No changes."
-+
-+[[audits.uniffi_checksum_derive]]
-+who = "Mike Hommey <mh+mozilla(a)glandium.org>"
-+criteria = "safe-to-deploy"
-+version = "0.21.1"
-+notes = "I authored this crate."
-+
- [[audits.uniffi_macros]]
- who = "Travis Long <tlong(a)mozilla.com>"
- criteria = "safe-to-deploy"
- version = "0.19.3"
- notes = "Maintained by the Glean and Application Services teams."
-@@ -1604,10 +1628,16 @@
- who = "Jan-Erik Rediger <jrediger(a)mozilla.com>"
- criteria = "safe-to-deploy"
- delta = "0.20.0 -> 0.21.0"
- notes = "Maintained by the Glean and Application Services team."
-
-+[[audits.uniffi_macros]]
-+who = "Mike Hommey <mh+mozilla(a)glandium.org>"
-+criteria = "safe-to-deploy"
-+delta = "0.21.0 -> 0.21.1"
-+notes = "No changes."
-+
- [[audits.uniffi_meta]]
- who = "Jan-Erik Rediger <jrediger(a)mozilla.com>"
- criteria = "safe-to-deploy"
- version = "0.19.6"
- notes = "Maintained by the Glean and Application Services team."
-@@ -1621,10 +1651,16 @@
- who = "Jan-Erik Rediger <jrediger(a)mozilla.com>"
- criteria = "safe-to-deploy"
- delta = "0.20.0 -> 0.21.0"
- notes = "Maintained by the Glean and Application Services team."
-
-+[[audits.uniffi_meta]]
-+who = "Mike Hommey <mh+mozilla(a)glandium.org>"
-+criteria = "safe-to-deploy"
-+delta = "0.21.0 -> 0.21.1"
-+notes = "I authored the changes in this version."
-+
- [[audits.void]]
- who = "Bobby Holley <bobbyholley(a)gmail.com>"
- criteria = "safe-to-deploy"
- version = "1.0.2"
- notes = "Very small crate, just hosts the Void type for easier cross-crate interfacing."
-diff --git a/supply-chain/config.toml b/supply-chain/config.toml
---- a/supply-chain/config.toml
-+++ b/supply-chain/config.toml
-@@ -156,10 +156,14 @@
-
- [policy.tabs]
- audit-as-crates-io = false
- notes = "This is a first-party crate, maintained by the appservices team, which is entirely unrelated to the crates.io package of the same name."
-
-+[policy.uniffi_bindgen]
-+audit-as-crates-io = false
-+notes = "This is a first-party crate, normally vendored, but currently patched in-tree until next update."
-+
- [policy.viaduct]
- audit-as-crates-io = false
- notes = "This is a first-party crate, maintained by the appservices team, which is entirely unrelated to the crates.io package of the same name."
-
- [policy.webdriver]
-diff --git a/third_party/rust/uniffi/.cargo-checksum.json b/third_party/rust/uniffi/.cargo-checksum.json
---- a/third_party/rust/uniffi/.cargo-checksum.json
-+++ b/third_party/rust/uniffi/.cargo-checksum.json
-@@ -1 +1 @@
--{"files":{"Cargo.toml":"b7bde8b1b6bb7e1420c9c486d7562d1639fbb82a2b6459b8b3b7d15f002377d3","release.toml":"a6602545cd6eb46e44d89ce946d7954957ac00f1c955de54c736fa2cb560b1df","src/ffi/ffidefault.rs":"c7ab752fffed17c3fabb60e818ad1d093482f95dd0bdeae6871287695c583e48","src/ffi/foreignbytes.rs":"37061e2da7135576abccb86fe27b4fefc054586a040f2ca81fe9858d5649e887","src/ffi/foreigncallbacks.rs":"c0974920313ac81dd4bb28a51dd9e9ef50c8ea6d965f0bfdde58c661a4ca719f","src/ffi/mod.rs":"3fb3b74607066e0052fc91168e9473dbf82dbae562f85c33774a7f5f6b350616","src/ffi/rustbuffer.rs":"b773637d9e4651b80cd16f7a02ed75846d02ce0a9e32b718ce644cdba3a83cdd","src/ffi/rustcalls.rs":"4a85a90b0d46974ab9e80e403a1cddaa252337b227e1a672bb6fdbbca5a66259","src/lib.rs":"83614739f8c0c939b217755cfde169a85608a52ea197f63f7850e5765e2c5f97","src/panichook.rs":"9f49c7994a8e5489c1105c488bb3f8c5571bc5f813e7be90441eca15da5c9851","src/testing.rs":"f287d682a8f27465838b2aba91993c635a4dcd281d802dc12c7c75794324123f","tests/ui/proc_macro_arc.rs":"d766dffee3fe6a93522d40f44a7f15592db141fd674034fa5f016e06f510e87b","tests/ui/proc_macro_arc.stderr":"9e7d098abdd47f249ff62fe0a2ee0f8b96282ec5a3be0c48a778baab4624180f","tests/ui/version_mismatch.rs":"16ea359e5853517ee0d0704c015ae8c825533109fbefd715130d0f4a51f15898","tests/ui/version_mismatch.stderr":"aadbd8f3847f5663022d8dd75d6afa3b25dfc8abccd30b386a681f98587d4ceb"},"package":"f54af5ada67d1173457a99a7bb44a7917f63e7466764cb4714865c7a6678b830"}
-\ No newline at end of file
-+{"files":{"Cargo.toml":"40a5376941ee93f7d3d013862731eaced1121c852bd4df4affe1cd65bf9b68be","release.toml":"a6602545cd6eb46e44d89ce946d7954957ac00f1c955de54c736fa2cb560b1df","src/ffi/ffidefault.rs":"c7ab752fffed17c3fabb60e818ad1d093482f95dd0bdeae6871287695c583e48","src/ffi/foreignbytes.rs":"37061e2da7135576abccb86fe27b4fefc054586a040f2ca81fe9858d5649e887","src/ffi/foreigncallbacks.rs":"c0974920313ac81dd4bb28a51dd9e9ef50c8ea6d965f0bfdde58c661a4ca719f","src/ffi/mod.rs":"3fb3b74607066e0052fc91168e9473dbf82dbae562f85c33774a7f5f6b350616","src/ffi/rustbuffer.rs":"b773637d9e4651b80cd16f7a02ed75846d02ce0a9e32b718ce644cdba3a83cdd","src/ffi/rustcalls.rs":"4a85a90b0d46974ab9e80e403a1cddaa252337b227e1a672bb6fdbbca5a66259","src/lib.rs":"83614739f8c0c939b217755cfde169a85608a52ea197f63f7850e5765e2c5f97","src/panichook.rs":"9f49c7994a8e5489c1105c488bb3f8c5571bc5f813e7be90441eca15da5c9851","src/testing.rs":"f287d682a8f27465838b2aba91993c635a4dcd281d802dc12c7c75794324123f","tests/ui/proc_macro_arc.rs":"d766dffee3fe6a93522d40f44a7f15592db141fd674034fa5f016e06f510e87b","tests/ui/proc_macro_arc.stderr":"9e7d098abdd47f249ff62fe0a2ee0f8b96282ec5a3be0c48a778baab4624180f","tests/ui/version_mismatch.rs":"16ea359e5853517ee0d0704c015ae8c825533109fbefd715130d0f4a51f15898","tests/ui/version_mismatch.stderr":"aadbd8f3847f5663022d8dd75d6afa3b25dfc8abccd30b386a681f98587d4ceb"},"package":"b983553c0d1ad73547c65fa0c399aa800bee4a70ad330198e1c7a523212da5ee"}
-\ No newline at end of file
-diff --git a/third_party/rust/uniffi/Cargo.toml b/third_party/rust/uniffi/Cargo.toml
---- a/third_party/rust/uniffi/Cargo.toml
-+++ b/third_party/rust/uniffi/Cargo.toml
-@@ -10,22 +10,21 @@
- # See Cargo.toml.orig for the original contents.
-
- [package]
- edition = "2021"
- name = "uniffi"
--version = "0.21.0"
-+version = "0.21.1"
- authors = ["Firefox Sync Team <sync-team(a)mozilla.com>"]
- description = "a multi-language bindings generator for rust (runtime support code)"
- homepage = "https://mozilla.github.io/uniffi-rs"
- documentation = "https://mozilla.github.io/uniffi-rs"
- keywords = [
- "ffi",
- "bindgen",
- ]
- license = "MPL-2.0"
- repository = "https://github.com/mozilla/uniffi-rs"
--resolver = "2"
-
- [dependencies.anyhow]
- version = "1"
-
- [dependencies.bytes]
-@@ -48,15 +47,15 @@
-
- [dependencies.static_assertions]
- version = "1.1.0"
-
- [dependencies.uniffi_bindgen]
--version = "=0.21.0"
-+version = "=0.21.1"
- optional = true
-
- [dependencies.uniffi_macros]
--version = "=0.21.0"
-+version = "=0.21.1"
-
- [dev-dependencies.trybuild]
- version = "1"
-
- [features]
-diff --git a/third_party/rust/uniffi_bindgen/.cargo-checksum.json b/third_party/rust/uniffi_bindgen/.cargo-checksum.json
---- a/third_party/rust/uniffi_bindgen/.cargo-checksum.json
-+++ b/third_party/rust/uniffi_bindgen/.cargo-checksum.json
-@@ -1 +1 @@
--{"files":{"Cargo.lock":"5ed0714fd87076b5b5f11ca60553f12559e69794c2fec7d487a398f31a577a5f","Cargo.toml":"209b8cb7759ec813ee1e27a4b7e1d2bed2604c37d7c55578058bc7089ee9557e","askama.toml":"1a245b7803adca782837e125c49100147d2de0d5a1c949ff95e91af1701f6058","src/backend/config.rs":"4861dbf251dbb10beb1ed7e3eea7d79499a0de1cd9ce9ee8381a0e729c097dea","src/backend/declarations.rs":"12b8d6e651f84634de5cd02a47601965df7438f64f1a73f136bd89b6b5d515cf","src/backend/mod.rs":"899cd3b816d0467e35789b92ac3b8d5910f6dab98156d405db4803da8721fd36","src/backend/oracle.rs":"9e2b8a45af604a6e4952644e81f43f6aec6e0a1d03939c68b582529dd01a51e0","src/backend/types.rs":"7c49a92096a54eefd2336c48d60fe20ded9490142ab3a229a7c1a99fec14df3d","src/bindings/kotlin/gen_kotlin/callback_interface.rs":"b7fe795670830f3aa8a955c787b1127fe68313ee751013948527948fe5526b01","src/bindings/kotlin/gen_kotlin/compounds.rs":"d1e9a4237ff2ff711a3eae7a564c39e26f598c156ebfd34c0f04879e3533dd4f","src/bindings/kotlin/gen_kotlin/custom.rs":"4176f6ed5f66504f8fd981198bbfbae795dab5ef0d0281881d19b697f5560c44","src/bindings/kotlin/gen_kotlin/enum_.rs":"f85ae8dcb55c8f274139bf321af0ba237ae69894165ad6bd693d793f58af8e5e","src/bindings/kotlin/gen_kotlin/error.rs":"867f583aea5da7aabeb9b6d2544d7e52984cdea4aa008ce5f2ec941074735e1a","src/bindings/kotlin/gen_kotlin/external.rs":"1f7e91d7439891fe3c403274e35880ee4fc3a0da555510bdfa23c1ed2bbd8020","src/bindings/kotlin/gen_kotlin/miscellany.rs":"644ee5bb1f3619be5a36b2b3900af554ea38073cd054004f421e69c3cb8d50bc","src/bindings/kotlin/gen_kotlin/mod.rs":"90412e7927c284668a9eb75823c198182e58e5177d5561896c43b79367564b27","src/bindings/kotlin/gen_kotlin/object.rs":"6478a3e9d5e66186521730d0d481abd1ee4f123050ea050ac5a483842f08b003","src/bindings/kotlin/gen_kotlin/primitives.rs":"914d1f8253ed6a2937f67e8bd8f04f46aef4f22455ceb8a6caa84427adc2093e","src/bindings/kotlin/gen_kotlin/record.rs":"7961fcfbec5ebf8fc010b564ea4bd59402c919f6922898d48226d8c995569dd7","src/bindings/kotlin/mod.rs":"e68f2ea29e66ee62a56704e1e4464eea6d28bbdb52ab187bbe7a57ab3f362ea7","src/bindings/kotlin/templates/BooleanHelper.kt":"28e8a5088c8d58c9bfdbc575af8d8725060521fdd7d092684a8044b24ae567c7","src/bindings/kotlin/templates/CallbackInterfaceRuntime.kt":"6ede374b0fcbb3bcc939894e6f4729b3bec7ec7356831a60fba96ca38dc91aa8","src/bindings/kotlin/templates/CallbackInterfaceTemplate.kt":"5a704eb8c044ed22905e4d526ee3fc0b86f42fe82ac1eb4ad3758ad0552ea8c8","src/bindings/kotlin/templates/CustomTypeTemplate.kt":"5d4dacf29e89bcdcc46d155d993e6059d2df704e775dc853469310198253b231","src/bindings/kotlin/templates/DurationHelper.kt":"414a98161538a26f3a9b357353270c1f245ad6ceed99496aca7162cf473a92fd","src/bindings/kotlin/templates/EnumTemplate.kt":"ab3e2063aad3b91188db839dceb59b854a6a8b60fb35e545e270e64fee7c73fa","src/bindings/kotlin/templates/ErrorTemplate.kt":"a5ec2bdfc026838e1096dbf3301f21aa4ea22e8c93458d45bb1c8c7b9ee1fc5b","src/bindings/kotlin/templates/ExternalTypeTemplate.kt":"2097e0b830640ef18c79449ffa376d1dd35a8c4a5230e413c915f3b868aae872","src/bindings/kotlin/templates/FfiConverterTemplate.kt":"aa22962aaa9f641d48ccf44cb56d9f8a7736cbfaa01e1a1656662cfe5dd5c1d7","src/bindings/kotlin/templates/Float32Helper.kt":"662d95af3b629d143fb4d47cb7e9aa26ed28a5f3846de0341e28b0f9fb08bc25","src/bindings/kotlin/templates/Float64Helper.kt":"a77d099fa7d91e8702c1700e7949ffb6aaba9c6e8041ff48bab34b8e1fc9a0aa","src/bindings/kotlin/templates/Helpers.kt":"46c07798a26b53b06405c8bbbf86e3fcf38fadc1484ea04ce9d482defea89288","src/bindings/kotlin/templates/Int16Helper.kt":"7f83c4a48e1f3b2a59a3ca6a2662be8bc9baf3a5a748b31223cb3f51721ef249","src/bindings/kotlin/templates/Int32Helper.kt":"e02e4702175554b09fd2dd6ac3089dcd2c395f08ec60e762159566a9c9889450","src/bindings/kotlin/templates/Int64Helper.kt":"7a6fd6ca486852c89399c699935a9dfa1c32b9356d9a965cfde532581f05d9fa","src/bindings/kotlin/templates/Int8Helper.kt":"0554545494b6b9a76ce94f9c1723f8cf4230a13076feb75d620b1c9ca1ac4668","src/bindings/kotlin/templates/MapTemplate.kt":"399569d6443e8ad01e2deb95d78d8d2d15bf8eccee8be4fbe9ce4b8ebc0a6101","src/bindings/kotlin/templates/NamespaceLibraryTemplate.kt":"1eba4e77381155c2c96a6af2ef30fca881ade4957852f730fd10aa4f3d9cd3c4","src/bindings/kotlin/templates/ObjectRuntime.kt":"c11d233de41405caa55a56bcaa3bb69ce153ffa6fdff2aa218051929f5c4aeec","src/bindings/kotlin/templates/ObjectTemplate.kt":"7e32d92ec6116da9b7d7f278b15333a2fd2a82dde8c21534e3f6fe371d19f333","src/bindings/kotlin/templates/OptionalTemplate.kt":"5f9f2c1baa829ed3c9b61c3edb0f1fccf5ea3cccc052a69cf8966715d8fcf149","src/bindings/kotlin/templates/RecordTemplate.kt":"193ecdad9322fb5483b95bf2a259270a9b22ba054790794e9abb3fd219196bc5","src/bindings/kotlin/templates/RustBufferTemplate.kt":"415637f80a78c12b3d00db063c14a7ab5c61b098bdb1fc81a0be8bae9511776b","src/bindings/kotlin/templates/SequenceTemplate.kt":"786693b20c608a4f059b91df115278f5f12122b4c14a2e7ce18b6fc9b22b1296","src/bindings/kotlin/templates/StringHelper.kt":"060839663580d8199671b7c3bb3dce5e9106aa766ce2c6e0afc2d2bd788a1d83","src/bindings/kotlin/templates/TimestampHelper.kt":"353c2890f06ad6dda238e9aebb4bdff7bb838e17e46abf351ed3ff1fbc4e6580","src/bindings/kotlin/templates/TopLevelFunctionTemplate.kt":"09b8bb5ffea7075518ee657f83017d44ff0cbf584fd85676b082199139c9be09","src/bindings/kotlin/templates/Types.kt":"db7ed7384b4391a4bc1425ec3a89e0c890538ad30f5e115bae4998c059c8a21b","src/bindings/kotlin/templates/UInt16Helper.kt":"e84a1f30a5a899ba2c5db614d3f3c74f25bccf6dd99bf68b8830829332d051e9","src/bindings/kotlin/templates/UInt32Helper.kt":"7cdf08cc580046935f27ba07b53685968608a102e0a6be305111037c63d7ddf8","src/bindings/kotlin/templates/UInt64Helper.kt":"fd7baacbf3ab6202ff83edcc66e5f7beb11a10053ba66d0b49547616cc7cbe1f","src/bindings/kotlin/templates/UInt8Helper.kt":"bbf5a6d66c995aea9fe2fa9840c6bfa78b03520a09469b984f0e1d43191e453a","src/bindings/kotlin/templates/macros.kt":"eb5e0f9915b8ec9fbf3bf1a714625fbdcef7a7ee7461916e87fec872434ed3ec","src/bindings/kotlin/templates/wrapper.kt":"dd81cf28a4e07c685d29c87a4053eccb6339835cfc7fce3cf581d3d111fed4f5","src/bindings/mod.rs":"51ac55a3d505d5a88eedc83cf12623c2738277a9cd22bf3bbe05be1244de078b","src/bindings/python/gen_python/callback_interface.rs":"e3ffb8ba1aa8ac8ddcfff6554e7ec0d2d695d12955a98a04d114d2d6ca5dacc8","src/bindings/python/gen_python/compounds.rs":"e406c773c3b66368ea74973df742cdcba3014521812048f15de7c0e783eedfaf","src/bindings/python/gen_python/custom.rs":"33756f6bdafbd9b1a3a439c1cced3c83dc1fdb82b5ec235c064e69670ea6086c","src/bindings/python/gen_python/enum_.rs":"634c8406b07cbd24ea4f71cae4c971169e4989ce8019188f4bcd515bc3c77c5d","src/bindings/python/gen_python/error.rs":"d1a3b3edb91d9502064463cc3324770a1a6e0f234d6b49b5d7c43636bfe81d59","src/bindings/python/gen_python/external.rs":"8920b7a2a3b39a9647ec17cdff44308db3bfe9a582f026b060003edd76407599","src/bindings/python/gen_python/miscellany.rs":"f3898b75cf494b39662d886eb78d9cc06685650265fc8a1e87e5de67baa342ae","src/bindings/python/gen_python/mod.rs":"552de45cab20c4467bdcc774c305f298c9d7487c6b89f6786cb7ef1774ccddf6","src/bindings/python/gen_python/object.rs":"b4d3d8a935d4acd689cf1f3857d461dbab3a51c7c8bd821890198fb58ef3a63f","src/bindings/python/gen_python/primitives.rs":"928523bb91d2192d615d044f1fef3714681140562b740cf72dce3168e660e276","src/bindings/python/gen_python/record.rs":"f961dfe8dd1e5caa633754de7ecc684c2211c9b6633a5e6beb6053e60500b9f2","src/bindings/python/mod.rs":"bcf295b334b332c7fd1214ddfdaa727cfe37fed531c3862ce25906b3a70b71c7","src/bindings/python/templates/BooleanHelper.py":"d384ffeefcb5982c4875e819d06e919a295eaa9ff57735e6fef0801bb810d5c9","src/bindings/python/templates/CallbackInterfaceRuntime.py":"7ffef485fc008e2d9efcd07326102f300bd4673b4351353e9e2908355936c3d7","src/bindings/python/templates/CallbackInterfaceTemplate.py":"089b5cc1131e8c9b867c899cb649ce22eb9ba6a4addab4ebf9ba63316c394693","src/bindings/python/templates/CustomType.py":"db3309b3f944fb813d4cef47a04d67a86f824183f7e31289184683155fd985d9","src/bindings/python/templates/DurationHelper.py":"179c14dccd8cc7dc9791f896414f0b5d124ec116eb78173371bd8a0743208da1","src/bindings/python/templates/EnumTemplate.py":"825ca373286f1b3b252b8a1263e29c9e2f0d3e170ceb364bd6c28d6c4595597b","src/bindings/python/templates/ErrorTemplate.py":"b6b1b0d3fc074a7c3ba7db394c5d6cb3279b0fc0e6a331154303c2c6c907458b","src/bindings/python/templates/ExternalTemplate.py":"f582a6e872fe9f8275d33d36ffe017028ca459fe7c53aa680a2512718d0c0fda","src/bindings/python/templates/Float32Helper.py":"7dbc51889cff47ebf1600fad490849e4a87cac4fc0d1756eebd21609eb80b4a9","src/bindings/python/templates/Float64Helper.py":"ba9f334d1339b6eaedcacc1e35068939727170a684f41dec9ee04762ed98cec1","src/bindings/python/templates/Helpers.py":"68f03f651c38c810fa453e123e26f7c94b7a1f9178e0d863b985c3c8fabaa642","src/bindings/python/templates/Int16Helper.py":"60c22fb8b445841ebb3c68be11b81c9eba84a680eaa0e30770953361231da9b5","src/bindings/python/templates/Int32Helper.py":"aff0a017cf767394174e46d8c4fe5a5a704a8e6384fcc38d227634dfe7826916","src/bindings/python/templates/Int64Helper.py":"6c314b91699a6c6ad7db3ef636713bc2a0af9609c82acfd6062b0588177c0026","src/bindings/python/templates/Int8Helper.py":"a6e2d121b1a6d59886fceab3949e571aba1abc06dfede52666954bf15366fb6f","src/bindings/python/templates/MapTemplate.py":"bbe609b865010b98b38c58f2d4fcc97f2adec3e931903bf67263a5e440a84400","src/bindings/python/templates/NamespaceLibraryTemplate.py":"4726dbeb61508a71153436126bc04d03af966dca4f5b37511beb8bcfb6f1f307","src/bindings/python/templates/ObjectTemplate.py":"68302f6da6e4e80fc0cc8eb4ef2d4353d19ad3e9955112a2fabec8bf1b1293c7","src/bindings/python/templates/OptionalTemplate.py":"ab6da433370ba7c1316e266247ee1b7165bc02f6f288e40a7c68806c018e3282","src/bindings/python/templates/RecordTemplate.py":"98cef2adbc2b890e5c67257fb32a57380070988ef4112408eeca85e0b87b566b","src/bindings/python/templates/RustBufferHelper.py":"11f733051e63733c637fb19c4758cb58a40d045792028465f36891f89c7c5f36","src/bindings/python/templates/RustBufferTemplate.py":"90950cfeeb7a028aac9b65aeca897b217eddcfa165a0d59e8af037e834f34146","src/bindings/python/templates/SequenceTemplate.py":"faf2b1d5272a66258972d88c29d5b527cf9e589c8399e30f7ad5a0503133ce9b","src/bindings/python/templates/StringHelper.py":"941a7ad71d9598701efa15323df93766934583a55f4266d26db31e6b744603fc","src/bindings/python/templates/TimestampHelper.py":"b412cea69117858c05bae3210d378c6296658ed02a50e87c52c392dcb62c7892","src/bindings/python/templates/TopLevelFunctionTemplate.py":"2b2883b14f324e543cfeea5293d2a4907fa9ebe93b779da7174a58929d8b0442","src/bindings/python/templates/Types.py":"2eee78ca838f65b7e8ff8f760558c71ca80ad314aaa44efd1d1b8e13b349f1bc","src/bindings/python/templates/UInt16Helper.py":"06be5c9dacdf20e586f8236ed75cf2ca2470078fd8570843ea97c581b25bf860","src/bindings/python/templates/UInt32Helper.py":"41bb9bbf9b7be1060945e1267b1cc052585ec43696b1591f0ee779a0be0feaff","src/bindings/python/templates/UInt64Helper.py":"ba2825fc295a07292d9fb4aeebe74dabb9e6dbe505643e2347875ab12e511f31","src/bindings/python/templates/UInt8Helper.py":"dca5b3fc4a429fb233326224f85c4eccd3a7802ca9958ec309c7f197d59b4e3d","src/bindings/python/templates/macros.py":"3f02a32941e20aea15e136780c24c9695021dbcae08044c4f654f75aadcbd1e1","src/bindings/python/templates/wrapper.py":"627a6e18e72040909887261b8ad918c68104b15110df26b2205d7827c690e8c3","src/bindings/ruby/gen_ruby/mod.rs":"33ae9fc3f69e4c5b7bb6df41e53298f89934cee2bb6d7e7ea8488cefc9d06c03","src/bindings/ruby/gen_ruby/tests.rs":"7dcb86b08e643c43503f4cac6396833497f6988b004321c0067700ee29ffbf32","src/bindings/ruby/mod.rs":"f57fccdfc544210e8cc70e01e4991cee6e72d258ede9d2bb226baad24a3ef0d7","src/bindings/ruby/templates/EnumTemplate.rb":"5480edb347f5829e478d19474691babd72f37616ed846d519b5a61cb1d6cf047","src/bindings/ruby/templates/ErrorTemplate.rb":"147b2c3ff44c19624e7bf7b3a2a04b7badbba5743eaefa0d5e6c05943119c87e","src/bindings/ruby/templates/NamespaceLibraryTemplate.rb":"9b1454208bc83ef8f26aef33713d681e2284dbfea986ec0dd6c9b9c8b7d65e4a","src/bindings/ruby/templates/ObjectTemplate.rb":"c2d2fa2db62d48322b66b53888dcc6de2fc3e579a6b8d0a9f24029c18fffcbb5","src/bindings/ruby/templates/RecordTemplate.rb":"4aeff886928ca972e5dc9b799581b30c66a6f6dce446af3285dd3ed6b422dea9","src/bindings/ruby/templates/RustBufferBuilder.rb":"2ee5a4b97fe590de98ec2119b2dfe103bba75e15b5fb3c178fa51dfa662dfe2c","src/bindings/ruby/templates/RustBufferStream.rb":"ddfc38a6388bdddf8cc24bb6f1af948e4eef2d7ae2091a5130fee57cf53e5a7d","src/bindings/ruby/templates/RustBufferTemplate.rb":"8f37664f5436ba74ccdd801e16220f1b879d2fb56f51f5845b6047c92dc079f8","src/bindings/ruby/templates/TopLevelFunctionTemplate.rb":"88213e7e25bef664da939c04dd5621f438af735ffcb4d2d0c24a529538630069","src/bindings/ruby/templates/macros.rb":"d732a62291c78ccfbc3208227c1b57f6add723fad91b7e699d693e360840e1b0","src/bindings/ruby/templates/wrapper.rb":"542cdf46fb871e66089c9f008cf472cca411fe217d8c66a0a66776c35469aab5","src/bindings/swift/gen_swift/callback_interface.rs":"e331871ac6c9ac9b9533848fb6ddfcabc1e605970343cad307b6d86b72ebe96a","src/bindings/swift/gen_swift/compounds.rs":"f9e87b342f1f9a14295d87bad59d786d4c253a24d22900c2aba44816713718ae","src/bindings/swift/gen_swift/custom.rs":"45cdfa35ef7345dc353d0d2f3cebb17d726e90abdf5ef49422d6b2db65f8fd25","src/bindings/swift/gen_swift/enum_.rs":"018eea78ef85c9f8d715a5bc15c8273030d4f6ba297019949eb578c5cc6276fd","src/bindings/swift/gen_swift/error.rs":"bd95c3303e40f03a321f2cdc8e15a0251f4c7ddbc3c32c4c57eb9569db218488","src/bindings/swift/gen_swift/miscellany.rs":"66f16968f6cccc0b61c544e336a49b96218551731dcce566a176903c9afb3b57","src/bindings/swift/gen_swift/mod.rs":"1e8f98e05a5b03798c91ada854f6a4f2a0682c252143d63c16c6a06bd0419e4b","src/bindings/swift/gen_swift/object.rs":"072a44f484cc66694c57a9fa41ba50a531c9ce19738e11ce9df17cdfc007648f","src/bindings/swift/gen_swift/primitives.rs":"b37b8f3ad3aa7e769e6d465a31282e377f93cd69e4dcf39a56dc833f412ed412","src/bindings/swift/gen_swift/record.rs":"48296332960be3731b9139dc664d4b8a5d56d04cffa34dc995b62cf202b4dbfd","src/bindings/swift/mod.rs":"0ad4afd667ef17b3b577ded9a09cdaa5595afbdb24e7474c6b1e6a8e0a024593","src/bindings/swift/templates/BooleanHelper.swift":"f607928c4d598893421fe9c9f183bab2f23a877a07afeb123dbe90515249ec86","src/bindings/swift/templates/BridgingHeaderTemplate.h":"93a289e393ecdbe1bf986215c3b19d2aed7677d47f79b1833ce73cf6f8762e80","src/bindings/swift/templates/CallbackInterfaceRuntime.swift":"aac01eb4269151be9dde8c95ee8eba7e8d0841b3c2b1dbd88885f01ac64ee147","src/bindings/swift/templates/CallbackInterfaceTemplate.swift":"c9700f52e932556c59a9bfea68fc786746b7f321ff75c33d0a8c1565effaeef5","src/bindings/swift/templates/CustomType.swift":"fe6414f2ce3ea7b148742e2fecf2206d7e69935dd78d56e014aec70f4d6ad3ec","src/bindings/swift/templates/DurationHelper.swift":"bca4a6498b27fe0c877df3c7fbe148538eeda03e68d4e760a7c8a6a15f2067ff","src/bindings/swift/templates/EnumTemplate.swift":"e61bdf7949aa5a7b55a2c10c243e960f683c862e5977f06e7f5956646b4ccb49","src/bindings/swift/templates/ErrorTemplate.swift":"58fb5907d20b7a6db67b128e5f6350015278990fef5945be42477a5b5f82bb18","src/bindings/swift/templates/Float32Helper.swift":"6c1a4da059dd4c6c4392511c93fe9daf4ddeeab71e39afd122797b0e19254318","src/bindings/swift/templates/Float64Helper.swift":"f741568cdfb8e1421369a9a1dc845630a3a0e2dc2d6acf157afd80cd3ef5966f","src/bindings/swift/templates/Helpers.swift":"3cf3a5342a1ef0c7e078b0e58c32ae4437c4fb5dc41acbbd56b1128393c76602","src/bindings/swift/templates/Int16Helper.swift":"76eec2a54a65790c5959380cc9a7362b1e2e201632cccb789153c52e10c8dc4f","src/bindings/swift/templates/Int32Helper.swift":"5afc5e103bf637813fd4b77ab63e47ed38893525101a483218a339f222710061","src/bindings/swift/templates/Int64Helper.swift":"c1a6f6661ef1ad3bd00e8d0bf81adaa6539686eee2b481b046b76dbd87681adf","src/bindings/swift/templates/Int8Helper.swift":"bc46598c966e579cca22d336748c74cdce5674eaaaf75fc24e5fdaa36a43cf9c","src/bindings/swift/templates/MapTemplate.swift":"8b5a9cb41a1ad41b5566fbe3906a1449e5453289208a9fc6a611de1eb937142a","src/bindings/swift/templates/ModuleMapTemplate.modulemap":"99ad1e9bf550a21497296f9248ecd4385dd6d0b5892951d24cf990cdbf3eec2c","src/bindings/swift/templates/ObjectTemplate.swift":"98f744d7baf41e28d9184ae7e1aa9522b1bd951d507e0987879b11d7995782aa","src/bindings/swift/templates/OptionalTemplate.swift":"73f777d2df4fdf42daf0d6035436d168b0d5f0abc15153b97029bc305408f597","src/bindings/swift/templates/RecordTemplate.swift":"af0dc13b32d34254b4cfef3b74f52fd4611aa6c32e055e203414511fd3bbb00a","src/bindings/swift/templates/RustBufferTemplate.swift":"ed16f20cecd264f086c923cd92a5198f444aec99aad4d39e9012f09f530ca809","src/bindings/swift/templates/SequenceTemplate.swift":"977f1409909ff08018c0a80c1330737023b39a8f9fa9a13f5bf9ab4806cac199","src/bindings/swift/templates/StringHelper.swift":"b773c2b3a03f30338ff233881d1b0c0238831b812eff6eb9f0fafcb32ab0743a","src/bindings/swift/templates/TimestampHelper.swift":"6e22e370feae1199bff16bcc6f431decfb7700b02e6afdd84693a0c474eb045e","src/bindings/swift/templates/TopLevelFunctionTemplate.swift":"ca7fcbaa06ee31c7433fd6aa238b6c1135a843f469d9b4f37d4874d514fd80d0","src/bindings/swift/templates/Types.swift":"2f42430cb4ffba8e9b5084c0cf8790fb5bae151878134b8a21e745acf75d2b08","src/bindings/swift/templates/UInt16Helper.swift":"16adb3b50403dad114fad0b86bc220c5adc3bd987c57c290aee7c6407891dfbc","src/bindings/swift/templates/UInt32Helper.swift":"680ddd2815184f520723820f10698a089c222df0388bc0f7734c6d5234194aec","src/bindings/swift/templates/UInt64Helper.swift":"b752852162028a0c132f79f9005c47c263a4dab98833e86758cd7b467e305629","src/bindings/swift/templates/UInt8Helper.swift":"54f4821e704969eeb5c0e002b890d975a20eda3ddc3ee56169ee3c615dfa1079","src/bindings/swift/templates/macros.swift":"0744724c37419e894132b39aea4b8e1f473460583883fa37f38c787a7deea32c","src/bindings/swift/templates/wrapper.swift":"ca1af5fe47bca972c76fb8c9f52b18f727d4343204408de3dd0aae384f0a4171","src/interface/attributes.rs":"2f76377eebdd62e770bb9089885482a49a57e1f8405320bb778353f3e8974447","src/interface/callbacks.rs":"c9f4b97b21195ba2d1787f032f1daa5f4ce2fc40e014942e07e4eb37b5b95ee9","src/interface/enum_.rs":"1a7cda619a986a20fd4d0f145206aba2c500ce5dfca90d01e5324996fd68dc04","src/interface/error.rs":"f31fc0a7e41b4c8f4b81d06958fda14af6f05bfa318206098e0ec351cf4db809","src/interface/ffi.rs":"22d24e4dda327fa78c7632a6e5bbe374ecac0165acc550007feb729d8f4d6adf","src/interface/function.rs":"d6df6d8d412d7c45fe33c7337b37aeb851ae0f21834c4bd8b315aad4ca4ec309","src/interface/literal.rs":"3d2102cb47ff658f329d66d6c867b13a50e7f56535f23c1b414f857741360358","src/interface/mod.rs":"1d1993504ce61a2f578cb6fb42c79b7829a0767c20983581d631ee948819665e","src/interface/namespace.rs":"ab0f63241bb6a0a32f9fd2a1544468cb6daa1f91f6116b7246b52a4a94e4f461","src/interface/object.rs":"44836747d5d00bb40ecadb889c9a6ff32c1cbf625b5a6a337f5891f495fd92fd","src/interface/record.rs":"5859ea6c1f6c5524d1e6f3846954986710d5f74f1c6fd6324c4245b5f70013d5","src/interface/types/finder.rs":"a27f24e64b5bfc796378d1012b5e72001f0a442e8185fdc4430b106595d4b819","src/interface/types/mod.rs":"fe63c3fd233ad905af0358c5d610c85a5a57f263eb899acc756454a1029c4569","src/interface/types/resolver.rs":"7e7ce336ef77c0a6c23deea36856737a97cca9b1c3f5cd0d676fe7df6ade6480","src/lib.rs":"a41b43e3628bb6b3f725580eec255b409947945672887de87c21d5122775a245","src/macro_metadata/ci.rs":"0d6e53d2b5645dd3cc7d196bd3a32ee82c029e1adb9ae93708c27a3fa5c55a88","src/macro_metadata/extract.rs":"ec392692a4601343312f60937987fe460cfb40d2c63a6bb1531fe91903916f10","src/macro_metadata/mod.rs":"1668e6d947fd4a957f557410a8095649de6f8d7fd3eb6a403b8587280dca2d54","src/main.rs":"bbf8e9942d398387e7518533f9b9dc42bfa66156430a87a17605a80a356c0dea","src/scaffolding/mod.rs":"35ae72220843cf3cccefd96e190553e32a5f34ccc58d552fd9165faea12db260","src/scaffolding/templates/CallbackInterfaceTemplate.rs":"3c8caa2e148add8d80701894ee6904fc2d3c5c6424d6d414b36edb6f593b5023","src/scaffolding/templates/EnumTemplate.rs":"eb8802f04f1fd1c9451ad72c1195c136288fdb4e488922b24db75b2fdae65cd7","src/scaffolding/templates/ErrorTemplate.rs":"e7ca4538908a273dd7ba3834219b30fa0e537b2171144f06b6a96fbefb90cd1d","src/scaffolding/templates/ExternalTypesTemplate.rs":"8ecc805cf119abac8c5f60605f9183ee9ec8d37f9ec75bba5e18bb8b482a1abb","src/scaffolding/templates/ObjectTemplate.rs":"34de640428486e17a61ded4f42ce13d8eac3e66cc9f60196ce2575cdc0bd8df6","src/scaffolding/templates/RecordTemplate.rs":"e8d5af954f46f023a243721d6fc70aa176c3a4c0a9dd340048bfe46f3eeed783","src/scaffolding/templates/ReexportUniFFIScaffolding.rs":"559a17c8e39c473ff1effe9651f05b83d443ecd8abed13e03f2b63872d7e1593","src/scaffolding/templates/RustBuffer.rs":"ccf7521012d93c41265375c6d2e80ce861ec93b41383da83c37718386dd726f6","src/scaffolding/templates/TopLevelFunctionTemplate.rs":"35eaefb0862f25ff683d58fb0be6ad5f74bbe2fc85047273200c3a5f4c728434","src/scaffolding/templates/macros.rs":"a41c9690d411074c59fc4609f897431669b9d939625a08f5304a71a88901ba7c","src/scaffolding/templates/scaffolding_template.rs":"3589f8e8e1f9b194ff4a6245665d3a421c771dec3cc947c4264bfcd34573550e"},"package":"12cc4af3c0180c7e86c4a3acf2b6587af04ba2567b1e948993df10f421796621"}
-\ No newline at end of file
-+{"files":{"Cargo.lock":"3b1693f0ada97ba7e0527d763402404b39fe341da22bd45aaf057e4be3fa3234","Cargo.toml":"58662147277f1620eccd6592f83623cf71959df8326e9d700fdaac47c6e6cf35","askama.toml":"1a245b7803adca782837e125c49100147d2de0d5a1c949ff95e91af1701f6058","src/backend/config.rs":"4861dbf251dbb10beb1ed7e3eea7d79499a0de1cd9ce9ee8381a0e729c097dea","src/backend/declarations.rs":"12b8d6e651f84634de5cd02a47601965df7438f64f1a73f136bd89b6b5d515cf","src/backend/mod.rs":"899cd3b816d0467e35789b92ac3b8d5910f6dab98156d405db4803da8721fd36","src/backend/oracle.rs":"9e2b8a45af604a6e4952644e81f43f6aec6e0a1d03939c68b582529dd01a51e0","src/backend/types.rs":"7c49a92096a54eefd2336c48d60fe20ded9490142ab3a229a7c1a99fec14df3d","src/bindings/kotlin/gen_kotlin/callback_interface.rs":"b7fe795670830f3aa8a955c787b1127fe68313ee751013948527948fe5526b01","src/bindings/kotlin/gen_kotlin/compounds.rs":"d1e9a4237ff2ff711a3eae7a564c39e26f598c156ebfd34c0f04879e3533dd4f","src/bindings/kotlin/gen_kotlin/custom.rs":"4176f6ed5f66504f8fd981198bbfbae795dab5ef0d0281881d19b697f5560c44","src/bindings/kotlin/gen_kotlin/enum_.rs":"f85ae8dcb55c8f274139bf321af0ba237ae69894165ad6bd693d793f58af8e5e","src/bindings/kotlin/gen_kotlin/error.rs":"867f583aea5da7aabeb9b6d2544d7e52984cdea4aa008ce5f2ec941074735e1a","src/bindings/kotlin/gen_kotlin/external.rs":"1f7e91d7439891fe3c403274e35880ee4fc3a0da555510bdfa23c1ed2bbd8020","src/bindings/kotlin/gen_kotlin/miscellany.rs":"644ee5bb1f3619be5a36b2b3900af554ea38073cd054004f421e69c3cb8d50bc","src/bindings/kotlin/gen_kotlin/mod.rs":"90412e7927c284668a9eb75823c198182e58e5177d5561896c43b79367564b27","src/bindings/kotlin/gen_kotlin/object.rs":"6478a3e9d5e66186521730d0d481abd1ee4f123050ea050ac5a483842f08b003","src/bindings/kotlin/gen_kotlin/primitives.rs":"914d1f8253ed6a2937f67e8bd8f04f46aef4f22455ceb8a6caa84427adc2093e","src/bindings/kotlin/gen_kotlin/record.rs":"7961fcfbec5ebf8fc010b564ea4bd59402c919f6922898d48226d8c995569dd7","src/bindings/kotlin/mod.rs":"e68f2ea29e66ee62a56704e1e4464eea6d28bbdb52ab187bbe7a57ab3f362ea7","src/bindings/kotlin/templates/BooleanHelper.kt":"28e8a5088c8d58c9bfdbc575af8d8725060521fdd7d092684a8044b24ae567c7","src/bindings/kotlin/templates/CallbackInterfaceRuntime.kt":"6ede374b0fcbb3bcc939894e6f4729b3bec7ec7356831a60fba96ca38dc91aa8","src/bindings/kotlin/templates/CallbackInterfaceTemplate.kt":"5a704eb8c044ed22905e4d526ee3fc0b86f42fe82ac1eb4ad3758ad0552ea8c8","src/bindings/kotlin/templates/CustomTypeTemplate.kt":"5d4dacf29e89bcdcc46d155d993e6059d2df704e775dc853469310198253b231","src/bindings/kotlin/templates/DurationHelper.kt":"414a98161538a26f3a9b357353270c1f245ad6ceed99496aca7162cf473a92fd","src/bindings/kotlin/templates/EnumTemplate.kt":"ab3e2063aad3b91188db839dceb59b854a6a8b60fb35e545e270e64fee7c73fa","src/bindings/kotlin/templates/ErrorTemplate.kt":"a5ec2bdfc026838e1096dbf3301f21aa4ea22e8c93458d45bb1c8c7b9ee1fc5b","src/bindings/kotlin/templates/ExternalTypeTemplate.kt":"2097e0b830640ef18c79449ffa376d1dd35a8c4a5230e413c915f3b868aae872","src/bindings/kotlin/templates/FfiConverterTemplate.kt":"aa22962aaa9f641d48ccf44cb56d9f8a7736cbfaa01e1a1656662cfe5dd5c1d7","src/bindings/kotlin/templates/Float32Helper.kt":"662d95af3b629d143fb4d47cb7e9aa26ed28a5f3846de0341e28b0f9fb08bc25","src/bindings/kotlin/templates/Float64Helper.kt":"a77d099fa7d91e8702c1700e7949ffb6aaba9c6e8041ff48bab34b8e1fc9a0aa","src/bindings/kotlin/templates/Helpers.kt":"46c07798a26b53b06405c8bbbf86e3fcf38fadc1484ea04ce9d482defea89288","src/bindings/kotlin/templates/Int16Helper.kt":"7f83c4a48e1f3b2a59a3ca6a2662be8bc9baf3a5a748b31223cb3f51721ef249","src/bindings/kotlin/templates/Int32Helper.kt":"e02e4702175554b09fd2dd6ac3089dcd2c395f08ec60e762159566a9c9889450","src/bindings/kotlin/templates/Int64Helper.kt":"7a6fd6ca486852c89399c699935a9dfa1c32b9356d9a965cfde532581f05d9fa","src/bindings/kotlin/templates/Int8Helper.kt":"0554545494b6b9a76ce94f9c1723f8cf4230a13076feb75d620b1c9ca1ac4668","src/bindings/kotlin/templates/MapTemplate.kt":"399569d6443e8ad01e2deb95d78d8d2d15bf8eccee8be4fbe9ce4b8ebc0a6101","src/bindings/kotlin/templates/NamespaceLibraryTemplate.kt":"1eba4e77381155c2c96a6af2ef30fca881ade4957852f730fd10aa4f3d9cd3c4","src/bindings/kotlin/templates/ObjectRuntime.kt":"c11d233de41405caa55a56bcaa3bb69ce153ffa6fdff2aa218051929f5c4aeec","src/bindings/kotlin/templates/ObjectTemplate.kt":"7e32d92ec6116da9b7d7f278b15333a2fd2a82dde8c21534e3f6fe371d19f333","src/bindings/kotlin/templates/OptionalTemplate.kt":"5f9f2c1baa829ed3c9b61c3edb0f1fccf5ea3cccc052a69cf8966715d8fcf149","src/bindings/kotlin/templates/RecordTemplate.kt":"193ecdad9322fb5483b95bf2a259270a9b22ba054790794e9abb3fd219196bc5","src/bindings/kotlin/templates/RustBufferTemplate.kt":"415637f80a78c12b3d00db063c14a7ab5c61b098bdb1fc81a0be8bae9511776b","src/bindings/kotlin/templates/SequenceTemplate.kt":"786693b20c608a4f059b91df115278f5f12122b4c14a2e7ce18b6fc9b22b1296","src/bindings/kotlin/templates/StringHelper.kt":"060839663580d8199671b7c3bb3dce5e9106aa766ce2c6e0afc2d2bd788a1d83","src/bindings/kotlin/templates/TimestampHelper.kt":"353c2890f06ad6dda238e9aebb4bdff7bb838e17e46abf351ed3ff1fbc4e6580","src/bindings/kotlin/templates/TopLevelFunctionTemplate.kt":"09b8bb5ffea7075518ee657f83017d44ff0cbf584fd85676b082199139c9be09","src/bindings/kotlin/templates/Types.kt":"db7ed7384b4391a4bc1425ec3a89e0c890538ad30f5e115bae4998c059c8a21b","src/bindings/kotlin/templates/UInt16Helper.kt":"e84a1f30a5a899ba2c5db614d3f3c74f25bccf6dd99bf68b8830829332d051e9","src/bindings/kotlin/templates/UInt32Helper.kt":"7cdf08cc580046935f27ba07b53685968608a102e0a6be305111037c63d7ddf8","src/bindings/kotlin/templates/UInt64Helper.kt":"fd7baacbf3ab6202ff83edcc66e5f7beb11a10053ba66d0b49547616cc7cbe1f","src/bindings/kotlin/templates/UInt8Helper.kt":"bbf5a6d66c995aea9fe2fa9840c6bfa78b03520a09469b984f0e1d43191e453a","src/bindings/kotlin/templates/macros.kt":"eb5e0f9915b8ec9fbf3bf1a714625fbdcef7a7ee7461916e87fec872434ed3ec","src/bindings/kotlin/templates/wrapper.kt":"dd81cf28a4e07c685d29c87a4053eccb6339835cfc7fce3cf581d3d111fed4f5","src/bindings/mod.rs":"51ac55a3d505d5a88eedc83cf12623c2738277a9cd22bf3bbe05be1244de078b","src/bindings/python/gen_python/callback_interface.rs":"e3ffb8ba1aa8ac8ddcfff6554e7ec0d2d695d12955a98a04d114d2d6ca5dacc8","src/bindings/python/gen_python/compounds.rs":"e406c773c3b66368ea74973df742cdcba3014521812048f15de7c0e783eedfaf","src/bindings/python/gen_python/custom.rs":"33756f6bdafbd9b1a3a439c1cced3c83dc1fdb82b5ec235c064e69670ea6086c","src/bindings/python/gen_python/enum_.rs":"634c8406b07cbd24ea4f71cae4c971169e4989ce8019188f4bcd515bc3c77c5d","src/bindings/python/gen_python/error.rs":"d1a3b3edb91d9502064463cc3324770a1a6e0f234d6b49b5d7c43636bfe81d59","src/bindings/python/gen_python/external.rs":"8920b7a2a3b39a9647ec17cdff44308db3bfe9a582f026b060003edd76407599","src/bindings/python/gen_python/miscellany.rs":"f3898b75cf494b39662d886eb78d9cc06685650265fc8a1e87e5de67baa342ae","src/bindings/python/gen_python/mod.rs":"552de45cab20c4467bdcc774c305f298c9d7487c6b89f6786cb7ef1774ccddf6","src/bindings/python/gen_python/object.rs":"b4d3d8a935d4acd689cf1f3857d461dbab3a51c7c8bd821890198fb58ef3a63f","src/bindings/python/gen_python/primitives.rs":"928523bb91d2192d615d044f1fef3714681140562b740cf72dce3168e660e276","src/bindings/python/gen_python/record.rs":"f961dfe8dd1e5caa633754de7ecc684c2211c9b6633a5e6beb6053e60500b9f2","src/bindings/python/mod.rs":"bcf295b334b332c7fd1214ddfdaa727cfe37fed531c3862ce25906b3a70b71c7","src/bindings/python/templates/BooleanHelper.py":"d384ffeefcb5982c4875e819d06e919a295eaa9ff57735e6fef0801bb810d5c9","src/bindings/python/templates/CallbackInterfaceRuntime.py":"7ffef485fc008e2d9efcd07326102f300bd4673b4351353e9e2908355936c3d7","src/bindings/python/templates/CallbackInterfaceTemplate.py":"089b5cc1131e8c9b867c899cb649ce22eb9ba6a4addab4ebf9ba63316c394693","src/bindings/python/templates/CustomType.py":"db3309b3f944fb813d4cef47a04d67a86f824183f7e31289184683155fd985d9","src/bindings/python/templates/DurationHelper.py":"179c14dccd8cc7dc9791f896414f0b5d124ec116eb78173371bd8a0743208da1","src/bindings/python/templates/EnumTemplate.py":"825ca373286f1b3b252b8a1263e29c9e2f0d3e170ceb364bd6c28d6c4595597b","src/bindings/python/templates/ErrorTemplate.py":"b6b1b0d3fc074a7c3ba7db394c5d6cb3279b0fc0e6a331154303c2c6c907458b","src/bindings/python/templates/ExternalTemplate.py":"f582a6e872fe9f8275d33d36ffe017028ca459fe7c53aa680a2512718d0c0fda","src/bindings/python/templates/Float32Helper.py":"7dbc51889cff47ebf1600fad490849e4a87cac4fc0d1756eebd21609eb80b4a9","src/bindings/python/templates/Float64Helper.py":"ba9f334d1339b6eaedcacc1e35068939727170a684f41dec9ee04762ed98cec1","src/bindings/python/templates/Helpers.py":"68f03f651c38c810fa453e123e26f7c94b7a1f9178e0d863b985c3c8fabaa642","src/bindings/python/templates/Int16Helper.py":"60c22fb8b445841ebb3c68be11b81c9eba84a680eaa0e30770953361231da9b5","src/bindings/python/templates/Int32Helper.py":"aff0a017cf767394174e46d8c4fe5a5a704a8e6384fcc38d227634dfe7826916","src/bindings/python/templates/Int64Helper.py":"6c314b91699a6c6ad7db3ef636713bc2a0af9609c82acfd6062b0588177c0026","src/bindings/python/templates/Int8Helper.py":"a6e2d121b1a6d59886fceab3949e571aba1abc06dfede52666954bf15366fb6f","src/bindings/python/templates/MapTemplate.py":"bbe609b865010b98b38c58f2d4fcc97f2adec3e931903bf67263a5e440a84400","src/bindings/python/templates/NamespaceLibraryTemplate.py":"4726dbeb61508a71153436126bc04d03af966dca4f5b37511beb8bcfb6f1f307","src/bindings/python/templates/ObjectTemplate.py":"68302f6da6e4e80fc0cc8eb4ef2d4353d19ad3e9955112a2fabec8bf1b1293c7","src/bindings/python/templates/OptionalTemplate.py":"ab6da433370ba7c1316e266247ee1b7165bc02f6f288e40a7c68806c018e3282","src/bindings/python/templates/RecordTemplate.py":"98cef2adbc2b890e5c67257fb32a57380070988ef4112408eeca85e0b87b566b","src/bindings/python/templates/RustBufferHelper.py":"11f733051e63733c637fb19c4758cb58a40d045792028465f36891f89c7c5f36","src/bindings/python/templates/RustBufferTemplate.py":"90950cfeeb7a028aac9b65aeca897b217eddcfa165a0d59e8af037e834f34146","src/bindings/python/templates/SequenceTemplate.py":"faf2b1d5272a66258972d88c29d5b527cf9e589c8399e30f7ad5a0503133ce9b","src/bindings/python/templates/StringHelper.py":"941a7ad71d9598701efa15323df93766934583a55f4266d26db31e6b744603fc","src/bindings/python/templates/TimestampHelper.py":"b412cea69117858c05bae3210d378c6296658ed02a50e87c52c392dcb62c7892","src/bindings/python/templates/TopLevelFunctionTemplate.py":"2b2883b14f324e543cfeea5293d2a4907fa9ebe93b779da7174a58929d8b0442","src/bindings/python/templates/Types.py":"2eee78ca838f65b7e8ff8f760558c71ca80ad314aaa44efd1d1b8e13b349f1bc","src/bindings/python/templates/UInt16Helper.py":"06be5c9dacdf20e586f8236ed75cf2ca2470078fd8570843ea97c581b25bf860","src/bindings/python/templates/UInt32Helper.py":"41bb9bbf9b7be1060945e1267b1cc052585ec43696b1591f0ee779a0be0feaff","src/bindings/python/templates/UInt64Helper.py":"ba2825fc295a07292d9fb4aeebe74dabb9e6dbe505643e2347875ab12e511f31","src/bindings/python/templates/UInt8Helper.py":"dca5b3fc4a429fb233326224f85c4eccd3a7802ca9958ec309c7f197d59b4e3d","src/bindings/python/templates/macros.py":"3f02a32941e20aea15e136780c24c9695021dbcae08044c4f654f75aadcbd1e1","src/bindings/python/templates/wrapper.py":"627a6e18e72040909887261b8ad918c68104b15110df26b2205d7827c690e8c3","src/bindings/ruby/gen_ruby/mod.rs":"33ae9fc3f69e4c5b7bb6df41e53298f89934cee2bb6d7e7ea8488cefc9d06c03","src/bindings/ruby/gen_ruby/tests.rs":"7dcb86b08e643c43503f4cac6396833497f6988b004321c0067700ee29ffbf32","src/bindings/ruby/mod.rs":"f57fccdfc544210e8cc70e01e4991cee6e72d258ede9d2bb226baad24a3ef0d7","src/bindings/ruby/templates/EnumTemplate.rb":"5480edb347f5829e478d19474691babd72f37616ed846d519b5a61cb1d6cf047","src/bindings/ruby/templates/ErrorTemplate.rb":"147b2c3ff44c19624e7bf7b3a2a04b7badbba5743eaefa0d5e6c05943119c87e","src/bindings/ruby/templates/NamespaceLibraryTemplate.rb":"9b1454208bc83ef8f26aef33713d681e2284dbfea986ec0dd6c9b9c8b7d65e4a","src/bindings/ruby/templates/ObjectTemplate.rb":"c2d2fa2db62d48322b66b53888dcc6de2fc3e579a6b8d0a9f24029c18fffcbb5","src/bindings/ruby/templates/RecordTemplate.rb":"4aeff886928ca972e5dc9b799581b30c66a6f6dce446af3285dd3ed6b422dea9","src/bindings/ruby/templates/RustBufferBuilder.rb":"2ee5a4b97fe590de98ec2119b2dfe103bba75e15b5fb3c178fa51dfa662dfe2c","src/bindings/ruby/templates/RustBufferStream.rb":"ddfc38a6388bdddf8cc24bb6f1af948e4eef2d7ae2091a5130fee57cf53e5a7d","src/bindings/ruby/templates/RustBufferTemplate.rb":"8f37664f5436ba74ccdd801e16220f1b879d2fb56f51f5845b6047c92dc079f8","src/bindings/ruby/templates/TopLevelFunctionTemplate.rb":"88213e7e25bef664da939c04dd5621f438af735ffcb4d2d0c24a529538630069","src/bindings/ruby/templates/macros.rb":"d732a62291c78ccfbc3208227c1b57f6add723fad91b7e699d693e360840e1b0","src/bindings/ruby/templates/wrapper.rb":"542cdf46fb871e66089c9f008cf472cca411fe217d8c66a0a66776c35469aab5","src/bindings/swift/gen_swift/callback_interface.rs":"e331871ac6c9ac9b9533848fb6ddfcabc1e605970343cad307b6d86b72ebe96a","src/bindings/swift/gen_swift/compounds.rs":"f9e87b342f1f9a14295d87bad59d786d4c253a24d22900c2aba44816713718ae","src/bindings/swift/gen_swift/custom.rs":"45cdfa35ef7345dc353d0d2f3cebb17d726e90abdf5ef49422d6b2db65f8fd25","src/bindings/swift/gen_swift/enum_.rs":"018eea78ef85c9f8d715a5bc15c8273030d4f6ba297019949eb578c5cc6276fd","src/bindings/swift/gen_swift/error.rs":"bd95c3303e40f03a321f2cdc8e15a0251f4c7ddbc3c32c4c57eb9569db218488","src/bindings/swift/gen_swift/miscellany.rs":"66f16968f6cccc0b61c544e336a49b96218551731dcce566a176903c9afb3b57","src/bindings/swift/gen_swift/mod.rs":"1e8f98e05a5b03798c91ada854f6a4f2a0682c252143d63c16c6a06bd0419e4b","src/bindings/swift/gen_swift/object.rs":"072a44f484cc66694c57a9fa41ba50a531c9ce19738e11ce9df17cdfc007648f","src/bindings/swift/gen_swift/primitives.rs":"b37b8f3ad3aa7e769e6d465a31282e377f93cd69e4dcf39a56dc833f412ed412","src/bindings/swift/gen_swift/record.rs":"48296332960be3731b9139dc664d4b8a5d56d04cffa34dc995b62cf202b4dbfd","src/bindings/swift/mod.rs":"0ad4afd667ef17b3b577ded9a09cdaa5595afbdb24e7474c6b1e6a8e0a024593","src/bindings/swift/templates/BooleanHelper.swift":"f607928c4d598893421fe9c9f183bab2f23a877a07afeb123dbe90515249ec86","src/bindings/swift/templates/BridgingHeaderTemplate.h":"93a289e393ecdbe1bf986215c3b19d2aed7677d47f79b1833ce73cf6f8762e80","src/bindings/swift/templates/CallbackInterfaceRuntime.swift":"aac01eb4269151be9dde8c95ee8eba7e8d0841b3c2b1dbd88885f01ac64ee147","src/bindings/swift/templates/CallbackInterfaceTemplate.swift":"c9700f52e932556c59a9bfea68fc786746b7f321ff75c33d0a8c1565effaeef5","src/bindings/swift/templates/CustomType.swift":"fe6414f2ce3ea7b148742e2fecf2206d7e69935dd78d56e014aec70f4d6ad3ec","src/bindings/swift/templates/DurationHelper.swift":"bca4a6498b27fe0c877df3c7fbe148538eeda03e68d4e760a7c8a6a15f2067ff","src/bindings/swift/templates/EnumTemplate.swift":"e61bdf7949aa5a7b55a2c10c243e960f683c862e5977f06e7f5956646b4ccb49","src/bindings/swift/templates/ErrorTemplate.swift":"58fb5907d20b7a6db67b128e5f6350015278990fef5945be42477a5b5f82bb18","src/bindings/swift/templates/Float32Helper.swift":"6c1a4da059dd4c6c4392511c93fe9daf4ddeeab71e39afd122797b0e19254318","src/bindings/swift/templates/Float64Helper.swift":"f741568cdfb8e1421369a9a1dc845630a3a0e2dc2d6acf157afd80cd3ef5966f","src/bindings/swift/templates/Helpers.swift":"3cf3a5342a1ef0c7e078b0e58c32ae4437c4fb5dc41acbbd56b1128393c76602","src/bindings/swift/templates/Int16Helper.swift":"76eec2a54a65790c5959380cc9a7362b1e2e201632cccb789153c52e10c8dc4f","src/bindings/swift/templates/Int32Helper.swift":"5afc5e103bf637813fd4b77ab63e47ed38893525101a483218a339f222710061","src/bindings/swift/templates/Int64Helper.swift":"c1a6f6661ef1ad3bd00e8d0bf81adaa6539686eee2b481b046b76dbd87681adf","src/bindings/swift/templates/Int8Helper.swift":"bc46598c966e579cca22d336748c74cdce5674eaaaf75fc24e5fdaa36a43cf9c","src/bindings/swift/templates/MapTemplate.swift":"8b5a9cb41a1ad41b5566fbe3906a1449e5453289208a9fc6a611de1eb937142a","src/bindings/swift/templates/ModuleMapTemplate.modulemap":"99ad1e9bf550a21497296f9248ecd4385dd6d0b5892951d24cf990cdbf3eec2c","src/bindings/swift/templates/ObjectTemplate.swift":"98f744d7baf41e28d9184ae7e1aa9522b1bd951d507e0987879b11d7995782aa","src/bindings/swift/templates/OptionalTemplate.swift":"73f777d2df4fdf42daf0d6035436d168b0d5f0abc15153b97029bc305408f597","src/bindings/swift/templates/RecordTemplate.swift":"af0dc13b32d34254b4cfef3b74f52fd4611aa6c32e055e203414511fd3bbb00a","src/bindings/swift/templates/RustBufferTemplate.swift":"ed16f20cecd264f086c923cd92a5198f444aec99aad4d39e9012f09f530ca809","src/bindings/swift/templates/SequenceTemplate.swift":"977f1409909ff08018c0a80c1330737023b39a8f9fa9a13f5bf9ab4806cac199","src/bindings/swift/templates/StringHelper.swift":"b773c2b3a03f30338ff233881d1b0c0238831b812eff6eb9f0fafcb32ab0743a","src/bindings/swift/templates/TimestampHelper.swift":"6e22e370feae1199bff16bcc6f431decfb7700b02e6afdd84693a0c474eb045e","src/bindings/swift/templates/TopLevelFunctionTemplate.swift":"ca7fcbaa06ee31c7433fd6aa238b6c1135a843f469d9b4f37d4874d514fd80d0","src/bindings/swift/templates/Types.swift":"2f42430cb4ffba8e9b5084c0cf8790fb5bae151878134b8a21e745acf75d2b08","src/bindings/swift/templates/UInt16Helper.swift":"16adb3b50403dad114fad0b86bc220c5adc3bd987c57c290aee7c6407891dfbc","src/bindings/swift/templates/UInt32Helper.swift":"680ddd2815184f520723820f10698a089c222df0388bc0f7734c6d5234194aec","src/bindings/swift/templates/UInt64Helper.swift":"b752852162028a0c132f79f9005c47c263a4dab98833e86758cd7b467e305629","src/bindings/swift/templates/UInt8Helper.swift":"54f4821e704969eeb5c0e002b890d975a20eda3ddc3ee56169ee3c615dfa1079","src/bindings/swift/templates/macros.swift":"0744724c37419e894132b39aea4b8e1f473460583883fa37f38c787a7deea32c","src/bindings/swift/templates/wrapper.swift":"ca1af5fe47bca972c76fb8c9f52b18f727d4343204408de3dd0aae384f0a4171","src/interface/attributes.rs":"6c062b60deb332fbb76e70bc675e65c2bc3f2060fad7cec87492609fa9ce166c","src/interface/callbacks.rs":"e311fe8c80fae1d84c1e867a3c36a47a6d6a41847bb2d633edefac7c69402c84","src/interface/enum_.rs":"4ff34ff12c19be0bc9d807020fd4c8e20660c418741e68408671a18165e4b95b","src/interface/error.rs":"85a61e5bb38b369b60110928a78dc84ae77a06d0cbae4dfe9ff9dff2b8c27e5a","src/interface/ffi.rs":"22d24e4dda327fa78c7632a6e5bbe374ecac0165acc550007feb729d8f4d6adf","src/interface/function.rs":"19219c6c984d4117362ee5c269712ec2ad462476902442062ef2a3b0619b014c","src/interface/literal.rs":"d93d168176ba2824d26c490396f4baffc1d418c3c94e4a1ef0ceb3cfca16a239","src/interface/mod.rs":"88dd169859004da79bd1488e6432bc7dae8b6cba9238cab1d676e570dad31d62","src/interface/namespace.rs":"ab0f63241bb6a0a32f9fd2a1544468cb6daa1f91f6116b7246b52a4a94e4f461","src/interface/object.rs":"106cbf5ec2a684700dd99c9748ba161320abb2cecec3c5022d5dd1a9ec4f5b85","src/interface/record.rs":"5b9db093c0c90f5c757e09e6c9afee6b99e2e724c7b388924990b1a6f46357e9","src/interface/types/finder.rs":"a27f24e64b5bfc796378d1012b5e72001f0a442e8185fdc4430b106595d4b819","src/interface/types/mod.rs":"25a598fd206975cc1e62aaa269b461654c913ad6c0b6a2719c486acfcc68b45b","src/interface/types/resolver.rs":"7e7ce336ef77c0a6c23deea36856737a97cca9b1c3f5cd0d676fe7df6ade6480","src/lib.rs":"a41b43e3628bb6b3f725580eec255b409947945672887de87c21d5122775a245","src/macro_metadata/ci.rs":"0d6e53d2b5645dd3cc7d196bd3a32ee82c029e1adb9ae93708c27a3fa5c55a88","src/macro_metadata/extract.rs":"ec392692a4601343312f60937987fe460cfb40d2c63a6bb1531fe91903916f10","src/macro_metadata/mod.rs":"1668e6d947fd4a957f557410a8095649de6f8d7fd3eb6a403b8587280dca2d54","src/main.rs":"bbf8e9942d398387e7518533f9b9dc42bfa66156430a87a17605a80a356c0dea","src/scaffolding/mod.rs":"35ae72220843cf3cccefd96e190553e32a5f34ccc58d552fd9165faea12db260","src/scaffolding/templates/CallbackInterfaceTemplate.rs":"3c8caa2e148add8d80701894ee6904fc2d3c5c6424d6d414b36edb6f593b5023","src/scaffolding/templates/EnumTemplate.rs":"eb8802f04f1fd1c9451ad72c1195c136288fdb4e488922b24db75b2fdae65cd7","src/scaffolding/templates/ErrorTemplate.rs":"e7ca4538908a273dd7ba3834219b30fa0e537b2171144f06b6a96fbefb90cd1d","src/scaffolding/templates/ExternalTypesTemplate.rs":"8ecc805cf119abac8c5f60605f9183ee9ec8d37f9ec75bba5e18bb8b482a1abb","src/scaffolding/templates/ObjectTemplate.rs":"34de640428486e17a61ded4f42ce13d8eac3e66cc9f60196ce2575cdc0bd8df6","src/scaffolding/templates/RecordTemplate.rs":"e8d5af954f46f023a243721d6fc70aa176c3a4c0a9dd340048bfe46f3eeed783","src/scaffolding/templates/ReexportUniFFIScaffolding.rs":"559a17c8e39c473ff1effe9651f05b83d443ecd8abed13e03f2b63872d7e1593","src/scaffolding/templates/RustBuffer.rs":"ccf7521012d93c41265375c6d2e80ce861ec93b41383da83c37718386dd726f6","src/scaffolding/templates/TopLevelFunctionTemplate.rs":"35eaefb0862f25ff683d58fb0be6ad5f74bbe2fc85047273200c3a5f4c728434","src/scaffolding/templates/macros.rs":"a41c9690d411074c59fc4609f897431669b9d939625a08f5304a71a88901ba7c","src/scaffolding/templates/scaffolding_template.rs":"3589f8e8e1f9b194ff4a6245665d3a421c771dec3cc947c4264bfcd34573550e"},"package":"5d46080a4840abccf7c0cce21931dae53215cbd7dd969b5e63c486235ce91a2a"}
-\ No newline at end of file
-diff --git a/third_party/rust/uniffi_bindgen/Cargo.lock b/third_party/rust/uniffi_bindgen/Cargo.lock
---- a/third_party/rust/uniffi_bindgen/Cargo.lock
-+++ b/third_party/rust/uniffi_bindgen/Cargo.lock
-@@ -2,13 +2,13 @@
- # It is not intended for manual editing.
- version = 3
-
- [[package]]
- name = "anyhow"
--version = "1.0.65"
-+version = "1.0.66"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "98161a4e3e2184da77bb14f02184cdd111e83bbbcc9979dfee3c44b9a85f5602"
-+checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6"
-
- [[package]]
- name = "askama"
- version = "0.11.1"
- source = "registry+https://github.com/rust-lang/crates.io-index"
-@@ -97,13 +97,13 @@
- source = "registry+https://github.com/rust-lang/crates.io-index"
- checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
-
- [[package]]
- name = "clap"
--version = "3.2.22"
-+version = "3.2.23"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "86447ad904c7fb335a790c9d7fe3d0d971dc523b8ccd1561a520de9a85302750"
-+checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5"
- dependencies = [
- "atty",
- "bitflags",
- "clap_derive",
- "clap_lex",
-@@ -136,13 +136,13 @@
- "os_str_bytes",
- ]
-
- [[package]]
- name = "fs-err"
--version = "2.8.1"
-+version = "2.9.0"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "64db3e262960f0662f43a6366788d5f10f7f244b8f7d7d987f560baf5ded5c50"
-+checksum = "0845fa252299212f0389d64ba26f34fa32cfe41588355f21ed507c59a0f64541"
-
- [[package]]
- name = "goblin"
- version = "0.5.4"
- source = "registry+https://github.com/rust-lang/crates.io-index"
-@@ -174,13 +174,13 @@
- "libc",
- ]
-
- [[package]]
- name = "indexmap"
--version = "1.9.1"
-+version = "1.9.2"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e"
-+checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
- dependencies = [
- "autocfg",
- "hashbrown",
- ]
-
-@@ -190,13 +190,13 @@
- source = "registry+https://github.com/rust-lang/crates.io-index"
- checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc"
-
- [[package]]
- name = "libc"
--version = "0.2.135"
-+version = "0.2.138"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "68783febc7782c6c5cb401fbda4de5a9898be1762314da0bb2c10ced61f18b0c"
-+checksum = "db6d7e329c562c5dfab7a46a2afabc8b987ab9a4834c9d1ca04dc54c1546cef8"
-
- [[package]]
- name = "log"
- version = "0.4.17"
- source = "registry+https://github.com/rust-lang/crates.io-index"
-@@ -243,25 +243,25 @@
- "minimal-lexical",
- ]
-
- [[package]]
- name = "once_cell"
--version = "1.15.0"
-+version = "1.16.0"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1"
-+checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860"
-
- [[package]]
- name = "os_str_bytes"
--version = "6.3.0"
-+version = "6.4.1"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "9ff7415e9ae3fff1225851df9e0d9e4e5479f947619774677a63572e55e80eff"
-+checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee"
-
- [[package]]
- name = "paste"
--version = "1.0.9"
-+version = "1.0.10"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "b1de2e551fb905ac83f73f7aedf2f0cb4a0da7e35efa24a202a936269f1f18e1"
-+checksum = "cf1c2c742266c2f1041c914ba65355a83ae8747b05f208319784083583494b4b"
-
- [[package]]
- name = "plain"
- version = "0.2.3"
- source = "registry+https://github.com/rust-lang/crates.io-index"
-@@ -291,13 +291,13 @@
- "version_check",
- ]
-
- [[package]]
- name = "proc-macro2"
--version = "1.0.46"
-+version = "1.0.47"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "94e2ef8dbfc347b10c094890f778ee2e36ca9bb4262e86dc99cd217e35f3470b"
-+checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725"
- dependencies = [
- "unicode-ident",
- ]
-
- [[package]]
-@@ -335,50 +335,56 @@
- "syn",
- ]
-
- [[package]]
- name = "serde"
--version = "1.0.145"
-+version = "1.0.150"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "728eb6351430bccb993660dfffc5a72f91ccc1295abaa8ce19b27ebe4f75568b"
-+checksum = "e326c9ec8042f1b5da33252c8a37e9ffbd2c9bef0155215b6e6c80c790e05f91"
- dependencies = [
- "serde_derive",
- ]
-
- [[package]]
- name = "serde_derive"
--version = "1.0.145"
-+version = "1.0.150"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "81fa1584d3d1bcacd84c277a0dfe21f5b0f6accf4a23d04d4c6d61f1af522b4c"
-+checksum = "42a3df25b0713732468deadad63ab9da1f1fd75a48a15024b50363f128db627e"
- dependencies = [
- "proc-macro2",
- "quote",
- "syn",
- ]
-
- [[package]]
- name = "serde_json"
--version = "1.0.86"
-+version = "1.0.89"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "41feea4228a6f1cd09ec7a3593a682276702cd67b5273544757dae23c096f074"
-+checksum = "020ff22c755c2ed3f8cf162dbb41a7268d934702f3ed3631656ea597e08fc3db"
- dependencies = [
- "itoa",
- "ryu",
- "serde",
- ]
-
- [[package]]
-+name = "siphasher"
-+version = "0.3.10"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de"
-+
-+[[package]]
- name = "strsim"
- version = "0.10.0"
- source = "registry+https://github.com/rust-lang/crates.io-index"
- checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
-
- [[package]]
- name = "syn"
--version = "1.0.102"
-+version = "1.0.105"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "3fcd952facd492f9be3ef0d0b7032a6e442ee9b361d4acc2b1d0c4aaa5f613a1"
-+checksum = "60b9b43d45702de4c839cb9b51d9f529c5dd26a4aff255b42b1ebc03e88ee908"
- dependencies = [
- "proc-macro2",
- "quote",
- "unicode-ident",
- ]
-@@ -392,19 +398,19 @@
- "winapi-util",
- ]
-
- [[package]]
- name = "textwrap"
--version = "0.15.1"
-+version = "0.16.0"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "949517c0cf1bf4ee812e2e07e08ab448e3ae0d23472aee8a06c985f0c8815b16"
-+checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
-
- [[package]]
- name = "toml"
--version = "0.5.9"
-+version = "0.5.10"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7"
-+checksum = "1333c76748e868a4d9d1017b5ab53171dfd095f70c712fdb4653a406547f598f"
- dependencies = [
- "serde",
- ]
-
- [[package]]
-@@ -422,11 +428,11 @@
- source = "registry+https://github.com/rust-lang/crates.io-index"
- checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3"
-
- [[package]]
- name = "uniffi_bindgen"
--version = "0.21.0"
-+version = "0.21.1"
- dependencies = [
- "anyhow",
- "askama",
- "bincode",
- "camino",
-@@ -442,16 +448,28 @@
- "uniffi_meta",
- "weedle2",
- ]
-
- [[package]]
-+name = "uniffi_checksum_derive"
-+version = "0.21.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "78b6e16d46caf942016997af8bbdf4b163bf8ae3deb0b667d9643de7b7ffd4c9"
-+dependencies = [
-+ "quote",
-+ "syn",
-+]
-+
-+[[package]]
- name = "uniffi_meta"
--version = "0.21.0"
-+version = "0.21.1"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "cd9417cc653937681436b93838d8c5f97a5b8c58697813982ee8810bd1dc3b57"
-+checksum = "729835442da829c9b6f7c111c76cf87b2498e129101203bec94f0c39a3296a38"
- dependencies = [
- "serde",
-+ "siphasher",
-+ "uniffi_checksum_derive",
- ]
-
- [[package]]
- name = "version_check"
- version = "0.9.4"
-diff --git a/third_party/rust/uniffi_bindgen/Cargo.toml b/third_party/rust/uniffi_bindgen/Cargo.toml
---- a/third_party/rust/uniffi_bindgen/Cargo.toml
-+++ b/third_party/rust/uniffi_bindgen/Cargo.toml
-@@ -10,22 +10,21 @@
- # See Cargo.toml.orig for the original contents.
-
- [package]
- edition = "2021"
- name = "uniffi_bindgen"
--version = "0.21.0"
-+version = "0.21.1"
- authors = ["Firefox Sync Team <sync-team(a)mozilla.com>"]
- description = "a multi-language bindings generator for rust (codegen and cli tooling)"
- homepage = "https://mozilla.github.io/uniffi-rs"
- documentation = "https://mozilla.github.io/uniffi-rs"
- keywords = [
- "ffi",
- "bindgen",
- ]
- license = "MPL-2.0"
- repository = "https://github.com/mozilla/uniffi-rs"
--resolver = "2"
-
- [[bin]]
- name = "uniffi-bindgen"
- path = "src/main.rs"
-
-@@ -74,9 +73,9 @@
-
- [dependencies.toml]
- version = "0.5"
-
- [dependencies.uniffi_meta]
--version = "=0.21.0"
-+version = "=0.21.1"
-
- [dependencies.weedle2]
- version = "4.0.0"
-diff --git a/third_party/rust/uniffi_bindgen/src/interface/attributes.rs b/third_party/rust/uniffi_bindgen/src/interface/attributes.rs
---- a/third_party/rust/uniffi_bindgen/src/interface/attributes.rs
-+++ b/third_party/rust/uniffi_bindgen/src/interface/attributes.rs
-@@ -13,17 +13,18 @@
- //! We only support a small number of attributes, so it's manageable to have them
- //! all handled by a single abstraction. This might need to be refactored in future
- //! if we grow significantly more complicated attribute handling.
-
- use anyhow::{bail, Result};
-+use uniffi_meta::Checksum;
-
- /// Represents an attribute parsed from UDL, like `[ByRef]` or `[Throws]`.
- ///
- /// This is a convenience enum for parsing UDL attributes and erroring out if we encounter
- /// any unsupported ones. These don't convert directly into parts of a `ComponentInterface`, but
- /// may influence the properties of things like functions and arguments.
--#[derive(Debug, Clone, Hash)]
-+#[derive(Debug, Clone, Checksum)]
- pub(super) enum Attribute {
- ByRef,
- Enum,
- Error,
- Name(String),
-@@ -117,11 +118,11 @@
- Ok(attrs)
- }
-
- /// Attributes that can be attached to an `enum` definition in the UDL.
- /// There's only one case here: using `[Error]` to mark an enum as an error class.
--#[derive(Debug, Clone, Hash, Default)]
-+#[derive(Debug, Clone, Checksum, Default)]
- pub(super) struct EnumAttributes(Vec<Attribute>);
-
- impl EnumAttributes {
- pub fn contains_error_attr(&self) -> bool {
- self.0.iter().any(|attr| attr.is_error())
-@@ -153,11 +154,11 @@
-
- /// Represents UDL attributes that might appear on a function.
- ///
- /// This supports the `[Throws=ErrorName]` attribute for functions that
- /// can produce an error.
--#[derive(Debug, Clone, Hash, Default)]
-+#[derive(Debug, Clone, Checksum, Default)]
- pub(super) struct FunctionAttributes(Vec<Attribute>);
-
- impl FunctionAttributes {
- pub(super) fn get_throws_err(&self) -> Option<&str> {
- self.0.iter().find_map(|attr| match attr {
-@@ -196,11 +197,11 @@
-
- /// Represents UDL attributes that might appear on a function argument.
- ///
- /// This supports the `[ByRef]` attribute for arguments that should be passed
- /// by reference in the generated Rust scaffolding.
--#[derive(Debug, Clone, Hash, Default)]
-+#[derive(Debug, Clone, Checksum, Default)]
- pub(super) struct ArgumentAttributes(Vec<Attribute>);
-
- impl ArgumentAttributes {
- pub fn by_ref(&self) -> bool {
- self.0.iter().any(|attr| matches!(attr, Attribute::ByRef))
-@@ -231,11 +232,11 @@
- }
- }
- }
-
- /// Represents UDL attributes that might appear on an `interface` definition.
--#[derive(Debug, Clone, Hash, Default)]
-+#[derive(Debug, Clone, Checksum, Default)]
- pub(super) struct InterfaceAttributes(Vec<Attribute>);
-
- impl InterfaceAttributes {
- pub fn contains_enum_attr(&self) -> bool {
- self.0.iter().any(|attr| attr.is_enum())
-@@ -285,11 +286,11 @@
-
- /// Represents UDL attributes that might appear on a constructor.
- ///
- /// This supports the `[Throws=ErrorName]` attribute for constructors that can produce
- /// an error, and the `[Name=MethodName]` for non-default constructors.
--#[derive(Debug, Clone, Hash, Default)]
-+#[derive(Debug, Clone, Checksum, Default)]
- pub(super) struct ConstructorAttributes(Vec<Attribute>);
-
- impl ConstructorAttributes {
- pub(super) fn get_throws_err(&self) -> Option<&str> {
- self.0.iter().find_map(|attr| match attr {
-@@ -324,11 +325,11 @@
-
- /// Represents UDL attributes that might appear on a method.
- ///
- /// This supports the `[Throws=ErrorName]` attribute for methods that can produce
- /// an error, and the `[Self=ByArc]` attribute for methods that take `Arc<Self>` as receiver.
--#[derive(Debug, Clone, Hash, Default)]
-+#[derive(Debug, Clone, Checksum, Default)]
- pub(super) struct MethodAttributes(Vec<Attribute>);
-
- impl MethodAttributes {
- pub(super) fn get_throws_err(&self) -> Option<&str> {
- self.0.iter().find_map(|attr| match attr {
-@@ -373,11 +374,11 @@
- /// Represents the different possible types of method call receiver.
- ///
- /// Actually we only support one of these right now, `[Self=ByArc]`.
- /// We might add more in future, e.g. a `[Self=ByRef]` if there are cases
- /// where we need to force the receiver to be taken by reference.
--#[derive(Debug, Clone, Hash)]
-+#[derive(Debug, Clone, Checksum)]
- pub(super) enum SelfType {
- ByArc, // Method receiver is `Arc<Self>`.
- }
-
- impl TryFrom<&weedle::attribute::IdentifierOrString<'_>> for SelfType {
-@@ -396,11 +397,11 @@
- }
-
- /// Represents UDL attributes that might appear on a typedef
- ///
- /// This supports the `[External="crate_name"]` and `[Custom]` attributes for types.
--#[derive(Debug, Clone, Hash, Default)]
-+#[derive(Debug, Clone, Checksum, Default)]
- pub(super) struct TypedefAttributes(Vec<Attribute>);
-
- impl TypedefAttributes {
- pub(super) fn get_crate_name(&self) -> String {
- self.0
-diff --git a/third_party/rust/uniffi_bindgen/src/interface/callbacks.rs b/third_party/rust/uniffi_bindgen/src/interface/callbacks.rs
---- a/third_party/rust/uniffi_bindgen/src/interface/callbacks.rs
-+++ b/third_party/rust/uniffi_bindgen/src/interface/callbacks.rs
-@@ -31,23 +31,29 @@
- //! assert_eq!(callback.name(), "Example");
- //! assert_eq!(callback.methods()[0].name(), "hello");
- //! # Ok::<(), anyhow::Error>(())
- //! ```
-
--use std::hash::{Hash, Hasher};
--
- use anyhow::{bail, Result};
-+use uniffi_meta::Checksum;
-
- use super::ffi::{FFIArgument, FFIFunction, FFIType};
- use super::object::Method;
- use super::types::{Type, TypeIterator};
- use super::{APIConverter, ComponentInterface};
-
--#[derive(Debug, Clone)]
-+#[derive(Debug, Clone, Checksum)]
- pub struct CallbackInterface {
- pub(super) name: String,
- pub(super) methods: Vec<Method>,
-+ // We don't include the FFIFunc in the hash calculation, because:
-+ // - it is entirely determined by the other fields,
-+ // so excluding it is safe.
-+ // - its `name` property includes a checksum derived from the very
-+ // hash value we're trying to calculate here, so excluding it
-+ // avoids a weird circular depenendency in the calculation.
-+ #[checksum_ignore]
- pub(super) ffi_init_callback: FFIFunction,
- }
-
- impl CallbackInterface {
- fn new(name: String) -> CallbackInterface {
-@@ -86,23 +92,10 @@
- pub fn iter_types(&self) -> TypeIterator<'_> {
- Box::new(self.methods.iter().flat_map(Method::iter_types))
- }
- }
-
--impl Hash for CallbackInterface {
-- fn hash<H: Hasher>(&self, state: &mut H) {
-- // We don't include the FFIFunc in the hash calculation, because:
-- // - it is entirely determined by the other fields,
-- // so excluding it is safe.
-- // - its `name` property includes a checksum derived from the very
-- // hash value we're trying to calculate here, so excluding it
-- // avoids a weird circular depenendency in the calculation.
-- self.name.hash(state);
-- self.methods.hash(state);
-- }
--}
--
- impl APIConverter<CallbackInterface> for weedle::CallbackInterfaceDefinition<'_> {
- fn convert(&self, ci: &mut ComponentInterface) -> Result<CallbackInterface> {
- if self.attributes.is_some() {
- bail!("callback interface attributes are not supported yet");
- }
-diff --git a/third_party/rust/uniffi_bindgen/src/interface/enum_.rs b/third_party/rust/uniffi_bindgen/src/interface/enum_.rs
---- a/third_party/rust/uniffi_bindgen/src/interface/enum_.rs
-+++ b/third_party/rust/uniffi_bindgen/src/interface/enum_.rs
-@@ -75,21 +75,22 @@
- //! assert_eq!(e.variants()[1].fields()[0].name(), "first");
- //! # Ok::<(), anyhow::Error>(())
- //! ```
-
- use anyhow::{bail, Result};
-+use uniffi_meta::Checksum;
-
- use super::record::Field;
- use super::types::{Type, TypeIterator};
- use super::{APIConverter, ComponentInterface};
-
- /// Represents an enum with named variants, each of which may have named
- /// and typed fields.
- ///
- /// Enums are passed across the FFI by serializing to a bytebuffer, with a
- /// i32 indicating the variant followed by the serialization of each field.
--#[derive(Debug, Clone, Hash)]
-+#[derive(Debug, Clone, Checksum)]
- pub struct Enum {
- pub(super) name: String,
- pub(super) variants: Vec<Variant>,
- // "Flat" enums do not have, and will never have, variants with associated data.
- pub(super) flat: bool,
-@@ -172,11 +173,11 @@
- }
-
- /// Represents an individual variant in an Enum.
- ///
- /// Each variant has a name and zero or more fields.
--#[derive(Debug, Clone, Default, Hash)]
-+#[derive(Debug, Clone, Default, Checksum)]
- pub struct Variant {
- pub(super) name: String,
- pub(super) fields: Vec<Field>,
- }
-
-diff --git a/third_party/rust/uniffi_bindgen/src/interface/error.rs b/third_party/rust/uniffi_bindgen/src/interface/error.rs
---- a/third_party/rust/uniffi_bindgen/src/interface/error.rs
-+++ b/third_party/rust/uniffi_bindgen/src/interface/error.rs
-@@ -81,10 +81,11 @@
- //! assert_eq!(err.is_flat(), false);
- //! # Ok::<(), anyhow::Error>(())
- //! ```
-
- use anyhow::Result;
-+use uniffi_meta::Checksum;
-
- use super::enum_::{Enum, Variant};
- use super::types::{Type, TypeIterator};
- use super::{APIConverter, ComponentInterface};
-
-@@ -92,11 +93,11 @@
- ///
- /// Errors are represented in the UDL as enums with the special `[Error]` attribute, but
- /// they're handled in the FFI very differently. We create them in `uniffi::call_with_result()` if
- /// the wrapped function returns an `Err` value
- /// struct and assign an integer error code to each variant.
--#[derive(Debug, Clone, Hash)]
-+#[derive(Debug, Clone, Checksum)]
- pub struct Error {
- pub name: String,
- enum_: Enum,
- }
-
-diff --git a/third_party/rust/uniffi_bindgen/src/interface/function.rs b/third_party/rust/uniffi_bindgen/src/interface/function.rs
---- a/third_party/rust/uniffi_bindgen/src/interface/function.rs
-+++ b/third_party/rust/uniffi_bindgen/src/interface/function.rs
-@@ -30,13 +30,13 @@
- //! assert!(matches!(func.return_type(), Some(Type::String)));
- //! assert_eq!(func.arguments().len(), 0);
- //! # Ok::<(), anyhow::Error>(())
- //! ```
- use std::convert::TryFrom;
--use std::hash::{Hash, Hasher};
-
- use anyhow::{bail, Result};
-+use uniffi_meta::Checksum;
-
- use super::ffi::{FFIArgument, FFIFunction};
- use super::literal::{convert_default_value, Literal};
- use super::types::{Type, TypeIterator};
- use super::{
-@@ -49,15 +49,22 @@
- ///
- /// Each `Function` corresponds to a standalone function in the rust module,
- /// and has a corresponding standalone function in the foreign language bindings.
- ///
- /// In the FFI, this will be a standalone function with appropriately lowered types.
--#[derive(Debug, Clone)]
-+#[derive(Debug, Clone, Checksum)]
- pub struct Function {
- pub(super) name: String,
- pub(super) arguments: Vec<Argument>,
- pub(super) return_type: Option<Type>,
-+ // We don't include the FFIFunc in the hash calculation, because:
-+ // - it is entirely determined by the other fields,
-+ // so excluding it is safe.
-+ // - its `name` property includes a checksum derived from the very
-+ // hash value we're trying to calculate here, so excluding it
-+ // avoids a weird circular depenendency in the calculation.
-+ #[checksum_ignore]
- pub(super) ffi_func: FFIFunction,
- pub(super) attributes: FunctionAttributes,
- }
-
- impl Function {
-@@ -140,25 +147,10 @@
- attributes: Default::default(),
- }
- }
- }
-
--impl Hash for Function {
-- fn hash<H: Hasher>(&self, state: &mut H) {
-- // We don't include the FFIFunc in the hash calculation, because:
-- // - it is entirely determined by the other fields,
-- // so excluding it is safe.
-- // - its `name` property includes a checksum derived from the very
-- // hash value we're trying to calculate here, so excluding it
-- // avoids a weird circular depenendency in the calculation.
-- self.name.hash(state);
-- self.arguments.hash(state);
-- self.return_type.hash(state);
-- self.attributes.hash(state);
-- }
--}
--
- impl APIConverter<Function> for weedle::namespace::NamespaceMember<'_> {
- fn convert(&self, ci: &mut ComponentInterface) -> Result<Function> {
- match self {
- weedle::namespace::NamespaceMember::Operation(f) => f.convert(ci),
- _ => bail!("no support for namespace member type {:?} yet", self),
-@@ -183,11 +175,11 @@
- }
-
- /// Represents an argument to a function/constructor/method call.
- ///
- /// Each argument has a name and a type, along with some optional metadata.
--#[derive(Debug, Clone, Hash)]
-+#[derive(Debug, Clone, Checksum)]
- pub struct Argument {
- pub(super) name: String,
- pub(super) type_: Type,
- pub(super) by_ref: bool,
- pub(super) optional: bool,
-diff --git a/third_party/rust/uniffi_bindgen/src/interface/literal.rs b/third_party/rust/uniffi_bindgen/src/interface/literal.rs
---- a/third_party/rust/uniffi_bindgen/src/interface/literal.rs
-+++ b/third_party/rust/uniffi_bindgen/src/interface/literal.rs
-@@ -6,16 +6,17 @@
- //!
- //! This module provides support for interpreting literal values from the UDL,
- //! which appear in places such as default arguments.
-
- use anyhow::{bail, Result};
-+use uniffi_meta::Checksum;
-
- use super::types::Type;
-
- // Represents a literal value.
- // Used for e.g. default argument values.
--#[derive(Debug, Clone, Hash)]
-+#[derive(Debug, Clone, Checksum)]
- pub enum Literal {
- Boolean(bool),
- String(String),
- // Integers are represented as the widest representation we can.
- // Number formatting vary with language and radix, so we avoid a lot of parsing and
-@@ -33,11 +34,11 @@
- Null,
- }
-
- // Represent the radix of integer literal values.
- // We preserve the radix into the generated bindings for readability reasons.
--#[derive(Debug, Clone, Copy, Hash)]
-+#[derive(Debug, Clone, Copy, Checksum)]
- pub enum Radix {
- Decimal = 10,
- Octal = 8,
- Hexadecimal = 16,
- }
-diff --git a/third_party/rust/uniffi_bindgen/src/interface/mod.rs b/third_party/rust/uniffi_bindgen/src/interface/mod.rs
---- a/third_party/rust/uniffi_bindgen/src/interface/mod.rs
-+++ b/third_party/rust/uniffi_bindgen/src/interface/mod.rs
-@@ -42,16 +42,11 @@
- //! a good opportunity here for e.g. interned strings, but we're nowhere near the point were we need
- //! that kind of optimization just yet.
- //!
- //! * Error messages and general developer experience leave a lot to be desired.
-
--use std::{
-- collections::HashSet,
-- convert::TryFrom,
-- hash::{Hash, Hasher},
-- iter,
--};
-+use std::{collections::HashSet, convert::TryFrom, iter};
-
- use anyhow::{bail, Result};
-
- pub mod types;
- pub use types::Type;
-@@ -75,26 +70,30 @@
- mod record;
- pub use record::{Field, Record};
-
- pub mod ffi;
- pub use ffi::{FFIArgument, FFIFunction, FFIType};
--use uniffi_meta::{MethodMetadata, ObjectMetadata};
-+use uniffi_meta::{Checksum, MethodMetadata, ObjectMetadata};
-
- /// The main public interface for this module, representing the complete details of an interface exposed
- /// by a rust component and the details of consuming it via an extern-C FFI layer.
- ///
--#[derive(Debug, Default)]
-+#[derive(Debug, Default, Checksum)]
- pub struct ComponentInterface {
- /// Every ComponentInterface gets tagged with the version of uniffi used to create it.
- /// This helps us avoid using a lib compiled with one version together with bindings created
- /// using a different version, which might introduce unsafety.
- uniffi_version: String,
- /// All of the types used in the interface.
-+ // We can't checksum `self.types`, but its contents are implied by the other fields
-+ // anyway, so it's safe to ignore it.
-+ #[checksum_ignore]
- pub(super) types: TypeUniverse,
- /// The unique prefix that we'll use for namespacing when exposing this component's API.
- namespace: String,
- /// The internal unique prefix used to namespace FFI symbols
-+ #[checksum_ignore]
- ffi_namespace: String,
- /// The high-level API provided by the component.
- enums: Vec<Enum>,
- records: Vec<Record>,
- functions: Vec<Function>,
-@@ -105,11 +104,11 @@
-
- impl ComponentInterface {
- /// Parse a `ComponentInterface` from a string containing a WebIDL definition.
- pub fn from_webidl(idl: &str) -> Result<Self> {
- let mut ci = Self {
-- uniffi_version: env!("CARGO_PKG_VERSION").to_string(),
-+ uniffi_version: "0.21.0".to_string(),
- ..Default::default()
- };
- // There's some lifetime thing with the errors returned from weedle::Definitions::parse
- // that my own lifetime is too short to worry about figuring out; unwrap and move on.
-
-@@ -319,20 +318,12 @@
- /// and the same version of Rust, will always have the same checksum value.
- /// - Two ComponentInterfaces will, with high probability, have different checksum values if:
- /// - They were generated from two different WebIDL files.
- /// - They were generated by two different versions of uniffi
- ///
-- /// The checksum may or may not change depending on the version of Rust used; since we expect
-- /// consumers to be using the same executable to generate both the scaffolding and the bindings,
-- /// assuming the same version of Rust seems acceptable.
-- ///
- /// Note that this is designed to prevent accidents, not attacks, so there is no need for the
- /// checksum to be cryptographically secure.
-- ///
-- /// TODO: it's not clear to me if the derivation of `Hash` is actually deterministic enough to
-- /// ensure the guarantees above, or if it might be sensitive to e.g. compiler-driven re-ordering
-- /// of struct field. Let's see how it goes...
- pub fn checksum(&self) -> u16 {
- uniffi_meta::checksum(self)
- }
-
- /// The namespace to use in FFI-level function definitions.
-@@ -670,27 +661,10 @@
- }
- Ok(())
- }
- }
-
--/// `ComponentInterface` structs can be hashed, but this is mostly a convenient way to
--/// produce a checksum of their contents. They're not really intended to live in a hashtable.
--impl Hash for ComponentInterface {
-- fn hash<H: Hasher>(&self, state: &mut H) {
-- // We can't hash `self.types`, but its contents are implied by the other fields
-- // anyway, so it's safe to ignore it.
-- self.uniffi_version.hash(state);
-- self.namespace.hash(state);
-- self.enums.hash(state);
-- self.records.hash(state);
-- self.functions.hash(state);
-- self.objects.hash(state);
-- self.callback_interfaces.hash(state);
-- self.errors.hash(state);
-- }
--}
--
- fn get_or_insert_object<'a>(objects: &'a mut Vec<Object>, name: &str) -> &'a mut Object {
- // The find-based way of writing this currently runs into a borrow checker
- // error, so we use position
- match objects.iter_mut().position(|o| o.name == name) {
- Some(idx) => &mut objects[idx],
-diff --git a/third_party/rust/uniffi_bindgen/src/interface/object.rs b/third_party/rust/uniffi_bindgen/src/interface/object.rs
---- a/third_party/rust/uniffi_bindgen/src/interface/object.rs
-+++ b/third_party/rust/uniffi_bindgen/src/interface/object.rs
-@@ -56,14 +56,14 @@
- //! assert_eq!(obj.constructors().len(), 0);
- //! # Ok::<(), anyhow::Error>(())
- //! ```
-
- use std::convert::TryFrom;
--use std::hash::{Hash, Hasher};
- use std::{collections::HashSet, iter};
-
- use anyhow::{bail, Result};
-+use uniffi_meta::Checksum;
-
- use super::ffi::{FFIArgument, FFIFunction, FFIType};
- use super::function::Argument;
- use super::types::{Type, TypeIterator};
- use super::{
-@@ -84,16 +84,24 @@
- /// binding code is expected to stitch these functions back together into an appropriate class
- /// definition (or that language's equivalent thereof).
- ///
- /// TODO:
- /// - maybe "Class" would be a better name than "Object" here?
--#[derive(Debug, Clone)]
-+#[derive(Debug, Clone, Checksum)]
- pub struct Object {
- pub(super) name: String,
- pub(super) constructors: Vec<Constructor>,
- pub(super) methods: Vec<Method>,
-+ // We don't include the FFIFunc in the hash calculation, because:
-+ // - it is entirely determined by the other fields,
-+ // so excluding it is safe.
-+ // - its `name` property includes a checksum derived from the very
-+ // hash value we're trying to calculate here, so excluding it
-+ // avoids a weird circular depenendency in the calculation.
-+ #[checksum_ignore]
- pub(super) ffi_func_free: FFIFunction,
-+ #[checksum_ignore]
- pub(super) uses_deprecated_threadsafe_attribute: bool,
- }
-
- impl Object {
- pub(super) fn new(name: String) -> Object {
-@@ -188,24 +196,10 @@
- .flatten(),
- )
- }
- }
-
--impl Hash for Object {
-- fn hash<H: Hasher>(&self, state: &mut H) {
-- // We don't include the FFIFunc in the hash calculation, because:
-- // - it is entirely determined by the other fields,
-- // so excluding it is safe.
-- // - its `name` property includes a checksum derived from the very
-- // hash value we're trying to calculate here, so excluding it
-- // avoids a weird circular depenendency in the calculation.
-- self.name.hash(state);
-- self.constructors.hash(state);
-- self.methods.hash(state);
-- }
--}
--
- impl APIConverter<Object> for weedle::InterfaceDefinition<'_> {
- fn convert(&self, ci: &mut ComponentInterface) -> Result<Object> {
- if self.inheritance.is_some() {
- bail!("interface inheritence is not supported");
- }
-@@ -243,14 +237,21 @@
-
- // Represents a constructor for an object type.
- //
- // In the FFI, this will be a function that returns a pointer to an instance
- // of the corresponding object type.
--#[derive(Debug, Clone)]
-+#[derive(Debug, Clone, Checksum)]
- pub struct Constructor {
- pub(super) name: String,
- pub(super) arguments: Vec<Argument>,
-+ // We don't include the FFIFunc in the hash calculation, because:
-+ // - it is entirely determined by the other fields,
-+ // so excluding it is safe.
-+ // - its `name` property includes a checksum derived from the very
-+ // hash value we're trying to calculate here, so excluding it
-+ // avoids a weird circular depenendency in the calculation.
-+ #[checksum_ignore]
- pub(super) ffi_func: FFIFunction,
- pub(super) attributes: ConstructorAttributes,
- }
-
- impl Constructor {
-@@ -297,24 +298,10 @@
- pub fn iter_types(&self) -> TypeIterator<'_> {
- Box::new(self.arguments.iter().flat_map(Argument::iter_types))
- }
- }
-
--impl Hash for Constructor {
-- fn hash<H: Hasher>(&self, state: &mut H) {
-- // We don't include the FFIFunc in the hash calculation, because:
-- // - it is entirely determined by the other fields,
-- // so excluding it is safe.
-- // - its `name` property includes a checksum derived from the very
-- // hash value we're trying to calculate here, so excluding it
-- // avoids a weird circular depenendency in the calculation.
-- self.name.hash(state);
-- self.arguments.hash(state);
-- self.attributes.hash(state);
-- }
--}
--
- impl Default for Constructor {
- fn default() -> Self {
- Constructor {
- name: String::from("new"),
- arguments: Vec::new(),
-@@ -341,16 +328,23 @@
-
- // Represents an instance method for an object type.
- //
- // The FFI will represent this as a function whose first/self argument is a
- // `FFIType::RustArcPtr` to the instance.
--#[derive(Debug, Clone)]
-+#[derive(Debug, Clone, Checksum)]
- pub struct Method {
- pub(super) name: String,
- pub(super) object_name: String,
-+ pub(super) arguments: Vec<Argument>,
- pub(super) return_type: Option<Type>,
-- pub(super) arguments: Vec<Argument>,
-+ // We don't include the FFIFunc in the hash calculation, because:
-+ // - it is entirely determined by the other fields,
-+ // so excluding it is safe.
-+ // - its `name` property includes a checksum derived from the very
-+ // hash value we're trying to calculate here, so excluding it
-+ // avoids a weird circular depenendency in the calculation.
-+ #[checksum_ignore]
- pub(super) ffi_func: FFIFunction,
- pub(super) attributes: MethodAttributes,
- }
-
- impl Method {
-@@ -448,26 +442,10 @@
- attributes: Default::default(),
- }
- }
- }
-
--impl Hash for Method {
-- fn hash<H: Hasher>(&self, state: &mut H) {
-- // We don't include the FFIFunc in the hash calculation, because:
-- // - it is entirely determined by the other fields,
-- // so excluding it is safe.
-- // - its `name` property includes a checksum derived from the very
-- // hash value we're trying to calculate here, so excluding it
-- // avoids a weird circular depenendency in the calculation.
-- self.name.hash(state);
-- self.object_name.hash(state);
-- self.arguments.hash(state);
-- self.return_type.hash(state);
-- self.attributes.hash(state);
-- }
--}
--
- impl APIConverter<Method> for weedle::interface::OperationInterfaceMember<'_> {
- fn convert(&self, ci: &mut ComponentInterface) -> Result<Method> {
- if self.special.is_some() {
- bail!("special operations not supported");
- }
-diff --git a/third_party/rust/uniffi_bindgen/src/interface/record.rs b/third_party/rust/uniffi_bindgen/src/interface/record.rs
---- a/third_party/rust/uniffi_bindgen/src/interface/record.rs
-+++ b/third_party/rust/uniffi_bindgen/src/interface/record.rs
-@@ -43,10 +43,11 @@
- //! assert_eq!(record.fields()[1].name(), "value");
- //! # Ok::<(), anyhow::Error>(())
- //! ```
-
- use anyhow::{bail, Result};
-+use uniffi_meta::Checksum;
-
- use super::types::{Type, TypeIterator};
- use super::{
- convert_type,
- literal::{convert_default_value, Literal},
-@@ -56,11 +57,11 @@
- /// Represents a "data class" style object, for passing around complex values.
- ///
- /// In the FFI these are represented as a byte buffer, which one side explicitly
- /// serializes the data into and the other serializes it out of. So I guess they're
- /// kind of like "pass by clone" values.
--#[derive(Debug, Clone, Hash)]
-+#[derive(Debug, Clone, Checksum)]
- pub struct Record {
- pub(super) name: String,
- pub(super) fields: Vec<Field>,
- }
-
-@@ -107,11 +108,11 @@
- })
- }
- }
-
- // Represents an individual field on a Record.
--#[derive(Debug, Clone, Hash)]
-+#[derive(Debug, Clone, Checksum)]
- pub struct Field {
- pub(super) name: String,
- pub(super) type_: Type,
- pub(super) required: bool,
- pub(super) default: Option<Literal>,
-diff --git a/third_party/rust/uniffi_bindgen/src/interface/types/mod.rs b/third_party/rust/uniffi_bindgen/src/interface/types/mod.rs
---- a/third_party/rust/uniffi_bindgen/src/interface/types/mod.rs
-+++ b/third_party/rust/uniffi_bindgen/src/interface/types/mod.rs
-@@ -23,10 +23,11 @@
-
- use std::{collections::hash_map::Entry, collections::BTreeSet, collections::HashMap, iter};
-
- use anyhow::{bail, Result};
- use heck::ToUpperCamelCase;
-+use uniffi_meta::Checksum;
-
- use super::ffi::FFIType;
-
- mod finder;
- pub(super) use finder::TypeFinder;
-@@ -34,11 +35,11 @@
- pub(super) use resolver::{resolve_builtin_type, TypeResolver};
-
- /// Represents all the different high-level types that can be used in a component interface.
- /// At this level we identify user-defined types by name, without knowing any details
- /// of their internal structure apart from what type of thing they are (record, enum, etc).
--#[derive(Debug, Clone, Eq, PartialEq, Hash, Ord, PartialOrd)]
-+#[derive(Debug, Clone, Eq, PartialEq, Checksum, Ord, PartialOrd)]
- pub enum Type {
- // Primitive types.
- UInt8,
- Int8,
- UInt16,
-diff --git a/third_party/rust/uniffi_build/.cargo-checksum.json b/third_party/rust/uniffi_build/.cargo-checksum.json
---- a/third_party/rust/uniffi_build/.cargo-checksum.json
-+++ b/third_party/rust/uniffi_build/.cargo-checksum.json
-@@ -1 +1 @@
--{"files":{"Cargo.toml":"bf9105f53978ecdccad9a75fc3645f97982d3c4162a5a9b49ab16554162b51c1","src/lib.rs":"485a0c0ab99077a1d4037f4deec9801e87a248196e7589a002556fb84973528a"},"package":"510287c368a9386eb731ebe824a6fc6c82a105e20d020af1aa20519c1c1561db"}
-\ No newline at end of file
-+{"files":{"Cargo.toml":"30736876caf953bd0040b6c0fc824744556bf52fe23d656c7d01442d4c180674","src/lib.rs":"485a0c0ab99077a1d4037f4deec9801e87a248196e7589a002556fb84973528a"},"package":"d035e50433ee3d52ab0dcdcf3b9b26f2cc2ec39294b3c07d95865a518709455f"}
-\ No newline at end of file
-diff --git a/third_party/rust/uniffi_build/Cargo.toml b/third_party/rust/uniffi_build/Cargo.toml
---- a/third_party/rust/uniffi_build/Cargo.toml
-+++ b/third_party/rust/uniffi_build/Cargo.toml
-@@ -10,31 +10,30 @@
- # See Cargo.toml.orig for the original contents.
-
- [package]
- edition = "2021"
- name = "uniffi_build"
--version = "0.21.0"
-+version = "0.21.1"
- authors = ["Firefox Sync Team <sync-team(a)mozilla.com>"]
- description = "a multi-language bindings generator for rust (build script helpers)"
- homepage = "https://mozilla.github.io/uniffi-rs"
- documentation = "https://mozilla.github.io/uniffi-rs"
- keywords = [
- "ffi",
- "bindgen",
- ]
- license = "MPL-2.0"
- repository = "https://github.com/mozilla/uniffi-rs"
--resolver = "2"
-
- [dependencies.anyhow]
- version = "1"
-
- [dependencies.camino]
- version = "1.0.8"
-
- [dependencies.uniffi_bindgen]
--version = "=0.21.0"
-+version = "=0.21.1"
- optional = true
-
- [features]
- builtin-bindgen = ["uniffi_bindgen"]
- default = []
-diff --git a/third_party/rust/uniffi_checksum_derive/.cargo-checksum.json b/third_party/rust/uniffi_checksum_derive/.cargo-checksum.json
-new file mode 100644
---- /dev/null
-+++ b/third_party/rust/uniffi_checksum_derive/.cargo-checksum.json
-@@ -0,0 +1 @@
-+{"files":{"Cargo.toml":"2ab3c60724c4c504297f8876bf0a8d1291f76a2fc46f5e83634aa147e89ffc71","src/lib.rs":"c68c69a1cf6a69e5fe78f7b069364a265c5bb6ce8c0abf0b5745eca01c79604a"},"package":"78b6e16d46caf942016997af8bbdf4b163bf8ae3deb0b667d9643de7b7ffd4c9"}
-\ No newline at end of file
-diff --git a/third_party/rust/uniffi_checksum_derive/Cargo.toml b/third_party/rust/uniffi_checksum_derive/Cargo.toml
-new file mode 100644
---- /dev/null
-+++ b/third_party/rust/uniffi_checksum_derive/Cargo.toml
-@@ -0,0 +1,42 @@
-+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
-+#
-+# When uploading crates to the registry Cargo will automatically
-+# "normalize" Cargo.toml files for maximal compatibility
-+# with all versions of Cargo and also rewrite `path` dependencies
-+# to registry (e.g., crates.io) dependencies.
-+#
-+# If you are reading this file be aware that the original Cargo.toml
-+# will likely look very different (and much more reasonable).
-+# See Cargo.toml.orig for the original contents.
-+
-+[package]
-+edition = "2021"
-+name = "uniffi_checksum_derive"
-+version = "0.21.1"
-+authors = ["Firefox Sync Team <sync-team(a)mozilla.com>"]
-+description = "a multi-language bindings generator for rust (checksum custom derive)"
-+homepage = "https://mozilla.github.io/uniffi-rs"
-+documentation = "https://mozilla.github.io/uniffi-rs"
-+keywords = [
-+ "ffi",
-+ "bindgen",
-+]
-+license = "MPL-2.0"
-+repository = "https://github.com/mozilla/uniffi-rs"
-+
-+[lib]
-+proc-macro = true
-+
-+[dependencies.quote]
-+version = "1.0"
-+
-+[dependencies.syn]
-+version = "1.0"
-+features = [
-+ "derive",
-+ "parsing",
-+]
-+
-+[features]
-+default = []
-+nightly = []
-diff --git a/third_party/rust/uniffi_checksum_derive/src/lib.rs b/third_party/rust/uniffi_checksum_derive/src/lib.rs
-new file mode 100644
---- /dev/null
-+++ b/third_party/rust/uniffi_checksum_derive/src/lib.rs
-@@ -0,0 +1,134 @@
-+/* This Source Code Form is subject to the terms of the Mozilla Public
-+ * License, v. 2.0. If a copy of the MPL was not distributed with this
-+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-+#![cfg_attr(feature = "nightly", feature(proc_macro_expand))]
-+
-+//! Custom derive for uniffi_meta::Checksum
-+
-+use proc_macro::TokenStream;
-+use quote::{format_ident, quote};
-+use syn::{parse_macro_input, Attribute, Data, DeriveInput, Expr, ExprLit, Fields, Index, Lit};
-+
-+fn has_ignore_attribute(attrs: &[Attribute]) -> bool {
-+ attrs.iter().any(|attr| {
-+ if attr.path.is_ident("checksum_ignore") {
-+ if !attr.tokens.is_empty() {
-+ panic!("#[checksum_ignore] doesn't accept extra information");
-+ }
-+ true
-+ } else {
-+ false
-+ }
-+ })
-+}
-+
-+#[proc_macro_derive(Checksum, attributes(checksum_ignore))]
-+pub fn checksum_derive(input: TokenStream) -> TokenStream {
-+ let input: DeriveInput = parse_macro_input!(input);
-+
-+ let name = input.ident;
-+
-+ let (impl_generics, ty_generics, where_clause) = input.generics.split_for_impl();
-+
-+ let code = match input.data {
-+ Data::Enum(enum_)
-+ if enum_.variants.len() == 1
-+ && enum_
-+ .variants
-+ .iter()
-+ .all(|variant| matches!(variant.fields, Fields::Unit)) =>
-+ {
-+ quote!()
-+ }
-+ Data::Enum(enum_) => {
-+ let mut next_discriminant = 0u64;
-+ let match_inner = enum_.variants.iter().map(|variant| {
-+ let ident = &variant.ident;
-+ if has_ignore_attribute(&variant.attrs) {
-+ panic!("#[checksum_ignore] is not supported in enums");
-+ }
-+ match &variant.discriminant {
-+ Some((_, Expr::Lit(ExprLit { lit: Lit::Int(value), .. }))) => {
-+ next_discriminant = value.base10_parse::<u64>().unwrap();
-+ }
-+ Some(_) => {
-+ panic!("#[derive(Checksum)] doesn't support non-numeric explicit discriminants in enums");
-+ }
-+ None => {}
-+ }
-+ let discriminant = quote! { state.write(&#next_discriminant.to_le_bytes()) };
-+ next_discriminant += 1;
-+ match &variant.fields {
-+ Fields::Unnamed(fields) => {
-+ let field_idents = fields
-+ .unnamed
-+ .iter()
-+ .enumerate()
-+ .map(|(num, _)| format_ident!("__self_{}", num));
-+ let field_stmts = field_idents
-+ .clone()
-+ .map(|ident| quote! { Checksum::checksum(#ident, state); });
-+ quote! {
-+ Self::#ident(#(#field_idents,)*) => {
-+ #discriminant;
-+ #(#field_stmts)*
-+ }
-+ }
-+ }
-+ Fields::Named(fields) => {
-+ let field_idents = fields
-+ .named
-+ .iter()
-+ .map(|field| field.ident.as_ref().unwrap());
-+ let field_stmts = field_idents
-+ .clone()
-+ .map(|ident| quote! { Checksum::checksum(#ident, state); });
-+ quote! {
-+ Self::#ident { #(#field_idents,)* } => {
-+ #discriminant;
-+ #(#field_stmts)*
-+ }
-+ }
-+ }
-+ Fields::Unit => quote! { Self::#ident => #discriminant, },
-+ }
-+ });
-+ quote! {
-+ match self {
-+ #(#match_inner)*
-+ }
-+ }
-+ }
-+ Data::Struct(struct_) => {
-+ let stmts = struct_
-+ .fields
-+ .iter()
-+ .enumerate()
-+ .filter_map(|(num, field)| {
-+ (!has_ignore_attribute(&field.attrs)).then(|| match field.ident.as_ref() {
-+ Some(ident) => quote! { Checksum::checksum(&self.#ident, state); },
-+ None => {
-+ let i = Index::from(num);
-+ quote! { Checksum::checksum(&self.#i, state); }
-+ }
-+ })
-+ });
-+ quote! {
-+ #(#stmts)*
-+ }
-+ }
-+ Data::Union(_) => {
-+ panic!("#[derive(Checksum)] is not supported for unions");
-+ }
-+ };
-+
-+ quote! {
-+ #[automatically_derived]
-+ impl #impl_generics Checksum for #name #ty_generics #where_clause {
-+ fn checksum<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
-+ #code
-+ }
-+ }
-+ }
-+ .into()
-+}
-diff --git a/third_party/rust/uniffi_macros/.cargo-checksum.json b/third_party/rust/uniffi_macros/.cargo-checksum.json
---- a/third_party/rust/uniffi_macros/.cargo-checksum.json
-+++ b/third_party/rust/uniffi_macros/.cargo-checksum.json
-@@ -1 +1 @@
--{"files":{"Cargo.toml":"55f7e114dd34b0c60b58890120f8707601a5401e9d49d42a239b03da2e660d4f","src/export.rs":"e23929cf6fb5542d29514fe668f3b3d836fad968eacd9c6fcba74c5cd9cf2b61","src/export/metadata.rs":"af89a9942c7c0c4043a3cd57d1e6bd71cde19005e1f9f246efac761f47eff6be","src/export/metadata/convert.rs":"81060fb3390165d77db021f44142a2f3f10882515f859d7393857083370f2d35","src/export/metadata/function.rs":"11833cabd37e7671c0a01944bec73b8892a15df814bbe4c26fdae57aad89a2ba","src/export/metadata/impl_.rs":"ecfdaa132f05dd946414281e52165ef19c90c0bfd76ec651d4ec86837bd41d1c","src/export/scaffolding.rs":"66939405063e56fc983126f249e2d7ddc3257cb045a738abd0cf813a4aafc59c","src/lib.rs":"ca77b437a58cfb3ddeb106d3c1c8378545c46ef241298e62ab1190c5136d1fb1","src/object.rs":"955b596f344304013692042bdc1760bbb1192ec33950b0dd2932cb8de94ec297","src/record.rs":"67a5c7ed6a448f7ad8f5c8e930c5e3007b2b0cac32f52cc8596bdae6fb3c816e","src/util.rs":"6389a9b4258808a3af168cf85658fb7c069172d5e528ee0e94210fa664f2a414"},"package":"5c8604503caa2cbcf271578dc51ca236d40e3b22e1514ffa2e638e2c39f6ad10"}
-\ No newline at end of file
-+{"files":{"Cargo.toml":"6511b493b676ac3941d70477c91abec62642c3c9aab088ecdf4f733eef3f1faa","src/export.rs":"e23929cf6fb5542d29514fe668f3b3d836fad968eacd9c6fcba74c5cd9cf2b61","src/export/metadata.rs":"af89a9942c7c0c4043a3cd57d1e6bd71cde19005e1f9f246efac761f47eff6be","src/export/metadata/convert.rs":"81060fb3390165d77db021f44142a2f3f10882515f859d7393857083370f2d35","src/export/metadata/function.rs":"11833cabd37e7671c0a01944bec73b8892a15df814bbe4c26fdae57aad89a2ba","src/export/metadata/impl_.rs":"ecfdaa132f05dd946414281e52165ef19c90c0bfd76ec651d4ec86837bd41d1c","src/export/scaffolding.rs":"66939405063e56fc983126f249e2d7ddc3257cb045a738abd0cf813a4aafc59c","src/lib.rs":"ca77b437a58cfb3ddeb106d3c1c8378545c46ef241298e62ab1190c5136d1fb1","src/object.rs":"955b596f344304013692042bdc1760bbb1192ec33950b0dd2932cb8de94ec297","src/record.rs":"67a5c7ed6a448f7ad8f5c8e930c5e3007b2b0cac32f52cc8596bdae6fb3c816e","src/util.rs":"6389a9b4258808a3af168cf85658fb7c069172d5e528ee0e94210fa664f2a414"},"package":"c96a574677566f83ea8458dac1dd7792fd63e7c3f9dbcd865f0e8d6f8057b127"}
-\ No newline at end of file
-diff --git a/third_party/rust/uniffi_macros/Cargo.toml b/third_party/rust/uniffi_macros/Cargo.toml
---- a/third_party/rust/uniffi_macros/Cargo.toml
-+++ b/third_party/rust/uniffi_macros/Cargo.toml
-@@ -10,22 +10,21 @@
- # See Cargo.toml.orig for the original contents.
-
- [package]
- edition = "2021"
- name = "uniffi_macros"
--version = "0.21.0"
-+version = "0.21.1"
- authors = ["Firefox Sync Team <sync-team(a)mozilla.com>"]
- description = "a multi-language bindings generator for rust (convenience macros)"
- homepage = "https://mozilla.github.io/uniffi-rs"
- documentation = "https://mozilla.github.io/uniffi-rs"
- keywords = [
- "ffi",
- "bindgen",
- ]
- license = "MPL-2.0"
- repository = "https://github.com/mozilla/uniffi-rs"
--resolver = "2"
-
- [lib]
- proc-macro = true
-
- [dependencies.bincode]
-@@ -58,14 +57,14 @@
-
- [dependencies.toml]
- version = "0.5.9"
-
- [dependencies.uniffi_build]
--version = "=0.21.0"
-+version = "=0.21.1"
-
- [dependencies.uniffi_meta]
--version = "=0.21.0"
-+version = "=0.21.1"
-
- [features]
- builtin-bindgen = ["uniffi_build/builtin-bindgen"]
- default = []
- nightly = []
-diff --git a/third_party/rust/uniffi_meta/.cargo-checksum.json b/third_party/rust/uniffi_meta/.cargo-checksum.json
---- a/third_party/rust/uniffi_meta/.cargo-checksum.json
-+++ b/third_party/rust/uniffi_meta/.cargo-checksum.json
-@@ -1 +1 @@
--{"files":{"Cargo.toml":"4a474782b3acac7e99435c0cfc6cd4790817ee5c15980b10dc927d95795b977f","src/lib.rs":"dc4c91763c01e8c09ef55cdb103bc02c7aba71c5660ba88f776a8a03a747d6e8"},"package":"cd9417cc653937681436b93838d8c5f97a5b8c58697813982ee8810bd1dc3b57"}
-\ No newline at end of file
-+{"files":{"Cargo.toml":"4c34032ec5fadf8b996c671425d5afa38e0e5c223ab0b2ed3b44099fb78157d3","src/lib.rs":"a9854421f120e1c4a9d7d36bb006a4c5e7d2e054564f95aa9b6956e7ebb348fd"},"package":"729835442da829c9b6f7c111c76cf87b2498e129101203bec94f0c39a3296a38"}
-\ No newline at end of file
-diff --git a/third_party/rust/uniffi_meta/Cargo.toml b/third_party/rust/uniffi_meta/Cargo.toml
---- a/third_party/rust/uniffi_meta/Cargo.toml
-+++ b/third_party/rust/uniffi_meta/Cargo.toml
-@@ -10,19 +10,24 @@
- # See Cargo.toml.orig for the original contents.
-
- [package]
- edition = "2021"
- name = "uniffi_meta"
--version = "0.21.0"
-+version = "0.21.1"
- description = "uniffi_meta"
- homepage = "https://mozilla.github.io/uniffi-rs"
- keywords = [
- "ffi",
- "bindgen",
- ]
- license = "MPL-2.0"
- repository = "https://github.com/mozilla/uniffi-rs"
--resolver = "2"
-
- [dependencies.serde]
- version = "1.0.136"
- features = ["derive"]
-+
-+[dependencies.siphasher]
-+version = "0.3"
-+
-+[dependencies.uniffi_checksum_derive]
-+version = "0.21.0"
-diff --git a/third_party/rust/uniffi_meta/src/lib.rs b/third_party/rust/uniffi_meta/src/lib.rs
---- a/third_party/rust/uniffi_meta/src/lib.rs
-+++ b/third_party/rust/uniffi_meta/src/lib.rs
-@@ -1,17 +1,87 @@
- /* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
--use std::{
-- collections::hash_map::DefaultHasher,
-- hash::{Hash, Hasher},
--};
-+use std::hash::Hasher;
-+pub use uniffi_checksum_derive::Checksum;
-
- use serde::{Deserialize, Serialize};
-
--#[derive(Clone, Debug, Hash, Deserialize, Serialize)]
-+/// Similar to std::hash::Hash.
-+///
-+/// Implementations of this trait are expected to update the hasher state in
-+/// the same way across platforms. #[derive(Checksum)] will do the right thing.
-+pub trait Checksum {
-+ fn checksum<H: Hasher>(&self, state: &mut H);
-+}
-+
-+impl Checksum for bool {
-+ fn checksum<H: Hasher>(&self, state: &mut H) {
-+ state.write_u8(*self as u8);
-+ }
-+}
-+
-+impl Checksum for u64 {
-+ fn checksum<H: Hasher>(&self, state: &mut H) {
-+ state.write(&self.to_le_bytes());
-+ }
-+}
-+
-+impl Checksum for i64 {
-+ fn checksum<H: Hasher>(&self, state: &mut H) {
-+ state.write(&self.to_le_bytes());
-+ }
-+}
-+
-+impl<T: Checksum> Checksum for Box<T> {
-+ fn checksum<H: Hasher>(&self, state: &mut H) {
-+ (**self).checksum(state)
-+ }
-+}
-+
-+impl<T: Checksum> Checksum for [T] {
-+ fn checksum<H: Hasher>(&self, state: &mut H) {
-+ state.write(&(self.len() as u64).to_le_bytes());
-+ for item in self {
-+ Checksum::checksum(item, state);
-+ }
-+ }
-+}
-+
-+impl<T: Checksum> Checksum for Vec<T> {
-+ fn checksum<H: Hasher>(&self, state: &mut H) {
-+ Checksum::checksum(&**self, state);
-+ }
-+}
-+
-+impl<T: Checksum> Checksum for Option<T> {
-+ fn checksum<H: Hasher>(&self, state: &mut H) {
-+ match self {
-+ None => state.write(&0u64.to_le_bytes()),
-+ Some(value) => {
-+ state.write(&1u64.to_le_bytes());
-+ Checksum::checksum(value, state)
-+ }
-+ }
-+ }
-+}
-+
-+impl Checksum for str {
-+ fn checksum<H: Hasher>(&self, state: &mut H) {
-+ state.write(self.as_bytes());
-+ state.write_u8(0xff);
-+ }
-+}
-+
-+impl Checksum for String {
-+ fn checksum<H: Hasher>(&self, state: &mut H) {
-+ (**self).checksum(state)
-+ }
-+}
-+
-+#[derive(Clone, Debug, Checksum, Deserialize, Serialize)]
- pub struct FnMetadata {
- pub module_path: Vec<String>,
- pub name: String,
- pub inputs: Vec<FnParamMetadata>,
- pub return_type: Option<Type>,
-@@ -21,11 +91,11 @@
- pub fn ffi_symbol_name(&self) -> String {
- fn_ffi_symbol_name(&self.module_path, &self.name, checksum(self))
- }
- }
-
--#[derive(Clone, Debug, Hash, Deserialize, Serialize)]
-+#[derive(Clone, Debug, Checksum, Deserialize, Serialize)]
- pub struct MethodMetadata {
- pub module_path: Vec<String>,
- pub self_name: String,
- pub name: String,
- pub inputs: Vec<FnParamMetadata>,
-@@ -37,18 +107,18 @@
- let full_name = format!("impl_{}_{}", self.self_name, self.name);
- fn_ffi_symbol_name(&self.module_path, &full_name, checksum(self))
- }
- }
-
--#[derive(Clone, Debug, Hash, Deserialize, Serialize)]
-+#[derive(Clone, Debug, Checksum, Deserialize, Serialize)]
- pub struct FnParamMetadata {
- pub name: String,
- #[serde(rename = "type")]
- pub ty: Type,
- }
-
--#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Deserialize, Serialize)]
-+#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Checksum, Deserialize, Serialize)]
- pub enum Type {
- U8,
- U16,
- U32,
- U64,
-@@ -76,25 +146,25 @@
- Unresolved {
- name: String,
- },
- }
-
--#[derive(Clone, Debug, Hash, Deserialize, Serialize)]
-+#[derive(Clone, Debug, Checksum, Deserialize, Serialize)]
- pub struct RecordMetadata {
- pub module_path: Vec<String>,
- pub name: String,
- pub fields: Vec<FieldMetadata>,
- }
-
--#[derive(Clone, Debug, Hash, Deserialize, Serialize)]
-+#[derive(Clone, Debug, Checksum, Deserialize, Serialize)]
- pub struct FieldMetadata {
- pub name: String,
- #[serde(rename = "type")]
- pub ty: Type,
- }
-
--#[derive(Clone, Debug, Hash, Deserialize, Serialize)]
-+#[derive(Clone, Debug, Checksum, Deserialize, Serialize)]
- pub struct ObjectMetadata {
- pub module_path: Vec<String>,
- pub name: String,
- }
-
-@@ -106,27 +176,27 @@
- let free_name = format!("object_free_{}", self.name);
- fn_ffi_symbol_name(&self.module_path, &free_name, checksum(self))
- }
- }
-
--/// Returns the last 16 bits of the value's hash as computed with [`DefaultHasher`].
-+/// Returns the last 16 bits of the value's hash as computed with [`SipHasher13`].
- ///
- /// To be used as a checksum of FFI symbols, as a safeguard against different UniFFI versions being
- /// used for scaffolding and bindings generation.
--pub fn checksum<T: Hash>(val: &T) -> u16 {
-- let mut hasher = DefaultHasher::new();
-- val.hash(&mut hasher);
-+pub fn checksum<T: Checksum>(val: &T) -> u16 {
-+ let mut hasher = siphasher::sip::SipHasher13::new();
-+ val.checksum(&mut hasher);
- (hasher.finish() & 0x000000000000FFFF) as u16
- }
-
- pub fn fn_ffi_symbol_name(mod_path: &[String], name: &str, checksum: u16) -> String {
- let mod_path = mod_path.join("__");
- format!("_uniffi_{mod_path}_{name}_{checksum:x}")
- }
-
- /// Enum covering all the possible metadata types
--#[derive(Clone, Debug, Hash, Deserialize, Serialize)]
-+#[derive(Clone, Debug, Checksum, Deserialize, Serialize)]
- pub enum Metadata {
- Func(FnMetadata),
- Method(MethodMetadata),
- Record(RecordMetadata),
- Object(ObjectMetadata),
-
diff --git a/firefox.spec b/firefox.spec
index af584c6..4862a95 100644
--- a/firefox.spec
+++ b/firefox.spec
@@ -172,13 +172,13 @@ ExcludeArch: i686
Summary: Mozilla Firefox Web browser
Name: firefox
-Version: 108.0.1
-Release: 4%{?pre_tag}%{?dist}
+Version: 108.0.2
+Release: 1%{?pre_tag}%{?dist}
URL: https://www.mozilla.org/firefox/
License: MPLv1.1 or GPLv2+ or LGPLv2+
Source0: https://archive.mozilla.org/pub/firefox/releases/%{version}%{?pre_version...
%if %{with langpacks}
-Source1: firefox-langpacks-%{version}%{?pre_version}-20221218.tar.xz
+Source1: firefox-langpacks-%{version}%{?pre_version}-20230112.tar.xz
%endif
Source2: cbindgen-vendor.tar.xz
Source10: firefox-mozconfig
@@ -253,7 +253,6 @@ Patch415: mozilla-1670333.patch
Patch416: D163696.diff
Patch417: D163697.diff
Patch418: D163698.diff
-Patch419: D164896.diff
# PGO/LTO patches
Patch600: pgo.patch
@@ -532,7 +531,6 @@ This package contains results of tests executed during build.
%patch416 -p1 -b .D163696
%patch417 -p1 -b .D163697
%patch418 -p1 -b .D163698
-%patch419 -p1 -b .D164896
# PGO patches
%if %{build_with_pgo}
@@ -1086,6 +1084,9 @@ fi
#---------------------------------------------------------------------
%changelog
+* Thu Jan 12 2023 Jan Horak <jhorak(a)redhat.com> - 108.0.2-1
+- Update to 108.0.2
+
* Mon Jan 09 2023 Kalev Lember <klember(a)redhat.com> - 108.0.1-4
- Drop conditionals for F35
diff --git a/sources b/sources
index e70567f..65c6114 100644
--- a/sources
+++ b/sources
@@ -1,4 +1,4 @@
SHA512 (cbindgen-vendor.tar.xz) = 0d45c1decfd7aaee853748745c9f5a907c0c6a0cf809c2387aac1cdcf680b0844b1ef4d05148e0527de4ff6e4d4666110bea317bd00b7d73a1210eb58a815563
SHA512 (mochitest-python.tar.gz) = e0a2c569dafe013b6a4c073516388549a8f398d8aa4538a3bc69dcda44737a3a3cf070285e9fa040a15d7a62446665c6158d42a1b6dc3e8d7f4680bc2ef17a16
-SHA512 (firefox-108.0.1.source.tar.xz) = e6219ed6324422ec293ed96868738e056582bb9f7fb82e59362541f3465c6ebca806d26ecd801156b074c3675bd5a22507b1f1fa53eebf82b7dd35f2b1ff0625
-SHA512 (firefox-langpacks-108.0.1-20221218.tar.xz) = ac9766a4eb419ba04a138cbd3a4f44dac9d83a4c2680f5b29f8b2da2ac9659cc0b1706b974e15563b2aaed371a11a999f5f11172610d60e4ebe6dcb860f1b1f2
+SHA512 (firefox-108.0.2.source.tar.xz) = f856ef034fa4a526e19968aed092c9ee99e124d2d271ec1c1bbd091d9a03e23293d69c7a9ae17c43258cde7e73c294534b471e36441e576377854f607c9bfa3a
+SHA512 (firefox-langpacks-108.0.2-20230112.tar.xz) = dfe1273fe3c29e737623915c10a900f370306a9af00c92b0479f2c779056823b99dff0ff94a779f8a8fa14c4d85e27813da297bfc5439802c8f1b2e5e31431b5
commit 8bed0f2480ab6d0dc3c697dfd7ade7f8d008226e
Author: Kalev Lember <klember(a)redhat.com>
Date: Mon Jan 9 23:54:02 2023 +0100
Drop rpm scriptlets for things that are handled by rpm file triggers
update-desktop-database and gtk-update-icon-cache are both handled by
file triggers in desktop-file-utils and hicolor-icon-theme packages
these days and there is no need to invoke them manually in individual
packages any more.
diff --git a/firefox.spec b/firefox.spec
index 22a5e94..af584c6 100644
--- a/firefox.spec
+++ b/firefox.spec
@@ -1015,20 +1015,6 @@ if [ $1 -eq 0 ]; then
rm -rf %{langpackdir}
fi
-%post
-update-desktop-database &> /dev/null || :
-touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
-
-%postun
-update-desktop-database &> /dev/null || :
-if [ $1 -eq 0 ] ; then
- touch --no-create %{_datadir}/icons/hicolor &>/dev/null
- gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
-fi
-
-%posttrans
-gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
-
%if %{with langpacks_subpkg}
%files
%else
commit 4f8d37fe68e2b67f7a3e19fa4f4de4f6a8568773
Author: Kalev Lember <klember(a)redhat.com>
Date: Mon Jan 9 23:41:16 2023 +0100
Avoid using rpm macros for simple shell commands
Using e.g. %{__cp} instead of cp makes everything just harder to read
without any clear benefits.
diff --git a/firefox.spec b/firefox.spec
index efa282f..22a5e94 100644
--- a/firefox.spec
+++ b/firefox.spec
@@ -550,15 +550,15 @@ This package contains results of tests executed during build.
%patch1100 -p1 -b .ppc-mobzuild
-%{__rm} -f .mozconfig
-%{__cp} %{SOURCE10} .mozconfig
+rm -f .mozconfig
+cp %{SOURCE10} .mozconfig
echo "ac_add_options --enable-default-toolkit=cairo-gtk3-wayland" >> .mozconfig
%if %{official_branding}
echo "ac_add_options --enable-official-branding" >> .mozconfig
%endif
-%{__cp} %{SOURCE24} mozilla-api-key
-%{__cp} %{SOURCE27} google-api-key
-%{__cp} %{SOURCE35} google-loc-api-key
+cp %{SOURCE24} mozilla-api-key
+cp %{SOURCE27} google-api-key
+cp %{SOURCE35} google-loc-api-key
echo "ac_add_options --prefix=\"%{_prefix}\"" >> .mozconfig
echo "ac_add_options --libdir=\"%{_libdir}\"" >> .mozconfig
@@ -658,7 +658,7 @@ chmod a-x third_party/rust/ash/src/extensions/nv/*.rs
%if 0%{?use_bundled_cbindgen}
mkdir -p my_rust_vendor
cd my_rust_vendor
-%{__tar} xf %{SOURCE2}
+tar xf %{SOURCE2}
mkdir -p .cargo
cat > .cargo/config <<EOL
[source.crates-io]
@@ -680,24 +680,24 @@ cp %{SOURCE32} %{_buildrootdir}/bin || :
# Do not update config.guess in the ./third_party/rust because that would break checksums
find ./ -path ./third_party/rust -prune -o -name config.guess -exec cp /usr/lib/rpm/config.guess {} ';'
-MOZ_OPT_FLAGS=$(echo "%{optflags}" | %{__sed} -e 's/-Wall//')
+MOZ_OPT_FLAGS=$(echo "%{optflags}" | sed -e 's/-Wall//')
#rhbz#1037063
# -Werror=format-security causes build failures when -Wno-format is explicitly given
# for some sources
# Explicitly force the hardening flags for Firefox so it passes the checksec test;
# See also https://fedoraproject.org/wiki/Changes/Harden_All_Packages
# Workaround for mozbz#1531309
-MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-Werror=format-security//')
+MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | sed -e 's/-Werror=format-security//')
# More Fedora specific build flags
MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -fpermissive"
%if %{?debug_build}
-MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-O2//')
+MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | sed -e 's/-O2//')
%endif
# If MOZ_DEBUG_FLAGS is empty, firefox's build will default it to "-g" which
# overrides the -g1 from line above and breaks building on s390/arm
# (OOM when linking, rhbz#1238225)
%ifarch %{arm} %{ix86}
-MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-g/-g0/')
+MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | sed -e 's/-g/-g0/')
export MOZ_DEBUG_FLAGS=" "
%endif
MOZ_LINK_FLAGS="%{build_ldflags}"
@@ -720,9 +720,9 @@ MOZ_LINK_FLAGS="$MOZ_LINK_FLAGS -fsanitize=address -ldl"
%ifarch %{arm}
# disable hard-coded LTO due to RAM constraints
-%{__sed} -i '/cargo_rustc_flags += -Clto/d' config/makefiles/rust.mk
-%{__sed} -i '/RUSTFLAGS += -Cembed-bitcode=yes/d' config/makefiles/rust.mk
-%{__sed} -i 's/codegen-units=1/codegen-units=16/' config/makefiles/rust.mk
+sed -i '/cargo_rustc_flags += -Clto/d' config/makefiles/rust.mk
+sed -i '/RUSTFLAGS += -Cembed-bitcode=yes/d' config/makefiles/rust.mk
+sed -i 's/codegen-units=1/codegen-units=16/' config/makefiles/rust.mk
# make sure "-g0" is the last flag so there's no debug info
MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -g0"
@@ -789,7 +789,7 @@ cp %{SOURCE45} .
%if 0%{?run_firefox_tests}
mkdir -p objdir/_virtualenvs/init_py3
-%{__cat} > objdir/_virtualenvs/init_py3/pip.conf << EOF
+cat > objdir/_virtualenvs/init_py3/pip.conf << EOF
[global]
find-links=`pwd`/mochitest-python
no-index=true
@@ -808,26 +808,26 @@ mkdir -p test_results
# set up our default bookmarks
%if !0%{?flatpak}
-%{__cp} -p %{default_bookmarks_file} objdir/dist/bin/browser/chrome/browser/content/browser/default-bookmarks.html
+cp -p %{default_bookmarks_file} objdir/dist/bin/browser/chrome/browser/content/browser/default-bookmarks.html
%endif
# Make sure locale works for langpacks
-%{__cat} > objdir/dist/bin/browser/defaults/preferences/firefox-l10n.js << EOF
+cat > objdir/dist/bin/browser/defaults/preferences/firefox-l10n.js << EOF
pref("general.useragent.locale", "chrome://global/locale/intl.properties");
EOF
DESTDIR=%{buildroot} make -C objdir install
-%{__mkdir_p} %{buildroot}{%{_libdir},%{_bindir},%{_datadir}/applications}
+mkdir -p %{buildroot}{%{_libdir},%{_bindir},%{_datadir}/applications}
desktop-file-install --dir %{buildroot}%{_datadir}/applications %{SOURCE20}
desktop-file-install --dir %{buildroot}%{_datadir}/applications %{SOURCE31}
desktop-file-install --dir %{buildroot}%{_datadir}/applications %{SOURCE29}
# set up the firefox start script
-%{__rm} -rf %{buildroot}%{_bindir}/firefox
-%{__sed} -e 's,/__PREFIX__,%{_prefix},g' %{SOURCE21} > %{buildroot}%{_bindir}/firefox
-%{__chmod} 755 %{buildroot}%{_bindir}/firefox
+rm -rf %{buildroot}%{_bindir}/firefox
+sed -e 's,/__PREFIX__,%{_prefix},g' %{SOURCE21} > %{buildroot}%{_bindir}/firefox
+chmod 755 %{buildroot}%{_bindir}/firefox
%if 0%{?flatpak}
sed -i -e 's|%FLATPAK_ENV_VARS%|export TMPDIR="$XDG_CACHE_HOME/tmp"|' %{buildroot}%{_bindir}/firefox
@@ -835,36 +835,36 @@ sed -i -e 's|%FLATPAK_ENV_VARS%|export TMPDIR="$XDG_CACHE_HOME/tmp"|' %{buildroo
sed -i -e 's|%FLATPAK_ENV_VARS%||' %{buildroot}%{_bindir}/firefox
%endif
-%{__sed} -e 's,/__PREFIX__,%{_prefix},g' %{SOURCE30} > %{buildroot}%{_bindir}/firefox-x11
-%{__chmod} 755 %{buildroot}%{_bindir}/firefox-x11
-%{__sed} -e 's,/__PREFIX__,%{_prefix},g' %{SOURCE28} > %{buildroot}%{_bindir}/firefox-wayland
-%{__chmod} 755 %{buildroot}%{_bindir}/firefox-wayland
+sed -e 's,/__PREFIX__,%{_prefix},g' %{SOURCE30} > %{buildroot}%{_bindir}/firefox-x11
+chmod 755 %{buildroot}%{_bindir}/firefox-x11
+sed -e 's,/__PREFIX__,%{_prefix},g' %{SOURCE28} > %{buildroot}%{_bindir}/firefox-wayland
+chmod 755 %{buildroot}%{_bindir}/firefox-wayland
-%{__install} -p -D -m 644 %{SOURCE23} %{buildroot}%{_mandir}/man1/firefox.1
+install -p -D -m 644 %{SOURCE23} %{buildroot}%{_mandir}/man1/firefox.1
-%{__rm} -f %{buildroot}/%{mozappdir}/firefox-config
-%{__rm} -f %{buildroot}/%{mozappdir}/update-settings.ini
+rm -f %{buildroot}/%{mozappdir}/firefox-config
+rm -f %{buildroot}/%{mozappdir}/update-settings.ini
for s in 16 22 24 32 48 256; do
- %{__mkdir_p} %{buildroot}%{_datadir}/icons/hicolor/${s}x${s}/apps
- %{__cp} -p browser/branding/official/default${s}.png \
- %{buildroot}%{_datadir}/icons/hicolor/${s}x${s}/apps/firefox.png
+ mkdir -p %{buildroot}%{_datadir}/icons/hicolor/${s}x${s}/apps
+ cp -p browser/branding/official/default${s}.png \
+ %{buildroot}%{_datadir}/icons/hicolor/${s}x${s}/apps/firefox.png
done
# Install hight contrast icon
-%{__mkdir_p} %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps
-%{__cp} -p %{SOURCE25} \
- %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps
+mkdir -p %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps
+cp -p %{SOURCE25} \
+ %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps
echo > %{name}.lang
%if %{with langpacks}
# Extract langpacks, make any mods needed, repack the langpack, and install it.
-%{__mkdir_p} %{buildroot}%{langpackdir}
-%{__tar} xf %{SOURCE1}
+mkdir -p %{buildroot}%{langpackdir}
+tar xf %{SOURCE1}
for langpack in `ls firefox-langpacks/*.xpi`; do
language=`basename $langpack .xpi`
extensionID=langpack-$language(a)firefox.mozilla.org
- %{__mkdir_p} $extensionID
+ mkdir -p $extensionID
unzip -qq $langpack -d $extensionID
find $extensionID -type f | xargs chmod 644
@@ -872,7 +872,7 @@ for langpack in `ls firefox-langpacks/*.xpi`; do
zip -qq -r9mX ../${extensionID}.xpi *
cd -
- %{__install} -m 644 ${extensionID}.xpi %{buildroot}%{langpackdir}
+ install -m 644 ${extensionID}.xpi %{buildroot}%{langpackdir}
language=`echo $language | sed -e 's/-/_/g'`
%if 0%{?flatpak}
echo "%{langpackdir}/${extensionID}.xpi" >> %{name}.lang
@@ -880,7 +880,7 @@ for langpack in `ls firefox-langpacks/*.xpi`; do
echo "%%lang($language) %{langpackdir}/${extensionID}.xpi" >> %{name}.lang
%endif
done
-%{__rm} -rf firefox-langpacks
+rm -rf firefox-langpacks
# Install langpack workaround (see #707100, #821169)
function create_default_langpack() {
@@ -909,20 +909,20 @@ create_default_langpack "sv-SE" "sv"
create_default_langpack "zh-TW" "zh"
%endif
-%{__mkdir_p} %{buildroot}/%{mozappdir}/browser/defaults/preferences
+mkdir -p %{buildroot}/%{mozappdir}/browser/defaults/preferences
# System config dir
-%{__mkdir_p} %{buildroot}/%{_sysconfdir}/%{name}/pref
+mkdir -p %{buildroot}/%{_sysconfdir}/%{name}/pref
# System extensions
-%{__mkdir_p} %{buildroot}%{_datadir}/mozilla/extensions/%{firefox_app_id}
-%{__mkdir_p} %{buildroot}%{_libdir}/mozilla/extensions/%{firefox_app_id}
+mkdir -p %{buildroot}%{_datadir}/mozilla/extensions/%{firefox_app_id}
+mkdir -p %{buildroot}%{_libdir}/mozilla/extensions/%{firefox_app_id}
# Copy over the LICENSE
-%{__install} -p -c -m 644 LICENSE %{buildroot}/%{mozappdir}
+install -p -c -m 644 LICENSE %{buildroot}/%{mozappdir}
# Use the system hunspell dictionaries
-%{__rm} -rf %{buildroot}%{mozappdir}/dictionaries
+rm -rf %{buildroot}%{mozappdir}/dictionaries
ln -s %{_datadir}/hunspell %{buildroot}%{mozappdir}/dictionaries
# Enable crash reporter for Firefox application
@@ -930,39 +930,39 @@ ln -s %{_datadir}/hunspell %{buildroot}%{mozappdir}/dictionaries
./mach buildsymbols
sed -i -e "s/\[Crash Reporter\]/[Crash Reporter]\nEnabled=1/" %{buildroot}/%{mozappdir}/application.ini
# Add debuginfo for crash-stats.mozilla.com
-%{__mkdir_p} %{buildroot}/%{moz_debug_dir}
-%{__cp} objdir/dist/%{symbols_file_name} %{buildroot}/%{moz_debug_dir}
+mkdir -p %{buildroot}/%{moz_debug_dir}
+cp objdir/dist/%{symbols_file_name} %{buildroot}/%{moz_debug_dir}
%endif
%if 0%{?run_firefox_tests}
-%{__mkdir_p} %{buildroot}/%{version}-%{release}/test_results
-%{__cp} test_results/* %{buildroot}/%{version}-%{release}/test_results
-%{__cp} test_summary.txt %{buildroot}/%{version}-%{release}/
-%{__cp} failures-* %{buildroot}/%{version}-%{release}/ || true
+mkdir -p %{buildroot}/%{version}-%{release}/test_results
+cp test_results/* %{buildroot}/%{version}-%{release}/test_results
+cp test_summary.txt %{buildroot}/%{version}-%{release}/
+cp failures-* %{buildroot}/%{version}-%{release}/ || true
%endif
# Default
-%{__cp} %{SOURCE12} %{buildroot}%{mozappdir}/browser/defaults/preferences
+cp %{SOURCE12} %{buildroot}%{mozappdir}/browser/defaults/preferences
%if %{?use_xdg_file_portal}
echo 'pref("widget.use-xdg-desktop-portal.file-picker", 1);' >> %{buildroot}%{mozappdir}/browser/defaults/preferences/firefox-redhat-default-prefs.js
%endif
# Copy over run-mozilla.sh
-%{__cp} build/unix/run-mozilla.sh %{buildroot}%{mozappdir}
+cp build/unix/run-mozilla.sh %{buildroot}%{mozappdir}
# Add distribution.ini
-%{__mkdir_p} %{buildroot}%{mozappdir}/distribution
-%{__cp} %{SOURCE26} %{buildroot}%{mozappdir}/distribution
+mkdir -p %{buildroot}%{mozappdir}/distribution
+cp %{SOURCE26} %{buildroot}%{mozappdir}/distribution
# Install appdata file
mkdir -p %{buildroot}%{_datadir}/metainfo
-%{__sed} -e "s/__VERSION__/%{version}/" \
- -e "s/__DATE__/$(date '+%F')/" \
- %{SOURCE33} > %{buildroot}%{_datadir}/metainfo/firefox.appdata.xml
+sed -e "s/__VERSION__/%{version}/" \
+ -e "s/__DATE__/$(date '+%F')/" \
+ %{SOURCE33} > %{buildroot}%{_datadir}/metainfo/firefox.appdata.xml
# Install Gnome search provider files
mkdir -p %{buildroot}%{_datadir}/gnome-shell/search-providers
-%{__cp} %{SOURCE34} %{buildroot}%{_datadir}/gnome-shell/search-providers
+cp %{SOURCE34} %{buildroot}%{_datadir}/gnome-shell/search-providers
# Remove gtk2 support as flash plugin is no longer supported
rm -rf %{buildroot}%{mozappdir}/gtk2/
@@ -1009,10 +1009,10 @@ appstream-util validate-relax --nonet %{buildroot}%{_datadir}/metainfo/*.appdata
%preun
# is it a final removal?
if [ $1 -eq 0 ]; then
- %{__rm} -rf %{mozappdir}/components
- %{__rm} -rf %{mozappdir}/extensions
- %{__rm} -rf %{mozappdir}/plugins
- %{__rm} -rf %{langpackdir}
+ rm -rf %{mozappdir}/components
+ rm -rf %{mozappdir}/extensions
+ rm -rf %{mozappdir}/plugins
+ rm -rf %{langpackdir}
fi
%post
commit 8c2f692734313638a3a18386377656fb9530a35e
Author: Kalev Lember <klember(a)redhat.com>
Date: Mon Jan 9 15:39:25 2023 +0100
Drop conditionals for F35
Fedora 35 is now EOL.
diff --git a/firefox.spec b/firefox.spec
index c3d5f02..efa282f 100644
--- a/firefox.spec
+++ b/firefox.spec
@@ -173,7 +173,7 @@ ExcludeArch: i686
Summary: Mozilla Firefox Web browser
Name: firefox
Version: 108.0.1
-Release: 3%{?pre_tag}%{?dist}
+Release: 4%{?pre_tag}%{?dist}
URL: https://www.mozilla.org/firefox/
License: MPLv1.1 or GPLv2+ or LGPLv2+
Source0: https://archive.mozilla.org/pub/firefox/releases/%{version}%{?pre_version...
@@ -754,33 +754,9 @@ echo "ac_add_options MOZ_PGO=1" >> .mozconfig
export CCACHE_DISABLE=1
%endif
-%if 0%{?fedora} > 35
# Require 2 GB of RAM per CPU core
%constrain_build -m 2048
echo "mk_add_options MOZ_MAKE_FLAGS=\"-j%{_smp_build_ncpus}\"" >> .mozconfig
-%else
-# F35 doesn't have %%constrain_build
-MOZ_SMP_FLAGS=-j1
-# On x86_64 architectures, Mozilla can build up to 4 jobs at once in parallel,
-# however builds tend to fail on other arches when building in parallel.
-%ifarch %{ix86} s390x %{arm} aarch64
-[ -z "$RPM_BUILD_NCPUS" ] && \
- RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`"
-[ "$RPM_BUILD_NCPUS" -ge 2 ] && MOZ_SMP_FLAGS=-j2
-%endif
-%ifarch x86_64 ppc ppc64 ppc64le
-[ -z "$RPM_BUILD_NCPUS" ] && \
- RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`"
-[ "$RPM_BUILD_NCPUS" -ge 2 ] && MOZ_SMP_FLAGS=-j2
-[ "$RPM_BUILD_NCPUS" -ge 4 ] && MOZ_SMP_FLAGS=-j4
-[ "$RPM_BUILD_NCPUS" -ge 8 ] && MOZ_SMP_FLAGS=-j8
-[ "$RPM_BUILD_NCPUS" -ge 16 ] && MOZ_SMP_FLAGS=-j16
-[ "$RPM_BUILD_NCPUS" -ge 24 ] && MOZ_SMP_FLAGS=-j24
-[ "$RPM_BUILD_NCPUS" -ge 32 ] && MOZ_SMP_FLAGS=-j32
-[ "$RPM_BUILD_NCPUS" -ge 64 ] && MOZ_SMP_FLAGS=-j64
-%endif
-echo "mk_add_options MOZ_MAKE_FLAGS=\"$MOZ_SMP_FLAGS\"" >> .mozconfig
-%endif
echo "mk_add_options MOZ_SERVICES_SYNC=1" >> .mozconfig
echo "export STRIP=/bin/true" >> .mozconfig
@@ -947,11 +923,7 @@ create_default_langpack "zh-TW" "zh"
# Use the system hunspell dictionaries
%{__rm} -rf %{buildroot}%{mozappdir}/dictionaries
-%if 0%{?fedora} > 35
ln -s %{_datadir}/hunspell %{buildroot}%{mozappdir}/dictionaries
-%else
-ln -s %{_datadir}/myspell %{buildroot}%{mozappdir}/dictionaries
-%endif
# Enable crash reporter for Firefox application
%if %{enable_mozilla_crashreporter}
@@ -975,13 +947,6 @@ sed -i -e "s/\[Crash Reporter\]/[Crash Reporter]\nEnabled=1/" %{buildroot}/%{moz
echo 'pref("widget.use-xdg-desktop-portal.file-picker", 1);' >> %{buildroot}%{mozappdir}/browser/defaults/preferences/firefox-redhat-default-prefs.js
%endif
-# Since Fedora 36 the location of dictionaries has changed to /usr/share/hunspell.
-# For backward spec compatibility we set the old path in previous versions.
-# TODO remove when Fedora 35 becomes obsolete
-%if 0%{?fedora} <= 35
-sed -i -e 's|/usr/share/hunspell|/usr/share/myspell|g' %{buildroot}%{mozappdir}/browser/defaults/preferences/firefox-redhat-default-prefs.js
-%endif
-
# Copy over run-mozilla.sh
%{__cp} build/unix/run-mozilla.sh %{buildroot}%{mozappdir}
@@ -1135,6 +1100,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
#---------------------------------------------------------------------
%changelog
+* Mon Jan 09 2023 Kalev Lember <klember(a)redhat.com> - 108.0.1-4
+- Drop conditionals for F35
+
* Wed Dec 21 2022 Martin Stransky <stransky(a)redhat.com>- 108.0.1-3
- Added second arch build fix
1 year, 4 months