Update to .NET SDK 6.0.112 and Runtime 6.0.12

This commit is contained in:
Omair Majid 2022-12-14 21:34:37 -05:00
parent ba7293ef0c
commit f052f73860
8 changed files with 50 additions and 282 deletions

1
.gitignore vendored
View File

@ -24,3 +24,4 @@
/dotnet-v6.0.109.tar.gz
/dotnet-v6.0.110.tar.gz
/dotnet-v6.0.111.tar.gz
/dotnet-v6.0.112.tar.gz

View File

@ -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.11
%global runtime_version 6.0.11
%global host_version 6.0.12
%global runtime_version 6.0.12
%global aspnetcore_runtime_version %{runtime_version}
%global sdk_version 6.0.111
%global sdk_version 6.0.112
%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 }')
@ -86,12 +86,6 @@ 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/66594
Patch102: runtime-66594-s390x-debuginfo.patch
# https://github.com/dotnet/runtime/pull/73065
Patch103: runtime-clang15-support.patch
# https://github.com/dotnet/runtime/pull/60675
Patch104: runtime-strerror.patch
# Disable apphost, needed for s390x
Patch500: fsharp-no-apphost.patch
@ -400,9 +394,6 @@ sed -i 's|/usr/share/dotnet|%{_libdir}/dotnet|' src/runtime/src/native/corehost/
pushd src/runtime
%patch100 -p1
%patch101 -p1
%patch102 -p1
%patch103 -p1
%patch104 -p1
popd
pushd src/fsharp
@ -648,6 +639,9 @@ export COMPlus_LTTng=0
%changelog
* Wed Dec 14 2022 Omair Majid <omajid@redhat.com> - 6.0.112-1
- Update to .NET SDK 6.0.112 and Runtime 6.0.12
* Thu Nov 10 2022 Omair Majid <omajid@redhat.com> - 6.0.111-1
- Update to .NET SDK 6.0.111 and Runtime 6.0.11

View File

