aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgrbd <garlicbready@googlemail.com>2018-03-25 22:04:12 +0100
committergrbd <garlicbready@googlemail.com>2018-03-25 22:04:12 +0100
commit83f842d2f4ff6632396577fa77b7ade1ad7f4506 (patch)
treef97621d3a00551ffd682bb5e600b5a5d0fcb9517 /dev-lang
parentfixed dotnetzip-semverd, re-added mono.snk, setup exbuild_strong so that it c... (diff)
downloaddotnet-83f842d2f4ff6632396577fa77b7ade1ad7f4506.tar.gz
dotnet-83f842d2f4ff6632396577fa77b7ade1ad7f4506.tar.bz2
dotnet-83f842d2f4ff6632396577fa77b7ade1ad7f4506.zip
Added fix for latest mono when using ncurses 6.1
Diffstat (limited to 'dev-lang')
-rw-r--r--dev-lang/mono/files/mono-5.10.0.179-ncurses61.patch106
-rw-r--r--dev-lang/mono/mono-5.10.0.179.ebuild4
2 files changed, 110 insertions, 0 deletions
diff --git a/dev-lang/mono/files/mono-5.10.0.179-ncurses61.patch b/dev-lang/mono/files/mono-5.10.0.179-ncurses61.patch
new file mode 100644
index 0000000..93a1f8f
--- /dev/null
+++ b/dev-lang/mono/files/mono-5.10.0.179-ncurses61.patch
@@ -0,0 +1,106 @@
+diff -Naur mono-5.10.0.179.orig/mcs/class/corlib/System/TermInfoReader.cs mono-5.10.0.179/mcs/class/corlib/System/TermInfoReader.cs
+--- mono-5.10.0.179.orig/mcs/class/corlib/System/TermInfoReader.cs 2018-03-19 07:46:31.000000000 +0000
++++ mono-5.10.0.179/mcs/class/corlib/System/TermInfoReader.cs 2018-03-25 20:57:57.721279733 +0100
+@@ -72,16 +72,16 @@
+ //
+
+ class TermInfoReader {
+- //short nameSize;
+- short boolSize;
+- short numSize;
+- short strOffsets;
+- //short strSize;
++ int boolSize;
++ int numSize;
++ int strOffsets;
+
+ //string [] names; // Last one is the description
+ byte [] buffer;
+ int booleansOffset;
+ //string term;
++
++ int intOffset;
+
+ public TermInfoReader (string term, string filename)
+ {
+@@ -114,12 +114,21 @@
+ // get { return term; }
+ // }
+
++ void DetermineVersion (short magic)
++ {
++ if (magic == 0x11a)
++ intOffset = 2;
++ else if (magic == 0x21e)
++ intOffset = 4;
++ else
++ throw new Exception (String.Format ("Magic number is unexpected: {0}", magic));
++ }
++
+ void ReadHeader (byte [] buffer, ref int position)
+ {
+ short magic = GetInt16 (buffer, position);
+ position += 2;
+- if (magic != 282)
+- throw new Exception (String.Format ("Magic number is wrong: {0}", magic));
++ DetermineVersion (magic);
+
+ /*nameSize =*/ GetInt16 (buffer, position);
+ position += 2;
+@@ -161,8 +170,8 @@
+ if ((offset % 2) == 1)
+ offset++;
+
+- offset += ((int) number) * 2;
+- return GetInt16 (buffer, offset);
++ offset += ((int) number) * intOffset;
++ return GetInteger (buffer, offset);
+ }
+
+ public string Get (TermInfoStrings tstr)
+@@ -175,7 +184,7 @@
+ if ((offset % 2) == 1)
+ offset++;
+
+- offset += numSize * 2;
++ offset += numSize * intOffset;
+ int off2 = GetInt16 (buffer, offset + (int) tstr * 2);
+ if (off2 == -1)
+ return null;
+@@ -193,7 +202,7 @@
+ if ((offset % 2) == 1)
+ offset++;
+
+- offset += numSize * 2;
++ offset += numSize * intOffset;
+ int off2 = GetInt16 (buffer, offset + (int) tstr * 2);
+ if (off2 == -1)
+ return null;
+@@ -211,6 +220,27 @@
+ return (short) (uno + dos * 256);
+ }
+
++ int GetInt32 (byte [] buffer, int offset)
++ {
++ int b1 = (int) buffer [offset];
++ int b2 = (int) buffer [offset + 1];
++ int b3 = (int) buffer [offset + 2];
++ int b4 = (int) buffer [offset + 3];
++ if (b1 == 255 && b2 == 255 && b3 == 255 && b4 == 255)
++ return -1;
++
++ return b1 + b2 << 8 + b3 << 16 + b4 << 24;
++ }
++
++ int GetInteger (byte [] buffer, int offset)
++ {
++ if (intOffset == 2)
++ return GetInt16 (buffer, offset);
++ else
++ // intOffset == 4
++ return GetInt32 (buffer, offset);
++ }
++
+ string GetString (byte [] buffer, int offset)
+ {
+ int length = 0;
diff --git a/dev-lang/mono/mono-5.10.0.179.ebuild b/dev-lang/mono/mono-5.10.0.179.ebuild
index f25dd8d..f709724 100644
--- a/dev-lang/mono/mono-5.10.0.179.ebuild
+++ b/dev-lang/mono/mono-5.10.0.179.ebuild
@@ -32,8 +32,12 @@ DEPEND="${COMMONDEPEND}
!dev-lang/mono-basic
"
+# Patch added for ncurses 6.1
+# https://github.com/mono/mono/issues/6752
+
PATCHES=(
"${FILESDIR}"/${PN}-5.0.1.1-x86_32.patch
+ "${FILESDIR}"/${PN}-5.10.0.179-ncurses61.patch
)
#S="${WORKDIR}/${PN}-$(get_version_component_range 1-3)"