mirror of
https://https.git.savannah.gnu.org/git/guix.git/
synced 2025-07-13 18:40:57 +02:00
gnu: Add msbuild.
* gnu/packages/patches/mono-msbuild-15.7.179-fix-build.patch: New file. * gnu/packages/patches/mono-msbuild-15.7.179-fix-resources.patch: New file. * gnu/local.mk (dist_patch_DATA): Register them. * gnu/packages/dotnet.scm (mono-msbuild): New variable. [source]: Use patches. Change-Id: I02cdd6b43368c07d8afad1ee1c80159d91ec7e16
This commit is contained in:
parent
15a43c7431
commit
5239ec21fd
4 changed files with 839 additions and 99 deletions
|
@ -1857,6 +1857,8 @@ dist_patch_DATA = \
|
||||||
%D%/packages/patches/mcrypt-CVE-2012-4409.patch \
|
%D%/packages/patches/mcrypt-CVE-2012-4409.patch \
|
||||||
%D%/packages/patches/mcrypt-CVE-2012-4426.patch \
|
%D%/packages/patches/mcrypt-CVE-2012-4426.patch \
|
||||||
%D%/packages/patches/mcrypt-CVE-2012-4527.patch \
|
%D%/packages/patches/mcrypt-CVE-2012-4527.patch \
|
||||||
|
%D%/packages/patches/mono-msbuild-15.7.179-fix-build.patch \
|
||||||
|
%D%/packages/patches/mono-msbuild-15.7.179-fix-resources.patch \
|
||||||
%D%/packages/patches/libmemcached-build-with-gcc7.patch \
|
%D%/packages/patches/libmemcached-build-with-gcc7.patch \
|
||||||
%D%/packages/patches/libmhash-hmac-fix-uaf.patch \
|
%D%/packages/patches/libmhash-hmac-fix-uaf.patch \
|
||||||
%D%/packages/patches/libmodbus-disable-networking-test.patch \
|
%D%/packages/patches/libmodbus-disable-networking-test.patch \
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
(define-module (gnu packages dotnet)
|
(define-module (gnu packages dotnet)
|
||||||
#:use-module ((guix licenses) #:prefix license:)
|
#:use-module ((guix licenses) #:prefix license:)
|
||||||
#:use-module (gnu packages assembly)
|
#:use-module (gnu packages assembly)
|
||||||
|
#:use-module (gnu packages bash)
|
||||||
#:use-module (gnu packages bison)
|
#:use-module (gnu packages bison)
|
||||||
#:use-module (gnu packages check)
|
#:use-module (gnu packages check)
|
||||||
#:use-module (gnu packages cmake)
|
#:use-module (gnu packages cmake)
|
||||||
|
@ -1074,16 +1075,17 @@ unused0:")))))
|
||||||
(lambda* (#:key make-flags #:allow-other-keys)
|
(lambda* (#:key make-flags #:allow-other-keys)
|
||||||
(apply invoke "make" "-C" "mcs/tools/resx2sr" make-flags)))
|
(apply invoke "make" "-C" "mcs/tools/resx2sr" make-flags)))
|
||||||
(add-after 'install 'install-resx2sr
|
(add-after 'install 'install-resx2sr
|
||||||
(lambda* (#:key make-flags #:allow-other-keys)
|
(lambda* (#:key inputs make-flags #:allow-other-keys)
|
||||||
(apply invoke "make" "-C" "mcs/tools/resx2sr" "install" make-flags)
|
(apply invoke "make" "-C" "mcs/tools/resx2sr" "install" make-flags)
|
||||||
;; They don't install a wrapper script--but we need it for
|
;; They don't install a wrapper script--but we need it for
|
||||||
;; bootstrapping MSBuild.
|
;; bootstrapping MSBuild.
|
||||||
(let ((resx2sr (string-append #$output "/bin/resx2sr")))
|
(let ((resx2sr (string-append #$output "/bin/resx2sr")))
|
||||||
(call-with-output-file resx2sr
|
(call-with-output-file resx2sr
|
||||||
(lambda (port)
|
(lambda (port)
|
||||||
(format port "#!/bin/sh
|
(format port "#!~a
|
||||||
exec ~s ~s \"$@\"
|
exec ~s ~s \"$@\"
|
||||||
"
|
"
|
||||||
|
(search-input-file inputs "/bin/bash")
|
||||||
(string-append #$output "/bin/mono")
|
(string-append #$output "/bin/mono")
|
||||||
(string-append #$output "/lib/mono/4.5/resx2sr.exe"))))
|
(string-append #$output "/lib/mono/4.5/resx2sr.exe"))))
|
||||||
(chmod resx2sr #o755))))))))
|
(chmod resx2sr #o755))))))))
|
||||||
|
@ -1934,113 +1936,771 @@ most of the heavy lifting.")
|
||||||
|
|
||||||
(define-public mono mono-6.12.0)
|
(define-public mono mono-6.12.0)
|
||||||
|
|
||||||
(define mono-system-collections-immutable-bootstrap
|
(define-public mono-system-collections-immutable-bootstrap
|
||||||
(package
|
(hidden-package
|
||||||
(name "mono-system-collections-immutable-bootstrap")
|
(package
|
||||||
(version
|
(name "mono-system-collections-immutable-bootstrap")
|
||||||
(package-version mono))
|
(version
|
||||||
(source
|
(package-version mono))
|
||||||
(package-source mono))
|
(source
|
||||||
(build-system gnu-build-system)
|
(package-source mono))
|
||||||
(native-inputs
|
(build-system gnu-build-system)
|
||||||
(list mono))
|
(native-inputs
|
||||||
(arguments
|
(list mono))
|
||||||
(list #:phases
|
(arguments
|
||||||
#~(modify-phases %standard-phases
|
(list #:tests? #f ; tests would require xunit which is not in the bootstrap path.
|
||||||
(delete 'bootstrap)
|
#:phases
|
||||||
(add-after 'unpack 'prepare
|
#~(modify-phases %standard-phases
|
||||||
(lambda _
|
(add-after 'unpack 'prepare
|
||||||
(chdir "external/corefx/src/System.Collections.Immutable/src")
|
(lambda _
|
||||||
(substitute* "../../Common/src/System/SR.cs"
|
(chdir "external/corefx/src/System.Collections.Immutable/src")
|
||||||
;; I don't want to drag System.Security.AccessControl into the bootstrap path.
|
(substitute* "../../Common/src/System/SR.cs"
|
||||||
(("new ResourceManager[(]ResourceType[)]")
|
;; I don't want to drag System.Security.AccessControl into the bootstrap path.
|
||||||
"new ResourceManager(\"System.Collections.Immutable\", typeof(SR).Assembly)"))))
|
(("new ResourceManager[(]ResourceType[)]")
|
||||||
(delete 'configure)
|
"new ResourceManager(\"System.Collections.Immutable\", typeof(SR).Assembly)"))))
|
||||||
(replace 'build
|
(delete 'configure) ; no "configure" script exists
|
||||||
(lambda* (#:key inputs #:allow-other-keys)
|
(replace 'build
|
||||||
(invoke "resx2sr" "-o" "SR.cs" "-n" "System.SR"
|
(lambda* (#:key inputs #:allow-other-keys)
|
||||||
"--warn-mismatch"
|
(invoke "resx2sr" "-o" "SR.cs" "-n" "System.SR"
|
||||||
"Resources/Strings.resx")
|
"--warn-mismatch"
|
||||||
(apply invoke "mcs"
|
"Resources/Strings.resx")
|
||||||
"-target:library"
|
(apply invoke "mcs"
|
||||||
"-langversion:7.2"
|
"-target:library"
|
||||||
|
"-langversion:7.2"
|
||||||
;;; mono can't do it: "-d:FEATURE_ITEMREFAPI"
|
;;; mono can't do it: "-d:FEATURE_ITEMREFAPI"
|
||||||
"-out:System.Collections.Immutable.dll"
|
"-out:System.Collections.Immutable.dll"
|
||||||
"../../Common/src/System/Runtime/Versioning/NonVersionableAttribute.cs"
|
"../../Common/src/System/Runtime/Versioning/NonVersionableAttribute.cs"
|
||||||
"../../Common/src/System/SR.cs"
|
"../../Common/src/System/SR.cs"
|
||||||
(find-files "." "\\.cs$"))))
|
(find-files "." "\\.cs$"))))
|
||||||
(delete 'check)
|
(replace 'install
|
||||||
(replace 'install
|
(lambda* (#:key outputs #:allow-other-keys)
|
||||||
(lambda* (#:key outputs #:allow-other-keys)
|
(let* ((lib-dir (string-append #$output "/lib/mono/4.5")))
|
||||||
(let* ((lib-dir (string-append #$output "/lib/mono/4.5")))
|
(mkdir-p lib-dir)
|
||||||
(mkdir-p lib-dir)
|
(install-file "System.Collections.Immutable.dll"
|
||||||
(install-file "System.Collections.Immutable.dll"
|
lib-dir)))))))
|
||||||
lib-dir)))))))
|
(synopsis "System.Collections.Immutable library for bootstrapping")
|
||||||
(synopsis "System.Collections.Immutable library for bootstrapping")
|
(description "This package builds the System.Collections.Immutable library from
|
||||||
(description "This package builds the System.Collections.Immutable library from
|
|
||||||
the source code included within the Mono source tree.")
|
the source code included within the Mono source tree.")
|
||||||
(home-page "https://dot.net/")
|
(home-page "https://dot.net/")
|
||||||
(license license:expat)))
|
(license license:expat))))
|
||||||
|
|
||||||
(define mono-system-reflection-metadata-bootstrap
|
(define-public mono-system-reflection-metadata-bootstrap
|
||||||
|
(hidden-package
|
||||||
|
(package
|
||||||
|
(name "mono-system-reflection-metadata-bootstrap")
|
||||||
|
;; Upstream version 1.4.2; but for bootstrap packages it's more useful to have the mono version here.
|
||||||
|
(version
|
||||||
|
(package-version mono))
|
||||||
|
(source
|
||||||
|
(package-source mono))
|
||||||
|
(build-system gnu-build-system)
|
||||||
|
(inputs
|
||||||
|
(list mono-system-collections-immutable-bootstrap)) ; not required: mono-system-buffers-bootstrap
|
||||||
|
(native-inputs
|
||||||
|
(list mono))
|
||||||
|
(arguments
|
||||||
|
(list #:tests? #f ; would require xunit which is not in the bootstrap path
|
||||||
|
#:phases
|
||||||
|
#~(modify-phases %standard-phases
|
||||||
|
(add-after 'unpack 'chdir
|
||||||
|
(lambda _
|
||||||
|
(chdir "external/corefx/src/System.Reflection.Metadata/src")
|
||||||
|
(substitute* "../../Common/src/System/SR.cs"
|
||||||
|
;; I don't want to drag System.Security.AccessControl into the bootstrap path.
|
||||||
|
(("new ResourceManager[(]ResourceType[)]")
|
||||||
|
"new ResourceManager(\"System.Collections.Immutable\", typeof(SR).Assembly)"))))
|
||||||
|
(add-after 'chdir 'prepare
|
||||||
|
(lambda* (#:key inputs #:allow-other-keys)
|
||||||
|
(for-each
|
||||||
|
(lambda (name)
|
||||||
|
(if (file-exists? name)
|
||||||
|
(delete-file name)
|
||||||
|
(format #t "Warning: File ~s doesn't exist~%" name)))
|
||||||
|
;; We don't need those since they would be for different .NET standards.
|
||||||
|
'("./System/Reflection/Internal/Utilities/CriticalDisposableObject.netstandard1.1.cs"
|
||||||
|
"./System/Reflection/Internal/Utilities/EncodingHelper.netcoreapp.cs"
|
||||||
|
"./System/Reflection/Internal/Utilities/FileStreamReadLightUp.netstandard1.1.cs"
|
||||||
|
"./System/Reflection/Internal/Utilities/MemoryMapLightUp.netstandard1.1.cs"))))
|
||||||
|
(delete 'configure) ; no "configure" script exists
|
||||||
|
(replace 'build
|
||||||
|
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||||
|
(invoke "resx2sr" "-o" "SR.cs" "-n" "System.SR" "--warn-mismatch"
|
||||||
|
"Resources/Strings.resx")
|
||||||
|
(apply invoke "mcs"
|
||||||
|
"-target:library"
|
||||||
|
"-langversion:7.2"
|
||||||
|
"-unsafe"
|
||||||
|
"-out:System.Reflection.Metadata.dll"
|
||||||
|
(string-append "-r:"
|
||||||
|
(search-input-file inputs
|
||||||
|
"/lib/mono/4.5/System.Collections.Immutable.dll"))
|
||||||
|
"../../Common/src/System/SR.cs"
|
||||||
|
(find-files "." "\\.cs$"))))
|
||||||
|
(replace 'install
|
||||||
|
(lambda* (#:key outputs #:allow-other-keys)
|
||||||
|
(let* ((lib-dir (string-append #$output "/lib/mono/4.5")))
|
||||||
|
(install-file "System.Reflection.Metadata.dll" lib-dir)))))))
|
||||||
|
(synopsis "System.Reflection.Metadata library for bootstrapping")
|
||||||
|
(description "This package builds the System.Reflection.Metadata library from
|
||||||
|
the source code included within the Mono source tree.")
|
||||||
|
(home-page "https://dot.net/")
|
||||||
|
(license license:expat))))
|
||||||
|
|
||||||
|
;; too new version: 15.9.21.664
|
||||||
|
;; too old (no support for mono) version: 14.0
|
||||||
|
(define-public msbuild
|
||||||
(package
|
(package
|
||||||
(name "mono-system-reflection-metadata-bootstrap")
|
(name "msbuild")
|
||||||
;; Upstream version 1.4.2; but for bootstrap packages it's more useful to have the mono version here.
|
(version "15.7.179")
|
||||||
(version
|
|
||||||
(package-version mono))
|
|
||||||
(source
|
(source
|
||||||
(package-source mono))
|
(origin
|
||||||
|
(method git-fetch)
|
||||||
|
(uri (git-reference
|
||||||
|
(url "https://github.com/dotnet/msbuild")
|
||||||
|
(commit (string-append "v" version))))
|
||||||
|
(file-name (git-file-name name version))
|
||||||
|
(sha256
|
||||||
|
(base32
|
||||||
|
"1fhd4z9575lwgy6l3wisih7g6qd6j3wb99kz246028dzm0rh3cfh"))
|
||||||
|
(patches
|
||||||
|
(search-patches
|
||||||
|
"mono-msbuild-15.7.179-fix-build.patch"
|
||||||
|
"mono-msbuild-15.7.179-fix-resources.patch"))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(inputs
|
(inputs
|
||||||
(list mono-system-collections-immutable-bootstrap)) ; not required: mono-system-buffers-bootstrap
|
(list bash-minimal
|
||||||
(native-inputs
|
mono mono-system-reflection-metadata-bootstrap
|
||||||
(list mono))
|
mono-system-collections-immutable-bootstrap))
|
||||||
(arguments
|
(arguments
|
||||||
(list #:phases
|
(list #:tests? #f ; would require xunit which is not in the bootstrap path
|
||||||
|
#:phases
|
||||||
#~(modify-phases %standard-phases
|
#~(modify-phases %standard-phases
|
||||||
(delete 'bootstrap)
|
(replace 'configure
|
||||||
(add-after 'unpack 'chdir
|
|
||||||
(lambda _
|
(lambda _
|
||||||
(chdir "external/corefx/src/System.Reflection.Metadata/src")
|
(define (generate-version-file filename version-str internals-list)
|
||||||
(substitute* "../../Common/src/System/SR.cs"
|
(call-with-output-file filename
|
||||||
;; I don't want to drag System.Security.AccessControl into the bootstrap path.
|
(lambda (port)
|
||||||
(("new ResourceManager[(]ResourceType[)]")
|
(format port
|
||||||
"new ResourceManager(\"System.Collections.Immutable\", typeof(SR).Assembly)"))))
|
"[assembly: System.Reflection.AssemblyVersion(\"~a\")]~%"
|
||||||
(add-after 'chdir 'prepare
|
version-str)
|
||||||
(lambda* (#:key inputs #:allow-other-keys)
|
(format port
|
||||||
(for-each
|
"[assembly: System.Reflection.AssemblyFileVersion(\"~a\")]~%"
|
||||||
(lambda (name)
|
version-str)
|
||||||
(if (file-exists? name)
|
;; TODO: and commit id, if any.
|
||||||
(delete-file name)
|
(format port
|
||||||
(format #t "Warning: File ~s doesn't exist~%" name)))
|
"[assembly: System.Reflection.AssemblyInformationalVersion(\"~a\")]~%"
|
||||||
;; We don't need those since they would be for different .NET standards.
|
version-str)
|
||||||
'("./System/Reflection/Internal/Utilities/CriticalDisposableObject.netstandard1.1.cs"
|
(for-each
|
||||||
"./System/Reflection/Internal/Utilities/EncodingHelper.netcoreapp.cs"
|
(lambda (internal-name)
|
||||||
"./System/Reflection/Internal/Utilities/FileStreamReadLightUp.netstandard1.1.cs"
|
(format port
|
||||||
"./System/Reflection/Internal/Utilities/MemoryMapLightUp.netstandard1.1.cs"))))
|
"[assembly: System.Runtime.CompilerServices.InternalsVisibleTo(\"~a\")]~%"
|
||||||
(delete 'configure)
|
internal-name))
|
||||||
|
internals-list))))
|
||||||
|
(let ((version #$(package-version this-package)))
|
||||||
|
(substitute* "src/Build/Resources/AssemblyResources.cs"
|
||||||
|
;; There's a caller that has a caller that checks for null.
|
||||||
|
;;
|
||||||
|
;; But if this check is here, the high-level fallback will
|
||||||
|
;; not work since it only falls back on null, not on
|
||||||
|
;; exception.
|
||||||
|
;;
|
||||||
|
;; So what's this about?! Remove it.
|
||||||
|
(("ErrorUtilities.VerifyThrow[(]resource != null, .*")
|
||||||
|
"\n"))
|
||||||
|
(substitute* "src/Shared/AssemblyNameExtension.cs"
|
||||||
|
(("\\<ISerializable\\>")
|
||||||
|
"System.Runtime.Serialization.ISerializable")
|
||||||
|
(("\\<StreamingContext\\>")
|
||||||
|
"System.Runtime.Serialization.StreamingContext")
|
||||||
|
(("\\<SerializationInfo\\>")
|
||||||
|
"System.Runtime.Serialization.SerializationInfo"))
|
||||||
|
;; ThisAssembly would have been generated by MSBuild--which we don't have yet.
|
||||||
|
(substitute* '("src/Shared/CommunicationsUtilities.cs"
|
||||||
|
"src/Tasks/StronglyTypedResourceBuilder.cs")
|
||||||
|
(("ThisAssembly[.]AssemblyInformationalVersion")
|
||||||
|
(string-append "\"" version "\""))
|
||||||
|
(("ThisAssembly[.]Version")
|
||||||
|
(string-append "\"" version "\"")))
|
||||||
|
(substitute* "src/Shared/FrameworkLocationHelper.cs"
|
||||||
|
;; That is unused anyway.
|
||||||
|
(("^using Microsoft.Build.Evaluation;")
|
||||||
|
""))
|
||||||
|
(substitute* '("src/Tasks/AspNetCompiler.cs"
|
||||||
|
"src/Tasks/AxTlbBaseTask.cs"
|
||||||
|
"src/Tasks/AxImp.cs"
|
||||||
|
"src/Tasks/TlbImp.cs"
|
||||||
|
"src/Tasks/Exec.cs"
|
||||||
|
"src/Tasks/ResGen.cs"
|
||||||
|
"src/Tasks/LC.cs"
|
||||||
|
"src/Tasks/SGen.cs"
|
||||||
|
"src/Tasks/WinMDExp.cs")
|
||||||
|
(("protected override bool ValidateParameters")
|
||||||
|
"protected internal override bool ValidateParameters")
|
||||||
|
(("override protected bool ValidateParameters") ; SGen.cs
|
||||||
|
"protected internal override bool ValidateParameters"))
|
||||||
|
(substitute* "src/Shared/Modifiers.cs"
|
||||||
|
(("^using Microsoft.Build.Internal;")
|
||||||
|
""))
|
||||||
|
(substitute* "src/MSBuild/OutOfProcTaskHostNode.cs"
|
||||||
|
(("^using Microsoft.Build.BackEnd;")
|
||||||
|
"using Microsoft.Build.BackEnd;
|
||||||
|
using Microsoft.Build.BackEnd.Components.Caching;"))
|
||||||
|
(generate-version-file "Version-Framework.cs" version
|
||||||
|
'("Microsoft.Build.Utilities.Core"
|
||||||
|
"Microsoft.Build.Tasks.Core"
|
||||||
|
"Microsoft.Build.Tasks"
|
||||||
|
"Microsoft.Build"))
|
||||||
|
(generate-version-file "Version-Utilities.cs" version
|
||||||
|
'("Microsoft.Build"
|
||||||
|
"Microsoft.Build.Tasks.Core"
|
||||||
|
"Microsoft.Build.Tasks"
|
||||||
|
"MSBuild"))
|
||||||
|
(generate-version-file "Version.cs" version
|
||||||
|
'("MSBuild"))
|
||||||
|
(generate-version-file "Version-exe.cs" version
|
||||||
|
'()))))
|
||||||
(replace 'build
|
(replace 'build
|
||||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
(lambda* (#:key inputs #:allow-other-keys)
|
||||||
(invoke "resx2sr" "-o" "SR.cs" "-n" "System.SR" "--warn-mismatch"
|
(let* ((mcs-flags '("-langversion:7.2" "-unsafe" "-d:NET472" "-d:STRONG_NAME"
|
||||||
"Resources/Strings.resx")
|
"-d:MONO" "-d:STANDALONEBUILD"
|
||||||
(apply invoke "mcs"
|
;; Otherwise the build would fail.
|
||||||
"-target:library"
|
"-d:FEATURE_COM_INTEROP"
|
||||||
"-langversion:7.2"
|
;; Otherwise it would try to load shell32.
|
||||||
"-unsafe"
|
"-d:FEATURE_SPECIAL_FOLDERS"
|
||||||
"-out:System.Reflection.Metadata.dll"
|
;"-d:FEATURE_BINARY_SERIALIZATION"
|
||||||
; ,(string-append "-r:" buffers-dll)
|
;"-d:FEATURE_ASSEMBLY_LOADFROM"
|
||||||
(string-append "-r:"
|
;"-d:FEATURE_RESX_RESOURCE_READER"
|
||||||
(search-input-file inputs
|
"-d:FEATURE_RESGENCACHE"
|
||||||
"/lib/mono/4.5/System.Collections.Immutable.dll"))
|
"-d:FEATURE_CODEDOM"
|
||||||
"../../Common/src/System/SR.cs"
|
;"-d:FEATURE_SYSTEM_CONFIGURATION"
|
||||||
(find-files "." "\\.cs$"))))
|
"-d:FEATURE_APPDOMAIN"
|
||||||
(delete 'check)
|
;"-d:FEATURE_APM" ; ?
|
||||||
|
"-d:FEATURE_TYPE_INVOKEMEMBER"
|
||||||
|
"-d:FEATURE_APPDOMAIN_UNHANDLED_EXCEPTION")))
|
||||||
|
(mkdir "artifacts")
|
||||||
|
|
||||||
|
;;; --- 1. Build Microsoft.Build.Framework.dll
|
||||||
|
|
||||||
|
;;; Note: No generating SR.cs for now.
|
||||||
|
|
||||||
|
(invoke "resgen" "src/Shared/Resources/Strings.shared.resx"
|
||||||
|
"artifacts/Microsoft.Build.Framework.Strings.shared.resources")
|
||||||
|
|
||||||
|
(apply invoke "mcs"
|
||||||
|
(append mcs-flags
|
||||||
|
'("-target:library" "-out:artifacts/Microsoft.Build.Framework.dll"
|
||||||
|
"-resource:artifacts/Microsoft.Build.Framework.Strings.shared.resources"
|
||||||
|
"-r:System.Xaml.dll"
|
||||||
|
"Version-Framework.cs")
|
||||||
|
(find-files "src/Framework" "\\.cs$")
|
||||||
|
(list "src/Shared/Constants.cs"
|
||||||
|
"src/Shared/BinaryWriterExtensions.cs")))
|
||||||
|
|
||||||
|
;;; --- 2. Build Microsoft.Build.Utilities.Core.dll
|
||||||
|
|
||||||
|
;; No resx2sr since src/Utilities/AssemblyResources.cs is hand-written.
|
||||||
|
(invoke "resgen" "src/Shared/Resources/Strings.shared.resx"
|
||||||
|
"artifacts/Microsoft.Build.Utilities.Core.Strings.shared.resources")
|
||||||
|
(invoke "resgen" "src/Utilities/Resources/Strings.resx"
|
||||||
|
"artifacts/Microsoft.Build.Utilities.Core.Strings.resources")
|
||||||
|
(apply invoke "mcs"
|
||||||
|
(append mcs-flags
|
||||||
|
'("-target:library" "-out:artifacts/Microsoft.Build.Utilities.Core.dll"
|
||||||
|
"-resource:artifacts/Microsoft.Build.Utilities.Core.Strings.shared.resources"
|
||||||
|
"-resource:artifacts/Microsoft.Build.Utilities.Core.Strings.resources"
|
||||||
|
"-r:System.Runtime.Serialization.dll"
|
||||||
|
"-r:artifacts/Microsoft.Build.Framework.dll"
|
||||||
|
"src/Utilities/AssemblyResources.cs"
|
||||||
|
"Version-Utilities.cs")
|
||||||
|
(map (lambda (f) (string-append "src/Utilities/" f))
|
||||||
|
'("SDKManifest.cs"
|
||||||
|
"ApiContract.cs"
|
||||||
|
"SDKType.cs"
|
||||||
|
"Logger.cs"
|
||||||
|
"TrackedDependencies/FlatTrackingData.cs"
|
||||||
|
"TrackedDependencies/CanonicalTrackedOutputFiles.cs"
|
||||||
|
"TrackedDependencies/CanonicalTrackedInputFiles.cs"
|
||||||
|
"TrackedDependencies/CanonicalTrackedFilesHelper.cs"
|
||||||
|
"TrackedDependencies/FileTracker.cs"
|
||||||
|
"TrackedDependencies/DependencyTableCache.cs"
|
||||||
|
"AssemblyFolders/AssemblyFoldersExInfo.cs"
|
||||||
|
"AssemblyFolders/AssemblyFoldersFromConfigInfo.cs"
|
||||||
|
"AssemblyInfo.cs"
|
||||||
|
"ProcessorArchitecture.cs"
|
||||||
|
"FxCopExclusions/Microsoft.Build.Utilities.Suppressions.cs"
|
||||||
|
"PlatformManifest.cs"
|
||||||
|
"ExtensionSDK.cs"
|
||||||
|
"CommandLineBuilder.cs"
|
||||||
|
"TaskItem.cs"
|
||||||
|
"ToolTask.cs"
|
||||||
|
"TargetPlatformSDK.cs"
|
||||||
|
"AppDomainIsolatedTask.cs"
|
||||||
|
"Task.cs"
|
||||||
|
"ProcessExtensions.cs"
|
||||||
|
"MuxLogger.cs"))
|
||||||
|
(map (lambda (f) (string-append "src/Shared/" f))
|
||||||
|
'("FxCopExclusions/Microsoft.Build.Shared.Suppressions.cs"
|
||||||
|
"EncodingStringWriter.cs"
|
||||||
|
"EncodingUtilities.cs"
|
||||||
|
"CopyOnWriteDictionary.cs"
|
||||||
|
"Tracing.cs"
|
||||||
|
"TaskLoggingHelper.cs"
|
||||||
|
"TaskLoggingHelperExtension.cs"
|
||||||
|
"EventArgsFormatting.cs"
|
||||||
|
"FileDelegates.cs" ; req by tasks
|
||||||
|
"NativeMethodsShared.cs" ; again ???
|
||||||
|
"MSBuildNameIgnoreCaseComparer.cs"
|
||||||
|
"BuildEventFileInfo.cs"
|
||||||
|
"ErrorUtilities.cs"
|
||||||
|
"EscapingUtilities.cs"
|
||||||
|
"FileUtilities.cs"
|
||||||
|
"FileUtilities.GetFolderPath.cs"
|
||||||
|
"TempFileUtilities.cs"
|
||||||
|
"Modifiers.cs"
|
||||||
|
"FileUtilitiesRegex.cs"
|
||||||
|
"HybridDictionary.cs"
|
||||||
|
"IConstrainedEqualityComparer.cs"
|
||||||
|
"ResourceUtilities.cs"
|
||||||
|
"StringBuilderCache.cs"
|
||||||
|
"Traits.cs"
|
||||||
|
"IElementLocation.cs"
|
||||||
|
"INodePacket.cs"
|
||||||
|
"INodePacketFactory.cs"
|
||||||
|
"INodePacketHandler.cs"
|
||||||
|
"INodePacketTranslatable.cs"
|
||||||
|
"INodePacketTranslator.cs"
|
||||||
|
"ExceptionHandling.cs"
|
||||||
|
"ReadOnlyEmptyCollection.cs"
|
||||||
|
"OpportunisticIntern.cs"
|
||||||
|
"AssemblyUtilities.cs"
|
||||||
|
"ReadOnlyEmptyDictionary.cs"
|
||||||
|
"CanonicalError.cs"
|
||||||
|
"VisualStudioLocationHelper.cs"
|
||||||
|
"AssemblyFolders/Serialization/AssemblyFolderItem.cs"
|
||||||
|
"AssemblyFolders/Serialization/AssemblyFolderCollection.cs"
|
||||||
|
"BuildEnvironmentHelper.cs"
|
||||||
|
"EnvironmentUtilities.cs"
|
||||||
|
"VersionUtilities.cs"
|
||||||
|
"InternalErrorException.cs"))))
|
||||||
|
|
||||||
|
;;; --- 3. Build Microsoft.Build.Tasks.Core.dll
|
||||||
|
|
||||||
|
;; No resx2sr since src/Tasks/AssemblyResources.cs is
|
||||||
|
;; hand-written.
|
||||||
|
(invoke "resgen" "src/Tasks/Resources/Strings.resx"
|
||||||
|
"artifacts/Microsoft.Build.Tasks.Core.Strings.resources")
|
||||||
|
(apply invoke "mcs"
|
||||||
|
(append mcs-flags
|
||||||
|
`("-d:MICROSOFT_BUILD_TASKS"
|
||||||
|
"-target:library"
|
||||||
|
"-out:artifacts/Microsoft.Build.Tasks.Core.dll"
|
||||||
|
"-resource:artifacts/Microsoft.Build.Tasks.Core.Strings.resources,Microsoft.Build.Tasks.Core.Strings"
|
||||||
|
"-r:System.Xml.Linq.dll"
|
||||||
|
"-r:artifacts/Microsoft.Build.Framework.dll"
|
||||||
|
;; This should contain ToolLocationHelper--but it's impossible.
|
||||||
|
"-r:artifacts/Microsoft.Build.Utilities.Core.dll"
|
||||||
|
"-r:System.Windows.Forms.dll" ; ResXDataNode
|
||||||
|
,(string-append "-r:"
|
||||||
|
(search-input-file inputs
|
||||||
|
"/lib/mono/4.5/System.Reflection.Metadata.dll"))
|
||||||
|
,(string-append "-r:"
|
||||||
|
(search-input-file inputs
|
||||||
|
"lib/mono/4.5/System.Collections.Immutable.dll"))
|
||||||
|
"Version.cs")
|
||||||
|
(map (lambda (f) (string-append "src/Tasks/" f))
|
||||||
|
'(;; Otherwise impossible to use since it requires weird things.
|
||||||
|
"../Utilities/ToolLocationHelper.cs"
|
||||||
|
"Delegate.cs"
|
||||||
|
"StrongNameUtils.cs"
|
||||||
|
"AssemblyRegistrationCache.cs"
|
||||||
|
"StateFileBase.cs"
|
||||||
|
"AppDomainIsolatedTaskExtension.cs"
|
||||||
|
"SdkToolsPathUtility.cs"
|
||||||
|
"StronglyTypedResourceBuilder.cs"
|
||||||
|
"Al.cs" "AppConfig/AppConfig.cs"
|
||||||
|
"AppConfig/AppConfigException.cs"
|
||||||
|
"AppConfig/BindingRedirect.cs"
|
||||||
|
"AppConfig/DependentAssembly.cs"
|
||||||
|
"AppConfig/RuntimeSection.cs"
|
||||||
|
"AspNetCompiler.cs"
|
||||||
|
"AssignCulture.cs"
|
||||||
|
"AssignLinkMetadata.cs"
|
||||||
|
"AssignProjectConfiguration.cs"
|
||||||
|
"AssignTargetPath.cs"
|
||||||
|
"AssemblyDependency/AssemblyFoldersExResolver.cs"
|
||||||
|
"AssemblyDependency/AssemblyFoldersFromConfig/AssemblyFoldersFromConfigCache.cs"
|
||||||
|
"AssemblyDependency/AssemblyFoldersFromConfig/AssemblyFoldersFromConfigResolver.cs"
|
||||||
|
"AssemblyDependency/AssemblyFoldersResolver.cs"
|
||||||
|
"AssemblyDependency/AssemblyInformation.cs"
|
||||||
|
"AssemblyDependency/AssemblyNameReference.cs"
|
||||||
|
"AssemblyDependency/AssemblyNameReferenceAscendingVersionComparer.cs"
|
||||||
|
"AssemblyDependency/AssemblyResolution.cs"
|
||||||
|
"AssemblyDependency/AssemblyResolutionConstants.cs"
|
||||||
|
"AssemblyDependency/BadImageReferenceException.cs"
|
||||||
|
"AssemblyDependency/CandidateAssemblyFilesResolver.cs"
|
||||||
|
"AssemblyDependency/ConflictLossReason.cs"
|
||||||
|
"AssemblyDependency/CopyLocalState.cs"
|
||||||
|
"AssemblyDependency/DependencyResolutionException.cs"
|
||||||
|
"AssemblyDependency/DirectoryResolver.cs"
|
||||||
|
"AssemblyDependency/DisposableBase.cs"
|
||||||
|
"AssemblyDependency/FrameworkPathResolver.cs"
|
||||||
|
"AssemblyDependency/GacResolver.cs"
|
||||||
|
"AssemblyDependency/GlobalAssemblyCache.cs"
|
||||||
|
"AssemblyDependency/HintPathResolver.cs"
|
||||||
|
"AssemblyDependency/InstalledAssemblies.cs"
|
||||||
|
"AssemblyDependency/InvalidReferenceAssemblyNameException.cs"
|
||||||
|
"AssemblyDependency/NoMatchReason.cs"
|
||||||
|
"AssemblyDependency/RawFilenameResolver.cs"
|
||||||
|
"AssemblyDependency/Reference.cs"
|
||||||
|
"AssemblyDependency/ReferenceResolutionException.cs"
|
||||||
|
"AssemblyDependency/ReferenceTable.cs"
|
||||||
|
"AssemblyDependency/ResolutionSearchLocation.cs"
|
||||||
|
"AssemblyDependency/Resolver.cs"
|
||||||
|
"AssemblyDependency/ResolveAssemblyReference.cs"
|
||||||
|
"AssemblyDependency/TaskItemSpecFilenameComparer.cs"
|
||||||
|
"AssemblyDependency/UnificationReason.cs"
|
||||||
|
"AssemblyDependency/UnificationVersion.cs"
|
||||||
|
"AssemblyDependency/UnifiedAssemblyName.cs"
|
||||||
|
"AssemblyDependency/WarnOrErrorOnTargetArchitectureMismatchBehavior.cs"
|
||||||
|
"AssemblyDependency/GenerateBindingRedirects.cs"
|
||||||
|
"AssemblyFolder.cs" "AssemblyInfo.cs" "AssemblyRemapping.cs"
|
||||||
|
"AxImp.cs"
|
||||||
|
"AxTlbBaseTask.cs"
|
||||||
|
"BuildCacheDisposeWrapper.cs"
|
||||||
|
"CallTarget.cs"
|
||||||
|
"CodeTaskFactory.cs"
|
||||||
|
"CombinePath.cs"
|
||||||
|
"CommandLineBuilderExtension.cs"
|
||||||
|
"ComReferenceResolutionException.cs"
|
||||||
|
"ComReferenceTypes.cs"
|
||||||
|
"ComReferenceWrapperInfo.cs"
|
||||||
|
"ConvertToAbsolutePath.cs"
|
||||||
|
"Copy.cs"
|
||||||
|
"CreateCSharpManifestResourceName.cs"
|
||||||
|
"CreateItem.cs"
|
||||||
|
"CreateManifestResourceName.cs"
|
||||||
|
"CreateProperty.cs"
|
||||||
|
"CreateVisualBasicManifestResourceName.cs"
|
||||||
|
"CSharpParserUtilities.cs"
|
||||||
|
"Culture.cs"
|
||||||
|
"CultureInfoCache.cs"
|
||||||
|
"Delete.cs"
|
||||||
|
"Dependencies.cs"
|
||||||
|
"DependencyFile.cs"
|
||||||
|
"Error.cs"
|
||||||
|
"ErrorFromResources.cs"
|
||||||
|
"Exec.cs"
|
||||||
|
"ExtractedClassName.cs"
|
||||||
|
"FileIO/ReadLinesFromFile.cs"
|
||||||
|
"FileIO/WriteLinesToFile.cs"
|
||||||
|
"FileState.cs"
|
||||||
|
"FindAppConfigFile.cs"
|
||||||
|
"FindInList.cs"
|
||||||
|
"FindInvalidProjectReferences.cs"
|
||||||
|
"FormatUrl.cs"
|
||||||
|
"FormatVersion.cs"
|
||||||
|
"FxCopExclusions/Microsoft.Build.Tasks.Suppressions.cs"
|
||||||
|
"GenerateResource.cs"
|
||||||
|
"GetAssemblyIdentity.cs"
|
||||||
|
"GetFrameworkPath.cs"
|
||||||
|
"GetFrameworkSDKPath.cs"
|
||||||
|
"GetInstalledSDKLocations.cs"
|
||||||
|
"GetReferenceAssemblyPaths.cs"
|
||||||
|
"GetSDKReferenceFiles.cs"
|
||||||
|
"Hash.cs"
|
||||||
|
"IAnalyzerHostObject.cs"
|
||||||
|
"ICscHostObject.cs"
|
||||||
|
"ICscHostObject2.cs"
|
||||||
|
"ICscHostObject3.cs"
|
||||||
|
"ICscHostObject4.cs"
|
||||||
|
"IComReferenceResolver.cs"
|
||||||
|
"IVbcHostObject.cs"
|
||||||
|
"IVbcHostObject2.cs"
|
||||||
|
"IVbcHostObject3.cs"
|
||||||
|
"IVbcHostObject4.cs"
|
||||||
|
"IVbcHostObject5.cs"
|
||||||
|
"IVbcHostObjectFreeThreaded.cs"
|
||||||
|
"InstalledSDKResolver.cs"
|
||||||
|
"InvalidParameterValueException.cs"
|
||||||
|
"LC.cs"
|
||||||
|
"ListOperators/FindUnderPath.cs"
|
||||||
|
"ListOperators/RemoveDuplicates.cs"
|
||||||
|
"LockCheck.cs" "MakeDir.cs"
|
||||||
|
"ManifestUtil/ApplicationIdentity.cs"
|
||||||
|
"ManifestUtil/AssemblyIdentity.cs"
|
||||||
|
"ManifestUtil/AssemblyReference.cs"
|
||||||
|
"ManifestUtil/AssemblyReferenceCollection.cs"
|
||||||
|
"ManifestUtil/BaseReference.cs"
|
||||||
|
"ManifestUtil/CngLightup.cs"
|
||||||
|
"ManifestUtil/ComImporter.cs"
|
||||||
|
"ManifestUtil/CompatibleFramework.cs"
|
||||||
|
"ManifestUtil/CompatibleFrameworkCollection.cs"
|
||||||
|
"ManifestUtil/Constants.cs"
|
||||||
|
"ManifestUtil/ConvertUtil.cs"
|
||||||
|
"ManifestUtil/EmbeddedManifestReader.cs"
|
||||||
|
"ManifestUtil/FileAssociation.cs"
|
||||||
|
"ManifestUtil/FileAssociationCollection.cs"
|
||||||
|
"ManifestUtil/FileReference.cs"
|
||||||
|
"ManifestUtil/FileReferenceCollection.cs"
|
||||||
|
"ManifestUtil/ManifestFormatter.cs"
|
||||||
|
"ManifestUtil/MetadataReader.cs"
|
||||||
|
"ManifestUtil/NativeMethods.cs"
|
||||||
|
"ManifestUtil/OutputMessage.cs"
|
||||||
|
"ManifestUtil/PathUtil.cs"
|
||||||
|
"ManifestUtil/RSAPKCS1SHA256SignatureDescription.cs"
|
||||||
|
"ManifestUtil/Util.cs"
|
||||||
|
"ManifestUtil/XmlNamespaces.cs"
|
||||||
|
"ManifestUtil/XmlUtil.cs"
|
||||||
|
"ManifestUtil/XPaths.cs"
|
||||||
|
"Message.cs"
|
||||||
|
"Move.cs"
|
||||||
|
"MSBuild.cs"
|
||||||
|
"NativeMethods.cs"
|
||||||
|
"ParserState.cs"
|
||||||
|
"RCWForCurrentContext.cs"
|
||||||
|
"RedistList.cs"
|
||||||
|
"RegisterAssembly.cs"
|
||||||
|
"RemoveDir.cs"
|
||||||
|
"RequiresFramework35SP1Assembly.cs"
|
||||||
|
"ResGen.cs"
|
||||||
|
"ResGenDependencies.cs"
|
||||||
|
"ResolveCodeAnalysisRuleSet.cs"
|
||||||
|
"ResolveKeySource.cs"
|
||||||
|
"ResolveManifestFiles.cs"
|
||||||
|
"ResolveNonMSBuildProjectOutput.cs"
|
||||||
|
"ResolveProjectBase.cs"
|
||||||
|
"ResolveSDKReference.cs"
|
||||||
|
"SGen.cs"
|
||||||
|
"StrongNameException.cs"
|
||||||
|
"System.Design.cs"
|
||||||
|
"TaskExtension.cs"
|
||||||
|
"Telemetry.cs"
|
||||||
|
"TlbImp.cs"
|
||||||
|
"ToolTaskExtension.cs"
|
||||||
|
"Touch.cs"
|
||||||
|
"UnregisterAssembly.cs"
|
||||||
|
"VisualBasicParserUtilities.cs"
|
||||||
|
"Warning.cs"
|
||||||
|
"WinMDExp.cs"
|
||||||
|
"WriteCodeFragment.cs"
|
||||||
|
"XmlPeek.cs"
|
||||||
|
"XmlPoke.cs"
|
||||||
|
"XslTransformation.cs"
|
||||||
|
"AssemblyDependency/AssemblyMetadata.cs"))
|
||||||
|
(append
|
||||||
|
(map (lambda (f) (string-append "src/Shared/LanguageParser/" f))
|
||||||
|
'("CSharptokenCharReader.cs"
|
||||||
|
"CSharptokenizer.cs"
|
||||||
|
"tokenChar.cs"
|
||||||
|
"token.cs"
|
||||||
|
"VisualBasictokenCharReader.cs"
|
||||||
|
"VisualBasictokenizer.cs"
|
||||||
|
"CSharptokenEnumerator.cs"
|
||||||
|
"StreamMappedString.cs"
|
||||||
|
"tokenCharReader.cs"
|
||||||
|
"tokenEnumerator.cs"
|
||||||
|
"VisualBasictokenEnumerator.cs"))
|
||||||
|
'("src/Shared/AssemblyNameExtension.cs"
|
||||||
|
"src/Shared/Constants.cs"
|
||||||
|
"src/Shared/NGen.cs"
|
||||||
|
"src/Shared/PropertyParser.cs"
|
||||||
|
"src/Shared/ConversionUtilities.cs"
|
||||||
|
"src/Shared/MetadataConversionUtilities.cs"
|
||||||
|
"src/Shared/AssemblyNameComparer.cs"
|
||||||
|
"src/Shared/AssemblyNameReverseVersionComparer.cs"
|
||||||
|
"src/Shared/FileMatcher.cs"
|
||||||
|
"src/Shared/RegistryHelper.cs"
|
||||||
|
"src/Shared/StrongNameHelpers.cs"
|
||||||
|
"src/Shared/AssemblyFolders/AssemblyFoldersFromConfig.cs" ; class
|
||||||
|
;; Requires Evaluation.
|
||||||
|
"src/Shared/FrameworkLocationHelper.cs"))))
|
||||||
|
|
||||||
|
;;; --- 4. Build Microsoft.Build.dll (The Main Engine)
|
||||||
|
|
||||||
|
;; src/Build/Resources/AssemblyResources.cs was
|
||||||
|
;; hand-written to fall-back to EXE resources,
|
||||||
|
;; so no resx2sr here.
|
||||||
|
|
||||||
|
(invoke "resgen" "src/Shared/Resources/Strings.shared.resx"
|
||||||
|
"artifacts/Microsoft.Build.Strings.shared.resources")
|
||||||
|
(invoke "resgen" "src/Build/Resources/Strings.resx"
|
||||||
|
"artifacts/Microsoft.Build.Strings.resources")
|
||||||
|
(invoke "resgen" "src/MSBuild/Resources/Strings.resx"
|
||||||
|
"artifacts/Microsoft.Build.Strings.commandline.resources")
|
||||||
|
|
||||||
|
(apply invoke "mcs"
|
||||||
|
(append mcs-flags
|
||||||
|
`("-d:BUILD_ENGINE"
|
||||||
|
"-d:FEATURE_ASSEMBLY_LOADFROM"
|
||||||
|
"-d:FEATURE_SYSTEM_CONFIGURATION"
|
||||||
|
"-target:library"
|
||||||
|
"-out:artifacts/Microsoft.Build.dll"
|
||||||
|
"-resource:artifacts/Microsoft.Build.Strings.shared.resources,Microsoft.Build.Strings.shared.resources"
|
||||||
|
"-resource:artifacts/Microsoft.Build.Strings.resources,Microsoft.Build.Strings.resources"
|
||||||
|
"-resource:artifacts/Microsoft.Build.Strings.commandline.resources,Microsoft.Build.Strings.commandline.resources"
|
||||||
|
|
||||||
|
"-r:System.Configuration.dll"
|
||||||
|
"-r:System.Threading.Tasks.Dataflow.dll"
|
||||||
|
"-r:System.IO.Compression.dll"
|
||||||
|
"-r:artifacts/Microsoft.Build.Framework.dll"
|
||||||
|
,(string-append "-r:"
|
||||||
|
(search-input-file inputs
|
||||||
|
"/lib/mono/4.5/System.Collections.Immutable.dll"))
|
||||||
|
"Version.cs")
|
||||||
|
(filter (lambda (name)
|
||||||
|
(not (string-contains name "/Originals/")))
|
||||||
|
(find-files "src/Build" "\\.cs$"))
|
||||||
|
(map (lambda (f) (string-append "src/Shared/" f))
|
||||||
|
'("CollectionHelpers.cs"
|
||||||
|
"Constants.cs"
|
||||||
|
"EscapingUtilities.cs"
|
||||||
|
"FileUtilities.cs"
|
||||||
|
"FileUtilitiesRegex.cs"
|
||||||
|
"TempFileUtilities.cs"
|
||||||
|
"FileUtilities.GetFolderPath.cs"
|
||||||
|
"InterningBinaryReader.cs"
|
||||||
|
"MSBuildNameIgnoreCaseComparer.cs"
|
||||||
|
"NativeMethodsShared.cs"
|
||||||
|
"ResourceUtilities.cs"
|
||||||
|
"StringBuilderCache.cs"
|
||||||
|
"Traits.cs"
|
||||||
|
"IKeyed.cs"
|
||||||
|
"Pair.cs"
|
||||||
|
"EscapingStringExtensions/EscapingStringExtensions.cs"
|
||||||
|
"NodeShutdown.cs"
|
||||||
|
"NodeEngineShutdownReason.cs"
|
||||||
|
"NodePacketFactory.cs"
|
||||||
|
"INodeEndpoint.cs"
|
||||||
|
"NodeBuildComplete.cs"
|
||||||
|
"LogMessagePacketBase.cs"
|
||||||
|
"NodeEndpointOutOfProcBase.cs"
|
||||||
|
"ProjectFileErrorUtilities.cs"
|
||||||
|
"TaskHostConfiguration.cs"
|
||||||
|
"TaskHostTaskCancelled.cs"
|
||||||
|
"TaskHostTaskComplete.cs"
|
||||||
|
"ToolsetElement.cs"
|
||||||
|
"TaskEngineAssemblyResolver.cs"
|
||||||
|
"RegisteredTaskObjectCacheBase.cs"
|
||||||
|
"TypeLoader.cs"
|
||||||
|
"LoadedType.cs"
|
||||||
|
"AssemblyLoadInfo.cs"
|
||||||
|
"ReuseableStringBuilder.cs"
|
||||||
|
"TaskParameter.cs"
|
||||||
|
"TaskParameterTypeVerifier.cs"
|
||||||
|
"OutOfProcTaskHostTaskResult.cs"
|
||||||
|
"VisualStudioConstants.cs"
|
||||||
|
"CommunicationsUtilities.cs"
|
||||||
|
"XMakeAttributes.cs"
|
||||||
|
"XMakeElements.cs"
|
||||||
|
;; Yes, again. It has a feature flag check.
|
||||||
|
"TaskLoggingHelper.cs"
|
||||||
|
"TaskLoggingHelperExtension.cs"
|
||||||
|
"AssemblyNameComparer.cs"
|
||||||
|
"EncodingUtilities.cs"
|
||||||
|
"BuildEventFileInfo.cs"
|
||||||
|
"CopyOnWriteDictionary.cs"
|
||||||
|
"FileDelegates.cs"
|
||||||
|
"HybridDictionary.cs"
|
||||||
|
"IConstrainedEqualityComparer.cs"
|
||||||
|
"IElementLocation.cs"
|
||||||
|
"INodePacket.cs"
|
||||||
|
"INodePacketFactory.cs"
|
||||||
|
"INodePacketHandler.cs"
|
||||||
|
"INodePacketTranslatable.cs"
|
||||||
|
"INodePacketTranslator.cs"
|
||||||
|
"NGen.cs"
|
||||||
|
"OpportunisticIntern.cs"
|
||||||
|
"ErrorUtilities.cs"
|
||||||
|
"ExceptionHandling.cs"
|
||||||
|
"AssemblyUtilities.cs"
|
||||||
|
"AwaitExtensions.cs"
|
||||||
|
"BuildEnvironmentHelper.cs"
|
||||||
|
"ConversionUtilities.cs"
|
||||||
|
"EnvironmentUtilities.cs"
|
||||||
|
"EventArgsFormatting.cs"
|
||||||
|
"FileMatcher.cs"
|
||||||
|
"FrameworkLocationHelper.cs"
|
||||||
|
"NodePacketTranslator.cs"
|
||||||
|
"ProjectErrorUtilities.cs"
|
||||||
|
"ProjectWriter.cs"
|
||||||
|
"PropertyParser.cs"
|
||||||
|
"ReadOnlyEmptyCollection.cs"
|
||||||
|
"ReadOnlyEmptyDictionary.cs"
|
||||||
|
"TaskLoader.cs"
|
||||||
|
"ThreadPoolExtensions.cs"
|
||||||
|
"Tracing.cs"
|
||||||
|
"VersionUtilities.cs"
|
||||||
|
"XmlUtilities.cs"
|
||||||
|
"VisualStudioLocationHelper.cs"
|
||||||
|
"Modifiers.cs"
|
||||||
|
"ReadOnlyCollection.cs"
|
||||||
|
"AssemblyNameExtension.cs"
|
||||||
|
"BufferedReadStream.cs"
|
||||||
|
"CanonicalError.cs"
|
||||||
|
"EncodingStringWriter.cs"
|
||||||
|
"InternalErrorException.cs"))))
|
||||||
|
|
||||||
|
;;; --- 5. Build MSBuild.exe (the executable)
|
||||||
|
|
||||||
|
;; no resx2sr since src/MSBuild/AssemblyResources.cs is hand-written.
|
||||||
|
(invoke "resgen" "src/MSBuild/Resources/Strings.resx"
|
||||||
|
"artifacts/MSBuild.Strings.resources")
|
||||||
|
(invoke "resgen" "src/Shared/Resources/Strings.shared.resx"
|
||||||
|
"artifacts/MSBuild.Strings.shared.resources")
|
||||||
|
(apply invoke "mcs"
|
||||||
|
(append mcs-flags
|
||||||
|
'("-target:exe"
|
||||||
|
"-out:artifacts/MSBuild.exe"
|
||||||
|
;; Add the correct logical names (RHS) for BOTH resource files.
|
||||||
|
"-resource:artifacts/MSBuild.Strings.resources,MSBuild.Strings.resources"
|
||||||
|
"-resource:artifacts/MSBuild.Strings.shared.resources,MSBuild.Strings.shared.resources"
|
||||||
|
"-r:artifacts/Microsoft.Build.dll"
|
||||||
|
"-r:artifacts/Microsoft.Build.Framework.dll"
|
||||||
|
"-r:artifacts/Microsoft.Build.Tasks.Core.dll"
|
||||||
|
"Version-exe.cs")
|
||||||
|
(find-files "src/MSBuild" "\\.cs$")
|
||||||
|
'("src/Shared/QuotingUtilities.cs"
|
||||||
|
"src/Shared/ExceptionHandling.cs"))))))
|
||||||
(replace 'install
|
(replace 'install
|
||||||
(lambda* (#:key outputs #:allow-other-keys)
|
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||||
(let* ((lib-dir (string-append #$output "/lib/mono/4.5")))
|
(let* ((lib-dir (string-append #$output "/lib/mono/msbuild"))
|
||||||
(install-file "System.Reflection.Metadata.dll" lib-dir)))))))
|
(bin-dir (string-append #$output "/bin")))
|
||||||
(synopsis "System.Reflection.Metadata library for bootstrapping")
|
(mkdir-p lib-dir)
|
||||||
(description "This package builds the System.Reflection.Metadata library from
|
(mkdir-p bin-dir)
|
||||||
the source code included within the Mono source tree.")
|
(for-each (lambda (file)
|
||||||
(home-page "https://dot.net/")
|
(install-file file lib-dir))
|
||||||
|
(find-files "artifacts" "(\\.dll|\\.exe)$"))
|
||||||
|
(for-each (lambda (file)
|
||||||
|
(install-file file lib-dir))
|
||||||
|
(find-files "src/Tasks" "\\.(targets|props|tasks)$"))
|
||||||
|
(substitute* '("src/MSBuild/app.amd64.config"
|
||||||
|
"src/MSBuild/app.config")
|
||||||
|
(("</configuration>")
|
||||||
|
(string-append "<runpath path=\""
|
||||||
|
(dirname
|
||||||
|
(search-input-file inputs
|
||||||
|
"/lib/mono/4.5/System.Reflection.Metadata.dll"))
|
||||||
|
":"
|
||||||
|
(dirname
|
||||||
|
(search-input-file inputs
|
||||||
|
"/lib/mono/4.5/System.Collections.Immutable.dll"))
|
||||||
|
"\"/></configuration>")))
|
||||||
|
(copy-file #$(if (target-x86-64? (or (%current-target-system)
|
||||||
|
(%current-system)))
|
||||||
|
"src/MSBuild/app.amd64.config"
|
||||||
|
"src/MSBuild/app.config")
|
||||||
|
(string-append lib-dir "/MSBuild.exe.config"))
|
||||||
|
(let* ((msbuild-exe (string-append lib-dir "/MSBuild.exe"))
|
||||||
|
(wrapper (string-append bin-dir "/msbuild")))
|
||||||
|
(call-with-output-file wrapper
|
||||||
|
(lambda (port)
|
||||||
|
(format port "#!~a
|
||||||
|
exec ~s ~s \"$@\"~%"
|
||||||
|
(search-input-file inputs "/bin/bash")
|
||||||
|
(search-input-file inputs "/bin/mono")
|
||||||
|
msbuild-exe)))
|
||||||
|
(chmod wrapper #o755))))))))
|
||||||
|
(synopsis "Microsoft Build Engine (MSBuild) for mono")
|
||||||
|
(description "This package provides MSBuild, the build tool for .NET.")
|
||||||
|
(home-page "https://github.com/dotnet/msbuild")
|
||||||
(license license:expat)))
|
(license license:expat)))
|
||||||
|
|
24
gnu/packages/patches/mono-msbuild-15.7.179-fix-build.patch
Normal file
24
gnu/packages/patches/mono-msbuild-15.7.179-fix-build.patch
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
Date: 2025-06-13
|
||||||
|
Author: Danny Milosavljevic <dannym@friendly-machines.com>
|
||||||
|
Subject: Mono 6.12.0.206 can do closures but no local functions. Use closures then :P
|
||||||
|
|
||||||
|
--- mono-msbuild-15.7.179-checkout/src/Build/BackEnd/BuildManager/BuildManager.cs.orig 2025-06-13 14:13:15.637777100 +0200
|
||||||
|
+++ mono-msbuild-15.7.179-checkout/src/Build/BackEnd/BuildManager/BuildManager.cs 2025-06-13 14:14:01.888115956 +0200
|
||||||
|
@@ -443,7 +443,7 @@
|
||||||
|
CultureInfo parentThreadCulture = _buildParameters != null ? _buildParameters.Culture : CultureInfo.CurrentCulture;
|
||||||
|
CultureInfo parentThreadUICulture = _buildParameters != null ? _buildParameters.UICulture : CultureInfo.CurrentUICulture;
|
||||||
|
|
||||||
|
- void Callback(object state)
|
||||||
|
+ System.Threading.WaitCallback Callback = (object state) =>
|
||||||
|
{
|
||||||
|
lock (_syncLock)
|
||||||
|
{
|
||||||
|
@@ -475,7 +475,7 @@
|
||||||
|
ShutdownConnectedNodesAsync(true /* abort */);
|
||||||
|
CheckForActiveNodesAndCleanUpSubmissions();
|
||||||
|
}
|
||||||
|
- }
|
||||||
|
+ };
|
||||||
|
|
||||||
|
ThreadPoolExtensions.QueueThreadPoolWorkItemWithCulture(Callback, parentThreadCulture, parentThreadUICulture);
|
||||||
|
}
|
|
@ -0,0 +1,54 @@
|
||||||
|
Date: 2025-06-15
|
||||||
|
Author: Danny Milosavljevic <dannym@friendly-machines.com>
|
||||||
|
Subject: Register the resources from the EXE in the engine DLL as well.
|
||||||
|
|
||||||
|
--- mono-msbuild-15.7.179-checkout/src/MSBuild/AssemblyResources.cs.orig 2025-06-15 20:05:31.372348854 +0200
|
||||||
|
+++ mono-msbuild-15.7.179-checkout/src/MSBuild/AssemblyResources.cs 2025-06-15 20:43:07.563094173 +0200
|
||||||
|
@@ -10,9 +10,24 @@
|
||||||
|
/// <summary>
|
||||||
|
/// This class provides access to the assembly's resources.
|
||||||
|
/// </summary>
|
||||||
|
- internal static class AssemblyResources
|
||||||
|
+ internal static class ExeAssemblyResources
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
+ /// Manual function here. Constructor wouldn't work because that would be
|
||||||
|
+ /// called lazily--i.e. never. No idea how the original mechanism was
|
||||||
|
+ /// supposed to work (probably didn't :P)--but I like explicit better anyway.
|
||||||
|
+ /// </summary>
|
||||||
|
+ internal static void RegisterExe()
|
||||||
|
+ {
|
||||||
|
+ // This is the call that bridges the two assemblies.
|
||||||
|
+ // It calls the static RegisterMSBuildExeResources method that exists on the
|
||||||
|
+ // AssemblyResources class inside the referenced Microsoft.Build.dll.
|
||||||
|
+ // We pass it our own main resource manager.
|
||||||
|
+ Microsoft.Build.Shared.AssemblyResources.RegisterMSBuildExeResources(s_resources);
|
||||||
|
+
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /// <summary>
|
||||||
|
/// Loads the specified resource string, either from the assembly's primary resources, or its shared resources.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>This method is thread-safe.</remarks>
|
||||||
|
@@ -34,8 +49,8 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
// assembly resources
|
||||||
|
- private static readonly ResourceManager s_resources = new ResourceManager("MSBuild.Strings", typeof(AssemblyResources).GetTypeInfo().Assembly);
|
||||||
|
+ private static readonly ResourceManager s_resources = new ResourceManager("MSBuild.Strings", typeof(ExeAssemblyResources).GetTypeInfo().Assembly);
|
||||||
|
// shared resources
|
||||||
|
- private static readonly ResourceManager s_sharedResources = new ResourceManager("MSBuild.Strings.shared", typeof(AssemblyResources).GetTypeInfo().Assembly);
|
||||||
|
+ private static readonly ResourceManager s_sharedResources = new ResourceManager("MSBuild.Strings.shared", typeof(ExeAssemblyResources).GetTypeInfo().Assembly);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
--- mono-msbuild-15.7.179-checkout/src/MSBuild/XMake.cs.orig 2025-06-15 20:01:35.729388083 +0200
|
||||||
|
+++ mono-msbuild-15.7.179-checkout/src/MSBuild/XMake.cs 2025-06-15 20:47:55.337071631 +0200
|
||||||
|
@@ -207,6 +207,8 @@
|
||||||
|
#endif
|
||||||
|
)
|
||||||
|
{
|
||||||
|
+ Microsoft.Build.Shared.ExeAssemblyResources.RegisterExe();
|
||||||
|
+
|
||||||
|
if (Environment.GetEnvironmentVariable("MSBUILDDUMPPROCESSCOUNTERS") == "1")
|
||||||
|
{
|
||||||
|
DumpCounters(true /* initialize only */);
|
Loading…
Add table
Add a link
Reference in a new issue