.NET Core CLI tools and runtime
CentOS Sources
2018-09-12 9fb3733431a622edfb19ea5d6f224535b406de07
commit | author | age
beadc4 1 # Do *NOT* try and build this locally (using rhpkg or any other tool) if one of
CS 2 # the parent directories is a git repository. This build uses git-apply during
3 # the upstream build process. git-apply will simply skip all patches since none
4 # of the patches affect the build subdirectory.
5 #
6 # Use `rhpkg local --builddir ../dotnet-build` or something similar to work
7 # around this.
8
6b77c8 9 %{?scl:%scl_package dotnet}
CS 10 %{!?scl:%global pkg_name %{name}}
11
12 # lldb doesn't like our nice debug information
13 %undefine _include_minidebuginfo
14 %global _find_debuginfo_dwz_opts %{nil}
15
16 # Avoid provides/requires from private libraries
17 %global privlibs             libhostfxr
18 %global privlibs %{privlibs}|libclrjit
19 %global privlibs %{privlibs}|libcoreclr
20 %global privlibs %{privlibs}|libcoreclrtraceptprovider
21 %global privlibs %{privlibs}|libdbgshim
22 %global privlibs %{privlibs}|libhostpolicy
23 %global privlibs %{privlibs}|libmscordaccore
24 %global privlibs %{privlibs}|libmscordbi
25 %global privlibs %{privlibs}|libsos
26 %global privlibs %{privlibs}|libsosplugin
27 %global __provides_exclude ^(%{privlibs})\\.so
28
29 # Remove private libraries and the automatically generated dependency
30 # on system libcurl package. We require the %%{?scl_prefix}libcurl package
31 %global __requires_exclude ^(%{privlibs}|libcurl)\\.so
32
9fb373 33 %global sdk_version 2.1.402
CS 34 %global runtime_version 2.1.4
6b77c8 35
CS 36 Name:           %{?scl_prefix}dotnet
37 Version:        %{sdk_version}
9fb373 38 Release:        2%{?dist}
6b77c8 39 Group:          Development/Languages
CS 40 Summary:        .NET Core CLI tools and runtime
41 License:        MIT and ASL 2.0 and BSD
42 URL:            https://github.com/dotnet/
43
44 # The source is generated on a RHEL box via:
45 # - git clone https://github.com/dotnet/source-build
ed07d0 46 # - git checkout v%%{sdk_version}
6b77c8 47 # - set environment variables + tweak sources to build
ed07d0 48 # - ./build-source-tarball.sh dotnet-%%{sdk_version}
CS 49 # - tar cvzf dotnet-%%{sdk_version}.tar.gz dotnet-%%{sdk_version}
50
beadc4 51 Source0:        dotnet-%{runtime_version}.tar.gz
6b77c8 52 Source1:        check-debug-symbols.py
9fb373 53
CS 54 Patch1:         19650-cgroup-oom.patch
6b77c8 55
CS 56 ExclusiveArch:  x86_64
57
58 BuildRequires:  llvm-toolset-7-clang
59 BuildRequires:  cmake
ed07d0 60 BuildRequires:  git
6b77c8 61 BuildRequires:  hostname
CS 62 BuildRequires:  krb5-devel
63 BuildRequires:  %{?scl_prefix}libcurl-devel
64 BuildRequires:  libicu-devel
65 BuildRequires:  libunwind-devel
66 BuildRequires:  llvm-toolset-7-lldb-devel
67 BuildRequires:  llvm-toolset-7-llvm
68 BuildRequires:  %{?scl_prefix}lttng-ust-devel
69 BuildRequires:  openssl-devel
70 BuildRequires:  python2
71 BuildRequires:  zlib-devel
72
73 Requires:       %{name}-sdk-2.1%{?_isa}
74
75 %description
76 .NET Core is a fast, lightweight and modular platform for creating
77 cross platform applications that work on Linux, macOS and Windows.
78
79 It particularly focuses on creating console applications, web
80 applications and micro-services.
81
82 .NET Core contains a runtime conforming to .NET Standards a set of
83 framework libraries, an SDK containing compilers and a 'dotnet'
84 application to drive everything.
85
86 %package host
87
ed07d0 88 Version:        %{runtime_version}
6b77c8 89 Summary:        .NET command line launcher
CS 90
91 %description host
92 The .NET Core host is a command line program that runs a standalone
93 .NET core application or launches the SDK.
94
95 .NET Core is a fast, lightweight and modular platform for creating
96 cross platform applications that work on Linux, Mac and Windows.
97
98 It particularly focuses on creating console applications, web
99 applications and micro-services.
100
101 %package runtime-2.1
102
ed07d0 103 Version:        %{runtime_version}
CS 104 Summary:        NET Core 2.1 runtime
105
6b77c8 106 # Theoretically any version of the host should work
ed07d0 107 Requires:       %{name}-host%{?_isa}
6b77c8 108
CS 109 # libicu is dlopen()ed
110 Requires:       libicu
111 # libcurl is dlopen()ed
112 Requires:       %{?scl_prefix}libcurl
113
114 %description runtime-2.1
115 The .NET Core runtime contains everything needed to run .NET Core applications.
116 It includes a high performance Virtual Machine as well as the framework
117 libraries used by .NET Core applications.
118
119 .NET Core is a fast, lightweight and modular platform for creating
120 cross platform applications that work on Linux, Mac and Windows.
121
122 It particularly focuses on creating console applications, web
123 applications and micro-services.
124
125 %package sdk-2.1
126
127 Version:        %{sdk_version}
128 Summary:        .NET Core 2.1 Software Development Kit
129
8e2aee 130 Requires:       %{name}-sdk-2.1.4xx%{?_isa}
6b77c8 131
CS 132 %description sdk-2.1
133 The .NET Core SDK is a collection of command line applications to
134 create, build, publish and run .NET Core applications.
135
136 .NET Core is a fast, lightweight and modular platform for creating
137 cross platform applications that work on Linux, Mac and Windows.
138
139 It particularly focuses on creating console applications, web
140 applications and micro-services.
141
8e2aee 142 %package sdk-2.1.4xx
ed07d0 143
CS 144 Version:        %{sdk_version}
8e2aee 145 Summary:        .NET Core 2.1.4xx Software Development Kit
ed07d0 146
CS 147 Requires:       %{name}-runtime-2.1%{?_isa}
148
8e2aee 149 %description sdk-2.1.4xx
ed07d0 150 The .NET Core SDK is a collection of command line applications to
CS 151 create, build, publish and run .NET Core applications.
152
153 .NET Core is a fast, lightweight and modular platform for creating
154 cross platform applications that work on Linux, Mac and Windows.
155
156 It particularly focuses on creating console applications, web
157 applications and micro-services.
158
6b77c8 159 %prep
beadc4 160 %setup -q -n %{pkg_name}-%{runtime_version}
6b77c8 161
9fb373 162 pushd src/coreclr
CS 163 %patch1 -p1
164 popd
165
8e2aee 166 # See https://github.com/dotnet/source-build/pull/669
CS 167 rm -rf Tools/configuration/configuration.props
168
6b77c8 169 # Disable warnings
CS 170 sed -i 's|skiptests|skiptests ignorewarnings|' repos/coreclr.proj
171
172 # Fix bad hardcoded path in build
173 sed -i 's|/usr/share/dotnet|%{_libdir}/%{pkg_name}|' src/core-setup/src/corehost/common/pal.unix.cpp
174
175 %build
176 %{?scl:scl enable %scl llvm-toolset-7 - << \EOF}
177 set -xe
178
179 export LIBRARY_PATH="%{_libdir}"
180 export LLVM_HOME=/opt/rh/llvm-toolset-7/root/usr 
181 export CMAKE_PREFIX_PATH="%{_prefix}"
182
183 ./build.sh /v:diag
184
185 %{?scl:EOF}
186
187 %install
188 install -d -m 0755 %{buildroot}%{_libdir}/%{pkg_name}/
189 ls bin/x64/Release
190 tar xf bin/x64/Release/dotnet-sdk-%{sdk_version}-*.tar.gz -C %{buildroot}%{_libdir}/%{pkg_name}/
191
192 # Fix permissions on files
193 find %{buildroot}%{_libdir}/%{pkg_name}/ -type f -name '*.props' -exec chmod -x {} \;
194 find %{buildroot}%{_libdir}/%{pkg_name}/ -type f -name '*.targets' -exec chmod -x {} \;
195 find %{buildroot}%{_libdir}/%{pkg_name}/ -type f -name '*.dll' -exec chmod -x {} \;
196 find %{buildroot}%{_libdir}/%{pkg_name}/ -type f -name '*.pubxml' -exec chmod -x {} \;
197
198 install -dm 755 %{buildroot}/%{_root_datadir}/bash-completion/completions
199 # dynamic completion needs the file to be named the same as the base command
200 install src/cli/scripts/register-completions.bash %{buildroot}/%{_root_datadir}/bash-completion/completions/dotnet
201
202 # TODO: the zsh completion script needs to be ported to use #compdef
203 #install -dm 755 %%{buildroot}/%%{_datadir}/zsh/site-functions
204 #install src/cli/scripts/register-completions.zsh %%{buildroot}/%%{_datadir}/zsh/site-functions/_dotnet
205
206 install -d -m 0755 %{buildroot}%{_bindir}
207 ln -s %{_libdir}/%{pkg_name}/dotnet %{buildroot}%{_bindir}/
208
209 install -d -m 0755 %{buildroot}%{_mandir}/man1/
210 find -iname 'dotnet*.1' -type f -exec cp {} %{buildroot}%{_mandir}/man1/ \;
211
212 # Check debug symbols in all elf objects. This is not in %%check
213 # because native binaries are stripped by rpm-build after %%install.
214 # So we need to do this check earlier.
215 echo "Testing build results for debug symbols..."
216 %{SOURCE1} -v %{buildroot}%{_libdir}/%{pkg_name}/
217
218 %check
219 %{buildroot}%{_libdir}/%{pkg_name}/dotnet --info
220
221 %files
222 # empty package useful for dependencies
223
224 %files host
225 %dir %{_libdir}/%{pkg_name}
226 %{_libdir}/%{pkg_name}/dotnet
227 %{_libdir}/%{pkg_name}/host
228 %{_bindir}/dotnet
229 %doc %{_libdir}/%{pkg_name}/LICENSE.txt
230 %doc %{_libdir}/%{pkg_name}/ThirdPartyNotices.txt
ed07d0 231 %doc %{_mandir}/man1/dotnet*.1.gz
CS 232 # shell completions are currently only picked up from %%{_root_datadir}
233 %dir %{_root_datadir}/bash-completion
234 %dir %{_root_datadir}/bash-completion/completions
235 %{_root_datadir}/bash-completion/completions/dotnet
6b77c8 236
CS 237 %files runtime-2.1
238 %dir %{_libdir}/%{pkg_name}/shared
239 %dir %{_libdir}/%{pkg_name}/shared/Microsoft.NETCore.App
240 %{_libdir}/%{pkg_name}/shared/Microsoft.NETCore.App/%{runtime_version}
241
242 %files sdk-2.1
ed07d0 243 # empty package useful for dependencies
CS 244
8e2aee 245 %files sdk-2.1.4xx
6b77c8 246 %dir %{_libdir}/%{pkg_name}/sdk
CS 247 %{_libdir}/%{pkg_name}/sdk/%{sdk_version}
248
249 %changelog
9fb373 250 * Fri Sep 07 2018 Omair Majid <omajid@redhat.com> - 2.1.402-2
CS 251 - Update to new build of .NET Core Runtime 2.1.4 and SDK 2.1.402
252 - Resolves: RHBZ#1625403
253
254 * Tue Sep 04 2018 Omair Majid <omajid@redhat.com> - 2.1.402-1
255 - Update to .NET Core Runtime 2.1.4 and SDK 2.1.402
256 - Fix OOM error in containers
257 - Resolves: RHBZ#1621889
258
8e2aee 259 * Wed Aug 08 2018 Omair Majid <omajid@redhat.com> - 2.1.401-1
CS 260 - Update to .NET Core Runtime 2.1.3 and SDK 2.1.401
261
beadc4 262 * Wed Jul 4 2018 Omair Majid <omajid@redhat.com> - 2.1.302-1
CS 263 - Update to .NET Core Runtime 2.1.2 and SDK 2.1.302
264
ed07d0 265 * Wed Jun 20 2018 Omair Majid <omajid@redhat.com> - 2.1.301-5
CS 266 - Add sdk-2.1.3xx subpackage
267
268 * Tue Jun 19 2018 Omair Majid <omajid@redhat.com> - 2.1.301-4
269 - Rebuild to pick up new lttng-ust
270
271 * Tue Jun 19 2018 Omair Majid <omajid@redhat.com> - 2.1.301-3
272 - Add workaround for unreadable system certificates
273 - Resolves: rhbz#1588099
274
275 * Tue Jun 19 2018 Omair Majid <omajid@redhat.com> - 2.1.301-2
276 - Add updated man pages
277 - Resolves: rhbz#1584790
278
279 * Thu Jun 14 2018 Omair Majid <omajid@redhat.com> - 2.1.301-1
280 - Update to .NET Core SDK 2.1.301
281
6b77c8 282 * Wed May 30 2018 Omair Majid <omajid@redhat.com> - 2.1.300-7
CS 283 - Explicitly require a modified libcurl
284
285 * Tue May 29 2018 Omair Majid <omajid@redhat.com> - 2.1.300-6
286 - Install bash completions in %%{_root_datadir}
287
288 * Mon May 28 2018 Omair Majid <omajid@redhat.com> - 2.1.300-5
289 - Add provides for dotnet-sdk-2.1.3xx
290
291 * Mon May 28 2018 Omair Majid <omajid@redhat.com> - 2.1.300-4
292 - Remove patch for ASP.NET Core templates. No longer needed for 2.1.
293
294 * Fri May 25 2018 Omair Majid <omajid@redhat.com> - 2.1.300-3
295 - Remove net46 symlink
296
297 * Thu May 24 2018 Omair Majid <omajid@redhat.com> - 2.1.300-2
298 - Rebuild to pick up updated dependencies
299
300 * Thu May 24 2018 Omair Majid <omajid@redhat.com> - 2.1.300-1
301 - New package. Import from Fedora (DotNet SIG package).