File msbuild.spec of Package msbuild
#
# spec file for package msbuild.spec
#
# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
Name: msbuild
Version: 16.6
Release: 0
Summary: Microsoft Build Engine (MSbuild) for Mono
License: MIT
Group: Development/Tools/Building
URL: https://github.com/Microsoft/msbuild
Source0: https://github.com/EoflaOE/linux-remote-packaging-msbuild/archive/bootstrap/16.6+xamarinxplat.2020.04.29.14.43.tar.gz#/%{name}-%{version}.tar.gz
Source1: https://github.com/EoflaOE/linux-remote-packaging-msbuild/releases/download/bootstrap%2F16.6%2Bxamarinxplat.2020.04.29.14.43/CoreEssentials.tar.xz
Source2: https://github.com/EoflaOE/linux-remote-packaging-msbuild/releases/download/bootstrap%2F16.6%2Bxamarinxplat.2020.04.29.14.43/CoreEssentials2.tar.xz
# PATCH-FIX-UPSTREAM https://github.com/EoflaOE/linux-remote-packaging-msbuild/pull/2
Patch0: no-wget-curl.patch
BuildRequires: fdupes
BuildRequires: mono-devel
BuildRequires: msbuild-libhostfxr
BuildRequires: pkgconfig
BuildRequires: procps
BuildRequires: unzip
BuildRequires: pkgconfig(libcurl)
BuildRequires: pkgconfig(openssl)
BuildRequires: xz
Requires: mono-devel
BuildArch: noarch
# build package only for platforms that support roslyn
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
%description
The Microsoft Build Engine is a platform for building applications.
This engine, which is also known as MSBuild, provides an XML schema
for a project file that controls how the build platform processes
and builds software. Visual Studio uses MSBuild, but MSBuild does
not depend on Visual Studio. By invoking msbuild.exe on your
project or solution file, you can orchestrate and build products
in environments where Visual Studio isn't installed.
This package contains the main msbuild build system
%package sdkresolver
Summary: Managed portion of helper library for msbuild for .NET Core SDK discovery
Group: Development/Tools/Building
Requires: %{name} = %{version}
Recommends: msbuild-libhostfxr
%description sdkresolver
The Microsoft Build Engine is a platform for building applications.
This package contains the managed portion of the helper library
which will auto-discover the .NET Core SDK on your system
%prep
%setup -q -n linux-remote-packaging-msbuild-bootstrap-16.6-xamarinxplat.2020.04.29.14.43 -a1 -a2
%patch0 -p1
%define _use_internal_dependency_generator 0
%define __find_provides env sh -c 'filelist=($(cat)) && { printf "%{s}\\n" "${filelist[@]}" | %{_prefix}/lib/rpm/find-provides && printf "%{s}\\n" "${filelist[@]}" | %{_prefix}/lib/rpm/mono-find-provides ; } | sort | uniq'
%define __find_requires env sh -c 'filelist=($(cat)) && { printf "%{s}\\n" "${filelist[@]}" | %{_prefix}/lib/rpm/find-requires && printf "%{s}\\n" "${filelist[@]}" | %{_prefix}/lib/rpm/mono-find-requires ; } | sort | uniq | grep -v \\(NuGet.Versioning\\) | grep -v \\(System.Xml.ReaderWriter\\) | grep -v \\(System.IO.Compression\\) | grep -v \\(NuGet.Frameworks\\) | grep -v \\(System.Reflection.Metadata\\) | grep -v \\(System.Net.Http\\) | grep -v \\(System.Composition.TypedParts\\) | grep -v \\(System.Composition.Hosting\\) | grep -v \\(Microsoft.Cci\\) | grep -v \\(NuGet.Common\\) | grep -v \\(System.Security.Cryptography.Algorithms\\) | grep -v \\(System.Xml.XPath.XmlDocument\\) | grep -v \\(NuGet.RuntimeModel\\) | grep -v \\(NuGet.ContentModel\\) | grep -v \\(NuGet.Packaging\\) | grep -v \\(Microsoft.Build.Tasks.Core\\) | grep -v \\(Microsoft.Web.Deployment.Tracing\\) | grep -v \\(Newtonsoft.Json\\) | grep -v \\(System.Runtime.Loader\\) | grep -v \\(xunit.execution.dotnet\\) | grep -v \\(Microsoft.Web.Administration\\) | grep -v \\(NuGet.Client\\) | grep -v \\(System.Composition.Runtime\\) | grep -v \\(Microsoft.Build.Framework\\) | grep -v \\(System.Collections.NonGeneric\\) | grep -v \\(NuGet.ProjectModel\\) | grep -v \\(NuGet.Protocol.Core.v3\\) | grep -v \\(System.Composition.AttributedModel\\) | grep -v \\(xunit.abstractions\\) | grep -v \\(Microsoft.Web.Hosting\\) | grep -v \\(NuGet.Packaging.Core.Types\\) | grep -v \\(Microsoft.Build.Utilities.Core\\) | grep -v \\(System.Security.Cryptography.ProtectedData\\) | grep -v \\(System.Runtime.InteropServices.RuntimeInformation\\) | grep -v \\(System.Text.Encoding.CodePages\\) | grep -v \\(System.Net.Primitives\\) | grep -v \\(System.Net.Requests\\) | grep -v \\(System.ServiceModel.Security\\) | grep -v \\(System.ServiceModel.Primitives\\) | grep -v \\(System.ServiceModel.Duplex\\) | grep -v \\(System.ServiceModel.Http\\) | grep -v \\(xunit.core\\) | grep -v \\(NuGet.Protocol\\) | grep -v \\(System.Security.Principal.Windows\\) | grep -v \\(System.Security.AccessControl\\) | grep -v \\(NuGet.Commands\\) | grep -v \\(NuGet.Configuration\\) | grep -v \\(Microsoft.Build.Tasks.CodeAnalysis\\) | grep -v \\(NuGet.LibraryModel\\) | grep -v \\(System.Data.Common\\) | grep -v \\(System.Globalization.Extensions\\) | grep -v \\(System.Diagnostics.StackTrace\\) | grep -v \\(System.Threading.Overlapped\\) | grep -v \\(System.Security.SecureString\\) | grep -v \\(System.Xml.XPath.XDocument\\) | grep -v \\(NuGet.Credentials\\) | grep -v \\(Microsoft.CodeAnalysis.Razor\\) | grep -v \\(Microsoft.CodeAnalysis.Workspaces\\) | grep -v \\(Microsoft.AspNetCore.Razor.Language\\) | grep -v \\(Microsoft.CodeAnalysis.CSharp\\) | grep -v \\(Microsoft.CodeAnalysis\\) | grep -v 0\\.0\\.0\\.0'
%build
%{?exp_env}
%{?env_options}
./eng/cibuild_bootstrapped_msbuild.sh --host_type mono --configuration Release --skip_tests /p:DisableNerdbankVersioning=true
%install
%{?env_options}
./stage1/mono-msbuild/msbuild mono/build/install.proj /p:MonoInstallPrefix=%{buildroot}/%{_prefix} /p:Configuration=Release-MONO /p:IgnoreDiffFailure=true
sed -i "s@%{buildroot}@@g" %{buildroot}/%{_bindir}/msbuild
find %{buildroot} -name Microsoft.DiaSymReader.Native.*dll -delete
find %{buildroot} -name *.dylib -delete
find %{buildroot} -name *.so -delete
%fdupes %{buildroot}/%{_prefix}
%pretrans -p <lua>
path = "%{_prefix}/lib/mono/msbuild/15.0"
st = posix.stat(path)
if st and st.type == "directory" then
status = os.rename(path, path .. ".rpmmoved")
if not status then
suffix = 0
while not status do
suffix = suffix + 1
status = os.rename(path .. ".rpmmoved", path .. ".rpmmoved." .. suffix)
end
os.rename(path, path .. ".rpmmoved")
end
end
path = "%{_prefix}/lib/mono/xbuild/15.0"
st = posix.stat(path)
if st and st.type == "directory" then
status = os.rename(path, path .. ".rpmmoved")
if not status then
suffix = 0
while not status do
suffix = suffix + 1
status = os.rename(path .. ".rpmmoved", path .. ".rpmmoved." .. suffix)
end
os.rename(path, path .. ".rpmmoved")
end
end
%files sdkresolver
%dir %{_prefix}/lib/mono/msbuild/Current/bin/SdkResolvers
%{_prefix}/lib/mono/msbuild/Current/bin/SdkResolvers/*
%files
%{_bindir}/msbuild
%{_prefix}/lib/mono/msbuild/15.0
%{_prefix}/lib/mono/msbuild/Current
%exclude %{_prefix}/lib/mono/msbuild/Current/bin/SdkResolvers
%{_prefix}/lib/mono/xbuild
%{_mandir}/man1/msbuild.1%{?ext_man}
%changelog