unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
blob 43dd472bf616bf7ac4fe03294ad8d9f4b83b0a34 2934 bytes (raw)
name: packages/patches/ghc-bytestring-handle-ghc9.patch 	 # note: path name is non-authoritative(*)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
 
Taken from https://raw.githubusercontent.com/archlinux/svntogit-community/packages/haskell-bytestring-handle/trunk/ghc9.patch

--- bytestring-handle-0.1.0.6/src/Data/ByteString/Handle/Write.hs.orig	2021-06-21 14:54:12.217134401 +0800
+++ bytestring-handle-0.1.0.6/src/Data/ByteString/Handle/Write.hs	2021-06-21 15:24:01.794796505 +0800
@@ -17,7 +17,7 @@
 
 import GHC.IO.Buffer ( BufferState(..), emptyBuffer, Buffer(..) )
 import GHC.IO.BufferedIO ( BufferedIO(..) )
-import GHC.IO.Device ( IODevice(..), IODeviceType(..), SeekMode(..) )
+import GHC.IO.Device ( IODevice(..), IODeviceType(..), SeekMode(..), RawIO(..) )
 #if MIN_VERSION_base(4,5,0)
 import GHC.IO.Encoding ( getLocaleEncoding )
 #else
@@ -138,6 +138,7 @@
                                 seek_base = error "seek_base needs to be updated"
                    })
         modifyIORef (write_size ws) (`max` newSeekPos)
+        pure newSeekPos
 
     tell ws = do
         ss <- readIORef (write_seek_state ws)
@@ -152,6 +153,12 @@
 
     devType _ = return RegularFile -- TODO: is this correct?
 
+instance RawIO WriteState where
+    read _ _ _ _ = return 0
+    readNonBlocking _ _ _ _ = return Nothing
+    write _ _ _ _ = return ()
+    writeNonBlocking _ _ _ _ = return 0
+
 ioe_seekOutOfRange :: IO a
 ioe_seekOutOfRange =
     ioException $ IOError Nothing InvalidArgument ""
--- bytestring-handle-0.1.0.6/src/Data/ByteString/Handle/Read.hs.orig	2021-06-21 14:53:55.433129276 +0800
+++ bytestring-handle-0.1.0.6/src/Data/ByteString/Handle/Read.hs	2021-06-21 15:24:25.998784996 +0800
@@ -24,7 +24,7 @@
     , emptyBuffer, isEmptyBuffer, newBuffer, newByteBuffer
     , bufferElems, withBuffer, withRawBuffer )
 import GHC.IO.BufferedIO ( BufferedIO(..) )
-import GHC.IO.Device ( IODevice(..), IODeviceType(..), SeekMode(..) )
+import GHC.IO.Device ( IODevice(..), IODeviceType(..), SeekMode(..), RawIO(..) )
 #if MIN_VERSION_base(4,5,0)
 import GHC.IO.Encoding ( getLocaleEncoding )
 #else
@@ -155,7 +155,7 @@
                                                       (seek_before_length curSeekState)
                                                       (fromIntegral (seek_pos curSeekState) + seekPos)
                   SeekFromEnd -> normalisedSeekState (read_chunks_backwards rs) [] (read_length rs) seekPos
-        maybe ioe_seekOutOfRange (writeIORef (read_seek_state rs)) newSeekState
+        maybe ioe_seekOutOfRange (\nss -> writeIORef (read_seek_state rs) nss >> pure (fromIntegral(seek_pos nss))) newSeekState
 
     tell rs = do
         ss <- readIORef (read_seek_state rs)
@@ -166,6 +166,12 @@
 
     devType _ = return RegularFile -- TODO: is this correct?
 
+instance RawIO ReadState where
+    read _ _ _ _ = return 0
+    readNonBlocking _ _ _ _ = return Nothing
+    write _ _ _ _ = return ()
+    writeNonBlocking _ _ _ _ = return 0
+
 ioe_seekOutOfRange :: IO a
 ioe_seekOutOfRange =
     ioException $ IOError Nothing InvalidArgument ""

debug log:

solving 43dd472bf616bf7ac4fe03294ad8d9f4b83b0a34 ...
found 43dd472bf616bf7ac4fe03294ad8d9f4b83b0a34 in https://git.savannah.gnu.org/cgit/guix.git

(*) Git path names are given by the tree(s) the blob belongs to.
    Blobs themselves have no identifier aside from the hash of its contents.^

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).