@ -2,6 +2,12 @@
# Usage:
# ./rename-tarball original-name.tar.gz new-name.tar.gz
#
# The generated new-name.tar.gz will always have a single main
# directory (named new-name to match the tarball name) in the archive.
# If the original tarball had multiple files in the main directory of
# the archive, all those files will be moved to under the new main
# directory.
set -euo pipefail
IFS=$'\n\t'
@ -42,10 +48,19 @@ echo "Original: ${original_name}.tar.gz"
echo "New name: ${new_name}.tar.gz"
mkdir "temp-${new_name}"
pushd "temp-${new_name}"
pushd "temp-${new_name}" > /dev/null
tar xf "${original_path}"
mv -- * "${new_name}"
tar czf ../"${new_name}.tar.gz" "${new_name}"
# `find` always shows the current directory as one of the entries in
# the output. A total of 2 entries means there is only one main
# directory in the extracted archive, and we can just move it to the
# expected location.
if [[ $(find . -maxdepth 1 | wc -l) == 2 ]]; then
mv -- ./* ../"${new_name}"
else
mkdir -p ../"${new_name}"
mv -- ./* ../"${new_name}"
fi
popd > /dev/null
tar czf "${new_name}.tar.gz" "${new_name}"
rm -rf "${new_name}"
popd
rmdir "temp-${new_name}"

View File

@ -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) -->

View File

@ -1,58 +0,0 @@
From 992cf8c97cc71d4ca9a0a11e6604a6716ed4cefc Mon Sep 17 00:00:00 2001
From: Adeel Mujahid <3840695+am11@users.noreply.github.com>
Date: Fri, 29 Jul 2022 19:34:00 +0300
Subject: [PATCH] Define __cpuid{ex} only when there's no builtin one (#73065)
* Define __cpuid{ex} only when there's no builtin one
Fix clang 15 RC1 build: `error: definition of builtin function '__cpuid'`
* Add clang-15 autodetection
---
eng/common/native/find-native-compiler.sh | 2 +-
src/coreclr/vm/amd64/unixstubs.cpp | 4 ++++
3 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/eng/common/native/find-native-compiler.sh b/eng/common/native/find-native-compiler.sh
index 4b99a9cad3b77..41a26d802a93f 100644
--- a/eng/common/native/find-native-compiler.sh
+++ b/eng/common/native/find-native-compiler.sh
@@ -55,7 +55,7 @@
# Set default versions
if [ -z "$majorVersion" ]; then
# note: gcc (all versions) and clang versions higher than 6 do not have minor version in file name, if it is zero.
- if [ "$compiler" = "clang" ]; then versions=( 9 8 7 6.0 5.0 4.0 3.9 3.8 3.7 3.6 3.5 )
+ if [[ "$compiler" == "clang" ]]; then versions=( 15 14 13 12 11 10 9 8 7 6.0 5.0 4.0 3.9 3.8 3.7 3.6 3.5 )
elif [ "$compiler" = "gcc" ]; then versions=( 9 8 7 6 5 4.9 ); fi
for version in "${versions[@]}"; do
diff --git a/src/coreclr/vm/amd64/unixstubs.cpp b/src/coreclr/vm/amd64/unixstubs.cpp
index 517eea98f6b6a..09d2568a9273b 100644
--- a/src/coreclr/vm/amd64/unixstubs.cpp
+++ b/src/coreclr/vm/amd64/unixstubs.cpp
@@ -10,6 +10,7 @@ extern "C"
PORTABILITY_ASSERT("Implement for PAL");
}
+#if !__has_builtin(__cpuid)
void __cpuid(int cpuInfo[4], int function_id)
{
// Based on the Clang implementation provided in cpuid.h:
@@ -20,7 +21,9 @@ extern "C"
: "0"(function_id)
);
}
+#endif
+#if !__has_builtin(__cpuidex)
void __cpuidex(int cpuInfo[4], int function_id, int subFunction_id)
{
// Based on the Clang implementation provided in cpuid.h:
@@ -31,6 +34,7 @@ extern "C"
: "0"(function_id), "2"(subFunction_id)
);
}
+#endif
DWORD xmmYmmStateSupport()
{

View File

@ -1,172 +0,0 @@
From 577a70afa472a2b7aa8e05947e185d920f42b23d Mon Sep 17 00:00:00 2001
From: Adeel Mujahid <3840695+am11@users.noreply.github.com>
Date: Tue, 2 Nov 2021 17:47:37 +0200
Subject: [PATCH] Fix gcc warnings during mono linux-x64 build (#60675)
* Fix gcc warnings during mono linux-x64 build
main with Debug configuration: 822 warnings - http://sprunge.us/2GzrDE
PR with Debug configuration: 3 warnings related to deprecated sys/sysctl.h includes - http://sprunge.us/JuyA3K
after fixing Debug warnings, there were 13 additional warnings in Release configuration:
http://sprunge.us/PJCivP
PR with Release configuration: (same) 3 warnings - http://sprunge.us/NwKHNE
* Address CR feedback
---
src/mono/cmake/config.h.in | 7 +--
src/mono/cmake/configure.cmake | 40 +++++++++++---
src/mono/cmake/defines-todo.cmake | 1 -
src/mono/mono/eglib/gstr.c | 14 ++---
src/mono/mono/utils/mono-proclib.c | 28 +++++-----
5 files changed, 173 insertions(+), 192 deletions(-)
diff --git a/src/mono/cmake/config.h.in b/src/mono/cmake/config.h.in
index 48a82ec6db8c4..648ad60dd0494 100644
--- a/src/mono/cmake/config.h.in
+++ b/src/mono/cmake/config.h.in
@@ -510,14 +510,11 @@
/* Define to 1 if you have the `strerror_r' function. */
#cmakedefine HAVE_STRERROR_R 1
-/* Define to 1 if strerror_r returns char *. */
-#cmakedefine STRERROR_R_CHAR_P 1
-
/* Have GLIBC_BEFORE_2_3_4_SCHED_SETAFFINITY */
#cmakedefine GLIBC_BEFORE_2_3_4_SCHED_SETAFFINITY 1
/* GLIBC has CPU_COUNT macro in sched.h */
-#cmakedefine GLIBC_HAS_CPU_COUNT 1
+#cmakedefine HAVE_GNU_CPU_COUNT
/* Have large file support */
#cmakedefine HAVE_LARGE_FILE_SUPPORT 1
@@ -712,6 +709,8 @@
/* The size of `size_t', as computed by sizeof. */
#define SIZEOF_SIZE_T @SIZEOF_SIZE_T@
+#cmakedefine01 HAVE_GNU_STRERROR_R
+
/* Define to 1 if the system has the type `struct sockaddr'. */
#cmakedefine HAVE_STRUCT_SOCKADDR 1
diff --git a/src/mono/cmake/configure.cmake b/src/mono/cmake/configure.cmake
index 7bee1c6b98553..e8e9fb9e67d79 100644
--- a/src/mono/cmake/configure.cmake
+++ b/src/mono/cmake/configure.cmake
@@ -135,6 +135,37 @@
check_type_size("long long" SIZEOF_LONG_LONG)
check_type_size("size_t" SIZEOF_SIZE_T)
+if (HOST_LINUX OR HOST_ANDROID)
+ set(CMAKE_REQUIRED_DEFINITIONS -D_GNU_SOURCE)
+endif()
+
+check_c_source_compiles(
+ "
+ #include <string.h>
+ int main(void)
+ {
+ char buffer[1];
+ char c = *strerror_r(0, buffer, 0);
+ return 0;
+ }
+ "
+ HAVE_GNU_STRERROR_R)
+
+check_c_source_compiles(
+ "
+ #include <sched.h>
+ int main(void)
+ {
+ CPU_COUNT((void *) 0);
+ return 0;
+ }
+ "
+ HAVE_GNU_CPU_COUNT)
+
+if (HOST_LINUX OR HOST_ANDROID)
+ set(CMAKE_REQUIRED_DEFINITIONS)
+endif()
+
# ICONV
set(ICONV_LIB)
find_library(LIBICONV_FOUND iconv)
@@ -142,14 +173,6 @@
set(ICONV_LIB "iconv")
endif()
-file(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/test.c
- "#include <sched.h>\n"
- "void main () { CPU_COUNT((void *) 0); }\n"
-)
-try_compile(GLIBC_HAS_CPU_COUNT ${CMAKE_BINARY_DIR}/CMakeTmp SOURCES "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/test.c"
- COMPILE_DEFINITIONS "-D_GNU_SOURCE")
-
-
if(HOST_WIN32)
# checking for this doesn't work for some reason, hardcode result
set(HAVE_WINTERNL_H 1)
diff --git a/src/mono/cmake/defines-todo.cmake b/src/mono/cmake/defines-todo.cmake
index d45098d4eea4f..8d2828d53e9ba 100644
--- a/src/mono/cmake/defines-todo.cmake
+++ b/src/mono/cmake/defines-todo.cmake
@@ -4,7 +4,6 @@
#option (MAJOR_IN_MKDEV "Define to 1 if `major', `minor', and `makedev' are declared in <mkdev.h>.")
#option (MAJOR_IN_SYSMACROS "Define to 1 if `major', `minor', and `makedev' are declared in <sysmacros.h>.")
-#option (STRERROR_R_CHAR_P "Define to 1 if strerror_r returns char *.")
#option (HAVE_LIBICONV "Define to 1 if you have the `iconv' library (-liconv).")
#option (ANDROID_UNIFIED_HEADERS "Whether Android NDK unified headers are used")
#option (MONO_DL_NEED_USCORE "Does dlsym require leading underscore.")
diff --git a/src/mono/mono/eglib/gstr.c b/src/mono/mono/eglib/gstr.c
index c549b241894f1..cbf63d8f02b97 100644
--- a/src/mono/mono/eglib/gstr.c
+++ b/src/mono/mono/eglib/gstr.c
@@ -249,7 +249,11 @@ g_strerror (gint errnum)
size_t buff_len = sizeof (tmp_buff);
buff [0] = 0;
-#ifndef STRERROR_R_CHAR_P
+#if HAVE_GNU_STRERROR_R
+ buff = strerror_r (errnum, buff, buff_len);
+ if (!error_messages [errnum])
+ error_messages [errnum] = g_strdup (buff);
+#else /* HAVE_GNU_STRERROR_R */
int r;
while ((r = strerror_r (errnum, buff, buff_len - 1))) {
if (r != ERANGE) {
@@ -261,17 +265,13 @@ g_strerror (gint errnum)
else
buff = g_realloc (buff, buff_len * 2);
buff_len *= 2;
- //Spec is not clean on whether size argument includes space for null terminator or not
+ //Spec is not clean on whether size argument includes space for null terminator or not
}
if (!error_messages [errnum])
error_messages [errnum] = g_strdup (buff);
if (buff != tmp_buff)
g_free (buff);
-#else /* STRERROR_R_CHAR_P */
- buff = strerror_r (errnum, buff, buff_len);
- if (!error_messages [errnum])
- error_messages [errnum] = g_strdup (buff);
-#endif /* STRERROR_R_CHAR_P */
+#endif /* HAVE_GNU_STRERROR_R */
#else /* HAVE_STRERROR_R */
if (!error_messages [errnum])
diff --git a/src/mono/mono/utils/mono-proclib.c b/src/mono/mono/utils/mono-proclib.c
index 1fe731d9fe0f5..9a33fc2924e6b 100644
--- a/src/mono/mono/utils/mono-proclib.c
+++ b/src/mono/mono/utils/mono-proclib.c
@@ -81,7 +81,7 @@
#endif
#ifdef HAVE_SCHED_GETAFFINITY
-# ifndef GLIBC_HAS_CPU_COUNT
+# ifndef HAVE_GNU_CPU_COUNT
static int
CPU_COUNT(cpu_set_t *set)
{

View File

@ -1 +1 @@
SHA512 (dotnet-v6.0.111.tar.gz) = 4cce9a7cdf1c66322d222b6efd07186eef1013a89d7e68855baa5900584231557ab3d91cd5064c983815fb842db97cad950d337801322c5303d355596ebab54a
SHA512 (dotnet-v6.0.112.tar.gz) = 0b9c33fb0fd273f8b76079aa8c65a6b5329915e565168006a978619e145b02e2d5a15efc8338456df4532794404943a2f5f09081ed530378bd1ede5583982dbb

View File

@ -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
@ -81,15 +92,21 @@ 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
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-replace-next-line
sed -i -E '/^%changelog$/!b;n;s/-[[:digit:]]+$/-1/' "$spec_file"
sed -i -E '/^%changelog$/!b;n;s/-[[:digit:]]+$/-'"$rpm_release"'/' "$spec_file"