summary refs log tree commit diff
path: root/gnu/packages/patches
diff options
context:
space:
mode:
authorMarius Bakke <mbakke@fastmail.com>2019-11-21 22:44:15 +0100
committerMarius Bakke <mbakke@fastmail.com>2019-11-21 22:44:15 +0100
commitb60d2bfff95c0859d7814c1fe9d0940c87edc2b4 (patch)
tree49d3339f93c9d9fad5c66609a1dc4964f2856f79 /gnu/packages/patches
parent0c6ab52243353e3417e5a9733bb089e4771cc86e (diff)
parenta31b9dac1cbda07225fcdffe03d13d68c4eab981 (diff)
downloadguix-b60d2bfff95c0859d7814c1fe9d0940c87edc2b4.tar.gz
Merge branch 'master' into staging
Diffstat (limited to 'gnu/packages/patches')
-rw-r--r--gnu/packages/patches/elm-compiler-relax-glsl-bound.patch19
-rw-r--r--gnu/packages/patches/ghc-diff-swap-cover-args.patch20
-rw-r--r--gnu/packages/patches/ghc-haddock-api-fix-haddock.patch54
-rw-r--r--gnu/packages/patches/ghc-haddock-library-unbundle.patch86
-rw-r--r--gnu/packages/patches/ghc-hpack-fix-tests.patch193
-rw-r--r--gnu/packages/patches/ghc-microlens-aeson-fix-tests.patch27
-rw-r--r--gnu/packages/patches/ghc-monad-par-fix-tests.patch45
-rw-r--r--gnu/packages/patches/ghc-pandoc-fix-html-tests.patch92
-rw-r--r--gnu/packages/patches/ghc-pandoc-fix-latex-test.patch31
-rw-r--r--gnu/packages/patches/hexchat-crash-exit.patch31
-rw-r--r--gnu/packages/patches/minisat-friend-declaration.patch25
-rw-r--r--gnu/packages/patches/minisat-install.patch19
-rw-r--r--gnu/packages/patches/python-3.8-fix-tests.patch42
-rw-r--r--gnu/packages/patches/python-3.8-search-paths.patch17
-rw-r--r--gnu/packages/patches/tomb-fix-errors-on-open.patch25
-rw-r--r--gnu/packages/patches/ucx-tcp-iface-ioctl.patch109
16 files changed, 730 insertions, 105 deletions
diff --git a/gnu/packages/patches/elm-compiler-relax-glsl-bound.patch b/gnu/packages/patches/elm-compiler-relax-glsl-bound.patch
deleted file mode 100644
index 3f8be810c2..0000000000
--- a/gnu/packages/patches/elm-compiler-relax-glsl-bound.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-commit 4c649a5a270aba15cc6a3913c3ad51a293047f40
-Author: Rémi Lefèvre <rlefevre@gmail.com>
-Date:   Mon Sep 3 19:18:54 2018 +0200
-
-    update language-glsl maximum version
-
-diff --git a/elm.cabal b/elm.cabal
-index 48aa84f0..464fe9d5 100644
---- a/elm.cabal
-+++ b/elm.cabal
-@@ -246,7 +246,7 @@ Executable elm
-         http-client >= 0.5 && < 0.6,
-         http-client-tls >= 0.3 && < 0.4,
-         http-types >= 0.9 && < 1.0,
--        language-glsl >= 0.0.2 && < 0.3,
-+        language-glsl >= 0.0.2 && < 0.4,
-         logict,
-         mtl >= 2.2.1 && < 3,
-         network >= 2.4 && < 2.7,
diff --git a/gnu/packages/patches/ghc-diff-swap-cover-args.patch b/gnu/packages/patches/ghc-diff-swap-cover-args.patch
new file mode 100644
index 0000000000..724416ff7a
--- /dev/null
+++ b/gnu/packages/patches/ghc-diff-swap-cover-args.patch
@@ -0,0 +1,20 @@
+The QuickCheck library swapped the order of the arguments of the 'cover'
+function in version 2.12.  Version 0.3.4 of the Diff library still uses
+the old argument order.  Swapping the argument order makes Diff work
+with newer versions of QuickCheck.
+
+See <https://github.com/commercialhaskell/stackage/issues/4289> for the
+upstream bug report.
+
+diff -ruN a/test/Test.hs b/test/Test.hs
+--- a/test/Test.hs	2016-04-23 01:21:45.000000000 -0400
++++ b/test/Test.hs	2019-11-01 19:13:04.590770903 -0400
+@@ -134,7 +134,7 @@
+ prop_ppDiffR (DiffInput le ri) =
+     let haskDiff=ppDiff $ getGroupedDiff le ri
+         utilDiff= unsafePerformIO (runDiff (unlines le) (unlines ri))
+-    in  cover (haskDiff == utilDiff) 90 "exact match" $
++    in  cover 90 (haskDiff == utilDiff) "exact match" $
+                 classify (haskDiff == utilDiff) "exact match"
+                         (div ((length haskDiff)*100) (length utilDiff) < 110) -- less than 10% bigger
+     where
diff --git a/gnu/packages/patches/ghc-haddock-api-fix-haddock.patch b/gnu/packages/patches/ghc-haddock-api-fix-haddock.patch
new file mode 100644
index 0000000000..927cb5b366
--- /dev/null
+++ b/gnu/packages/patches/ghc-haddock-api-fix-haddock.patch
@@ -0,0 +1,54 @@
+This patch is taken from upstream.  It fixes documentation generation.
+The patch has been lightly adapted to apply to the release tarball, but
+the commit message was left untouched, so it refers to some changes not
+included in the patch.
+
+From 0d9a81e20238a6b72f9f5c005f1f7e9cf05f6fb9 Mon Sep 17 00:00:00 2001
+From: Alec Theriault <alec.theriault@gmail.com>
+Date: Sat, 27 Oct 2018 10:05:04 -0700
+Subject: [PATCH] Fix documentation in `haddock-api` (#957)
+
+* Fix misplaced Haddocks in Haddock itself
+
+Haddock should be able to generate documentation for 'haddock-api'
+again.
+
+* Make CI check that documentation can be built.
+
+* Add back a doc that is OK
+---
+ .travis.yml                               |  3 +++
+ haddock-api/src/Haddock/Backends/LaTeX.hs | 10 +++++-----
+ 2 files changed, 8 insertions(+), 5 deletions(-)
+
+diff --git a/src/Haddock/Backends/LaTeX.hs b/src/Haddock/Backends/LaTeX.hs
+index 4e0e6eba..613c6deb 100644
+--- a/src/Haddock/Backends/LaTeX.hs
++++ b/src/Haddock/Backends/LaTeX.hs
+@@ -243,8 +243,8 @@ ppDocGroup lev doc = sec lev <> braces doc
+ 
+ -- | Given a declaration, extract out the names being declared
+ declNames :: LHsDecl DocNameI
+-          -> ( LaTeX           -- ^ to print before each name in an export list
+-             , [DocName]       -- ^ names being declared
++          -> ( LaTeX           --   to print before each name in an export list
++             , [DocName]       --   names being declared
+              )
+ declNames (L _ decl) = case decl of
+   TyClD _ d  -> (empty, [tcdName d])
+@@ -444,9 +444,9 @@ ppLPatSig doc docnames ty unicode
+ -- arguments as needed.
+ ppTypeOrFunSig :: HsType DocNameI
+                -> DocForDecl DocName  -- ^ documentation
+-               -> ( LaTeX             -- ^ first-line (no-argument docs only)
+-                  , LaTeX             -- ^ first-line (argument docs only)
+-                  , LaTeX             -- ^ type prefix (argument docs only)
++               -> ( LaTeX             --   first-line (no-argument docs only)
++                  , LaTeX             --   first-line (argument docs only)
++                  , LaTeX             --   type prefix (argument docs only)
+                   )
+                -> Bool                -- ^ unicode
+                -> LaTeX
+-- 
+2.23.0
+
diff --git a/gnu/packages/patches/ghc-haddock-library-unbundle.patch b/gnu/packages/patches/ghc-haddock-library-unbundle.patch
deleted file mode 100644
index 0e8b548956..0000000000
--- a/gnu/packages/patches/ghc-haddock-library-unbundle.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-This patch (inspired by Debian) allows ghc-haddock-library to use our
-ghc-attoparsec package instead of using a bundled version.
-
---- a/haddock-library.cabal	2018-09-01 01:22:18.676855884 -0400
-+++ b/haddock-library.cabal	2018-09-01 01:25:10.501150260 -0400
-@@ -10,7 +10,6 @@
-                       itself, see the ‘haddock’ package.
- license:              BSD3
- license-files:        LICENSE
--                      vendor/attoparsec-0.13.1.0/LICENSE
- maintainer:           Alex Biehl <alexbiehl@gmail.com>, Simon Hengel <sol@typeful.net>, Mateusz Kowalczyk <fuuzetsu@fuuzetsu.co.uk>
- homepage:             http://www.haskell.org/haddock/
- bug-reports:          https://github.com/haskell/haddock/issues
-@@ -28,7 +27,6 @@
-     , containers   >= 0.4.2.1 && < 0.6
-     , transformers >= 0.3.0   && < 0.6
- 
--  -- internal sub-lib
-   build-depends:        attoparsec
- 
-   hs-source-dirs:       src
-@@ -49,42 +47,6 @@
-   if impl(ghc >= 8.0)
-     ghc-options: -Wcompat -Wnoncanonical-monad-instances -Wnoncanonical-monadfail-instances
- 
--library attoparsec
--  default-language:     Haskell2010
--
--  build-depends:
--      base         >= 4.5     && < 4.12
--    , bytestring   >= 0.9.2.1 && < 0.11
--    , deepseq      >= 1.3     && < 1.5
--
--  hs-source-dirs:       vendor/attoparsec-0.13.1.0
--
--  -- NB: haddock-library needs only small part of lib:attoparsec
--  --     internally, so we only bundle that subset here
--  exposed-modules:
--    Data.Attoparsec.ByteString
--    Data.Attoparsec.ByteString.Char8
--    Data.Attoparsec.Combinator
--
--  other-modules:
--    Data.Attoparsec
--    Data.Attoparsec.ByteString.Buffer
--    Data.Attoparsec.ByteString.FastSet
--    Data.Attoparsec.ByteString.Internal
--    Data.Attoparsec.Internal
--    Data.Attoparsec.Internal.Fhthagn
--    Data.Attoparsec.Internal.Types
--    Data.Attoparsec.Number
--
--  ghc-options:          -funbox-strict-fields -Wall -fwarn-tabs -O2
--
--  ghc-options: -Wall
--  if impl(ghc >= 8.0)
--    ghc-options: -Wcompat -Wnoncanonical-monad-instances -Wnoncanonical-monadfail-instances
--  else
--    build-depends: semigroups ^>= 0.18.3, fail ^>= 4.9.0.0
--
--
- test-suite spec
-   type:             exitcode-stdio-1.0
-   default-language: Haskell2010
-@@ -115,11 +77,10 @@
-     , hspec         ^>= 2.4.4
-     , QuickCheck    ^>= 2.11
- 
--  -- internal sub-lib
-   build-depends: attoparsec
- 
-   -- Versions for the dependencies below are transitively pinned by
--  -- dependency on haddock-library:lib:attoparsec
-+  -- dependency on attoparsec
-   build-depends:
-       base
-     , bytestring
-@@ -146,7 +107,7 @@
-     haddock-library
- 
-   -- Versions for the dependencies below are transitively pinned by
--  -- dependency on haddock-library:lib:attoparsec
-+  -- dependency on attoparsec
-   build-depends:
-       base
- 
diff --git a/gnu/packages/patches/ghc-hpack-fix-tests.patch b/gnu/packages/patches/ghc-hpack-fix-tests.patch
new file mode 100644
index 0000000000..19aa762174
--- /dev/null
+++ b/gnu/packages/patches/ghc-hpack-fix-tests.patch
@@ -0,0 +1,193 @@
+This patch is taken and adapted from upstream.  It landed shortly after
+the release of 0.31.2, and fixes eleven tests.  The patch has been
+lightly adapted to apply to the release tarball, but the commit message
+was left untouched, so it refers to some changes not included in the
+patch.
+
+From a8d9362d4b686074f698c04c20beea88587511a1 Mon Sep 17 00:00:00 2001
+From: quasicomputational <quasicomputational@gmail.com>
+Date: Sat, 1 Jun 2019 15:11:31 +0100
+Subject: [PATCH] Make CI green (#345)
+
+* AppVeyor workaround for TMP issue
+
+https://github.com/commercialhaskell/stack/issues/3944
+
+* Bump resolver to nightly-2018-12-12.
+
+This has the primary benefit of moving to GHC 8.6.3 and should fix
+AppVeyor.
+
+* Add clock 0.8 as an extra-dep.
+
+* Adapt expected output to aeson 1.4.3.0.
+---
+ appveyor.yml                            |  3 +++
+ hpack.cabal                             | 10 +++++-----
+ package.yaml                            |  2 +-
+ stack.yaml                              |  5 +++--
+ test/Data/Aeson/Config/FromValueSpec.hs |  2 +-
+ test/Data/Aeson/Config/TypesSpec.hs     |  2 +-
+ test/EndToEndSpec.hs                    |  8 ++++----
+ test/Hpack/ConfigSpec.hs                |  2 +-
+ test/Hpack/Syntax/DefaultsSpec.hs       |  2 +-
+ test/Hpack/Syntax/DependenciesSpec.hs   |  4 ++--
+ 10 files changed, 22 insertions(+), 18 deletions(-)
+
+diff --git a/hpack.cabal b/hpack.cabal
+index fedb9a8..4db3014 100644
+--- a/hpack.cabal
++++ b/hpack.cabal
+@@ -1,10 +1,10 @@
+ cabal-version: 1.12
+ 
+--- This file has been generated from package.yaml by hpack version 0.31.0.
++-- This file has been generated from package.yaml by hpack version 0.31.2.
+ --
+ -- see: https://github.com/sol/hpack
+ --
+--- hash: 3d060180293c32b8d0c25b710d0f419e96a6cc6ec3f95ac5e70bb77f44cbafc3
++-- hash: bd5dd178c7e9f7f7a3456d79b592ea336c41ef43c9892354c001f06659e8b901
+ 
+ name:           hpack
+ version:        0.31.2
+@@ -31,7 +31,7 @@ library
+   build-depends:
+       Cabal >=2.2
+     , Glob >=0.9.0
+-    , aeson >=1.2.1.0
++    , aeson >=1.4.3.0
+     , base >=4.9 && <5
+     , bifunctors
+     , bytestring
+@@ -87,7 +87,7 @@ executable hpack
+   build-depends:
+       Cabal >=2.2
+     , Glob >=0.9.0
+-    , aeson >=1.2.1.0
++    , aeson >=1.4.3.0
+     , base >=4.9 && <5
+     , bifunctors
+     , bytestring
+@@ -125,7 +125,7 @@ test-suite spec
+     , Glob >=0.9.0
+     , HUnit >=1.6.0.0
+     , QuickCheck
+-    , aeson >=1.2.1.0
++    , aeson >=1.4.3.0
+     , base >=4.9 && <5
+     , bifunctors
+     , bytestring
+diff --git a/test/Data/Aeson/Config/FromValueSpec.hs b/test/Data/Aeson/Config/FromValueSpec.hs
+index 33de8b7..06b3eb9 100644
+--- a/test/Data/Aeson/Config/FromValueSpec.hs
++++ b/test/Data/Aeson/Config/FromValueSpec.hs
+@@ -85,7 +85,7 @@ spec = do
+         [yaml|
+         name: "Joe"
+         age: "23"
+-        |] `shouldDecodeTo` left "Error while parsing $.age - expected Int, encountered String"
++        |] `shouldDecodeTo` left "Error while parsing $.age - parsing Int failed, expected Number, but encountered String"
+ 
+     context "with (,)" $ do
+       it "captures unrecognized fields" $ do
+diff --git a/test/Data/Aeson/Config/TypesSpec.hs b/test/Data/Aeson/Config/TypesSpec.hs
+index c954534..472aa42 100644
+--- a/test/Data/Aeson/Config/TypesSpec.hs
++++ b/test/Data/Aeson/Config/TypesSpec.hs
+@@ -13,7 +13,7 @@ spec = do
+     context "List" $ do
+       let
+         parseError :: String -> Result (List Int)
+-        parseError prefix = Left (prefix ++ " - expected Int, encountered String")
++        parseError prefix = Left (prefix ++ " - parsing Int failed, expected Number, but encountered String")
+ 
+       context "when parsing single values" $ do
+         it "returns the value in a singleton list" $ do
+diff --git a/test/EndToEndSpec.hs b/test/EndToEndSpec.hs
+index 283c72c..46389ea 100644
+--- a/test/EndToEndSpec.hs
++++ b/test/EndToEndSpec.hs
+@@ -285,7 +285,7 @@ spec = around_ (inTempDirectoryNamed "foo") $ do
+           path: defaults.yaml
+           ref: "2017"
+         library: {}
+-        |] `shouldFailWith` (file ++ ": Error while parsing $ - expected Object, encountered Array")
++        |] `shouldFailWith` (file ++ ": Error while parsing $ - expected Object, but encountered Array")
+ 
+       it "warns on unknown fields" $ do
+         let file = joinPath ["defaults", "sol", "hpack-template", "2017", "defaults.yaml"]
+@@ -340,7 +340,7 @@ spec = around_ (inTempDirectoryNamed "foo") $ do
+       it "rejects other values" $ do
+         [i|
+         version: {}
+-        |] `shouldFailWith` "package.yaml: Error while parsing $.version - expected Number or String, encountered Object"
++        |] `shouldFailWith` "package.yaml: Error while parsing $.version - expected Number or String, but encountered Object"
+ 
+     describe "license" $ do
+       it "accepts cabal-style licenses" $ do
+@@ -1363,14 +1363,14 @@ spec = around_ (inTempDirectoryNamed "foo") $ do
+             then:
+               dependencies: Win32
+             else: null
+-          |] `shouldFailWith` "package.yaml: Error while parsing $.when.else - expected Object, encountered Null"
++          |] `shouldFailWith` "package.yaml: Error while parsing $.when.else - expected Object, but encountered Null"
+ 
+         it "rejects invalid conditionals" $ do
+           [i|
+             dependencies:
+               - foo
+               - 23
+-          |] `shouldFailWith` "package.yaml: Error while parsing $.dependencies[1] - expected Object or String, encountered Number"
++          |] `shouldFailWith` "package.yaml: Error while parsing $.dependencies[1] - expected Object or String, but encountered Number"
+ 
+         it "warns on unknown fields" $ do
+           [i|
+diff --git a/test/Hpack/ConfigSpec.hs b/test/Hpack/ConfigSpec.hs
+index 9f4b279..69cbea1 100644
+--- a/test/Hpack/ConfigSpec.hs
++++ b/test/Hpack/ConfigSpec.hs
+@@ -675,7 +675,7 @@ spec = do
+       it "rejects other values" $ do
+         [yaml|
+         23
+-        |] `shouldDecodeTo` (Left "Error while parsing $ - expected Boolean or String, encountered Number" :: Result Cond)
++        |] `shouldDecodeTo` (Left "Error while parsing $ - expected Boolean or String, but encountered Number" :: Result Cond)
+ 
+   describe "formatOrList" $ do
+     it "formats a singleton list" $ do
+diff --git a/test/Hpack/Syntax/DefaultsSpec.hs b/test/Hpack/Syntax/DefaultsSpec.hs
+index 5875413..5438b7a 100644
+--- a/test/Hpack/Syntax/DefaultsSpec.hs
++++ b/test/Hpack/Syntax/DefaultsSpec.hs
+@@ -151,4 +151,4 @@ spec = do
+         it "fails" $ do
+           [yaml|
+           10
+-          |] `shouldDecodeTo` left "Error while parsing $ - expected Object or String, encountered Number"
++          |] `shouldDecodeTo` left "Error while parsing $ - expected Object or String, but encountered Number"
+diff --git a/test/Hpack/Syntax/DependenciesSpec.hs b/test/Hpack/Syntax/DependenciesSpec.hs
+index 1a83732..d95044f 100644
+--- a/test/Hpack/Syntax/DependenciesSpec.hs
++++ b/test/Hpack/Syntax/DependenciesSpec.hs
+@@ -125,7 +125,7 @@ spec = do
+         it "rejects invalid values" $ do
+           [yaml|
+             hpack: []
+-          |] `shouldDecodeTo` left "Error while parsing $.hpack - expected Null, Object, Number, or String, encountered Array"
++          |] `shouldDecodeTo` left "Error while parsing $.hpack - expected Null, Object, Number, or String, but encountered Array"
+ 
+         context "when the constraint is a Number" $ do
+           it "accepts 1" $ do
+@@ -213,7 +213,7 @@ spec = do
+               [yaml|
+                 foo:
+                   version: {}
+-              |] `shouldDecodeTo` left "Error while parsing $.foo.version - expected Null, Number, or String, encountered Object"
++              |] `shouldDecodeTo` left "Error while parsing $.foo.version - expected Null, Number, or String, but encountered Object"
+ 
+             it "accepts a string" $ do
+               [yaml|
+-- 
+2.23.0
+
diff --git a/gnu/packages/patches/ghc-microlens-aeson-fix-tests.patch b/gnu/packages/patches/ghc-microlens-aeson-fix-tests.patch
new file mode 100644
index 0000000000..c1ef6a837c
--- /dev/null
+++ b/gnu/packages/patches/ghc-microlens-aeson-fix-tests.patch
@@ -0,0 +1,27 @@
+This patch fixes the test suite to allow any order when listing the
+members of a JSON object.  Aeson (being true to the JSON specification)
+does not specify an order for objects.  In practice, the order depends
+on your processor architecture.
+
+See <https://github.com/bos/aeson/issues/568> for a discussion resulting
+in a similar patch fixing the Aeson tests.
+
+See <https://github.com/fosskers/microlens-aeson/issues/1> for the
+upstream bug report.
+
+diff -ruN a/test/Test.hs b/test/Test.hs
+--- a/test/Test.hs	2018-12-31 15:10:50.000000000 -0500
++++ b/test/Test.hs	2019-11-08 01:34:07.419706831 -0500
+@@ -48,8 +48,10 @@
+     , testCase "" $ ("{\"a\": {}, \"b\": null}" ^? key (T.pack "b") . _Object) @?= Nothing
+     , testCase "" $ ("{\"a\": 100, \"b\": 200}" ^? key (T.pack "a")) @?= Just (Number 100.0)
+     , testCase "" $ ("[1,2,3]" ^? key (T.pack "a")) @?= Nothing
+-    , testCase "" $ ("{\"a\": 4, \"b\": 7}" ^.. members) @?= [Number 4.0,Number 7.0]
+-    , testCase "" $ ("{\"a\": 4, \"b\": 7}" & members . _Number %~ (* 10)) @?= "{\"a\":40,\"b\":70}"
++    , testCase "" $ assertBool "" (let x = ("{\"a\": 4, \"b\": 7}" ^.. members)
++                                   in x == [Number 4.0,Number 7.0] || x == [Number 7.0,Number 4.0])
++    , testCase "" $ assertBool "" (let x = ("{\"a\": 4, \"b\": 7}" & members . _Number %~ (* 10))
++                                   in x == "{\"a\":40,\"b\":70}" || x == "{\"b\":70,\"a\":40}")
+     , testCase "" $ ("[1,2,3]" ^? nth 1) @?= Just (Number 2.0)
+     , testCase "" $ ("{\"a\": 100, \"b\": 200}" ^? nth 1) @?= Nothing
+     , testCase "" $ ("[1,2,3]" & nth 1 .~ Number 20) @?= "[1,20,3]"
diff --git a/gnu/packages/patches/ghc-monad-par-fix-tests.patch b/gnu/packages/patches/ghc-monad-par-fix-tests.patch
new file mode 100644
index 0000000000..d21a1e485c
--- /dev/null
+++ b/gnu/packages/patches/ghc-monad-par-fix-tests.patch
@@ -0,0 +1,45 @@
+This patch is taken from upstream.  It fixes a test to work with GHC 8.6.
+The paths have been slightly altered to work with the release tarball.
+
+See <https://github.com/simonmar/monad-par/issues/66>.
+
+From e20f81c8060208e4fb038e8f0e0668b41d72a6fb Mon Sep 17 00:00:00 2001
+From: Clint Adams <clint@debian.org>
+Date: Sat, 31 Aug 2019 14:12:34 -0400
+Subject: [PATCH] Use a case statement instead of pattern-matching in
+ case_test_diamond
+
+This avoids the need for a MonadFail instance.  Closes #66
+---
+ monad-par/tests/ParTests_shared.hs | 15 +++++++++------
+ 1 file changed, 9 insertions(+), 6 deletions(-)
+
+diff --git a/tests/ParTests_shared.hs b/tests/ParTests_shared.hs
+index 31f438d..b2de50c 100644
+--- a/tests/ParTests_shared.hs
++++ b/tests/ParTests_shared.hs
+@@ -109,12 +109,15 @@ case_test_diamond :: Assertion
+ case_test_diamond = 9 @=? (m :: Int)
+  where 
+   m = runPar $ do
+-      [a,b,c,d] <- sequence [new,new,new,new]
+-      fork $ do x <- get a; put b (x+1)
+-      fork $ do x <- get a; put c (x+2)
+-      fork $ do x <- get b; y <- get c; put d (x+y)
+-      fork $ do put a 3
+-      get d
++      abcd <- sequence [new,new,new,new]
++      case abcd of
++          [a,b,c,d] -> do
++              fork $ do x <- get a; put b (x+1)
++              fork $ do x <- get a; put c (x+2)
++              fork $ do x <- get b; y <- get c; put d (x+y)
++              fork $ do put a 3
++              get d
++          _ -> error "Oops"
+ 
+ -- | Violate IVar single-assignment:
+ --
+-- 
+2.23.0
+
diff --git a/gnu/packages/patches/ghc-pandoc-fix-html-tests.patch b/gnu/packages/patches/ghc-pandoc-fix-html-tests.patch
new file mode 100644
index 0000000000..b624ff9e9e
--- /dev/null
+++ b/gnu/packages/patches/ghc-pandoc-fix-html-tests.patch
@@ -0,0 +1,92 @@
+This patch is taken from upstream.  It fixes two HTML tests that are broken
+due to using a Skylighting version greater than or equal to 0.8.2.
+
+From 968d2046a3cb6db661673be580660ac402753c34 Mon Sep 17 00:00:00 2001
+From: John MacFarlane <jgm@berkeley.edu>
+Date: Sun, 14 Jul 2019 10:48:14 -0700
+Subject: [PATCH] Update test for new skylighting.
+
+---
+ test/lhs-test.html     | 13 ++++++-------
+ test/lhs-test.html+lhs | 13 ++++++-------
+ 2 files changed, 12 insertions(+), 14 deletions(-)
+
+diff --git a/test/lhs-test.html b/test/lhs-test.html
+index 6685555f4..446dd3d95 100644
+--- a/test/lhs-test.html
++++ b/test/lhs-test.html
+@@ -12,19 +12,18 @@
+       div.column{display: inline-block; vertical-align: top; width: 50%;}
+   </style>
+   <style>
+-code.sourceCode > span { display: inline-block; line-height: 1.25; }
++pre > code.sourceCode { white-space: pre; position: relative; }
++pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
++pre > code.sourceCode > span:empty { height: 1.2em; }
+ code.sourceCode > span { color: inherit; text-decoration: inherit; }
+-code.sourceCode > span:empty { height: 1.2em; }
+-.sourceCode { overflow: visible; }
+-code.sourceCode { white-space: pre; position: relative; }
+ div.sourceCode { margin: 1em 0; }
+ pre.sourceCode { margin: 0; }
+ @media screen {
+ div.sourceCode { overflow: auto; }
+ }
+ @media print {
+-code.sourceCode { white-space: pre-wrap; }
+-code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
++pre > code.sourceCode { white-space: pre-wrap; }
++pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
+ }
+ pre.numberSource code
+   { counter-reset: source-line 0; }
+@@ -44,7 +43,7 @@ pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa;  padding-le
+ div.sourceCode
+   {   }
+ @media screen {
+-code.sourceCode > span > a:first-child::before { text-decoration: underline; }
++pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
+ }
+ code span.al { color: #ff0000; font-weight: bold; } /* Alert */
+ code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
+diff --git a/test/lhs-test.html+lhs b/test/lhs-test.html+lhs
+index e57dfc105..a5cdb0245 100644
+--- a/test/lhs-test.html+lhs
++++ b/test/lhs-test.html+lhs
+@@ -12,19 +12,18 @@
+       div.column{display: inline-block; vertical-align: top; width: 50%;}
+   </style>
+   <style>
+-code.sourceCode > span { display: inline-block; line-height: 1.25; }
++pre > code.sourceCode { white-space: pre; position: relative; }
++pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
++pre > code.sourceCode > span:empty { height: 1.2em; }
+ code.sourceCode > span { color: inherit; text-decoration: inherit; }
+-code.sourceCode > span:empty { height: 1.2em; }
+-.sourceCode { overflow: visible; }
+-code.sourceCode { white-space: pre; position: relative; }
+ div.sourceCode { margin: 1em 0; }
+ pre.sourceCode { margin: 0; }
+ @media screen {
+ div.sourceCode { overflow: auto; }
+ }
+ @media print {
+-code.sourceCode { white-space: pre-wrap; }
+-code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
++pre > code.sourceCode { white-space: pre-wrap; }
++pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
+ }
+ pre.numberSource code
+   { counter-reset: source-line 0; }
+@@ -44,7 +43,7 @@ pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa;  padding-le
+ div.sourceCode
+   {   }
+ @media screen {
+-code.sourceCode > span > a:first-child::before { text-decoration: underline; }
++pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
+ }
+ code span.al { color: #ff0000; font-weight: bold; } /* Alert */
+ code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
+-- 
+2.23.0
+
diff --git a/gnu/packages/patches/ghc-pandoc-fix-latex-test.patch b/gnu/packages/patches/ghc-pandoc-fix-latex-test.patch
new file mode 100644
index 0000000000..b38476882d
--- /dev/null
+++ b/gnu/packages/patches/ghc-pandoc-fix-latex-test.patch
@@ -0,0 +1,31 @@
+This patch is taken from upstream.  It fixes a LaTeX test that is broken due
+to using a Skylighting version greater than or equal to 0.8.1.1.
+
+From 2cd1c7b30f200d18f1f1bdef1671369e1ad303ed Mon Sep 17 00:00:00 2001
+From: John MacFarlane <jgm@berkeley.edu>
+Date: Thu, 13 Jun 2019 19:33:52 -0700
+Subject: [PATCH] Update test for skylighting 0.8.1.1.
+
+---
+ test/lhs-test.latex | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/test/lhs-test.latex b/test/lhs-test.latex
+index 0442db5ca..a456995a3 100644
+--- a/test/lhs-test.latex
++++ b/test/lhs-test.latex
+@@ -94,9 +94,9 @@ return a single value:
+ 
+ \begin{Shaded}
+ \begin{Highlighting}[]
+-\OtherTok{unsplit ::}\NormalTok{ (}\DataTypeTok{Arrow}\NormalTok{ a) }\OtherTok{=>}\NormalTok{ (b }\OtherTok{->}\NormalTok{ c }\OtherTok{->}\NormalTok{ d) }\OtherTok{->}\NormalTok{ a (b, c) d}
++\OtherTok{unsplit ::}\NormalTok{ (}\DataTypeTok{Arrow}\NormalTok{ a) }\OtherTok{=>}\NormalTok{ (b }\OtherTok{{-}>}\NormalTok{ c }\OtherTok{{-}>}\NormalTok{ d) }\OtherTok{{-}>}\NormalTok{ a (b, c) d}
+ \NormalTok{unsplit }\OtherTok{=}\NormalTok{ arr }\OperatorTok{.} \FunctionTok{uncurry}
+-          \CommentTok{-- arr (\textbackslash{}op (x,y) -> x `op` y)}
++          \CommentTok{{-}{-} arr (\textbackslash{}op (x,y) {-}> x \textasciigrave{}op\textasciigrave{} y)}
+ \end{Highlighting}
+ \end{Shaded}
+ 
+-- 
+2.23.0
+
diff --git a/gnu/packages/patches/hexchat-crash-exit.patch b/gnu/packages/patches/hexchat-crash-exit.patch
new file mode 100644
index 0000000000..e67fef73e0
--- /dev/null
+++ b/gnu/packages/patches/hexchat-crash-exit.patch
@@ -0,0 +1,31 @@
+From d9c637ae8a1137d3ca512d2c560589903a4bd79d Mon Sep 17 00:00:00 2001
+From: Adam Williamson <awilliam@redhat.com>
+Date: Tue, 30 Apr 2019 11:16:01 -0700
+Subject: [PATCH] Python plugin: Call EndInterpreter when deinit'ing the plugin
+
+This fixes https://github.com/hexchat/hexchat/issues/2237 , a
+commonly-encountered bug when using Hexchat 2.14 on Python 3.7.
+Thanks to @ncoghlan for the fix.
+
+Signed-off-by: Adam Williamson <awilliam@redhat.com>
+---
+ plugins/python/python.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/plugins/python/python.c b/plugins/python/python.c
+index 4403474d..475756ba 100644
+--- a/plugins/python/python.c
++++ b/plugins/python/python.c
+@@ -2806,6 +2806,9 @@ hexchat_plugin_deinit(void)
+ 	xchatout_buffer = NULL;
+ 
+ 	if (interp_plugin) {
++		PyThreadState *tstate = ((PluginObject*)interp_plugin)->tstate;
++		PyThreadState_Swap(tstate);
++		Py_EndInterpreter(tstate);
+ 		Py_DECREF(interp_plugin);
+ 		interp_plugin = NULL;
+ 	}
+-- 
+2.21.0
+
diff --git a/gnu/packages/patches/minisat-friend-declaration.patch b/gnu/packages/patches/minisat-friend-declaration.patch
new file mode 100644
index 0000000000..14a886ae2f
--- /dev/null
+++ b/gnu/packages/patches/minisat-friend-declaration.patch
@@ -0,0 +1,25 @@
+See https://groups.google.com/forum/#!topic/minisat/FCocZsC8oMQ
+This seems to only be a problem with newer versions of g++, and
+upstream development seems to have stopped in 2013.
+
+diff -rupN minisat-2.2.0/core/SolverTypes.h minisat-2.2.0.patched/core/SolverTypes.h
+--- a/minisat/core/SolverTypes.h	2010-07-10 17:07:36.000000000 +0100
++++ b/minisat/core/SolverTypes.h	2014-03-29 11:57:49.000000000 +0000
+@@ -47,7 +47,7 @@ struct Lit {
+     int     x;
+
+     // Use this as a constructor:
+-    friend Lit mkLit(Var var, bool sign = false);
++    //friend Lit mkLit(Var var, bool sign = false);
+
+     bool operator == (Lit p) const { return x == p.x; }
+     bool operator != (Lit p) const { return x != p.x; }
+@@ -55,7 +55,7 @@ struct Lit {
+ };
+
+
+-inline  Lit  mkLit     (Var var, bool sign) { Lit p; p.x = var + var + (int)sign; return p; }
++inline  Lit  mkLit     (Var var, bool sign = false) { Lit p; p.x = var + var + (int)sign; return p; }
+ inline  Lit  operator ~(Lit p)              { Lit q; q.x = p.x ^ 1; return q; }
+ inline  Lit  operator ^(Lit p, bool b)      { Lit q; q.x = p.x ^ (unsigned int)b; return q; }
+ inline  bool sign      (Lit p)              { return p.x & 1; }
diff --git a/gnu/packages/patches/minisat-install.patch b/gnu/packages/patches/minisat-install.patch
new file mode 100644
index 0000000000..23cde89bec
--- /dev/null
+++ b/gnu/packages/patches/minisat-install.patch
@@ -0,0 +1,19 @@
+Avoid the default dynamic executable, which depends on minisat.so
+Instead install the release version, which is statically linked.
+
+diff --git a/Makefile b/Makefile
+index ceb9d77..7b91906 100644
+--- a/Makefile
++++ b/Makefile
+@@ -191,9 +191,9 @@ install-lib: $(BUILD_DIR)/release/lib/$(MINISAT_SLIB) $(BUILD_DIR)/dynamic/lib/$
+ 	ln -sf $(MINISAT_DLIB).$(SOMAJOR) $(DESTDIR)$(libdir)/$(MINISAT_DLIB)
+ 	$(INSTALL) -m 644 $(BUILD_DIR)/release/lib/$(MINISAT_SLIB) $(DESTDIR)$(libdir)
+ 
+-install-bin: $(BUILD_DIR)/dynamic/bin/$(MINISAT)
++install-bin: $(BUILD_DIR)/release/bin/$(MINISAT)
+ 	$(INSTALL) -d $(DESTDIR)$(bindir)
+-	$(INSTALL) -m 755 $(BUILD_DIR)/dynamic/bin/$(MINISAT) $(DESTDIR)$(bindir)
++	$(INSTALL) -m 755 $(BUILD_DIR)/release/bin/$(MINISAT) $(DESTDIR)$(bindir)
+ 
+ clean:
+ 	rm -f $(foreach t, release debug profile dynamic, $(foreach o, $(SRCS:.cc=.o), $(BUILD_DIR)/$t/$o)) \
diff --git a/gnu/packages/patches/python-3.8-fix-tests.patch b/gnu/packages/patches/python-3.8-fix-tests.patch
new file mode 100644
index 0000000000..4fbdd444c7
--- /dev/null
+++ b/gnu/packages/patches/python-3.8-fix-tests.patch
@@ -0,0 +1,42 @@
+diff --git a/Lib/test/_test_multiprocessing.py b/Lib/test/_test_multiprocessing.py
+index 1474624..887f8ee 100644
+--- a/Lib/test/_test_multiprocessing.py
++++ b/Lib/test/_test_multiprocessing.py
+@@ -3801,6 +3801,7 @@ class _TestSharedMemory(BaseTestCase):
+         sms.close()
+
+     @unittest.skipIf(os.name != "posix", "not feasible in non-posix platforms")
++    @unittest.skipUnless(sys.stdin.isatty(), "KeyboardInterrupts require a TTY device")
+     def test_shared_memory_SharedMemoryServer_ignores_sigint(self):
+         # bpo-36368: protect SharedMemoryManager server process from
+         # KeyboardInterrupt signals.
+diff --git a/Lib/test/test_signal.py b/Lib/test/test_signal.py
+index d41e94b..a1c15e7 100644
+--- a/Lib/test/test_signal.py
++++ b/Lib/test/test_signal.py
+@@ -78,6 +78,7 @@ class PosixTests(unittest.TestCase):
+         self.assertLess(len(s), signal.NSIG)
+
+     @unittest.skipUnless(sys.executable, "sys.executable required.")
++    @unittest.skipUnless(sys.stdin.isatty(), "KeyboardInterrupts require a TTY device")
+     def test_keyboard_interrupt_exit_code(self):
+         """KeyboardInterrupt triggers exit via SIGINT."""
+         process = subprocess.run(
+@@ -128,6 +129,7 @@ class WindowsSignalTests(unittest.TestCase):
+             signal.signal(7, handler)
+
+     @unittest.skipUnless(sys.executable, "sys.executable required.")
++    @unittest.skipUnless(sys.stdin.isatty(), "KeyboardInterrupts require a TTY device")
+     def test_keyboard_interrupt_exit_code(self):
+         """KeyboardInterrupt triggers an exit using STATUS_CONTROL_C_EXIT."""
+         # We don't test via os.kill(os.getpid(), signal.CTRL_C_EVENT) here
+@@ -1245,6 +1247,7 @@ class StressTest(unittest.TestCase):
+
+ class RaiseSignalTest(unittest.TestCase):
+
++    @unittest.skipUnless(sys.stdin.isatty(), "KeyboardInterrupts require a TTY device")
+     def test_sigint(self):
+         with self.assertRaises(KeyboardInterrupt):
+             signal.raise_signal(signal.SIGINT)
+--
+2.23.0
diff --git a/gnu/packages/patches/python-3.8-search-paths.patch b/gnu/packages/patches/python-3.8-search-paths.patch
new file mode 100644
index 0000000000..88f19850bf
--- /dev/null
+++ b/gnu/packages/patches/python-3.8-search-paths.patch
@@ -0,0 +1,17 @@
+diff --git a/setup.py b/setup.py
+index 20d7f35..5751083 100644
+--- a/setup.py
++++ b/setup.py
+@@ -676,8 +676,8 @@ class PyBuildExt(build_ext):
+         # if a file is found in one of those directories, it can
+         # be assumed that no additional -I,-L directives are needed.
+         if not CROSS_COMPILING:
+-            self.lib_dirs = self.compiler.library_dirs + system_lib_dirs
+-            self.inc_dirs = self.compiler.include_dirs + system_include_dirs
++            self.lib_dirs = os.getenv('LIBRARY_PATH', '').split(os.pathsep)
++            self.inc_dirs = os.getenv('CPATH', '').split(os.pathsep)
+         else:
+             # Add the sysroot paths. 'sysroot' is a compiler option used to
+             # set the logical path of the standard system headers and
+--
+2.23.0
diff --git a/gnu/packages/patches/tomb-fix-errors-on-open.patch b/gnu/packages/patches/tomb-fix-errors-on-open.patch
new file mode 100644
index 0000000000..5f41c9ee8f
--- /dev/null
+++ b/gnu/packages/patches/tomb-fix-errors-on-open.patch
@@ -0,0 +1,25 @@
+Description: Avoid error messages when opening a new tomb
+ Make sure control file exists and has user ownership before user writes to it.
+Author: Sven Geuer <debmaint@g-e-u-e-r.de>
+Bug: https://github.com/dyne/Tomb/issues/369
+Last-Update: 2019-11-04
+--- a/tomb
++++ b/tomb
+@@ -2197,14 +2197,15 @@
+ # {{{ Open
+ 
+ _update_control_file() {
+-	# replaces a control file with new contents and gives it user ownership
++	# make sure a control file exists, gives it user ownership
++	# and replaces it with new contents
+ 	# stdin = contents
+ 	# $1 = path to control file
+ 	# $2 = contents
+ 	[[ "$2" = "" ]] && return 1
+ 	_sudo touch "$1"
+-	print "$2" > "$1"
+ 	_sudo chown ${_UID}:${_GID} "$1"
++	print "$2" > "$1"
+ 	_verbose "updated control file $1 = $2"
+ }
+ 
diff --git a/gnu/packages/patches/ucx-tcp-iface-ioctl.patch b/gnu/packages/patches/ucx-tcp-iface-ioctl.patch
new file mode 100644
index 0000000000..d5df7047bc
--- /dev/null
+++ b/gnu/packages/patches/ucx-tcp-iface-ioctl.patch
@@ -0,0 +1,109 @@
+Since /sys is unavailable in build environments, the list of available
+TCP network interfaces cannot be obtained via /sys/class/net.  This patch
+provides alternative code that uses the SIOCGIFCONF ioctl to get the
+names of the available TCP network interfaces.
+
+diff --git a/src/uct/tcp/tcp_iface.c b/src/uct/tcp/tcp_iface.c
+index 81ad459..10024a6 100644
+--- a/src/uct/tcp/tcp_iface.c
++++ b/src/uct/tcp/tcp_iface.c
+@@ -12,6 +12,8 @@
+ #include <sys/poll.h>
+ #include <netinet/tcp.h>
+ #include <dirent.h>
++#include <net/if.h>
++#include <sys/ioctl.h>
+ 
+ static ucs_config_field_t uct_tcp_iface_config_table[] = {
+   {"", "MAX_SHORT=8k", NULL,
+@@ -483,6 +485,70 @@ static UCS_CLASS_DEFINE_NEW_FUNC(uct_tcp_iface_t, uct_iface_t, uct_md_h,
+                                  uct_worker_h, const uct_iface_params_t*,
+                                  const uct_iface_config_t*);
+ 
++/* Fetch information about available network devices through an ioctl.  */
++static ucs_status_t query_devices_ioctl(uct_md_h md,
++					uct_tl_resource_desc_t **resource_p,
++					unsigned *num_resources_p)
++{
++    int sock, err, i;
++    uct_tl_resource_desc_t *resources, *tmp;
++    unsigned num_resources;
++    ucs_status_t status;
++    struct ifconf conf;
++    struct ifreq reqs[10];
++
++    conf.ifc_len = sizeof reqs;
++    conf.ifc_req = reqs;
++
++    sock = socket(SOCK_STREAM, AF_INET, 0);
++    if (sock < 0) {
++	ucs_error("socket(2) failed: %m");
++	status = UCS_ERR_IO_ERROR;
++	goto out;
++    }
++
++    err = ioctl(sock, SIOCGIFCONF, &conf);
++    if (err < 0) {
++	ucs_error("SIOCGIFCONF ioctl failed: %m");
++	status = UCS_ERR_IO_ERROR;
++	goto out;
++    }
++
++    resources     = NULL;
++    num_resources = 0;
++    for (i = 0; i < conf.ifc_len / sizeof(struct ifreq); i++) {
++	const char *name = reqs[i].ifr_name;
++
++        if (!ucs_netif_is_active(name)) {
++            continue;
++        }
++
++        tmp = ucs_realloc(resources, sizeof(*resources) * (num_resources + 1),
++                          "tcp resources");
++        if (tmp == NULL) {
++            ucs_free(resources);
++            status = UCS_ERR_NO_MEMORY;
++            goto out;
++        }
++        resources = tmp;
++
++        ucs_snprintf_zero(resources[i].tl_name, sizeof(resources[i].tl_name),
++                          "%s", UCT_TCP_NAME);
++        ucs_snprintf_zero(resources[i].dev_name, sizeof(resources[i].dev_name),
++                          "%s", name);
++        resources[i].dev_type = UCT_DEVICE_TYPE_NET;
++        ++num_resources;
++    }
++
++    *num_resources_p = num_resources;
++    *resource_p      = resources;
++    status           = UCS_OK;
++
++out:
++    if (sock >= 0) close(sock);
++    return status;
++}
++
+ static ucs_status_t uct_tcp_query_tl_resources(uct_md_h md,
+                                                uct_tl_resource_desc_t **resource_p,
+                                                unsigned *num_resources_p)
+@@ -496,9 +562,9 @@ static ucs_status_t uct_tcp_query_tl_resources(uct_md_h md,
+ 
+     dir = opendir(netdev_dir);
+     if (dir == NULL) {
+-        ucs_error("opendir(%s) failed: %m", netdev_dir);
+-        status = UCS_ERR_IO_ERROR;
+-        goto out;
++	/* When /sys is unavailable, as can be the case in a container,
++	 * resort to a good old 'ioctl'.  */
++	return query_devices_ioctl(md, resource_p, num_resources_p);
+     }
+ 
+     resources     = NULL;
+@@ -543,6 +609,5 @@ static ucs_status_t uct_tcp_query_tl_resources(uct_md_h md,
+ 
+ out_closedir:
+     closedir(dir);
+-out:
+     return status;
+ }