[arch-commits] Commit in haskell-project-template/trunk (2 files)

Felix Yan felixonmars at archlinux.org
Sat Apr 25 23:59:28 UTC 2020


    Date: Saturday, April 25, 2020 @ 23:59:28
  Author: felixonmars
Revision: 621228

upgpkg: haskell-project-template 0.2.0.1-225: rebuild with base64-bytestring 1.1.0.0

Added:
  haskell-project-template/trunk/base64-bytestring-1.1.patch
Modified:
  haskell-project-template/trunk/PKGBUILD

-----------------------------+
 PKGBUILD                    |   17 +++++--
 base64-bytestring-1.1.patch |   98 ++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 110 insertions(+), 5 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2020-04-25 23:59:25 UTC (rev 621227)
+++ PKGBUILD	2020-04-25 23:59:28 UTC (rev 621228)
@@ -4,7 +4,7 @@
 _hkgname=project-template
 pkgname=haskell-project-template
 pkgver=0.2.0.1
-pkgrel=224
+pkgrel=225
 pkgdesc="Specify Haskell project templates and generate files"
 url="https://github.com/fpco/haskell-ide"
 license=("BSD")
@@ -12,12 +12,19 @@
 depends=('ghc-libs' 'haskell-base64-bytestring' 'haskell-conduit' 'haskell-conduit-extra'
          'haskell-resourcet')
 makedepends=('ghc' 'haskell-hspec' 'haskell-quickcheck')
-source=("https://hackage.haskell.org/packages/archive/${_hkgname}/${pkgver}/${_hkgname}-${pkgver}.tar.gz")
-sha512sums=('bc5824086ba8dfaff4ff64c5115d37ea5e496d7692f1120b11c2a878e522119d362c7d119ccf7b9cc064c58f9ce6382b5e24a69cdac5ac5d683c4d616e2c66ea')
+source=("https://hackage.haskell.org/packages/archive/${_hkgname}/${pkgver}/${_hkgname}-${pkgver}.tar.gz"
+        base64-bytestring-1.1.patch)
+sha512sums=('bc5824086ba8dfaff4ff64c5115d37ea5e496d7692f1120b11c2a878e522119d362c7d119ccf7b9cc064c58f9ce6382b5e24a69cdac5ac5d683c4d616e2c66ea'
+            'c426265cdb54a4c62d4ea743cf381f07f20e0641daea194ab17afbb15ee74db968a030260beb39158594c10131b78b6aaa2c04160e8f50d5d69d166e2d932f02')
 
+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
@@ -35,7 +42,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:59:28 UTC (rev 621228)
@@ -0,0 +1,98 @@
+--- project-template-0.2.0.1/Text/ProjectTemplate.hs.orig	2020-04-26 07:50:54.007400644 +0800
++++ project-template-0.2.0.1/Text/ProjectTemplate.hs	2020-04-26 07:56:46.698254606 +0800
+@@ -1,3 +1,4 @@
++{-# LANGUAGE BangPatterns          #-}
+ {-# LANGUAGE DeriveDataTypeable    #-}
+ {-# LANGUAGE FlexibleContexts      #-}
+ {-# LANGUAGE MultiParamTypeClasses #-}
+@@ -15,6 +16,7 @@
+     , receiveFS
+       -- * Exceptions
+     , ProjectTemplateException (..)
++    , joinWith
+     ) where
+ 
+ import           Control.Exception            (Exception, assert)
+@@ -27,6 +29,7 @@
+ import           Data.ByteString              (ByteString)
+ import qualified Data.ByteString              as S
+ import qualified Data.ByteString.Base64       as B64
++import           Data.ByteString.Internal
+ import qualified Data.ByteString.Lazy         as L
+ import           Data.Conduit                 (ConduitM, await,
+                                                awaitForever, leftover, yield,
+@@ -42,6 +45,8 @@
+ import           Data.Text.Encoding           (encodeUtf8)
+ import           Data.Typeable                (Typeable)
+ import           Data.Void                    (Void)
++import           Foreign.ForeignPtr           (withForeignPtr)
++import           Foreign.Ptr                  (minusPtr, plusPtr)
+ import           System.Directory             (createDirectoryIfMissing)
+ import           System.FilePath              (takeDirectory, (</>))
+ 
+@@ -57,7 +62,7 @@
+             yield "{-# START_FILE BASE64 "
+             yield $ encodeUtf8 $ T.pack fp
+             yield " #-}\n"
+-            yield $ B64.joinWith "\n" 76 $ B64.encode bs
++            yield $ joinWith "\n" 76 $ B64.encode bs
+             yield "\n"
+         Just _ -> do
+             yield "{-# START_FILE "
+@@ -194,3 +199,45 @@
+ 
+         assertion1 = assert $ S.length bs1 < size
+         assertion2 = assert $ S.length bs1' `mod` size == 0
++
++-- | 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
++    | S.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
+--- project-template-0.2.0.1/test/Text/ProjectTemplateSpec.hs.orig	2020-04-26 07:57:51.111744199 +0800
++++ project-template-0.2.0.1/test/Text/ProjectTemplateSpec.hs	2020-04-26 07:58:20.858483053 +0800
+@@ -31,7 +31,7 @@
+     describe "binaries" $ do
+         prop "works with multilines" $ \words' -> do
+             let bs = S.pack words'
+-                encoded = B64.joinWith "\n" 5 $ B64.encode bs
++                encoded = joinWith "\n" 5 $ B64.encode bs
+                 content = "{-# START_FILE BASE64 foo #-}\n" `mappend` encoded
+             m <- execWriterT $ runConduit $ yield content .| unpackTemplate receiveMem id
+             Map.lookup "foo" m `shouldBe` Just (L.fromChunks [bs])



More information about the arch-commits mailing list