diff --git a/_constraints b/_constraints
new file mode 100644
index 0000000..4a37606
--- /dev/null
+++ b/_constraints
@@ -0,0 +1,7 @@
+
+
+
+ 6
+
+
+
diff --git a/fix-s390x-ucontext.patch b/fix-s390x-ucontext.patch
new file mode 100644
index 0000000..4ad99e4
--- /dev/null
+++ b/fix-s390x-ucontext.patch
@@ -0,0 +1,12 @@
+diff -urp mono-6.8.0.123.orig/mono/utils/mono-context.h mono-6.8.0.123/mono/utils/mono-context.h
+--- mono-6.8.0.123.orig/mono/utils/mono-context.h 2020-05-11 12:58:14.000000000 -0500
++++ mono-6.8.0.123/mono/utils/mono-context.h 2020-05-21 15:10:03.209484526 -0500
+@@ -879,7 +879,7 @@ typedef struct {
+
+ #include
+
+-#if __GLIBC_PREREQ(2, 27)
++#if __GLIBC_PREREQ(2, 26)
+ typedef ucontext_t MonoContext;
+ #else
+ typedef struct ucontext MonoContext;
diff --git a/mono-6.8.0.105.tar.xz b/mono-6.8.0.105.tar.xz
new file mode 100644
index 0000000..1b16651
--- /dev/null
+++ b/mono-6.8.0.105.tar.xz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:578799c44c3c86a9eb5daf6dec6c60a24341940fd376371956d4a46cf8612178
+size 243441900
diff --git a/mono-6.8.0.96.tar.xz b/mono-6.8.0.96.tar.xz
deleted file mode 100644
index 1190dd5..0000000
--- a/mono-6.8.0.96.tar.xz
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ed5df4ec663a4e228e89e910e954fa18d33f72e790c11174e1b62fc8cca90ba0
-size 245059192
diff --git a/mono-core.changes b/mono-core.changes
index 8ad51c3..a717e91 100644
--- a/mono-core.changes
+++ b/mono-core.changes
@@ -1,3 +1,37 @@
+-------------------------------------------------------------------
+Thu May 28 07:05:06 UTC 2020 - Ismail Dönmez
+
+- Fixup mono-find-requires for v1 profiles
+
+-------------------------------------------------------------------
+Wed May 27 09:35:05 UTC 2020 - Ismail Dönmez
+
+- Add mono-find-provides and mono-find-requires from Fedora and use
+ it instead. Fixes boo#1152775
+
+-------------------------------------------------------------------
+Tue May 26 19:57:47 UTC 2020 - Michael Gorse
+
+- Add fix-s390x-ucontext.patch: fix the build on 15.2/s390x
+ (bsc#1171934).
+- Add _constraints to prevent running out of disk space.
+
+-------------------------------------------------------------------
+Sun May 24 08:07:07 UTC 2020 - Guillaume GARDET
+
+- Enable roslyn on aarch64 to build additionnal tools (mdoc.exe, ...)
+
+-------------------------------------------------------------------
+Wed Apr 29 10:05:31 UTC 2020 - Dominique Leuenberger
+
+- Add mono.attr and install it to %_rpmconfigdir/fileattrs: enable
+ the dependency scanner for rpm packages (boo#1152775).
+
+-------------------------------------------------------------------
+Tue Apr 21 19:10:16 UTC 2020 - David Mulder
+
+- Update to the most current mono release, 6.8.0.105.
+
-------------------------------------------------------------------
Thu Mar 19 07:44:57 UTC 2020 - Guillaume GARDET
diff --git a/mono-core.spec b/mono-core.spec
index ca44d7b..0c95598 100644
--- a/mono-core.spec
+++ b/mono-core.spec
@@ -33,13 +33,13 @@
%define btls no
%endif
-%ifarch %ix86 x86_64 %{arm}
+%ifarch %ix86 x86_64 %{arm} aarch64
%define roslyn yes
%else
%define roslyn no
%endif
-%define version_suffix 96
+%define version_suffix 105
Name: mono-core
Version: 6.8.0
@@ -51,6 +51,9 @@ Url: http://www.mono-project.com
Source0: http://download.mono-project.com/sources/mono/mono-%{version}.%{version_suffix}.tar.xz
Source1: mono-core.rpmlintrc
Source2: gmcs
+Source3: mono.attr
+Source4: mono-find-provides
+Source5: mono-find-requires
# ppc build segfault so exclude it
ExcludeArch: ppc
# PATCH-FIX-OPENSUSE remove checks for libmono in mono-find-provides and mono-find-requires scripts
@@ -63,6 +66,8 @@ Patch16: fix-dbg-headers.patch
Patch20: xbuild-use-roslyn-vbc.patch
# PATCH-FIX-OPENSUSE fix 64bit-portability-issue at exceptions-ppc.c:799
Patch21: fix-ppc-64bit-portability-issue.patch
+# PATCH-FIX-UPSTREAM fix-s390x-ucontext.patch bsc#1171934 mgorse@suse.com -- fix s390x build on glibc 2.26.
+Patch22: fix-s390x-ucontext.patch
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: bison
@@ -212,6 +217,7 @@ technologies that have been submitted to the ECMA for standardization.
%patch20 -p1
%endif
%patch21 -p1
+%patch22 -p1
%build
%define _lto_cflags %{nil}
@@ -277,6 +283,16 @@ make
%install
%make_install
+%if 0%{?suse_version} > 1500
+# install the rpm file attributes to arm the dependency scanner
+mkdir -p %{buildroot}%{_rpmconfigdir}/fileattrs
+install %{SOURCE3} %{buildroot}%{_rpmconfigdir}/fileattrs/mono.attr
+
+# Install custom mono-find-{provides/requires}
+install -p -m755 %{SOURCE4} %{SOURCE5} %{buildroot}%{_rpmconfigdir}
+
+%endif
+
# Remove hardcoded lib directory from the config
sed -i 's,\$mono_libdir/,,g' %{buildroot}%{_sysconfdir}/mono/config
@@ -1268,7 +1284,7 @@ Mono development tools.
%defattr(-, root, root)
%{_bindir}/aprofutil
%{_prefix}/lib/mono/4.5/aprofutil.exe
-%ifnarch aarch64 ppc64 ppc64le
+%ifnarch ppc64 ppc64le s390x
%{_prefix}/lib/mono/4.5/aprofutil.pdb
%else
%{_prefix}/lib/mono/4.5/aprofutil.exe.mdb
@@ -1293,6 +1309,13 @@ Mono development tools.
%{_bindir}/mono-api-info
%{_bindir}/mono-api-html
%{_bindir}/mono-cil-strip
+
+%if 0%{?suse_version} > 1500
+%{_rpmconfigdir}/fileattrs/mono.attr
+%{_rpmconfigdir}/mono-find-provides
+%{_rpmconfigdir}/mono-find-requires
+%endif
+
%{_bindir}/mono-find-provides
%{_bindir}/mono-find-requires
%{_bindir}/mono-heapviz
@@ -1406,7 +1429,7 @@ Mono development tools.
%{_prefix}/lib/mono/4.5/mono-cil-strip.exe*
%{_prefix}/lib/mono/4.5/mono-shlib-cop.exe*
%{_prefix}/lib/mono/4.5/mono-xmltool.exe*
-%ifnarch aarch64 ppc64 ppc64le
+%ifnarch ppc64 ppc64le s390x
%{_prefix}/lib/mono/4.5/monolinker.*
%endif
%{_prefix}/lib/mono/4.5/monop.exe*
@@ -1559,7 +1582,7 @@ Monodoc-core contains documentation tools for C#.
%{_mandir}/man1/monodocer.1%ext_man
%{_mandir}/man1/monodocs2html.1%ext_man
%{_mandir}/man5/mdoc.5%ext_man
-%ifnarch aarch64 ppc64 ppc64le
+%ifnarch ppc64 ppc64le s390x
%{_prefix}/lib/mono/4.5/mdoc.exe*
%endif
%{_prefix}/lib/mono/4.5/mod.exe*
diff --git a/mono-find-provides b/mono-find-provides
new file mode 100644
index 0000000..d2cb60f
--- /dev/null
+++ b/mono-find-provides
@@ -0,0 +1,42 @@
+#!/usr/bin/bash
+#
+# mono-find-provides
+#
+# Authors:
+# Ben Maurer (bmaurer@ximian.com)
+#
+# (C) 2005 Novell (http://www.novell.com)
+#
+# Args: builddir buildroot libdir
+
+IFS=$'\n'
+filelist=($(grep -Ev '/usr/doc/|/usr/share/doc/'))
+monolist=($(printf "%s\n" "${filelist[@]}" | grep -E "\\.(exe|dll)\$"))
+
+# If monodis is in the package being installed, use that one
+# This is to support building mono
+build_bindir="$2/usr/bin"
+build_libdir="$2$3"
+
+if [ -x $build_bindir/monodis ]; then
+ monodis="$build_bindir/monodis"
+ export LD_LIBRARY_PATH=$build_libdir${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
+elif [ -x /usr/bin/monodis ]; then
+ monodis="/usr/bin/monodis"
+else
+ exit 0;
+fi
+
+export MONO_SHARED_DIR=$1
+
+for i in "${monolist[@]}"; do
+ ($monodis --assembly $i | awk '
+ BEGIN { LIBNAME=""; VERSION=""; }
+ /^Version:/ { VERSION=$2 }
+ /^Name:/ { LIBNAME=$2 }
+ END {
+ if (VERSION && LIBNAME)
+ print "mono(" LIBNAME ") = " VERSION
+ }
+ ') 2>/dev/null
+done
diff --git a/mono-find-requires b/mono-find-requires
new file mode 100644
index 0000000..9e2feca
--- /dev/null
+++ b/mono-find-requires
@@ -0,0 +1,90 @@
+#!/usr/bin/bash
+#
+# mono-find-requires
+#
+# Authors:
+# Ben Maurer (bmaurer@ximian.com)
+#
+# (C) 2005 Novell (http://www.novell.com)
+#
+# Args: builddir buildroot libdir
+
+IFS=$'\n'
+filelist=($(grep -Ev '/usr/doc/|/usr/share/doc/'))
+monolist=($(printf "%s\n" "${filelist[@]}" | grep -E "\\.(exe|dll)\$"))
+
+# If monodis is in the package being installed, use that one
+# This is to support building mono
+build_bindir="$2/usr/bin"
+build_libdir="$2$3"
+
+if [ -x $build_bindir/monodis ]; then
+ monodis="$build_bindir/monodis"
+ export LD_LIBRARY_PATH=$build_libdir${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
+elif [ -x /usr/bin/monodis ]; then
+ monodis="/usr/bin/monodis"
+else
+ exit 0;
+fi
+
+export MONO_SHARED_DIR=$1
+
+REQUIRES=$(
+ for i in "${monolist[@]}"; do
+ ($monodis --assemblyref $i | awk '
+ BEGIN { START=0; LIBNAME=""; VERSION=""; }
+ (START==0) && /^[0-9]+: Version=/ {
+ START=1;
+ sub(/Version=/, "", $2);
+ VERSION=$2
+ }
+
+ (START==1) && /^\tName=/ {
+ sub(/Name=/, "", $1);
+ LIBNAME=$1
+ # Allow rpm deps to be resolved for 1.0 profile version
+ if (VERSION=="1.0.3300.0")
+ OP=">="
+ else
+ OP="="
+ print "mono(" LIBNAME ") " OP " " VERSION
+ START=0
+ }
+ ') 2> /dev/null
+ done
+)
+
+PROVIDES=$(
+ for i in "${monolist[@]}"; do
+ ($monodis --assembly $i | awk '
+ BEGIN { LIBNAME=""; VERSION=""; }
+ /^Version:/ { VERSION=$2 }
+ /^Name:/ { LIBNAME=$2 }
+ END {
+ if (VERSION && LIBNAME)
+ print "mono(" LIBNAME ") = " VERSION
+ }
+ ') 2>/dev/null
+ done
+)
+#
+# This is a little magic trick to get all REQUIRES that are not
+# in PROVIDES. While RPM functions correctly when such deps exist,
+# they make the metadata a bit bloated.
+#
+
+# Filter out dups from both lists
+REQUIRES=$(echo "$REQUIRES" | sort | uniq)
+PROVIDES=$(echo "$PROVIDES" | sort | uniq)
+
+#
+# Get a list of elements that exist in exactly one of PROVIDES or REQUIRES
+#
+UNIQ=$(echo "$PROVIDES
+$REQUIRES" | sort | uniq -u)
+
+#
+# Of those, only chose the ones that are in REQUIRES
+#
+echo "$UNIQ
+$REQUIRES" | sort | uniq -d
diff --git a/mono.attr b/mono.attr
new file mode 100644
index 0000000..1302bf6
--- /dev/null
+++ b/mono.attr
@@ -0,0 +1,3 @@
+%__mono_provides %{_rpmconfigdir}/mono-find-provides %{_builddir}/%{?buildsubdir} %{buildroot} %{_libdir}
+%__mono_requires %{_rpmconfigdir}/mono-find-requires %{_builddir}/%{?buildsubdir} %{buildroot} %{_libdir}
+%__mono_magic Mono/.Net assembly