Hello community,
here is the log from the commit of package ghc-pem for openSUSE:Factory checked in at 2018-05-30 12:22:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-pem (Old)
and /work/SRC/openSUSE:Factory/.ghc-pem.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-pem"
Wed May 30 12:22:08 2018 rev:4 rq:610353 version:0.2.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-pem/ghc-pem.changes 2017-09-15 22:04:02.853914393 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-pem.new/ghc-pem.changes 2018-05-30 12:26:43.939464777 +0200
@@ -1,0 +2,6 @@
+Mon May 14 17:02:11 UTC 2018 - psimons@suse.com
+
+- Update pem to version 0.2.4.
+ Upstream does not provide a changelog.
+
+-------------------------------------------------------------------
Old:
----
pem-0.2.2.tar.gz
New:
----
pem-0.2.4.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-pem.spec ++++++
--- /var/tmp/diff_new_pack.vhMIzV/_old 2018-05-30 12:26:44.783435927 +0200
+++ /var/tmp/diff_new_pack.vhMIzV/_new 2018-05-30 12:26:44.787435790 +0200
@@ -1,7 +1,7 @@
#
# spec file for package ghc-pem
#
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
%global pkg_name pem
%bcond_with tests
Name: ghc-%{pkg_name}
-Version: 0.2.2
+Version: 0.2.4
Release: 0
Summary: Privacy Enhanced Mail (PEM) format reader and writer
License: BSD-3-Clause
@@ -27,9 +27,9 @@
URL: https://hackage.haskell.org/package/%{pkg_name}
Source0: https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{version}.tar.gz
BuildRequires: ghc-Cabal-devel
-BuildRequires: ghc-base64-bytestring-devel
+BuildRequires: ghc-basement-devel
BuildRequires: ghc-bytestring-devel
-BuildRequires: ghc-mtl-devel
+BuildRequires: ghc-memory-devel
BuildRequires: ghc-rpm-macros
%if %{with tests}
BuildRequires: ghc-HUnit-devel
@@ -72,9 +72,7 @@
%ghc_pkg_recache
%files -f %{name}.files
-%doc LICENSE
-%dir %{_datadir}/%{pkg_name}-%{version}
-%{_datadir}/%{pkg_name}-%{version}/README.md
+%license LICENSE
%files devel -f %{name}-devel.files
++++++ pem-0.2.2.tar.gz -> pem-0.2.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pem-0.2.2/Data/PEM/Parser.hs new/pem-0.2.4/Data/PEM/Parser.hs
--- old/pem-0.2.2/Data/PEM/Parser.hs 2014-04-16 21:59:23.000000000 +0200
+++ new/pem-0.2.4/Data/PEM/Parser.hs 2018-02-27 08:16:47.000000000 +0100
@@ -11,7 +11,7 @@
-- A PEM contains contains from one to many PEM sections.
-- Each section contains an optional key-value pair header
-- and a binary content encoded in base64.
---
+--
module Data.PEM.Parser
( pemParseBS
, pemParseLBS
@@ -22,9 +22,10 @@
import qualified Data.ByteString.Char8 as BC
import qualified Data.ByteString.Lazy as L
import qualified Data.ByteString.Lazy.Char8 as LC
-import qualified Data.ByteString.Base64.Lazy as Base64
import Data.PEM.Types
+import Data.ByteArray.Encoding (Base(Base64), convertFromBase)
+import qualified Data.ByteArray as BA
type Line = L.ByteString
@@ -51,24 +52,24 @@
getPemHeaderLoop (r:rs) = -- FIXME doesn't properly parse headers yet
Right ([], r:rs)
+ getPemContent :: String -> [(String,ByteString)] -> [BC.ByteString] -> [L.ByteString] -> Either (Maybe String) (PEM, [L.ByteString])
getPemContent name hdrs contentLines lbs =
case lbs of
[] -> Left $ Just "invalid PEM: no end marker found"
(l:ls) -> case endMarker `prefixEat` l of
Nothing ->
- let content = Base64.decodeLenient l
- in getPemContent name hdrs (content : contentLines) ls
+ case convertFromBase Base64 $ L.toStrict l of
+ Left err -> Left $ Just ("invalid PEM: decoding failed: " ++ err)
+ Right content -> getPemContent name hdrs (content : contentLines) ls
Just n -> getPemName (finalizePem name hdrs contentLines) n ls
finalizePem name hdrs contentLines nameEnd lbs
| nameEnd /= name = Left $ Just "invalid PEM: end name doesn't match start name"
| otherwise =
let pem = PEM { pemName = name
, pemHeader = hdrs
- , pemContent = toSBS $ L.concat $ reverse contentLines }
+ , pemContent = BA.concat $ reverse contentLines }
in Right (pem, lbs)
- toSBS = BC.concat . L.toChunks
-
prefixEat prefix x =
let (x1, x2) = L.splitAt (L.length prefix) x
in if x1 == prefix then Just x2 else Nothing
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pem-0.2.2/Data/PEM/Types.hs new/pem-0.2.4/Data/PEM/Types.hs
--- old/pem-0.2.2/Data/PEM/Types.hs 2014-04-16 21:59:23.000000000 +0200
+++ new/pem-0.2.4/Data/PEM/Types.hs 2018-03-02 14:07:23.000000000 +0100
@@ -8,13 +8,21 @@
module Data.PEM.Types where
import Data.ByteString (ByteString)
+import Basement.NormalForm
-- | Represent one PEM section
--
-- for now headers are not serialized at all.
-- this is just available here as a placeholder for a later implementation.
data PEM = PEM
- { pemName :: String -- ^ the name of the section, found after the dash BEGIN tag.
- , pemHeader :: [(String, ByteString)] -- ^ optionals key value pair header
- , pemContent :: ByteString -- ^ binary content of the section
- } deriving (Show,Eq)
+ { pemName :: String -- ^ the name of the section, found after the dash BEGIN tag.
+ , pemHeader :: [(String, ByteString)] -- ^ optionals key value pair header
+ , pemContent :: ByteString -- ^ binary content of the section
+ } deriving (Show,Eq)
+
+instance NormalForm PEM where
+ toNormalForm pem =
+ toNormalForm (pemName pem) `seq` nfLbs (pemHeader pem) `seq` pemContent pem `seq` ()
+ where
+ nfLbs [] = ()
+ nfLbs ((s,bs):l) = toNormalForm s `seq` bs `seq` nfLbs l
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pem-0.2.2/Data/PEM/Writer.hs new/pem-0.2.4/Data/PEM/Writer.hs
--- old/pem-0.2.2/Data/PEM/Writer.hs 2014-04-16 21:59:23.000000000 +0200
+++ new/pem-0.2.4/Data/PEM/Writer.hs 2018-02-27 08:16:47.000000000 +0100
@@ -16,7 +16,7 @@
import qualified Data.ByteString as B
import qualified Data.ByteString.Char8 as BC
import qualified Data.ByteString.Lazy as L
-import qualified Data.ByteString.Base64 as Base64
+import Data.ByteArray.Encoding (Base(Base64), convertToBase)
-- | write a PEM structure to a builder
pemWrite :: PEM -> L.ByteString
@@ -33,7 +33,7 @@
toHeader (k,v) = [ BC.pack k, ":", v, "\n" ]
-- expect only ASCII. need to find a type to represent it.
sectionName = BC.pack $ pemName pem
- encodeLine l = Base64.encode l `B.append` "\n"
+ encodeLine l = convertToBase Base64 l `B.append` "\n"
splitChunks b
| B.length b > 48 = let (x,y) = B.splitAt 48 b in x : splitChunks y
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pem-0.2.2/Data/PEM.hs new/pem-0.2.4/Data/PEM.hs
--- old/pem-0.2.2/Data/PEM.hs 2014-04-16 21:59:23.000000000 +0200
+++ new/pem-0.2.4/Data/PEM.hs 2018-02-27 08:16:47.000000000 +0100
@@ -8,10 +8,10 @@
-- Read and write PEM files
--
module Data.PEM
- ( module Data.PEM.Types
+ ( module Data.PEM.Types
, module Data.PEM.Writer
, module Data.PEM.Parser
- ) where
+ ) where
import Data.PEM.Types
import Data.PEM.Writer
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pem-0.2.2/LICENSE new/pem-0.2.4/LICENSE
--- old/pem-0.2.2/LICENSE 2014-04-16 21:59:23.000000000 +0200
+++ new/pem-0.2.4/LICENSE 2018-02-27 08:06:02.000000000 +0100
@@ -1,4 +1,4 @@
-Copyright (c) 2010-2012 Vincent Hanquez