[arch-commits] Commit in haskell-ipynb/trunk (PKGBUILD base64-bytestring-1.1.patch)
Felix Yan
felixonmars at archlinux.org
Sat Apr 25 23:49:10 UTC 2020
Date: Saturday, April 25, 2020 @ 23:49:09
Author: felixonmars
Revision: 621204
upgpkg: haskell-ipynb 0.1-174: rebuild with base64-bytestring 1.1.0.0
Added:
haskell-ipynb/trunk/base64-bytestring-1.1.patch
Modified:
haskell-ipynb/trunk/PKGBUILD
-----------------------------+
PKGBUILD | 17 +++++--
base64-bytestring-1.1.patch | 99 ++++++++++++++++++++++++++++++++++++++++++
2 files changed, 111 insertions(+), 5 deletions(-)
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2020-04-25 23:49:02 UTC (rev 621203)
+++ PKGBUILD 2020-04-25 23:49:09 UTC (rev 621204)
@@ -3,7 +3,7 @@
_hkgname=ipynb
pkgname=haskell-ipynb
pkgver=0.1
-pkgrel=173
+pkgrel=174
pkgdesc="Data structure for working with Jupyter notebooks (ipynb)"
url="https://github.com/jgm/ipynb"
license=('BSD')
@@ -11,12 +11,19 @@
depends=('ghc-libs' 'haskell-aeson' 'haskell-base64-bytestring' 'haskell-unordered-containers')
makedepends=('ghc' 'haskell-aeson-diff' 'haskell-microlens' 'haskell-microlens-aeson'
'haskell-tasty' 'haskell-tasty-hunit' 'haskell-vector')
-source=(https://hackage.haskell.org/packages/archive/${_hkgname}/${pkgver}/${_hkgname}-${pkgver}.tar.gz)
-sha512sums=('8717dac6496905afc5e8735abc3b3a4a90b171253b035efa0751a6311b901caad563fdfeaa455987c1307d0532273ab80be37256562143db575f13c326843bf4')
+source=(https://hackage.haskell.org/packages/archive/${_hkgname}/${pkgver}/${_hkgname}-${pkgver}.tar.gz
+ base64-bytestring-1.1.patch)
+sha512sums=('8717dac6496905afc5e8735abc3b3a4a90b171253b035efa0751a6311b901caad563fdfeaa455987c1307d0532273ab80be37256562143db575f13c326843bf4'
+ '705d0d71fb94d139c5e0ef8de9f72c15b9f3152e7417cacbf12519a4270e6ee6b1e4e929062337ada9a3d776741e95a2cafee79ebbe3ac038e5073ca94f14602')
+prepare() {
+ cd $_hkgname-$pkgver
+ patch -p1 -i ../base64-bytestring-1.1.patch
+}
+
build() {
cd $_hkgname-$pkgver
-
+
runhaskell Setup configure -O --enable-shared --enable-executable-dynamic --disable-library-vanilla \
--prefix=/usr --docdir=/usr/share/doc/$pkgname --enable-tests \
--dynlibdir=/usr/lib --libsubdir=\$compiler/site-local/\$pkgid
@@ -34,7 +41,7 @@
package() {
cd $_hkgname-$pkgver
-
+
install -D -m744 register.sh "$pkgdir"/usr/share/haskell/register/$pkgname.sh
install -D -m744 unregister.sh "$pkgdir"/usr/share/haskell/unregister/$pkgname.sh
runhaskell Setup copy --destdir="$pkgdir"
Added: base64-bytestring-1.1.patch
===================================================================
--- base64-bytestring-1.1.patch (rev 0)
+++ base64-bytestring-1.1.patch 2020-04-25 23:49:09 UTC (rev 621204)
@@ -0,0 +1,99 @@
+--- ipynb-0.1/test/roundtrip.hs.orig 2020-04-26 07:02:19.792033245 +0800
++++ ipynb-0.1/test/roundtrip.hs 2020-04-26 07:02:34.438786334 +0800
+@@ -49,7 +49,7 @@
+ case Base64.decode (TE.encodeUtf8 (T.filter (/='\n') t)) of
+ Left _ -> String t -- textual
+ Right b -> String $
+- TE.decodeUtf8 . Base64.joinWith "\n" 76 . Base64.encode $ b
++ TE.decodeUtf8 . joinWith "\n" 76 . Base64.encode $ b
+ go v = v
+
+ rtTest :: FilePath -> TestTree
+--- ipynb-0.1/src/Data/Ipynb.hs.orig 2020-04-26 07:00:34.408032416 +0800
++++ ipynb-0.1/src/Data/Ipynb.hs 2020-04-26 07:47:18.956882066 +0800
+@@ -1,3 +1,4 @@
++{-# LANGUAGE BangPatterns #-}
+ {-# LANGUAGE CPP #-}
+ {-# LANGUAGE DeriveGeneric #-}
+ {-# LANGUAGE FlexibleContexts #-}
+@@ -38,13 +39,17 @@
+ , MimeData(..)
+ , MimeBundle(..)
+ , breakLines
++ , joinWith
+ )
+ where
+ import Control.Applicative ((<|>))
++import Control.Exception (assert)
+ import Control.Monad (when)
+ import Data.Aeson as Aeson
+ import qualified Data.Aeson.Types as Aeson
+ import Data.ByteString (ByteString)
++import qualified Data.ByteString as B
++import Data.ByteString.Internal
+ import qualified Data.ByteString.Base64 as Base64
+ import Data.Char (isSpace)
+ import qualified Data.HashMap.Strict as HM
+@@ -54,6 +59,8 @@
+ import Data.Text (Text)
+ import qualified Data.Text as T
+ import qualified Data.Text.Encoding as TE
++import Foreign.ForeignPtr (withForeignPtr)
++import Foreign.Ptr (minusPtr, plusPtr)
+ import GHC.Generics
+ import Prelude
+ #if MIN_VERSION_base(4,11,0)
+@@ -480,10 +487,52 @@
+ Left _ -> return (mt, TextualData t)
+ Right b -> return (mt, BinaryData b)
+
++-- | Efficiently intersperse a terminator string into another at
++-- regular intervals, and terminate the input with it.
++--
++-- Examples:
++--
++-- > joinWith "|" 2 "----" = "--|--|"
++--
++-- > joinWith "\r\n" 3 "foobarbaz" = "foo\r\nbar\r\nbaz\r\n"
++-- > joinWith "x" 3 "fo" = "fox"
++joinWith :: ByteString -- ^ String to intersperse and end with
++ -> Int -- ^ Interval at which to intersperse, in bytes
++ -> ByteString -- ^ String to transform
++ -> ByteString
++joinWith brk@(PS bfp boff blen) every' bs@(PS sfp soff slen)
++ | every' <= 0 = error "invalid interval"
++ | blen <= 0 = bs
++ | B.null bs = brk
++ | otherwise =
++ unsafeCreate dlen $ \dptr ->
++ withForeignPtr bfp $ \bptr -> do
++ withForeignPtr sfp $ \sptr -> do
++ let bp = bptr `plusPtr` boff
++ sp0 = sptr `plusPtr` soff
++ sEnd = sp0 `plusPtr` slen
++ dLast = dptr `plusPtr` dlen
++ loop !dp !sp !written
++ | dp == dLast = return ()
++ | otherwise = do
++ let chunkSize = min every (sEnd `minusPtr` sp)
++ memcpy dp sp (fromIntegral chunkSize)
++ let dp' = dp `plusPtr` chunkSize
++ memcpy dp' bp (fromIntegral blen)
++ let written' = written + chunkSize + blen
++ assert (written' <= dlen) $
++ loop (dp' `plusPtr` blen) (sp `plusPtr` chunkSize) written'
++ loop dptr sp0 0
++ where dlast = slen + blen * numBreaks
++ every = min slen every'
++ dlen | rmndr > 0 = dlast + blen
++ | otherwise = dlast
++ (numBreaks, rmndr) = slen `divMod` every
++
+ instance ToJSON MimeBundle where
+ toJSON (MimeBundle m) =
+ let mimeBundleToValue (BinaryData bs) =
+- toJSON $ TE.decodeUtf8 . Base64.joinWith "\n" 76 . Base64.encode $ bs
++ toJSON $ TE.decodeUtf8 . joinWith "\n" 76 . Base64.encode $ bs
+ mimeBundleToValue (JsonData v) = v
+ mimeBundleToValue (TextualData t) = toJSON (breakLines t)
+ in toJSON $ M.map mimeBundleToValue m
More information about the arch-commits
mailing list